Skip to content

Commit 6cdee13

Browse files
authored
Merge pull request #65 from CesiumGS/upgrade-metadata-scripts
Update samples for metadata changes
2 parents 4694a41 + f1ce8bb commit 6cdee13

File tree

8 files changed

+156
-161
lines changed

8 files changed

+156
-161
lines changed

Assets/CesiumForUnitySamples/Scenes/01_CesiumWorld.unity

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ GameObject:
133133
m_Component:
134134
- component: {fileID: 126742915}
135135
- component: {fileID: 126742916}
136-
- component: {fileID: 126742917}
137136
m_Layer: 0
138137
m_Name: Cesium OSM Buildings
139138
m_TagString: Untagged
@@ -185,6 +184,7 @@ MonoBehaviour:
185184
_enforceCulledScreenSpaceError: 0
186185
_culledScreenSpaceError: 64
187186
_opaqueMaterial: {fileID: 0}
187+
_generateSmoothNormals: 0
188188
_pointCloudShading:
189189
_attenuation: 0
190190
_geometricErrorScale: 1
@@ -195,18 +195,6 @@ MonoBehaviour:
195195
_updateInEditor: 1
196196
_logSelectionStats: 0
197197
_createPhysicsMeshes: 1
198-
--- !u!114 &126742917
199-
MonoBehaviour:
200-
m_ObjectHideFlags: 0
201-
m_CorrespondingSourceObject: {fileID: 0}
202-
m_PrefabInstance: {fileID: 0}
203-
m_PrefabAsset: {fileID: 0}
204-
m_GameObject: {fileID: 126742914}
205-
m_Enabled: 1
206-
m_EditorHideFlags: 0
207-
m_Script: {fileID: 11500000, guid: 7b1942b8938da484cab4fe52e17a3cc7, type: 3}
208-
m_Name:
209-
m_EditorClassIdentifier:
210198
--- !u!1 &161818292
211199
GameObject:
212200
m_ObjectHideFlags: 0
@@ -273,6 +261,7 @@ MonoBehaviour:
273261
_enforceCulledScreenSpaceError: 0
274262
_culledScreenSpaceError: 64
275263
_opaqueMaterial: {fileID: 0}
264+
_generateSmoothNormals: 0
276265
_pointCloudShading:
277266
_attenuation: 0
278267
_geometricErrorScale: 1
@@ -449,6 +438,7 @@ MonoBehaviour:
449438
_ecefX: -2702161.656027028
450439
_ecefY: -4261531.553813732
451440
_ecefZ: 3888494.7188496506
441+
_scale: 1
452442
--- !u!4 &819515654
453443
Transform:
454444
m_ObjectHideFlags: 0

Assets/CesiumForUnitySamples/Scenes/05_CesiumMetadata.unity

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,6 @@ GameObject:
283283
m_Component:
284284
- component: {fileID: 126742915}
285285
- component: {fileID: 126742916}
286-
- component: {fileID: 126742917}
287286
m_Layer: 0
288287
m_Name: NYC Buildings
289288
m_TagString: Untagged
@@ -335,6 +334,7 @@ MonoBehaviour:
335334
_enforceCulledScreenSpaceError: 1
336335
_culledScreenSpaceError: 64
337336
_opaqueMaterial: {fileID: 0}
337+
_generateSmoothNormals: 0
338338
_pointCloudShading:
339339
_attenuation: 0
340340
_geometricErrorScale: 1
@@ -345,18 +345,6 @@ MonoBehaviour:
345345
_updateInEditor: 1
346346
_logSelectionStats: 0
347347
_createPhysicsMeshes: 1
348-
--- !u!114 &126742917
349-
MonoBehaviour:
350-
m_ObjectHideFlags: 0
351-
m_CorrespondingSourceObject: {fileID: 0}
352-
m_PrefabInstance: {fileID: 0}
353-
m_PrefabAsset: {fileID: 0}
354-
m_GameObject: {fileID: 126742914}
355-
m_Enabled: 1
356-
m_EditorHideFlags: 0
357-
m_Script: {fileID: 11500000, guid: 7b1942b8938da484cab4fe52e17a3cc7, type: 3}
358-
m_Name:
359-
m_EditorClassIdentifier:
360348
--- !u!1 &161818292
361349
GameObject:
362350
m_ObjectHideFlags: 0
@@ -423,6 +411,7 @@ MonoBehaviour:
423411
_enforceCulledScreenSpaceError: 1
424412
_culledScreenSpaceError: 64
425413
_opaqueMaterial: {fileID: 0}
414+
_generateSmoothNormals: 0
426415
_pointCloudShading:
427416
_attenuation: 0
428417
_geometricErrorScale: 1
@@ -651,6 +640,7 @@ MonoBehaviour:
651640
_ecefX: 1334024.061125777
652641
_ecefY: -4654541.47408277
653642
_ecefZ: 4138350.2623599432
643+
_scale: 1
654644
--- !u!4 &819515654
655645
Transform:
656646
m_ObjectHideFlags: 0

Assets/CesiumForUnitySamples/Scenes/VR02_CesiumMetadata.unity

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,6 @@ GameObject:
294294
m_Component:
295295
- component: {fileID: 217227925}
296296
- component: {fileID: 217227927}
297-
- component: {fileID: 217227926}
298297
- component: {fileID: 217227928}
299298
m_Layer: 0
300299
m_Name: Cesium OSM Buildings
@@ -318,18 +317,6 @@ Transform:
318317
m_Father: {fileID: 304459247}
319318
m_RootOrder: 1
320319
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
321-
--- !u!114 &217227926
322-
MonoBehaviour:
323-
m_ObjectHideFlags: 0
324-
m_CorrespondingSourceObject: {fileID: 0}
325-
m_PrefabInstance: {fileID: 0}
326-
m_PrefabAsset: {fileID: 0}
327-
m_GameObject: {fileID: 217227924}
328-
m_Enabled: 1
329-
m_EditorHideFlags: 0
330-
m_Script: {fileID: 11500000, guid: 7b1942b8938da484cab4fe52e17a3cc7, type: 3}
331-
m_Name:
332-
m_EditorClassIdentifier:
333320
--- !u!114 &217227927
334321
MonoBehaviour:
335322
m_ObjectHideFlags: 0

Assets/CesiumForUnitySamples/Scripts/CesiumSamplesMetadataPicking.cs

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using CesiumForUnity;
22
using UnityEngine;
33
using UnityEngine.UI;
4+
using System;
5+
using System.Collections.Generic;
46

57
#if ENABLE_INPUT_SYSTEM
68
using UnityEngine.InputSystem;
@@ -15,6 +17,10 @@ public class CesiumSamplesMetadataPicking : MonoBehaviour
1517
// The text to display the metadata properties.
1618
public Text metadataText;
1719

20+
// Cached Dictionary of metadata values. This prevents reallocation every
21+
// time metadata is sampled from the tileset.
22+
private Dictionary<String, CesiumMetadataValue> _metadataValues;
23+
1824
void Start()
1925
{
2026
// Fix the cursor to the center of the screen and hide it.
@@ -25,56 +31,64 @@ void Start()
2531
{
2632
metadataPanel.SetActive(false);
2733
}
34+
35+
this._metadataValues = new Dictionary<String, CesiumMetadataValue>();
2836
}
2937

3038
void Update()
3139
{
3240
#if ENABLE_INPUT_SYSTEM
33-
bool getMetadata = false;
41+
bool receivedInput = false;
42+
3443
if (Mouse.current != null)
3544
{
36-
getMetadata = Mouse.current.leftButton.isPressed;
45+
receivedInput = Mouse.current.leftButton.isPressed;
3746
}
38-
else if(Gamepad.current != null)
47+
else if (Gamepad.current != null)
3948
{
40-
getMetadata = Gamepad.current.rightShoulder.isPressed;
49+
receivedInput = Gamepad.current.rightShoulder.isPressed;
4150
}
42-
#else
43-
bool getMetadata = Input.GetMouseButtonDown(0);
44-
#endif
51+
#else
52+
bool receivedInput = Input.GetMouseButtonDown(0);
53+
#endif
4554

46-
if (getMetadata && metadataText != null)
55+
if (receivedInput && metadataText != null)
4756
{
48-
metadataText.text = "";
57+
metadataText.text = String.Empty;
4958

5059
RaycastHit hit;
5160
if (Physics.Raycast(
52-
Camera.main.transform.position,
53-
Camera.main.transform.TransformDirection(Vector3.forward),
54-
out hit,
55-
Mathf.Infinity))
61+
Camera.main.transform.position,
62+
Camera.main.transform.TransformDirection(Vector3.forward),
63+
out hit,
64+
Mathf.Infinity))
5665
{
57-
CesiumMetadata metadata = hit.transform.GetComponentInParent<CesiumMetadata>();
58-
if (metadata != null)
66+
CesiumPrimitiveFeatures features = hit.transform.GetComponent<CesiumPrimitiveFeatures>();
67+
CesiumModelMetadata metadata = hit.transform.GetComponentInParent<CesiumModelMetadata>();
68+
69+
if (features != null && features.featureIdSets.Length > 0)
5970
{
60-
CesiumFeature[] features = metadata.GetFeatures(hit.transform, hit.triangleIndex);
61-
// List out each metadata property in the UI.
62-
foreach (var feature in features)
71+
CesiumFeatureIdSet featureIdSet = features.featureIdSets[0];
72+
Int64 propertyTableIndex = featureIdSet.propertyTableIndex;
73+
if (metadata != null && propertyTableIndex >= 0 && propertyTableIndex < metadata.propertyTables.Length)
74+
{
75+
CesiumPropertyTable propertyTable = metadata.propertyTables[propertyTableIndex];
76+
Int64 featureID = featureIdSet.GetFeatureIdFromRaycastHit(hit);
77+
propertyTable.GetMetadataValuesForFeature(this._metadataValues, featureID);
78+
}
79+
80+
foreach (var valuePair in this._metadataValues)
6381
{
64-
foreach (var propertyName in feature.properties)
82+
string valueAsString = valuePair.Value.GetString();
83+
if (!String.IsNullOrEmpty(valueAsString) && valueAsString != "null")
6584
{
66-
string propertyValue = feature.GetString(propertyName, "null");
67-
if (propertyValue != "null" && propertyValue != "")
68-
{
69-
metadataText.text += "<b>" + propertyName + "</b>" + ": "
70-
+ propertyValue + "\n";
71-
}
85+
metadataText.text += "<b>" + valuePair.Key + "</b>" + ": " + valueAsString + "\n";
7286
}
7387
}
7488
}
7589
}
7690

77-
if(metadataPanel != null)
91+
if (metadataPanel != null)
7892
{
7993
metadataPanel.SetActive(metadataText.text.Length > 0);
8094
}

0 commit comments

Comments
 (0)