From a0c9e4ad75cdf80ce3d9b16f886f6cd613d53d83 Mon Sep 17 00:00:00 2001
From: Sylvain Renault <sylvain.renault@hhi.fraunhofer.de>
Date: Thu, 17 Feb 2022 19:06:52 +0100
Subject: [PATCH] First version.

---
 .gitignore                                    |  68 ++
 .vsconfig                                     |   6 +
 Assets/ETSI.ARF.meta                          |   8 +
 Assets/ETSI.ARF/ARF World Storage API.meta    |   8 +
 .../ARF World Storage API/Editor.meta         |   8 +
 .../ARF World Storage API/Editor/Graph.meta   |   8 +
 .../Editor/Graph/ARFGraphView.cs              |  89 +++
 .../Editor/Graph/ARFGraphView.cs.meta         |  11 +
 .../Editor/Graph/ARFNode.cs                   |  34 +
 .../Editor/Graph/ARFNode.cs.meta              |  11 +
 .../Editor/GraphMathScript.cs                 | 450 ++++++++++++
 .../Editor/GraphMathScript.cs.meta            |  11 +
 .../Editor/GraphWindow.cs                     | 194 +++++
 .../Editor/GraphWindow.cs.meta                |  11 +
 .../Editor/TrackableWindow.cs                 | 163 +++++
 .../Editor/TrackableWindow.cs.meta            |  11 +
 .../Editor/WorldAnchorWindow.cs               | 122 ++++
 .../Editor/WorldAnchorWindow.cs.meta          |  11 +
 .../Editor/WorldStorageSettingsEditor.cs      |  66 ++
 .../Editor/WorldStorageSettingsEditor.cs.meta |  11 +
 .../Editor/WorldStorageWindow.cs              | 235 ++++++
 .../Editor/WorldStorageWindow.cs.meta         |  11 +
 .../ARF World Storage API/Materials.meta      |   8 +
 .../ARF World Storage API/Prefabs.meta        |   8 +
 .../ARF World Storage API/Scenes.meta         |   8 +
 .../Scenes/WorldStorageSample.unity           | 396 ++++++++++
 .../Scenes/WorldStorageSample.unity.meta      |   7 +
 .../WorldStorageSettings_HHI_Detlef.asset     |  18 +
 ...WorldStorageSettings_HHI_Detlef.asset.meta |   8 +
 .../ARF World Storage API/Scriptables.meta    |   8 +
 .../Scriptables/myWorldStorageSettings.asset  |  17 +
 .../myWorldStorageSettings.asset.meta         |   8 +
 .../ARF World Storage API/Scripts.meta        |   8 +
 Assets/Scenes.meta                            |   8 +
 Assets/Scenes/SampleScene.unity               | 301 ++++++++
 Assets/Scenes/SampleScene.unity.meta          |   7 +
 Packages/manifest.json                        |  44 ++
 Packages/packages-lock.json                   | 344 +++++++++
 ProjectSettings/AudioManager.asset            |  19 +
 ProjectSettings/ClusterInputManager.asset     |   6 +
 ProjectSettings/DynamicsManager.asset         |  34 +
 ProjectSettings/EditorBuildSettings.asset     |   8 +
 ProjectSettings/EditorSettings.asset          |  30 +
 ProjectSettings/GraphicsSettings.asset        |  63 ++
 ProjectSettings/InputManager.asset            | 295 ++++++++
 ProjectSettings/NavMeshAreas.asset            |  91 +++
 ProjectSettings/PackageManagerSettings.asset  |  43 ++
 ProjectSettings/Physics2DSettings.asset       |  56 ++
 ProjectSettings/PresetManager.asset           |   7 +
 ProjectSettings/ProjectSettings.asset         | 677 ++++++++++++++++++
 ProjectSettings/ProjectVersion.txt            |   2 +
 ProjectSettings/QualitySettings.asset         | 232 ++++++
 ProjectSettings/TagManager.asset              |  43 ++
 ProjectSettings/TimeManager.asset             |   9 +
 ProjectSettings/UnityConnectSettings.asset    |  35 +
 ProjectSettings/VFXManager.asset              |  12 +
 ProjectSettings/VersionControlSettings.asset  |   8 +
 ProjectSettings/XRSettings.asset              |  10 +
 README.md                                     |  10 +
 UserSettings/EditorUserSettings.asset         |  27 +
 60 files changed, 4462 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 .vsconfig
 create mode 100644 Assets/ETSI.ARF.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Materials.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scenes.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scriptables.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset.meta
 create mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts.meta
 create mode 100644 Assets/Scenes.meta
 create mode 100644 Assets/Scenes/SampleScene.unity
 create mode 100644 Assets/Scenes/SampleScene.unity.meta
 create mode 100644 Packages/manifest.json
 create mode 100644 Packages/packages-lock.json
 create mode 100644 ProjectSettings/AudioManager.asset
 create mode 100644 ProjectSettings/ClusterInputManager.asset
 create mode 100644 ProjectSettings/DynamicsManager.asset
 create mode 100644 ProjectSettings/EditorBuildSettings.asset
 create mode 100644 ProjectSettings/EditorSettings.asset
 create mode 100644 ProjectSettings/GraphicsSettings.asset
 create mode 100644 ProjectSettings/InputManager.asset
 create mode 100644 ProjectSettings/NavMeshAreas.asset
 create mode 100644 ProjectSettings/PackageManagerSettings.asset
 create mode 100644 ProjectSettings/Physics2DSettings.asset
 create mode 100644 ProjectSettings/PresetManager.asset
 create mode 100644 ProjectSettings/ProjectSettings.asset
 create mode 100644 ProjectSettings/ProjectVersion.txt
 create mode 100644 ProjectSettings/QualitySettings.asset
 create mode 100644 ProjectSettings/TagManager.asset
 create mode 100644 ProjectSettings/TimeManager.asset
 create mode 100644 ProjectSettings/UnityConnectSettings.asset
 create mode 100644 ProjectSettings/VFXManager.asset
 create mode 100644 ProjectSettings/VersionControlSettings.asset
 create mode 100644 ProjectSettings/XRSettings.asset
 create mode 100644 README.md
 create mode 100644 UserSettings/EditorUserSettings.asset

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c211a83
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,68 @@
+# 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
+#
+/[Ll]ibrary/
+/[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*
+
+# Visual Studio cache directory
+.vs/
+
+# Gradle cache directory
+.gradle/
+
+# Autogenerated VS/MD/Consulo solution and project files
+ExportedObj/
+.consulo/
+*.csproj
+*.unityproj
+*.sln
+*.suo
+*.tmp
+*.user
+*.userprefs
+*.pidb
+*.booproj
+*.svd
+*.pdb
+*.mdb
+*.opendb
+*.VC.db
+
+# Unity3D generated meta files
+*.pidb.meta
+*.pdb.meta
+*.mdb.meta
+
+# Unity3D generated file on crash reports
+sysinfo.txt
+
+# Builds
+*.apk
+*.unitypackage
+
+# Crashlytics generated file
+crashlytics-build.properties
\ No newline at end of file
diff --git a/.vsconfig b/.vsconfig
new file mode 100644
index 0000000..aade28f
--- /dev/null
+++ b/.vsconfig
@@ -0,0 +1,6 @@
+{
+  "version": "1.0",
+  "components": [ 
+    "Microsoft.VisualStudio.Workload.ManagedGame"
+  ]
+} 
diff --git a/Assets/ETSI.ARF.meta b/Assets/ETSI.ARF.meta
new file mode 100644
index 0000000..f31735a
--- /dev/null
+++ b/Assets/ETSI.ARF.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: db2f797f7c52e3747afa150badb0577f
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API.meta b/Assets/ETSI.ARF/ARF World Storage API.meta
new file mode 100644
index 0000000..60d119b
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e4474d3a0bcb9c44d9fd67da1ebb77c9
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor.meta
new file mode 100644
index 0000000..6994f74
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5fec767e3d1954e4e8af5dc2b3d4dd5d
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph.meta
new file mode 100644
index 0000000..4a78fd5
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 452c5e5fd6387ad4984356aa2f11d245
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs
new file mode 100644
index 0000000..23f5c45
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs	
@@ -0,0 +1,89 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UIElements;
+using UnityEditor.Experimental.GraphView;
+using System;
+
+namespace ETSI.ARF.WorldStorage.UI
+{
+    public class ARFGraphView : GraphView
+    {
+        public ARFGraphView()
+        {
+            //GridBackground back = new GridBackground();
+            //back.StretchToParentSize();
+            //Insert(0, back);
+
+            this.AddManipulator(new ContentDragger());
+            this.AddManipulator(new SelectionDragger());
+            this.AddManipulator(new RectangleSelector());
+
+            AddElement(GenerateEntryPointNode());
+        }
+
+        public override List<Port> GetCompatiblePorts(Port startPort, NodeAdapter nodeAdapter)
+        {
+            var cPorts = new List<Port>();
+            ports.ForEach (funcCall: port =>
+            {
+                if (startPort != port && startPort.node != port.node) cPorts.Add(port);
+            });
+            return cPorts;
+        }
+
+        private Port GeneratePort (ARFNode node, Direction portDirection, Port.Capacity capacity = Port.Capacity.Multi)
+        {
+            return node.InstantiatePort(Orientation.Horizontal, portDirection, capacity, typeof(int)); // dummy
+        }
+
+        private ARFNode GenerateEntryPointNode()
+        {
+            var node = new ARFNode
+            {
+                title = "World Storage",
+                text = "EntryPoint",
+                GUID = Guid.NewGuid().ToString(),
+                entryPoint = true
+            };
+
+            var portOut = GeneratePort(node, Direction.Output);
+            portOut.portName = "Link";
+            node.outputContainer.Add(portOut);
+
+            node.RefreshExpandedState();
+            node.RefreshPorts();
+            node.SetPosition(new Rect(50, 100, 200, 150));
+            return node;
+        }
+
+        public void CreateNode(string name)
+        {
+            AddElement(CreateARFNode(name));
+        }
+
+        public ARFNode CreateARFNode(string name)
+        {
+            var node = new ARFNode
+            {
+                title = name,
+                text = name,
+                GUID = Guid.NewGuid().ToString()
+            };
+
+            var portIn = GeneratePort(node, Direction.Input, Port.Capacity.Multi);
+            portIn.portName = "Link"; // "Input";
+            node.inputContainer.Add(portIn);
+
+            var portOut = GeneratePort(node, Direction.Output, Port.Capacity.Multi);
+            portOut.portName = "Link"; // "Output";
+            node.outputContainer.Add(portOut);
+
+            node.RefreshExpandedState();
+            node.RefreshPorts();
+            node.SetPosition(new Rect(200, 100, 200, 150));
+
+            return node;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs.meta
new file mode 100644
index 0000000..e0b1d23
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 000c7511b9bdea24cb6c962ca1ae26ca
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs
new file mode 100644
index 0000000..5f64ec9
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs	
@@ -0,0 +1,34 @@
+//
+// ETSI (European Telecommunications Standards Institute, referred to as ETSI)
+// ARF - ETSI ISG Augmented Reality Framework (ISG ARF)
+// (C) 2022
+//
+// Development "World Storage", data management, authoring tools
+//
+// Authors:
+// - Sylvain Renault (Fraunhofer HHI)
+// 
+// Date: Feb. 2022
+//
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UIElements;
+using UnityEditor.Experimental.GraphView;
+
+namespace ETSI.ARF.WorldStorage.UI
+{
+    public class ARFNode : Node
+    {
+        public string GUID;
+        public string text;
+        public bool entryPoint = false;
+
+        public ARFNode()
+        {
+           
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs.meta
new file mode 100644
index 0000000..97a115b
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0216cf1af3743f2429eb4b01db300b0e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs
new file mode 100644
index 0000000..0d106c5
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs	
@@ -0,0 +1,450 @@
+// Source:
+// https://gist.github.com/thelastpointer/c52c4b1f147dc47961798e39e3a7ea10
+
+
+/*
+	EditorGraph -- quickly draw graphs in the inspector.
+    Place this in a folder named 'Editor'.
+*/
+
+/*
+    USAGE:
+        public override void OnInspectorGUI()
+        {
+            base.OnInspectorGUI();
+
+            TLP.Editor.EditorGraph graph = new TLP.Editor.EditorGraph(0, -1, 10, 1, "Just a sin wave", 100);
+            graph.AddFunction(x => Mathf.Sin(x));
+            graph.Draw();
+        }
+    
+    MORE COMPLICATED USAGE:
+        public override void OnInspectorGUI()
+        {
+            base.OnInspectorGUI();
+
+            TLP.Editor.EditorGraph graph = new TLP.Editor.EditorGraph(0, -1, 10, 1, "Another sin wave!", 100);
+            graph.AddFunction(x => Mathf.Sin(x));
+
+            // Another function with a different color
+            graph.AddFunction(x => Mathf.Sin(x * 2), Color.cyan);
+
+            // Do something when the graph is clicked on
+            graph.AddClickEvent((x, y) => Debug.LogFormat("You clicked at {0};{1}. The sin value for that is {2}", x, y, Mathf.Sin(x)));
+
+            // Edit some colors...
+            graph.Colors.Background = new Color(0.2f, 0.2f, 0.2f, 1f);
+
+            // Add two vertical lines
+            graph.AddLineX(Mathf.PI);
+            graph.AddLineX(Mathf.PI * 2);
+
+            // Add a horizontal line with different color
+            graph.AddLineY(0, Color.gray);
+
+            graph.Draw();
+        }
+*/
+
+using UnityEngine;
+using UnityEditor;
+using System.Collections.Generic;
+
+namespace TLP.Editor
+{
+	/// <summary>
+	/// Draw graphs in the inspector.
+	/// </summary>
+	public class EditorGraph
+	{
+		/// <summary>
+		/// Title of the graph.
+		/// </summary>
+		public string Title;
+
+		/// <summary>
+		/// Vertical helper line distance, in graph units (a vertical line will be drawn every X units, starting at minimum X). Set 0 to disable.
+		/// </summary>
+		/// <remarks>There will be at most one line per every two pixels.</remarks>
+		public float GridLinesX = 0;
+		/// <summary>
+		/// Horizontal helper line distance, in graph units (a horizontal line will be drawn every Y units, starting at minimum Y). Set 0 to disable.
+		/// </summary>
+		/// <remarks>There will be at most one line per every two pixels.</remarks>
+		public float GridLinesY = 0;
+
+		/// <summary>
+		/// Color settings.
+		/// </summary>
+		public GraphColors Colors;
+
+		/// <summary>
+		/// Resolution of the graph -- how many points are evaluated and rendered for custom functions.
+		/// </summary>
+		public int GraphResolution = 48;
+
+		/// <summary>
+		/// Constructor.
+		/// </summary>
+		/// <param name="_minX">Minimum X value in graph units.</param>
+		/// <param name="_minY">Minimum Y value in graph units.</param>
+		/// <param name="_maxX">Maximum X value in graph units.</param>
+		/// <param name="_maxY">Maximum Y value in graph units.</param>
+		/// <param name="_title">Title of the graph (optional).</param>
+		/// <param name="_title">Resolution of the graphs (how many points are evaluated for each custom function).</param>
+		public EditorGraph(float _minX, float _minY, float _maxX, float _maxY, string _title = "", int _resolution = 48)
+		{
+			if (_minX >= _maxX)
+				throw new System.ArgumentException("Editor graph: minimum X value must be greater than maximum!", "_minX");
+			if (_minY >= _maxY)
+				throw new System.ArgumentException("Editor graph: minimum Y value must be greater than maximum!", "_minY");
+
+			minX = _minX;
+			maxX = _maxX;
+			minY = _minY;
+			maxY = _maxY;
+
+			rangeX = maxX - minX;
+			rangeY = maxY - minY;
+
+			Title = _title;
+			GraphResolution = _resolution;
+
+			// Default graph colors
+			Colors = new GraphColors
+			{
+				Background = new Color(0.15f, 0.15f, 0.15f, 1f),
+				Outline = new Color(0.15f, 0.15f, 0.15f, 1f),
+				GridLine = new Color(0.5f, 0.5f, 0.5f),
+				Function = Color.red,
+				CustomLine = Color.white
+			};
+		}
+
+		/// <summary>
+		/// Colors used to draw the graph.
+		/// </summary>
+		public struct GraphColors
+		{
+			/// <summary>
+			/// Background color.
+			/// </summary>
+			public Color Background;
+
+			/// <summary>
+			/// Outline color for the graph.
+			/// </summary>
+			public Color Outline;
+
+			/// <summary>
+			/// Helper line color.
+			/// </summary>
+			public Color GridLine;
+
+			/// <summary>
+			/// Default color for custom functions.
+			/// </summary>
+			public Color Function;
+
+			/// <summary>
+			/// Default color for custom lines.
+			/// </summary>
+			public Color CustomLine;
+		}
+
+		#region Public functions
+
+		/// <summary>
+		/// Draw the graph with the default size (128x80).
+		/// </summary>
+		public void Draw()
+		{
+			Draw(128, 80);
+		}
+
+		/// <summary>
+		/// Draw the graph with the specified minimum size.
+		/// </summary>
+		/// <param name="width">Minimum width of the graph in pixels.</param>
+		/// <param name="height">Minimum height of the graph in pixels.</param>
+		public void Draw(float width, float height)
+		{
+			// Get rect
+			if (!string.IsNullOrEmpty(Title))
+			{
+				using (new GUILayout.HorizontalScope(EditorStyles.toolbar))
+					GUILayout.Label(Title);
+			}
+
+			// Title
+			using (new GUILayout.HorizontalScope())
+			{
+				GUILayout.Space(EditorGUI.indentLevel * 15f);
+				rect = GUILayoutUtility.GetRect(width, height);
+			}
+
+			// Handle MouseDown events
+			if (Event.current.type == EventType.MouseDown)
+			{
+				if (rect.Contains(Event.current.mousePosition))
+				{
+					Vector2 mousePos = (Event.current.mousePosition - rect.position);
+					Vector2 unitPos = new Vector2(
+						mousePos.x / rect.width * rangeX + minX,
+						(1f - (mousePos.y / rect.height)) * rangeY + minY
+					);
+
+					foreach (var e in clickEvents)
+						e(unitPos.x, unitPos.y);
+				}
+			}
+
+			// Only continue if we're repainting the graph
+			if (Event.current.type != EventType.Repaint)
+				return;
+
+			// Background
+			DrawRect(minX, minY, maxX, maxY, Colors.Background, Colors.Outline);
+
+			// Vertical helper lines
+			if (GridLinesX > 0)
+			{
+				float multiplier = 1;
+				while ((rangeX / (GridLinesX * multiplier)) > (rect.width / 2f))
+					multiplier *= 2;
+
+				for (float x = minX; x <= maxX; x += GridLinesX * multiplier)
+					DrawLine(x, minY, x, maxY, Colors.GridLine, 1);
+			}
+			// Horizontal helper lines
+			if (GridLinesY > 0)
+			{
+				float multiplier = 1;
+				while ((rangeY / (GridLinesY * multiplier)) > (rect.height / 2f))
+					multiplier *= 2;
+
+				for (float y = minY; y <= maxY; y += GridLinesY * multiplier)
+					DrawLine(minX, y, maxX, y, Colors.GridLine, 1);
+			}
+
+			// Vertical lines
+			foreach (var line in linesX)
+			{
+				DrawLine(line.Position, minY, line.Position, maxY, line.Color, 2);
+			}
+			// Horizontal lines
+			foreach (var line in linesY)
+			{
+				DrawLine(minX, line.Position, maxX, line.Position, line.Color, 2);
+			}
+
+			// Check if the vertex buffer is of the correct size
+			int res = (GraphResolution <= 0 ? 48 : GraphResolution);
+			if ((curveVertices == null) || (curveVertices.Length != res))
+				curveVertices = new Vector3[res];
+
+			// Evaluate all functions
+			foreach (var func in functions)
+			{
+				var vcount = 0;
+				while (vcount < res)
+				{
+					var x = this.rangeX * vcount / (res - 1);
+					var y = func.Function(x);
+					if ((y > minY) && (y < maxY))
+					{
+						curveVertices[vcount++] = UnitToGraph(x, y);
+					}
+					else
+					{
+						if (vcount > 1)
+						{
+							// Extend the last segment to the top edge of the rect.
+							var v1 = curveVertices[vcount - 2];
+							var v2 = curveVertices[vcount - 1];
+							var clip = (rect.y - v1.y) / (v2.y - v1.y);
+							curveVertices[vcount - 1] = v1 + (v2 - v1) * clip;
+						}
+						break;
+					}
+				}
+
+				if (vcount > 1)
+				{
+					Handles.color = func.Color;
+					Handles.DrawAAPolyLine(2.0f, vcount, curveVertices);
+				}
+			}
+		}
+
+		/// <summary>
+		/// Add a custom function to the graph using the default color.
+		/// </summary>
+		/// <param name="func">A function that evaluates the graph at a given position (graph units).</param>
+		public void AddFunction(GraphFunction func)
+		{
+			AddFunction(func, Colors.Function);
+		}
+
+		/// <summary>
+		/// Add a custom function to the graph.
+		/// </summary>
+		/// <param name="func">A function that evaluates the graph at a given position (graph units).</param>
+		/// <param name="color">Color of the rendered function.</param>
+		public void AddFunction(GraphFunction func, Color color)
+		{
+			foreach (var pair in functions)
+			{
+				if (pair.Function == func)
+					return;
+			}
+
+			functions.Add(new FunctionColorPair { Function = func, Color = color });
+		}
+
+		/// <summary>
+		/// Register a function that handles click events. Arguments are passed as graph units.
+		/// </summary>
+		/// <param name="e">Function to call when the user clicks on the graph.</param>
+		public void AddClickEvent(MouseEvent e)
+		{
+			if (!clickEvents.Contains(e))
+				clickEvents.Add(e);
+		}
+
+		/// <summary>
+		/// Add a vertical line with the default color.
+		/// </summary>
+		/// <param name="value">Position of the line in graph units.</param>
+		public void AddLineX(float value)
+		{
+			AddLineX(value, Colors.CustomLine);
+		}
+
+		/// <summary>
+		/// Add a vertical line.
+		/// </summary>
+		/// <param name="value">Position of the line in graph units.</param>
+		/// <param name="color">Color of the line.</param>
+		public void AddLineX(float value, Color color)
+		{
+			foreach (var pair in linesX)
+			{
+				if (pair.Position == value)
+					return;
+			}
+
+			linesX.Add(new LineColorPair { Position = value, Color = color });
+		}
+
+		/// <summary>
+		/// Add a horizontal line with the default color.
+		/// </summary>
+		/// <param name="value">Position of the line in graph units.</param>
+		public void AddLineY(float value)
+		{
+			AddLineY(value, Colors.CustomLine);
+		}
+
+		/// <summary>
+		/// Add a horizontal line.
+		/// </summary>
+		/// <param name="value">Position of the line in graph units.</param>
+		/// <param name="color">Color of the line.</param>
+		public void AddLineY(float value, Color color)
+		{
+			foreach (var pair in linesY)
+			{
+				if (pair.Position == value)
+					return;
+			}
+
+			linesY.Add(new LineColorPair { Position = value, Color = color });
+		}
+
+		#endregion
+
+		/// <summary>
+		/// Custom function delegate. This works in graph units.
+		/// </summary>
+		/// <param name="x">Input value, eg. where the function is evaluated.</param>
+		/// <returns>The evaluated value at position x.</returns>
+		public delegate float GraphFunction(float x);
+
+		/// <summary>
+		/// Mouse click delegate.
+		/// </summary>
+		/// <param name="x">X position of the click, in graph units.</param>
+		/// <param name="y">Y position of the click, in graph units.</param>
+		public delegate void MouseEvent(float x, float y);
+
+		#region Internal state
+
+		// Vertex buffers
+		Vector3[] rectVertices = new Vector3[4];
+		Vector3[] lineVertices = new Vector3[2];
+		Vector3[] curveVertices;
+
+		List<FunctionColorPair> functions = new List<FunctionColorPair>();
+		List<LineColorPair> linesX = new List<LineColorPair>();
+		List<LineColorPair> linesY = new List<LineColorPair>();
+		List<MouseEvent> clickEvents = new List<MouseEvent>();
+		float minX, maxX, minY, maxY;
+		Rect rect;
+		float rangeX = 10;
+		float rangeY = 10;
+
+		struct FunctionColorPair
+		{
+			public GraphFunction Function;
+			public Color Color;
+		}
+		struct LineColorPair
+		{
+			public float Position;
+			public Color Color;
+		}
+
+		#endregion
+
+		#region Helper functions
+
+		Vector3 UnitToGraph(float x, float y)
+		{
+			x = Mathf.Lerp(rect.x, rect.xMax, (x - minX) / rangeX);
+			y = Mathf.Lerp(rect.yMax, rect.y, (y - minY) / rangeY);
+
+			return new Vector3(x, y, 0);
+		}
+
+		float UnitToGraphX(float x)
+		{
+			return Mathf.Lerp(rect.x, rect.xMax, (x - minX) / rangeX);
+		}
+
+		float UnitToGraphY(float y)
+		{
+			return Mathf.Lerp(rect.yMax, rect.y, (y - minY) / rangeY);
+		}
+
+		void DrawLine(float x1, float y1, float x2, float y2, Color color, float width)
+		{
+			lineVertices[0] = UnitToGraph(x1, y1);
+			lineVertices[1] = UnitToGraph(x2, y2);
+			Handles.color = color;
+			Handles.DrawAAPolyLine(width, lineVertices);
+		}
+
+		void DrawRect(float x1, float y1, float x2, float y2, Color fill, Color line)
+		{
+			rectVertices[0] = UnitToGraph(x1, y1);
+			rectVertices[1] = UnitToGraph(x2, y1);
+			rectVertices[2] = UnitToGraph(x2, y2);
+			rectVertices[3] = UnitToGraph(x1, y2);
+
+			Handles.DrawSolidRectangleWithOutline(rectVertices, fill, line);
+		}
+
+		#endregion
+	}
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs.meta
new file mode 100644
index 0000000..2d4c18f
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphMathScript.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 963ad0211af9f3f48a53e88d9f9f5be5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs
new file mode 100644
index 0000000..170de27
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs	
@@ -0,0 +1,194 @@
+#define USING_OPENAPI_GENERATOR // alt. is Swagger
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using UnityEditor.Experimental.GraphView;
+using UnityEngine.UIElements;
+using UnityEditor.UIElements;
+using ETSI.ARF.WorldStorage.RESTful;
+
+#if USING_OPENAPI_GENERATOR
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Model;
+#else
+using IO.Swagger.Api;
+using IO.Swagger.Model;
+#endif
+
+
+namespace ETSI.ARF.WorldStorage.UI
+{
+
+    public class GraphWindow : EditorWindow
+    {
+        [HideInInspector] public WorldStorageSettings worldStorageSettings;
+
+        [SerializeField] public List<string> trackables = new List<string>();
+
+        bool groupEnabled;
+
+        string uid = System.Guid.Empty.ToString();
+        string creatorUid = System.Guid.Empty.ToString();
+        string type = "Unknow";
+        string unit = "Unknow";
+        Vector2Int dim;
+
+        private Trackable currentTrackable;
+        private Vector2 scrollPos;
+        private Color ori;
+        private GUIStyle gsTest;
+
+        private ARFGraphView myGraph;
+
+        [MenuItem("[ ISG-ARF ]/Graph Editor")]
+        public static void ShowWindow()//WorldStorageSettings ws)
+        {
+            GraphWindow win = EditorWindow.GetWindow(typeof(GraphWindow), false, WorldStorageWindow.winName) as GraphWindow;
+            //win.worldStorageSettings = ws;
+        }
+
+        public GraphWindow()
+        {
+            // init somne stuffs
+            //currentTrackable = new Trackable();
+        }
+
+        public void OnEnable()
+        {
+            ConstructGraphView();
+            GenerateToolbar();
+        }
+         
+        public void OnDisable()
+        {
+            rootVisualElement.Remove(myGraph);
+        }
+
+        private void GenerateToolbar()
+        {
+            var toolbar = new Toolbar();
+
+            var createNodeT = new Button(clickEvent: () => { myGraph.CreateNode("Trackable"); });
+            createNodeT.text = "Create Trackable";
+            toolbar.Add(createNodeT);
+
+            var createNodeWA = new Button(clickEvent: () => { myGraph.CreateNode("World Anchor"); });
+            createNodeWA.text = "Create World Anchor";
+            toolbar.Add(createNodeWA);
+
+            var createNodeL = new Button(clickEvent: () => { });
+            createNodeL.text = "Create Link";
+            toolbar.Add(createNodeL);
+
+            var close = new Button(clickEvent: () => { Close(); });
+            close.text = "Close Window";
+            toolbar.Add(close);
+
+            rootVisualElement.Add(toolbar);
+        }
+
+        private void ConstructGraphView()
+        {
+            myGraph = new ARFGraphView
+            {
+                name = "ARF Graph"
+            };
+            myGraph.StretchToParentSize();
+            //myGraph.StretchToParentWidth();
+            rootVisualElement.Add(myGraph);
+        }
+
+        void OnGUI()
+        {
+            ori = GUI.backgroundColor; // remember ori color
+
+            gsTest = new GUIStyle("window");
+            gsTest.normal.textColor = WorldStorageWindow.arfColors[0];
+            gsTest.fontStyle = FontStyle.Bold;
+            
+            EditorGUILayout.Space(24);
+            GUI.contentColor = WorldStorageWindow.arfColors[1];
+            WorldStorageWindow.DrawCopyright();
+
+            //TLP.Editor.EditorGraph graph = new TLP.Editor.EditorGraph(0, -1, 10, 1, "Just a sin wave", 100);
+            //graph.AddFunction(x => Mathf.Sin(x));
+            //graph.Draw();
+        }
+
+        void DrawTrackableStuffs()// Trackable trackable)
+        {
+            GUILayout.BeginVertical("AR Trackable", gsTest);
+            //
+            GUILayout.Label("Server: " + worldStorageSettings.serverName, EditorStyles.whiteLargeLabel);
+            GUILayout.Label("Creator UID: " + creatorUid, EditorStyles.miniLabel); // readonly
+            EditorGUILayout.Space();
+
+            //GUILayout.BeginHorizontal();
+            uid = EditorGUILayout.TextField("UID (0 = new one)", uid);
+            EditorGUILayout.Space();
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Get Parameters"))
+            {
+                Trackable t = RESTfulTrackableRequest.GetTrackable(worldStorageSettings, uid);
+                creatorUid = t.CreatorUID.ToString();
+                type = t.GetType().ToString();
+                unit = t.UnitSystem.ToString();
+            }
+            GUI.backgroundColor = ori;
+
+            type = EditorGUILayout.TextField("Trackable Type", type);
+            unit = EditorGUILayout.TextField("Unit System", unit);
+
+            EditorGUILayout.Space(10);
+            dim = EditorGUILayout.Vector2IntField("Dimension", dim);
+
+            EditorGUILayout.Space();
+            GUILayout.Button("Payload from Asset...");
+
+            EditorGUILayout.Space();
+            groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled);
+            EditorGUILayout.IntField("Number of KeyValues", 0);
+            EditorGUILayout.Space();
+            EditorGUILayout.TextField("Key", "");
+            EditorGUILayout.TextField("Value", "");
+            EditorGUILayout.EndToggleGroup();
+            //
+            GUILayout.EndVertical();
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[3];
+            if (GUILayout.Button("Delete Trackable"))
+            {
+                Debug.Log("Deleting Trackable");
+                RESTfulTrackableRequest.DeleteTrackable(worldStorageSettings, uid);
+                uid = System.Guid.Empty.ToString();
+                creatorUid = System.Guid.Empty.ToString();
+                type = "";
+                unit = "";
+                WorldStorageWindow.WorldStorageWindowSingleton.UpdateList();
+                WorldStorageWindow.WorldStorageWindowSingleton.Repaint();
+            }
+            GUI.backgroundColor = ori;
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[2];
+            if (GUILayout.Button("Create/Update Trackable"))
+            {
+                Debug.Log("PostAddTrackable");
+                if (string.IsNullOrEmpty(uid) || uid == "0") uid = System.Guid.Empty.ToString();
+                Trackable t = RESTfulTrackableRequest.TrackableFromStrings(uid, worldStorageSettings.creatorUID);
+                RESTfulTrackableRequest.PostAddTrackable(worldStorageSettings, t);
+                WorldStorageWindow.WorldStorageWindowSingleton.UpdateList();
+                WorldStorageWindow.WorldStorageWindowSingleton.Repaint();
+
+                uid = t.UID.ToString();
+                type = t.GetType().ToString();
+                unit = t.UnitSystem.ToString();
+            }
+            GUI.backgroundColor = ori;
+        }
+
+  
+    }
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs.meta
new file mode 100644
index 0000000..dd5ac4d
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/GraphWindow.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8dd64e8d8a545ab45b424402550b55a6
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs
new file mode 100644
index 0000000..447f2eb
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs	
@@ -0,0 +1,163 @@
+//
+// ETSI (European Telecommunications Standards Institute, referred to as ETSI)
+// ARF - ETSI ISG Augmented Reality Framework (ISG ARF)
+// (C) 2022
+//
+// Development "World Storage", data management, authoring tools
+//
+// Authors:
+// - Sylvain Renault (Fraunhofer HHI)
+// 
+// Date: Feb. 2022
+//
+
+#define USING_OPENAPI_GENERATOR // alt. is Swagger
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using ETSI.ARF.WorldStorage.RESTful;
+
+#if USING_OPENAPI_GENERATOR
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Model;
+#else
+using IO.Swagger.Api;
+using IO.Swagger.Model;
+#endif
+
+
+namespace ETSI.ARF.WorldStorage.UI
+{
+    public class TrackableWindow : EditorWindow
+    {
+        [HideInInspector] public WorldStorageSettings worldStorageSettings;
+
+        [SerializeField] public List<string> trackables = new List<string>();
+
+        bool groupEnabled;
+
+        string uid = System.Guid.Empty.ToString();
+        string creatorUid = System.Guid.Empty.ToString();
+        string type = "Unknow";
+        string unit = "Unknow";
+        Vector2Int dim;
+
+        private Trackable currentTrackable;
+        private Vector2 scrollPos;
+        private Color ori;
+        private GUIStyle gsTest;
+
+        public static void ShowWindow(WorldStorageSettings ws)
+        {
+            TrackableWindow win = EditorWindow.GetWindow(typeof(TrackableWindow), false, WorldStorageWindow.winName) as TrackableWindow;
+            win.worldStorageSettings = ws;
+        }
+
+        public TrackableWindow()
+        {
+            // init somne stuffs
+            //currentTrackable = new Trackable();
+        }
+
+        void OnGUI()
+        {
+            ori = GUI.backgroundColor; // remember ori color
+
+            gsTest = new GUIStyle("window");
+            gsTest.normal.textColor = WorldStorageWindow.arfColors[0];
+            gsTest.fontStyle = FontStyle.Bold;
+
+            scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true));
+            WorldStorageWindow.DrawCopyright();
+
+            DrawTrackableStuffs();// currentTrackable);
+
+            EditorGUILayout.EndScrollView();
+
+            if (GUILayout.Button("Close Window"))
+            {
+                Close();
+            }
+        }
+
+        void DrawTrackableStuffs()// Trackable trackable)
+        {
+            GUILayout.BeginVertical("AR Trackable", gsTest);
+            //
+            GUILayout.Label("Server: " + worldStorageSettings.serverName, EditorStyles.whiteLargeLabel);
+            GUILayout.Label("Creator UID: " + creatorUid, EditorStyles.miniLabel); // readonly
+            EditorGUILayout.Space();
+
+            //GUILayout.BeginHorizontal();
+            uid = EditorGUILayout.TextField("UID (0 = new one)", uid);
+            EditorGUILayout.Space();
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Get Parameters"))
+            {
+                Trackable t = RESTfulTrackableRequest.GetTrackable(worldStorageSettings, uid);
+                creatorUid = t.CreatorUID.ToString();
+                type = t.GetType().ToString();
+                unit = t.UnitSystem.ToString();
+            }
+            GUI.backgroundColor = ori;
+
+            type = EditorGUILayout.TextField("Trackable Type", type);
+            unit = EditorGUILayout.TextField("Unit System", unit);
+
+            EditorGUILayout.Space(10);
+            dim = EditorGUILayout.Vector2IntField("Dimension", dim);
+
+            EditorGUILayout.Space();
+            GUILayout.Button("Payload from Asset...");
+
+            EditorGUILayout.Space();
+            groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled);
+            EditorGUILayout.IntField("Number of KeyValues", 0);
+            EditorGUILayout.Space();
+            EditorGUILayout.TextField("Key", "");
+            EditorGUILayout.TextField("Value", "");
+            EditorGUILayout.EndToggleGroup();
+            //
+            GUILayout.EndVertical();
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[3];
+            if (GUILayout.Button("Delete Trackable"))
+            {
+                Debug.Log("Deleting Trackable");
+                RESTfulTrackableRequest.DeleteTrackable(worldStorageSettings, uid);
+                uid = System.Guid.Empty.ToString();
+                creatorUid = System.Guid.Empty.ToString();
+                type = "";
+                unit = "";
+                WorldStorageWindow.WorldStorageWindowSingleton.UpdateList();
+                WorldStorageWindow.WorldStorageWindowSingleton.Repaint();
+            }
+            GUI.backgroundColor = ori;
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[2];
+            if (GUILayout.Button("Create/Update Trackable"))
+            {
+                Debug.Log("PostAddTrackable");
+                if (string.IsNullOrEmpty(uid) || uid == "0") uid = System.Guid.Empty.ToString();
+                Trackable t = RESTfulTrackableRequest.TrackableFromStrings(uid, worldStorageSettings.creatorUID);
+                RESTfulTrackableRequest.PostAddTrackable(worldStorageSettings, t);
+                WorldStorageWindow.WorldStorageWindowSingleton.UpdateList();
+                WorldStorageWindow.WorldStorageWindowSingleton.Repaint();
+
+                uid = t.UID.ToString();
+                type = t.GetType().ToString();
+                unit = t.UnitSystem.ToString();
+            }
+            GUI.backgroundColor = WorldStorageWindow.arfColors[5];
+            if (GUILayout.Button("Generate GameObject Component"))
+            {
+            }
+                GUI.backgroundColor = ori;
+        }
+
+  
+    }
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs.meta
new file mode 100644
index 0000000..40f6111
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/TrackableWindow.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 229d5ea484d30f945b9318581fb4f2da
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs
new file mode 100644
index 0000000..b0d4f44
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs	
@@ -0,0 +1,122 @@
+//
+// ETSI (European Telecommunications Standards Institute, referred to as ETSI)
+// ARF - ETSI ISG Augmented Reality Framework (ISG ARF)
+// (C) 2022
+//
+// Development "World Storage", data management, authoring tools
+//
+// Authors:
+// - Sylvain Renault (Fraunhofer HHI)
+// 
+// Date: Feb. 2022
+//
+
+#define USING_OPENAPI_GENERATOR // alt. is Swagger
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using ETSI.ARF.WorldStorage.RESTful;
+
+#if USING_OPENAPI_GENERATOR
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Model;
+#else
+using IO.Swagger.Api;
+using IO.Swagger.Model;
+#endif
+
+namespace ETSI.ARF.WorldStorage.UI
+{
+    public class WorldAnchorWindow : EditorWindow
+    {
+        [HideInInspector] public WorldStorageSettings worldStorageSettings;
+
+        [SerializeField] public List<string> anchors = new List<string>();
+
+        bool groupEnabled;
+
+        string creatorUid = System.Guid.Empty.ToString();
+        string uid = System.Guid.Empty.ToString();
+        string type = "Unknow";
+        string unit = "Unknow";
+        Vector2Int dim;
+
+        private Vector2 scrollPos;
+        private Color ori;
+        private GUIStyle gsTest;
+
+        public static void ShowWindow(WorldStorageSettings ws)
+        {
+            WorldAnchorWindow win = EditorWindow.GetWindow(typeof(WorldAnchorWindow), false, WorldStorageWindow.winName) as WorldAnchorWindow;
+            win.worldStorageSettings = ws;
+        }
+
+        public WorldAnchorWindow()
+        {
+            // init somne stuffs
+        }
+
+        void OnGUI()
+        {
+            ori = GUI.backgroundColor; // remember ori color
+            gsTest = new GUIStyle("window");
+            gsTest.normal.textColor = WorldStorageWindow.arfColors[0];
+            gsTest.fontStyle = FontStyle.Bold;
+
+            scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true));
+            WorldStorageWindow.DrawCopyright();
+            DrawAnchorStuffs();
+            EditorGUILayout.EndScrollView();
+
+            if (GUILayout.Button("Close Window"))
+            {
+                Close();
+            }
+        }
+
+        void DrawAnchorStuffs()
+        {
+            GUILayout.BeginVertical("AR World Anchor", gsTest);
+            //
+            GUILayout.Label("Server: " + worldStorageSettings.serverName, EditorStyles.whiteLargeLabel);
+            GUILayout.Label("Creator UID: " + creatorUid, EditorStyles.miniLabel); // readonly
+            EditorGUILayout.Space();
+
+            //GUILayout.BeginHorizontal();
+            uid = EditorGUILayout.TextField("UID (0 = create new)", uid);
+            EditorGUILayout.Space();
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Get Parameters"))
+            {
+                //WorldStorageRestRequest.PostAddTrackable(worldStorageSettings);
+            }
+            GUI.backgroundColor = ori;
+            //GUILayout.EndHorizontal();
+
+            type = EditorGUILayout.TextField("Anchor Type", type);
+            unit = EditorGUILayout.TextField("Unit System", unit);
+
+            EditorGUILayout.Space();
+            groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled);
+            EditorGUILayout.IntField("Number of KeyValues", 0);
+            EditorGUILayout.Space();
+            EditorGUILayout.TextField("Key", "");
+            EditorGUILayout.TextField("Value", "");
+            EditorGUILayout.EndToggleGroup();
+
+            //
+            GUILayout.EndVertical();
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[2];
+            if (GUILayout.Button("Create/Update World Anchor"))
+            {
+                Debug.Log("PostAddWorldAnchor");
+                RESTfulTrackableRequest.PostAddWorldAnchor(worldStorageSettings);
+            }
+            GUI.backgroundColor = ori;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs.meta
new file mode 100644
index 0000000..c4ffaff
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldAnchorWindow.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a0f67f823dd6ff246be6c656b120756e
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs
new file mode 100644
index 0000000..07a4590
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs	
@@ -0,0 +1,66 @@
+//
+// ETSI (European Telecommunications Standards Institute, referred to as ETSI)
+// ARF - ETSI ISG Augmented Reality Framework (ISG ARF)
+// (C) 2022
+//
+// Development "World Storage", data management, authoring tools
+//
+// Authors:
+// - Sylvain Renault (Fraunhofer HHI)
+// 
+// Date: Feb. 2022
+//
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+namespace ETSI.ARF.WorldStorage.UI
+{
+    [CustomEditor(typeof(WorldStorageSettings))]
+    public class WorldStorageSettingsEditor : Editor
+    {
+        WorldStorageSettings worldStorageSettings;
+        WorldStorageWindow win;
+
+        public void OnEnable()
+        {
+            worldStorageSettings = (WorldStorageSettings)target;
+        }
+
+        public override void OnInspectorGUI()
+        {
+            serializedObject.Update();
+
+            Color ori = GUI.backgroundColor;
+
+            GUILayout.Label("Copyright(c) 2022, ETSI - ARF");
+            EditorGUILayout.Space();
+            GUILayout.Label("Parameters:", EditorStyles.boldLabel);
+            DrawDefaultInspector();
+            EditorGUILayout.Space();
+
+            // creator uid button
+            //GUILayout.BeginHorizontal();
+            //GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Create New Creator UID"))
+            {
+                worldStorageSettings.creatorUID = System.Guid.NewGuid().ToString();
+                if (win != null) win.worldStorageSettings.creatorUID = worldStorageSettings.creatorUID;
+            }
+            //GUI.backgroundColor = ori;
+            //GUILayout.EndHorizontal();
+
+            // open win button
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Open World Storage Window..."))
+            {
+                Debug.Log("Open Main ARF Window");
+                win = EditorWindow.GetWindow(typeof(WorldStorageWindow), false, "ETSI ARF - Authoring Editor") as WorldStorageWindow;
+                win.worldStorageSettings = worldStorageSettings;
+            }
+            GUI.backgroundColor = ori;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs.meta
new file mode 100644
index 0000000..2cc100f
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageSettingsEditor.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 878ee3c4c6608354f90354fd159f4e04
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs
new file mode 100644
index 0000000..7658ceb
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs	
@@ -0,0 +1,235 @@
+//
+// ETSI (European Telecommunications Standards Institute, referred to as ETSI)
+// ARF - ETSI ISG Augmented Reality Framework (ISG ARF)
+// (C) 2022
+//
+// Development "World Storage", data management, authoring tools
+//
+// Authors:
+// - Sylvain Renault (Fraunhofer HHI)
+// 
+// Date: Feb. 2022
+//
+
+#define USING_OPENAPI_GENERATOR // alt. is Swagger
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using ETSI.ARF.WorldStorage.RESTful;
+
+#if USING_OPENAPI_GENERATOR
+using Org.OpenAPITools.Api;
+using Org.OpenAPITools.Model;
+#else
+using IO.Swagger.Api;
+using IO.Swagger.Model;
+#endif
+
+
+namespace ETSI.ARF.WorldStorage.UI
+{
+    public class WorldStorageWindow : EditorWindow
+    {
+        static public WorldStorageWindow WorldStorageWindowSingleton;
+
+        [HideInInspector] public WorldStorageSettings worldStorageSettings;
+
+        [SerializeField] public List<string> creators = new List<string>();
+        [SerializeField] public List<string> trackables = new List<string>();
+
+        string vers = "Unknow";
+
+        private Vector2 scrollPos;
+        private Color ori;
+        private GUIStyle gsTest;
+
+        static public string winName = "ARF Authoring Editor";
+        static public Color[] arfColors = new Color[] 
+        {
+            Color.yellow,                   // paneltext
+            new Color(0.3f, 1f, 1f),        // button REST
+            new Color(1f, 1f, 0.3f),        // button create + window
+            new Color(1f, 0f, 0f),          // button delete (red)
+            new Color(1f, 0f, 1f),           // button graph
+            new Color(.7f, .5f, 1f)           // button prefab
+        }; 
+
+        
+        //[MenuItem("[ ISG-ARF ]/World Storage Editor")]
+        public static void ShowWindow()
+        {
+            EditorWindow.GetWindow(typeof(WorldStorageWindow), false, WorldStorageWindow.winName);
+        }
+
+        public WorldStorageWindow()
+        {
+            WorldStorageWindowSingleton = this;
+        }
+        static public void DrawCopyright()
+        {
+            // Title 
+            GUILayout.Label("Augmented Reality Framework", EditorStyles.boldLabel);
+            GUILayout.Label("Copyright(c) 2022, ETSI (BSD 3-Clause License)");
+        }
+
+        void OnGUI()
+        {
+            ori = GUI.backgroundColor;
+            gsTest = new GUIStyle("window");
+            gsTest.fontStyle = FontStyle.Bold;
+            gsTest.normal.textColor = WorldStorageWindow.arfColors[0];
+
+            scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true));
+            WorldStorageWindow.DrawCopyright();
+            DrawServerStuffs();
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[2];
+            if (GUILayout.Button("Create/Edit Trackable..."))
+            {
+                Debug.Log("Open Trackable Window");
+                TrackableWindow.ShowWindow(worldStorageSettings);
+            }
+            if (GUILayout.Button("Create/Edit World Anchor..."))
+            {
+                Debug.Log("Open World Anchor Window");
+                WorldAnchorWindow.ShowWindow(worldStorageSettings);
+            }
+            if (GUILayout.Button("Create/Edit Link..."))
+            {
+            }
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[4];
+            if (GUILayout.Button("Show Graph..."))
+            {
+                GraphWindow.ShowWindow();
+            }
+            EditorGUILayout.EndScrollView();
+        }
+
+        public void UpdateList()
+        {
+            // Get all objects
+            Debug.Log("Get all server objects");
+            List<Trackable> res = RESTfulTrackableRequest.GetAllTrackables(worldStorageSettings);
+            trackables.Clear();
+            foreach (var item in res)
+            {
+                trackables.Add(item.UID.ToString());
+            }
+        }
+
+        void DrawServerStuffs()
+        {
+            // Server info
+            GUILayout.BeginVertical("World Storage Server", gsTest);
+            //
+            GUILayout gl = new GUILayout();
+            
+            GUILayout.Label("Server Name: " + worldStorageSettings.serverName, EditorStyles.whiteLargeLabel);
+            GUILayout.Label("Own Creator UID: " + worldStorageSettings.creatorUID);
+            GUILayout.Label("Base Path: " + worldStorageSettings.basePath);
+            GUILayout.Label("Port: " + worldStorageSettings.port);
+
+            EditorGUILayout.Space();
+
+            // Ping
+            EditorGUILayout.Space();
+            if (GUILayout.Button("Ping"))
+            {
+                vers = RESTfulTrackableRequest.Ping(worldStorageSettings);
+            }
+
+            // Version
+            GUILayout.BeginHorizontal();
+            vers = EditorGUILayout.TextField("Version", vers);
+
+            if (GUILayout.Button("Get World Storage API Version"))
+            {
+                vers = RESTfulTrackableRequest.GetAdminInfo(worldStorageSettings);
+            }
+            GUI.backgroundColor = ori;
+            GUILayout.EndHorizontal();
+
+            ScriptableObject target = this;
+            SerializedObject so = new SerializedObject(target);
+
+            // Get creators
+            #region Get all creatorUid
+            EditorGUILayout.Space(10);
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Request all Creator ID"))
+            {
+                // Get all objects
+                Debug.Log("Get all creators id");
+                List<Trackable> res = RESTfulTrackableRequest.GetAllTrackables(worldStorageSettings);
+                creators.Clear();
+                foreach (var item in res)
+                {
+                    if (!creators.Contains(item.CreatorUID.ToString())) creators.Add(item.CreatorUID.ToString());
+                }
+            }
+            GUI.backgroundColor = ori;
+
+            SerializedProperty stringsProperty = so.FindProperty("creators");
+            EditorGUILayout.PropertyField(stringsProperty, true); // True means show children
+            so.ApplyModifiedProperties(); // Remember to apply modified properties
+            #endregion
+
+            // Get trackables
+            #region Get all trackable objects
+            EditorGUILayout.Space(10);
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Request all Trackable ID"))
+            {
+                UpdateList();
+            }
+            GUI.backgroundColor = ori;
+            //GUILayout.Label("Number of Trackables: " + trackables.Count.ToString());
+
+            GUI.backgroundColor = WorldStorageWindow.arfColors[3];
+            if (GUILayout.Button("Delete all Trackables (5 stay in!!!)"))
+            {
+                Debug.Log("Deleting all Trackable ");
+                int n = 0;
+                foreach (var item in trackables)
+                {
+                    if (++n > 5) RESTfulTrackableRequest.DeleteTrackable(worldStorageSettings, item);
+                }
+                
+                UpdateList();
+                WorldStorageWindow.WorldStorageWindowSingleton.Repaint();
+            }
+            GUI.backgroundColor = ori;
+
+            stringsProperty = so.FindProperty("trackables");
+            EditorGUILayout.PropertyField(stringsProperty, /*new GUIContent("Trackbales"),*/ true); // True means show children
+            so.ApplyModifiedProperties(); // Remember to apply modified properties
+            #endregion
+
+            // Anchors
+            #region Get all anchor objects
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Request all Anchor ID"))
+            {
+                
+            }
+            GUI.backgroundColor = ori;
+            #endregion
+
+            // Links
+            #region Get all link objects
+            GUI.backgroundColor = WorldStorageWindow.arfColors[1];
+            if (GUILayout.Button("Request all Link ID"))
+            {
+
+            }
+            GUI.backgroundColor = ori;
+            #endregion
+
+            //
+            GUILayout.EndVertical();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs.meta
new file mode 100644
index 0000000..c8d7fb0
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageWindow.cs.meta	
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a1647df9b48bf4f49a664a929fff57ff
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials.meta b/Assets/ETSI.ARF/ARF World Storage API/Materials.meta
new file mode 100644
index 0000000..c43ac24
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Materials.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4da599b9c3d07b8418c44e099b51e460
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Prefabs.meta b/Assets/ETSI.ARF/ARF World Storage API/Prefabs.meta
new file mode 100644
index 0000000..3afe3fd
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Prefabs.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 58d625e15ff264e479d393186a4a9827
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scenes.meta b/Assets/ETSI.ARF/ARF World Storage API/Scenes.meta
new file mode 100644
index 0000000..4ef537e
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scenes.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: bee2e150130771041a1a97b017e971db
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity
new file mode 100644
index 0000000..2e05d63
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity	
@@ -0,0 +1,396 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 0
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 705507994}
+  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 12
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 1
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 2
+    m_BakeResolution: 40
+    m_AtlasSize: 1024
+    m_AO: 0
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 1
+    m_FinalGather: 0
+    m_FinalGatherFiltering: 1
+    m_FinalGatherRayCount: 256
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 2
+    m_BakeBackend: 1
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 500
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 500
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 2
+    m_PVRDenoiserTypeDirect: 0
+    m_PVRDenoiserTypeIndirect: 0
+    m_PVRDenoiserTypeAO: 0
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 0
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    maxJobWorkers: 0
+    preserveTilesOutsideBounds: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &705507993
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 705507995}
+  - component: {fileID: 705507994}
+  m_Layer: 0
+  m_Name: Directional Light
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!108 &705507994
+Light:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 705507993}
+  m_Enabled: 1
+  serializedVersion: 10
+  m_Type: 1
+  m_Shape: 0
+  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+  m_Intensity: 1
+  m_Range: 10
+  m_SpotAngle: 30
+  m_InnerSpotAngle: 21.80208
+  m_CookieSize: 10
+  m_Shadows:
+    m_Type: 2
+    m_Resolution: -1
+    m_CustomResolution: -1
+    m_Strength: 1
+    m_Bias: 0.05
+    m_NormalBias: 0.4
+    m_NearPlane: 0.2
+    m_CullingMatrixOverride:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+    m_UseCullingMatrixOverride: 0
+  m_Cookie: {fileID: 0}
+  m_DrawHalo: 0
+  m_Flare: {fileID: 0}
+  m_RenderMode: 0
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingLayerMask: 1
+  m_Lightmapping: 1
+  m_LightShadowCasterMode: 0
+  m_AreaSize: {x: 1, y: 1}
+  m_BounceIntensity: 1
+  m_ColorTemperature: 6570
+  m_UseColorTemperature: 0
+  m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+  m_UseBoundingSphereOverride: 0
+  m_UseViewFrustumForShadowCasterCull: 1
+  m_ShadowRadius: 0
+  m_ShadowAngle: 0
+--- !u!4 &705507995
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 705507993}
+  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+  m_LocalPosition: {x: 0, y: 3, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &763049753
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 763049757}
+  - component: {fileID: 763049756}
+  - component: {fileID: 763049755}
+  - component: {fileID: 763049754}
+  m_Layer: 0
+  m_Name: Cube
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!65 &763049754
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 763049753}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Size: {x: 1, y: 1, z: 1}
+  m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &763049755
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 763049753}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &763049756
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 763049753}
+  m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &763049757
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 763049753}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &963194225
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 963194228}
+  - component: {fileID: 963194227}
+  - component: {fileID: 963194226}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &963194226
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_Enabled: 1
+--- !u!20 &963194227
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 1
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 60
+  orthographic: 0
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 3
+  m_HDR: 1
+  m_AllowMSAA: 1
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 1
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &963194228
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 1, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity.meta b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity.meta
new file mode 100644
index 0000000..b6fb1ad
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity.meta	
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: dbbcc65439ff48d408afb63972fb59e3
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset
new file mode 100644
index 0000000..a50e697
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset	
@@ -0,0 +1,18 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e4b7be4c33f68d0418c3b4e1a7053d91, type: 3}
+  m_Name: WorldStorageSettings_HHI_Detlef
+  m_EditorClassIdentifier: 
+  serverName: Detlef's PC
+  creatorUID: 00000000-0000-0000-0000-000000000000
+  basePath: http://172.17.132.19
+  port: 8080
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset.meta b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset.meta
new file mode 100644
index 0000000..6e4830d
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSettings_HHI_Detlef.asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b656b4f6c38b83148a06d0ccd523227c
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scriptables.meta b/Assets/ETSI.ARF/ARF World Storage API/Scriptables.meta
new file mode 100644
index 0000000..64ab464
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scriptables.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: efec94a96917ef946ab027baa62bc0bc
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset b/Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset
new file mode 100644
index 0000000..58c245c
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset	
@@ -0,0 +1,17 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e4b7be4c33f68d0418c3b4e1a7053d91, type: 3}
+  m_Name: myWorldStorageSettings
+  m_EditorClassIdentifier: 
+  serverName: HHI Servers
+  basePath: https://localhosts
+  port: 40311
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset.meta b/Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset.meta
new file mode 100644
index 0000000..60f3073
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scriptables/myWorldStorageSettings.asset.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1d9997341aa0c1c45810f4b291addf39
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts.meta b/Assets/ETSI.ARF/ARF World Storage API/Scripts.meta
new file mode 100644
index 0000000..f83558e
--- /dev/null
+++ b/Assets/ETSI.ARF/ARF World Storage API/Scripts.meta	
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: be2764d34364d6e4e8b4811c9fe72a5b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scenes.meta b/Assets/Scenes.meta
new file mode 100644
index 0000000..7bf301b
--- /dev/null
+++ b/Assets/Scenes.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: da130fac0511daa458eef83025af651e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity
new file mode 100644
index 0000000..9c5c0d0
--- /dev/null
+++ b/Assets/Scenes/SampleScene.unity
@@ -0,0 +1,301 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!29 &1
+OcclusionCullingSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_OcclusionBakeSettings:
+    smallestOccluder: 5
+    smallestHole: 0.25
+    backfaceThreshold: 100
+  m_SceneGUID: 00000000000000000000000000000000
+  m_OcclusionCullingData: {fileID: 0}
+--- !u!104 &2
+RenderSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 9
+  m_Fog: 0
+  m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
+  m_FogMode: 3
+  m_FogDensity: 0.01
+  m_LinearFogStart: 0
+  m_LinearFogEnd: 300
+  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
+  m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
+  m_AmbientIntensity: 1
+  m_AmbientMode: 0
+  m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
+  m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
+  m_HaloStrength: 0.5
+  m_FlareStrength: 1
+  m_FlareFadeSpeed: 3
+  m_HaloTexture: {fileID: 0}
+  m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
+  m_DefaultReflectionMode: 0
+  m_DefaultReflectionResolution: 128
+  m_ReflectionBounces: 1
+  m_ReflectionIntensity: 1
+  m_CustomReflection: {fileID: 0}
+  m_Sun: {fileID: 705507994}
+  m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
+  m_UseRadianceAmbientProbe: 0
+--- !u!157 &3
+LightmapSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 12
+  m_GIWorkflowMode: 1
+  m_GISettings:
+    serializedVersion: 2
+    m_BounceScale: 1
+    m_IndirectOutputScale: 1
+    m_AlbedoBoost: 1
+    m_EnvironmentLightingMode: 0
+    m_EnableBakedLightmaps: 1
+    m_EnableRealtimeLightmaps: 0
+  m_LightmapEditorSettings:
+    serializedVersion: 12
+    m_Resolution: 2
+    m_BakeResolution: 40
+    m_AtlasSize: 1024
+    m_AO: 0
+    m_AOMaxDistance: 1
+    m_CompAOExponent: 1
+    m_CompAOExponentDirect: 0
+    m_ExtractAmbientOcclusion: 0
+    m_Padding: 2
+    m_LightmapParameters: {fileID: 0}
+    m_LightmapsBakeMode: 1
+    m_TextureCompression: 1
+    m_FinalGather: 0
+    m_FinalGatherFiltering: 1
+    m_FinalGatherRayCount: 256
+    m_ReflectionCompression: 2
+    m_MixedBakeMode: 2
+    m_BakeBackend: 1
+    m_PVRSampling: 1
+    m_PVRDirectSampleCount: 32
+    m_PVRSampleCount: 500
+    m_PVRBounces: 2
+    m_PVREnvironmentSampleCount: 500
+    m_PVREnvironmentReferencePointCount: 2048
+    m_PVRFilteringMode: 2
+    m_PVRDenoiserTypeDirect: 0
+    m_PVRDenoiserTypeIndirect: 0
+    m_PVRDenoiserTypeAO: 0
+    m_PVRFilterTypeDirect: 0
+    m_PVRFilterTypeIndirect: 0
+    m_PVRFilterTypeAO: 0
+    m_PVREnvironmentMIS: 0
+    m_PVRCulling: 1
+    m_PVRFilteringGaussRadiusDirect: 1
+    m_PVRFilteringGaussRadiusIndirect: 5
+    m_PVRFilteringGaussRadiusAO: 2
+    m_PVRFilteringAtrousPositionSigmaDirect: 0.5
+    m_PVRFilteringAtrousPositionSigmaIndirect: 2
+    m_PVRFilteringAtrousPositionSigmaAO: 1
+    m_ExportTrainingData: 0
+    m_TrainingDataDestination: TrainingData
+    m_LightProbeSampleCountMultiplier: 4
+  m_LightingDataAsset: {fileID: 0}
+  m_LightingSettings: {fileID: 0}
+--- !u!196 &4
+NavMeshSettings:
+  serializedVersion: 2
+  m_ObjectHideFlags: 0
+  m_BuildSettings:
+    serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.4
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    maxJobWorkers: 0
+    preserveTilesOutsideBounds: 0
+    debug:
+      m_Flags: 0
+  m_NavMeshData: {fileID: 0}
+--- !u!1 &705507993
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 705507995}
+  - component: {fileID: 705507994}
+  m_Layer: 0
+  m_Name: Directional Light
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!108 &705507994
+Light:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 705507993}
+  m_Enabled: 1
+  serializedVersion: 10
+  m_Type: 1
+  m_Shape: 0
+  m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+  m_Intensity: 1
+  m_Range: 10
+  m_SpotAngle: 30
+  m_InnerSpotAngle: 21.80208
+  m_CookieSize: 10
+  m_Shadows:
+    m_Type: 2
+    m_Resolution: -1
+    m_CustomResolution: -1
+    m_Strength: 1
+    m_Bias: 0.05
+    m_NormalBias: 0.4
+    m_NearPlane: 0.2
+    m_CullingMatrixOverride:
+      e00: 1
+      e01: 0
+      e02: 0
+      e03: 0
+      e10: 0
+      e11: 1
+      e12: 0
+      e13: 0
+      e20: 0
+      e21: 0
+      e22: 1
+      e23: 0
+      e30: 0
+      e31: 0
+      e32: 0
+      e33: 1
+    m_UseCullingMatrixOverride: 0
+  m_Cookie: {fileID: 0}
+  m_DrawHalo: 0
+  m_Flare: {fileID: 0}
+  m_RenderMode: 0
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingLayerMask: 1
+  m_Lightmapping: 1
+  m_LightShadowCasterMode: 0
+  m_AreaSize: {x: 1, y: 1}
+  m_BounceIntensity: 1
+  m_ColorTemperature: 6570
+  m_UseColorTemperature: 0
+  m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
+  m_UseBoundingSphereOverride: 0
+  m_UseViewFrustumForShadowCasterCull: 1
+  m_ShadowRadius: 0
+  m_ShadowAngle: 0
+--- !u!4 &705507995
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 705507993}
+  m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+  m_LocalPosition: {x: 0, y: 3, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+--- !u!1 &963194225
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 963194228}
+  - component: {fileID: 963194227}
+  - component: {fileID: 963194226}
+  m_Layer: 0
+  m_Name: Main Camera
+  m_TagString: MainCamera
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!81 &963194226
+AudioListener:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_Enabled: 1
+--- !u!20 &963194227
+Camera:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_Enabled: 1
+  serializedVersion: 2
+  m_ClearFlags: 1
+  m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
+  m_projectionMatrixMode: 1
+  m_GateFitMode: 2
+  m_FOVAxisMode: 0
+  m_SensorSize: {x: 36, y: 24}
+  m_LensShift: {x: 0, y: 0}
+  m_FocalLength: 50
+  m_NormalizedViewPortRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  near clip plane: 0.3
+  far clip plane: 1000
+  field of view: 60
+  orthographic: 0
+  orthographic size: 5
+  m_Depth: -1
+  m_CullingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+  m_RenderingPath: -1
+  m_TargetTexture: {fileID: 0}
+  m_TargetDisplay: 0
+  m_TargetEye: 3
+  m_HDR: 1
+  m_AllowMSAA: 1
+  m_AllowDynamicResolution: 0
+  m_ForceIntoRT: 0
+  m_OcclusionCulling: 1
+  m_StereoConvergence: 10
+  m_StereoSeparation: 0.022
+--- !u!4 &963194228
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 963194225}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 1, z: -10}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Scenes/SampleScene.unity.meta
new file mode 100644
index 0000000..952bd1e
--- /dev/null
+++ b/Assets/Scenes/SampleScene.unity.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9fc0d4010bbf28b4594072e72b8655ab
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Packages/manifest.json b/Packages/manifest.json
new file mode 100644
index 0000000..7d93fb8
--- /dev/null
+++ b/Packages/manifest.json
@@ -0,0 +1,44 @@
+{
+  "dependencies": {
+    "com.unity.collab-proxy": "1.3.9",
+    "com.unity.ide.rider": "2.0.7",
+    "com.unity.ide.visualstudio": "2.0.7",
+    "com.unity.ide.vscode": "1.2.3",
+    "com.unity.test-framework": "1.1.24",
+    "com.unity.textmeshpro": "3.0.4",
+    "com.unity.timeline": "1.4.7",
+    "com.unity.ugui": "1.0.0",
+    "etsi.isg.arf.worldstorage": "file:D:/Fraunhofer/Projects/ETSI/ETSI Labs-STF/unity-world-storage-package",
+    "com.unity.modules.ai": "1.0.0",
+    "com.unity.modules.androidjni": "1.0.0",
+    "com.unity.modules.animation": "1.0.0",
+    "com.unity.modules.assetbundle": "1.0.0",
+    "com.unity.modules.audio": "1.0.0",
+    "com.unity.modules.cloth": "1.0.0",
+    "com.unity.modules.director": "1.0.0",
+    "com.unity.modules.imageconversion": "1.0.0",
+    "com.unity.modules.imgui": "1.0.0",
+    "com.unity.modules.jsonserialize": "1.0.0",
+    "com.unity.modules.particlesystem": "1.0.0",
+    "com.unity.modules.physics": "1.0.0",
+    "com.unity.modules.physics2d": "1.0.0",
+    "com.unity.modules.screencapture": "1.0.0",
+    "com.unity.modules.terrain": "1.0.0",
+    "com.unity.modules.terrainphysics": "1.0.0",
+    "com.unity.modules.tilemap": "1.0.0",
+    "com.unity.modules.ui": "1.0.0",
+    "com.unity.modules.uielements": "1.0.0",
+    "com.unity.modules.umbra": "1.0.0",
+    "com.unity.modules.unityanalytics": "1.0.0",
+    "com.unity.modules.unitywebrequest": "1.0.0",
+    "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+    "com.unity.modules.unitywebrequestaudio": "1.0.0",
+    "com.unity.modules.unitywebrequesttexture": "1.0.0",
+    "com.unity.modules.unitywebrequestwww": "1.0.0",
+    "com.unity.modules.vehicles": "1.0.0",
+    "com.unity.modules.video": "1.0.0",
+    "com.unity.modules.vr": "1.0.0",
+    "com.unity.modules.wind": "1.0.0",
+    "com.unity.modules.xr": "1.0.0"
+  }
+}
diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json
new file mode 100644
index 0000000..598afa1
--- /dev/null
+++ b/Packages/packages-lock.json
@@ -0,0 +1,344 @@
+{
+  "dependencies": {
+    "com.unity.collab-proxy": {
+      "version": "1.3.9",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {},
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.ext.nunit": {
+      "version": "1.0.6",
+      "depth": 1,
+      "source": "registry",
+      "dependencies": {},
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.ide.rider": {
+      "version": "2.0.7",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.test-framework": "1.1.1"
+      },
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.ide.visualstudio": {
+      "version": "2.0.7",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.test-framework": "1.1.9"
+      },
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.ide.vscode": {
+      "version": "1.2.3",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {},
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.test-framework": {
+      "version": "1.1.24",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.ext.nunit": "1.0.6",
+        "com.unity.modules.imgui": "1.0.0",
+        "com.unity.modules.jsonserialize": "1.0.0"
+      },
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.textmeshpro": {
+      "version": "3.0.4",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.ugui": "1.0.0"
+      },
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.timeline": {
+      "version": "1.4.7",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.modules.director": "1.0.0",
+        "com.unity.modules.animation": "1.0.0",
+        "com.unity.modules.audio": "1.0.0",
+        "com.unity.modules.particlesystem": "1.0.0"
+      },
+      "url": "https://packages.unity.com"
+    },
+    "com.unity.ugui": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.ui": "1.0.0",
+        "com.unity.modules.imgui": "1.0.0"
+      }
+    },
+    "etsi.isg.arf.worldstorage": {
+      "version": "file:D:/Fraunhofer/Projects/ETSI/ETSI Labs-STF/unity-world-storage-package",
+      "depth": 0,
+      "source": "local",
+      "dependencies": {}
+    },
+    "com.unity.modules.ai": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.androidjni": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.animation": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.assetbundle": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.audio": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.cloth": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.physics": "1.0.0"
+      }
+    },
+    "com.unity.modules.director": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.audio": "1.0.0",
+        "com.unity.modules.animation": "1.0.0"
+      }
+    },
+    "com.unity.modules.imageconversion": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.imgui": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.jsonserialize": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.particlesystem": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.physics": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.physics2d": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.screencapture": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.imageconversion": "1.0.0"
+      }
+    },
+    "com.unity.modules.subsystems": {
+      "version": "1.0.0",
+      "depth": 1,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.jsonserialize": "1.0.0"
+      }
+    },
+    "com.unity.modules.terrain": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.terrainphysics": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.physics": "1.0.0",
+        "com.unity.modules.terrain": "1.0.0"
+      }
+    },
+    "com.unity.modules.tilemap": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.physics2d": "1.0.0"
+      }
+    },
+    "com.unity.modules.ui": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.uielements": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.ui": "1.0.0",
+        "com.unity.modules.imgui": "1.0.0",
+        "com.unity.modules.jsonserialize": "1.0.0",
+        "com.unity.modules.uielementsnative": "1.0.0"
+      }
+    },
+    "com.unity.modules.uielementsnative": {
+      "version": "1.0.0",
+      "depth": 1,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.ui": "1.0.0",
+        "com.unity.modules.imgui": "1.0.0",
+        "com.unity.modules.jsonserialize": "1.0.0"
+      }
+    },
+    "com.unity.modules.umbra": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.unityanalytics": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.unitywebrequest": "1.0.0",
+        "com.unity.modules.jsonserialize": "1.0.0"
+      }
+    },
+    "com.unity.modules.unitywebrequest": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.unitywebrequestassetbundle": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.assetbundle": "1.0.0",
+        "com.unity.modules.unitywebrequest": "1.0.0"
+      }
+    },
+    "com.unity.modules.unitywebrequestaudio": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.unitywebrequest": "1.0.0",
+        "com.unity.modules.audio": "1.0.0"
+      }
+    },
+    "com.unity.modules.unitywebrequesttexture": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.unitywebrequest": "1.0.0",
+        "com.unity.modules.imageconversion": "1.0.0"
+      }
+    },
+    "com.unity.modules.unitywebrequestwww": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.unitywebrequest": "1.0.0",
+        "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
+        "com.unity.modules.unitywebrequestaudio": "1.0.0",
+        "com.unity.modules.audio": "1.0.0",
+        "com.unity.modules.assetbundle": "1.0.0",
+        "com.unity.modules.imageconversion": "1.0.0"
+      }
+    },
+    "com.unity.modules.vehicles": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.physics": "1.0.0"
+      }
+    },
+    "com.unity.modules.video": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.audio": "1.0.0",
+        "com.unity.modules.ui": "1.0.0",
+        "com.unity.modules.unitywebrequest": "1.0.0"
+      }
+    },
+    "com.unity.modules.vr": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.jsonserialize": "1.0.0",
+        "com.unity.modules.physics": "1.0.0",
+        "com.unity.modules.xr": "1.0.0"
+      }
+    },
+    "com.unity.modules.wind": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {}
+    },
+    "com.unity.modules.xr": {
+      "version": "1.0.0",
+      "depth": 0,
+      "source": "builtin",
+      "dependencies": {
+        "com.unity.modules.physics": "1.0.0",
+        "com.unity.modules.jsonserialize": "1.0.0",
+        "com.unity.modules.subsystems": "1.0.0"
+      }
+    }
+  }
+}
diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset
new file mode 100644
index 0000000..07ebfb0
--- /dev/null
+++ b/ProjectSettings/AudioManager.asset
@@ -0,0 +1,19 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!11 &1
+AudioManager:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Volume: 1
+  Rolloff Scale: 1
+  Doppler Factor: 1
+  Default Speaker Mode: 2
+  m_SampleRate: 0
+  m_DSPBufferSize: 1024
+  m_VirtualVoiceCount: 512
+  m_RealVoiceCount: 32
+  m_SpatializerPlugin: 
+  m_AmbisonicDecoderPlugin: 
+  m_DisableAudio: 0
+  m_VirtualizeEffects: 1
+  m_RequestedDSPBufferSize: 1024
diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset
new file mode 100644
index 0000000..e7886b2
--- /dev/null
+++ b/ProjectSettings/ClusterInputManager.asset
@@ -0,0 +1,6 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!236 &1
+ClusterInputManager:
+  m_ObjectHideFlags: 0
+  m_Inputs: []
diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset
new file mode 100644
index 0000000..cdc1f3e
--- /dev/null
+++ b/ProjectSettings/DynamicsManager.asset
@@ -0,0 +1,34 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!55 &1
+PhysicsManager:
+  m_ObjectHideFlags: 0
+  serializedVersion: 11
+  m_Gravity: {x: 0, y: -9.81, z: 0}
+  m_DefaultMaterial: {fileID: 0}
+  m_BounceThreshold: 2
+  m_SleepThreshold: 0.005
+  m_DefaultContactOffset: 0.01
+  m_DefaultSolverIterations: 6
+  m_DefaultSolverVelocityIterations: 1
+  m_QueriesHitBackfaces: 0
+  m_QueriesHitTriggers: 1
+  m_EnableAdaptiveForce: 0
+  m_ClothInterCollisionDistance: 0
+  m_ClothInterCollisionStiffness: 0
+  m_ContactsGeneration: 1
+  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+  m_AutoSimulation: 1
+  m_AutoSyncTransforms: 0
+  m_ReuseCollisionCallbacks: 1
+  m_ClothInterCollisionSettingsToggle: 0
+  m_ContactPairsMode: 0
+  m_BroadphaseType: 0
+  m_WorldBounds:
+    m_Center: {x: 0, y: 0, z: 0}
+    m_Extent: {x: 250, y: 250, z: 250}
+  m_WorldSubdivisions: 8
+  m_FrictionType: 0
+  m_EnableEnhancedDeterminism: 0
+  m_EnableUnifiedHeightmaps: 1
+  m_DefaultMaxAngluarSpeed: 7
diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset
new file mode 100644
index 0000000..0147887
--- /dev/null
+++ b/ProjectSettings/EditorBuildSettings.asset
@@ -0,0 +1,8 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1045 &1
+EditorBuildSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Scenes: []
+  m_configObjects: {}
diff --git a/ProjectSettings/EditorSettings.asset b/ProjectSettings/EditorSettings.asset
new file mode 100644
index 0000000..de5d0b2
--- /dev/null
+++ b/ProjectSettings/EditorSettings.asset
@@ -0,0 +1,30 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!159 &1
+EditorSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 11
+  m_ExternalVersionControlSupport: Visible Meta Files
+  m_SerializationMode: 2
+  m_LineEndingsForNewScripts: 0
+  m_DefaultBehaviorMode: 0
+  m_PrefabRegularEnvironment: {fileID: 0}
+  m_PrefabUIEnvironment: {fileID: 0}
+  m_SpritePackerMode: 0
+  m_SpritePackerPaddingPower: 1
+  m_EtcTextureCompressorBehavior: 1
+  m_EtcTextureFastCompressor: 1
+  m_EtcTextureNormalCompressor: 2
+  m_EtcTextureBestCompressor: 4
+  m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
+  m_ProjectGenerationRootNamespace: 
+  m_CollabEditorSettings:
+    inProgressEnabled: 1
+  m_EnableTextureStreamingInEditMode: 1
+  m_EnableTextureStreamingInPlayMode: 1
+  m_AsyncShaderCompilation: 1
+  m_EnterPlayModeOptionsEnabled: 0
+  m_EnterPlayModeOptions: 3
+  m_ShowLightmapResolutionOverlay: 1
+  m_UseLegacyProbeSampleCount: 0
+  m_SerializeInlineMappingsOnOneLine: 1
\ No newline at end of file
diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset
new file mode 100644
index 0000000..43369e3
--- /dev/null
+++ b/ProjectSettings/GraphicsSettings.asset
@@ -0,0 +1,63 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!30 &1
+GraphicsSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 13
+  m_Deferred:
+    m_Mode: 1
+    m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
+  m_DeferredReflections:
+    m_Mode: 1
+    m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
+  m_ScreenSpaceShadows:
+    m_Mode: 1
+    m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
+  m_LegacyDeferred:
+    m_Mode: 1
+    m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
+  m_DepthNormals:
+    m_Mode: 1
+    m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
+  m_MotionVectors:
+    m_Mode: 1
+    m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
+  m_LightHalo:
+    m_Mode: 1
+    m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
+  m_LensFlare:
+    m_Mode: 1
+    m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
+  m_AlwaysIncludedShaders:
+  - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
+  - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
+  - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
+  - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
+  - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
+  - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
+  m_PreloadedShaders: []
+  m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
+    type: 0}
+  m_CustomRenderPipeline: {fileID: 0}
+  m_TransparencySortMode: 0
+  m_TransparencySortAxis: {x: 0, y: 0, z: 1}
+  m_DefaultRenderingPath: 1
+  m_DefaultMobileRenderingPath: 1
+  m_TierSettings: []
+  m_LightmapStripping: 0
+  m_FogStripping: 0
+  m_InstancingStripping: 0
+  m_LightmapKeepPlain: 1
+  m_LightmapKeepDirCombined: 1
+  m_LightmapKeepDynamicPlain: 1
+  m_LightmapKeepDynamicDirCombined: 1
+  m_LightmapKeepShadowMask: 1
+  m_LightmapKeepSubtractive: 1
+  m_FogKeepLinear: 1
+  m_FogKeepExp: 1
+  m_FogKeepExp2: 1
+  m_AlbedoSwatchInfos: []
+  m_LightsUseLinearIntensity: 0
+  m_LightsUseColorTemperature: 0
+  m_LogWhenShaderIsCompiled: 0
+  m_AllowEnlightenSupportForUpgradedProject: 0
diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset
new file mode 100644
index 0000000..17c8f53
--- /dev/null
+++ b/ProjectSettings/InputManager.asset
@@ -0,0 +1,295 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!13 &1
+InputManager:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Axes:
+  - serializedVersion: 3
+    m_Name: Horizontal
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: left
+    positiveButton: right
+    altNegativeButton: a
+    altPositiveButton: d
+    gravity: 3
+    dead: 0.001
+    sensitivity: 3
+    snap: 1
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Vertical
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: down
+    positiveButton: up
+    altNegativeButton: s
+    altPositiveButton: w
+    gravity: 3
+    dead: 0.001
+    sensitivity: 3
+    snap: 1
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Fire1
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: left ctrl
+    altNegativeButton: 
+    altPositiveButton: mouse 0
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Fire2
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: left alt
+    altNegativeButton: 
+    altPositiveButton: mouse 1
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Fire3
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: left shift
+    altNegativeButton: 
+    altPositiveButton: mouse 2
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Jump
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: space
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Mouse X
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 1
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Mouse Y
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 1
+    axis: 1
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Mouse ScrollWheel
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 1
+    axis: 2
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Horizontal
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Vertical
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 1
+    type: 2
+    axis: 1
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Fire1
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 0
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Fire2
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 1
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Fire3
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 2
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Jump
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 3
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Submit
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: return
+    altNegativeButton: 
+    altPositiveButton: joystick button 0
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Submit
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: enter
+    altNegativeButton: 
+    altPositiveButton: space
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: Cancel
+    descriptiveName: 
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: escape
+    altNegativeButton: 
+    altPositiveButton: joystick button 1
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset
new file mode 100644
index 0000000..3b0b7c3
--- /dev/null
+++ b/ProjectSettings/NavMeshAreas.asset
@@ -0,0 +1,91 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!126 &1
+NavMeshProjectSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  areas:
+  - name: Walkable
+    cost: 1
+  - name: Not Walkable
+    cost: 1
+  - name: Jump
+    cost: 2
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  - name: 
+    cost: 1
+  m_LastAgentTypeID: -887442657
+  m_Settings:
+  - serializedVersion: 2
+    agentTypeID: 0
+    agentRadius: 0.5
+    agentHeight: 2
+    agentSlope: 45
+    agentClimb: 0.75
+    ledgeDropHeight: 0
+    maxJumpAcrossDistance: 0
+    minRegionArea: 2
+    manualCellSize: 0
+    cellSize: 0.16666667
+    manualTileSize: 0
+    tileSize: 256
+    accuratePlacement: 0
+    debug:
+      m_Flags: 0
+  m_SettingNames:
+  - Humanoid
diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset
new file mode 100644
index 0000000..be4a797
--- /dev/null
+++ b/ProjectSettings/PackageManagerSettings.asset
@@ -0,0 +1,43 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &1
+MonoBehaviour:
+  m_ObjectHideFlags: 61
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_EnablePreviewPackages: 0
+  m_EnablePackageDependencies: 0
+  m_AdvancedSettingsExpanded: 1
+  m_ScopedRegistriesSettingsExpanded: 1
+  oneTimeWarningShown: 0
+  m_Registries:
+  - m_Id: main
+    m_Name: 
+    m_Url: https://packages.unity.com
+    m_Scopes: []
+    m_IsDefault: 1
+    m_Capabilities: 7
+  m_UserSelectedRegistryName: 
+  m_UserAddingNewScopedRegistry: 0
+  m_RegistryInfoDraft:
+    m_ErrorMessage: 
+    m_Original:
+      m_Id: 
+      m_Name: 
+      m_Url: 
+      m_Scopes: []
+      m_IsDefault: 0
+      m_Capabilities: 0
+    m_Modified: 0
+    m_Name: 
+    m_Url: 
+    m_Scopes:
+    - 
+    m_SelectedScopeIndex: 0
diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset
new file mode 100644
index 0000000..47880b1
--- /dev/null
+++ b/ProjectSettings/Physics2DSettings.asset
@@ -0,0 +1,56 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!19 &1
+Physics2DSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 4
+  m_Gravity: {x: 0, y: -9.81}
+  m_DefaultMaterial: {fileID: 0}
+  m_VelocityIterations: 8
+  m_PositionIterations: 3
+  m_VelocityThreshold: 1
+  m_MaxLinearCorrection: 0.2
+  m_MaxAngularCorrection: 8
+  m_MaxTranslationSpeed: 100
+  m_MaxRotationSpeed: 360
+  m_BaumgarteScale: 0.2
+  m_BaumgarteTimeOfImpactScale: 0.75
+  m_TimeToSleep: 0.5
+  m_LinearSleepTolerance: 0.01
+  m_AngularSleepTolerance: 2
+  m_DefaultContactOffset: 0.01
+  m_JobOptions:
+    serializedVersion: 2
+    useMultithreading: 0
+    useConsistencySorting: 0
+    m_InterpolationPosesPerJob: 100
+    m_NewContactsPerJob: 30
+    m_CollideContactsPerJob: 100
+    m_ClearFlagsPerJob: 200
+    m_ClearBodyForcesPerJob: 200
+    m_SyncDiscreteFixturesPerJob: 50
+    m_SyncContinuousFixturesPerJob: 50
+    m_FindNearestContactsPerJob: 100
+    m_UpdateTriggerContactsPerJob: 100
+    m_IslandSolverCostThreshold: 100
+    m_IslandSolverBodyCostScale: 1
+    m_IslandSolverContactCostScale: 10
+    m_IslandSolverJointCostScale: 10
+    m_IslandSolverBodiesPerJob: 50
+    m_IslandSolverContactsPerJob: 50
+  m_AutoSimulation: 1
+  m_QueriesHitTriggers: 1
+  m_QueriesStartInColliders: 1
+  m_CallbacksOnDisable: 1
+  m_ReuseCollisionCallbacks: 1
+  m_AutoSyncTransforms: 0
+  m_AlwaysShowColliders: 0
+  m_ShowColliderSleep: 1
+  m_ShowColliderContacts: 0
+  m_ShowColliderAABB: 0
+  m_ContactArrowScale: 0.2
+  m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
+  m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
+  m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
+  m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
+  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
diff --git a/ProjectSettings/PresetManager.asset b/ProjectSettings/PresetManager.asset
new file mode 100644
index 0000000..67a94da
--- /dev/null
+++ b/ProjectSettings/PresetManager.asset
@@ -0,0 +1,7 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1386491679 &1
+PresetManager:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_DefaultPresets: {}
diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset
new file mode 100644
index 0000000..1a6cdc7
--- /dev/null
+++ b/ProjectSettings/ProjectSettings.asset
@@ -0,0 +1,677 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!129 &1
+PlayerSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 22
+  productGUID: 50a00edc2356b084d9323d73731eb9e1
+  AndroidProfiler: 0
+  AndroidFilterTouchesWhenObscured: 0
+  AndroidEnableSustainedPerformanceMode: 0
+  defaultScreenOrientation: 4
+  targetDevice: 2
+  useOnDemandResources: 0
+  accelerometerFrequency: 60
+  companyName: DefaultCompany
+  productName: My project
+  defaultCursor: {fileID: 0}
+  cursorHotspot: {x: 0, y: 0}
+  m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
+  m_ShowUnitySplashScreen: 1
+  m_ShowUnitySplashLogo: 1
+  m_SplashScreenOverlayOpacity: 1
+  m_SplashScreenAnimation: 1
+  m_SplashScreenLogoStyle: 1
+  m_SplashScreenDrawMode: 0
+  m_SplashScreenBackgroundAnimationZoom: 1
+  m_SplashScreenLogoAnimationZoom: 1
+  m_SplashScreenBackgroundLandscapeAspect: 1
+  m_SplashScreenBackgroundPortraitAspect: 1
+  m_SplashScreenBackgroundLandscapeUvs:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  m_SplashScreenBackgroundPortraitUvs:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+  m_SplashScreenLogos: []
+  m_VirtualRealitySplashScreen: {fileID: 0}
+  m_HolographicTrackingLossScreen: {fileID: 0}
+  defaultScreenWidth: 1024
+  defaultScreenHeight: 768
+  defaultScreenWidthWeb: 960
+  defaultScreenHeightWeb: 600
+  m_StereoRenderingPath: 0
+  m_ActiveColorSpace: 0
+  m_MTRendering: 1
+  mipStripping: 0
+  numberOfMipsStripped: 0
+  m_StackTraceTypes: 010000000100000001000000010000000100000001000000
+  iosShowActivityIndicatorOnLoading: -1
+  androidShowActivityIndicatorOnLoading: -1
+  iosUseCustomAppBackgroundBehavior: 0
+  iosAllowHTTPDownload: 1
+  allowedAutorotateToPortrait: 1
+  allowedAutorotateToPortraitUpsideDown: 1
+  allowedAutorotateToLandscapeRight: 1
+  allowedAutorotateToLandscapeLeft: 1
+  useOSAutorotation: 1
+  use32BitDisplayBuffer: 1
+  preserveFramebufferAlpha: 0
+  disableDepthAndStencilBuffers: 0
+  androidStartInFullscreen: 1
+  androidRenderOutsideSafeArea: 1
+  androidUseSwappy: 1
+  androidBlitType: 0
+  defaultIsNativeResolution: 1
+  macRetinaSupport: 1
+  runInBackground: 1
+  captureSingleScreen: 0
+  muteOtherAudioSources: 0
+  Prepare IOS For Recording: 0
+  Force IOS Speakers When Recording: 0
+  deferSystemGesturesMode: 0
+  hideHomeButton: 0
+  submitAnalytics: 1
+  usePlayerLog: 1
+  bakeCollisionMeshes: 0
+  forceSingleInstance: 0
+  useFlipModelSwapchain: 1
+  resizableWindow: 0
+  useMacAppStoreValidation: 0
+  macAppStoreCategory: public.app-category.games
+  gpuSkinning: 1
+  xboxPIXTextureCapture: 0
+  xboxEnableAvatar: 0
+  xboxEnableKinect: 0
+  xboxEnableKinectAutoTracking: 0
+  xboxEnableFitness: 0
+  visibleInBackground: 1
+  allowFullscreenSwitch: 1
+  fullscreenMode: 1
+  xboxSpeechDB: 0
+  xboxEnableHeadOrientation: 0
+  xboxEnableGuest: 0
+  xboxEnablePIXSampling: 0
+  metalFramebufferOnly: 0
+  xboxOneResolution: 0
+  xboxOneSResolution: 0
+  xboxOneXResolution: 3
+  xboxOneMonoLoggingLevel: 0
+  xboxOneLoggingLevel: 1
+  xboxOneDisableEsram: 0
+  xboxOneEnableTypeOptimization: 0
+  xboxOnePresentImmediateThreshold: 0
+  switchQueueCommandMemory: 0
+  switchQueueControlMemory: 16384
+  switchQueueComputeMemory: 262144
+  switchNVNShaderPoolsGranularity: 33554432
+  switchNVNDefaultPoolsGranularity: 16777216
+  switchNVNOtherPoolsGranularity: 16777216
+  switchNVNMaxPublicTextureIDCount: 0
+  switchNVNMaxPublicSamplerIDCount: 0
+  stadiaPresentMode: 0
+  stadiaTargetFramerate: 0
+  vulkanNumSwapchainBuffers: 3
+  vulkanEnableSetSRGBWrite: 0
+  vulkanEnablePreTransform: 0
+  vulkanEnableLateAcquireNextImage: 0
+  m_SupportedAspectRatios:
+    4:3: 1
+    5:4: 1
+    16:10: 1
+    16:9: 1
+    Others: 1
+  bundleVersion: 0.1
+  preloadedAssets: []
+  metroInputSource: 0
+  wsaTransparentSwapchain: 0
+  m_HolographicPauseOnTrackingLoss: 1
+  xboxOneDisableKinectGpuReservation: 1
+  xboxOneEnable7thCore: 1
+  vrSettings:
+    enable360StereoCapture: 0
+  isWsaHolographicRemotingEnabled: 0
+  enableFrameTimingStats: 0
+  useHDRDisplay: 0
+  D3DHDRBitDepth: 0
+  m_ColorGamuts: 00000000
+  targetPixelDensity: 30
+  resolutionScalingMode: 0
+  androidSupportedAspectRatio: 1
+  androidMaxAspectRatio: 2.1
+  applicationIdentifier: {}
+  buildNumber:
+    Standalone: 0
+    iPhone: 0
+    tvOS: 0
+  overrideDefaultApplicationIdentifier: 0
+  AndroidBundleVersionCode: 1
+  AndroidMinSdkVersion: 19
+  AndroidTargetSdkVersion: 0
+  AndroidPreferredInstallLocation: 1
+  aotOptions: 
+  stripEngineCode: 1
+  iPhoneStrippingLevel: 0
+  iPhoneScriptCallOptimization: 0
+  ForceInternetPermission: 0
+  ForceSDCardPermission: 0
+  CreateWallpaper: 0
+  APKExpansionFiles: 0
+  keepLoadedShadersAlive: 0
+  StripUnusedMeshComponents: 1
+  VertexChannelCompressionMask: 4054
+  iPhoneSdkVersion: 988
+  iOSTargetOSVersionString: 11.0
+  tvOSSdkVersion: 0
+  tvOSRequireExtendedGameController: 0
+  tvOSTargetOSVersionString: 11.0
+  uIPrerenderedIcon: 0
+  uIRequiresPersistentWiFi: 0
+  uIRequiresFullScreen: 1
+  uIStatusBarHidden: 1
+  uIExitOnSuspend: 0
+  uIStatusBarStyle: 0
+  appleTVSplashScreen: {fileID: 0}
+  appleTVSplashScreen2x: {fileID: 0}
+  tvOSSmallIconLayers: []
+  tvOSSmallIconLayers2x: []
+  tvOSLargeIconLayers: []
+  tvOSLargeIconLayers2x: []
+  tvOSTopShelfImageLayers: []
+  tvOSTopShelfImageLayers2x: []
+  tvOSTopShelfImageWideLayers: []
+  tvOSTopShelfImageWideLayers2x: []
+  iOSLaunchScreenType: 0
+  iOSLaunchScreenPortrait: {fileID: 0}
+  iOSLaunchScreenLandscape: {fileID: 0}
+  iOSLaunchScreenBackgroundColor:
+    serializedVersion: 2
+    rgba: 0
+  iOSLaunchScreenFillPct: 100
+  iOSLaunchScreenSize: 100
+  iOSLaunchScreenCustomXibPath: 
+  iOSLaunchScreeniPadType: 0
+  iOSLaunchScreeniPadImage: {fileID: 0}
+  iOSLaunchScreeniPadBackgroundColor:
+    serializedVersion: 2
+    rgba: 0
+  iOSLaunchScreeniPadFillPct: 100
+  iOSLaunchScreeniPadSize: 100
+  iOSLaunchScreeniPadCustomXibPath: 
+  iOSLaunchScreenCustomStoryboardPath: 
+  iOSLaunchScreeniPadCustomStoryboardPath: 
+  iOSDeviceRequirements: []
+  iOSURLSchemes: []
+  iOSBackgroundModes: 0
+  iOSMetalForceHardShadows: 0
+  metalEditorSupport: 1
+  metalAPIValidation: 1
+  iOSRenderExtraFrameOnPause: 0
+  iosCopyPluginsCodeInsteadOfSymlink: 0
+  appleDeveloperTeamID: 
+  iOSManualSigningProvisioningProfileID: 
+  tvOSManualSigningProvisioningProfileID: 
+  iOSManualSigningProvisioningProfileType: 0
+  tvOSManualSigningProvisioningProfileType: 0
+  appleEnableAutomaticSigning: 0
+  iOSRequireARKit: 0
+  iOSAutomaticallyDetectAndAddCapabilities: 1
+  appleEnableProMotion: 0
+  shaderPrecisionModel: 0
+  clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
+  templatePackageId: com.unity.template.3d@5.0.4
+  templateDefaultScene: Assets/Scenes/SampleScene.unity
+  useCustomMainManifest: 0
+  useCustomLauncherManifest: 0
+  useCustomMainGradleTemplate: 0
+  useCustomLauncherGradleManifest: 0
+  useCustomBaseGradleTemplate: 0
+  useCustomGradlePropertiesTemplate: 0
+  useCustomProguardFile: 0
+  AndroidTargetArchitectures: 1
+  AndroidSplashScreenScale: 0
+  androidSplashScreen: {fileID: 0}
+  AndroidKeystoreName: 
+  AndroidKeyaliasName: 
+  AndroidBuildApkPerCpuArchitecture: 0
+  AndroidTVCompatibility: 0
+  AndroidIsGame: 1
+  AndroidEnableTango: 0
+  androidEnableBanner: 1
+  androidUseLowAccuracyLocation: 0
+  androidUseCustomKeystore: 0
+  m_AndroidBanners:
+  - width: 320
+    height: 180
+    banner: {fileID: 0}
+  androidGamepadSupportLevel: 0
+  AndroidMinifyWithR8: 0
+  AndroidMinifyRelease: 0
+  AndroidMinifyDebug: 0
+  AndroidValidateAppBundleSize: 1
+  AndroidAppBundleSizeToValidate: 150
+  m_BuildTargetIcons: []
+  m_BuildTargetPlatformIcons: []
+  m_BuildTargetBatching:
+  - m_BuildTarget: Standalone
+    m_StaticBatching: 1
+    m_DynamicBatching: 0
+  - m_BuildTarget: tvOS
+    m_StaticBatching: 1
+    m_DynamicBatching: 0
+  - m_BuildTarget: Android
+    m_StaticBatching: 1
+    m_DynamicBatching: 0
+  - m_BuildTarget: iPhone
+    m_StaticBatching: 1
+    m_DynamicBatching: 0
+  - m_BuildTarget: WebGL
+    m_StaticBatching: 0
+    m_DynamicBatching: 0
+  m_BuildTargetGraphicsJobs:
+  - m_BuildTarget: MacStandaloneSupport
+    m_GraphicsJobs: 0
+  - m_BuildTarget: Switch
+    m_GraphicsJobs: 1
+  - m_BuildTarget: MetroSupport
+    m_GraphicsJobs: 1
+  - m_BuildTarget: AppleTVSupport
+    m_GraphicsJobs: 0
+  - m_BuildTarget: BJMSupport
+    m_GraphicsJobs: 1
+  - m_BuildTarget: LinuxStandaloneSupport
+    m_GraphicsJobs: 1
+  - m_BuildTarget: PS4Player
+    m_GraphicsJobs: 1
+  - m_BuildTarget: iOSSupport
+    m_GraphicsJobs: 0
+  - m_BuildTarget: WindowsStandaloneSupport
+    m_GraphicsJobs: 1
+  - m_BuildTarget: XboxOnePlayer
+    m_GraphicsJobs: 1
+  - m_BuildTarget: LuminSupport
+    m_GraphicsJobs: 0
+  - m_BuildTarget: AndroidPlayer
+    m_GraphicsJobs: 0
+  - m_BuildTarget: WebGLSupport
+    m_GraphicsJobs: 0
+  m_BuildTargetGraphicsJobMode:
+  - m_BuildTarget: PS4Player
+    m_GraphicsJobMode: 0
+  - m_BuildTarget: XboxOnePlayer
+    m_GraphicsJobMode: 0
+  m_BuildTargetGraphicsAPIs:
+  - m_BuildTarget: AndroidPlayer
+    m_APIs: 150000000b000000
+    m_Automatic: 0
+  - m_BuildTarget: iOSSupport
+    m_APIs: 10000000
+    m_Automatic: 1
+  - m_BuildTarget: AppleTVSupport
+    m_APIs: 10000000
+    m_Automatic: 1
+  - m_BuildTarget: WebGLSupport
+    m_APIs: 0b000000
+    m_Automatic: 1
+  m_BuildTargetVRSettings:
+  - m_BuildTarget: Standalone
+    m_Enabled: 0
+    m_Devices:
+    - Oculus
+    - OpenVR
+  openGLRequireES31: 0
+  openGLRequireES31AEP: 0
+  openGLRequireES32: 0
+  m_TemplateCustomTags: {}
+  mobileMTRendering:
+    Android: 1
+    iPhone: 1
+    tvOS: 1
+  m_BuildTargetGroupLightmapEncodingQuality: []
+  m_BuildTargetGroupLightmapSettings: []
+  m_BuildTargetNormalMapEncoding: []
+  playModeTestRunnerEnabled: 0
+  runPlayModeTestAsEditModeTest: 0
+  actionOnDotNetUnhandledException: 1
+  enableInternalProfiler: 0
+  logObjCUncaughtExceptions: 1
+  enableCrashReportAPI: 0
+  cameraUsageDescription: 
+  locationUsageDescription: 
+  microphoneUsageDescription: 
+  switchNMETAOverride: 
+  switchNetLibKey: 
+  switchSocketMemoryPoolSize: 6144
+  switchSocketAllocatorPoolSize: 128
+  switchSocketConcurrencyLimit: 14
+  switchScreenResolutionBehavior: 2
+  switchUseCPUProfiler: 0
+  switchUseGOLDLinker: 0
+  switchApplicationID: 0x01004b9000490000
+  switchNSODependencies: 
+  switchTitleNames_0: 
+  switchTitleNames_1: 
+  switchTitleNames_2: 
+  switchTitleNames_3: 
+  switchTitleNames_4: 
+  switchTitleNames_5: 
+  switchTitleNames_6: 
+  switchTitleNames_7: 
+  switchTitleNames_8: 
+  switchTitleNames_9: 
+  switchTitleNames_10: 
+  switchTitleNames_11: 
+  switchTitleNames_12: 
+  switchTitleNames_13: 
+  switchTitleNames_14: 
+  switchTitleNames_15: 
+  switchPublisherNames_0: 
+  switchPublisherNames_1: 
+  switchPublisherNames_2: 
+  switchPublisherNames_3: 
+  switchPublisherNames_4: 
+  switchPublisherNames_5: 
+  switchPublisherNames_6: 
+  switchPublisherNames_7: 
+  switchPublisherNames_8: 
+  switchPublisherNames_9: 
+  switchPublisherNames_10: 
+  switchPublisherNames_11: 
+  switchPublisherNames_12: 
+  switchPublisherNames_13: 
+  switchPublisherNames_14: 
+  switchPublisherNames_15: 
+  switchIcons_0: {fileID: 0}
+  switchIcons_1: {fileID: 0}
+  switchIcons_2: {fileID: 0}
+  switchIcons_3: {fileID: 0}
+  switchIcons_4: {fileID: 0}
+  switchIcons_5: {fileID: 0}
+  switchIcons_6: {fileID: 0}
+  switchIcons_7: {fileID: 0}
+  switchIcons_8: {fileID: 0}
+  switchIcons_9: {fileID: 0}
+  switchIcons_10: {fileID: 0}
+  switchIcons_11: {fileID: 0}
+  switchIcons_12: {fileID: 0}
+  switchIcons_13: {fileID: 0}
+  switchIcons_14: {fileID: 0}
+  switchIcons_15: {fileID: 0}
+  switchSmallIcons_0: {fileID: 0}
+  switchSmallIcons_1: {fileID: 0}
+  switchSmallIcons_2: {fileID: 0}
+  switchSmallIcons_3: {fileID: 0}
+  switchSmallIcons_4: {fileID: 0}
+  switchSmallIcons_5: {fileID: 0}
+  switchSmallIcons_6: {fileID: 0}
+  switchSmallIcons_7: {fileID: 0}
+  switchSmallIcons_8: {fileID: 0}
+  switchSmallIcons_9: {fileID: 0}
+  switchSmallIcons_10: {fileID: 0}
+  switchSmallIcons_11: {fileID: 0}
+  switchSmallIcons_12: {fileID: 0}
+  switchSmallIcons_13: {fileID: 0}
+  switchSmallIcons_14: {fileID: 0}
+  switchSmallIcons_15: {fileID: 0}
+  switchManualHTML: 
+  switchAccessibleURLs: 
+  switchLegalInformation: 
+  switchMainThreadStackSize: 1048576
+  switchPresenceGroupId: 
+  switchLogoHandling: 0
+  switchReleaseVersion: 0
+  switchDisplayVersion: 1.0.0
+  switchStartupUserAccount: 0
+  switchTouchScreenUsage: 0
+  switchSupportedLanguagesMask: 0
+  switchLogoType: 0
+  switchApplicationErrorCodeCategory: 
+  switchUserAccountSaveDataSize: 0
+  switchUserAccountSaveDataJournalSize: 0
+  switchApplicationAttribute: 0
+  switchCardSpecSize: -1
+  switchCardSpecClock: -1
+  switchRatingsMask: 0
+  switchRatingsInt_0: 0
+  switchRatingsInt_1: 0
+  switchRatingsInt_2: 0
+  switchRatingsInt_3: 0
+  switchRatingsInt_4: 0
+  switchRatingsInt_5: 0
+  switchRatingsInt_6: 0
+  switchRatingsInt_7: 0
+  switchRatingsInt_8: 0
+  switchRatingsInt_9: 0
+  switchRatingsInt_10: 0
+  switchRatingsInt_11: 0
+  switchRatingsInt_12: 0
+  switchLocalCommunicationIds_0: 
+  switchLocalCommunicationIds_1: 
+  switchLocalCommunicationIds_2: 
+  switchLocalCommunicationIds_3: 
+  switchLocalCommunicationIds_4: 
+  switchLocalCommunicationIds_5: 
+  switchLocalCommunicationIds_6: 
+  switchLocalCommunicationIds_7: 
+  switchParentalControl: 0
+  switchAllowsScreenshot: 1
+  switchAllowsVideoCapturing: 1
+  switchAllowsRuntimeAddOnContentInstall: 0
+  switchDataLossConfirmation: 0
+  switchUserAccountLockEnabled: 0
+  switchSystemResourceMemory: 16777216
+  switchSupportedNpadStyles: 22
+  switchNativeFsCacheSize: 32
+  switchIsHoldTypeHorizontal: 0
+  switchSupportedNpadCount: 8
+  switchSocketConfigEnabled: 0
+  switchTcpInitialSendBufferSize: 32
+  switchTcpInitialReceiveBufferSize: 64
+  switchTcpAutoSendBufferSizeMax: 256
+  switchTcpAutoReceiveBufferSizeMax: 256
+  switchUdpSendBufferSize: 9
+  switchUdpReceiveBufferSize: 42
+  switchSocketBufferEfficiency: 4
+  switchSocketInitializeEnabled: 1
+  switchNetworkInterfaceManagerInitializeEnabled: 1
+  switchPlayerConnectionEnabled: 1
+  switchUseNewStyleFilepaths: 0
+  switchUseMicroSleepForYield: 1
+  switchMicroSleepForYieldTime: 25
+  ps4NPAgeRating: 12
+  ps4NPTitleSecret: 
+  ps4NPTrophyPackPath: 
+  ps4ParentalLevel: 11
+  ps4ContentID: ED1633-NPXX51362_00-0000000000000000
+  ps4Category: 0
+  ps4MasterVersion: 01.00
+  ps4AppVersion: 01.00
+  ps4AppType: 0
+  ps4ParamSfxPath: 
+  ps4VideoOutPixelFormat: 0
+  ps4VideoOutInitialWidth: 1920
+  ps4VideoOutBaseModeInitialWidth: 1920
+  ps4VideoOutReprojectionRate: 60
+  ps4PronunciationXMLPath: 
+  ps4PronunciationSIGPath: 
+  ps4BackgroundImagePath: 
+  ps4StartupImagePath: 
+  ps4StartupImagesFolder: 
+  ps4IconImagesFolder: 
+  ps4SaveDataImagePath: 
+  ps4SdkOverride: 
+  ps4BGMPath: 
+  ps4ShareFilePath: 
+  ps4ShareOverlayImagePath: 
+  ps4PrivacyGuardImagePath: 
+  ps4ExtraSceSysFile: 
+  ps4NPtitleDatPath: 
+  ps4RemotePlayKeyAssignment: -1
+  ps4RemotePlayKeyMappingDir: 
+  ps4PlayTogetherPlayerCount: 0
+  ps4EnterButtonAssignment: 1
+  ps4ApplicationParam1: 0
+  ps4ApplicationParam2: 0
+  ps4ApplicationParam3: 0
+  ps4ApplicationParam4: 0
+  ps4DownloadDataSize: 0
+  ps4GarlicHeapSize: 2048
+  ps4ProGarlicHeapSize: 2560
+  playerPrefsMaxSize: 32768
+  ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
+  ps4pnSessions: 1
+  ps4pnPresence: 1
+  ps4pnFriends: 1
+  ps4pnGameCustomData: 1
+  playerPrefsSupport: 0
+  enableApplicationExit: 0
+  resetTempFolder: 1
+  restrictedAudioUsageRights: 0
+  ps4UseResolutionFallback: 0
+  ps4ReprojectionSupport: 0
+  ps4UseAudio3dBackend: 0
+  ps4UseLowGarlicFragmentationMode: 1
+  ps4SocialScreenEnabled: 0
+  ps4ScriptOptimizationLevel: 0
+  ps4Audio3dVirtualSpeakerCount: 14
+  ps4attribCpuUsage: 0
+  ps4PatchPkgPath: 
+  ps4PatchLatestPkgPath: 
+  ps4PatchChangeinfoPath: 
+  ps4PatchDayOne: 0
+  ps4attribUserManagement: 0
+  ps4attribMoveSupport: 0
+  ps4attrib3DSupport: 0
+  ps4attribShareSupport: 0
+  ps4attribExclusiveVR: 0
+  ps4disableAutoHideSplash: 0
+  ps4videoRecordingFeaturesUsed: 0
+  ps4contentSearchFeaturesUsed: 0
+  ps4CompatibilityPS5: 0
+  ps4GPU800MHz: 1
+  ps4attribEyeToEyeDistanceSettingVR: 0
+  ps4IncludedModules: []
+  ps4attribVROutputEnabled: 0
+  monoEnv: 
+  splashScreenBackgroundSourceLandscape: {fileID: 0}
+  splashScreenBackgroundSourcePortrait: {fileID: 0}
+  blurSplashScreenBackground: 1
+  spritePackerPolicy: 
+  webGLMemorySize: 16
+  webGLExceptionSupport: 1
+  webGLNameFilesAsHashes: 0
+  webGLDataCaching: 1
+  webGLDebugSymbols: 0
+  webGLEmscriptenArgs: 
+  webGLModulesDirectory: 
+  webGLTemplate: APPLICATION:Default
+  webGLAnalyzeBuildSize: 0
+  webGLUseEmbeddedResources: 0
+  webGLCompressionFormat: 1
+  webGLWasmArithmeticExceptions: 0
+  webGLLinkerTarget: 1
+  webGLThreadsSupport: 0
+  webGLDecompressionFallback: 0
+  scriptingDefineSymbols: {}
+  additionalCompilerArguments: {}
+  platformArchitecture: {}
+  scriptingBackend: {}
+  il2cppCompilerConfiguration: {}
+  managedStrippingLevel: {}
+  incrementalIl2cppBuild: {}
+  suppressCommonWarnings: 1
+  allowUnsafeCode: 0
+  useDeterministicCompilation: 1
+  useReferenceAssemblies: 1
+  enableRoslynAnalyzers: 1
+  additionalIl2CppArgs: 
+  scriptingRuntimeVersion: 1
+  gcIncremental: 1
+  assemblyVersionValidation: 1
+  gcWBarrierValidation: 0
+  apiCompatibilityLevelPerPlatform: {}
+  m_RenderingPath: 1
+  m_MobileRenderingPath: 1
+  metroPackageName: Template_3D
+  metroPackageVersion: 
+  metroCertificatePath: 
+  metroCertificatePassword: 
+  metroCertificateSubject: 
+  metroCertificateIssuer: 
+  metroCertificateNotAfter: 0000000000000000
+  metroApplicationDescription: Template_3D
+  wsaImages: {}
+  metroTileShortName: 
+  metroTileShowName: 0
+  metroMediumTileShowName: 0
+  metroLargeTileShowName: 0
+  metroWideTileShowName: 0
+  metroSupportStreamingInstall: 0
+  metroLastRequiredScene: 0
+  metroDefaultTileSize: 1
+  metroTileForegroundText: 2
+  metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
+  metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
+  metroSplashScreenUseBackgroundColor: 0
+  platformCapabilities: {}
+  metroTargetDeviceFamilies: {}
+  metroFTAName: 
+  metroFTAFileTypes: []
+  metroProtocolName: 
+  XboxOneProductId: 
+  XboxOneUpdateKey: 
+  XboxOneSandboxId: 
+  XboxOneContentId: 
+  XboxOneTitleId: 
+  XboxOneSCId: 
+  XboxOneGameOsOverridePath: 
+  XboxOnePackagingOverridePath: 
+  XboxOneAppManifestOverridePath: 
+  XboxOneVersion: 1.0.0.0
+  XboxOnePackageEncryption: 0
+  XboxOnePackageUpdateGranularity: 2
+  XboxOneDescription: 
+  XboxOneLanguage:
+  - enus
+  XboxOneCapability: []
+  XboxOneGameRating: {}
+  XboxOneIsContentPackage: 0
+  XboxOneEnhancedXboxCompatibilityMode: 0
+  XboxOneEnableGPUVariability: 1
+  XboxOneSockets: {}
+  XboxOneSplashScreen: {fileID: 0}
+  XboxOneAllowedProductIds: []
+  XboxOnePersistentLocalStorageSize: 0
+  XboxOneXTitleMemory: 8
+  XboxOneOverrideIdentityName: 
+  XboxOneOverrideIdentityPublisher: 
+  vrEditorSettings: {}
+  cloudServicesEnabled:
+    UNet: 1
+  luminIcon:
+    m_Name: 
+    m_ModelFolderPath: 
+    m_PortalFolderPath: 
+  luminCert:
+    m_CertPath: 
+    m_SignPackage: 1
+  luminIsChannelApp: 0
+  luminVersion:
+    m_VersionCode: 1
+    m_VersionName: 
+  apiCompatibilityLevel: 6
+  activeInputHandler: 0
+  cloudProjectId: 
+  framebufferDepthMemorylessMode: 0
+  qualitySettingsNames: []
+  projectName: 
+  organizationId: 
+  cloudEnabled: 0
+  legacyClampBlendShapeWeights: 0
+  virtualTexturingSupportEnabled: 0
diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt
new file mode 100644
index 0000000..8c1bcbd
--- /dev/null
+++ b/ProjectSettings/ProjectVersion.txt
@@ -0,0 +1,2 @@
+m_EditorVersion: 2020.3.7f1
+m_EditorVersionWithRevision: 2020.3.7f1 (dd97f2c94397)
diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset
new file mode 100644
index 0000000..7b7658d
--- /dev/null
+++ b/ProjectSettings/QualitySettings.asset
@@ -0,0 +1,232 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!47 &1
+QualitySettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 5
+  m_CurrentQuality: 5
+  m_QualitySettings:
+  - serializedVersion: 2
+    name: Very Low
+    pixelLightCount: 0
+    shadows: 0
+    shadowResolution: 0
+    shadowProjection: 1
+    shadowCascades: 1
+    shadowDistance: 15
+    shadowNearPlaneOffset: 3
+    shadowCascade2Split: 0.33333334
+    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 0
+    blendWeights: 1
+    textureQuality: 1
+    anisotropicTextures: 0
+    antiAliasing: 0
+    softParticles: 0
+    softVegetation: 0
+    realtimeReflectionProbes: 0
+    billboardsFaceCameraPosition: 0
+    vSyncCount: 0
+    lodBias: 0.3
+    maximumLODLevel: 0
+    streamingMipmapsActive: 0
+    streamingMipmapsAddAllCameras: 1
+    streamingMipmapsMemoryBudget: 512
+    streamingMipmapsRenderersPerFrame: 512
+    streamingMipmapsMaxLevelReduction: 2
+    streamingMipmapsMaxFileIORequests: 1024
+    particleRaycastBudget: 4
+    asyncUploadTimeSlice: 2
+    asyncUploadBufferSize: 16
+    asyncUploadPersistentBuffer: 1
+    resolutionScalingFixedDPIFactor: 1
+    excludedTargetPlatforms: []
+  - serializedVersion: 2
+    name: Low
+    pixelLightCount: 0
+    shadows: 0
+    shadowResolution: 0
+    shadowProjection: 1
+    shadowCascades: 1
+    shadowDistance: 20
+    shadowNearPlaneOffset: 3
+    shadowCascade2Split: 0.33333334
+    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 0
+    blendWeights: 2
+    textureQuality: 0
+    anisotropicTextures: 0
+    antiAliasing: 0
+    softParticles: 0
+    softVegetation: 0
+    realtimeReflectionProbes: 0
+    billboardsFaceCameraPosition: 0
+    vSyncCount: 0
+    lodBias: 0.4
+    maximumLODLevel: 0
+    streamingMipmapsActive: 0
+    streamingMipmapsAddAllCameras: 1
+    streamingMipmapsMemoryBudget: 512
+    streamingMipmapsRenderersPerFrame: 512
+    streamingMipmapsMaxLevelReduction: 2
+    streamingMipmapsMaxFileIORequests: 1024
+    particleRaycastBudget: 16
+    asyncUploadTimeSlice: 2
+    asyncUploadBufferSize: 16
+    asyncUploadPersistentBuffer: 1
+    resolutionScalingFixedDPIFactor: 1
+    excludedTargetPlatforms: []
+  - serializedVersion: 2
+    name: Medium
+    pixelLightCount: 1
+    shadows: 1
+    shadowResolution: 0
+    shadowProjection: 1
+    shadowCascades: 1
+    shadowDistance: 20
+    shadowNearPlaneOffset: 3
+    shadowCascade2Split: 0.33333334
+    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 0
+    blendWeights: 2
+    textureQuality: 0
+    anisotropicTextures: 1
+    antiAliasing: 0
+    softParticles: 0
+    softVegetation: 0
+    realtimeReflectionProbes: 0
+    billboardsFaceCameraPosition: 0
+    vSyncCount: 1
+    lodBias: 0.7
+    maximumLODLevel: 0
+    streamingMipmapsActive: 0
+    streamingMipmapsAddAllCameras: 1
+    streamingMipmapsMemoryBudget: 512
+    streamingMipmapsRenderersPerFrame: 512
+    streamingMipmapsMaxLevelReduction: 2
+    streamingMipmapsMaxFileIORequests: 1024
+    particleRaycastBudget: 64
+    asyncUploadTimeSlice: 2
+    asyncUploadBufferSize: 16
+    asyncUploadPersistentBuffer: 1
+    resolutionScalingFixedDPIFactor: 1
+    excludedTargetPlatforms: []
+  - serializedVersion: 2
+    name: High
+    pixelLightCount: 2
+    shadows: 2
+    shadowResolution: 1
+    shadowProjection: 1
+    shadowCascades: 2
+    shadowDistance: 40
+    shadowNearPlaneOffset: 3
+    shadowCascade2Split: 0.33333334
+    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 1
+    blendWeights: 2
+    textureQuality: 0
+    anisotropicTextures: 1
+    antiAliasing: 0
+    softParticles: 0
+    softVegetation: 1
+    realtimeReflectionProbes: 1
+    billboardsFaceCameraPosition: 1
+    vSyncCount: 1
+    lodBias: 1
+    maximumLODLevel: 0
+    streamingMipmapsActive: 0
+    streamingMipmapsAddAllCameras: 1
+    streamingMipmapsMemoryBudget: 512
+    streamingMipmapsRenderersPerFrame: 512
+    streamingMipmapsMaxLevelReduction: 2
+    streamingMipmapsMaxFileIORequests: 1024
+    particleRaycastBudget: 256
+    asyncUploadTimeSlice: 2
+    asyncUploadBufferSize: 16
+    asyncUploadPersistentBuffer: 1
+    resolutionScalingFixedDPIFactor: 1
+    excludedTargetPlatforms: []
+  - serializedVersion: 2
+    name: Very High
+    pixelLightCount: 3
+    shadows: 2
+    shadowResolution: 2
+    shadowProjection: 1
+    shadowCascades: 2
+    shadowDistance: 70
+    shadowNearPlaneOffset: 3
+    shadowCascade2Split: 0.33333334
+    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 1
+    blendWeights: 4
+    textureQuality: 0
+    anisotropicTextures: 2
+    antiAliasing: 2
+    softParticles: 1
+    softVegetation: 1
+    realtimeReflectionProbes: 1
+    billboardsFaceCameraPosition: 1
+    vSyncCount: 1
+    lodBias: 1.5
+    maximumLODLevel: 0
+    streamingMipmapsActive: 0
+    streamingMipmapsAddAllCameras: 1
+    streamingMipmapsMemoryBudget: 512
+    streamingMipmapsRenderersPerFrame: 512
+    streamingMipmapsMaxLevelReduction: 2
+    streamingMipmapsMaxFileIORequests: 1024
+    particleRaycastBudget: 1024
+    asyncUploadTimeSlice: 2
+    asyncUploadBufferSize: 16
+    asyncUploadPersistentBuffer: 1
+    resolutionScalingFixedDPIFactor: 1
+    excludedTargetPlatforms: []
+  - serializedVersion: 2
+    name: Ultra
+    pixelLightCount: 4
+    shadows: 2
+    shadowResolution: 2
+    shadowProjection: 1
+    shadowCascades: 4
+    shadowDistance: 150
+    shadowNearPlaneOffset: 3
+    shadowCascade2Split: 0.33333334
+    shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
+    shadowmaskMode: 1
+    blendWeights: 4
+    textureQuality: 0
+    anisotropicTextures: 2
+    antiAliasing: 2
+    softParticles: 1
+    softVegetation: 1
+    realtimeReflectionProbes: 1
+    billboardsFaceCameraPosition: 1
+    vSyncCount: 1
+    lodBias: 2
+    maximumLODLevel: 0
+    streamingMipmapsActive: 0
+    streamingMipmapsAddAllCameras: 1
+    streamingMipmapsMemoryBudget: 512
+    streamingMipmapsRenderersPerFrame: 512
+    streamingMipmapsMaxLevelReduction: 2
+    streamingMipmapsMaxFileIORequests: 1024
+    particleRaycastBudget: 4096
+    asyncUploadTimeSlice: 2
+    asyncUploadBufferSize: 16
+    asyncUploadPersistentBuffer: 1
+    resolutionScalingFixedDPIFactor: 1
+    excludedTargetPlatforms: []
+  m_PerPlatformDefaultQuality:
+    Android: 2
+    Lumin: 5
+    Nintendo 3DS: 5
+    Nintendo Switch: 5
+    PS4: 5
+    PSP2: 2
+    Stadia: 5
+    Standalone: 5
+    WebGL: 3
+    Windows Store Apps: 5
+    XboxOne: 5
+    iPhone: 2
+    tvOS: 2
diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset
new file mode 100644
index 0000000..1c92a78
--- /dev/null
+++ b/ProjectSettings/TagManager.asset
@@ -0,0 +1,43 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!78 &1
+TagManager:
+  serializedVersion: 2
+  tags: []
+  layers:
+  - Default
+  - TransparentFX
+  - Ignore Raycast
+  - 
+  - Water
+  - UI
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  - 
+  m_SortingLayers:
+  - name: Default
+    uniqueID: 0
+    locked: 0
diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset
new file mode 100644
index 0000000..558a017
--- /dev/null
+++ b/ProjectSettings/TimeManager.asset
@@ -0,0 +1,9 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!5 &1
+TimeManager:
+  m_ObjectHideFlags: 0
+  Fixed Timestep: 0.02
+  Maximum Allowed Timestep: 0.33333334
+  m_TimeScale: 1
+  Maximum Particle Timestep: 0.03
diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset
new file mode 100644
index 0000000..6125b30
--- /dev/null
+++ b/ProjectSettings/UnityConnectSettings.asset
@@ -0,0 +1,35 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!310 &1
+UnityConnectSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 1
+  m_Enabled: 0
+  m_TestMode: 0
+  m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
+  m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
+  m_ConfigUrl: https://config.uca.cloud.unity3d.com
+  m_DashboardUrl: https://dashboard.unity3d.com
+  m_TestInitMode: 0
+  CrashReportingSettings:
+    m_EventUrl: https://perf-events.cloud.unity3d.com
+    m_Enabled: 0
+    m_LogBufferSize: 10
+    m_CaptureEditorExceptions: 1
+  UnityPurchasingSettings:
+    m_Enabled: 0
+    m_TestMode: 0
+  UnityAnalyticsSettings:
+    m_Enabled: 0
+    m_TestMode: 0
+    m_InitializeOnStartup: 1
+  UnityAdsSettings:
+    m_Enabled: 0
+    m_InitializeOnStartup: 1
+    m_TestMode: 0
+    m_IosGameId: 
+    m_AndroidGameId: 
+    m_GameIds: {}
+    m_GameId: 
+  PerformanceReportingSettings:
+    m_Enabled: 0
diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset
new file mode 100644
index 0000000..3a95c98
--- /dev/null
+++ b/ProjectSettings/VFXManager.asset
@@ -0,0 +1,12 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!937362698 &1
+VFXManager:
+  m_ObjectHideFlags: 0
+  m_IndirectShader: {fileID: 0}
+  m_CopyBufferShader: {fileID: 0}
+  m_SortShader: {fileID: 0}
+  m_StripUpdateShader: {fileID: 0}
+  m_RenderPipeSettingsPath: 
+  m_FixedTimeStep: 0.016666668
+  m_MaxDeltaTime: 0.05
diff --git a/ProjectSettings/VersionControlSettings.asset b/ProjectSettings/VersionControlSettings.asset
new file mode 100644
index 0000000..dca2881
--- /dev/null
+++ b/ProjectSettings/VersionControlSettings.asset
@@ -0,0 +1,8 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!890905787 &1
+VersionControlSettings:
+  m_ObjectHideFlags: 0
+  m_Mode: Visible Meta Files
+  m_CollabEditorSettings:
+    inProgressEnabled: 1
diff --git a/ProjectSettings/XRSettings.asset b/ProjectSettings/XRSettings.asset
new file mode 100644
index 0000000..482590c
--- /dev/null
+++ b/ProjectSettings/XRSettings.asset
@@ -0,0 +1,10 @@
+{
+    "m_SettingKeys": [
+        "VR Device Disabled",
+        "VR Device User Alert"
+    ],
+    "m_SettingValues": [
+        "False",
+        "False"
+    ]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..2a260d0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+# Setting RESTful package
+
+Please set up first the path for the 'Unity World Storage Package' correcly
+
+---
+
+# Description of UI / editor functions
+
+xxx
+
diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset
new file mode 100644
index 0000000..a27413b
--- /dev/null
+++ b/UserSettings/EditorUserSettings.asset
@@ -0,0 +1,27 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!162 &1
+EditorUserSettings:
+  m_ObjectHideFlags: 0
+  serializedVersion: 4
+  m_ConfigSettings:
+    RecentlyUsedScenePath-0:
+      value: 22424703114646680e0b0227036c6c111b07142f1f2b233e2867083debf42d
+      flags: 0
+    RecentlyUsedScenePath-1:
+      value: 224247031146467e393d256c3111795f37253e6a1b27343c29692e27edf2353fe7a717d9ce750c3f3c0cea2f4b0d0032e2060c38f50e040e515fb31b1ff6040a
+      flags: 0
+    vcSharedLogLevel:
+      value: 0d5e400f0650
+      flags: 0
+  m_VCAutomaticAdd: 1
+  m_VCDebugCom: 0
+  m_VCDebugCmd: 0
+  m_VCDebugOut: 0
+  m_SemanticMergeMode: 2
+  m_VCShowFailedCheckout: 1
+  m_VCOverwriteFailedCheckoutAssets: 1
+  m_VCProjectOverlayIcons: 1
+  m_VCHierarchyOverlayIcons: 1
+  m_VCOtherOverlayIcons: 1
+  m_VCAllowAsyncUpdate: 1
-- 
GitLab