Loading Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs +25 −29 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ namespace ETSI.ARF.WorldStorage.UI Vector3 localCRS_rot; byte[] trackablePayload = new byte[1] { 0 }; [SerializeField] Dictionary<string, List<string>> keyValueTags = new Dictionary<string, List<string>>(); string key1 = ""; string value1 = ""; // UI stuffs private Vector2 scrollPos; Loading Loading @@ -120,14 +122,14 @@ namespace ETSI.ARF.WorldStorage.UI #endif EditorGUILayout.Space(); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Read Parameters")) { UUID = WorldStorageWindow.GetUUIDFromString(customName); if (UUID == null) UUID = customName; // try this GetTrackableParams(); } GUI.backgroundColor = ori; //GUI.backgroundColor = WorldStorageWindow.arfColors[1]; //if (GUILayout.Button("Read Parameters")) //{ // UUID = WorldStorageWindow.GetUUIDFromString(customName); // if (UUID == null) UUID = customName; // try this // GetTrackableParams(); //} //GUI.backgroundColor = ori; type = (Trackable.TrackableTypeEnum)EditorGUILayout.EnumPopup("Trackable Type:", type); unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); Loading @@ -153,25 +155,10 @@ namespace ETSI.ARF.WorldStorage.UI EditorGUILayout.Space(); groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled); //EditorGUILayout.IntField("Number of KeyValues", 0); //EditorGUILayout.Space(); //EditorGUILayout.TextField("Key", ""); //EditorGUILayout.TextField("Value", ""); if (GUILayout.Button("Generate Dummy Key Values")) { // dummy keyValueTags.Clear(); keyValueTags.Add("Location", new List<string> { "Room1" }); } // Test //keyValueTags.Add("1", "a"); //ScriptableObject target = this; //SerializedObject so = new SerializedObject(target); //SerializedProperty stringsProperty = so.FindProperty("trackables"); //EditorGUILayout.PropertyField(stringsProperty, true); // True means show children //so.ApplyModifiedProperties(); // Remember to apply modified properties key1 = EditorGUILayout.TextField("Key 1", key1); value1 = EditorGUILayout.TextField("Value 1", value1); EditorGUILayout.EndToggleGroup(); // GUILayout.EndVertical(); // ########################################################### Loading Loading @@ -252,7 +239,12 @@ namespace ETSI.ARF.WorldStorage.UI localCRS_pos = Vector3.zero; localCRS_rot = Vector3.zero; } keyValueTags = obj.KeyvalueTags; // Read a key value (demo) var first = WorldStorageWindow.GetFirstKeyValueTags(obj.KeyvalueTags); key1 = first.Item1; value1 = first.Item2; this.Repaint(); // TODO } Loading Loading @@ -281,6 +273,10 @@ namespace ETSI.ARF.WorldStorage.UI localCRS.m30, localCRS.m31, localCRS.m32, localCRS.m33, }; // Create a key value (one from demo) keyValueTags.Clear(); keyValueTags.Add(key1, new List<string> { value1 }); System.Guid _uuid = System.Guid.Parse(UUID); System.Guid _creator = System.Guid.Parse(worldStorageUser.UUID); Trackable t = new Trackable(_uuid, customName, _creator, type, trackableEncodingInformation, trackablePayload, _localCRS, unit, _trackableSize, keyValueTags); Loading Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs +24 −21 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ namespace ETSI.ARF.WorldStorage.UI Vector3 localCRS_pos; Vector3 localCRS_rot; [SerializeField] Dictionary<string, List<string>> keyValueTags = new Dictionary<string, List<string>>(); string key1 = ""; string value1 = ""; // UI stuffs private Vector2 scrollPos; Loading Loading @@ -117,14 +119,14 @@ namespace ETSI.ARF.WorldStorage.UI #endif EditorGUILayout.Space(); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Read Parameters")) { UUID = WorldStorageWindow.GetUUIDFromString(customName); if (UUID == null) UUID = customName; // try this GetWorldAnchorParams(); } GUI.backgroundColor = ori; //GUI.backgroundColor = WorldStorageWindow.arfColors[1]; //if (GUILayout.Button("Read Parameters")) //{ // UUID = WorldStorageWindow.GetUUIDFromString(customName); // if (UUID == null) UUID = customName; // try this // GetWorldAnchorParams(); //} //GUI.backgroundColor = ori; unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); Loading @@ -138,16 +140,8 @@ namespace ETSI.ARF.WorldStorage.UI EditorGUILayout.Space(); groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled); //EditorGUILayout.IntField("Number of KeyValues", 0); //EditorGUILayout.Space(); //EditorGUILayout.TextField("Key", ""); //EditorGUILayout.TextField("Value", ""); if (GUILayout.Button("Generate Dummy Key Values")) { // dummy keyValueTags.Clear(); keyValueTags.Add("Location", new List<string> { "Room1" }); } key1 = EditorGUILayout.TextField("Key 1", key1); value1 = EditorGUILayout.TextField("Value 1", value1); EditorGUILayout.EndToggleGroup(); // GUILayout.EndVertical(); Loading Loading @@ -228,7 +222,12 @@ namespace ETSI.ARF.WorldStorage.UI localCRS_pos = Vector3.zero; localCRS_rot = Vector3.zero; } keyValueTags = obj.KeyvalueTags; // Read a key value (demo) var first = WorldStorageWindow.GetFirstKeyValueTags(obj.KeyvalueTags); key1 = first.Item1; value1 = first.Item2; this.Repaint(); // TODO } Loading @@ -254,6 +253,10 @@ namespace ETSI.ARF.WorldStorage.UI localCRS.m30, localCRS.m31, localCRS.m32, localCRS.m33, }; // Create a key value (one from demo) keyValueTags.Clear(); keyValueTags.Add(key1, new List<string> { value1 }); System.Guid _uuid = System.Guid.Parse(UUID); System.Guid _creator = System.Guid.Parse(worldStorageUser.UUID); WorldAnchor t = new WorldAnchor(_uuid, customName, _creator, _localCRS, unit, _worldAnchorSize, keyValueTags); Loading Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs +60 −23 Original line number Diff line number Diff line Loading @@ -120,37 +120,50 @@ namespace ETSI.ARF.WorldStorage.UI EditorGUILayout.Space(); //GUILayout.BeginHorizontal(); customName = EditorGUILayout.TextField("Name of Link", customName); //customName = EditorGUILayout.TextField("Name of Link", customName); #if isDEBUG GUILayout.Label("UUID: " + UUID, EditorStyles.miniLabel); // readonly GUILayout.Label("Creator UID: " + creatorUUID, EditorStyles.miniLabel); // readonly #endif EditorGUILayout.Space(); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Read Parameters")) { UUID = WorldStorageWindow.GetUUIDFromString(customName); if (UUID == null) UUID = customName; // try this GetWorldLinkParams(); } GUI.backgroundColor = ori; unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); EditorGUILayout.Space(); showListFrom = EditorGUILayout.Foldout(showListFrom, "Parent Object (From)"); showListFrom = EditorGUILayout.Foldout(showListFrom, "From (parent object)"); if (showListFrom) { EditorGUILayout.BeginHorizontal(); fromUUID = EditorGUILayout.TextField("UUID", fromUUID); string lastFromUUID = fromUUID; fromUUID = EditorGUILayout.TextField("Enter a valid UUID:", fromUUID); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Find", EditorStyles.miniButtonLeft, miniButtonWidth)) if (GUILayout.Button("Request", EditorStyles.miniButtonLeft, miniButtonWidth) || lastFromUUID != fromUUID) { // TODO Request the object from the server fromName = "(not implemented yet)"; bool found = false; try { Trackable result = TrackableRequest.GetTrackable(worldStorageServer, fromUUID); fromName = result.Name; fromType = ObjectType.Trackable; found = true; } catch { /* Object was not found */ } if (!found) try { WorldAnchor result = WorldAnchorRequest.GetWorldAnchor(worldStorageServer, fromUUID); fromName = result.Name; fromType = ObjectType.WorldAnchor; found = true; } catch { /* Object was not found */ } if (!found) { fromName = ""; fromType = ObjectType.NotIdentified; } } EditorGUILayout.EndHorizontal(); GUI.backgroundColor = ori; fromName = EditorGUILayout.TextField("Name", fromName); Loading @@ -158,18 +171,41 @@ namespace ETSI.ARF.WorldStorage.UI } EditorGUILayout.Space(); showListTo = EditorGUILayout.Foldout(showListTo, "Child Object (To)"); showListTo = EditorGUILayout.Foldout(showListTo, "To (child object)"); if (showListTo) { EditorGUILayout.BeginHorizontal(); toUUID = EditorGUILayout.TextField("UUID", toUUID); string lastToUUID = fromUUID; toUUID = EditorGUILayout.TextField("Eenter a valid UUID:", toUUID); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Find", EditorStyles.miniButtonLeft, miniButtonWidth)) if (GUILayout.Button("Request", EditorStyles.miniButtonLeft, miniButtonWidth) || lastToUUID != toUUID) { bool found = false; try { Trackable result = TrackableRequest.GetTrackable(worldStorageServer, toUUID); toName = result.Name; toType = ObjectType.Trackable; found = true; } catch { /* Object was not found */ } if (!found) try { // TODO Request the object from the server toName = "(not implemented yet)"; WorldAnchor result = WorldAnchorRequest.GetWorldAnchor(worldStorageServer, toUUID); toName = result.Name; toType = ObjectType.WorldAnchor; found = true; } catch { /* Object was not found */ } if (!found) { toName = ""; toType = ObjectType.NotIdentified; } } EditorGUILayout.EndHorizontal(); GUI.backgroundColor = ori; toName = EditorGUILayout.TextField("Name", toName); Loading @@ -177,6 +213,7 @@ namespace ETSI.ARF.WorldStorage.UI } EditorGUILayout.Space(10); unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); GUILayout.Label("Local CRS:"); localCRS_pos = EditorGUILayout.Vector3Field("Position:", localCRS_pos); localCRS_rot = EditorGUILayout.Vector3Field("Rotation:", localCRS_rot); Loading Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs +61 −13 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ namespace ETSI.ARF.WorldStorage.UI private bool showListA = true; private bool showListL = true; private string filterByKeyValueTag = ""; static public string winName = "ARF Authoring Editor"; static public Color[] arfColors = new Color[] { Loading Loading @@ -92,7 +94,7 @@ namespace ETSI.ARF.WorldStorage.UI { // Title GUILayout.Label("Augmented Reality Framework", EditorStyles.boldLabel); GUILayout.Label("Copyright(c) 2022, ETSI (BSD 3-Clause License)"); GUILayout.Label("Copyright (C) 2022, ETSI (BSD 3-Clause License)"); } void OnGUI() Loading Loading @@ -195,6 +197,17 @@ namespace ETSI.ARF.WorldStorage.UI so.ApplyModifiedProperties(); // Remember to apply modified properties #endregion EditorGUILayout.Space(10); GUILayout.Label("World Storage Elements", EditorStyles.whiteLargeLabel); // ########################################################### // Handle Key Values // ########################################################### #region Filter EditorGUILayout.Space(10); filterByKeyValueTag = EditorGUILayout.TextField("Filter Value (Key = Group):", filterByKeyValueTag); #endregion // ########################################################### // Handle trackables // ########################################################### Loading Loading @@ -248,16 +261,18 @@ namespace ETSI.ARF.WorldStorage.UI { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); //EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none); string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); if (UUID == null) UUID = trackables[i]; // try this if (GUILayout.Button("-", EditorStyles.miniButtonLeft, miniButtonWidth)) { if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) { TrackableRequest.DeleteTrackable(worldStorageServer, UUID); WorldStorageWindowSingleton.GetTrackables(); WorldStorageWindowSingleton.Repaint(); } } if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) { Debug.Log("Open Trackable Window"); Loading Loading @@ -321,16 +336,18 @@ namespace ETSI.ARF.WorldStorage.UI { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); //EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none); string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); if (UUID == null) UUID = anchors[i]; // try this if (GUILayout.Button("-", EditorStyles.miniButtonLeft, miniButtonWidth)) { if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) { WorldAnchorRequest.DeleteWorldAnchor(worldStorageServer, UUID); WorldStorageWindowSingleton.GetWorldAnchors(); WorldStorageWindowSingleton.Repaint(); } } if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) { Debug.Log("Open Anchor Window"); Loading Loading @@ -394,16 +411,19 @@ namespace ETSI.ARF.WorldStorage.UI { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); //EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none); string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); if (UUID == null) UUID = links[i]; // try this if (GUILayout.Button("-", EditorStyles.miniButtonLeft, miniButtonWidth)) { if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) { WorldLinkRequest.DeleteWorldLink(worldStorageServer, UUID); WorldStorageWindowSingleton.GetWorldLinks(); WorldStorageWindowSingleton.Repaint(); } } if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) { Debug.Log("Open Link Window"); Loading Loading @@ -444,6 +464,24 @@ namespace ETSI.ARF.WorldStorage.UI } } static public (string, string) GetFirstKeyValueTags(Dictionary<string, List<string>> dict) { if (dict.Count >= 1) { // Get the first value in account (demo) foreach (var item in dict) { string key1 = item.Key; if (item.Value.Count >= 1) { string value1 = item.Value[0]; return (key1, value1); } } } return ("", ""); } public void GetTrackables() { // Get all objects Loading @@ -452,6 +490,11 @@ namespace ETSI.ARF.WorldStorage.UI trackables.Clear(); foreach (var item in res) { if (filterByKeyValueTag != "") { var first = GetFirstKeyValueTags(item.KeyvalueTags); if (first.Item1.ToLower() != "group" || first.Item2 != filterByKeyValueTag) continue; } if (!string.IsNullOrEmpty(item.Name)) trackables.Add(item.Name + " [" + item.UUID.ToString() + "]"); else trackables.Add(item.UUID.ToString()); } Loading @@ -465,6 +508,11 @@ namespace ETSI.ARF.WorldStorage.UI anchors.Clear(); foreach (var item in res) { if (filterByKeyValueTag != "") { var first = GetFirstKeyValueTags(item.KeyvalueTags); if (first.Item1.ToLower() != "group" || first.Item2 != filterByKeyValueTag) continue; } if (!string.IsNullOrEmpty(item.Name)) anchors.Add(item.Name + " [" + item.UUID.ToString() + "]"); else anchors.Add(item.UUID.ToString()); } Loading UserSettings/Layouts/default-2021.dwlt +86 −86 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs +25 −29 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ namespace ETSI.ARF.WorldStorage.UI Vector3 localCRS_rot; byte[] trackablePayload = new byte[1] { 0 }; [SerializeField] Dictionary<string, List<string>> keyValueTags = new Dictionary<string, List<string>>(); string key1 = ""; string value1 = ""; // UI stuffs private Vector2 scrollPos; Loading Loading @@ -120,14 +122,14 @@ namespace ETSI.ARF.WorldStorage.UI #endif EditorGUILayout.Space(); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Read Parameters")) { UUID = WorldStorageWindow.GetUUIDFromString(customName); if (UUID == null) UUID = customName; // try this GetTrackableParams(); } GUI.backgroundColor = ori; //GUI.backgroundColor = WorldStorageWindow.arfColors[1]; //if (GUILayout.Button("Read Parameters")) //{ // UUID = WorldStorageWindow.GetUUIDFromString(customName); // if (UUID == null) UUID = customName; // try this // GetTrackableParams(); //} //GUI.backgroundColor = ori; type = (Trackable.TrackableTypeEnum)EditorGUILayout.EnumPopup("Trackable Type:", type); unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); Loading @@ -153,25 +155,10 @@ namespace ETSI.ARF.WorldStorage.UI EditorGUILayout.Space(); groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled); //EditorGUILayout.IntField("Number of KeyValues", 0); //EditorGUILayout.Space(); //EditorGUILayout.TextField("Key", ""); //EditorGUILayout.TextField("Value", ""); if (GUILayout.Button("Generate Dummy Key Values")) { // dummy keyValueTags.Clear(); keyValueTags.Add("Location", new List<string> { "Room1" }); } // Test //keyValueTags.Add("1", "a"); //ScriptableObject target = this; //SerializedObject so = new SerializedObject(target); //SerializedProperty stringsProperty = so.FindProperty("trackables"); //EditorGUILayout.PropertyField(stringsProperty, true); // True means show children //so.ApplyModifiedProperties(); // Remember to apply modified properties key1 = EditorGUILayout.TextField("Key 1", key1); value1 = EditorGUILayout.TextField("Value 1", value1); EditorGUILayout.EndToggleGroup(); // GUILayout.EndVertical(); // ########################################################### Loading Loading @@ -252,7 +239,12 @@ namespace ETSI.ARF.WorldStorage.UI localCRS_pos = Vector3.zero; localCRS_rot = Vector3.zero; } keyValueTags = obj.KeyvalueTags; // Read a key value (demo) var first = WorldStorageWindow.GetFirstKeyValueTags(obj.KeyvalueTags); key1 = first.Item1; value1 = first.Item2; this.Repaint(); // TODO } Loading Loading @@ -281,6 +273,10 @@ namespace ETSI.ARF.WorldStorage.UI localCRS.m30, localCRS.m31, localCRS.m32, localCRS.m33, }; // Create a key value (one from demo) keyValueTags.Clear(); keyValueTags.Add(key1, new List<string> { value1 }); System.Guid _uuid = System.Guid.Parse(UUID); System.Guid _creator = System.Guid.Parse(worldStorageUser.UUID); Trackable t = new Trackable(_uuid, customName, _creator, type, trackableEncodingInformation, trackablePayload, _localCRS, unit, _trackableSize, keyValueTags); Loading
Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs +24 −21 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ namespace ETSI.ARF.WorldStorage.UI Vector3 localCRS_pos; Vector3 localCRS_rot; [SerializeField] Dictionary<string, List<string>> keyValueTags = new Dictionary<string, List<string>>(); string key1 = ""; string value1 = ""; // UI stuffs private Vector2 scrollPos; Loading Loading @@ -117,14 +119,14 @@ namespace ETSI.ARF.WorldStorage.UI #endif EditorGUILayout.Space(); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Read Parameters")) { UUID = WorldStorageWindow.GetUUIDFromString(customName); if (UUID == null) UUID = customName; // try this GetWorldAnchorParams(); } GUI.backgroundColor = ori; //GUI.backgroundColor = WorldStorageWindow.arfColors[1]; //if (GUILayout.Button("Read Parameters")) //{ // UUID = WorldStorageWindow.GetUUIDFromString(customName); // if (UUID == null) UUID = customName; // try this // GetWorldAnchorParams(); //} //GUI.backgroundColor = ori; unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); Loading @@ -138,16 +140,8 @@ namespace ETSI.ARF.WorldStorage.UI EditorGUILayout.Space(); groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled); //EditorGUILayout.IntField("Number of KeyValues", 0); //EditorGUILayout.Space(); //EditorGUILayout.TextField("Key", ""); //EditorGUILayout.TextField("Value", ""); if (GUILayout.Button("Generate Dummy Key Values")) { // dummy keyValueTags.Clear(); keyValueTags.Add("Location", new List<string> { "Room1" }); } key1 = EditorGUILayout.TextField("Key 1", key1); value1 = EditorGUILayout.TextField("Value 1", value1); EditorGUILayout.EndToggleGroup(); // GUILayout.EndVertical(); Loading Loading @@ -228,7 +222,12 @@ namespace ETSI.ARF.WorldStorage.UI localCRS_pos = Vector3.zero; localCRS_rot = Vector3.zero; } keyValueTags = obj.KeyvalueTags; // Read a key value (demo) var first = WorldStorageWindow.GetFirstKeyValueTags(obj.KeyvalueTags); key1 = first.Item1; value1 = first.Item2; this.Repaint(); // TODO } Loading @@ -254,6 +253,10 @@ namespace ETSI.ARF.WorldStorage.UI localCRS.m30, localCRS.m31, localCRS.m32, localCRS.m33, }; // Create a key value (one from demo) keyValueTags.Clear(); keyValueTags.Add(key1, new List<string> { value1 }); System.Guid _uuid = System.Guid.Parse(UUID); System.Guid _creator = System.Guid.Parse(worldStorageUser.UUID); WorldAnchor t = new WorldAnchor(_uuid, customName, _creator, _localCRS, unit, _worldAnchorSize, keyValueTags); Loading
Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs +60 −23 Original line number Diff line number Diff line Loading @@ -120,37 +120,50 @@ namespace ETSI.ARF.WorldStorage.UI EditorGUILayout.Space(); //GUILayout.BeginHorizontal(); customName = EditorGUILayout.TextField("Name of Link", customName); //customName = EditorGUILayout.TextField("Name of Link", customName); #if isDEBUG GUILayout.Label("UUID: " + UUID, EditorStyles.miniLabel); // readonly GUILayout.Label("Creator UID: " + creatorUUID, EditorStyles.miniLabel); // readonly #endif EditorGUILayout.Space(); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Read Parameters")) { UUID = WorldStorageWindow.GetUUIDFromString(customName); if (UUID == null) UUID = customName; // try this GetWorldLinkParams(); } GUI.backgroundColor = ori; unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); EditorGUILayout.Space(); showListFrom = EditorGUILayout.Foldout(showListFrom, "Parent Object (From)"); showListFrom = EditorGUILayout.Foldout(showListFrom, "From (parent object)"); if (showListFrom) { EditorGUILayout.BeginHorizontal(); fromUUID = EditorGUILayout.TextField("UUID", fromUUID); string lastFromUUID = fromUUID; fromUUID = EditorGUILayout.TextField("Enter a valid UUID:", fromUUID); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Find", EditorStyles.miniButtonLeft, miniButtonWidth)) if (GUILayout.Button("Request", EditorStyles.miniButtonLeft, miniButtonWidth) || lastFromUUID != fromUUID) { // TODO Request the object from the server fromName = "(not implemented yet)"; bool found = false; try { Trackable result = TrackableRequest.GetTrackable(worldStorageServer, fromUUID); fromName = result.Name; fromType = ObjectType.Trackable; found = true; } catch { /* Object was not found */ } if (!found) try { WorldAnchor result = WorldAnchorRequest.GetWorldAnchor(worldStorageServer, fromUUID); fromName = result.Name; fromType = ObjectType.WorldAnchor; found = true; } catch { /* Object was not found */ } if (!found) { fromName = ""; fromType = ObjectType.NotIdentified; } } EditorGUILayout.EndHorizontal(); GUI.backgroundColor = ori; fromName = EditorGUILayout.TextField("Name", fromName); Loading @@ -158,18 +171,41 @@ namespace ETSI.ARF.WorldStorage.UI } EditorGUILayout.Space(); showListTo = EditorGUILayout.Foldout(showListTo, "Child Object (To)"); showListTo = EditorGUILayout.Foldout(showListTo, "To (child object)"); if (showListTo) { EditorGUILayout.BeginHorizontal(); toUUID = EditorGUILayout.TextField("UUID", toUUID); string lastToUUID = fromUUID; toUUID = EditorGUILayout.TextField("Eenter a valid UUID:", toUUID); GUI.backgroundColor = WorldStorageWindow.arfColors[1]; if (GUILayout.Button("Find", EditorStyles.miniButtonLeft, miniButtonWidth)) if (GUILayout.Button("Request", EditorStyles.miniButtonLeft, miniButtonWidth) || lastToUUID != toUUID) { bool found = false; try { Trackable result = TrackableRequest.GetTrackable(worldStorageServer, toUUID); toName = result.Name; toType = ObjectType.Trackable; found = true; } catch { /* Object was not found */ } if (!found) try { // TODO Request the object from the server toName = "(not implemented yet)"; WorldAnchor result = WorldAnchorRequest.GetWorldAnchor(worldStorageServer, toUUID); toName = result.Name; toType = ObjectType.WorldAnchor; found = true; } catch { /* Object was not found */ } if (!found) { toName = ""; toType = ObjectType.NotIdentified; } } EditorGUILayout.EndHorizontal(); GUI.backgroundColor = ori; toName = EditorGUILayout.TextField("Name", toName); Loading @@ -177,6 +213,7 @@ namespace ETSI.ARF.WorldStorage.UI } EditorGUILayout.Space(10); unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); GUILayout.Label("Local CRS:"); localCRS_pos = EditorGUILayout.Vector3Field("Position:", localCRS_pos); localCRS_rot = EditorGUILayout.Vector3Field("Rotation:", localCRS_rot); Loading
Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs +61 −13 Original line number Diff line number Diff line Loading @@ -65,6 +65,8 @@ namespace ETSI.ARF.WorldStorage.UI private bool showListA = true; private bool showListL = true; private string filterByKeyValueTag = ""; static public string winName = "ARF Authoring Editor"; static public Color[] arfColors = new Color[] { Loading Loading @@ -92,7 +94,7 @@ namespace ETSI.ARF.WorldStorage.UI { // Title GUILayout.Label("Augmented Reality Framework", EditorStyles.boldLabel); GUILayout.Label("Copyright(c) 2022, ETSI (BSD 3-Clause License)"); GUILayout.Label("Copyright (C) 2022, ETSI (BSD 3-Clause License)"); } void OnGUI() Loading Loading @@ -195,6 +197,17 @@ namespace ETSI.ARF.WorldStorage.UI so.ApplyModifiedProperties(); // Remember to apply modified properties #endregion EditorGUILayout.Space(10); GUILayout.Label("World Storage Elements", EditorStyles.whiteLargeLabel); // ########################################################### // Handle Key Values // ########################################################### #region Filter EditorGUILayout.Space(10); filterByKeyValueTag = EditorGUILayout.TextField("Filter Value (Key = Group):", filterByKeyValueTag); #endregion // ########################################################### // Handle trackables // ########################################################### Loading Loading @@ -248,16 +261,18 @@ namespace ETSI.ARF.WorldStorage.UI { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); //EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none); string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); if (UUID == null) UUID = trackables[i]; // try this if (GUILayout.Button("-", EditorStyles.miniButtonLeft, miniButtonWidth)) { if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) { TrackableRequest.DeleteTrackable(worldStorageServer, UUID); WorldStorageWindowSingleton.GetTrackables(); WorldStorageWindowSingleton.Repaint(); } } if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) { Debug.Log("Open Trackable Window"); Loading Loading @@ -321,16 +336,18 @@ namespace ETSI.ARF.WorldStorage.UI { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); //EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none); string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); if (UUID == null) UUID = anchors[i]; // try this if (GUILayout.Button("-", EditorStyles.miniButtonLeft, miniButtonWidth)) { if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) { WorldAnchorRequest.DeleteWorldAnchor(worldStorageServer, UUID); WorldStorageWindowSingleton.GetWorldAnchors(); WorldStorageWindowSingleton.Repaint(); } } if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) { Debug.Log("Open Anchor Window"); Loading Loading @@ -394,16 +411,19 @@ namespace ETSI.ARF.WorldStorage.UI { EditorGUILayout.BeginHorizontal(); EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); //EditorGUILayout.PropertyField(list.GetArrayElementAtIndex(i), GUIContent.none); string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); if (UUID == null) UUID = links[i]; // try this if (GUILayout.Button("-", EditorStyles.miniButtonLeft, miniButtonWidth)) { if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) { WorldLinkRequest.DeleteWorldLink(worldStorageServer, UUID); WorldStorageWindowSingleton.GetWorldLinks(); WorldStorageWindowSingleton.Repaint(); } } if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) { Debug.Log("Open Link Window"); Loading Loading @@ -444,6 +464,24 @@ namespace ETSI.ARF.WorldStorage.UI } } static public (string, string) GetFirstKeyValueTags(Dictionary<string, List<string>> dict) { if (dict.Count >= 1) { // Get the first value in account (demo) foreach (var item in dict) { string key1 = item.Key; if (item.Value.Count >= 1) { string value1 = item.Value[0]; return (key1, value1); } } } return ("", ""); } public void GetTrackables() { // Get all objects Loading @@ -452,6 +490,11 @@ namespace ETSI.ARF.WorldStorage.UI trackables.Clear(); foreach (var item in res) { if (filterByKeyValueTag != "") { var first = GetFirstKeyValueTags(item.KeyvalueTags); if (first.Item1.ToLower() != "group" || first.Item2 != filterByKeyValueTag) continue; } if (!string.IsNullOrEmpty(item.Name)) trackables.Add(item.Name + " [" + item.UUID.ToString() + "]"); else trackables.Add(item.UUID.ToString()); } Loading @@ -465,6 +508,11 @@ namespace ETSI.ARF.WorldStorage.UI anchors.Clear(); foreach (var item in res) { if (filterByKeyValueTag != "") { var first = GetFirstKeyValueTags(item.KeyvalueTags); if (first.Item1.ToLower() != "group" || first.Item2 != filterByKeyValueTag) continue; } if (!string.IsNullOrEmpty(item.Name)) anchors.Add(item.Name + " [" + item.UUID.ToString() + "]"); else anchors.Add(item.UUID.ToString()); } Loading
UserSettings/Layouts/default-2021.dwlt +86 −86 File changed.Preview size limit exceeded, changes collapsed. Show changes