Commit ba624f78 authored by Sylvain Renault's avatar Sylvain Renault
Browse files

Now one keyvalue can be given.

Main window: filtering by value for key "Group".
parent e4ed2abf
Loading
Loading
Loading
Loading
+25 −29
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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();

            // ###########################################################
@@ -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
        }

@@ -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);
+24 −21
Original line number Diff line number Diff line
@@ -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;
@@ -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);

@@ -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();
@@ -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
        }

@@ -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);
+60 −23
Original line number Diff line number Diff line
@@ -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);
@@ -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);
@@ -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);
+61 −13
Original line number Diff line number Diff line
@@ -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[]
        {
@@ -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()
@@ -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
            // ###########################################################
@@ -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");
@@ -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");
@@ -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");
@@ -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
@@ -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());
            }
@@ -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());
            }
+86 −86

File changed.

Preview size limit exceeded, changes collapsed.