Loading .gitignore +18 −23 Original line number Diff line number Diff line # This .gitignore file should be placed at the root of your Unity project directory # # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore # # Modified from: # https://github.com/github/gitignore/blob/master/Unity.gitignore /[Ll]ibrary/ /[Tt]emp/ /[Oo]bj/ /[Uu]serSettings/ [Tt]emp/ [Oo]bj/ /[Bb]uild/ /[Bb]uilds/ /[Ll]ogs/ /[Mm]emoryCaptures/ # Fraunhofer HHI / IMC / Unity settings #/[Aa]ssets/Fraunhofer /[Aa]pp /[Bb]in /[Ee]xe # Never ignore Asset meta data !/[Aa]ssets/**/*.meta # Uncomment this line if you wish to ignore the asset store tools plugin # /[Aa]ssets/AssetStoreTools* # TextMesh Pro files #[Aa]ssets/TextMesh*Pro/ # Autogenerated Jetbrains Rider plugin [Aa]ssets/Plugins/Editor/JetBrains* # [Aa]ssets/AssetStoreTools* # Visual Studio cache directory .vs/ Loading Loading @@ -66,3 +51,13 @@ sysinfo.txt # Crashlytics generated file crashlytics-build.properties # Windows Thumbs.db Thumbs.db.meta # MacOS *.DS_Store # VS Code *.vscode No newline at end of file Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs 0 → 100644 +83 −0 Original line number Diff line number Diff line // // ARF - Augmented Reality Framework (ETSI ISG ARF) // // Copyright 2022 ETSI // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Last change: July 2022 // using Assets.ETSI.ARF.ARF_World_Storage_API.Editor.Windows; using Org.OpenAPITools.Model; using UnityEditor; using UnityEditor.Experimental.GraphView; using UnityEngine; using UnityEngine.UIElements; namespace Assets.ETSI.ARF.ARF_World_Storage_API.Editor.Graph { public class ARFEdgeLink : Edge { public WorldLink worldLink; public string GUID; public Image savedIcon; public ARFEdgeLink() { var doubleClickManipulator = new Clickable(Clicked); doubleClickManipulator.activators.Clear(); doubleClickManipulator.activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse, clickCount = 2 }); this.AddManipulator(doubleClickManipulator); } public void Clicked() { Debug.Log(worldLink.ToJson()); GraphEditorWindow.ShowWindow(this); } public void MarkUnsaved() { if (savedIcon == null) { //the icon to add if the node does not correspond to an element in the server Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png", typeof(Texture2D)); savedIcon = new Image { image = warningImage }; savedIcon.style.width = 18; savedIcon.style.height = 18; savedIcon.style.minWidth = 18; savedIcon.style.minHeight = 18; savedIcon.style.flexGrow = 1; savedIcon.style.alignSelf = Align.Center; } if (!edgeControl.Contains(savedIcon)) { edgeControl.Add(savedIcon); } tooltip = "This element is not synchronized with the World Storage"; } public void MarkSaved() { if (edgeControl.Contains(savedIcon)) { edgeControl.Remove(savedIcon); tooltip = ""; } } } } No newline at end of file Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/GraphWindow.cs.meta→Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs.meta +1 −1 Original line number Diff line number Diff line fileFormatVersion: 2 guid: 8dd64e8d8a545ab45b424402550b55a6 guid: 81a94cf483be20040aa4fe8d9f93d5c5 MonoImporter: externalObjects: {} serializedVersion: 2 Loading Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs +650 −108 File changed.Preview size limit exceeded, changes collapsed. Show changes Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs +143 −40 Original line number Diff line number Diff line Loading @@ -15,27 +15,130 @@ // See the License for the specific language governing permissions and // limitations under the License. // // Last change: June 2022 // Last change: July 2022 // using System.Collections; using System.Collections.Generic; using UnityEngine; #define USING_OPENAPI_GENERATOR // alt. is Swagger using UnityEditor; #if USING_OPENAPI_GENERATOR using Org.OpenAPITools.Model; #else using IO.Swagger.Api; using IO.Swagger.Model; #endif using UnityEngine.UIElements; using UnityEditor.Experimental.GraphView; using Assets.ETSI.ARF.ARF_World_Storage_API.Editor.Graph; using System; using UnityEngine; namespace ETSI.ARF.WorldStorage.UI { public class ARFNode : Node public abstract class ARFNode : Node { public string GUID; public string text; public bool entryPoint = false; public ARFPort portOut; public ARFPort portIn; public GUID id; public Image savedIcon; public ARFNode() { } public override Port InstantiatePort(Orientation orientation, Direction direction, Port.Capacity capacity, Type type) { switch (direction) { case Direction.Input: portIn = ARFPort.CreateARF<ARFEdgeLink>(orientation, direction, capacity, type); return portIn; case Direction.Output: portOut = ARFPort.CreateARF<ARFEdgeLink>(orientation, direction, capacity, type); return portOut; default: return null; } } public void DisconnectAllPorts(ARFGraphView graphView) { DisconnectInputPorts(graphView); DisconnectOutputPorts(graphView); } private void DisconnectInputPorts(ARFGraphView graphView) { DisconnectPorts(inputContainer, graphView); } private void DisconnectOutputPorts(ARFGraphView graphView) { DisconnectPorts(outputContainer, graphView); } private void DisconnectPorts(VisualElement container, ARFGraphView graphView) { foreach (Port port in container.Children()) { if (!port.connected) { continue; } graphView.DeleteElements(port.connections); } } public Port GeneratePort(ARFNode node, Direction portDirection, Port.Capacity capacity = Port.Capacity.Multi) { return node.InstantiatePort(Orientation.Horizontal, portDirection, capacity, typeof(int)); // dummy } //override the BuildContextualMenu method to prevent the "disconnect" option from appearing in the contextual menu public override void BuildContextualMenu(ContextualMenuPopulateEvent evt) { } public abstract ObjectType GetElemType(); public void MarkUnsaved() { if(savedIcon == null) { //the icon to add if the node does not correspond to an element in the server Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png", typeof(Texture2D)); savedIcon = new Image { image = warningImage, scaleMode = ScaleMode.ScaleToFit }; savedIcon.style.width = 25; savedIcon.style.height = 25; savedIcon.style.minWidth = 25; savedIcon.style.minHeight = 25; savedIcon.style.left = 8; savedIcon.style.paddingRight = 8; savedIcon.style.alignSelf = Align.Center; } if (!titleContainer.Contains(savedIcon)) { titleContainer.Insert(0,savedIcon); } tooltip = "This element is not synchronized with the World Storage"; } public void MarkSaved() { if (titleContainer.Contains(savedIcon)) { titleContainer.Remove(savedIcon); tooltip = ""; } } } } No newline at end of file Loading
.gitignore +18 −23 Original line number Diff line number Diff line # This .gitignore file should be placed at the root of your Unity project directory # # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore # # Modified from: # https://github.com/github/gitignore/blob/master/Unity.gitignore /[Ll]ibrary/ /[Tt]emp/ /[Oo]bj/ /[Uu]serSettings/ [Tt]emp/ [Oo]bj/ /[Bb]uild/ /[Bb]uilds/ /[Ll]ogs/ /[Mm]emoryCaptures/ # Fraunhofer HHI / IMC / Unity settings #/[Aa]ssets/Fraunhofer /[Aa]pp /[Bb]in /[Ee]xe # Never ignore Asset meta data !/[Aa]ssets/**/*.meta # Uncomment this line if you wish to ignore the asset store tools plugin # /[Aa]ssets/AssetStoreTools* # TextMesh Pro files #[Aa]ssets/TextMesh*Pro/ # Autogenerated Jetbrains Rider plugin [Aa]ssets/Plugins/Editor/JetBrains* # [Aa]ssets/AssetStoreTools* # Visual Studio cache directory .vs/ Loading Loading @@ -66,3 +51,13 @@ sysinfo.txt # Crashlytics generated file crashlytics-build.properties # Windows Thumbs.db Thumbs.db.meta # MacOS *.DS_Store # VS Code *.vscode No newline at end of file
Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs 0 → 100644 +83 −0 Original line number Diff line number Diff line // // ARF - Augmented Reality Framework (ETSI ISG ARF) // // Copyright 2022 ETSI // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // Last change: July 2022 // using Assets.ETSI.ARF.ARF_World_Storage_API.Editor.Windows; using Org.OpenAPITools.Model; using UnityEditor; using UnityEditor.Experimental.GraphView; using UnityEngine; using UnityEngine.UIElements; namespace Assets.ETSI.ARF.ARF_World_Storage_API.Editor.Graph { public class ARFEdgeLink : Edge { public WorldLink worldLink; public string GUID; public Image savedIcon; public ARFEdgeLink() { var doubleClickManipulator = new Clickable(Clicked); doubleClickManipulator.activators.Clear(); doubleClickManipulator.activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse, clickCount = 2 }); this.AddManipulator(doubleClickManipulator); } public void Clicked() { Debug.Log(worldLink.ToJson()); GraphEditorWindow.ShowWindow(this); } public void MarkUnsaved() { if (savedIcon == null) { //the icon to add if the node does not correspond to an element in the server Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png", typeof(Texture2D)); savedIcon = new Image { image = warningImage }; savedIcon.style.width = 18; savedIcon.style.height = 18; savedIcon.style.minWidth = 18; savedIcon.style.minHeight = 18; savedIcon.style.flexGrow = 1; savedIcon.style.alignSelf = Align.Center; } if (!edgeControl.Contains(savedIcon)) { edgeControl.Add(savedIcon); } tooltip = "This element is not synchronized with the World Storage"; } public void MarkSaved() { if (edgeControl.Contains(savedIcon)) { edgeControl.Remove(savedIcon); tooltip = ""; } } } } No newline at end of file
Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/GraphWindow.cs.meta→Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs.meta +1 −1 Original line number Diff line number Diff line fileFormatVersion: 2 guid: 8dd64e8d8a545ab45b424402550b55a6 guid: 81a94cf483be20040aa4fe8d9f93d5c5 MonoImporter: externalObjects: {} serializedVersion: 2 Loading
Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs +650 −108 File changed.Preview size limit exceeded, changes collapsed. Show changes
Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs +143 −40 Original line number Diff line number Diff line Loading @@ -15,27 +15,130 @@ // See the License for the specific language governing permissions and // limitations under the License. // // Last change: June 2022 // Last change: July 2022 // using System.Collections; using System.Collections.Generic; using UnityEngine; #define USING_OPENAPI_GENERATOR // alt. is Swagger using UnityEditor; #if USING_OPENAPI_GENERATOR using Org.OpenAPITools.Model; #else using IO.Swagger.Api; using IO.Swagger.Model; #endif using UnityEngine.UIElements; using UnityEditor.Experimental.GraphView; using Assets.ETSI.ARF.ARF_World_Storage_API.Editor.Graph; using System; using UnityEngine; namespace ETSI.ARF.WorldStorage.UI { public class ARFNode : Node public abstract class ARFNode : Node { public string GUID; public string text; public bool entryPoint = false; public ARFPort portOut; public ARFPort portIn; public GUID id; public Image savedIcon; public ARFNode() { } public override Port InstantiatePort(Orientation orientation, Direction direction, Port.Capacity capacity, Type type) { switch (direction) { case Direction.Input: portIn = ARFPort.CreateARF<ARFEdgeLink>(orientation, direction, capacity, type); return portIn; case Direction.Output: portOut = ARFPort.CreateARF<ARFEdgeLink>(orientation, direction, capacity, type); return portOut; default: return null; } } public void DisconnectAllPorts(ARFGraphView graphView) { DisconnectInputPorts(graphView); DisconnectOutputPorts(graphView); } private void DisconnectInputPorts(ARFGraphView graphView) { DisconnectPorts(inputContainer, graphView); } private void DisconnectOutputPorts(ARFGraphView graphView) { DisconnectPorts(outputContainer, graphView); } private void DisconnectPorts(VisualElement container, ARFGraphView graphView) { foreach (Port port in container.Children()) { if (!port.connected) { continue; } graphView.DeleteElements(port.connections); } } public Port GeneratePort(ARFNode node, Direction portDirection, Port.Capacity capacity = Port.Capacity.Multi) { return node.InstantiatePort(Orientation.Horizontal, portDirection, capacity, typeof(int)); // dummy } //override the BuildContextualMenu method to prevent the "disconnect" option from appearing in the contextual menu public override void BuildContextualMenu(ContextualMenuPopulateEvent evt) { } public abstract ObjectType GetElemType(); public void MarkUnsaved() { if(savedIcon == null) { //the icon to add if the node does not correspond to an element in the server Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png", typeof(Texture2D)); savedIcon = new Image { image = warningImage, scaleMode = ScaleMode.ScaleToFit }; savedIcon.style.width = 25; savedIcon.style.height = 25; savedIcon.style.minWidth = 25; savedIcon.style.minHeight = 25; savedIcon.style.left = 8; savedIcon.style.paddingRight = 8; savedIcon.style.alignSelf = Align.Center; } if (!titleContainer.Contains(savedIcon)) { titleContainer.Insert(0,savedIcon); } tooltip = "This element is not synchronized with the World Storage"; } public void MarkSaved() { if (titleContainer.Contains(savedIcon)) { titleContainer.Remove(savedIcon); tooltip = ""; } } } } No newline at end of file