From 0be1f919da45b1c85d9749af7d4bb6eb2ad78b5f Mon Sep 17 00:00:00 2001 From: jlacoche <jeremy.lacoche@orange.com> Date: Mon, 29 Jul 2024 11:14:40 +0200 Subject: [PATCH] Move files editor to package --- 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/ARFEdgeLink.cs | 84 -- .../Editor/Graph/ARFEdgeLink.cs.meta | 11 - .../Editor/Graph/ARFGraphView.cs | 684 --------- .../Editor/Graph/ARFGraphView.cs.meta | 11 - .../Editor/Graph/ARFNode.cs | 140 -- .../Editor/Graph/ARFNode.cs.meta | 11 - .../Editor/Graph/ARFNodeTrackable.cs | 85 -- .../Editor/Graph/ARFNodeTrackable.cs.meta | 11 - .../Editor/Graph/ARFNodeWorldAnchor.cs | 79 - .../Editor/Graph/ARFNodeWorldAnchor.cs.meta | 11 - .../Editor/Graph/ARFPort.cs | 80 -- .../Editor/Graph/ARFPort.cs.meta | 11 - .../Editor/Graph/WorldLinkListener.cs | 98 -- .../Editor/Graph/WorldLinkListener.cs.meta | 11 - .../ARF World Storage API/Editor/Windows.meta | 8 - .../Editor/Windows/BaseWindow.cs | 118 -- .../Editor/Windows/BaseWindow.cs.meta | 14 - .../Editor/Windows/GraphEditorWindow.cs | 1276 ----------------- .../Editor/Windows/GraphEditorWindow.cs.meta | 11 - .../Editor/Windows/TrackableWindow.cs | 378 ----- .../Editor/Windows/TrackableWindow.cs.meta | 14 - .../Editor/Windows/WorldAnchorWindow.cs | 344 ----- .../Editor/Windows/WorldAnchorWindow.cs.meta | 11 - .../Editor/Windows/WorldGraphWindow.cs | 304 ---- .../Editor/Windows/WorldGraphWindow.cs.meta | 14 - .../Editor/Windows/WorldLinkWindow.cs | 515 ------- .../Editor/Windows/WorldLinkWindow.cs.meta | 11 - .../Editor/Windows/WorldStorageWindow.cs | 641 --------- .../Editor/Windows/WorldStorageWindow.cs.meta | 14 - .../Editor/WorldStoragePrefabs.cs | 36 - .../Editor/WorldStoragePrefabs.cs.meta | 11 - .../Editor/WorldStorageServerEditor.cs | 64 - .../Editor/WorldStorageServerEditor.cs.meta | 11 - .../Editor/WorldStorageUserEditor.cs | 62 - .../Editor/WorldStorageUserEditor.cs.meta | 11 - .../ARF World Storage API/Images.meta | 12 - .../Images/Materials.meta | 8 - .../Images/Materials/anchor.mat | 80 -- .../Images/Materials/anchor.mat.meta | 8 - .../Images/Materials/link.mat | 80 -- .../Images/Materials/link.mat.meta | 8 - .../Images/Materials/trackable.mat | 80 -- .../Images/Materials/trackable.mat.meta | 8 - .../ARF World Storage API/Images/anchor.png | Bin 21219 -> 0 bytes .../Images/anchor.png.meta | 98 -- .../ARF World Storage API/Images/cloud.png | Bin 31613 -> 0 bytes .../Images/cloud.png.meta | 98 -- .../ARF World Storage API/Images/link.png | Bin 18903 -> 0 bytes .../Images/link.png.meta | 98 -- .../Images/trackable.png | Bin 14290 -> 0 bytes .../Images/trackable.png.meta | 98 -- .../ARF World Storage API/Images/warning.png | Bin 55016 -> 0 bytes .../Images/warning.png.meta | 98 -- .../ARF World Storage API/Materials/blue.mat | 80 -- .../Materials/blue.mat.meta | 8 - .../ARF World Storage API/Materials/green.mat | 80 -- .../Materials/green.mat.meta | 8 - .../ARF World Storage API/Materials/red.mat | 80 -- .../Materials/red.mat.meta | 8 - .../ARF World Storage API/Prefabs.meta | 8 - .../Prefabs/ARFTrackable.prefab | 835 ----------- .../Prefabs/ARFTrackable.prefab.meta | 7 - .../Prefabs/ARFWorldAnchor.prefab | 835 ----------- .../Prefabs/ARFWorldAnchor.prefab.meta | 7 - .../Prefabs/ARFWorldLink.prefab | 555 ------- .../Prefabs/ARFWorldLink.prefab.meta | 7 - .../ARF World Storage API/Resources.meta | 8 - .../Resources/ARFPrefabs.asset | 17 - .../Resources/ARFPrefabs.asset.meta | 8 - .../ARF World Storage API/Scenes.meta | 8 - .../ARF World Storage API/Scripts.meta | 8 - .../Scripts/AttachToWorldAnchor.cs | 29 - .../Scripts/AttachToWorldAnchor.cs.meta | 11 - .../ARF World Storage API/Scripts/Data.cs | 16 - .../Scripts/Data.cs.meta | 11 - .../Scripts/LinkVisual.cs | 36 - .../Scripts/LinkVisual.cs.meta | 11 - .../Scripts/WorldStorageCollections.cs | 26 - .../Scripts/WorldStorageCollections.cs.meta | 11 - .../Scripts/WorldStorageRequest.cs | 153 -- .../Scripts/WorldStorageRequest.cs.meta | 11 - Assets/ETSI.ARF/ARF World Storage API/csc.rsp | 1 - .../ARF World Storage API/csc.rsp.meta | 7 - Assets/ETSI.ARF/Materials.meta | 8 - Assets/ETSI.ARF/Scenes.meta | 8 - Assets/{ETSI.ARF => }/GUI.meta | 0 Assets/{ETSI.ARF => }/GUI/Buttons.meta | 0 .../GUI/Buttons/HalfRounded20px@2x_Down.png | Bin .../Buttons/HalfRounded20px@2x_Down.png.meta | 0 .../GUI/Buttons/HalfRounded20px@2x_Up.png | Bin .../Buttons/HalfRounded20px@2x_Up.png.meta | 0 .../GUI/Buttons/Rounded20px@2x.png | Bin .../GUI/Buttons/Rounded20px@2x.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Checkbox.meta | 0 .../GUI/Checkbox/BackgroundSimpleRound.png | Bin .../Checkbox/BackgroundSimpleRound.png.meta | 0 .../GUI/Checkbox/ButtonWithBorder.png | Bin .../GUI/Checkbox/ButtonWithBorder.png.meta | 0 .../GUI/Checkbox/Checkbox.prefab | 0 .../GUI/Checkbox/Checkbox.prefab.meta | 0 .../GUI/Checkbox/CheckboxNew.prefab | 0 .../GUI/Checkbox/CheckboxNew.prefab.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/AppDummy.png | Bin .../GUI/Icons/AppDummy.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/Clouds.png | Bin .../{ETSI.ARF => }/GUI/Icons/Clouds.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/Cube.prefab | 0 .../{ETSI.ARF => }/GUI/Icons/Cube.prefab.meta | 0 .../{ETSI.ARF => }/GUI/Icons/CustomMenu.png | Bin .../GUI/Icons/CustomMenu.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/DB.png | Bin Assets/{ETSI.ARF => }/GUI/Icons/DB.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/Edit.png | Bin Assets/{ETSI.ARF => }/GUI/Icons/Edit.png.meta | 0 .../GUI/Icons/Exclamation-mark.png | Bin .../GUI/Icons/Exclamation-mark.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/Exit.png | Bin Assets/{ETSI.ARF => }/GUI/Icons/Exit.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/Gear 1.png | Bin .../{ETSI.ARF => }/GUI/Icons/Gear 1.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/Pin.png | Bin Assets/{ETSI.ARF => }/GUI/Icons/Pin.png.meta | 0 Assets/{ETSI.ARF => }/GUI/Icons/Save.png | Bin Assets/{ETSI.ARF => }/GUI/Icons/Save.png.meta | 0 .../{ETSI.ARF => }/GUI/Icons/circular01.png | Bin .../GUI/Icons/circular01.png.meta | 0 .../{ETSI.ARF => }/GUI/Icons/icon-locked.png | Bin .../GUI/Icons/icon-locked.png.meta | 0 .../ARF World Storage API => }/Materials.meta | 0 .../Materials/Back Portrait.mat | 0 .../Materials/Back Portrait.mat.meta | 0 .../{ETSI.ARF => }/Materials/Blue Metal.mat | 0 .../Materials/Blue Metal.mat.meta | 0 Assets/{ETSI.ARF => }/Materials/Blue.mat | 0 Assets/{ETSI.ARF => }/Materials/Blue.mat.meta | 0 .../Materials/GridGreyWhite.mat | 0 .../Materials/GridGreyWhite.mat.meta | 0 .../{ETSI.ARF => }/Materials/GridRedWhite.mat | 0 .../Materials/GridRedWhite.mat.meta | 0 .../{ETSI.ARF => }/Materials/MultiChecked.mat | 0 .../Materials/MultiChecked.mat.meta | 0 Assets/{ETSI.ARF => }/Materials/Orange.mat | 0 .../{ETSI.ARF => }/Materials/Orange.mat.meta | 0 Assets/{ETSI.ARF => }/Materials/Red Metal.mat | 0 .../Materials/Red Metal.mat.meta | 0 Assets/{ETSI.ARF => }/Materials/Red.mat | 0 Assets/{ETSI.ARF => }/Materials/Red.mat.meta | 0 .../{ETSI.ARF => }/Materials/SpeedMetals.mat | 0 .../Materials/SpeedMetals.mat.meta | 0 .../{ETSI.ARF => }/Materials/Yellow Metal.mat | 0 .../Materials/Yellow Metal.mat.meta | 0 .../Materials/grey.mat | 0 .../Materials/grey.mat.meta | 0 .../Materials/grid_grey&white.mat | 0 .../Materials/grid_grey&white.mat.meta | 0 .../Materials/ground_stone_ground.jpg | Bin .../Materials/ground_stone_ground.jpg.meta | 0 .../Materials/ground_stone_ground.mat | 0 .../Materials/ground_stone_ground.mat.meta | 0 .../Materials/statue.mat | 0 .../Materials/statue.mat.meta | 0 .../Materials/wall.mat | 0 .../Materials/wall.mat.meta | 0 .../ARF World Storage API => }/Models.meta | 0 .../Models/knabe_simplified.obj | 0 .../Models/knabe_simplified.obj.meta | 0 Assets/{ETSI.ARF => }/Prefabs.meta | 0 Assets/{ETSI.ARF => }/Prefabs/Entry.prefab | 0 .../{ETSI.ARF => }/Prefabs/Entry.prefab.meta | 0 Assets/{ETSI.ARF => }/Prefabs/EntryHandler.cs | 0 .../Prefabs/EntryHandler.cs.meta | 0 .../Prefabs/Monitor Server.prefab | 31 + .../Prefabs/Monitor Server.prefab.meta | 0 .../Prefabs/Monitor World Storage.prefab | 0 .../Prefabs/Monitor World Storage.prefab.meta | 0 Assets/{ETSI.ARF => }/Prefabs/Monitor.prefab | 0 .../Prefabs/Monitor.prefab.meta | 0 Assets/{ETSI.ARF => }/Prefabs/MonitorBase.cs | 0 .../Prefabs/MonitorBase.cs.meta | 0 .../{ETSI.ARF => }/Prefabs/MonitorServer.cs | 0 .../Prefabs/MonitorServer.cs.meta | 0 .../Prefabs/MonitorWorldStorage.cs | 0 .../Prefabs/MonitorWorldStorage.cs.meta | 0 Assets/Scenes/SampleScene.unity | 301 ---- Assets/Scenes/SampleScene.unity.meta | 7 - .../Scenes/WorldStorageSample.unity | 0 .../Scenes/WorldStorageSample.unity.meta | 0 .../WorldStorageSampleStatue.unity} | 0 .../WorldStorageSampleStatue.unity.meta} | 0 Assets/{ETSI.ARF => }/Scripts.meta | 0 .../{ETSI.ARF => }/Scripts/ARFDatamanager.cs | 0 .../Scripts/ARFDatamanager.cs.meta | 0 .../{ETSI.ARF => }/Scripts/ConsoleLogFile.cs | 0 .../Scripts/ConsoleLogFile.cs.meta | 0 .../Scripts/SimpleClientDemo.cs | 0 .../Scripts/SimpleClientDemo.cs.meta | 0 Assets/{ETSI.ARF => }/Textures.meta | 0 Assets/{ETSI.ARF => }/Textures/Back.png | Bin Assets/{ETSI.ARF => }/Textures/Back.png.meta | 0 .../Textures/BackPortrait No Transp.png | Bin .../Textures/BackPortrait No Transp.png.meta | 0 .../{ETSI.ARF => }/Textures/BackPortrait.png | Bin .../Textures/BackPortrait.png.meta | 0 .../Textures/BackPortraitWhite.png | Bin .../Textures/BackPortraitWhite.png.meta | 0 .../Textures/BackRound with Border.png | Bin .../Textures/BackRound with Border.png.meta | 0 Assets/{ETSI.ARF => }/Textures/BackWhite.png | Bin .../Textures/BackWhite.png.meta | 0 Assets/{ETSI.ARF => }/Textures/Fill.png | Bin Assets/{ETSI.ARF => }/Textures/Fill.png.meta | 0 Assets/{ETSI.ARF => }/Textures/FillWhite.png | Bin .../Textures/FillWhite.png.meta | 0 Assets/{ETSI.ARF => }/Textures/etsi_logo.png | Bin .../Textures/etsi_logo.png.meta | 0 .../Textures/grid_black&white.jpg | Bin .../Textures/grid_black&white.jpg.meta | 0 .../Textures/grid_grey&white.jpg | Bin .../Textures/grid_grey&white.jpg.meta | 0 .../Textures/grid_white&red.jpg | Bin .../Textures/grid_white&red.jpg.meta | 0 Assets/{ETSI.ARF => }/Textures/gridinv257.psd | Bin .../Textures/gridinv257.psd.meta | 0 .../World Storage.meta | 0 .../World Storage/Depreciated.meta | 0 .../Depreciated/HHI Server - detlef dev.asset | 0 .../HHI Server - detlef dev.asset.meta | 0 .../Depreciated/HHI Server STF620.asset | 0 .../Depreciated/HHI Server STF620.asset.meta | 0 .../HHI Server - sylvain dev.asset | 0 .../HHI Server - sylvain dev.asset.meta | 0 .../World Storage/HHI Server STF669.asset | 0 .../HHI Server STF669.asset.meta | 0 .../World Storage/LocalHost8080.asset | 2 +- .../World Storage/LocalHost8080.asset.meta | 0 .../World Storage/LocalHost8081.asset | 0 .../World Storage/LocalHost8081.asset.meta | 0 .../World Storage/User Demo.asset | 0 .../World Storage/User Demo.asset.meta | 0 .../World Storage/User Nathan.asset | 0 .../World Storage/User Nathan.asset.meta | 0 .../World Storage/User Sylvain.asset | 0 .../World Storage/User Sylvain.asset.meta | 0 248 files changed, 32 insertions(+), 9216 deletions(-) delete mode 100644 Assets/ETSI.ARF.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeTrackable.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeTrackable.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeWorldAnchor.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeWorldAnchor.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFPort.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFPort.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/WorldLinkListener.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/WorldLinkListener.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldGraphWindow.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldGraphWindow.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageUserEditor.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageUserEditor.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/Materials.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/link.png delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/link.png.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/warning.png delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Images/warning.png.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Resources.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scenes.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs.meta delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/csc.rsp delete mode 100644 Assets/ETSI.ARF/ARF World Storage API/csc.rsp.meta delete mode 100644 Assets/ETSI.ARF/Materials.meta delete mode 100644 Assets/ETSI.ARF/Scenes.meta rename Assets/{ETSI.ARF => }/GUI.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Buttons.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Buttons/HalfRounded20px@2x_Down.png (100%) rename Assets/{ETSI.ARF => }/GUI/Buttons/HalfRounded20px@2x_Down.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Buttons/HalfRounded20px@2x_Up.png (100%) rename Assets/{ETSI.ARF => }/GUI/Buttons/HalfRounded20px@2x_Up.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Buttons/Rounded20px@2x.png (100%) rename Assets/{ETSI.ARF => }/GUI/Buttons/Rounded20px@2x.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/BackgroundSimpleRound.png (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/BackgroundSimpleRound.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/ButtonWithBorder.png (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/ButtonWithBorder.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/Checkbox.prefab (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/Checkbox.prefab.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/CheckboxNew.prefab (100%) rename Assets/{ETSI.ARF => }/GUI/Checkbox/CheckboxNew.prefab.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/AppDummy.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/AppDummy.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Clouds.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Clouds.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Cube.prefab (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Cube.prefab.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/CustomMenu.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/CustomMenu.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/DB.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/DB.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Edit.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Edit.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Exclamation-mark.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Exclamation-mark.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Exit.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Exit.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Gear 1.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Gear 1.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Pin.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Pin.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Save.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/Save.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/circular01.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/circular01.png.meta (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/icon-locked.png (100%) rename Assets/{ETSI.ARF => }/GUI/Icons/icon-locked.png.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials.meta (100%) rename Assets/{ETSI.ARF => }/Materials/Back Portrait.mat (100%) rename Assets/{ETSI.ARF => }/Materials/Back Portrait.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/Blue Metal.mat (100%) rename Assets/{ETSI.ARF => }/Materials/Blue Metal.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/Blue.mat (100%) rename Assets/{ETSI.ARF => }/Materials/Blue.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/GridGreyWhite.mat (100%) rename Assets/{ETSI.ARF => }/Materials/GridGreyWhite.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/GridRedWhite.mat (100%) rename Assets/{ETSI.ARF => }/Materials/GridRedWhite.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/MultiChecked.mat (100%) rename Assets/{ETSI.ARF => }/Materials/MultiChecked.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/Orange.mat (100%) rename Assets/{ETSI.ARF => }/Materials/Orange.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/Red Metal.mat (100%) rename Assets/{ETSI.ARF => }/Materials/Red Metal.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/Red.mat (100%) rename Assets/{ETSI.ARF => }/Materials/Red.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/SpeedMetals.mat (100%) rename Assets/{ETSI.ARF => }/Materials/SpeedMetals.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/Yellow Metal.mat (100%) rename Assets/{ETSI.ARF => }/Materials/Yellow Metal.mat.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/grey.mat (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/grey.mat.meta (100%) rename Assets/{ETSI.ARF => }/Materials/grid_grey&white.mat (100%) rename Assets/{ETSI.ARF => }/Materials/grid_grey&white.mat.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/ground_stone_ground.jpg (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/ground_stone_ground.jpg.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/ground_stone_ground.mat (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/ground_stone_ground.mat.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/statue.mat (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/statue.mat.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/wall.mat (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Materials/wall.mat.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Models.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Models/knabe_simplified.obj (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/Models/knabe_simplified.obj.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/Entry.prefab (100%) rename Assets/{ETSI.ARF => }/Prefabs/Entry.prefab.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/EntryHandler.cs (100%) rename Assets/{ETSI.ARF => }/Prefabs/EntryHandler.cs.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/Monitor Server.prefab (91%) rename Assets/{ETSI.ARF => }/Prefabs/Monitor Server.prefab.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/Monitor World Storage.prefab (100%) rename Assets/{ETSI.ARF => }/Prefabs/Monitor World Storage.prefab.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/Monitor.prefab (100%) rename Assets/{ETSI.ARF => }/Prefabs/Monitor.prefab.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/MonitorBase.cs (100%) rename Assets/{ETSI.ARF => }/Prefabs/MonitorBase.cs.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/MonitorServer.cs (100%) rename Assets/{ETSI.ARF => }/Prefabs/MonitorServer.cs.meta (100%) rename Assets/{ETSI.ARF => }/Prefabs/MonitorWorldStorage.cs (100%) rename Assets/{ETSI.ARF => }/Prefabs/MonitorWorldStorage.cs.meta (100%) delete mode 100644 Assets/Scenes/SampleScene.unity delete mode 100644 Assets/Scenes/SampleScene.unity.meta rename Assets/{ETSI.ARF => }/Scenes/WorldStorageSample.unity (100%) rename Assets/{ETSI.ARF => }/Scenes/WorldStorageSample.unity.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity => Scenes/WorldStorageSampleStatue.unity} (100%) rename Assets/{ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity.meta => Scenes/WorldStorageSampleStatue.unity.meta} (100%) rename Assets/{ETSI.ARF => }/Scripts.meta (100%) rename Assets/{ETSI.ARF => }/Scripts/ARFDatamanager.cs (100%) rename Assets/{ETSI.ARF => }/Scripts/ARFDatamanager.cs.meta (100%) rename Assets/{ETSI.ARF => }/Scripts/ConsoleLogFile.cs (100%) rename Assets/{ETSI.ARF => }/Scripts/ConsoleLogFile.cs.meta (100%) rename Assets/{ETSI.ARF => }/Scripts/SimpleClientDemo.cs (100%) rename Assets/{ETSI.ARF => }/Scripts/SimpleClientDemo.cs.meta (100%) rename Assets/{ETSI.ARF => }/Textures.meta (100%) rename Assets/{ETSI.ARF => }/Textures/Back.png (100%) rename Assets/{ETSI.ARF => }/Textures/Back.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/BackPortrait No Transp.png (100%) rename Assets/{ETSI.ARF => }/Textures/BackPortrait No Transp.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/BackPortrait.png (100%) rename Assets/{ETSI.ARF => }/Textures/BackPortrait.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/BackPortraitWhite.png (100%) rename Assets/{ETSI.ARF => }/Textures/BackPortraitWhite.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/BackRound with Border.png (100%) rename Assets/{ETSI.ARF => }/Textures/BackRound with Border.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/BackWhite.png (100%) rename Assets/{ETSI.ARF => }/Textures/BackWhite.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/Fill.png (100%) rename Assets/{ETSI.ARF => }/Textures/Fill.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/FillWhite.png (100%) rename Assets/{ETSI.ARF => }/Textures/FillWhite.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/etsi_logo.png (100%) rename Assets/{ETSI.ARF => }/Textures/etsi_logo.png.meta (100%) rename Assets/{ETSI.ARF => }/Textures/grid_black&white.jpg (100%) rename Assets/{ETSI.ARF => }/Textures/grid_black&white.jpg.meta (100%) rename Assets/{ETSI.ARF => }/Textures/grid_grey&white.jpg (100%) rename Assets/{ETSI.ARF => }/Textures/grid_grey&white.jpg.meta (100%) rename Assets/{ETSI.ARF => }/Textures/grid_white&red.jpg (100%) rename Assets/{ETSI.ARF => }/Textures/grid_white&red.jpg.meta (100%) rename Assets/{ETSI.ARF => }/Textures/gridinv257.psd (100%) rename Assets/{ETSI.ARF => }/Textures/gridinv257.psd.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/Depreciated.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/Depreciated/HHI Server - detlef dev.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/Depreciated/HHI Server - detlef dev.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/Depreciated/HHI Server STF620.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/Depreciated/HHI Server STF620.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/HHI Server - sylvain dev.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/HHI Server - sylvain dev.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/HHI Server STF669.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/HHI Server STF669.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/LocalHost8080.asset (94%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/LocalHost8080.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/LocalHost8081.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/LocalHost8081.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/User Demo.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/User Demo.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/User Nathan.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/User Nathan.asset.meta (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/User Sylvain.asset (100%) rename Assets/{ETSI.ARF/ARF World Storage API => }/World Storage/User Sylvain.asset.meta (100%) diff --git a/Assets/ETSI.ARF.meta b/Assets/ETSI.ARF.meta deleted file mode 100644 index 3939339..0000000 --- a/Assets/ETSI.ARF.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a1d6d8755812e254dbe089251c2bddc5 -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 deleted file mode 100644 index 60d119b..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API.meta +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 6994f74..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor.meta +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index 4a78fd5..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 452c5e5fd6387ad4984356aa2f11d245 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs deleted file mode 100644 index 3a9e71e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs +++ /dev/null @@ -1,84 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: July 2022 -// - -using UnityEditor; -using UnityEditor.Experimental.GraphView; -using UnityEngine; -using UnityEngine.UIElements; - -using ETSI.ARF.WorldStorage.Editor.Windows; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.Editor.Graph -{ - public class ARFEdgeLink : Edge - { - public WorldLink worldLink; - public string GUID; - - public Image savedIcon; - - public ARFEdgeLink() - { - var doubleClickManipulator = new Clickable(Clicked); - doubleClickManipulator.activators.Clear(); - doubleClickManipulator.activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse, clickCount = 2 }); - this.AddManipulator(doubleClickManipulator); - } - public void Clicked() - { - Debug.Log(worldLink.ToJson()); - GraphEditorWindow.ShowWindow(this); - } - public void MarkUnsaved() - { - if (savedIcon == null) - { - //the icon to add if the node does not correspond to an element in the server - Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png", typeof(Texture2D)); - savedIcon = new Image - { - image = warningImage - }; - savedIcon.style.width = 18; - savedIcon.style.height = 18; - savedIcon.style.minWidth = 18; - savedIcon.style.minHeight = 18; - savedIcon.style.flexGrow = 1; - savedIcon.style.alignSelf = Align.Center; - - } - if (!edgeControl.Contains(savedIcon)) - { - edgeControl.Add(savedIcon); - } - tooltip = "This element is not synchronized with the World Storage"; - } - - public void MarkSaved() - { - if (edgeControl.Contains(savedIcon)) - { - edgeControl.Remove(savedIcon); - tooltip = ""; - } - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs.meta deleted file mode 100644 index 723d9ee..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFEdgeLink.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 81a94cf483be20040aa4fe8d9f93d5c5 -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/ARFGraphView.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs deleted file mode 100644 index 1f8f333..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs +++ /dev/null @@ -1,684 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; - -using UnityEngine; -using UnityEngine.UIElements; -using UnityEditor.Experimental.GraphView; -using UnityEditor; - -using ETSI.ARF.WorldStorage.Editor.Graph; -using ETSI.ARF.WorldStorage.Editor.Windows; - -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public class ARFGraphView : GraphView - { - public WorldStorageServer worldStorageServer; - public WorldStorageUser worldStorageUser; - - public ARFGraphView() - { - SetupZoom(ContentZoomer.DefaultMinScale, ContentZoomer.DefaultMaxScale); - - //deleSection - deleteSelection += DeleteFunc; - - - this.AddManipulator(new ContentDragger()); - this.AddManipulator(new SelectionDragger()); - this.AddManipulator(new RectangleSelector()); - - } - - //method called when an element is deleted from the graphview - public void DeleteFunc(string operationName, AskUser askUser) - { - //build the message to list all the deleted elements - String message = "Are you sure you want to delete "; - if (selection.Count > 1) - { - message += selection.Count + " elements ?"; - } - else - { - message += "this element ?"; - } - - //remove from the graph all the deleted elements - if (EditorUtility.DisplayDialog("Deleting elements", message, "Yes", "No")) - { - if (SaveInfo.instance.elemsToRemove == null) - { - SaveInfo.instance.elemsToRemove = new Dictionary<string, Type>(); - } - foreach (GraphElement elt in selection.ToArray()) - { - ARFNodeWorldAnchor nodeAnchor = elt as ARFNodeWorldAnchor; - if (nodeAnchor != null) - { - nodeAnchor.DisconnectAllPorts(this); - if (SaveInfo.instance.nodePositions.ContainsKey(nodeAnchor.GUID)) - { - SaveInfo.instance.elemsToRemove.Add(nodeAnchor.GUID, typeof(WorldAnchor)); - } - RemoveElement(elt); - continue; - } - ARFNodeTrackable nodeTrackable = elt as ARFNodeTrackable; - if (nodeTrackable != null) - { - nodeTrackable.DisconnectAllPorts(this); - if (SaveInfo.instance.nodePositions.ContainsKey(nodeTrackable.GUID)) - { - SaveInfo.instance.elemsToRemove.Add(nodeTrackable.GUID, typeof(Trackable)); - } - RemoveElement(elt); - continue; - } - ARFEdgeLink edgeLink = elt as ARFEdgeLink; - if (edgeLink != null) - { - edgeLink.input.Disconnect(edgeLink); - edgeLink.output.Disconnect(edgeLink); - if (SaveInfo.instance.linkIds.Contains(edgeLink.GUID)) - { - SaveInfo.instance.elemsToRemove.Add(edgeLink.GUID, typeof(WorldLink)); - } - RemoveElement(elt); - continue; - } - } - } - - GraphEditorWindow.ResetWindow(); - } - - public override void BuildContextualMenu(UnityEngine.UIElements.ContextualMenuPopulateEvent evt) - { - Vector2 localMousePos = evt.localMousePosition; - Vector2 actualGraphPosition = viewTransform.matrix.inverse.MultiplyPoint(localMousePos); - - if (!(evt.target is ARFNode || evt.target is Group || evt.target is ARFEdgeLink)) - { - evt.menu.AppendSeparator(); - evt.menu.AppendAction("Save graph", delegate - { - if (ServerAndLocalDifferent()) - { - SaveInServer(); - } - }, (DropdownMenuAction a) => DropdownMenuAction.Status.Normal); - evt.menu.AppendAction("Reload graph", delegate - { - if (ServerAndLocalDifferent() && EditorUtility.DisplayDialog("Saving node positions", "The World Graph has been modified. \nWould you like to push the modifications to the server ?", "Yes", "No")) - { - SaveInServer(); - } - Reload(); - SaveInfo.instance.toReFrame = true; - }, (DropdownMenuAction a) => DropdownMenuAction.Status.Normal); - evt.menu.AppendAction("Create Trackable", delegate - { - //generate the Trackables's attributes - EncodingInformationStructure trackableEncodingInformation = new EncodingInformationStructure() - { - DataFormat = EncodingInformationStructureDataFormat.OTHER, - Version = "0" - }; - - Transform3D localCRS = new Transform3D(); - for (int i = 0; i < 15; i++) - { - localCRS.Add(0); - } - localCRS.Add(1); - - Size trackableSize = new Size(); - for (int i = 0; i < 3; i++) - { - trackableSize.Add(0); - } - - string name = "DefaultTrackable"; - - //trying to add number after default name - var defaultNodes = nodes.ToList().Where(node => node.title.StartsWith("DefaultTrackable")); - if (defaultNodes.Any()) - { - for (int i = 0; i < defaultNodes.Count(); i++) - { - Debug.Log($"{i} : " + defaultNodes.ElementAt(i).title); - if (!(defaultNodes.Where(node => node.title.EndsWith((i + 1).ToString() + ")")).Any())) - { - name = name + " (" + (i + 1).ToString() + ")"; - break; - } - } - } - - Trackable trackable = new Trackable(name) - { - UUID = Guid.NewGuid(), - CreatorUUID = Guid.Parse(worldStorageUser.UUID), - TrackableType = TrackableType.OTHER, - TrackableEncodingInformation = trackableEncodingInformation, - TrackablePayload = new byte[64], - LocalCRS = localCRS, - Unit = UnitSystem.CM, - TrackableSize = trackableSize - }; - - selection.Clear(); - var node = CreateTrackableNode(trackable, actualGraphPosition.x, actualGraphPosition.y); - node.MarkUnsaved(); - GraphEditorWindow.ShowWindow((ARFNodeTrackable)node); - - }, (DropdownMenuAction a) => DropdownMenuAction.Status.Normal); - evt.menu.AppendAction("Create World Anchor", delegate - { - //generate the worldAnchor attributes - Transform3D localCRS = new Transform3D(); - for (int i = 0; i < 15; i++) - { - localCRS.Add(0); - } - localCRS.Add(1); - - Size worldAnchorSize = new Size(); - for (int i = 0; i < 3; i++) - { - worldAnchorSize.Add(0); - } - - string name = "DefaultWorldAnchor"; - - //trying to add number after default name - var defaultNodes = nodes.ToList().Where(node => node.title.StartsWith("DefaultWorldAnchor")); - if (defaultNodes.Any()) - { - for (int i = 0; i < defaultNodes.Count(); i++) - { - if (!(defaultNodes.Where(node => node.title.EndsWith((i + 1).ToString() + ")")).Any())) - { - name = name + " (" + (i + 1).ToString() + ")"; - break; - } - } - } - - WorldAnchor anchor = new WorldAnchor(name) - { - UUID = Guid.NewGuid(), - CreatorUUID = Guid.Parse(worldStorageUser.UUID), - LocalCRS = localCRS, - Unit = UnitSystem.CM, - WorldAnchorSize = worldAnchorSize - }; - - selection.Clear(); - var node = CreateAnchorNode(anchor, actualGraphPosition.x, actualGraphPosition.y); - node.MarkUnsaved(); - GraphEditorWindow.ShowWindow((ARFNodeWorldAnchor)node); - - }, (DropdownMenuAction a) => DropdownMenuAction.Status.Normal); - } - evt.menu.AppendSeparator(); - if (evt.target is ARFNode || evt.target is Group || evt.target is ARFEdgeLink) - { - evt.menu.AppendSeparator(); - evt.menu.AppendAction("Delete", delegate - { - DeleteSelectionCallback(AskUser.AskUser); - }, (DropdownMenuAction a) => canDeleteSelection ? DropdownMenuAction.Status.Normal : DropdownMenuAction.Status.Disabled); - evt.menu.AppendSeparator(); - } - } - - public bool ServerAndLocalDifferent() - { - if ((SaveInfo.instance.elemsToRemove.Count != 0) || (SaveInfo.instance.elemsToUpdate.Count != 0)) - { - return true; - } - foreach (ARFNode node in nodes) - { - float nodeX = node.GetPosition().x; - float nodeY = node.GetPosition().y; - if (!SaveInfo.instance.nodePositions.ContainsKey(node.GUID)) - { - return true; - } - else - { - float dataX = SaveInfo.instance.nodePositions[node.GUID].x; - float dataY = SaveInfo.instance.nodePositions[node.GUID].y; - if ((nodeX != dataX) || (nodeY != dataY)) - { - return true; - } - } - } - foreach (ARFEdgeLink edge in edges) - { - if (!SaveInfo.instance.linkIds.Contains(edge.GUID)) - { - return true; - } - } - return false; - } - - 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; - } - - public void PaintWorldStorage() - { - - List<WorldAnchor> worldAnchors = WorldAnchorRequest.GetWorldAnchorsSync(worldStorageServer); - foreach (WorldAnchor worldAnchor in worldAnchors) - { - var waNode = new ARFNodeWorldAnchor(worldAnchor); - - Rect posTemp = new(26, 93, 160, 77); - SaveInfo.instance.nodePositions.TryGetValue(worldAnchor.UUID.ToString(), out posTemp); - waNode.SetPosition(posTemp); - - AddElement(waNode); - } - - List<Trackable> trackables = TrackableRequest.GetTrackablesSync(worldStorageServer); - foreach (Trackable trackable in trackables) - { - var tracknode = new ARFNodeTrackable(trackable); - - Rect posTemp = new(26, 93, 160, 77); - SaveInfo.instance.nodePositions.TryGetValue(trackable.UUID.ToString(), out posTemp); - tracknode.SetPosition(posTemp); - - AddElement(tracknode); - } - List<WorldLink> worldLinks = WorldLinkRequest.GetWorldLinksSync(worldStorageServer); - foreach (WorldLink worldLink in worldLinks) - { - Debug.Log("ports"); - var portPair = GetPortsFromWorldLink(worldLink); - Debug.Log("edge " + (portPair.Key == null)+ " " + (portPair.Value == null)); - ARFEdgeLink edge = portPair.Key.ConnectTo<ARFEdgeLink>(portPair.Value); - edge.worldLink = worldLink; - edge.GUID = worldLink.UUID.ToString(); - - AddElement(edge); - } - } - - internal ARFNodeTrackable CreateTrackableNode(Trackable track, float posX, float posY) - { - var tracknode = new ARFNodeTrackable(track); - Rect pos = new Rect(RoundToNearestHalf(posX), RoundToNearestHalf(posY), 160, 77); - tracknode.SetPosition(pos); - - AddElement(tracknode); - return tracknode; - } - - internal ARFNodeWorldAnchor CreateAnchorNode(WorldAnchor wa, float posX, float posY) - { - var waNode = new ARFNodeWorldAnchor(wa); - - Rect pos = new Rect(RoundToNearestHalf(posX), RoundToNearestHalf(posY), 160, 77); - waNode.SetPosition(pos); - - AddElement(waNode); - return waNode; - } - - internal ARFEdgeLink CreateLink(WorldLink worldLink) - { - var portPair = GetPortsFromWorldLink(worldLink); - ARFEdgeLink edge = portPair.Key.ConnectTo<ARFEdgeLink>(portPair.Value); - edge.worldLink = worldLink; - Debug.Log(worldLink.UUID.ToString()); - edge.GUID = worldLink.UUID.ToString(); - - AddElement(edge); - return edge; - } - - public void Reload() - { - GraphEditorWindow.ResetWindow(); - DeleteElements(graphElements); - SaveInfo.instance.InitNodePos(worldStorageServer, worldStorageUser); - PaintWorldStorage(); - FrameAllElements(); - } - - public Dictionary<string, Rect> GetNodePositions() - { - Dictionary<string, Rect> ret = new Dictionary<string, Rect>(); - foreach (ARFNode elem in nodes) - { - ret.Add(elem.GUID, elem.GetPosition()); - } - return ret; - } - - private KeyValuePair<Port, Port> GetPortsFromWorldLink(WorldLink worldLink) - { - var ret = new KeyValuePair<Port, Port>(); - - //To - Guid idTo = worldLink.UUIDTo; - Port portIn = null; - switch (worldLink.TypeTo) - { - case TypeWorldStorage.TRACKABLE: - foreach (GraphElement node in this.graphElements) - { - ARFNodeTrackable nodeTrackable = node as ARFNodeTrackable; - if ((nodeTrackable != null) && (nodeTrackable.trackable.UUID == idTo)) - { - portIn = nodeTrackable.portIn; - break; - } - } - break; - case TypeWorldStorage.ANCHOR: - foreach (GraphElement node in this.graphElements) - { - ARFNodeWorldAnchor nodeAnchor = node as ARFNodeWorldAnchor; - if ((nodeAnchor != null) && nodeAnchor.worldAnchor.UUID == idTo) - { - portIn = nodeAnchor.portIn; - break; - } - } - break; - default: - Debug.Log("what are you doing here..."); - break; - } - - //From - Guid idFrom = worldLink.UUIDFrom; - Port portOut = null; - switch (worldLink.TypeFrom) - { - case TypeWorldStorage.TRACKABLE: - foreach (GraphElement node in this.graphElements) - { - ARFNodeTrackable nodeTrackable = node as ARFNodeTrackable; - if ((nodeTrackable != null) && (nodeTrackable.trackable.UUID == idFrom)) - { - portOut = nodeTrackable.portOut; - break; - } - } - break; - case TypeWorldStorage.ANCHOR: - foreach (GraphElement node in this.graphElements) - { - ARFNodeWorldAnchor nodeAnchor = node as ARFNodeWorldAnchor; - if ((nodeAnchor != null) && nodeAnchor.worldAnchor.UUID == idFrom) - { - portOut = nodeAnchor.portOut; - break; - } - } - break; - default: - Debug.Log("what are you doing here..."); - break; - } - - if ((portOut != null) && (portIn != null)) - { - ret = new KeyValuePair<Port, Port>(portOut, portIn); - } - - return ret; - } - - // - // R�sum�: - // Calculate the rectangle size and position to fit all elements in graph. - // - // Param�tres�: - // container: - // This should be the view container. - // - // Retourne�: - // The calculated rectangle. - public override Rect CalculateRectToFitAll(VisualElement container) - { - Rect rectToFit = container.layout; - bool reachedFirstChild = false; - graphElements.ForEach(delegate (GraphElement ge) - { - if (!(ge is ARFEdgeLink) && !(ge is Port)) - { - if (!reachedFirstChild) - { - rectToFit = ge.ChangeCoordinatesTo(contentViewContainer, ge.contentRect); - reachedFirstChild = true; - } - else - { - rectToFit = RectUtils.Encompass(rectToFit, ge.ChangeCoordinatesTo(contentViewContainer, ge.contentRect)); - } - } - }); - return rectToFit; - } - - //k_FrameBorder is private readOnly graphView attribute, had to redeclare it to access it - private readonly int k_FrameBorder = 30; - public void FrameAllElements() - { - Vector3 frameTranslation = Vector3.zero; - Vector3 frameScaling = Vector3.one; - var rectToFit = CalculateRectToFitAll(contentViewContainer); - CalculateFrameTransform(rectToFit, layout, k_FrameBorder, out frameTranslation, out frameScaling); - Matrix4x4.TRS(frameTranslation, Quaternion.identity, frameScaling); - UpdateViewTransform(frameTranslation, frameScaling); - } - - //method to predict the position of a node (the float that will be saved in the PositionInfo singleton) - public static float RoundToNearestHalf(float a) - { - return a = Mathf.Round(a * 2f) * 0.5f; - } - - //Save all modified/deleted/added elements to the server - public void SaveInServer() - { - //DELETE ELEMENTS FROM THE SERVER - foreach (KeyValuePair<String, Type> elemToRemove in SaveInfo.instance.elemsToRemove) - { - string typeName = elemToRemove.Value.Name; - switch (typeName) - { - case nameof(Trackable): - TrackableRequest.DeleteTrackableAsync(worldStorageServer, Guid.Parse(elemToRemove.Key), (response) => { }); - break; - case nameof(WorldAnchor): - Debug.Log("delete worldanchor"); - WorldAnchorRequest.DeleteWorldAnchorAsync(worldStorageServer, Guid.Parse(elemToRemove.Key), (response) => { }); - break; - case nameof(WorldLink): - WorldLinkRequest.DeleteWorldLinkAsync(worldStorageServer, Guid.Parse(elemToRemove.Key), (response) => { }); - break; - default: - Debug.Log("oops"); - break; - } - } - - // UPDATE AND ADD ELEMENTS - foreach (ARFNode node in nodes) - { - if (!SaveInfo.instance.nodePositions.ContainsKey(node.GUID)) - { - // POST TRACKABLE - if (node is ARFNodeTrackable aRFNodeTrackable) - { - var posX = new Collection<String>(); - posX.Add(aRFNodeTrackable.GetPosition().x.ToString()); - var posY = new Collection<String>(); - posY.Add(aRFNodeTrackable.GetPosition().y.ToString()); - Trackable trackable = aRFNodeTrackable.trackable; - trackable.KeyvalueTags["unityAuthoringPosX"] = posX; - trackable.KeyvalueTags["unityAuthoringPosY"] = posY; - TrackableRequest.CreateTrackableAsync(worldStorageServer, trackable, (response) => - { - //change the uuid in its edges, if there is a new edge to be added in the world storage it needs to have the correct uuid - String uuid = response.result; - - uuid = uuid.Replace("\"", ""); - foreach (ARFEdgeLink edge in aRFNodeTrackable.portIn.connections) - { - edge.worldLink.UUIDTo = Guid.Parse(uuid); - } - foreach (ARFEdgeLink edge in aRFNodeTrackable.portOut.connections) - { - edge.worldLink.UUIDFrom = Guid.Parse(uuid); - } - aRFNodeTrackable.trackable.UUID = Guid.Parse(uuid); - aRFNodeTrackable.GUID = uuid; - aRFNodeTrackable.title = trackable.Name; - }); - } - - // POST WORLDANCHOR - if (node is ARFNodeWorldAnchor aRFNodeWorldAnchor) - { - var posX = new Collection<String>(); - posX.Add(aRFNodeWorldAnchor.GetPosition().x.ToString()); - var posY = new Collection<String>(); - posY.Add(aRFNodeWorldAnchor.GetPosition().y.ToString()); - WorldAnchor worldAnchor = aRFNodeWorldAnchor.worldAnchor; - worldAnchor.KeyvalueTags["unityAuthoringPosX"] = posX; - worldAnchor.KeyvalueTags["unityAuthoringPosY"] = posY; - - WorldAnchorRequest.CreateWorldAnchorAsync(worldStorageServer, worldAnchor, (response) => - { - - String uuid = response.result; - //change the uuid in its edges, if there is a new edge to be added in the world storage it needs to have the correct uuid - uuid = uuid.Replace("\"", ""); - foreach (ARFEdgeLink edge in aRFNodeWorldAnchor.portIn.connections) - { - edge.worldLink.UUIDTo = Guid.Parse(uuid); - } - foreach (ARFEdgeLink edge in aRFNodeWorldAnchor.portOut.connections) - { - edge.worldLink.UUIDFrom = Guid.Parse(uuid); - } - aRFNodeWorldAnchor.worldAnchor.UUID = Guid.Parse(uuid); - aRFNodeWorldAnchor.GUID = uuid; - aRFNodeWorldAnchor.title = worldAnchor.Name; - }); - } - } - else - { - float xLocal = node.GetPosition().x; - float yLocal = node.GetPosition().y; - float xServer = SaveInfo.instance.nodePositions[node.GUID].x; ; - float yServer = SaveInfo.instance.nodePositions[node.GUID].y; - if (((xLocal != xServer) || (yLocal != yServer)) || SaveInfo.instance.elemsToUpdate.Contains(node.GUID)) - { - if (node is ARFNodeTrackable aRFNodeTrackable) - { - var posX = new Collection<String>(); - posX.Add(aRFNodeTrackable.GetPosition().x.ToString()); - var posY = new Collection<String>(); - posY.Add(aRFNodeTrackable.GetPosition().y.ToString()); - Trackable trackable = aRFNodeTrackable.trackable; - trackable.KeyvalueTags["unityAuthoringPosX"] = posX; - trackable.KeyvalueTags["unityAuthoringPosY"] = posY; - TrackableRequest.UpdateTrackableAsync(worldStorageServer, trackable, (response) => - { - aRFNodeTrackable.title = trackable.Name; - }); - } - if (node is ARFNodeWorldAnchor aRFNodeWorldAnchor) - { - var posX = new Collection<String>(); - posX.Add(aRFNodeWorldAnchor.GetPosition().x.ToString()); - var posY = new Collection<String>(); - posY.Add(aRFNodeWorldAnchor.GetPosition().y.ToString()); - WorldAnchor worldAnchor = aRFNodeWorldAnchor.worldAnchor; - worldAnchor.KeyvalueTags["unityAuthoringPosX"] = posX; - worldAnchor.KeyvalueTags["unityAuthoringPosY"] = posY; - WorldAnchorRequest.UpdateWorldAnchorAsync(worldStorageServer, worldAnchor, (response) => - { - aRFNodeWorldAnchor.title = worldAnchor.Name; - }); - } - } - } - node.MarkSaved(); - } - foreach (ARFEdgeLink edge in edges) - { - if (edge is ARFEdgeLink aRFEdgeLink) - { - if (!SaveInfo.instance.linkIds.Contains(aRFEdgeLink.GUID)) - { - WorldLink worldLink = aRFEdgeLink.worldLink; - WorldLinkRequest.CreateWorldLinkAsync(worldStorageServer, worldLink, (response) => - { - string uuid = response.result; - uuid = uuid.Replace("\"", ""); - - aRFEdgeLink.worldLink.UUID = Guid.Parse(uuid); - aRFEdgeLink.GUID = uuid; - }); - } - else if (SaveInfo.instance.elemsToUpdate.Contains(aRFEdgeLink.GUID)) - { - WorldLink worldLink = aRFEdgeLink.worldLink; - WorldLinkRequest.UpdateWorldLinkAsync(worldStorageServer, worldLink, (response) => { }); - } - aRFEdgeLink.MarkSaved(); - } - } - SaveInfo.instance.InitNodePos(worldStorageServer, worldStorageUser); - - GraphEditorWindow.ResetWindow(); - } - } -} \ 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 deleted file mode 100644 index e0b1d23..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFGraphView.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -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 deleted file mode 100644 index e4a8844..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs +++ /dev/null @@ -1,140 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: July 2022 -// - -#define USING_OPENAPI_GENERATOR // alt. is Swagger - -using System; - -using UnityEditor; -using UnityEngine.UIElements; -using UnityEditor.Experimental.GraphView; -using UnityEngine; - -using ETSI.ARF.WorldStorage.Editor.Graph; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public abstract class ARFNode : Node - { - public string GUID; - public bool entryPoint = false; - public ARFPort portOut; - public ARFPort portIn; - public GUID id; - - public Image savedIcon; - - public ARFNode() - { - } - public override Port InstantiatePort(Orientation orientation, Direction direction, Port.Capacity capacity, Type type) - { - switch (direction) - { - case Direction.Input: - portIn = ARFPort.CreateARF<ARFEdgeLink>(orientation, direction, capacity, type); - return portIn; - case Direction.Output: - portOut = ARFPort.CreateARF<ARFEdgeLink>(orientation, direction, capacity, type); - return portOut; - default: - return null; - } - } - - public void DisconnectAllPorts(ARFGraphView graphView) - { - DisconnectInputPorts(graphView); - DisconnectOutputPorts(graphView); - } - - private void DisconnectInputPorts(ARFGraphView graphView) - { - DisconnectPorts(inputContainer, graphView); - } - - private void DisconnectOutputPorts(ARFGraphView graphView) - { - DisconnectPorts(outputContainer, graphView); - } - - private void DisconnectPorts(VisualElement container, ARFGraphView graphView) - { - foreach (Port port in container.Children()) - { - if (!port.connected) - { - continue; - } - - graphView.DeleteElements(port.connections); - } - } - - public Port GeneratePort(ARFNode node, Direction portDirection, Port.Capacity capacity = Port.Capacity.Multi) - { - return node.InstantiatePort(Orientation.Horizontal, portDirection, capacity, typeof(int)); // dummy - } - - //override the BuildContextualMenu method to prevent the "disconnect" option from appearing in the contextual menu - public override void BuildContextualMenu(ContextualMenuPopulateEvent evt) - { - } - - public abstract TypeWorldStorage GetElemType(); - public void MarkUnsaved() - { - if(savedIcon == null) - { - //the icon to add if the node does not correspond to an element in the server - Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png", typeof(Texture2D)); - savedIcon = new Image - { - image = warningImage, - scaleMode = ScaleMode.ScaleToFit - }; - savedIcon.style.width = 25; - savedIcon.style.height = 25; - savedIcon.style.minWidth = 25; - savedIcon.style.minHeight = 25; - savedIcon.style.left = 8; - savedIcon.style.paddingRight = 8; - savedIcon.style.alignSelf = Align.Center; - - } - if (!titleContainer.Contains(savedIcon)) - { - titleContainer.Insert(0,savedIcon); - } - tooltip = "This element is not synchronized with the World Storage"; - } - - public void MarkSaved() - { - if (titleContainer.Contains(savedIcon)) - { - titleContainer.Remove(savedIcon); - tooltip = ""; - } - } - - } -} \ No newline at end of file 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 deleted file mode 100644 index 97a115b..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNode.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -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/Graph/ARFNodeTrackable.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeTrackable.cs deleted file mode 100644 index 6c03916..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeTrackable.cs +++ /dev/null @@ -1,85 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -#define USING_OPENAPI_GENERATOR // alt. is Swagger - -using UnityEngine; -using UnityEngine.UIElements; -using UnityEditor; -using UnityEditor.Experimental.GraphView; - -using ETSI.ARF.WorldStorage.Editor.Windows; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public class ARFNodeTrackable : ARFNode - { - public Trackable trackable; - - public ARFNodeTrackable(Trackable trackable) - { - this.trackable = trackable; - this.GUID = trackable.UUID.ToString(); - this.title = trackable.Name; - - /*COLOR*/ - var colorRectangle = new VisualElement(); - colorRectangle.style.height = 160; - colorRectangle.style.height = 5; - colorRectangle.style.backgroundColor = new Color(1, 0.31f, 0.31f, 0.9f); - //get the index of the title container - int titleIndex = mainContainer.hierarchy.IndexOf(titleContainer); - mainContainer.Insert(titleIndex+1, colorRectangle); - - /*PORTS*/ - var portIn = GeneratePort(this, Direction.Input, Port.Capacity.Multi); - portIn.portColor = new Color(0.66f, 0.39f, 1, 0.77f); - portIn.portName = "Target"; // "Input" - //portIn.AddManipulator(new EdgeConnector<ARFEdgeLink>(new WorldLinkListener())); - inputContainer.Add(portIn); - - var portOut = GeneratePort(this, Direction.Output, Port.Capacity.Multi); - portOut.portColor = new Color(0.66f, 0.39f, 1, 0.77f); - portOut.portName = "Source"; // "Output"; - //portOut.AddManipulator(new EdgeConnector<ARFEdgeLink>(new WorldLinkListener())); ; - outputContainer.Add(portOut); - - RefreshExpandedState(); - RefreshPorts(); - - /*MANIPULATOR*/ - var doubleClickManipulator = new Clickable(Clicked); - doubleClickManipulator.activators.Clear(); - doubleClickManipulator.activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse, clickCount = 2 }); - this.AddManipulator(doubleClickManipulator); - } - - public void Clicked() - { - Debug.Log(trackable.ToJson()); - GraphEditorWindow.ShowWindow(this); - } - public override TypeWorldStorage GetElemType() - { - return TypeWorldStorage.TRACKABLE; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeTrackable.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeTrackable.cs.meta deleted file mode 100644 index 17e98f2..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeTrackable.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 01bfb1a0a4a788c48a6c6675034ba8d5 -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/ARFNodeWorldAnchor.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeWorldAnchor.cs deleted file mode 100644 index 9d031e8..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeWorldAnchor.cs +++ /dev/null @@ -1,79 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -using UnityEngine; -using UnityEngine.UIElements; -using UnityEditor.Experimental.GraphView; - -using ETSI.ARF.WorldStorage.Editor.Windows; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public class ARFNodeWorldAnchor : ARFNode - { - public WorldAnchor worldAnchor; - - public ARFNodeWorldAnchor(WorldAnchor worldAnchor) - { - this.worldAnchor = worldAnchor; - this.GUID = worldAnchor.UUID.ToString(); - this.title = worldAnchor.Name; - - /*COLOR*/ - var colorRectangle = new VisualElement(); - colorRectangle.style.height = 160; - colorRectangle.style.height = 5; - colorRectangle.style.backgroundColor = new Color(1, 0.7f, 0, 0.9f); - mainContainer.Insert(1, colorRectangle); - - /*PORTS*/ - var portIn = GeneratePort(this, Direction.Input, Port.Capacity.Multi); - portIn.portColor = new Color(0.66f, 0.39f, 1, 0.77f); - portIn.portName = "Target"; // "Input"; - //portIn.AddManipulator(new EdgeConnector<ARFEdgeLink>(new WorldLinkListener())); - inputContainer.Add(portIn); - - var portOut = GeneratePort(this, Direction.Output, Port.Capacity.Multi); - portOut.portColor = new Color(0.66f, 0.39f, 1, 0.77f); - portOut.portName = "Source"; // "Output"; - //portOut.AddManipulator(new EdgeConnector<ARFEdgeLink>(new WorldLinkListener())); - outputContainer.Add(portOut); - - RefreshExpandedState(); - RefreshPorts(); - - /*MANIPULATOR*/ - var doubleClickManipulator = new Clickable(Clicked); - doubleClickManipulator.activators.Clear(); - doubleClickManipulator.activators.Add(new ManipulatorActivationFilter { button = MouseButton.LeftMouse, clickCount = 2 }); - this.AddManipulator(doubleClickManipulator); - } - - public void Clicked() - { - GraphEditorWindow.ShowWindow(this); - } - public override TypeWorldStorage GetElemType() - { - return TypeWorldStorage.ANCHOR; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeWorldAnchor.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeWorldAnchor.cs.meta deleted file mode 100644 index bb1bb7e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFNodeWorldAnchor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 21e22c1ed011b7a4da95fad83be1d9fa -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/ARFPort.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFPort.cs deleted file mode 100644 index d55d759..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFPort.cs +++ /dev/null @@ -1,80 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -using System; -using System.Collections.Generic; -using UnityEditor.Experimental.GraphView; -using UnityEngine; -using UnityEngine.UIElements; - -using ETSI.ARF.WorldStorage.Editor.Windows; -using ETSI.ARF.WorldStorage.UI; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.Editor.Graph -{ - public class ARFPort : Port - { - protected ARFPort(Orientation portOrientation, Direction portDirection, Capacity portCapacity, Type type) : base(portOrientation, portDirection, portCapacity, type) - { - } - - public override void Connect(Edge edge) - { - base.Connect(edge); - ARFNode fromNode = edge.output.node as ARFNode; - ARFNode toNode = edge.input.node as ARFNode; - - if (edge is ARFEdgeLink aRFedge) - { - Transform3D transform = new Transform3D(); - for (int i = 0; i < 15; i++) - { - transform.Add(0); - } - transform.Add(1); - - WorldLink worldLink = new WorldLink() - { - UUID = Guid.NewGuid(), - CreatorUUID = Guid.Parse(SaveInfo.instance.worldStorageUser.UUID), - UUIDFrom = Guid.Parse(fromNode.GUID), - UUIDTo = Guid.Parse(toNode.GUID), - TypeFrom = fromNode.GetElemType(), - TypeTo = toNode.GetElemType(), - Transform = transform, - Unit = UnitSystem.CM - }; - aRFedge.worldLink = worldLink; - } - } - - public static ARFPort CreateARF<TEdge>(Orientation orientation, Direction direction, Capacity capacity, Type type) where TEdge : Edge, new() - { - WorldLinkListener listener = new WorldLinkListener(); - ARFPort port = new(orientation, direction, capacity, type) - { - m_EdgeConnector = new EdgeConnector<TEdge>(listener) - }; - port.AddManipulator(port.m_EdgeConnector); - return port; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFPort.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFPort.cs.meta deleted file mode 100644 index 6d043fd..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/ARFPort.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3c67fa4402011954bb65be6215d52512 -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/WorldLinkListener.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/WorldLinkListener.cs deleted file mode 100644 index f106c13..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/WorldLinkListener.cs +++ /dev/null @@ -1,98 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -using UnityEngine; -using ETSI.ARF.WorldStorage.Editor.Windows; -using System.Collections.Generic; -using UnityEditor.Experimental.GraphView; -using static UnityEditor.Experimental.GraphView.Port; - -namespace ETSI.ARF.WorldStorage.Editor.Graph -{ - public class WorldLinkListener : IEdgeConnectorListener - { - private GraphViewChange m_GraphViewChange; - - private List<Edge> m_EdgesToCreate; - - private List<GraphElement> m_EdgesToDelete; - - public WorldLinkListener() - { - m_EdgesToCreate = new List<Edge>(); - m_EdgesToDelete = new List<GraphElement>(); - m_GraphViewChange.edgesToCreate = m_EdgesToCreate; - } - public void OnDrop(GraphView graphView, Edge edge) - { - m_EdgesToCreate.Clear(); - m_EdgesToCreate.Add(edge); - m_EdgesToDelete.Clear(); - if (edge.input.capacity == Capacity.Single) - { - foreach (Edge connection in edge.input.connections) - { - if (connection != edge) - { - m_EdgesToDelete.Add(connection); - } - } - } - - if (edge.output.capacity == Capacity.Single) - { - foreach (Edge connection2 in edge.output.connections) - { - if (connection2 != edge) - { - m_EdgesToDelete.Add(connection2); - } - } - } - - if (m_EdgesToDelete.Count > 0) - { - graphView.DeleteElements(m_EdgesToDelete); - } - - List<Edge> edgesToCreate = m_EdgesToCreate; - if (graphView.graphViewChanged != null) - { - edgesToCreate = graphView.graphViewChanged(m_GraphViewChange).edgesToCreate; - } - - foreach (Edge item in edgesToCreate) - { - graphView.AddElement(item); - edge.input.Connect(item); - edge.output.Connect(item); - } - if (!SaveInfo.instance.linkIds.Contains(((ARFEdgeLink)edge).GUID)) - { - ((ARFEdgeLink)edge).MarkUnsaved(); - } - GraphEditorWindow.ShowWindow((ARFEdgeLink)edge); - } - - public void OnDropOutsidePort(Edge edge, Vector2 position) - { - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/WorldLinkListener.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/WorldLinkListener.cs.meta deleted file mode 100644 index e19f2ea..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Graph/WorldLinkListener.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 54dbfcfdc75de1b46bc7da09df52db34 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows.meta deleted file mode 100644 index bf1141a..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fbbff3217b2a8cd428764d83150c7b22 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs deleted file mode 100644 index 64bba1e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs +++ /dev/null @@ -1,118 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -#define isDEBUG - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; - -using UnityEngine; -using UnityEditor; -using TMPro; - -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public abstract class BaseWindow<T> : EditorWindow - { - [HideInInspector] public WorldStorageServer worldStorageServer; - [HideInInspector] public WorldStorageUser worldStorageUser; - - [SerializeField] public List<string> trackables = new List<string>(); - - // - // Keyvalues - // - [SerializeField] protected KeyvalueTagList keyValueTags = new KeyvalueTagList(); - protected List<(string, string)> keyValuesFixed = new List<(string, string)>(3) - { - ("", ""),("", ""),("", "") - }; - protected void OutputKeyValue(int n) - { - string i1 = keyValuesFixed[n].Item1; - string i2 = keyValuesFixed[n].Item2; - i1 = EditorGUILayout.TextField("Key " + n, i1); - i2 = EditorGUILayout.TextField("Value " + n, i2); - keyValuesFixed[n] = (i1, i2); - } - - // - // UI stuffs - // - protected bool groupEnabled; - protected bool repaint = false; - protected Vector2 scrollPos; - protected Color ori; - protected GUIStyle gsTest; - protected string saveText = "Save"; - - public void Update() - { - if (repaint) - { - Repaint(); - repaint = false; - } - } - - void OnGUI() - { - ori = GUI.backgroundColor; // remember ori color - - gsTest = new GUIStyle("window"); - //gsTest.normal.textColor = WorldStorageWindow.arfColors[0]; - gsTest.fontStyle = FontStyle.Bold; - gsTest.alignment = TextAnchor.UpperLeft; - gsTest.fontSize = 16; - - scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true)); - WorldStorageWindow.DrawCopyright(); - - DrawUIStuffs(); - - EditorGUILayout.EndScrollView(); - - if (GUILayout.Button("Close Window")) - { - Close(); - } - } - - public abstract void DrawUIStuffs(); - - public virtual void GetParams() - { - } - - public virtual void AddObject() - { - } - - public virtual T GenerateObject() - { - return default(T); - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs.meta deleted file mode 100644 index eed84fa..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/BaseWindow.cs.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: b879c85f4eccbee40a78e1a01aaf77ca -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: - - m_ViewDataDictionary: {instanceID: 0} - - worldStorageServer: {fileID: 11400000, guid: 4f997253243de534dad12937f1284975, type: 2} - - worldStorageUser: {instanceID: 0} - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs deleted file mode 100644 index 5b4fcf4..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs +++ /dev/null @@ -1,1276 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -using System; -using System.Collections.Generic; - -using UnityEditor; -using UnityEngine; - -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.WorldStorage.UI; -using ETSI.ARF.WorldStorage.Editor.Graph; -using ETSI.ARF.OpenAPI.WorldStorage; -using System.Collections.ObjectModel; - -namespace ETSI.ARF.WorldStorage.Editor.Windows -{ - public class GraphEditorWindow : EditorWindow - { - public enum GraphEditorType - { - TRACKABLE, - WORLDANCHOR, - WORLDLINK, - NULL - } - - public GraphEditorType type; - - public ARFNodeTrackable trackableNode; - public ARFNodeWorldAnchor worldAnchorNode; - public ARFEdgeLink worldLinkEdge; - - public Trackable trackable; - public WorldAnchor worldAnchor; - public WorldLink worldLink; - - public Vector3 local_size; - public Vector3 local_rot; - public Vector3 local_pos; - - //test - string m_newKey = ""; - List<string> m_newValues = new List<string>(); - - // UI stuffs - private Vector2 scrollPos; - static public GraphEditorWindow winSingleton; - - public void OnEnable() - { - ResetWindow(); - } - - public static void ResetWindow() - { - Type inspectorType = Type.GetType("UnityEditor.InspectorWindow,UnityEditor.dll"); - winSingleton = GetWindow<GraphEditorWindow>("Element Editor", true, inspectorType); - winSingleton.trackable = null; - winSingleton.worldAnchor = null; - winSingleton.worldLink = null; - - winSingleton.trackableNode = null; - winSingleton.worldAnchorNode = null; - winSingleton.worldLinkEdge = null; - - winSingleton.local_size = Vector3.zero; - winSingleton.local_rot = Vector3.zero; - winSingleton.local_pos = Vector3.zero; - - winSingleton.type = GraphEditorType.NULL; - } - - public static void ShowWindow(ARFNodeTrackable trackableNode) - { - Type inspectorType = Type.GetType("UnityEditor.InspectorWindow,UnityEditor.dll"); - winSingleton = GetWindow<GraphEditorWindow>("Element Editor", true, inspectorType); - winSingleton.type = GraphEditorType.TRACKABLE; - - winSingleton.trackable = null; - winSingleton.worldAnchor = null; - winSingleton.worldLink = null; - - winSingleton.trackableNode = null; - winSingleton.worldAnchorNode = null; - winSingleton.worldLinkEdge = null; - - winSingleton.trackableNode = trackableNode; - winSingleton.trackable = trackableNode.trackable; - - winSingleton.local_size = new Vector3((float)winSingleton.trackable.TrackableSize[0], (float)winSingleton.trackable.TrackableSize[1], (float)winSingleton.trackable.TrackableSize[2]); - if (winSingleton.trackable.LocalCRS.Count == 16) - { - Matrix4x4 localCRS = new Matrix4x4(); - localCRS.m00 = winSingleton.trackable.LocalCRS[0]; localCRS.m01 = winSingleton.trackable.LocalCRS[1]; localCRS.m02 = winSingleton.trackable.LocalCRS[2]; localCRS.m03 = winSingleton.trackable.LocalCRS[3]; - localCRS.m10 = winSingleton.trackable.LocalCRS[4]; localCRS.m11 = winSingleton.trackable.LocalCRS[5]; localCRS.m12 = winSingleton.trackable.LocalCRS[6]; localCRS.m13 = winSingleton.trackable.LocalCRS[7]; - localCRS.m20 = winSingleton.trackable.LocalCRS[8]; localCRS.m21 = winSingleton.trackable.LocalCRS[9]; localCRS.m22 = winSingleton.trackable.LocalCRS[10]; localCRS.m23 = winSingleton.trackable.LocalCRS[11]; - localCRS.m30 = winSingleton.trackable.LocalCRS[12]; localCRS.m31 = winSingleton.trackable.LocalCRS[13]; localCRS.m32 = winSingleton.trackable.LocalCRS[14]; localCRS.m33 = winSingleton.trackable.LocalCRS[15]; - winSingleton.local_pos = localCRS.GetPosition(); - winSingleton.local_rot = localCRS.rotation.eulerAngles; - } - - } - - public static void ShowWindow(ARFNodeWorldAnchor worldAnchorNode) - { - Type inspectorType = Type.GetType("UnityEditor.InspectorWindow,UnityEditor.dll"); - winSingleton = GetWindow<GraphEditorWindow>("Element Editor", true, inspectorType); - winSingleton.type = GraphEditorType.WORLDANCHOR; - - winSingleton.trackable = null; - winSingleton.worldAnchor = null; - winSingleton.worldLink = null; - - winSingleton.trackableNode = null; - winSingleton.worldAnchorNode = null; - winSingleton.worldLinkEdge = null; - - winSingleton.worldAnchorNode = worldAnchorNode; - winSingleton.worldAnchor = worldAnchorNode.worldAnchor; - - winSingleton.local_size = new Vector3((float)winSingleton.worldAnchor.WorldAnchorSize[0], (float)winSingleton.worldAnchor.WorldAnchorSize[1], (float)winSingleton.worldAnchor.WorldAnchorSize[2]); - if (winSingleton.worldAnchor.LocalCRS.Count == 16) - { - Matrix4x4 localCRS = new Matrix4x4(); - localCRS.m00 = winSingleton.worldAnchor.LocalCRS[0]; localCRS.m01 = winSingleton.worldAnchor.LocalCRS[1]; localCRS.m02 = winSingleton.worldAnchor.LocalCRS[2]; localCRS.m03 = winSingleton.worldAnchor.LocalCRS[3]; - localCRS.m10 = winSingleton.worldAnchor.LocalCRS[4]; localCRS.m11 = winSingleton.worldAnchor.LocalCRS[5]; localCRS.m12 = winSingleton.worldAnchor.LocalCRS[6]; localCRS.m13 = winSingleton.worldAnchor.LocalCRS[7]; - localCRS.m20 = winSingleton.worldAnchor.LocalCRS[8]; localCRS.m21 = winSingleton.worldAnchor.LocalCRS[9]; localCRS.m22 = winSingleton.worldAnchor.LocalCRS[10]; localCRS.m23 = winSingleton.worldAnchor.LocalCRS[11]; - localCRS.m30 = winSingleton.worldAnchor.LocalCRS[12]; localCRS.m31 = winSingleton.worldAnchor.LocalCRS[13]; localCRS.m32 = winSingleton.worldAnchor.LocalCRS[14]; localCRS.m33 = winSingleton.worldAnchor.LocalCRS[15]; - winSingleton.local_pos = localCRS.GetPosition(); - winSingleton.local_rot = localCRS.rotation.eulerAngles; - } - } - - public static void ShowWindow(ARFEdgeLink graphEdge) - { - Type inspectorType = Type.GetType("UnityEditor.InspectorWindow,UnityEditor.dll"); - winSingleton = GetWindow<GraphEditorWindow>("Element Editor", true, inspectorType); - winSingleton.type = GraphEditorType.WORLDLINK; - - winSingleton.trackable = null; - winSingleton.worldAnchor = null; - winSingleton.worldLink = null; - - winSingleton.trackableNode = null; - winSingleton.worldAnchorNode = null; - winSingleton.worldLinkEdge = null; - - winSingleton.worldLinkEdge = graphEdge; - winSingleton.worldLink = graphEdge.worldLink; - - if (winSingleton.worldLink.Transform.Count == 16) - { - Matrix4x4 localCRS = new Matrix4x4(); - localCRS.m00 = winSingleton.worldLink.Transform[0]; localCRS.m01 = winSingleton.worldLink.Transform[1]; localCRS.m02 = winSingleton.worldLink.Transform[2]; localCRS.m03 = winSingleton.worldLink.Transform[3]; - localCRS.m10 = winSingleton.worldLink.Transform[4]; localCRS.m11 = winSingleton.worldLink.Transform[5]; localCRS.m12 = winSingleton.worldLink.Transform[6]; localCRS.m13 = winSingleton.worldLink.Transform[7]; - localCRS.m20 = winSingleton.worldLink.Transform[8]; localCRS.m21 = winSingleton.worldLink.Transform[9]; localCRS.m22 = winSingleton.worldLink.Transform[10]; localCRS.m23 = winSingleton.worldLink.Transform[11]; - localCRS.m30 = winSingleton.worldLink.Transform[12]; localCRS.m31 = winSingleton.worldLink.Transform[13]; localCRS.m32 = winSingleton.worldLink.Transform[14]; localCRS.m33 = winSingleton.worldLink.Transform[15]; - winSingleton.local_pos = localCRS.GetPosition(); - winSingleton.local_rot = localCRS.rotation.eulerAngles; - } - } - - public void OnGUI() - { - scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true)); - - //style for copyrights label (left aligned) - var leftStyle = GUI.skin.GetStyle("Label"); - leftStyle.alignment = TextAnchor.UpperLeft; - - GUILayout.Label("Augmented Reality Framework", leftStyle); - GUILayout.Label("Copyright (C) 2024, ETSI (BSD 3-Clause License)", leftStyle); - - //separator line - Rect rect = EditorGUILayout.GetControlRect(false, 1); - EditorGUI.DrawRect(rect, Color.gray); - - switch (type) - { - case GraphEditorType.WORLDLINK: - BuildWorldLinkUI(); - break; - case GraphEditorType.TRACKABLE: - BuildTrackableUI(); - break; - case GraphEditorType.WORLDANCHOR: - BuildWorldAnchorUI(); - break; - default: - break; - } - - EditorGUILayout.EndScrollView(); - } - - //BUILD UI FOR MODIYING THE WORLDANCHOR - private void BuildWorldAnchorUI() - { - if (worldAnchor != null) - { - - // - //HEADER - // - - //anchor icon - EditorGUILayout.BeginHorizontal(); - Texture anchorImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png", typeof(Texture)); - GUI.backgroundColor = WorldStorageWindow.arfColors[8]; - GUILayout.Box(anchorImage, GUILayout.Width(40), GUILayout.Height(40)); - - //anchor label - EditorGUILayout.BeginVertical(GUILayout.Height(50)); - GUILayout.FlexibleSpace(); - EditorGUILayout.LabelField("WORLD ANCHOR", EditorStyles.boldLabel); - GUILayout.FlexibleSpace(); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndHorizontal(); - - //separator line - var rect = EditorGUILayout.BeginHorizontal(GUILayout.Height(10)); - DrawUILine(new Color(1, 0.7f, 0, 0.9f), 5, 5); - EditorGUILayout.EndHorizontal(); - - if (worldAnchorNode.titleContainer.Contains(worldAnchorNode.savedIcon)) - { - //the icon to add if the node does not correspond to an element in the server - Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/warning.png", typeof(Texture2D)); - - GUI.backgroundColor = Color.clear; - GUILayout.BeginHorizontal(); - GUILayout.Box(warningImage, GUILayout.Width(27), GUILayout.Height(27)); - GUILayout.Label("This element is not synchronized with the World Storage!", EditorStyles.whiteBoldLabel); - - GUILayout.EndHorizontal(); - } - - // - //ELEMENT PARAMETERS - // - - EditorGUI.BeginChangeCheck(); - - //uuid - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("UUID ", EditorStyles.boldLabel, GUILayout.Width(50)); - if (!SaveInfo.instance.nodePositions.ContainsKey(worldAnchor.UUID.ToString())) - { - EditorGUILayout.LabelField("None yet (element not yet saved in the server)"); - } - else - { - EditorGUILayout.SelectableLabel(worldAnchor.UUID.ToString(), EditorStyles.textField, GUILayout.Height(EditorGUIUtility.singleLineHeight)); - } - EditorGUILayout.EndHorizontal(); - - GUI.backgroundColor = Color.white; - - //name - EditorGUILayout.BeginHorizontal(); - EditorGUI.BeginChangeCheck(); - EditorGUILayout.LabelField("Name ", EditorStyles.boldLabel, GUILayout.Width(50)); - worldAnchor.Name = EditorGUILayout.DelayedTextField(worldAnchor.Name); - if (EditorGUI.EndChangeCheck()) - { - worldAnchorNode.title = worldAnchor.Name; - } - EditorGUILayout.EndHorizontal(); - - //unit system - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Unit ", EditorStyles.boldLabel, GUILayout.Width(50)); - worldAnchor.Unit = (UnitSystem)EditorGUILayout.EnumPopup(worldAnchor.Unit); - EditorGUILayout.EndHorizontal(); - - //style for sublabels (right aligned) - var rightStyle = GUI.skin.GetStyle("Label"); - rightStyle.alignment = TextAnchor.UpperRight; - - //size - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Size ", EditorStyles.boldLabel, GUILayout.Width(50)); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Width", rightStyle, GUILayout.Width(50)); - local_size[0] = EditorGUILayout.DelayedFloatField(local_size[0]); - EditorGUILayout.LabelField("Length", rightStyle, GUILayout.Width(50)); - local_size[1] = EditorGUILayout.DelayedFloatField(local_size[1]); - EditorGUILayout.LabelField("Depth", rightStyle, GUILayout.Width(50)); - local_size[2] = EditorGUILayout.DelayedFloatField(local_size[2]); - EditorGUILayout.EndHorizontal(); - - //localCRS - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Local CRS ", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - //position - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Position ", GUILayout.Width(60)); - EditorGUILayout.LabelField("X", rightStyle, GUILayout.Width(15)); - local_pos[0] = EditorGUILayout.DelayedFloatField(local_pos[0]); - EditorGUILayout.LabelField("Y", rightStyle, GUILayout.Width(15)); - local_pos[1] = EditorGUILayout.DelayedFloatField(local_pos[1]); - EditorGUILayout.LabelField("Z", rightStyle, GUILayout.Width(15)); - local_pos[2] = EditorGUILayout.DelayedFloatField(local_pos[2]); - EditorGUILayout.EndHorizontal(); - //rotation - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Rotation ", GUILayout.Width(60)); - EditorGUILayout.LabelField("X", rightStyle, GUILayout.Width(15)); - local_rot[0] = EditorGUILayout.DelayedFloatField(local_rot[0]); - EditorGUILayout.LabelField("Y", rightStyle, GUILayout.Width(15)); - local_rot[1] = EditorGUILayout.DelayedFloatField(local_rot[1]); - EditorGUILayout.LabelField("Z", rightStyle, GUILayout.Width(15)); - local_rot[2] = EditorGUILayout.DelayedFloatField(local_rot[2]); - EditorGUILayout.EndHorizontal(); - - //keyvaluetags=================================================================================================TOBEMODIFIED - /*DrawUILine(Color.gray, 1, 1); - EditorGUILayout.BeginHorizontal(); - GUILayout.Label("Tags ", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.BeginVertical(); - Dictionary<string, List<string>> tempPairs = worldAnchor.KeyvalueTags; - EditorGUILayout.BeginHorizontal(); - m_newKey = GUILayout.TextField(m_newKey, GUILayout.Width(300)); - if (GUILayout.Button("Add Key")) - { - if (m_newKey != "") - { - List<string> emptyList = new List<string>(); - worldAnchor.KeyvalueTags.Add(m_newKey, emptyList); - m_newKey = ""; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - //iterator on m_newValues - int j = 0; - foreach (KeyValuePair<string, List<string>> entry in tempPairs) - { - EditorGUILayout.BeginHorizontal(); - GUILayout.Label(entry.Key); - GUILayout.FlexibleSpace(); - if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(18))) - { - worldAnchor.KeyvalueTags.Remove(entry.Key); - m_newValues[j] = ""; - } - EditorGUILayout.EndHorizontal(); - - - EditorGUILayout.BeginHorizontal(); - List<string> tempValues = entry.Value; - foreach (string value in tempValues) - { - GUILayout.Label(value); - - if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(18))) - { - tempValues.Remove(value); - worldAnchor.KeyvalueTags[entry.Key] = tempValues; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - if (m_newValues.Count < j + 1) - { - string value = ""; - m_newValues.Add(value); - } - m_newValues[j] = GUILayout.TextField(m_newValues[j], GUILayout.Width(200)); - if (GUILayout.Button("Add Value")) - { - if (m_newValues[j] != "") - { - List<string> valueList = entry.Value; - valueList.Add(m_newValues[j]); - worldAnchor.KeyvalueTags[entry.Key] = valueList; - m_newValues[j] = ""; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - - j++; - } - EditorGUILayout.EndVertical();*/ - //keyvaluetags=================================================================================================TOBEMODIFIED - - - //Actions when the ui fields have been changed - if (EditorGUI.EndChangeCheck()) - { - // - Matrix4x4 localCRS = Matrix4x4.TRS(local_pos, Quaternion.Euler(local_rot), Vector3.one); - Transform3D localCRSasFloat = new Transform3D - { - localCRS.m00, localCRS.m01, localCRS.m02, localCRS.m03, - localCRS.m10, localCRS.m11, localCRS.m12, localCRS.m13, - localCRS.m20, localCRS.m21, localCRS.m22, localCRS.m23, - localCRS.m30, localCRS.m31, localCRS.m32, localCRS.m33, - }; - worldAnchor.LocalCRS = localCRSasFloat; - - Size localSizeAsFloat = new Size - { - local_size.x, local_size.y, local_size.z - }; - worldAnchor.WorldAnchorSize = localSizeAsFloat; - - if (SaveInfo.instance.nodePositions.ContainsKey(worldAnchor.UUID.ToString()) && (!SaveInfo.instance.elemsToUpdate.Contains(worldAnchor.UUID.ToString()))) - { - SaveInfo.instance.elemsToUpdate.Add(worldAnchor.UUID.ToString()); - } - worldAnchorNode.MarkUnsaved(); - } - - // - //FOOTER - // - //GUILayout.FlexibleSpace(); - EditorGUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - - var originalColor = GUI.backgroundColor; - - - //reload button - GUI.backgroundColor = Color.yellow; - if (GUILayout.Button("Reload")) - { - //lose focus of fields otherwise the selected field won't updaate - EditorGUI.FocusTextInControl(null); - if (SaveInfo.instance.nodePositions.ContainsKey(worldAnchor.UUID.ToString())) - { - if (SaveInfo.instance.elemsToUpdate.Contains(worldAnchor.UUID.ToString()) && EditorUtility.DisplayDialog("Reset elements", "Are you sure you want to lose all your changes ?", "Yes", "No")) - { - WorldAnchorRequest.GetWorldAnchorAsync(SaveInfo.instance.worldStorageServer, worldAnchor.UUID, (response) => - { - worldAnchor = - worldAnchorNode.worldAnchor = worldAnchor; - ShowWindow(worldAnchorNode); - }); - } - } - else - { - if (EditorUtility.DisplayDialog("Reset elements", "Are you sure you want to lose all your changes ?", "Yes", "No")) - { - //generate the worldAnchor attributes - Transform3D localCRS = new Transform3D(); - for (int i = 0; i < 15; i++) - { - localCRS.Add(0); - } - localCRS.Add(1); - - Size worldAnchorSize = new Size(); - for (int i = 0; i < 3; i++) - { - worldAnchorSize.Add(0); - } - worldAnchor = new WorldAnchor("DefaultWorldAnchor") - { - UUID = Guid.NewGuid(), - CreatorUUID = Guid.Parse(SaveInfo.instance.worldStorageUser.UUID), - LocalCRS = localCRS, - Unit = UnitSystem.CM, - WorldAnchorSize = worldAnchorSize, - KeyvalueTags = new KeyvalueTagList() - }; - worldAnchorNode.worldAnchor = worldAnchor; - ShowWindow(worldAnchorNode); - } - } - } - - // save button - GUI.backgroundColor = Color.green; - if (GUILayout.Button("Save")) - { - System.Guid _creator = Guid.NewGuid(); // System.Guid.Parse(WorldStorageWindow.WorldStorageWindowSingleton.worldStorageUser.UUID); - if (SaveInfo.instance.nodePositions.ContainsKey(worldAnchor.UUID.ToString())) - { - if (SaveInfo.instance.elemsToUpdate.Contains(worldAnchor.UUID.ToString())) - { - WorldAnchorRequest.UpdateWorldAnchorAsync(SaveInfo.instance.worldStorageServer, worldAnchor, (response) => - { - SaveInfo.instance.elemsToUpdate.Remove(worldAnchor.UUID.ToString()); - }); - } - } - else - { - var posX = new Collection<String>(); - posX.Add(worldAnchorNode.GetPosition().x.ToString()); - var posY = new Collection<String>(); - posY.Add(worldAnchorNode.GetPosition().y.ToString()); - - WorldAnchor worldAnchor = worldAnchorNode.worldAnchor; - worldAnchor.KeyvalueTags["unityAuthoringPosX"] = posX; - worldAnchor.KeyvalueTags["unityAuthoringPosY"] = posY; - - WorldAnchorRequest.CreateWorldAnchorAsync(SaveInfo.instance.worldStorageServer, worldAnchor, (response) => - { - String uuid = response.result; - - //change the uuid in its edges, if there is a new edge to be added in the world storage it needs to have the correct uuid - uuid = uuid.Replace("\"", ""); - foreach (ARFEdgeLink edge in worldAnchorNode.portIn.connections) - { - edge.worldLink.UUIDTo = Guid.Parse(uuid); - } - foreach (ARFEdgeLink edge in worldAnchorNode.portOut.connections) - { - edge.worldLink.UUIDFrom = Guid.Parse(uuid); - } - worldAnchorNode.worldAnchor.UUID = Guid.Parse(uuid); - worldAnchorNode.GUID = uuid; - worldAnchorNode.title = worldAnchor.Name; - - //Add the newly saved World Anchor to the SaveInfo singleton - Rect trackPos = new(worldAnchorNode.GetPosition().x, worldAnchorNode.GetPosition().y, 135, 77); - SaveInfo.instance.nodePositions[uuid] = trackPos; - }); - } - worldAnchorNode.MarkSaved(); - } - GUILayout.Space(10); - EditorGUILayout.EndHorizontal(); - GUILayout.Space(10); - - GUI.backgroundColor = originalColor; - - - } - } - - private void BuildTrackableUI() - { - if (trackable != null) - { - // - //HEADER - // - - //trackable icon - EditorGUILayout.BeginHorizontal(); - Texture trackImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png", typeof(Texture)); - GUI.backgroundColor = WorldStorageWindow.arfColors[7]; - GUILayout.Box(trackImage, GUILayout.Width(40), GUILayout.Height(40)); - - //trackable label - EditorGUILayout.BeginVertical(GUILayout.Height(50)); - GUILayout.FlexibleSpace(); - EditorGUILayout.LabelField("TRACKABLE", EditorStyles.boldLabel); - GUILayout.FlexibleSpace(); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndHorizontal(); - - //separator line - var rect = EditorGUILayout.BeginHorizontal(GUILayout.Height(10)); - DrawUILine(new Color(1, 0.31f, 0.31f, 0.9f), 5, 0); - EditorGUILayout.EndHorizontal(); - - if (trackableNode.titleContainer.Contains(trackableNode.savedIcon)) - { - //the icon to add if the node does not correspond to an element in the server - Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/warning.png", typeof(Texture2D)); - - GUI.backgroundColor = Color.clear; - GUILayout.BeginHorizontal(); - GUILayout.Box(warningImage, GUILayout.Width(27), GUILayout.Height(27)); - GUILayout.Label("This element is not synchronized with the World Storage!", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - } - - // - //ELEMENT PARAMETERS - // - - EditorGUI.BeginChangeCheck(); - - //uuid - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("UUID ", EditorStyles.boldLabel, GUILayout.Width(50)); - if (!SaveInfo.instance.nodePositions.ContainsKey(trackable.UUID.ToString())) - { - EditorGUILayout.LabelField("None yet (element not yet saved in the server)"); - } - else - { - EditorGUILayout.SelectableLabel(trackable.UUID.ToString(), EditorStyles.textField, GUILayout.Height(EditorGUIUtility.singleLineHeight)); - } - EditorGUILayout.EndHorizontal(); - - GUI.backgroundColor = Color.white; - - //name - EditorGUILayout.BeginHorizontal(); - EditorGUI.BeginChangeCheck(); - EditorGUILayout.LabelField("Name ", EditorStyles.boldLabel, GUILayout.Width(50)); - trackable.Name = EditorGUILayout.DelayedTextField(trackable.Name); - if (EditorGUI.EndChangeCheck()) - { - trackableNode.title = trackable.Name; - } - EditorGUILayout.EndHorizontal(); - - //trackable's type - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Type ", EditorStyles.boldLabel, GUILayout.Width(50)); - trackable.TrackableType = (TrackableType)EditorGUILayout.EnumPopup(trackable.TrackableType); - EditorGUILayout.EndHorizontal(); - - //unit system - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Unit ", EditorStyles.boldLabel, GUILayout.Width(50)); - trackable.Unit = (UnitSystem)EditorGUILayout.EnumPopup(trackable.Unit); - EditorGUILayout.EndHorizontal(); - - //style for sublabels (right aligned) - var rightStyle = GUI.skin.GetStyle("Label"); - rightStyle.alignment = TextAnchor.UpperRight; - - //size - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Size ", EditorStyles.boldLabel, GUILayout.Width(50)); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Width", rightStyle, GUILayout.Width(50)); - local_size[0] = EditorGUILayout.DelayedFloatField(local_size[0]); - EditorGUILayout.LabelField("Length", rightStyle, GUILayout.Width(50)); - local_size[1] = EditorGUILayout.DelayedFloatField(local_size[1]); - EditorGUILayout.LabelField("Depth", rightStyle, GUILayout.Width(50)); - local_size[2] = EditorGUILayout.DelayedFloatField(local_size[2]); - EditorGUILayout.EndHorizontal(); - - //localCRS - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Local CRS ", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - //position - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Position ", GUILayout.Width(60)); - EditorGUILayout.LabelField("X", rightStyle, GUILayout.Width(15)); - local_pos[0] = EditorGUILayout.DelayedFloatField(local_pos[0]); - EditorGUILayout.LabelField("Y", rightStyle, GUILayout.Width(15)); - local_pos[1] = EditorGUILayout.DelayedFloatField(local_pos[1]); - EditorGUILayout.LabelField("Z", rightStyle, GUILayout.Width(15)); - local_pos[2] = EditorGUILayout.DelayedFloatField(local_pos[2]); - EditorGUILayout.EndHorizontal(); - //rotation - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Rotation ", GUILayout.Width(60)); - EditorGUILayout.LabelField("X", rightStyle, GUILayout.Width(15)); - local_rot[0] = EditorGUILayout.DelayedFloatField(local_rot[0]); - EditorGUILayout.LabelField("Y", rightStyle, GUILayout.Width(15)); - local_rot[1] = EditorGUILayout.DelayedFloatField(local_rot[1]); - EditorGUILayout.LabelField("Z", rightStyle, GUILayout.Width(15)); - local_rot[2] = EditorGUILayout.DelayedFloatField(local_rot[2]); - EditorGUILayout.EndHorizontal(); - - //encodingInofrmation - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Trackable Information ", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Format ", GUILayout.Width(50)); - trackable.TrackableEncodingInformation.DataFormat = (EncodingInformationStructureDataFormat)EditorGUILayout.EnumPopup(trackable.TrackableEncodingInformation.DataFormat); - EditorGUILayout.LabelField("Version ", GUILayout.Width(50)); - float floatVersion; - if (trackable.TrackableEncodingInformation.Version != null) - { - floatVersion = EditorGUILayout.DelayedFloatField(float.Parse(trackable.TrackableEncodingInformation.Version.Replace(".", ","))); - } - else - { - floatVersion = EditorGUILayout.DelayedFloatField(0); - } - trackable.TrackableEncodingInformation.Version = floatVersion.ToString(); - EditorGUILayout.EndHorizontal(); - - /*//trackable payload - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Trackable Payload ", EditorStyles.boldLabel, GUILayout.Width(140)); - EditorGUILayout.LabelField("==============================================================================="); - EditorGUILayout.EndHorizontal();*/ - - //keyvaluetags=================================================================================================TOBEMODIFIED - /*EditorGUILayout.BeginHorizontal(); - GUILayout.Label("Tags ", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.BeginVertical(); - Dictionary<string, List<string>> tempPairs = trackable.KeyvalueTags; - EditorGUILayout.BeginHorizontal(); - m_newKey = GUILayout.TextField(m_newKey, GUILayout.Width(300)); - if (GUILayout.Button("Add Key")) - { - if (m_newKey != "") - { - List<string> emptyList = new List<string>(); - trackable.KeyvalueTags.Add(m_newKey, emptyList); - m_newKey = ""; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - //iterator on m_newValues - int j = 0; - foreach (KeyValuePair<string, List<string>> entry in tempPairs) - { - DrawUILine(Color.gray, 1, 1); - EditorGUILayout.BeginHorizontal(); - GUILayout.Label(entry.Key); - GUILayout.FlexibleSpace(); - if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(18))) - { - trackable.KeyvalueTags.Remove(entry.Key); - m_newValues[j] = ""; - } - EditorGUILayout.EndHorizontal(); - - - EditorGUILayout.BeginHorizontal(); - List<string> tempValues = entry.Value; - foreach (string value in tempValues) - { - GUILayout.Label(value); - - if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(18))) - { - tempValues.Remove(value); - trackable.KeyvalueTags[entry.Key] = tempValues; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - if (m_newValues.Count < j + 1) - { - string value = ""; - m_newValues.Add(value); - } - m_newValues[j] = GUILayout.TextField(m_newValues[j], GUILayout.Width(200)); - if (GUILayout.Button("Add Value")) - { - if (m_newValues[j] != "") - { - List<string> valueList = entry.Value; - valueList.Add(m_newValues[j]); - trackable.KeyvalueTags[entry.Key] = valueList; - m_newValues[j] = ""; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - - j++; - } - EditorGUILayout.EndVertical();*//*EditorGUILayout.BeginHorizontal(); - GUILayout.Label("Tags ", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - - EditorGUILayout.BeginVertical(); - Dictionary<string, List<string>> tempPairs = trackable.KeyvalueTags; - EditorGUILayout.BeginHorizontal(); - m_newKey = GUILayout.TextField(m_newKey, GUILayout.Width(300)); - if (GUILayout.Button("Add Key")) - { - if (m_newKey != "") - { - List<string> emptyList = new List<string>(); - trackable.KeyvalueTags.Add(m_newKey, emptyList); - m_newKey = ""; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - //iterator on m_newValues - int j = 0; - foreach (KeyValuePair<string, List<string>> entry in tempPairs) - { - DrawUILine(Color.gray, 1, 1); - EditorGUILayout.BeginHorizontal(); - GUILayout.Label(entry.Key); - GUILayout.FlexibleSpace(); - if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(18))) - { - trackable.KeyvalueTags.Remove(entry.Key); - m_newValues[j] = ""; - } - EditorGUILayout.EndHorizontal(); - - - EditorGUILayout.BeginHorizontal(); - List<string> tempValues = entry.Value; - foreach (string value in tempValues) - { - GUILayout.Label(value); - - if (GUILayout.Button("x", GUILayout.Width(18), GUILayout.Height(18))) - { - tempValues.Remove(value); - trackable.KeyvalueTags[entry.Key] = tempValues; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - if (m_newValues.Count < j + 1) - { - string value = ""; - m_newValues.Add(value); - } - m_newValues[j] = GUILayout.TextField(m_newValues[j], GUILayout.Width(200)); - if (GUILayout.Button("Add Value")) - { - if (m_newValues[j] != "") - { - List<string> valueList = entry.Value; - valueList.Add(m_newValues[j]); - trackable.KeyvalueTags[entry.Key] = valueList; - m_newValues[j] = ""; - } - } - GUILayout.FlexibleSpace(); - EditorGUILayout.EndHorizontal(); - - j++; - } - EditorGUILayout.EndVertical();*/ - //keyvaluetags=================================================================================================TOBEMODIFIED - - - //Actions when the ui fields have been changed - if (EditorGUI.EndChangeCheck()) - { - // - Matrix4x4 localCRS = Matrix4x4.TRS(local_pos, Quaternion.Euler(local_rot), Vector3.one); - Transform3D localCRSasFloat = new Transform3D - { - localCRS.m00, localCRS.m01, localCRS.m02, localCRS.m03, - localCRS.m10, localCRS.m11, localCRS.m12, localCRS.m13, - localCRS.m20, localCRS.m21, localCRS.m22, localCRS.m23, - localCRS.m30, localCRS.m31, localCRS.m32, localCRS.m33, - }; - trackable.LocalCRS = localCRSasFloat; - - Size localSizeAsFloat = new Size - { - local_size.x, local_size.y, local_size.z - }; - trackable.TrackableSize = localSizeAsFloat; - - if (SaveInfo.instance.nodePositions.ContainsKey(trackable.UUID.ToString()) && (!SaveInfo.instance.elemsToUpdate.Contains(trackable.UUID.ToString()))) - { - SaveInfo.instance.elemsToUpdate.Add(trackable.UUID.ToString()); - } - trackableNode.MarkUnsaved(); - } - - // - //FOOTER - // - GUILayout.FlexibleSpace(); - EditorGUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - - var originalColor = GUI.backgroundColor; - - //reload button - GUI.backgroundColor = Color.yellow; - if (GUILayout.Button("Reload")) - { - //lose focus of fields otherwise the selected field won't updaate - EditorGUI.FocusTextInControl(null); - if (SaveInfo.instance.nodePositions.ContainsKey(trackable.UUID.ToString())) - { - if (SaveInfo.instance.elemsToUpdate.Contains(trackable.UUID.ToString()) && EditorUtility.DisplayDialog("Reset elements", "Are you sure you want to lose all your changes ?", "Yes", "No")) - { - TrackableRequest.GetTrackableAsync(SaveInfo.instance.worldStorageServer, trackable.UUID, (response) => - { - trackable = response.result; - trackableNode.trackable = trackable; - ShowWindow(trackableNode); - }); - } - } - else - { - if (EditorUtility.DisplayDialog("Reset elements", "Are you sure you want to lose all your changes ?", "Yes", "No")) - { - //generate the Trackables's attributes - EncodingInformationStructure trackableEncodingInformation = new EncodingInformationStructure() - { - DataFormat = EncodingInformationStructureDataFormat.OTHER, - Version = "0" - }; - - Transform3D localCRS = new Transform3D(); - for (int i = 0; i < 15; i++) - { - localCRS.Add(0); - } - localCRS.Add(1); - - Size trackableSize = new Size(); - for (int i = 0; i < 3; i++) - { - trackableSize.Add(0); - } - - Trackable trackable = new Trackable("DefaultTrackable") - { - UUID = Guid.NewGuid(), - CreatorUUID = Guid.Parse(SaveInfo.instance.worldStorageUser.UUID), - TrackableType = TrackableType.OTHER, - TrackableEncodingInformation = trackableEncodingInformation, - TrackablePayload = new byte[64], - LocalCRS = localCRS, - Unit = UnitSystem.CM, - Confidence = 0, - TrackableSize = trackableSize, - KeyvalueTags = new KeyvalueTagList() - }; - trackableNode.trackable = trackable; - ShowWindow(trackableNode); - } - } - } - - //save button - GUI.backgroundColor = Color.green; - if (GUILayout.Button("Save")) - { - if (SaveInfo.instance.nodePositions.ContainsKey(trackable.UUID.ToString())) - { - if (SaveInfo.instance.elemsToUpdate.Contains(trackable.UUID.ToString())) - { - TrackableRequest.UpdateTrackableAsync(SaveInfo.instance.worldStorageServer, trackable, (response) => - { - SaveInfo.instance.elemsToUpdate.Remove(trackable.UUID.ToString()); - }); - } - } - else - { - var posX = new Collection<String>(); - posX.Add(trackableNode.GetPosition().x.ToString()); - var posY = new Collection<String>(); - posY.Add(trackableNode.GetPosition().y.ToString()); - Trackable trackable = trackableNode.trackable; - trackable.KeyvalueTags["unityAuthoringPosX"] = posX; - trackable.KeyvalueTags["unityAuthoringPosY"] = posY; - TrackableRequest.CreateTrackableAsync(SaveInfo.instance.worldStorageServer, trackable, (response) => - { - String uuid = response.result; - - //change the uuid in its edges, if there is a new edge to be added in the world storage it needs to have the correct uuid - uuid = uuid.Replace("\"", ""); - foreach (ARFEdgeLink edge in trackableNode.portIn.connections) - { - edge.worldLink.UUIDTo = Guid.Parse(uuid); - } - foreach (ARFEdgeLink edge in trackableNode.portOut.connections) - { - edge.worldLink.UUIDFrom = Guid.Parse(uuid); - } - trackableNode.trackable.UUID = Guid.Parse(uuid); - trackableNode.GUID = uuid; - trackableNode.title = trackable.Name; - - //Add the newly saved Trackable to the SaveInfo singleton - Rect trackPos = new(trackableNode.GetPosition().x, trackableNode.GetPosition().y, 135, 77); - SaveInfo.instance.nodePositions[uuid] = trackPos; - }); - } - trackableNode.MarkSaved(); - } - GUILayout.Space(10); - EditorGUILayout.EndHorizontal(); - GUILayout.Space(10); - - GUI.backgroundColor = originalColor; - - - } - } - - private void BuildWorldLinkUI() - { - if (worldLink != null) - { - // - //HEADER - // - - //world link icon - EditorGUILayout.BeginHorizontal(); - Texture linkImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/link.png", typeof(Texture)); - GUI.backgroundColor = WorldStorageWindow.arfColors[9]; - GUILayout.Box(linkImage, GUILayout.Width(40), GUILayout.Height(40)); - - //world link label - EditorGUILayout.BeginVertical(GUILayout.Height(50)); - GUILayout.FlexibleSpace(); - EditorGUILayout.LabelField("WORLD LINK", EditorStyles.boldLabel); - GUILayout.FlexibleSpace(); - EditorGUILayout.EndVertical(); - EditorGUILayout.EndHorizontal(); - - //separator line - var rect = EditorGUILayout.BeginHorizontal(GUILayout.Height(10)); - DrawUILine(new Color(0.66f, 0.39f, 1, 0.77f), 5, 5); - EditorGUILayout.EndHorizontal(); - - if (worldLinkEdge.contentContainer.Contains(worldLinkEdge.savedIcon)) - { - //the icon to add if the node does not correspond to an element in the server - Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/warning.png", typeof(Texture2D)); - - GUI.backgroundColor = Color.clear; - GUILayout.BeginHorizontal(); - GUILayout.Box(warningImage, GUILayout.Width(27), GUILayout.Height(27)); - GUILayout.Label("This element is not synchronized with the World Storage!", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - } - - //ELEMENT'S ATTRIBUTES - EditorGUI.BeginChangeCheck(); - - GUI.backgroundColor = Color.white; - - //uuid - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("UUID ", EditorStyles.boldLabel, GUILayout.Width(50)); - if (!SaveInfo.instance.linkIds.Contains(worldLink.UUID.ToString())) - { - EditorGUILayout.LabelField("None yet (element not yet saved in the server)"); - } - else - { - EditorGUILayout.SelectableLabel(worldLink.UUID.ToString(), EditorStyles.textField, GUILayout.Height(EditorGUIUtility.singleLineHeight)); - } - EditorGUILayout.EndHorizontal(); - - //source element - EditorGUILayout.LabelField("Source Element (From element)", EditorStyles.boldLabel); - EditorGUILayout.BeginHorizontal(); - GUILayout.Space(50); - EditorGUILayout.LabelField("Name ", GUILayout.Width(75)); - EditorGUILayout.LabelField(worldLinkEdge.output.node.title); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - GUILayout.Space(50); - EditorGUILayout.LabelField("Type ", GUILayout.Width(75)); - EditorGUILayout.LabelField(worldLink.TypeFrom.ToString(), GUILayout.Width(80)); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - GUILayout.Space(50); - EditorGUILayout.LabelField("UUID ", GUILayout.Width(75)); - if (SaveInfo.instance.nodePositions.ContainsKey(worldLink.UUIDFrom.ToString())) - { - EditorGUILayout.LabelField(worldLink.UUIDFrom.ToString()); - } - else - { - EditorGUILayout.LabelField("no UUID yet (element not yet saved in the server)"); - } - EditorGUILayout.EndHorizontal(); - - //target element - EditorGUILayout.LabelField("Target Element (To element)", EditorStyles.boldLabel); - EditorGUILayout.BeginHorizontal(); - GUILayout.Space(50); - EditorGUILayout.LabelField("Name ", GUILayout.Width(70)); - EditorGUILayout.LabelField(worldLinkEdge.input.node.title); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - GUILayout.Space(50); - EditorGUILayout.LabelField("Type ", GUILayout.Width(70)); - EditorGUILayout.LabelField(worldLink.TypeTo.ToString(), GUILayout.Width(80)); - EditorGUILayout.EndHorizontal(); - EditorGUILayout.BeginHorizontal(); - GUILayout.Space(50); - EditorGUILayout.LabelField("UUID ", GUILayout.Width(70)); - if (SaveInfo.instance.nodePositions.ContainsKey(worldLink.UUIDTo.ToString())) - { - EditorGUILayout.LabelField(worldLink.UUIDTo.ToString()); - } - else - { - EditorGUILayout.LabelField("no UUID yet (element not yet saved in the server)"); - } - EditorGUILayout.EndHorizontal(); - - //unit system - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Unit ", EditorStyles.boldLabel, GUILayout.Width(50)); - worldLink.Unit = (UnitSystem)EditorGUILayout.EnumPopup(worldLink.Unit); - EditorGUILayout.EndHorizontal(); - - //style for sublabels (right aligned) - var rightStyle = GUI.skin.GetStyle("Label"); - rightStyle.alignment = TextAnchor.UpperRight; - - //localCRS - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("3D Transform ", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - //position - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Position ", GUILayout.Width(60)); - EditorGUILayout.LabelField("X", rightStyle, GUILayout.Width(15)); - local_pos[0] = EditorGUILayout.DelayedFloatField(local_pos[0]); - EditorGUILayout.LabelField("Y", rightStyle, GUILayout.Width(15)); - local_pos[1] = EditorGUILayout.DelayedFloatField(local_pos[1]); - EditorGUILayout.LabelField("Z", rightStyle, GUILayout.Width(15)); - local_pos[2] = EditorGUILayout.DelayedFloatField(local_pos[2]); - EditorGUILayout.EndHorizontal(); - //rotation - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField("Rotation ", GUILayout.Width(60)); - EditorGUILayout.LabelField("X", rightStyle, GUILayout.Width(15)); - local_rot[0] = EditorGUILayout.DelayedFloatField(local_rot[0]); - EditorGUILayout.LabelField("Y", rightStyle, GUILayout.Width(15)); - local_rot[1] = EditorGUILayout.DelayedFloatField(local_rot[1]); - EditorGUILayout.LabelField("Z", rightStyle, GUILayout.Width(15)); - local_rot[2] = EditorGUILayout.DelayedFloatField(local_rot[2]); - EditorGUILayout.EndHorizontal(); - - //Actions when the ui fields have been changed - if (EditorGUI.EndChangeCheck()) - { - // - Matrix4x4 localCRS = Matrix4x4.TRS(local_pos, Quaternion.Euler(local_rot), Vector3.one); - Transform3D localCRSasFloat = new Transform3D - { - localCRS.m00, localCRS.m01, localCRS.m02, localCRS.m03, - localCRS.m10, localCRS.m11, localCRS.m12, localCRS.m13, - localCRS.m20, localCRS.m21, localCRS.m22, localCRS.m23, - localCRS.m30, localCRS.m31, localCRS.m32, localCRS.m33, - }; - worldLink.Transform = localCRSasFloat; - - if (SaveInfo.instance.linkIds.Contains(worldLink.UUID.ToString()) && (!SaveInfo.instance.elemsToUpdate.Contains(worldLink.UUID.ToString()))) - { - SaveInfo.instance.elemsToUpdate.Add(worldLink.UUID.ToString()); - } - worldLinkEdge.MarkUnsaved(); - } - - // - //FOOTER - // - GUILayout.FlexibleSpace(); - EditorGUILayout.BeginHorizontal(); - GUILayout.FlexibleSpace(); - - var originalColor = GUI.backgroundColor; - - //reload button - GUI.backgroundColor = Color.yellow; - if (GUILayout.Button("Reload")) - { - //lose focus of fields otherwise the selected field won't updaate - EditorGUI.FocusTextInControl(null); - if (SaveInfo.instance.linkIds.Contains(worldLink.UUID.ToString())) - { - if (SaveInfo.instance.elemsToUpdate.Contains(worldLink.UUID.ToString()) && EditorUtility.DisplayDialog("Reset elements", "Are you sure you want to lose all your changes ?", "Yes", "No")) - { - WorldLinkRequest.GetWorldLinkAsync(SaveInfo.instance.worldStorageServer, worldLink.UUID, (response) => - { - worldLink = response.result; - worldLinkEdge.worldLink = worldLink; - ShowWindow(worldLinkEdge); - }); - } - } - else - { - if (EditorUtility.DisplayDialog("Reset elements", "Are you sure you want to lose all your changes ?", "Yes", "No")) - { - Transform3D transform = new Transform3D(); - for (int i = 0; i < 15; i++) - { - transform.Add(0); - } - transform.Add(1); - - worldLink.Transform = transform; - worldLink.Unit = UnitSystem.CM; - ShowWindow(worldLinkEdge); - } - } - } - - //save button - GUI.backgroundColor = Color.green; - if (GUILayout.Button("Save")) - { - //if one of the connected elements is not in the server, you can't save the link - if ((SaveInfo.instance.nodePositions.ContainsKey(worldLink.UUIDTo.ToString()) && SaveInfo.instance.nodePositions.ContainsKey(worldLink.UUIDFrom.ToString()))) - { - if (SaveInfo.instance.linkIds.Contains(worldLink.UUID.ToString())) - { - if (SaveInfo.instance.elemsToUpdate.Contains(worldLink.UUID.ToString())) - { - WorldLinkRequest.UpdateWorldLinkAsync(SaveInfo.instance.worldStorageServer, worldLink, (response) => - { - SaveInfo.instance.elemsToUpdate.Remove(worldLink.UUID.ToString()); - }); - } - } - else - { - WorldLinkRequest.CreateWorldLinkAsync(SaveInfo.instance.worldStorageServer, worldLink, (response) => - { - String uuid = response.result; - - //Add the newly saved WorldLink to the SaveInfo singleton - uuid = uuid.Replace("\"", ""); - worldLink.UUID = Guid.Parse(uuid); - worldLinkEdge.GUID = uuid; - SaveInfo.instance.linkIds.Add(uuid); - }); - } - worldLinkEdge.MarkSaved(); - } - else - { - EditorUtility.DisplayDialog("Error", "You are not able to save this link because at least one of its connected elements is not saved in the World Storage", "Ok"); - } - } - GUILayout.Space(10); - EditorGUILayout.EndHorizontal(); - GUILayout.Space(10); - - } - } - - //utilty method to draw lines - public static void DrawUILine(Color color, int thickness = 2, int padding = 10) - { - Rect r = EditorGUILayout.GetControlRect(GUILayout.Height(padding + thickness)); - r.height = thickness; - r.y += padding / 2; - r.x -= 2; - r.width += 6; - EditorGUI.DrawRect(r, color); - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs.meta deleted file mode 100644 index 1079749..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/GraphEditorWindow.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e219817d65c8b1f40ad85e6185e89e92 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs deleted file mode 100644 index 69f7b22..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs +++ /dev/null @@ -1,378 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -#define isDEBUG - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; - -using UnityEngine; -using UnityEditor; -using TMPro; - -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public class TrackableWindow : BaseWindow<Trackable> - { - static public TrackableWindow winSingleton; - - // Trackable params - string UUID = System.Guid.Empty.ToString(); - string customName = "NotDefined"; - string creatorUUID = System.Guid.Empty.ToString(); - double confidence = 0f; - TrackableType type = TrackableType.OTHER; - UnitSystem unit = UnitSystem.CM; - Vector3 trackableSize; - Vector3 localCRS_pos; - Vector3 localCRS_rot; - byte[] trackablePayload = new byte[1] { 0 }; - - //graph params to generate the node - public bool useCoord; - public float nodePosX = 0; - public float nodePosY = 0; - - public TrackableWindow() - { - // init somne stuffs - } - - public static void ShowWindow(WorldStorageServer ws, WorldStorageUser user, string UUID = "") - { - winSingleton = EditorWindow.GetWindow(typeof(TrackableWindow), false, "ETSI ARF - Trackable") as TrackableWindow; - winSingleton.worldStorageServer = ws; - winSingleton.worldStorageUser = user; - if (!string.IsNullOrEmpty(UUID)) - { - winSingleton.saveText = "Update"; - winSingleton.UUID = UUID; - winSingleton.GetParams(); - } - else - { - // Create new one - winSingleton.saveText = "Create"; - winSingleton.AddObject(); - } - } - - public static GameObject GenerateAndUpdateVisual(string UUID, string name, Vector3 pos, Vector3 rot) - { - ETSI.ARF.WorldStorage.UI.Prefabs.WorldStoragePrefabs prefabs; - prefabs = (Prefabs.WorldStoragePrefabs)Resources.Load("ARFPrefabs"); - GameObject arf = GameObject.Find("ARF Visuals"); - GameObject visual = GameObject.Find(UUID); - - if (arf == null) arf = new GameObject("ARF Visuals"); - if (visual == null) - { - visual = SceneAsset.Instantiate<GameObject>(prefabs.trackablePrefab, pos, Quaternion.Euler(rot), arf.transform); // TODO rot - visual.name = UUID; - } - else - { - visual.transform.SetPositionAndRotation(pos, Quaternion.Euler(rot)); - } - visual.transform.Find("Canvas/Text").GetComponent<TextMeshProUGUI>().text = $"Name: { name }\nUUID: { UUID }"; - return visual; - } - - void OnGUI() - { - ori = GUI.backgroundColor; // remember ori color - - gsTest = new GUIStyle("window"); - //gsTest.normal.textColor = WorldStorageWindow.arfColors[0]; - gsTest.fontStyle = FontStyle.Bold; - gsTest.alignment = TextAnchor.UpperLeft; - gsTest.fontSize = 16; - - scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true)); - WorldStorageWindow.DrawCopyright(); - - DrawUIStuffs(); - - EditorGUILayout.EndScrollView(); - - if (GUILayout.Button("Close Window")) - { - Close(); - } - } - - public override void DrawUIStuffs()// Trackable trackable) - { - GUILayout.BeginVertical(); // "Trackable Editor", gsTest); - EditorGUILayout.Space(); - - GUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[7]; - Texture trackableImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png", typeof(Texture)); - GUILayout.Box(trackableImage, GUILayout.Width(24), GUILayout.Height(24)); - GUI.backgroundColor = ori; - GUILayout.Label("Trackable Parameters:", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - - Rect rect = EditorGUILayout.GetControlRect(false, WorldStorageWindow.lineH); - EditorGUI.DrawRect(rect, WorldStorageWindow.arfColors[7]); - - // - GUILayout.Label("Server: " + worldStorageServer.serverName, EditorStyles.whiteLargeLabel); - GUILayout.Label("User: " + worldStorageUser.userName, EditorStyles.whiteLargeLabel); - EditorGUILayout.Space(); - -#if isDEBUG - GUILayout.Label("UUID: " + UUID, EditorStyles.miniLabel); // readonly - GUILayout.Label("Creator UID: " + creatorUUID, EditorStyles.miniLabel); // readonly - EditorGUILayout.Space(); -#endif - customName = EditorGUILayout.TextField("Name of Trackable:", customName); - EditorGUILayout.Space(); - - // --------------------- - // Toolbar - // --------------------- - EditorGUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[2]; - if (GUILayout.Button(saveText)) - { - Debug.Log("PUT Trackable"); - - if (!string.IsNullOrEmpty(UUID) && UUID != "0" && UUID != System.Guid.Empty.ToString()) - { - Trackable obj = GenerateObject(); - TrackableRequest.UpdateTrackableAsync(worldStorageServer, obj, (response) => - { - UUID = response.result; - UUID = UUID.Trim('"'); //Bugfix: remove " from server return value - - if (WorldStorageWindow.WorldStorageWindowSingleton != null) - { - WorldStorageWindow.WorldStorageWindowSingleton.GetTrackables(); - } - Close(); - }); - } - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("Delete")) - { - if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this Trackable?", "Delete", "Cancel")) - { - Debug.Log("Delete Trackable"); - TrackableRequest.DeleteTrackableAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - UUID = System.Guid.Empty.ToString(); - customName = "Warning: Object deleted !"; - creatorUUID = System.Guid.Empty.ToString(); - confidence = 0f; - type = TrackableType.OTHER; - unit = UnitSystem.CM; - if (WorldStorageWindow.WorldStorageWindowSingleton != null) - { - WorldStorageWindow.WorldStorageWindowSingleton.GetTrackables(); - } - Close(); - }); - } - } - GUI.backgroundColor = ori; - - GUI.backgroundColor = WorldStorageWindow.arfColors[5]; - if (GUILayout.Button("Generate/Update GameObject")) - { - GenerateAndUpdateVisual(UUID, customName, localCRS_pos, localCRS_rot); - } - GUI.backgroundColor = ori; - EditorGUILayout.EndHorizontal(); - EditorGUILayout.Space(); - - // --------------------- - // Params - // --------------------- - type = (TrackableType)EditorGUILayout.EnumPopup("Trackable Type:", type); - unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); - confidence = EditorGUILayout.DoubleField("Confidence:", confidence); - - EditorGUILayout.Space(); - trackableSize = EditorGUILayout.Vector3Field("Trackable Size:", trackableSize); - - EditorGUILayout.Space(); - GUILayout.Label("Local CRS:"); - localCRS_pos = EditorGUILayout.Vector3Field(" Position:", localCRS_pos); - localCRS_rot = EditorGUILayout.Vector3Field(" Rotation:", localCRS_rot); - - EditorGUILayout.Space(); - if (GUILayout.Button("Generate Dummy Payload")) - { - // dummy - trackablePayload = new byte[100]; - for (int i = 0; i < trackablePayload.Length; i++) - { - trackablePayload[i] = (byte)i; - } - } - - // --------------------- - // Keyvalues - // --------------------- - EditorGUILayout.Space(); - groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled); - if (keyValuesFixed.Count > 0) - { - OutputKeyValue(0); - OutputKeyValue(1); - OutputKeyValue(2); - } - EditorGUILayout.EndToggleGroup(); - // - GUILayout.EndVertical(); - } - - public override void GetParams() - { - customName = "Requesting information..."; - - TrackableRequest.GetTrackableAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - Trackable obj = response.result; - customName = obj.Name; - creatorUUID = obj.CreatorUUID.ToString(); - type = obj.TrackableType; - unit = obj.Unit; - confidence = obj.Confidence; - if (obj.TrackableSize.Count == 3) - { - trackableSize = new Vector3((float)obj.TrackableSize[0], (float)obj.TrackableSize[1], (float)obj.TrackableSize[2]); - } - else trackableSize = Vector3.zero; - - if (obj.LocalCRS.Count == 16) - { - Matrix4x4 localCRS = WorldStorageUnityHelper.ConvertETSIARFTransform3DToUnity(obj.LocalCRS); - localCRS_pos = localCRS.GetPosition(); - localCRS_rot = localCRS.rotation.eulerAngles; - } - else - { - localCRS_pos = Vector3.zero; - localCRS_rot = Vector3.zero; - } - - // --------------------- - // Keyvalues - // --------------------- - //var first = WorldStorageWindow.GetFirstKeyValueTags(obj.KeyvalueTags); - //keyValuesFixed.Clear(); // no - for (int i = 0; i < keyValuesFixed.Count; i++) keyValuesFixed[i] = ("", ""); - - if (obj.KeyvalueTags.Count > 0) - { - int cnt = 0; - foreach (var item in obj.KeyvalueTags) - { - if (item.Key == "unityAuthoringPosX" || item.Key == "unityAuthoringPosY") continue; // ignore internal params - if (cnt < keyValuesFixed.Count) keyValuesFixed[cnt] = (item.Key, item.Value[0]); - cnt++; - } - } - repaint = true; - }); - } - - public override void AddObject() - { - Debug.Log("POST Trackable"); - UUID = System.Guid.Empty.ToString(); - customName = "Default Trackable"; - - Trackable obj = GenerateObject(); - TrackableRequest.CreateTrackableAsync(worldStorageServer, obj, (response) => - { - UUID = response.result; - UUID = UUID.Trim('"'); //Bugfix: remove " from server return value - WorldStorageWindow.WorldStorageWindowSingleton.GetTrackables(); - }); - } - - public override Trackable GenerateObject() - { - EncodingInformationStructure trackableEncodingInformation = new EncodingInformationStructure() - { - DataFormat = EncodingInformationStructureDataFormat.ARCORE, - Version = "1.0" - }; - Debug.Log("Created encoding information"); - - Size _trackableSize = new Size(); - - _trackableSize.Add(trackableSize.x); - _trackableSize.Add(trackableSize.y); - _trackableSize.Add(trackableSize.z); - Debug.Log("Created dimension"); - - Matrix4x4 localCRS = new Matrix4x4(); - localCRS = Matrix4x4.TRS(localCRS_pos, Quaternion.Euler(localCRS_rot), Vector3.one); - Transform3D _localCRS = WorldStorageUnityHelper.ConvertUnityToETSIARFTransform3D(localCRS); - - // Remember the position of the Unity graph node - var posX = new Collection<String>(); - posX.Add(nodePosX.ToString()); - var posY = new Collection<String>(); - posY.Add(nodePosY.ToString()); - - // --------------------- - // Keyvalues - // --------------------- - keyValueTags.Clear(); - keyValueTags.Add("unityAuthoringPosX", posX); - keyValueTags.Add("unityAuthoringPosY", posY); - if (keyValuesFixed.Count > 0) - foreach (var item in keyValuesFixed) - { - if (!string.IsNullOrEmpty(item.Item1)) keyValueTags.Add(item.Item1, new Collection<string> { item.Item2 }); - } - - System.Guid _uuid = System.Guid.Parse(UUID); - System.Guid _creator = System.Guid.Parse(worldStorageUser.UUID); - Trackable t = new Trackable(customName) - { - UUID = _uuid, - CreatorUUID = _creator, - TrackableType = type, - TrackableEncodingInformation = trackableEncodingInformation, - TrackablePayload = trackablePayload, - LocalCRS = _localCRS, - Unit = unit, - Confidence = confidence, - TrackableSize = _trackableSize, - KeyvalueTags = keyValueTags - }; - return t; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs.meta deleted file mode 100644 index 020c2af..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/TrackableWindow.cs.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 229d5ea484d30f945b9318581fb4f2da -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: - - m_ViewDataDictionary: {instanceID: 0} - - worldStorageServer: {fileID: 11400000, guid: 4f997253243de534dad12937f1284975, type: 2} - - worldStorageUser: {instanceID: 0} - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs deleted file mode 100644 index d74f54c..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs +++ /dev/null @@ -1,344 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -#define isDEBUG - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; - -using UnityEngine; -using UnityEditor; -using TMPro; - -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public class WorldAnchorWindow : BaseWindow<WorldAnchor> - { - static public WorldAnchorWindow winSingleton; - - // World Anchors params - string UUID = System.Guid.Empty.ToString(); - string customName = "NotDefined"; - string creatorUUID = System.Guid.Empty.ToString(); - UnitSystem unit = UnitSystem.CM; - Vector3 worldAnchorSize; - Vector3 localCRS_pos; - Vector3 localCRS_rot; - - //graph params to generate the node - public bool useCoord; - public float nodePosX = 0; - public float nodePosY = 0; - - public WorldAnchorWindow() - { - // init somne stuffs - } - - public static void ShowWindow(WorldStorageServer ws, WorldStorageUser user, string UUID = "") - { - winSingleton = EditorWindow.GetWindow(typeof(WorldAnchorWindow), false, "ETSI ARF - World Anchor") as WorldAnchorWindow; - winSingleton.worldStorageServer = ws; - winSingleton.worldStorageUser = user; - if (!string.IsNullOrEmpty(UUID)) - { - winSingleton.saveText = "Update"; - winSingleton.UUID = UUID; - winSingleton.GetParams(); - } - else - { - // Create new one - winSingleton.saveText = "Create"; - winSingleton.AddObject(); - } - } - - public static GameObject GenerateAndUpdateVisual(string UUID, string name, Vector3 pos, Vector3 rot) - { - ETSI.ARF.WorldStorage.UI.Prefabs.WorldStoragePrefabs prefabs; - prefabs = (Prefabs.WorldStoragePrefabs)Resources.Load("ARFPrefabs"); - GameObject arf = GameObject.Find("ARF Visuals"); - GameObject visual = GameObject.Find(UUID); - - if (arf == null) arf = new GameObject("ARF Visuals"); - if (visual == null) - { - visual = SceneAsset.Instantiate<GameObject>(prefabs.worldAnchorPrefab, pos, Quaternion.Euler(rot), arf.transform); // TODO rot - visual.name = UUID; - } - else - { - visual.transform.SetPositionAndRotation(pos, Quaternion.Euler(rot)); - } - visual.transform.Find("Canvas/Text").GetComponent<TextMeshProUGUI>().text = $"Name: { name }\nUUID: { UUID }"; - return visual; - } - - void OnGUI() - { - ori = GUI.backgroundColor; // remember ori color - - gsTest = new GUIStyle("window"); - //gsTest.normal.textColor = WorldStorageWindow.arfColors[0]; - gsTest.fontStyle = FontStyle.Bold; - gsTest.alignment = TextAnchor.UpperLeft; - gsTest.fontSize = 16; - - scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true)); - WorldStorageWindow.DrawCopyright(); - - DrawUIStuffs(); - - EditorGUILayout.EndScrollView(); - - if (GUILayout.Button("Close Window")) - { - Close(); - } - } - - public override void DrawUIStuffs() - { - GUILayout.BeginVertical(); // "World Anchor Editor", gsTest); - EditorGUILayout.Space(); - - GUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[8]; - Texture anchorImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png", typeof(Texture)); - GUILayout.Box(anchorImage, GUILayout.Width(24), GUILayout.Height(24)); - GUI.backgroundColor = ori; - GUILayout.Label("World Anchor Parameters:", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - - Rect rect = EditorGUILayout.GetControlRect(false, WorldStorageWindow.lineH); - EditorGUI.DrawRect(rect, WorldStorageWindow.arfColors[8]); - - // - GUILayout.Label("Server: " + worldStorageServer.serverName, EditorStyles.whiteLargeLabel); - GUILayout.Label("User: " + worldStorageUser.userName, EditorStyles.whiteLargeLabel); - EditorGUILayout.Space(); - -#if isDEBUG - GUILayout.Label("UUID: " + UUID, EditorStyles.miniLabel); // readonly - GUILayout.Label("Creator UID: " + creatorUUID, EditorStyles.miniLabel); // readonly - EditorGUILayout.Space(); -#endif - customName = EditorGUILayout.TextField("Name of Anchor:", customName); - EditorGUILayout.Space(); - - // --------------------- - // Toolbar - // --------------------- - EditorGUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[2]; - if (GUILayout.Button(saveText)) - { - Debug.Log("PUT World Anchor"); - - if (!string.IsNullOrEmpty(UUID) && UUID != "0" && UUID != System.Guid.Empty.ToString()) - { - WorldAnchor obj = GenerateObject(); - WorldAnchorRequest.UpdateWorldAnchorAsync(worldStorageServer, obj, (response) => - { - UUID = response.result; - UUID = UUID.Trim('"'); //Bugfix: remove " from server return value - - if (WorldStorageWindow.WorldStorageWindowSingleton != null) - { - WorldStorageWindow.WorldStorageWindowSingleton.GetWorldAnchors(); - } - Close(); - }); - } - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("Delete")) - { - if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this World Anchor?", "Delete", "Cancel")) - { - Debug.Log("Delete World Anchor"); - WorldAnchorRequest.DeleteWorldAnchorAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - UUID = System.Guid.Empty.ToString(); - customName = "Warning: Object deleted !"; - creatorUUID = System.Guid.Empty.ToString(); - unit = UnitSystem.CM; - if (WorldStorageWindow.WorldStorageWindowSingleton != null) - { - WorldStorageWindow.WorldStorageWindowSingleton.GetWorldAnchors(); - } - Close(); - }); - } - } - GUI.backgroundColor = ori; - - GUI.backgroundColor = WorldStorageWindow.arfColors[5]; - if (GUILayout.Button("Generate/Update GameObject")) - { - GenerateAndUpdateVisual(UUID, customName, localCRS_pos, localCRS_rot); - } - GUI.backgroundColor = ori; - EditorGUILayout.EndHorizontal(); - EditorGUILayout.Space(); - - // --------------------- - // Params - // --------------------- - unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); - - EditorGUILayout.Space(); - worldAnchorSize = EditorGUILayout.Vector3Field("Trackable Size:", worldAnchorSize); - - EditorGUILayout.Space(); - GUILayout.Label("Local CRS:"); - localCRS_pos = EditorGUILayout.Vector3Field(" Position:", localCRS_pos); - localCRS_rot = EditorGUILayout.Vector3Field(" Rotation:", localCRS_rot); - - // --------------------- - // Keyvalues - // --------------------- - EditorGUILayout.Space(); - groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled); - if (keyValuesFixed.Count > 0) - { - OutputKeyValue(0); - OutputKeyValue(1); - OutputKeyValue(2); - } - EditorGUILayout.EndToggleGroup(); - // - GUILayout.EndVertical(); - } - - public override void GetParams() - { - WorldAnchorRequest.GetWorldAnchorAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - WorldAnchor obj = response.result; - customName = obj.Name; - creatorUUID = obj.CreatorUUID.ToString(); - unit = obj.Unit; - if (obj.WorldAnchorSize.Count == 3) - { - worldAnchorSize = new Vector3((float)obj.WorldAnchorSize[0], (float)obj.WorldAnchorSize[1], (float)obj.WorldAnchorSize[2]); - } - else worldAnchorSize = Vector3.zero; - - if (obj.LocalCRS.Count == 16) - { - Matrix4x4 localCRS = WorldStorageUnityHelper.ConvertETSIARFTransform3DToUnity(obj.LocalCRS); - localCRS_pos = localCRS.GetPosition(); - localCRS_rot = localCRS.rotation.eulerAngles; - } - else - { - localCRS_pos = Vector3.zero; - localCRS_rot = Vector3.zero; - } - - // --------------------- - // Keyvalues - // --------------------- - //var first = WorldStorageWindow.GetFirstKeyValueTags(obj.KeyvalueTags); - //keyValuesFixed.Clear(); // no - for (int i = 0; i < keyValuesFixed.Count; i++) keyValuesFixed[i] = ("", ""); - - if (obj.KeyvalueTags.Count > 0) - { - int cnt = 0; - foreach (var item in obj.KeyvalueTags) - { - if (item.Key == "unityAuthoringPosX" || item.Key == "unityAuthoringPosY") continue; // ignore internal params - if (cnt < keyValuesFixed.Count) keyValuesFixed[cnt] = (item.Key, item.Value[0]); - cnt++; - } - } - repaint = true; - }); - } - - public override void AddObject() - { - Debug.Log("POST World Anchor"); - UUID = System.Guid.Empty.ToString(); - customName = "Default Anchor"; - - WorldAnchor obj = GenerateObject(); - WorldAnchorRequest.CreateWorldAnchorAsync(worldStorageServer, obj, (response) => - { - UUID = response.result; - UUID = UUID.Trim('"'); //Bugfix: remove " from server return value - WorldStorageWindow.WorldStorageWindowSingleton.GetWorldAnchors(); - }); - } - - public override WorldAnchor GenerateObject() - { - Size _worldAnchorSize = new Size(); - _worldAnchorSize.Add(worldAnchorSize.x); - _worldAnchorSize.Add(worldAnchorSize.y); - _worldAnchorSize.Add(worldAnchorSize.z); - Debug.Log("Created dimension"); - - Matrix4x4 localCRS = new Matrix4x4(); - localCRS = Matrix4x4.TRS(localCRS_pos, Quaternion.Euler(localCRS_rot), Vector3.one); - Transform3D _localCRS = WorldStorageUnityHelper.ConvertUnityToETSIARFTransform3D(localCRS); - - // Remember the position of the Unity graph node - var posX = new Collection<String>(); - posX.Add(nodePosX.ToString()); - var posY = new Collection<String>(); - posY.Add(nodePosY.ToString()); - - // --------------------- - // Keyvalues - // --------------------- - keyValueTags.Clear(); - keyValueTags.Add("unityAuthoringPosX", posX); - keyValueTags.Add("unityAuthoringPosY", posY); - if (keyValuesFixed.Count > 0) - foreach (var item in keyValuesFixed) - { - if (!string.IsNullOrEmpty(item.Item1)) keyValueTags.Add(item.Item1, new Collection<string> { item.Item2 }); - } - - Guid _uuid = Guid.Parse(UUID); - Guid _creator = Guid.Parse(worldStorageUser.UUID); - WorldAnchor t = new WorldAnchor(customName) - { - UUID = _uuid, - CreatorUUID = _creator, - LocalCRS = _localCRS, - Unit = unit, - WorldAnchorSize = _worldAnchorSize, - KeyvalueTags = keyValueTags - }; - return t; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs.meta deleted file mode 100644 index c4ffaff..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldAnchorWindow.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -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/Windows/WorldGraphWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldGraphWindow.cs deleted file mode 100644 index 1a5e621..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldGraphWindow.cs +++ /dev/null @@ -1,304 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: July 2022 -// - -using System; -using System.Collections.Generic; - -using UnityEditor; -using UnityEditor.Experimental.GraphView; -using UnityEditor.UIElements; -using UnityEngine; -using UnityEngine.UIElements; - -using ETSI.ARF.WorldStorage.Editor.Graph; -using ETSI.ARF.WorldStorage; -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.WorldStorage.UI; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.Editor.Windows -{ - public class WorldGraphWindow : EditorWindow - { - [HideInInspector] public WorldStorageServer worldStorageServer; - [HideInInspector] public WorldStorageUser worldStorageUser; - - private ARFGraphView myGraph; - - //to delay the reframe (otherwise it reframes when the graph isn't built yet) - int twoFrames = 0; - - [MenuItem("ARFWorldStorage/Edit Graph...")] - public static void ShowWindow() - { - GetWindow<WorldGraphWindow>("Graph Editor", true, typeof(SceneView)); - } - - public static void ShowWindowFromWorldStorageWindow(WorldStorageServer server, WorldStorageUser user) - { - var window = GetWindow<WorldGraphWindow>("Graph Editor", true, typeof(SceneView)); - window.worldStorageServer = server; - window.worldStorageUser = user; - if (window.myGraph != null) - { - if (window.myGraph.ServerAndLocalDifferent() && EditorUtility.DisplayDialog("Saving node positions", "The World Graph has been modified. \nWould you like to push the modifications to the server ?", "Yes", "No")) - { - window.myGraph.SaveInServer(); - } - window.rootVisualElement.Remove(window.myGraph); - } - GraphEditorWindow.ResetWindow(); - SaveInfo.instance.nodePositions = null; - window.OnEnable(); - } - - public void OnEnable() - { - if (worldStorageServer != null) - { - try - { - if (SaveInfo.instance.nodePositions == null) - { - SaveInfo.instance.InitNodePos(worldStorageServer, worldStorageUser); - } - ConstructGraphView(); - myGraph.style.top = Length.Percent(11); - myGraph.style.bottom = Length.Percent(5); - rootVisualElement.Add(myGraph); - } - catch (Exception e) - { - EditorUtility.DisplayDialog("Error", "The server you selected is unreachable", "Ok"); - myGraph = null; - Debug.Log(e.ToString()); - } - } - } - - //initiate the graphView Attribute - public void ConstructGraphView() - { - myGraph = new ARFGraphView - { - name = "ARF Graph", - worldStorageServer = worldStorageServer, - worldStorageUser = worldStorageUser - }; - //top offset so that the graph does'nt overlap with the rest of the ui - myGraph.style.top = Length.Percent(11); - myGraph.PaintWorldStorage(); - myGraph.StretchToParentSize(); - SaveInfo.instance.toReFrame = true; - } - - - void OnGUI() - { - if (SaveInfo.instance.nodePositions == null) - { - SaveInfo.instance.InitNodePos(worldStorageServer, worldStorageUser); - } - - - EditorGUILayout.BeginVertical(); - - EditorGUI.BeginChangeCheck(); - worldStorageServer = (WorldStorageServer)EditorGUILayout.ObjectField("World Storage Server", worldStorageServer, typeof(WorldStorageServer), false, GUILayout.Width(500)); - worldStorageUser = (WorldStorageUser)EditorGUILayout.ObjectField("User", worldStorageUser, typeof(WorldStorageUser), false, GUILayout.Width(500)); - if (EditorGUI.EndChangeCheck()) - { - GraphEditorWindow.ResetWindow(); - - if ((myGraph != null)) - { - if (myGraph.ServerAndLocalDifferent() && EditorUtility.DisplayDialog("Saving node positions", "The World Graph has been modified. \nWould you like to push the modifications to the server ?", "Yes", "No")) - { - myGraph.SaveInServer(); - } - rootVisualElement.Remove(myGraph); - } - if (worldStorageServer != null) - { - try - { - SaveInfo.instance.InitNodePos(worldStorageServer, worldStorageUser); - ConstructGraphView(); - myGraph.style.top = Length.Percent(11); - myGraph.style.bottom = Length.Percent(5); - rootVisualElement.Add(myGraph); - Debug.Log("World Graph window initialized."); - } - catch (Exception e) - { - EditorUtility.DisplayDialog("Error", "The server you selected is unreachable", "Ok"); - myGraph = null; - Debug.Log(e.ToString()); - } - } - else - { - myGraph = null; - } - } - - - //style for copyrights label (left aligned) - var leftStyle = GUI.skin.GetStyle("Label"); - leftStyle.alignment = TextAnchor.MiddleLeft; - - GUILayout.Label("Augmented Reality Framework", leftStyle); - GUILayout.Label("Copyright (C) 2024, ETSI (BSD 3-Clause License)", leftStyle); - - //separator line - Rect rect = EditorGUILayout.GetControlRect(false, 1); - EditorGUI.DrawRect(rect, Color.gray); - - //reframe all elements to see them all - if (SaveInfo.instance.toReFrame && (twoFrames == 2)) - { - myGraph.FrameAllElements(); - SaveInfo.instance.toReFrame = false; - twoFrames = 0; - } - else if (SaveInfo.instance.toReFrame) - { - twoFrames++; - } - EditorGUILayout.EndVertical(); - - GUILayout.FlexibleSpace(); - - //Notify the user that the graph is different from the one in the server - if (myGraph != null) - { - if (myGraph.ServerAndLocalDifferent()) - { - //the icon to add if the node does not correspond to an element in the server - Texture2D warningImage = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/warning.png", typeof(Texture2D)); - - GUI.backgroundColor = Color.clear; - GUILayout.BeginHorizontal(); - GUILayout.Box(warningImage, GUILayout.Width(27), GUILayout.Height(27)); - GUILayout.Box("There are elements in your graph that have been added, modified or deleted ! The current graph is not synchronized with the World Storage", leftStyle, GUILayout.ExpandWidth(true), GUILayout.Height(27)); - GUILayout.EndHorizontal(); - } - } - } - - public void DeleteNode(ARFNode node) - { - rootVisualElement.Remove(myGraph); - node.DisconnectAllPorts(myGraph); - myGraph.DeleteElements(new List<GraphElement> { node }); - rootVisualElement.Add(myGraph); - } - - public void DeleteEdge(ARFEdgeLink edge) - { - rootVisualElement.Remove(myGraph); - myGraph.DeleteElements(new List<GraphElement> { edge }); - rootVisualElement.Add(myGraph); - } - } - - public class SaveInfo : ScriptableSingleton<SaveInfo> - { - [SerializeField] - public Dictionary<String, Rect> nodePositions; - public List<String> linkIds; - - public Dictionary<String, Type> elemsToRemove; - public List<String> elemsToUpdate; - - //keep the info of the graph reframe - public Boolean toReFrame = false; - - public WorldStorageServer worldStorageServer; - public WorldStorageUser worldStorageUser; - - public void InitNodePos(WorldStorageServer server, WorldStorageUser user) - { - worldStorageServer = server; - worldStorageUser = user; - - instance.nodePositions = new Dictionary<string, Rect>(); - - List<Trackable> listT = TrackableRequest.GetTrackablesSync(worldStorageServer); - foreach (Trackable track in listT) - { - if (track.KeyvalueTags.ContainsKey("unityAuthoringPosX") && track.KeyvalueTags.ContainsKey("unityAuthoringPosY")) - { - var posX = RoundToNearestHalf(float.Parse(track.KeyvalueTags["unityAuthoringPosX"][0])); - var posY = RoundToNearestHalf(float.Parse(track.KeyvalueTags["unityAuthoringPosY"][0])); - Rect trackPos = new(posX, posY, 135, 77); - instance.nodePositions[track.UUID.ToString()] = trackPos; - } - else - { - Rect trackPos = new(0, 0, 135, 77); - instance.nodePositions[track.UUID.ToString()] = trackPos; - } - } - - List<WorldAnchor> listA = WorldAnchorRequest.GetWorldAnchorsSync(worldStorageServer); - Debug.Log("Anchors " +listA.Count); - foreach (WorldAnchor wa in listA) - { - if (wa.KeyvalueTags.ContainsKey("unityAuthoringPosX") && wa.KeyvalueTags.ContainsKey("unityAuthoringPosY")) - { - var posX = RoundToNearestHalf(float.Parse(wa.KeyvalueTags["unityAuthoringPosX"][0])); - var posY = RoundToNearestHalf(float.Parse(wa.KeyvalueTags["unityAuthoringPosY"][0])); - Rect waPos = new(posX, posY, 135, 77); - instance.nodePositions[wa.UUID.ToString()] = waPos; - } - else - { - Rect trackPos = new(0, 0, 135, 77); - instance.nodePositions[wa.UUID.ToString()] = trackPos; - } - } - - - instance.linkIds = new List<string>(); - List<WorldLink> listWL = WorldLinkRequest.GetWorldLinksSync(worldStorageServer); - foreach (WorldLink link in listWL) - { - instance.linkIds.Add(link.UUID.ToString()); - } - - instance.elemsToRemove = new Dictionary<string, Type>(); - instance.elemsToUpdate = new List<string>(); - } - - //method to predict the position of a node (the float that will be saved in the PositionInfo singleton) - public static float RoundToNearestHalf(float a) - { - return a = Mathf.Round(a * 2f) * 0.5f; - } - - public static void PrintInfo() - { - Debug.Log("elems to delete : " + string.Join(", ", instance.elemsToRemove.Keys)); - Debug.Log("elems to update : " + string.Join(", ", instance.elemsToUpdate)); - Debug.Log("elems tout court : " + string.Join(", ", instance.nodePositions.Keys)); - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldGraphWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldGraphWindow.cs.meta deleted file mode 100644 index add6292..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldGraphWindow.cs.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 2c1a0c92306453d46897c1af6cb5c2f9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: - - m_ViewDataDictionary: {instanceID: 0} - - worldStorageServer: {instanceID: 0} - - worldStorageUser: {fileID: 11400000, guid: c0696089e4a855b46ad490437919b1e8, type: 2} - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs deleted file mode 100644 index 2338b22..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs +++ /dev/null @@ -1,515 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -#define isDEBUG - -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; - -using UnityEngine; -using UnityEditor; -using TMPro; - -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public class WorldLinkWindow : BaseWindow<WorldLink> - { - static public WorldLinkWindow winSingleton; - - public class Element - { - public string UUID = System.Guid.Empty.ToString(); - public string name = "(none)"; - public TypeWorldStorage type = TypeWorldStorage.UNKNOWN; - public Vector3 pos = Vector3.zero; - } - - [SerializeField] public List<string> anchors = new List<string>(); - - private static GUILayoutOption miniButtonWidth = GUILayout.Width(50); - - // World Anchors params - string UUID = System.Guid.Empty.ToString(); - string customName = "(no name for World Links)"; - string creatorUUID = System.Guid.Empty.ToString(); - - // From & To elements: - private bool showListFrom = true; - private bool showListTo = true; - private Element FROM = new Element(); - private Element TO = new Element(); - - UnitSystem unit = UnitSystem.CM; - Vector3 transf_pos; - Vector3 transf_rot; - - public WorldLinkWindow() - { - // init somne stuffs - } - - public static void ShowWindow(WorldStorageServer ws, WorldStorageUser user, string UUID = "") - { - winSingleton = EditorWindow.GetWindow(typeof(WorldLinkWindow), false, "ETSI ARF - World Link") as WorldLinkWindow; - winSingleton.worldStorageServer = ws; - winSingleton.worldStorageUser = user; - if (!string.IsNullOrEmpty(UUID)) - { - winSingleton.saveText = "Update"; - winSingleton.UUID = UUID; - winSingleton.GetParams(); - } - else - { - // Create new one - winSingleton.saveText = "Create"; - winSingleton.AddObject(); - } - } - - public static GameObject GenerateAndUpdateVisual(string UUID, Element from, Element to) - { - ETSI.ARF.WorldStorage.UI.Prefabs.WorldStoragePrefabs prefabs; - prefabs = (Prefabs.WorldStoragePrefabs)Resources.Load("ARFPrefabs"); - GameObject arf = GameObject.Find("ARF Visuals"); - GameObject visual = GameObject.Find(UUID); - - //Value between from and to - Vector3 centerPos = (from.pos + to.pos) * 0.5f; - Vector3 rot = Vector3.zero; // Direction - - if (arf == null) arf = new GameObject("ARF Visuals"); - if (visual == null) - { - visual = SceneAsset.Instantiate<GameObject>(prefabs.worldLinkPrefab, centerPos, Quaternion.Euler(rot), arf.transform); // TODO rot - visual.name = UUID; - } - else - { - visual.transform.SetPositionAndRotation(centerPos, Quaternion.Euler(rot)); - } - - // Update the gizno, if GaneObject are founds!!! - GameObject go1 = GameObject.Find(from.UUID); - GameObject go2 = GameObject.Find(to.UUID); - if (go1 && go2) - { - LinkVisual gizmo = visual.GetComponent<LinkVisual>(); - if (gizmo) - { - gizmo.fromElement = go1; - gizmo.toElement = go2; - } - } - - // Update the annotation - visual.transform.Find("Canvas/Text").GetComponent<TextMeshProUGUI>().text = $"UUID: { UUID }\nFrom: { from.name }\nTo: { to.name }"; - return visual; - } - - - void OnGUI() - { - ori = GUI.backgroundColor; // remember ori color - - gsTest = new GUIStyle("window"); - //gsTest.normal.textColor = WorldStorageWindow.arfColors[0]; - gsTest.fontStyle = FontStyle.Bold; - gsTest.alignment = TextAnchor.UpperLeft; - gsTest.fontSize = 16; - gsTest.fixedHeight = 100; - - scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true)); - WorldStorageWindow.DrawCopyright(); - - DrawUIStuffs(); - - EditorGUILayout.EndScrollView(); - - if (GUILayout.Button("Close Window")) - { - Close(); - } - } - - private void GetElementFROM() - { - // Trackable? - TrackableRequest.GetTrackableAsync(worldStorageServer, Guid.Parse(FROM.UUID), (response) => - { - try - { - Trackable result = response.result; - FROM.name = result.Name; - FROM.type = TypeWorldStorage.TRACKABLE; - - Matrix4x4 localCRS = WorldStorageUnityHelper.ConvertETSIARFTransform3DToUnity(result.LocalCRS); - FROM.pos = localCRS.GetPosition(); - } - catch - { - // Anchor? - WorldAnchorRequest.GetWorldAnchorAsync(worldStorageServer, Guid.Parse(FROM.UUID), (response) => - { - try - { - WorldAnchor result = response.result; - FROM.name = result.Name; - FROM.type = TypeWorldStorage.ANCHOR; - - Matrix4x4 localCRS = WorldStorageUnityHelper.ConvertETSIARFTransform3DToUnity(result.LocalCRS); - FROM.pos = localCRS.GetPosition(); - } - catch - { - // Nothing! - FROM.name = ""; - FROM.type = TypeWorldStorage.UNKNOWN; - } - }); - } - }); - } - - private void GetElementTO() - { - // Trackable? - TrackableRequest.GetTrackableAsync(worldStorageServer, Guid.Parse(TO.UUID), (response) => - { - try - { - Trackable result = response.result; - TO.name = result.Name; - TO.type = TypeWorldStorage.TRACKABLE; - - Matrix4x4 localCRS = WorldStorageUnityHelper.ConvertETSIARFTransform3DToUnity(result.LocalCRS); - TO.pos = localCRS.GetPosition(); - } - catch - { - // Anchor? - WorldAnchorRequest.GetWorldAnchorAsync(worldStorageServer, Guid.Parse(TO.UUID), (response) => - { - try - { - WorldAnchor result = response.result; - TO.name = result.Name; - TO.type = TypeWorldStorage.ANCHOR; - - Matrix4x4 localCRS = WorldStorageUnityHelper.ConvertETSIARFTransform3DToUnity(result.LocalCRS); - TO.pos = localCRS.GetPosition(); - } - catch - { - // Nothing! - TO.UUID = System.Guid.Empty.ToString(); - TO.name = ""; - TO.type = TypeWorldStorage.UNKNOWN; - } - }); - } - }); - } - - public override void DrawUIStuffs() - { - GUILayout.BeginVertical(); // "World Link Editor", gsTest); - EditorGUILayout.Space(); - - GUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[9]; - Texture linkImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/link.png", typeof(Texture)); - GUILayout.Box(linkImage, GUILayout.Width(24), GUILayout.Height(24)); - GUI.backgroundColor = ori; - GUILayout.Label("World Link Parameters:", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - - Rect rect = EditorGUILayout.GetControlRect(false, WorldStorageWindow.lineH); - EditorGUI.DrawRect(rect, WorldStorageWindow.arfColors[9]); - - // - GUILayout.Label("Server: " + worldStorageServer.serverName, EditorStyles.whiteLargeLabel); - GUILayout.Label("User: " + worldStorageUser.userName, EditorStyles.whiteLargeLabel); - EditorGUILayout.Space(); - -#if isDEBUG - GUILayout.Label("UUID: " + UUID, EditorStyles.miniLabel); // readonly - GUILayout.Label("Creator UID: " + creatorUUID, EditorStyles.miniLabel); // readonly -#endif - - EditorGUILayout.Space(); - - // --------------------- - // Toolbar - // --------------------- - EditorGUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[2]; - if (GUILayout.Button(saveText)) - { - Debug.Log("PUT World Link"); - - if (!string.IsNullOrEmpty(UUID) && UUID != "0" && UUID != System.Guid.Empty.ToString()) - { - WorldLink obj = GenerateObject(); - WorldLinkRequest.UpdateWorldLinkAsync(worldStorageServer, obj, (response) => - { - UUID = response.result; - UUID = UUID.Trim('"'); //Bugfix: remove " from server return value - - if (WorldStorageWindow.WorldStorageWindowSingleton != null) - { - WorldStorageWindow.WorldStorageWindowSingleton.GetWorldLinks(); - } - Close(); - }); - } - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("Delete")) - { - if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this World Link?", "Delete", "Cancel")) - { - Debug.Log("Delete World Link"); - WorldLinkRequest.DeleteWorldLinkAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - UUID = System.Guid.Empty.ToString(); - customName = "Warning: Object deleted !"; - creatorUUID = System.Guid.Empty.ToString(); - unit = UnitSystem.CM; - WorldStorageWindow.WorldStorageWindowSingleton.GetWorldLinks(); - }); - } - } - GUI.backgroundColor = ori; - - GUI.backgroundColor = WorldStorageWindow.arfColors[5]; - if (GUILayout.Button("Generate/Update GameObject")) - { - GenerateAndUpdateVisual(UUID, FROM, TO); - } - GUI.backgroundColor = ori; - EditorGUILayout.EndHorizontal(); - EditorGUILayout.Space(); - - // --------------------- - // Params - // --------------------- - string lastFromUUID = FROM.UUID; - string lastToUUID = TO.UUID; - - if (GUILayout.Button("Use 'From-To' Objects from Scene Selection")) - { - GameObject from, to; - GameObject[] SelectedObjects = Selection.gameObjects; - - if (SelectedObjects.Length == 2) - { - Debug.Log("Creation du lien (Many thanks Eric ;-)"); - from = SelectedObjects[0]; - to = SelectedObjects[1]; - FROM.UUID = from.name; - TO.UUID = to.name; - } - else - { - EditorUtility.DisplayDialog("Selection", "Please select exactly 2 GameObject from typ Trackable(s) and/or WorldAnchor(s) in the scene!", "OK"); - } - } - - showListFrom = EditorGUILayout.Foldout(showListFrom, "Parent Object (From)"); - if (showListFrom) - { - EditorGUILayout.BeginHorizontal(); - FROM.UUID = EditorGUILayout.TextField("UUID:", FROM.UUID); - if (FROM.UUID.Contains("[")) - { - // extract the UUID - FROM.UUID = FROM.UUID.Split('[', ']')[1]; - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[0]; - if (GUILayout.Button("Request", EditorStyles.miniButtonLeft, miniButtonWidth) || lastFromUUID != FROM.UUID) - { - GetElementFROM(); - } - EditorGUILayout.EndHorizontal(); - GUI.backgroundColor = ori; - EditorGUILayout.LabelField("Name:", FROM.name); - EditorGUILayout.LabelField("Type:", FROM.type.ToString()); - } - - EditorGUILayout.Space(); - showListTo = EditorGUILayout.Foldout(showListTo, "Child Object (To)"); - if (showListTo) - { - EditorGUILayout.BeginHorizontal(); - TO.UUID = EditorGUILayout.TextField("UUID:", TO.UUID); - if (TO.UUID.Contains("[")) - { - // extract the UUID - TO.UUID = TO.UUID.Split('[', ']')[1]; - } - GUI.backgroundColor = WorldStorageWindow.arfColors[0]; - if (GUILayout.Button("Request", EditorStyles.miniButtonLeft, miniButtonWidth) || lastToUUID != TO.UUID) - { - GetElementTO(); - } - EditorGUILayout.EndHorizontal(); - GUI.backgroundColor = ori; - EditorGUILayout.LabelField("Name:", TO.name); - EditorGUILayout.LabelField("Type:", TO.type.ToString()); - } - - EditorGUILayout.Space(); - unit = (UnitSystem)EditorGUILayout.EnumPopup("Unit System:", unit); - - EditorGUILayout.Space(); - //TODO Is this required??? - GUILayout.Label("Transform:"); - transf_pos = EditorGUILayout.Vector3Field("Position:", transf_pos); - transf_rot = EditorGUILayout.Vector3Field("Rotation:", transf_rot); - - // --------------------- - // Keyvalues - // --------------------- - EditorGUILayout.Space(); - groupEnabled = EditorGUILayout.BeginToggleGroup("Optional Parameters:", groupEnabled); - if (keyValuesFixed.Count > 0) - { - OutputKeyValue(0); - OutputKeyValue(1); - OutputKeyValue(2); - } - EditorGUILayout.EndToggleGroup(); - // - GUILayout.EndVertical(); - } - - public override void GetParams() - { - WorldLinkRequest.GetWorldLinkAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - WorldLink obj = response.result; - //customName = obj.Name; - creatorUUID = obj.CreatorUUID.ToString(); - - FROM.UUID = obj.UUIDFrom.ToString(); - FROM.type = obj.TypeFrom; - - TO.UUID = obj.UUIDTo.ToString(); - TO.type = obj.TypeTo; - - unit = obj.Unit; - if (obj.Transform.Count == 16) - { - Matrix4x4 transf = WorldStorageUnityHelper.ConvertETSIARFTransform3DToUnity(obj.Transform); - transf_pos = transf.GetPosition(); - transf_rot = transf.rotation.eulerAngles; - } - else - { - transf_pos = Vector3.zero; - transf_rot = Vector3.zero; - } - - // Get here the params of the from/to elements (GET) - GetElementFROM(); - GetElementTO(); - - // --------------------- - // Keyvalues - // --------------------- - //var first = WorldStorageWindow.GetFirstKeyValueTags(obj.KeyvalueTags); - //keyValuesFixed.Clear(); // no - for (int i = 0; i < keyValuesFixed.Count; i++) keyValuesFixed[i] = ("", ""); - - if (obj.KeyvalueTags.Count > 0) - { - int cnt = 0; - foreach (var item in obj.KeyvalueTags) - { - if (item.Key == "unityAuthoringPosX" || item.Key == "unityAuthoringPosY") continue; // ignore internal params - if (cnt < keyValuesFixed.Count) keyValuesFixed[cnt] = (item.Key, item.Value[0]); - cnt++; - } - } - repaint = true; - }); - } - - public override void AddObject() - { - Debug.Log("POST World Link"); - UUID = System.Guid.Empty.ToString(); - customName = "Default Link"; - - WorldLink obj = GenerateObject(); - WorldLinkRequest.CreateWorldLinkAsync(worldStorageServer, obj, (response) => - { - UUID = response.result; - UUID = UUID.Trim('"'); //Bugfix: remove " from server return value - WorldStorageWindow.WorldStorageWindowSingleton.GetWorldLinks(); - }); - } - - public override WorldLink GenerateObject() - { - Matrix4x4 localCRS = new Matrix4x4(); - localCRS = Matrix4x4.TRS(transf_pos, Quaternion.Euler(transf_rot), Vector3.one); - Transform3D transform3d = WorldStorageUnityHelper.ConvertUnityToETSIARFTransform3D(localCRS); - - // --------------------- - // Keyvalues - // --------------------- - keyValueTags.Clear(); - //keyValueTags.Add("unityAuthoringPosX", posX); - //keyValueTags.Add("unityAuthoringPosY", posY); - if (keyValuesFixed.Count > 0) - foreach (var item in keyValuesFixed) - { - if (!string.IsNullOrEmpty(item.Item1)) keyValueTags.Add(item.Item1, new Collection<string> { item.Item2 }); - } - - System.Guid _uuid = System.Guid.Parse(UUID); - System.Guid _creator = System.Guid.Parse(worldStorageUser.UUID); - System.Guid _from = System.Guid.Parse(FROM.UUID); - System.Guid _to = System.Guid.Parse(TO.UUID); - WorldLink t = new WorldLink() - { - UUID = _uuid, - CreatorUUID = _creator, - UUIDFrom = _from, - UUIDTo = _to, - TypeFrom = FROM.type, - TypeTo = TO.type, - Transform = transform3d, - Unit = unit, - KeyvalueTags = keyValueTags - }; - return t; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs.meta deleted file mode 100644 index 6fdeb44..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldLinkWindow.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f66d40f8781c5784cbe1013328d78ae6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs deleted file mode 100644 index 281150a..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs +++ /dev/null @@ -1,641 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -#define isDEBUG - -using System; -using System.Collections; -using System.Collections.Generic; - -using UnityEngine; -using UnityEditor; - -using ETSI.ARF.WorldStorage; -using ETSI.ARF.WorldStorage.REST; -using ETSI.ARF.WorldStorage.Editor.Windows; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.WorldStorage.UI -{ - public class WorldStorageWindow : EditorWindow - { - static public WorldStorageWindow WorldStorageWindowSingleton; - static public string lastUserID = "8fb169e2-8910-4cd5-a8f9-b7abff38d013"; // dummy - - [HideInInspector] public WorldStorageServer worldStorageServer; - [HideInInspector] public WorldStorageUser worldStorageUser; - - [SerializeField] public List<string> creators = new List<string>(); - [SerializeField] public List<string> trackables = new List<string>(); - [SerializeField] public List<string> anchors = new List<string>(); - [SerializeField] public List<string> links = new List<string>(); - - string ping = "-"; - string state = "Unknow"; - string vers = "Unknow"; - - private bool repaint = false; - private Vector2 scrollPos; - private Color ori; - private GUIStyle gsTest; - - private static GUILayoutOption miniButtonWidth = GUILayout.Width(32); - private static GUILayoutOption buttonWidth = GUILayout.Width(64f); - private bool showListT = true; - private bool showListA = true; - private bool showListL = true; - - private string filterByKeyValueTag = ""; - - static public string winName = "ARF Authoring Editor"; - static public int lineH = 5; - static public Color[] arfColors = new Color[] - { - Color.yellow, // paneltext - new Color(0.3f, 1f, 1f), // button REST - new Color(0.3f, 1f, 0.3f), // button create - new Color(1f, 0f, 0f), // button delete (red) - new Color(.5f, .7f, 1f), // button graph window - new Color(.3f, .7f, 1f), // button generate prefab - new Color(1f, 1f, 0.3f), // button request - new Color(1f, 0.3f, 0.3f), // 7/ color for trackables - new Color(1f, 0.7f, 0f), // 8/ color for anchors - new Color(.66f, .4f, 1f), // 9/ color for links - new Color(.66f, .66f, 66f), // color for light grey - new Color(.22f, .22f, 22f) // color for dark grey - }; - - - //[MenuItem("[ ISG-ARF ]/World Storage Editor")] - public static void ShowWindow() - { - WorldStorageWindowSingleton = EditorWindow.GetWindow(typeof(WorldStorageWindow), false, WorldStorageWindow.winName) as WorldStorageWindow; - OpenAPI.ResponseObject<string> ro = AdminRequest.PingAsync(WorldStorageWindowSingleton.worldStorageServer, (response) => - { - WorldStorageWindowSingleton.ping = response.result; - WorldStorageWindowSingleton.repaint = true; - }); - WorldStorageWindow.lastUserID = WorldStorageWindowSingleton.worldStorageUser.UUID; - } - - public void Update() - { - if (repaint) - { - Repaint(); - repaint = false; - } - } - - public WorldStorageWindow() - { - } - - static public void DrawCopyright() - { - // Title - GUILayout.Label("Augmented Reality Framework", EditorStyles.boldLabel); - GUILayout.Label("Copyright (C) 2024, ETSI (BSD 3-Clause License)"); - } - - void OnGUI() - { - ori = GUI.backgroundColor; - gsTest = new GUIStyle("window"); - //gsTest.normal.textColor = WorldStorageWindow.arfColors[0]; - gsTest.fontStyle = FontStyle.Bold; - gsTest.alignment = TextAnchor.UpperLeft; - gsTest.fontSize = 16; - - scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.ExpandWidth(true)); - WorldStorageWindow.DrawCopyright(); - - // Server info - GUILayout.BeginVertical("World Storage Server", gsTest); - EditorGUILayout.Space(); - Rect rect = EditorGUILayout.GetControlRect(false, 1); // WorldStorageWindow.lineH); - EditorGUI.DrawRect(rect, Color.black); - // - GUILayout gl = new GUILayout(); - - GUILayout.Label("Server Name: " + worldStorageServer.serverName, EditorStyles.whiteLargeLabel); - GUILayout.Label("User Name: " + worldStorageUser.userName, EditorStyles.whiteLargeLabel); -#if isDEBUG - GUILayout.Label("Creator UID: " + worldStorageUser.UUID); - GUILayout.Label("Base Path: " + worldStorageServer.basePath); - GUILayout.Label("Port: " + worldStorageServer.port); -#endif - - GUI.backgroundColor = WorldStorageWindow.arfColors[1]; - if (GUILayout.Button("Open World Representation Graph Window...")) - { - WorldGraphWindow.ShowWindowFromWorldStorageWindow(worldStorageServer, worldStorageUser); - } - GUI.backgroundColor = ori; - - DrawElementStuffs(); - - EditorGUILayout.EndScrollView(); - } - - public void OnInspectorUpdate() - { - this.Repaint(); - } - - void DrawElementStuffs() - { - - EditorGUILayout.Space(); - - // ########################################################### - // Handle admin - // ########################################################### - #region Ping - GUILayout.BeginHorizontal(); - ping = EditorGUILayout.TextField("Last Ping", ping); - if (GUILayout.Button("Ping")) - { - OpenAPI.ResponseObject<string> ro = AdminRequest.PingAsync(worldStorageServer, (response) => - { - ping = response.result; - }); - } - GUI.backgroundColor = ori; - GUILayout.EndHorizontal(); - #endregion - - #region State - GUILayout.BeginHorizontal(); - state = EditorGUILayout.TextField("State", state); - - if (GUILayout.Button("Get World Storage Sate")) - { - OpenAPI.ResponseObject<string> ro = AdminRequest.AdminAsync(worldStorageServer, (response) => - { - state = response.result; - }); - } - GUI.backgroundColor = ori; - GUILayout.EndHorizontal(); - #endregion - - #region Version - GUILayout.BeginHorizontal(); - vers = EditorGUILayout.TextField("Version", vers); - - if (GUILayout.Button("Get World Storage API Version")) - { - OpenAPI.ResponseObject<string> ro = AdminRequest.VersionAsync(worldStorageServer, (response) => - { - vers = response.result; - }); - } - GUI.backgroundColor = ori; - GUILayout.EndHorizontal(); - #endregion - - EditorGUILayout.Space(); - - ScriptableObject target = this; - SerializedObject so = new SerializedObject(target); - - // ########################################################### - // Get creators - // ########################################################### - #region Get all creator UUID - EditorGUILayout.Space(); - GUI.backgroundColor = WorldStorageWindow.arfColors[4]; - if (GUILayout.Button("Request UUID of Creators")) GetCreators(); - GUI.backgroundColor = ori; - - SerializedProperty stringsProperty = so.FindProperty("creators"); - EditorGUILayout.PropertyField(stringsProperty, true); // True means show children - so.ApplyModifiedProperties(); // Remember to apply modified properties - #endregion - - //EditorGUILayout.Space(); - //GUILayout.Label("World Storage Elements:", EditorStyles.whiteLargeLabel); - - - // ########################################################### - // Filter (Key = Group) - // ########################################################### - #region Filter - EditorGUILayout.Space(); - filterByKeyValueTag = EditorGUILayout.TextField("Filter for KeyValue Group:", filterByKeyValueTag); - #endregion - - // ########################################################### - // Handle trackables - // ########################################################### - #region Get all trackable objects - EditorGUILayout.Space(); - - GUI.backgroundColor = WorldStorageWindow.arfColors[0]; - if (GUILayout.Button("Request All")) - { - GetTrackables(); - GetWorldAnchors(); - GetWorldLinks(); - } - - GUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[7]; - Texture trackableImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png", typeof(Texture)); - GUILayout.Box(trackableImage, GUILayout.Width(24), GUILayout.Height(24)); - GUI.backgroundColor = ori; - GUILayout.Label("Trackables:", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - - EditorGUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[0]; - if (GUILayout.Button("Request Trackables")) - { - GetTrackables(); - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[2]; - if (GUILayout.Button("Create New")) - { - Debug.Log("Create trackable and open window"); - TrackableWindow.ShowWindow(worldStorageServer, worldStorageUser); - } - - GUI.backgroundColor = ori; - //GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("Delete all Trackables (3 stay in!!!)")) - { - if (EditorUtility.DisplayDialog("Deleting elements", "Do you really want to delete all trackables?", "Yes", "No")) - { - Debug.Log("Deleting all Trackable "); - int n = 0; - string UUID; - foreach (var customName in trackables) - { - if (!customName.Contains("[")) UUID = customName; - else - { - // extract the UUID - UUID = customName.Split('[', ']')[1]; - } - if (++n > 3) TrackableRequest.DeleteTrackableAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - // nothing to do - }); - } - - GetTrackables(); - WorldStorageWindow.WorldStorageWindowSingleton.repaint = true; - } - } - GUI.backgroundColor = ori; - EditorGUILayout.EndHorizontal(); - - // Show list - stringsProperty = so.FindProperty("trackables"); - showListT = EditorGUILayout.BeginFoldoutHeaderGroup(showListT, "List of Trackables"); - if (showListT) - for (int i = 0; i < stringsProperty.arraySize; i++) - { - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); - - string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); - if (UUID == null && i < trackables.Count) UUID = trackables[i]; // try this - if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) - { - Debug.Log("Open Trackable Window"); - TrackableWindow.ShowWindow(worldStorageServer, worldStorageUser, UUID); - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("X", EditorStyles.miniButtonLeft, miniButtonWidth)) - { - if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) - { - TrackableRequest.DeleteTrackableAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - WorldStorageWindowSingleton.GetTrackables(); - WorldStorageWindowSingleton.repaint = true; - }); - } - } - GUI.backgroundColor = ori; - - EditorGUILayout.EndHorizontal(); - } - EditorGUILayout.EndFoldoutHeaderGroup(); - #endregion - - // ########################################################### - // Handle anchors - // ########################################################### - #region Get all anchor objects - EditorGUILayout.Space(); - - GUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[8]; - Texture anchorImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png", typeof(Texture)); - GUILayout.Box(anchorImage, GUILayout.Width(24), GUILayout.Height(24)); - GUI.backgroundColor = ori; - GUILayout.Label("World Anchors:", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - - EditorGUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[0]; - if (GUILayout.Button("Request Anchors")) - { - GetWorldAnchors(); - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[2]; - if (GUILayout.Button("Create New")) - { - Debug.Log("Create anchor and open window"); - WorldAnchorWindow.ShowWindow(worldStorageServer, worldStorageUser); - } - - GUI.backgroundColor = ori; - //GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("Delete all Anchors (3 stay in!!!)")) - { - if (EditorUtility.DisplayDialog("Deleting elements", "Do you really want to delete all anchors?", "Yes", "No")) - { - Debug.Log("Deleting all World Anchors "); - int n = 0; - string UUID; - foreach (var customName in anchors) - { - if (!customName.Contains("[")) UUID = customName; - else - { - // extract the UUID - UUID = customName.Split('[', ']')[1]; - } - if (++n > 3) WorldAnchorRequest.DeleteWorldAnchorAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - WorldStorageWindowSingleton.GetWorldAnchors(); - WorldStorageWindowSingleton.repaint = true; - }); - } - } - } - GUI.backgroundColor = ori; - EditorGUILayout.EndHorizontal(); - - // Show list - stringsProperty = so.FindProperty("anchors"); - showListA = EditorGUILayout.BeginFoldoutHeaderGroup(showListA, "List of World Anchors"); - if (showListA) - for (int i = 0; i < stringsProperty.arraySize; i++) - { - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); - - string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); - if (UUID == null && i < anchors.Count) UUID = anchors[i]; // try this - if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) - { - Debug.Log("Open Anchor Window"); - WorldAnchorWindow.ShowWindow(worldStorageServer, worldStorageUser, UUID); - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("X", EditorStyles.miniButtonLeft, miniButtonWidth)) - { - if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) - { - WorldAnchorRequest.DeleteWorldAnchorAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - WorldStorageWindowSingleton.GetWorldAnchors(); - }); - } - } - GUI.backgroundColor = ori; - - EditorGUILayout.EndHorizontal(); - } - EditorGUILayout.EndFoldoutHeaderGroup(); - #endregion - - // ########################################################### - // Handle Links - // ########################################################### - #region Get all link objects - EditorGUILayout.Space(); - - GUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[9]; - Texture linkImage = (Texture)AssetDatabase.LoadAssetAtPath("Assets/ETSI.ARF/ARF World Storage API/Images/link.png", typeof(Texture)); - GUILayout.Box(linkImage, GUILayout.Width(24), GUILayout.Height(24)); - GUI.backgroundColor = ori; - GUILayout.Label("World Links:", EditorStyles.whiteBoldLabel); - GUILayout.EndHorizontal(); - - EditorGUILayout.BeginHorizontal(); - GUI.backgroundColor = WorldStorageWindow.arfColors[0]; - if (GUILayout.Button("Request Links")) - { - GetWorldLinks(); - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[2]; - if (GUILayout.Button("Create New")) - { - Debug.Log("Create link and open window"); - WorldLinkWindow.ShowWindow(worldStorageServer, worldStorageUser); - } - - GUI.backgroundColor = ori; - //GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("Delete all Links (3 stay in!!!)")) - { - if (EditorUtility.DisplayDialog("Deleting elements", "Do you really want to delete all links?", "Yes", "No")) - { - Debug.Log("Deleting all World Links"); - int n = 0; - string UUID; - foreach (var customName in links) - { - if (!customName.Contains("[")) UUID = customName; - else - { - // extract the UUID - UUID = customName.Split('[', ']')[1]; - } - if (++n > 3) WorldLinkRequest.DeleteWorldLinkAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - WorldStorageWindowSingleton.GetWorldLinks(); - }); - } - } - } - GUI.backgroundColor = ori; - EditorGUILayout.EndHorizontal(); - - // Show list - stringsProperty = so.FindProperty("links"); - showListL = EditorGUILayout.BeginFoldoutHeaderGroup(showListL, "List of World Links"); - if (showListL) - for (int i = 0; i < stringsProperty.arraySize; i++) - { - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.PropertyField(stringsProperty.GetArrayElementAtIndex(i)); - - string UUID = WorldStorageWindow.GetUUIDFromString(stringsProperty.GetArrayElementAtIndex(i).stringValue); - if (UUID == null && i < links.Count) UUID = links[i]; // try this - if (GUILayout.Button("Edit...", EditorStyles.miniButtonLeft, buttonWidth)) - { - Debug.Log("Open Link Window"); - - WorldLinkWindow.ShowWindow(worldStorageServer, worldStorageUser, UUID); - } - - GUI.backgroundColor = WorldStorageWindow.arfColors[3]; - if (GUILayout.Button("X", EditorStyles.miniButtonLeft, miniButtonWidth)) - { - if (EditorUtility.DisplayDialog("Delete", "Are you sure you want to delete this element?", "Delete", "Cancel")) - { - WorldLinkRequest.DeleteWorldLinkAsync(worldStorageServer, Guid.Parse(UUID), (response) => - { - WorldStorageWindowSingleton.GetWorldLinks(); - }); - } - } - GUI.backgroundColor = ori; - - EditorGUILayout.EndHorizontal(); - } - EditorGUILayout.EndFoldoutHeaderGroup(); - #endregion - - // - GUILayout.EndVertical(); - } - - // ########################################################### - // Get elements from current server - // ########################################################### - #region Helpers - static public string GetUUIDFromString(string text) - { - if (!text.Contains("[")) return null; - else - { - // extract the UUID - return text.Split('[', ']')[1]; - } - } - public void GetCreators() - { - // Get all objects - Debug.Log("Get all creators id"); - TrackableRequest.GetTrackablesAsync(worldStorageServer, (response) => - { - creators.Clear(); - foreach (var item in response.result) - { - if (!creators.Contains(item.CreatorUUID.ToString())) creators.Add(item.CreatorUUID.ToString()); - } - }); - } - - static public (string, string) GetFirstKeyValueTags(KeyvalueTagList dict) - { - if (dict.Count >= 1) - { - // Get the first value in account (demo) - foreach (var item in dict) - { - string key1 = item.Key; - if (item.Value.Count >= 1) - { - string value1 = item.Value[0]; - return (key1, value1); - } - } - } - return ("", ""); - } - - public void GetTrackables() - { - // Get all objects - Debug.Log("Get all server objects"); - trackables.Clear(); - repaint = true; - TrackableRequest.GetTrackablesAsync(worldStorageServer, (response) => - { - Debug.Log("Get objects num = " + response.result.Count); - foreach (var item in response.result) - { - if (filterByKeyValueTag != "") - { - var first = GetFirstKeyValueTags(item.KeyvalueTags); - if (first.Item1.ToLower() != "group" || first.Item2 != filterByKeyValueTag) continue; - } - if (!string.IsNullOrEmpty(item.Name)) trackables.Add(item.Name + " [" + item.UUID.ToString() + "]"); - else trackables.Add(item.UUID.ToString()); - } - repaint = true; - }); - } - - public void GetWorldAnchors() - { - // Get all objects - Debug.Log("Get all server objects"); - anchors.Clear(); - repaint = true; - WorldAnchorRequest.GetWorldAnchorsAsync(worldStorageServer, (response) => - { - foreach (var item in response.result) - { - if (filterByKeyValueTag != "") - { - var first = GetFirstKeyValueTags(item.KeyvalueTags); - if (first.Item1.ToLower() != "group" || first.Item2 != filterByKeyValueTag) continue; - } - if (!string.IsNullOrEmpty(item.Name)) anchors.Add(item.Name + " [" + item.UUID.ToString() + "]"); - else anchors.Add(item.UUID.ToString()); - } - repaint = true; - }); - } - - public void GetWorldLinks() - { - // Get all objects - Debug.Log("Get all server objects"); - links.Clear(); - repaint = true; - WorldLinkRequest.GetWorldLinksAsync(worldStorageServer, (response) => - { - foreach (var item in response.result) - { - links.Add(item.UUID.ToString()); - } - repaint = true; - }); - } - #endregion - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs.meta deleted file mode 100644 index ec99c51..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/Windows/WorldStorageWindow.cs.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: a1647df9b48bf4f49a664a929fff57ff -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: - - m_ViewDataDictionary: {instanceID: 0} - - worldStorageServer: {fileID: 11400000, guid: 4f997253243de534dad12937f1284975, type: 2} - - worldStorageUser: {fileID: 11400000, guid: c0696089e4a855b46ad490437919b1e8, type: 2} - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs deleted file mode 100644 index be46c26..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs +++ /dev/null @@ -1,36 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: July 2022 -// - -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityEditor; - -namespace ETSI.ARF.WorldStorage.UI.Prefabs -{ - [System.Serializable] - [CreateAssetMenu(fileName = "ARFPrefabs", menuName = "ARF World Storage/Setup for Visuals (prefabs)", order = 1)] - public class WorldStoragePrefabs : ScriptableObject - { - [SerializeField] public GameObject trackablePrefab; - [SerializeField] public GameObject worldAnchorPrefab; - [SerializeField] public GameObject worldLinkPrefab; - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs.meta deleted file mode 100644 index c921b23..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStoragePrefabs.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1aec4cd1383f70e4092183ea55088e8e -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs deleted file mode 100644 index 98b8311..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs +++ /dev/null @@ -1,64 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2022 -// - -using System.Collections; -using System.Collections.Generic; - -using UnityEngine; -using UnityEditor; - -namespace ETSI.ARF.WorldStorage.UI -{ - [CustomEditor(typeof(WorldStorageServer))] - public class WorldStorageServerEditor : UnityEditor.Editor - { - WorldStorageServer worldStorageServer; - WorldStorageWindow win; - - public void OnEnable() - { - worldStorageServer = (WorldStorageServer)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(); - - // open window 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.worldStorageServer = worldStorageServer; - win.worldStorageUser = worldStorageServer.currentUser; - } - GUI.backgroundColor = ori; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs.meta deleted file mode 100644 index 2cc100f..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageServerEditor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -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/WorldStorageUserEditor.cs b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageUserEditor.cs deleted file mode 100644 index 61710a0..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageUserEditor.cs +++ /dev/null @@ -1,62 +0,0 @@ -// -// ARF - Augmented Reality Framework (ETSI ISG ARF) -// -// Copyright 2024 ETSI -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Last change: June 2024 -// - -using System.Collections; -using System.Collections.Generic; - -using UnityEngine; -using UnityEditor; - -namespace ETSI.ARF.WorldStorage.UI -{ - [CustomEditor(typeof(WorldStorageUser))] - public class WorldStorageUserEditor : UnityEditor.Editor - { - WorldStorageUser worldStorageUser; - WorldStorageWindow win; - - public void OnEnable() - { - worldStorageUser = (WorldStorageUser)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 UUID button - GUI.backgroundColor = WorldStorageWindow.arfColors[1]; - if (GUILayout.Button("Generate New Creator UUID")) - { - worldStorageUser.UUID = System.Guid.NewGuid().ToString(); - if (win != null) win.worldStorageUser.UUID = worldStorageUser.UUID; - } - GUI.backgroundColor = ori; - } - } -} \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageUserEditor.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageUserEditor.cs.meta deleted file mode 100644 index fda722e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Editor/WorldStorageUserEditor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 134a71a4b493ae1468ea8de88c99135c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images.meta b/Assets/ETSI.ARF/ARF World Storage API/Images.meta deleted file mode 100644 index e91faab..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -<<<<<<< HEAD -guid: 7d34ace7d2e2513479736d20d0c95ad0 -======= -guid: 959ac6161f5900d4aa7903c24bc5a31d ->>>>>>> develop -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/Materials.meta deleted file mode 100644 index 35aca11..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fb3f0905e8c5e4448ad7871a219b9f8a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat b/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat deleted file mode 100644 index b0f2689..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: anchor - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 000725cae67a4f7448f79fe2a478a50d, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat.meta deleted file mode 100644 index 477ef1d..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/anchor.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 730ea8fe50af5874fb3b990c534eaebc -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat b/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat deleted file mode 100644 index 3e36be1..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: link - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 5, y: 5} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: fef18a27fe1e4a040b8cfda6b3b5c178, type: 3} - m_Scale: {x: 5, y: 5} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat.meta deleted file mode 100644 index b668a5a..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/link.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ce02d83032448a945ac827316ba8bb87 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat b/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat deleted file mode 100644 index 1b5d460..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: trackable - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: 90d4635c9d0895c42bec0551c4e790ea, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat.meta deleted file mode 100644 index fe1a18a..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/Materials/trackable.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4f607925b7a7fcc44806b35f5aa087a4 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png b/Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png deleted file mode 100644 index bb1804db730faff5a6f0a7523a8729085e8dae34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21219 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 diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png.meta deleted file mode 100644 index b8da83a..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/anchor.png.meta +++ /dev/null @@ -1,98 +0,0 @@ -fileFormatVersion: 2 -guid: 000725cae67a4f7448f79fe2a478a50d -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png b/Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png deleted file mode 100644 index a00dc22e5e0f7b506d089858b7ed281d3ed6092b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31613 zcmYhic|26_8#i95C|Obn*%=vIWQ#szHyG6zBwNUCXtI?o$&y{o7`ueAZ`sL~njs_m zZZH}9maN(R&glC*&+iYfmvhcN_qng-zOMK6zU~wLP+yDgGW+E-XU@<;wAEo}&YT1O zJ$HuY;+ZpNg92t;fUC3aFfG+HC0#ccfs6C@Do~X(XUbw}53Mc$*O#7ao4B7jL(4?@ zJKHzme|YB1YbJ=g3jC$TYU8EaRc({sB)VODu4jz!>+t(m+2T~z&w=%$=x>3|*!F!4 z;UH=k^~N{+VR>N*x<Pzd+WcSwmM8OVnC#21?mGp~Rs{}Leyb6G-tmz8d}3)E(B4ki zFE=vG2IoI(Y@UCW-soK{;WlV&2ywEtw@q{3m}x&*OJ%7ys#Z<DuJz>5zMV1pMxjdx zc+XDgN^jUL!dSa8Il=j@>|3@5J)H(&dRiil-5;r=cX1x3li+98V37|f*GM(pP=^sl zTM=zYP4=|j&)ArlE=;wXZvIM%AJZQrqa$9K^5Pdk7oq&ZlW>=*_%qY+A^P|1!z}NH zh&qxb;AjqcLA;CD^5ysJLq=7_TTd)8biCD|uUo>V8EiZ<F4}_N18KQzyU#Ns*ibq# z*NDF}#st|5+R^1OpFdSl<>(v383Mw`Po2+286>r9!oJHw^2uwj`cY6%ZDNg~YtL6~ zXL7NvEC+-RjY}Cw9QXj*V{0!Irmu3kbMk~AQ~VjhpKpagI)o#>3pDFQ;>lmC{h`=$ z=4wQoz#cy~6w<dYPN(>4<4-8cQjoq7nV)5y{qq@rzDf!%WiU}zZ=(RmE12VN+My?h zVy}cY<a>S>kPyq>*i1n}Qwe%<I;fQd?8T%X*;c67`~|up`>J=2jUpZh0mEnf)nG}- z$C(=m5T$DCdZziA?Fa1*ebvJvi}L6hnJ;=9&j*KmYA$H!WDm5&8Y0QdVi-F**+CHm zNh|wq1#B%xvj=|I@XSaA>Sp2kHB3?rxzOq((^u`6?H7%bh#+4?shHvnUsf<R7GEDW zGHyI{4zEmOC~J&zJcn6`Cj8yZ5xJyYMv;Ahx5F0c?N~3}*@RZpDL`zefFvy*)>&~7 zXR2NrNS+mL65|v?5Jd~EYw(6WD~*~J^biGCThpU=O=oy7c(>2^iXeuK>QsWD{?KX+ z#8U=u<rQ6wD!J{LIMdJaj(yKjuLJu9j5#}~3A=Al8PHfi{wWapU7)+#<#2a68EOkN z#}MvEZ&?dk(xDrO<Q^37(ggeG8t*@N+lN6)bm%1q-L~!gEc0qJaW|pCEW?Z15^yjT z`>sPG{DJB0MY{bVk--egT?dSW>;jSIxJtdCRE&NbRytGa*=1c8@Otq=abMtiZy4x{ zUO|PJ<+je`lggoPeTam^dbK{YQLSu|FufSE*mz^GPr|pz{4vCB;YmhorCve37$<9H zjJt!?<`rNLCFZes$o8pY<<Pf3D7^CCq6cj0^3;I$<cSRoRFxq{Usa&CkzXl!KmYKg zEY>jO&^a2KG!Rqmvi$xY7!%k>i`iPPW|l<?qsMw#-o?9YpsS1F7oDojx2Ha{Ct$&V zro1Y%r)BpbMCq#X;_E%v-)-v<s`Z?-D1z$Mn46H7qp_c=<G{barwojM260%*vzt#` z>$llKk#Z)*4=<-?$(yq|2Hg$skIT0Us+_tB2aP_p^>!cqn<JoKXlJv*ZVqCD>N~Ex z=;ycIdIe}p`r{kD7p68uO_TTuc!8)9vO?EK$nvT|60q47TnjDJHKWWyf)f-QGb?jP zJ4k6#p4|NMrMO$up;Z)(a@8I43TcY|W$7F$4qQd54PP4l9KlP#Vu^i75#qipZp0SW zhrn<+sLEuv-=O?|!7bSCr<Cwwj{KG=FMCV#&=uenC3uN+!Dsy7Rxlc68NO+56=j>& z?p*LTo4{?v!dT5Lodh@8)*4j%a;+ihPH((n0K8pJG2_b92E!jX_|U7kA_c23%_zg6 zB;Vpn`B*h)AUZv@)tOZm08RF+Fhofc7%)t3PSw<{OAKiJ9?4nFpCI>$W?#f>72w~Y zR;i{ACl>`3DV_e6K(g#b9n@j$XilqlCT#Sw!q=I^`)QxOo?f563708<0MobaRCb|{ z>T_0t%VGm-)RQn$!e1S{X+&Kknt_XQ=vmErwWoIl@rm)pJ@gBT*S6?rT@2Nz8xnNN z%*mZP7oiqe9cBs{W7X1*J>uwU4AusED6MZxJg28<RrbUGVH;6ab;F4;RN6iy)gP^= zY%nuG1Kf!Cu4A^`QxrGqA|O+s+h7u2sv!T95F1eZfnYRJ`C%Xr>f}m%W|}l(*p4q% z1)Ey+Yr<^w;K|aI?Pw6L=A?HhZQ4-{1W`$5)5kJ;8<Nb#0hi)otQAZ{Rw`f300ZHw z)<Kc+rpq#jM0ns(&hQvGIuWt0L#&Sw)5ZE2zdu*)zY_J{0*$q)5iI>sy_zM^{(CX5 z;n~pjcNn5hsV*7nWVYmKaIEEGSq^inzgph%#lywjR9KVgU1a;RRCYu<rg~YV<lBRd zC$Mv{RBXx2-mpIRQF4tBQM2zNCA7l*VMW*%{C1`=Gl5o_j%1=oxSH{Yb8_Kwg~(Ms z&U&%@%l%SgB$B|OVfgnhz6+4PGFdwGJ%M$QjI8IMQW-<GVycq&O9hqxw$NQbOf+sv z-xFThf%O3+wMS+|1S}zbOABE1Qtuf1C&P<Z{WvlLbdFJk=)|6F*YO8BtlzZw!C0R$ z9r*EG&gDXj{1}}SO95Y*Ow|O4=cO;Ha{0(&ImpH^?Qyn(;v3l~wMKcPMxepElEdkn zlZ6(9S&Q<MQ2GUf496t++Lw*Le~XRt59OY%(Q$qy4sRjOpF9CH?OB7#BYV_covw)K zVohOyR1|*>ha|xRO!pzI3PaiS?WKKltd|lli?|T5`@`4>?>`_JkY|_$R-m1$v5d-v z3D|LF1gvbOh8y}M=6m!KCCZ%DV&yV7^m!E7)#fG<bmM<fr3f+`U`Ng!NaBbjRuFg^ zKWtfNONHHre$@ivlT1GO)vRXJjF4*^p?sy|uFLBXC6tpj5Yn>56dI2TVi0ciW-KHS zUJjpO|KaTz`C)0e(-+E%f$Y@%2P6p71H!=*w}NtR%-i`}X=^$ggWRw`;{!iyp3O3- zjyZ_;?Nx1>t5IunJTUS2>}!ZIO?t-ao=TS*k$9+MV*F;&*iJ*JDa&v=_1?*otPTgy zh1vYIpfH6N=Z!<>&JkN#?@A+Wf012>$LJng*)*QL;$Ib3$r%Jag+Q-&o$0=dl&EjF zAVr+8!gm`}0?3`ZB==RcL=%UkS5ikHGUOqhGt-x!b=Oqo^zOiuwgV;A`GMq<(NXPr z4p}92`!wh*E8PCAzF}zc8Z^+Z8|<WxmLwGDk0dtaG+GThuV&?Rw>mzQwJ?DkggE^g zmj26tu1WMWIk<rAxlml3#})^z__?=a@9A_S^TVx8OS`R-cJ)q~Z;W(WN%Q55*Ho@G zOr0m}V=!=uM6*YC9-(F!B%(QXU0)hjo6V8Z3dkg^7d&&v41zvvpAA*dtCmhuHyNgF z0=?ZSb9xwAptrRn>L+JtB0QDV3AL6G`C!rWx_rQ7C^P)iksiBx8A-tBifDE@sdrU! z6(<~zNj(3~LKJo4jNN?<|BtG*(kAz@QMuU2U-kDEk>&%`^UKwL7grJqIxch##aBTk z<pwmwV`nKR6H6*ft>AFySp$UML0mvFTV@e9wxvhw{1K0cd8u=XW1u%fdrd;$){=|m z^q5j7qphG4R89YUNhZ!dMJB=AYeNB+R-L?IU4~1@?>3+^jo)>$41s&SeECu>pHtSl z5XCz-o?9fKt^sS?x@tNc>_CBHRo~%im8IS$j0UPpjFy)N=RloO1r?hI3v$Ab@LHpM z4hP`<ILxjT6m<`yfUEH^ZyGb}HH^>MtI<Y`<S-(pES)LOWibkT*xDy+uPQrG*q6!h zfLns?Ek|`rzv>3JWH3x@I^$8OrdN~z0c^@&Fnno3v{R2z4NB=^r&L*s>C6}N1VX6v zAB<@Td_Ga(Re3F&TrmzTSNMwsmNf7c3M<&<n5^7FTbs=)))eR!h_GPj5Kog$!x382 zkbZI<EU4PCPV~3<{-v^#K7YR#&OoS8&y@}U$<=5QigDTeaRen%BbUOV+5Y!wo$>m6 zMhjByibjj|*?R6Gqu2G`Eq7pb_O<haUdt^z^ogRYJ(*48T?%V5%|Ux(U`ToDq?BbG zXpb5@>=%(DHfK~W?AYFupr>GZEmJHTNwr*!rB>$IlcfOPYWnDzWxiyWzt$b7@)#&a z7o?=26=#oOmLe)pLYRL^d42+5-7k7h&CziLiTI^k`4*o7_t+h6EEPPRPKInlqI9+3 z+Q$?@#-yIHrO8?d%|6Wp;C7aDp@WeC;ul}CBZFNB6E{T8F#&>j&TM+ots=)QX~6%Q zSVD({O-hA!pi#uHP?|FH7+?|a5hc&X&||KAlZQ9JxA(csAQ{&NM&co>9)^zNJn)nh z%Kwufg~8_R1eNW?1CSERv9CtYsU~tOO^J7`t$An*08Ne1E{;A`@~81cHog`mTNu4~ zAGc(`zgp!efRWZ@F&F!2iEvl#V4a-sZYg0_)?U891}<z3o$P3-F=1}uDo^y5X_Gxf z!llo;tk!kmnKW+)w!uvO+7!Qw2~&9|v$?HfvS02%E3{9}&0ojI3SHZk%-9Y%Oa=ja zI3CwnBkjsq&<Rbp%^~fL$0@noS`2}b_uqmHB;iSMxseX<#u$2)j;l1m=&=f@^jZCY z?5%I0UhFHXVUs)RZ`I-;dtbuzi-jsljEEsy2+B{@sqOzQT00alNR}R9RAcrv0t8QS zeCJyL|0|0Du^;(cTpj^UHh|!7p#Z|#@G>|yb}=EB`t7yN?pF(+oH4!0PmM^J95R+- zmW+qgDGGO<R7$)48dK^eJ@h%~D|G~4NRALoMfd7u=n*EMdw0x<d<RLo1z9-Vw*|Ft zR-;h8dS!Y)CsZmmUuNzQjY=zvBS%~@UbB6ne%OJQniQ{<0Rq<79Gi~E#aHGnAJ3WE z=aX|sn$!u!SRWPXKv4dRr%A<BB=rPHXpc1R`{O>DrU{A4_ux0=>kKC0i@WiO=L_jb z9dyw`Tp!ujs7f6Z(&UkgRoSigr!aYkam%%i*m6`;4g_`>Ht_UE#cq2cvtMg5HufxG zrDFlUG|#5v*W7{!*Ipp(C+sED?6(*Cjlufb&e$FieE+j3^*LYa*eK}79wXIks}xJ) z;y519G#u*uaIRDor{1Hz4Md@r7YK)O7c52h9iCl_3lXMmd@Q<1)IP4dXnWk@E5QPk zvhsw(cwlZ9@Aw|N;ZHv;la}+XR&}vzvgPM&rwDpNs_wr!5PtB<^S0CRp3vZ`z=Q?U zyC+YA%GU`6GH-jo$~jVVn!ofIRH9QcIkc5oW!?T|{Ekr^ygqRzF51|r-@okcZYShd z{n=ZQpNft$rFSv%*j8OC_D?Rq%6B4DE;cj0+jqQAMHy=?wTlULxK0Qa7Aa#p)M;>R zXQb0eIw@yLXeq_kaA#)RqJ<CH{}Cy(guV~0zMqsU<#^v5o_w{1ee8_w#}4dS&qsek znSeB8#7CDGIa2a0tTn61(j?md5&J_{Lw_Jz#A!Sk@}*prnMWst%H|Pbfa)EJA~RI~ zw*ZE01n8kwK6WBfR$P*{G6w?1treB&Y~u*&qJy)1$<l7aAC-u?N!BLN?aToy@r~Yx zW3K}qZ0raZ*gP`Q*>!M7k90VVN$7CS@>PqJIp)pC1lL}Ykwwf|I$KK=E{@$_;`z6V ze7!OMD~r{M)vx+&iL&n%+B95@`%4m7+)LxCISeZ2@|s!iR}`0mK?ZhT0tfDjTh~`9 zU`G<M>7mwR#s;E=qm_XJlHyK7A96;iu!%P`w1OO(ZoUmDUNkVWDW^Q@v(RB)Ljx)A z%c`Hky_|A(j%)b_UeIw)8QCKss6<)JS@U@ky26`p^=F@eH6@m9_`C=)`43L;a3dRM z;898b3S(>aNph5-(X<nA{RxJzs1p{1rTqQ-fMha0g!bSpIm%@#EXpY@8xZEj2#k7f zIo@f^KETcpwOq{mbNzzi_oU(#@HMqyH$+ZNrUYsUi2@(LM>JNI@;y#+vnjK==TLWV z_hQMn*D0P!2MH3z1sfvK95@T3>F<x15|zN6Y}~8Ped6e)8fMeMVAqPA2PV-EZ1Qc) z;C^SbTI~;{&23?dF4z;duU;zuB4y#FM@fLTbl^K(jH}a@&dIj$dEtDqoIWmIqVZI= zXs~3O0ZG6!st_d*AVN$yO~Pv17L%^;%67q4Xx=dwa~8tmmAH?Y{VgOQ88H>;Ilar* z;RnGFlDC8l*R6^IbU4Xs`yzt`0#Jy%qrH*_=&!BMwGeXw%};kcUb>Rr=S`0^oE$Ub z#Rx)nJn}h->Z=VT#?@uuc|Y)c4K|v-?^0oBkTi0U3In23ttt)oOnNYFkh|k1=BdsI zKvFYAc=tW&&T{F_W?h%>EbDWE!0N5c=ZKG&g5PI;U+MR3Y}&k`D5tR6kW|PiP?Ox$ z3X{svNZW?HszOQkc8A%`bJiH+m$=m<50T^7*Xjm$Z?kYHzbSB=8ruDl1*y<0c<q2R zaN3_S>Tkn>-T!;wWANl2L5mAIW^3KZ52<O>b+yo=@rm`%9_WFRS10)!=lC{!)JJc$ z8oM&X(rhAAjI7gAwlC6+*}|r)!{r9kFZ<MNeL?S<%J|LY^x6`YLY0#HBHbp1YLb;e z*59kc<iw7A_0MhiFq#f;wHJf=NtW?Tk?Pzc936>sMm9t?s7F%Ir{aQYF(^$p`j@{8 zQBm#~<1gU~8e~St5FO)9qjl}!3sU*KAk?A5uZH4FafIK!a&kb*DG-uH8aT_&&5f~D z{`!&yuZtcj$SDYFkU){m;{--0blh8IETaJ@3VSp@(^)qv(ADhos`i;+wW#Cp@}|dq zt+$E}4-$Mu3Z&YVjgsb!DiBopC?#uRmye(R+oQ&#Qk&&u#GX;`N>C5kE<w9)FzQ3? z&V*4ZiNB@A`19(JkI0y<4zt^b1~JdOv)OTkJ5w^GebxzA;hJP<xCF~V4Xa+`5A1gt zCDu?s(w$|g-WoNJ{k_|6PVjf#1}@pr+pa#6hWH1%p-ph3p{E9>zFe2eMe7|MyIcxt z084EkBE}9F0hT5|2-JN?z>T%c7GmC(b8+Fk0Kc2muAXK6&v^lP3RO4OkF|(~Ypxmj zXRPYlZa2RW*&oR0*m{IDk1fty6E8Z{u?b(&n7E4ye*nNC*|aHlrXI*{tBbi!Kg)3y z=-H?StNGRi7`-fNDbKO#7GlM~3>vO$zngmAV4vrmIQqqHL)5c`@<DJX0ZZp6{Ae_{ zE*Yhirh@)T{Py`)g!7hTM-PBZa;zgO{Gm2S!Z#iHjeB{HP&=NGa%+R6ZvH?eT>P9~ zo~+!W0ciFqpU?6hN0lY<@z_@&_Vo!t&{F9M(S>VcbQ5+^l9bPDe^z1YYh|5a*r(!= z0+2cx;FQES?_Szkd{gYKTA373OktDU_$Gasg?r#zva=N~2G^w4BkYp8`vZ@;&Q;Tm z%|!rE>7XW@B`BaXg`59EQbd>VYZrq%>SS0_cSyz#M`ovA2evvTZ)e#?^+_GAhE4y= z<EmCIV67_uz*%h^1VPGqp@u+#_U>e#xd!Z4UqSfPlR0<j*Z3A<5fXrQjR607FqJM> zdMORtngdvah606h9whbOiRoK8+feq0%+kxpCn0ASs@<0@iu-W?8i2TDZTADO!&2nJ zhg=WlMOh-3btGJ`4VyFZ@lt*}S|WNSd&d>6<dOQpVgyuj$3c}@iQr{rb*suVB~`Xy zlK-8)_H>0PPJm{@F4{3^pbPPW7<Pj%gV9z=NF{7%y;Mfl7RFK2?szWP0Vpl6mAjPC zs^$9;XME2)Fo82bO&xQ!x8ugDp^ZZKe*}Y7F`WotZs!yq=$oEPj;aZrj=-g3N~+LT z#!GaDvhPBylE*B&jKL?mxtDIMtEwf0C~yY5xQB?N$I77ld{0Xa?rVev1C=E&!6EjK zmtrbKxrRvtp$Kpd#$qI=+^$t?Iwi_n79V0&5J8LGugRCrFbN3XBHPV!4--Rm@&J0w z!1RXBcJji@Y3as~TV&Y~y*%rm<@tvqCiyF~ur#9j-bAF>xE<rFpa_Hgm856*9$SOQ zH*`Fc!sL`SFW<iE_FIM*s%I;GDYMb~)}R%*(Qj4jT@b6b3TPwgJ*c((25V?ISP8tB z5>~6TYJ9|ZfgQr^CJK=0!P1fmA-mKlXVbjy6X=Ev2Ch~5{n9G$gMO}(OO81YS-yXJ zKUrliy2mCW*7UJ>=&Ic9>z-Y25l&|40o)VWxo;0QJ~NvZXNjO?KQj~A1hGlhqdmq~ z`lVlgsw^%ZDak3Z$(FKGGZh4%+#?RU=$2c9ZPi4tBy^BXvtP3IUfn13rRKXk3nc+H zjsTT0kT&L^oTJa2Y<WRv=?3I<O8+twDUoM^RglWz3pqn<RAKk9Fu~xgbko8uPa!VY zX3H?v@mLJSE6v%vICHY`JR-<4!Lw1jaAH`ywdXu`V|e4?7doYrrR~c%q@x_#{G=F2 zL+j>hJ|93W?%0S=yV&NQx9>W;e;EUHz@&NsV}#c18%Yc5=5V;AbO{rtG4fq5&O>xr zib%I`)4gec(cvYAs{gB(=&GE<C-^!Emi6h6!o7P9AO<yPdRY-tGDCyBoUN&9H6x|T z3^R#luu%XvJaCepF}BUU1Hjvy*!CPL1%<<x$<Nj>s5krhqutP=j)p|(`=dJ)K!@{^ z8A6mzemV>A1`w(xzUt+{cp#D7s*pfm9MAv&aDUr*+uyc*Z@z@B>gW++(_=5`0DKG# z%_NjcyM8YF=@WGE)}}G&6a(7XG>X#|-%mREH+Adw(3ayp025PY?)Pza;TSt_>ra7> zSBV(y?V(+lhKsgGr%-a%m|ZTf!-XB+JoHJ_B}w`dfWwl%&|CihX0zs$Y2t{LQl>0M zyCADoOD*NoPq%+V4OQhVg36C6kMcGOqdP3wKZ#EM1FRt~4gf5tteCG_v4b&MD=8g# zfPg2<TpH{F-P$w-(G`Wi+^h(8&AVu8MZlh&6qwv9vLsyuYO-4#O?vDOkemKqrj~Sh z_eWm>FOb7qk*k4~gp^x#U;~H2K{Sp;c5XU{x8+E}?OidivY*fXWS7f$^yGZaqKz$i z(p?P@#gU4mbH;)4Y`AtF{Z?t$Xaq;e%C4B0;qh(yLP-P-`5B{7kUU#|txPqd*0Ie^ zmzze9<L&>3-*qL1$}0Ms_C<WMHf>}ML#w1-AwL@;S0hI3+uRCY@r)R`UHHE<u%{~? zCqFNHPIvk$Z!>5QXS1N0sJa<z7<!%4_|8lWiA9{n3wRr@{c&4#-E>VzWQhIgl&RBO z+*=<HGy3T7#y>A(L?Rf4re*Z=58q)qUr0|`Pq9;89pyNFxr~#B^4$ENEOVifTr_&u z)F`X+QgZDNEi>ouS)Ix$E)$Lg+2A?3xF&BK;;;1!h~UP*Em`(Szdj?Uf%9$(Lx+R9 z?7j=MbBpU0tPjXDj?7$D&<}{_FaBsDSbY~JjPXmPr)QYCuCUlI!4!sO6LF<;{61oI ze*Y^Dx{Rx&a+yZWY#Dd$6D9k}k2-xjX5`+;Cyh)G-5!0;D#6m%<<Fh}+x!vgI_nGL zqF?ptSB0h(UFi}o&-s=;Y}Wk9?L2&zGm<`xG@q3&!YFj@Ue~Md7v1X~*VZIVXl?~n z-#X#{{Vf@KG=3f_)iRwbw{pKtZ{2z-{91yA={U;^gXEL=MPHS11si;EZ|+-RGf_Rm zbxmQGja+<Yt)RCzH2swzU~s^szDA7GGH=yq(-SO$z5&U+-nUDHj{Hn-dgzb2${q1) zs<YA`!wTcBVM96^#?DhL3%u;9!A<(}4+W2q9{&mX{wxHAp-m#)CqGlA)Gi!5pNR&2 zWJwE73<$gP)%yYr7&!qDM{DreQmEnjyUG^|>HAB$Ra<Ki)QQsKwj-+1c+ATwGj->c z&cIfZF;mzboc9F~vfhiQhZWBfc~l?#dwzD~SITymU=^?Cqu0$D51RfB5=Xk<V-x^_ z<XnhEg8yhRBGpwldBzPj#va6k2?$LQwN8;Z8Ex-syX!U*7+WjMP2;fWpX8BE)M}Pq zXJeiI?<%F^Io`mOzUSnn1SptZ6{q2CZ}rXr5)hHns2S#eiLK`G42geMKGfkb0520O z&S)RDc6lF%|HAj9d}V(eC$m2zBB^Qi<;QVC+~4;=+hAh+=2gmcVy<)~=G~~s4W)CK z6Ct@$oPAUBV={sIo%S9><{{O16#MYKFC$fe{*4*=^p%lXA9<!D>Gj?IrnyBS!@>Hx zd+%7b*95=#TfTy?_@-`#at24CL7Kh<5?r<+M7JsBhN6Dge?<#Ce-g%{^j$W8DJv!+ zPKU*yLFzv<+xOWgT!($@!-T~l8<y{1FbHSU|Lz<t?Ga)KH;**^?tQ_JOi&~Tx8J@X z2wB(BSHnJN*1p2&?cw2366dXr929KY$osdx9=YEG`A4R@=%-GZR4tKrvr$b)eReDI z!t>7wlg>n?;|lb@8Joy6mu_3-ue?&*vBWbXt(!99a*XGlH1=nBC5iI$bc%o267mjL z$-lbqZyoRbmG5Ns-AT7wkQW|i?Bk9ngLUJ9MCgdwhJynln>Y-{>{3ty2f@dwngtQ_ zs9`mh$bL(5p(QvooZ@OEq{bsNHFj)WIB2<a+1KwcDG>?#=zg6OM^c;iwj>?NX^yiu ziF}SW0H0t77TuYlSfLlJVIw=-C!>%b^6d3#{(mAZ0^c{~Oh}~M05&g)xwaL;Sx=i; zL9nT#)iFCLjm#ip$GuFpcF5gz&PEHwZp6P`kuI+gbQm%a-lU;OY}}I4_d&Qks`r=j zP}bdzFcsY>jo)}1qcMGu$lI1>Ek<!GUmS#!Mb*q4Qbc|3NadC*`Lfb}9VAR%lG_2g z<uxTXj*#JPwGliW+6qaVF&$W3n_e=~Mv<GbyJZ@y`~DM3=|@GE*t9w(<+SVWPh`H@ z%X~O(6|#0&Z+ffQ0vod~HkR?R)iA!2$hsWy2K2+PHk>c#=$?8ijG81qdnRddYq8(* zhq+0={k^C^=7ETtX)?b-o}q5NF&-qlMqB>#*8edsoV<3wrdvJxNYW#9!0U&;v~j@D z@JkPJ{W)~)?2A31kI4N2MPH1!KG~6d)e|u_f$AQCf$QHvxeo1xnx?U`YOa}gYhNh7 zx;BplEEEJqcFax{TkkoQ+_CR6i%b#h!)O&zzm*1{Q%dc(oOJ+y>br;x=t@(k<0e*= zT)Q~DdYBUm$mfK^%RGBESpCk*Ausg%Ix_MdmA14DFYP4FT~&ygR5cf_zP40skh@{} zT+Z8C!PPm@^%lOjYaO27A_*Zm{p=J&cFGMg2U;MI*EGyFSFH_F2b6xqIvks~Of<Y* ztSz?sVx{Qn^!K+x+kfgcL>ZE785d2t=)ntD>+n)v5xr?_bqG^5UIZ;rpIb64$gotA z0yez&VT*(ch<YL(SzojH`J2agubZBIe<5@c=F$+?Wt1DMq1jLBw~Tum>1oo_4!ORS z1G2`w<08u1f>V7>P&l$p=*uBDb|<QIrEz>*e`v#8WZ@I1*4iq!gq$@ySy}<Pnh^1r z;XHu4f>UZ$Nxnpvi2hguR$?{O@wnclH#~MnMlw8$sy7n16C>a{blLe;qCk#gn;_&k z8kTLql*>mRlQ8cI<RL_cc!25yUDMZm&B<F2l8s}t?<_Ab*cZTe9&By?-PRCiZH5NN zWUc#S2S{p#`(EJwdqeMK<G{(NEv=}#7#Tf9f{geOv&w-;?O5#`5igGK^{rQ5+RUh2 zjC5A`z|_xe8wXB|*fI$*F!}zBN2ZBPah)}@U!eG1LXCC8w1dXxi~R0)4~LuUhZl78 zq@v*o%dhDjs9$SWCrpH<kRZlQ2vt13fsf_`B|3}a9-V+zkGWLM{Mw%!d|@vtW!JUK ziu8H`>=N@=mEmGBMnbINuVRXt<aBuTHQTh0IG;GL5(l0p$HjioYkjYj<zAsKJKHO; zBTu*kNMFs0W)$j=5#d$>Z+YM9RXQ>%@wubJ+>N>tI#9k1k-Ib;v&I)+``GyWVBjZO zAVQ9W)JltWq4yQyw%)DPI<YCx9wk>!F=mFJWMn8bL5h%ochtU;Y1$|T!l6KWliJe! zL$cFw#+?&CEZsK|<vW^f4+O=Br~(m`eNcZ>OC(SW;&)SZziR@sV@UVmt(tQ-FDHC; z8i>%Z&5BNBe$5s4%8_K<V-3JW^uAm$;c^Nv>a7lQvw^HNl{x32-7wj@;c;I2`q$1B zsB-L8p=|`s)%h2g*<c^k_3L_$KL3?G!P&oanqz03HVvBlCq|-yS;59;w*R(RvSPru zLHgG_mUlNQX?ip28G%t$PrCf$Q;erYND+0dkRvu#TU!r-UFJnRqXLC8u+0`TQ!I!y zkB)qy@&3B;$XrW+m(*WCS|#4?Y&Q%BA`#384bDwq29B3JLNI#kMTxvsw@sh>Cy4<d z$q6){!LQIIY)h2}=_=TyP;d?@CH-MiI2xbm<j>yk-Q*swiwZi>^_w^K**l?Gyg=&P zUcmW!Unf5sLn51GekiqcF5_fK;yFw;W-Q(b`#)>8a4#FT-nxx?ojDo3M1EF{$L|jD zKsOj(Y&!YQno3s5v*)UC-BMjU*<{d>*kzd?40qP@43tj-i?=cd!te+GlA_bi)dV-x z{*Rh2wk28x`BIsEFE|IT-2;!W<?DISGxbk|GC(Ozs_;iU7Qo8L4NktEZ~(OGO#^mF z%p*(7xyc^6Fy)>Yif_Mj>jnQ&+rRS1X;Fhj9?$&!va_TO|0?>EcI~S)%7#fq?q39F zFdT}Ab#bgz{D{=p32IWjj9lK0h+Mya-@fSY^MC92GE25&h<m}nTjKMJNU!*L_11C4 zHC+2hEB+PFt>f>q3_xCeOvd`Eg-vd74sGk4Rf*#|yl-MfH5{`9DA#YA+z`tXz#-=r z-LzND#-~q^j9coSUeLrA?0O2{3MS};D{)dV9tnw@G<ke@N6xMMNOYE2C!C;<tg`=b zPR%il9svOD;o2J{_MVo-s__PWAX;X+-AoHF1<f+S%(lVOpMv}`a>n(Vq|>36z*G<8 znj=mf=`uHR!27}bF>biyI@Ih)fqe07)#K|mGX+^UKLLO+pUl_zc-NYEZ?{|D7Y|vb z6I+TkcHdrJ?GH%3>pu6SFO*kfjU-MSc*N{X_xlV|N)3;H$)jz!Zst14?zf4k5Oe)u ze=Gx>56Jp*T(wh0%M!T~pmVV$JHp=mn$ctD=hPI;ElyCRMIZjHdlmGzqsQ`0UtCk! z59wH@rM!7v&F{BPL?$lwU*y*Z#n;{_y$V#u^`|l-GEWBM^A6puIYRqqL9dE3ND?%5 zK})!B-O|oZlkaV3WPn1V^i(axZXt@h&FD4>VfQtAhD`H@9YC5|Yx6WYS=!1x852!V z9(}u&+8Ye#rMtOpQm9W%RPRoB<vkcoju_k89KZLW>K+y+?IF#vnDSOOa%`LLNEz;G z2Q}sb%9lHEvncAfaL&UUfDyqAM~L>Vk3N-advYHtE#XDcZBJCFVHzKnZSuj#(V(%A zt<ASjAQ`1@_X4u@n8?reV$rRxaAC{|{^5h!ZDFUsN^2#~iNEKarRDVCWpUt89*1Yy zi-R4U)gcL-&FxcDQ!@CA_Zg*Y;}mw;CS{EOG)>n)`VVWc7gZRqTWqn+mcBAJYw<WS zk941S&%P<K+6vs)3@2E&)=yq8IVe2{6^jEO>pR^(uX2PDz#qLdHf<R`CWa#}?Dty2 z&M}@Jb^K8ZGySf0!4VZ;rgP=(C)YHEssQK7kfA?imaYJ(SI`vpoTm959{S0l3MgYj zz1co69?a@cP^(Ks<c9cd8uo{k42K5~4@}Wj6ukI3S_C-A2SJ&GJ(<pTY5?qNZ#sSD zgfhjY+KQ(DU?P9CN0q(tK!@{^ih&_;qF`QlGQ9gp+lIX+bnUV)ZZVd+KXA%-=?4RZ z^NNZ=4{VlUTG)Kr=ETAJbOfcYO?r>?*x2QDe0NiK|Nbvj8z_}hP5}-H_?MJ;E7e&! z1ReLD?7sqsQnuRt1QG@pc=f$a{wp4u52X+a&b&{lFGIs35gHHuo!40QXPkrAE}u>> zNzVB*^wqwJ?|*}=!-(yXApqEULn(4`H)^i2(x(0Ig-NR8;^v}e06M1>vwC_+_om0S zp^KrEtDiT?a~?qD+)sCvvg*67olDjkfa-YkFCwK3Vp6v7-=N`u=ThoiNmqJS+TqWO zXK=-op>0s0G-UTvxDUjQFm#gIc-$oW!0yT!pw0ulu&owiCTb?Ka4NFOxJjnj)m`l( zAmTC#RYW4o%tXhxWXLkS3TKeZfbd;Nn_`;J)3m3rRhkY}V0_xfdMdqYYls4)w&L-V zgQ3d`r+0t}gu8|V&nPyXIen8|>M~w6i<5Lc<s!c;Cq<W<5qHe5{+|h~W0wElY&qAB zIcfG+c0I>W>1Z=hrsZ&83K?eD&?BIK$`1hby?1I@dn*Lipw12S@RgPeCI3f1=uNBZ z$(DE>>+JJ<l_<6vyFqyupr#xoABdyI`xr`nw!iiCP8hl@eA=?xx*R#&Wtsnq@w4L< z^3bUgU8Z-tZS-U(t2d1cN-jku-6R`P?$e;7q29+jwYO{OPi4|hZEvks3=lNCagX-@ z-Y7Y}ams42iMkS7{Z4-oRx1nml(cJqYZI`v+S?<i`lporq|@<c)D-iqbJl3)r8P5& zU-@|9|6DJeUh|dE;@X45rY&RHoaRe|X@kO?0qZ_Q9?t(c{rw6cVHg@2!{L1T6tEU> z1F+ZHA?CT&AJJ2nDg}~yX`I&&Ny^Wc0e@(m_OL3V4xDVSIyIRWUkNyBmFJgW-NjR< zE5T!MFByO3gzx@7f9m|=ND-Vr^wT$Qq0{Nz!>_f3sGKrKc9)Td%O(ZUNUP_}r$fQO z$|P5T>p!RZw?iS#IhHvejPbTT^rTGbG208usigpUEYP3QnGK*EPZsuex78>pSI!Rl z`~AVkdkwtClI{K<?x*UN)*?9CycmDk6_<&{Mo3QgNgs3x2wMoxvcNo^?_D1}sGL*D zfQI>At<i@gb2!@k8E<#mEYu$17ZpVe4=du@68rqLsY5LPQ&9L4;hGB|eSlUmPwi|i z<2tW^c9w+STz$--k6O6~tG8k1#9DaF{Y-L3Ugq;V$Oi0mF}h+xzB=e@>kK=9o@cia zi${N7XM5>G<2t$%AhOR_6U2e7WR$8s+$za+zSfa1C+!!LmSRVLwpXY6Y4A1Q4~bMi z9rL3)+D4J)dBxD})$=K}($G?U-8tYKPf`{W#?L3<<j-;~t-9*g9rDmRr;zoRb@53_ zU{_trKQ@1uxzWA4YFjh)JMU6&cbKV=`ppv`7NU-|`K6J$GO-wXFE`B6xJGZ_uRA93 z=9YgW*Zeh8_44G8H*XB<%=xx`YEscEpzdR(-3%%99|AV>`&tW*YyZ|u-1rYT?~^n` zS1baF$bDW@TvkjWp6+Oyl>)8UeXmc^DqJT5uT&@chN%l`E-(}K>j3Ww!flT|eoA1y z=y;9<-v|`NM$md#CU>#o+OM#%W}+S&pG(>3xn?}ZRi2=9$;@XldssG2BFxmbr}iO6 zZ}A&X<FS>aVqQ9s+o|g!hexEjpa83<sE>6MEGs@gMD(6(g^A8QD%h3#{X4m7v*47N zQuj4vT9yf<a6;KPel#Z^{dTr6q>z33IB&r+&hv4EZVH#>RA)Bn6a|TqXItN9#4OY% z(x2;j2{1Ig_hi&nJC$+8F#LLYTW|q3;=9V3K3Ks^qq{0kYP$*nJMy;zQhgE;&!G+K zd6^mXm9!amYf-Uu42V}z%T;AxtL2N%^N9H<{?Yl5+qbjuGOj%g*(l3$I~te?jA7~K zvN`6BVXKgor@5aE_g8vA_u=6t0}{uBk#=aC;yL3e?D>4{#oNl~X~yO}UFS#`5B$`( zr!@<H8v*YvGL>KG`Y?$l1?Zg2G+UzbR?Pdn3<f4A1?9-XkNUhVs#H=hG>MF|)GSk< z9ZNciG*V+I{n$@xtxVs}YK&!IG7%rVRxcmjGH;15!H4gb;G|uL>CaVuKhat6SNig2 zp#a|Prn}vC>*!3M(w+_=k?()%g0e{WX3%~6ecDCQ0N1=@;`Ll(R`|(gwijL?JEEDh z+)}!py)A(2S^*QW)}-Wo-%6lud9ZV{#}rd8k-z#5Q*Yps{`iWF*~Tp2RoqoT6$>14 z2|;IOk;eM@ShwcNMGk;Rv*cVZi2PUF^297umAxsgg>awmBj3}{YBg?#??&}oT7%~# zGnoui=jJfGKaGRrGlyHxHBIMuG4@#A{06mb@oo-|(4~A+(4c9M9H3j_*R(mYS1T;- z1ExOvM2GYtrAajpAnkJD{^4=cH<r-v&Xd`%z#vq^wTTSpD&a>CqYh_*lJAC8Oji?0 za8|JrI3>5uxF<VWC4ZHK*@}+b<ays5lTxDz6yQ<JT7`iR2z3lXe#%sG_H?AZ-%nD* z)^vOUoQnVAM_brx+{A3t)@!ocojv}}z&|vlQZ>)lTae;~P1Dx*Xj1RJda34Wv2`@h zF1KU)7H^H5D7T7o<}zQg2DWWHBW5>-NL1Xlc6=LE+@Jd(z$(nwCW7PdqoqCSS~m1* zv#d?qse|IY&61ym+*4^Co}8SF_MPW2HH){k6rWWJF7U#SNHC)*K6(F#yrVS^ix!fo zr<Z$8m*88c{j3N;M}ES8djO|zp6dyCga^Eu=b2eSgmN56)8({JBiGz2XerLbrl_A! zW`q6Cm{p8Ti=j-nAn&M(E6BW6@(82?R5co+NDoaV3XNE>39+>~Z??H$y#t&akWNE3 zX(ls15`mWfP6m3?`0!WMEXIwhq<dp4>f?aJFI>~2e)AWC=Ji?(unbvY4d<O^i6qCv zCV2<_BWL+zLG>&`<a$&SvQIrRBCHU}?!2{{AZvrmE_j(02h{JxH?(z2CR^!tMgJ_M zi#jX=hN7@R_euVackEK*+_eq2yRuJO!>+BHhsVl0p3{4ze$?}T`>5~PioAk|vO3{z zB5+#MU?CxKdUv=YI1i_lDt{IP_GA1rD8XEYgX~>I6S^5NTCDDo)5@`z3?U@>><!X& zp|5fH6V6}PHGH=zY^LKAUv#3|8K5V3sl*8TfQzYuqNg|A@{WJzdB|q^NV;_36pWNU zK_;%2AmcmJ`)r636aH`t(H)xMgiC(apM=Kf8t!DlN_cUG@p0U67`1Y|0AAN&uy%g` zkmg8K)#vs4lk5l~@dRp8k$ZGmx`+?OVqd*)iU|iiVaMJLHxOH&2(ZCJUWGEQE^vP! zsD;ymxpNc(vi8>9qSuZ&M8$VBmt)`PP)W)e?zJj$u}trPgu6|^o#{zAi`%|Cq^HOr zc;8o9{gppSPCxy3ICGU*#AfBa0TyZK=;%m-4CIx;?k2Ljudy{puCkGc=SC{toQJ6( zT@4S}TSYCbe!GM9U$j28MJ)~>jyqs&UFPG=BDGuGtl?L#))=@^$!h15n;(1>b#0yC z>&s0S1hAN|F`1op6CI!mezZ5=L2vbsTiw|yCu;Al7C4wGYY9~mU;G`|TAi1brGN-k zIGJ6@lU$OgK(n=|9G)=^@UZ6lBs7Ik^f=jFn!ij0l3L<J3_#hYv8qPm7bQLr+TxXL zaMD}|Ju<f8lg{2jH&AC5^R}t|i{@^r$ELrfn_=L9+!6_Be~NZ#te79;Ek$fl)6saV zw;5{Y<kswkH0DOJmlwQ;*_+zbDBJ2yY;6XY0)+a_W*xzS;hazV52#s-ma^QXt8z2u zfd&apcHhj6nXK;(k$n)NzeMy&2tiMj+u~Z=JXkm91>j-b%o*e@Iw_da!-S0hhn@7b z^~aGMSQHBgxgUDDF6c0#(3E$~`5Xip;+o#=KNK8;ei10U{O8Y~(2Q1_5EZcFQ+6$_ zZ?U?Z)23$T(7~q14Ck;NZ8u_-kgD|W15fiN?eM}Ku2vw@gY=i)GXgaF*lOhNw_o;z zi{4NByVY=zyZ3VlB;3T~es2o-8;(dFXFJ9ZdR4nQQJ*FHbMfgrDL>14P71$8u4hV+ zuj4-~G<O?)&$4cD<EL^vRCF|63*UnbCn$+kaZ4o}dw(un&ttS?cognvhI;0ml{G<~ zO;01(zk`1b<vFQ!O@}Hoa3)0kSygez{C56rbd`t%wpH20h_Tt;D<|Gj-e+j72Jb5@ z+?+P!deaLlo;pr)GdYxIB*DC1wG>IwI^<>=n|K`4O<47-R3*QCTEX-(4L52fm~1T- zdc7w&42S{<SPHK<^6$_VdyNGLtxIGU=LrS|vk6NPpwP_2=eLML0E0+u&EkWn!bUr0 zcU1jw6XR~<fSo=I$4pKuKhb%nhwL93iFd<M2mbxXd|#CkH{1*;nZA*U8N`TBw`jBl zvwMhx+ksxsJ~$^1H$n!LJWX~3rjG-Q_pjdR<o8HD2EMG*&ud;NCRtGyj|?i2PmYp6 zv2#V%CdpLqwH}ZHR~ms{H<Tn_7yX`LvF7o3r*mRVO4wp6Y`nL(cW{gPG4^7cfU9e` zbJJCl&~wP>FZxs3`evg{%XG`Rh)D|)y8cV6$GEzlTs#?Qk`S?)t+!lXtU<WeID_zx zfSdqfV#6d<<#wg_^*lpwi)2<hYcIs9^w1pW>sjXt`1Q?}$a2YD?T^l`%{N~kMEpj( zp<hZ|vAZBwh6B=A4zlv{E`OchaW;vgpZ=IuNZ-r{F?<hT3cM65j;m(4v$ix;gk!~V z!w6Ydpqh*+1+W9|wbgCX@akq-DdJ|;G#Yl$pv}zMqq4hXW(yo!+mbTnevJEK^8sw( zfR;FU6$KG;z}DtZuB|4Qsxz~$g|zTp`cR5U?J40RDA%5T?4}`RMjY0-6Ql3N@PT+O z&_R#@Wx2Y^OnU+NT~k1&%At3HuizMx;+H#sbN>PojyY1=UWvb|8}6gg@7qnxaXT3E zz}uR589ZV0Rdt$v+;_k)=SC+PTQW1IjWlR_nF&W)p7y#NG8=Cv&a6#=N_qe;mPj^p zy&z$nEN(A<HXZ5cv)<`w88&CZx<t%<(eH%2r-$m-MoJ2<@SXlvI((bweZiq}T{zGr zE504Ah$Q2x9N7XiU2N3$)zu0UUSF9|BFbme`)fL#+#u&*Jm#jxE>)gCh=VV}v8BIX zfSo<OjA;979h5Z^ub*TP=M^o7<=N5o7`d2yGAR#nqCp+nocU_!dx^jKm8-eR8N%Cp z@B2>X1`wl(?+ji*n%;v`QSulWSuZ0hVy%P3l>#y+?}mn1UHW0u$UK!(*<-U|0fwu> zcNL^g0^z-JmCf>g_WJfA(4bMAj5yi(oSO*8c%XBW`3mgjs)RRc-&cOtzIv9IPcYZ} zW*urV40OORpT?|r(V$;WeDZ|;y4(NsRDUCvdtGdM?_nQzD|s%l7nAx-Nl+Lw5olo2 zVt3mQr}5hA^Y-~CmU~7kFH+;j=clsWEXbf@p6cdN2XS!HmWHyS*;mJ+UW^+D>C}#s zpD4oPI4z$i?EBInuQ?U$0GP)^P)qToR3}GL$8t}v{}5S;ZG4~@D{H=2eTkWM9r3-C zv%+%jruW8-yc>1$$u<*lc+lbKjB5LBmPOjfo!Nc>yJj68`S;t?^`-I_&i{2Wx?VoW z?^e?t7OQqM$XfK9;<4<t<sX|;7Hv!?#c82O$b9}i3x&1eB3qp`o#L&%;mg^u^mhZ+ z9|F3c9LUN%3AhQ9V%HsTT)V5FppcMK^DXCIGLD^fS>=t<Io21~bOBDftOGevW327R zrBitl*UdPSbF(797u7CLm?TzBJ13_RH2BKeG<@5BMS33i&ety^_rL4G0^Y$#--FDf zb7o0Ar0!<u{;``YD$IG_TheR%`1qI=a&-HPsIq-bt>G8)!Y_rDXiuP6HruwtMN?nr zd?QXju}2YhH~A~=|Mo;ZlhC&3EyRA_b7;W^2_ws;;{o^WdzfZ<)zqvZolo>*C)6y% ztqI{JtPgx?5$VUNZHAER(^P{fKlJ#~H4MlEY)*hvJ@xJpynKFokZ@;nc0rBHeKbIP z3A#$Z(N80|O;s4oGqSFSwB#=D>~(n?1C7W9tUrB*y6sxg(yZOhEZS_k(1$?Jr?s-e zOH6!>HVEKf4Hla7ap8V9wVeSTILfm+!}eqXp;#DM*NQ(7{&v`I8>INWvnKLx+hTW- zHqb;7SuJEoN3H+&8+^c-(1l8TZHD6(^yia9h5)4ZXo!4%fSN<uNVBeqRfQz%sdn$d zk07PA!Dq%~@)7IQlFC;gwo%l9pq!?)4KcI<A{w{#)BD@2MG@wa6c0JRF`)z?dl=9> zA))qV-zXUwJ(dAM%FSplgM3IQ#kN!me@63@>+pCVtM~NhV$)Pl@a*1)anI`9{2~kQ zX<nugd?MZyTgbdVk?$TI`FHheOLrXI@2@~7V~#~=+mQxY<pZg!ExFF9qW~%KiGG-- zFkBnv#=^cm8i~lcp0IT|Bw&CX++RsoHn>ca5uC0eG1X^cCQvSd?46WNWnq~8*H<e+ zsvRlbhUf>_j-JUb@76iXi%q``HyZm^RY5sM5XLRB^OPb<*In1V?u$L()hXMMzDQnm z^c31QL~P$99#_(ef8F-0g+VXl#5&^IL2reF%&~KjVU8imx96*tz0Bw~WnKGC|JyMG z(^#b~am>l+-F*_09C;Q893EaOx{TwzwyyF^X&lGAKS#8qN5W3_SQ;<XYAb)3+3Slu z#xSRvhIe=M@wj3Dqyl{4LH#emxQC<nyK1%?mG@2c9_UK!#~;`7&&#H$MEoZ{<a}<Q zFM-mqoWCx#of0s+#=UZ+JTDvGm2LpE%Q$=7{>$y5pkBW@(|!LS6^1hz3be?=%4xnP zo6lyKJf?s&U=V@c@2EiuG{5*v^+s3d`3K<4(ibwh(dKqN$3I_5dXhR|+@#@lqO8z^ z4?RQ}EFFsHaIvm)23dAPMb|NI`0LX+{|!-vT?+-c#sj)h6DHsU(BGJr=~AD~v^6-O zjg4Z!wb`+J?Bge$ufn%hivTt+A8@o=NMx??7Ksti#cn(dPr72*>vy+Q#@E9LXy;T; z$0@kmI2N@Iy{Kz2|CibMT5GeivI@2RrY-mGynAwX9OG`<0$2cGe2vW-r~|*7BCi=Q zq`0L#296N@I)*jx8tr{REM8b6OYk|63oF0?uPP=!6!Zp0ZP{|Vc#WUPeJ;QJ2fmT? zXS{DZTzG!?q33dXS~lfClo`(ZN<8&h(q1c9Zgca4B?b~$1a0xBSU}jnt|;oygb6@_ zM*k~BS6bthXaN841-fC3s(=I0Hf6)tYYbnwvtjSH;`hCHI?5#^{-us6Hm$lz_)-uf zSOi0vtzGGAW(8x7KB+d0;hfy;zq|^R$4+~y!U3d$W{{bWWN=Q;UYH^XSa}orL&{?^ z(2cx7#x+oBlc*k6>jKYR6apz6*|ehg5N*)w*9qg=HQnA#k~qqzGEYgDJ}G}JT^?jO zfA{@4U*~>0F7Y(H1|Mblk=x%sSzH2E?lSFQa_l8ZI#aMbNV*ETuxo^xDV3;jof<Qt zoCgCs+ci|LU%#H!Ic@#k0J>&(;+A~2p$f43G#H?}*-tV1A_wcTR`@pS*z<p8;3Yc< z9y`Ngtm2x}3;%PCx;bNM-<4X&V$5MUuS@ZC<8%9dcm6p#P$<=fFcr53q!#{n?DZ6A z!~sncli|^t3V=NV%8Vk`i-kdN)_mVZWZl`|hP(=4GJYN9`tv>M%E0Lm5ZtVY`s|U{ z)5}LfK+P3=-S{=j6Q+Awm#^?1S=fi^BY<;v!?iC-^r??uDfYAiVa69H2!5R#r+b_7 z!N9gjDA&UhBb-*QEZ|L~T3{2J?*R!dI#&K@HWfzCn@#*SSju;S8trkN&)35V@KB&H zx!p{)y0cHH`DUCtu+u{>&@~#v07p=>=~N-g+rfq6>x22g!M=4)*5yvs!J3B$UBkxX z4=sQ6$HDf{b^BlZ4s$K~nEzsAFXzP~2YcyZK<l)iHf-%igHO~^g20|z<SLzLiG^$W zvD(-zY#zVAt*Jdg*a2O+$EBARg6{th@0zAI30k<=KgE!!w8K^lFK@el%Z^raD!b)6 zI%vXdopk|VBTuyhfVES^TOp<&@E+ns;?e0}4qtU<i9s5|bcee;P1IZ}frdk94B!?| z4|sk7ZiYbmP{)nQ1UqE=+1ekBg`ip($xFr~Lln7yF5*y1NG+v>IC7Lh^75!IHBS`4 z8wjF#anM_%|Hc3w8FW9-x1Q_}@C7{(lMx5>4}sPp4;x)JK$1)qZc^A}1y}IjOO;4K z-LSnq*b%VyAI(0dT+R#cUh3GXIRc5wkJMFqKlSHBWSPZ{nbX$u<*_~B<3mo^KxnK> zhnl*Z02_TlO#KBJqCzvkud1~{XL)|{TPnPo&?s=elH@D<HsC*9%uUY!ECiG2^EYUj z`nG(=D^bui5^xaE2EY0(q(!>@a(;{?mV3XwlPQ1WmvXG5kPure?@^I-z8|m&DBa4n z8v{Z~O?x1!{|H3Qap|j)4EgV4_>@JGVg;8L<SG@LqZ3mB4XU=`cfCF-&;SYTJ|V%V zz4XKX*VUEBLm74dvZZ8+Y)O`6vP8-jYO*D=lqC{Pp(53gEEO{m$zEj1(#TFlB1>w< zuE<`=Ix@+UZOmY1%<{X>w7l>8`{Vie%y^!ApL_1P=bU@K-+PAMn!@bn)bZt4N{G9s z<gmZ0hyZ_5Fc^44#2auhz$+NHnBEqm>;!=3rCpkfyN;3;?Gnwl+fwyw2E88;<ixbI z*T!|WsYIKl_TQzKFjMU?=7RvGz)pbOat~(D@qW5^?%0gf#HF&{L%S63nIpNG=SoyB z?J038FlXvH3%r+iXyJAyuajopOr^qW*+6J~Zq}^2lJ!npd7exH&^OaQ?{bxn*S|<= zb&aj}h*ep*A*T|du<YZH#S$i510v$|S=#AR7=v4b{>{;HygM8!6KRfP7af<XNPfMC zX5`VCpEvM^9kXMc&r%!<WJUwCFT7);VGr-b=nd}vEJX0AhkFTSIlx$!cgN{>`laV9 zNWY*Qdq!M7z*041^Flsf0x)XDs1v#y^LamS7{`gAu4nU1Q03&Uh5(0<<_mC#KWpF2 z8;xzh%nr+WUY~Hi9)Vpi>&?15tlVI+A<RgbrMq}V<?67yiZ;ka*My=Tr;Y^ihPfmw zP|w~HKihB<rx_>WTkN4MlYTdQ8tgP;1ItBSR!^uMD74vA>2WJ5O^D0zSdQole^8+F zvu>1EY=T8%9%Y-725;C~hr<ku#x~TTN$}|9Jv1!_(L(7IZ`kQKF1vy`7xla;BkEcX zJ6X3Zi!2_uvoMbV;5*4_fN!jeJzm7Pv8NQ|Wao7mNhvy*M|vB=0#1>&snPG>zn4nZ zx7<{^epcKKAO_spEg;E_EIugfnVPqDPj0nZk^QwL!E=!0XWMqP=SA`YMyHkeRZ=Iw zJyC%rTAnNGc`Qd{EW~wHP)(R9taE%1|J#Y8dkeXkc4hxvTvlgj@CzYp3EEgFpX4SC zF%^>)8j;SS*+)tQI1D;XgBQ$p^g~&~n&z2JkNQf+FWN>L^?c3~1pgfH8HCpyZ)QUT z*oh*}MMI?MF~;l--r3zVvg6*YqE`?KD4dh{(APpbxXzY}R5WL57dOf6)z%W^C?#R} z{v@1auLEogAV5jY$$*G_zr>rPmy7`8WkbEsCP3QPr{4sGMr@$qH|lxQ<?5!5*T3!n zdqp7vNI$S~-&j%cb;J5VY!;M}W5cpwYxB!c)*kByrA>bWs%_sJ$9aMs*;MPTqSe2| zc})L)lCFOKpHH!()iL5cR4BR0#Rh5TYFz8~e_$u<n_q_MK5?1|SZ+N3_cgyw1kC>D zlM^9e;y<6h5iX%G_{3V9LO613e8x&d!#OD(_Ujag>8$bH128rl9(9Y!_!VIYG74-o zy11=#zA+o5G}xe_3qYzbJVYOk>1=&)7J!<5F&P~ZhG2yZ$8D?LGU4%aht6}pdmuad zyWJf+F?{!2KLTU}!mjsR?-S>#-t(J}KIc5*p}w_sq?q0AH{Yap`#sayNbIN5HY?!u z|8_Y7P=X65^N_Ggb}I$DbdsTW)qBR4?UNHD+ts!%mt7`~Zf3VMGU0}U1mvFaud#{7 zY^S~KxshE+D^lOOYE{a{XDd{EPhq8(l3my=_6l#`+ighzKYgsw65|WYW>2xZlz5ZH z-2kTJ=Qw5bOuhCYw$NP@q)4(S7wN-3RuFItEboG^`%bP`q(F8rlxV4C*}GXdPUv5) zfg?hjHhN8o4^QeJV&CgXFxtiSHUQ-c<xZ~UvgHO5+xUEizEzUSDs5D^v!w^V6P+Uc zYY5P3Wj1Y`qyMG_xVNkv;+0sWr>E&}WJCXFGdm3HuS^Z3Y4i9#X9KvUzS^5M{>nm2 z6-e!d@L~}DL?1lFdwyz>%?F6my54WNK_3m+HXxvw^X)Ut?(R~@Ua!#j2a~673dQQ< z;@L?)iGQuqWXIj7)CpDG$lL?Ze@q14{NC%J^elBc*O}V<xKg()0U-hob#lNdgB$)_ z<HOw&GNL**^lLK_^$=6zq<3)OR{Hp5&Og^ZB-}mN{@qM7K4sphKCrD`5T*V1qO2Zl zHEYp^F{`TfasBUO#(Uw+3Mm=UwL`?}FXwo}XC)}L8~^o-L%F<*PlyhAN*QkK3|p$$ zi28k9&_*3m7PvKm<kR6B`gc1nibgF8`XGWnTXV+e;L<$|Kl{ok!X!ku84#-@GPoT> zW$0J$LKnW7L9^f4ABEdDqRI<LecViG=;i?zAd|Z&$5Wf}V%NpO|Fi&FDqp|mVF3o< zQ;{wGujQBy<Zino?1ptX|GqS?hOT{}@b^oI{%Mql(lXPAE<G^C{#pn{PZasv$TLO_ zCCycj-N^TU(rn5`)dm0m;nkyVPN2(g%8&RHMMEQR=v=$F6k5UcM<g3jA}jss(;}{k zKO8M!jjrO?#ay`m{f~29i!-?$&C9p(OwF19>AwqQD=Wq^`aj}rsK#$`;=TF5!bPE^ z8jP~fR`G>?gK_+u_=)9%#~i~mxa<B$xEL8|R*T(SwoOA~l)?Sr`tyYGa6-(0MzIrO z+g@a}h;?|K8aRl5{5GY4S<&EOaP=-G3lk6bSH`v6I5TqCTwuY*eVsR*m0*)NSFHK9 zI|rj~oj76Cr();uu3Wgq)xKEGW_iGOE`q$qm#j=)wRx7-R-nAzJ9&V$z+m(TTKC5w zQNR~zT@Mp2UqMK*r-T2;l&uCBvhsS%M5xg<msWR?rGCd(T_b7MZ`blgmXfCP*82z| zH&-`%(cMyQsV(oagLcfw<>|XZ5V^o0`tR&Xedso80dndHkQ;Y5NS}+wKRI~0G#Nx( zeddhnnIDt@S}loH0*drdO)eJNIvCif3$L!K)ou%Pgq6o5x!EGoqZ`><ZW@hrmy`7# zHj-@)`qWtl&S~~U&7p1@-BHW>q5g;_c_7uc<zk-rJ~8SV04@jpueQ01Xnabwf)?1P zE_DxxF8OlRsQ&hN)&5Oz#vTXSXfU8@SlJU#70Wz(*bYA$L!E+|2LNQuy){jpy)Zw0 zMLvio7KdIZ8l9iQs1~6MZ!Mn>Ny@}}>{}7t9-(H_E+tX1s0;FG)jL1)7<Y<0j&FiX z1$1^xq(+wuO{bjWo$E{DR>IfyMg3?=6ZAXDL^;<m;+c<4il`iL{qapWSxS)vYsd8I zbp+?|(&24J6lqrX5wvdB5;(N6wev(&JKT)G=xdQ@U3tpWYI)&EQ@1pwW%9D+0~50O zMxd#~VjOa<O@#<R#mpwYKi<wiv~T9QK_2{^YV_G<veWKW>Q=Dm_KN~t%a9Xp!127z z7w51GdOhyuOFLof;F67JnBO|ub7oS;Qk+U48^^n4b&Epl&W=Qw@NYfN1zs*?K|G|z z;{);AecP6`J?1GV<|Ab7dZq3TEMSIkS~e=+1kIEp^h^a&>g5CvTh5{z&(dPcu)of# z8?^`e7!Au7l>w-_8Z~mjruHTINw@I7`}xPCk5;#%B*!lqhV&H%(%>0IbN#mZvU?v- z$JIY$*2vkkhz9ROq_gL-6<Hb0-#h$EM7oss!%%=}y}!Y99$E$@J(Ry}HZ+bA<CN@N zxf8C7tp{?l8Uc4#%Tm81I7hFjbGft<pkp9*tcl#)CqL&Lx_v4IFj2gIg?BK^A<G7= zT0t5wQ2GfpzXbfuN%(agKqMJo2=TnqXA^5*5|r|E${?%yKr68wGJ-sKRBQ7?-UYCH z)w%Q*xAh2mJ&X8^t=z|DWkcPxvUY5Vd~WxB!WTtIC4$!_Mcn1tlELw`V;lKHdNT8u z;r$4{ms59Q+n%$<hh@Y@9p3i-@IH<u4@2HCi<u0knINA8rv%3(zfC9<ozi{1An|y= zpd*(oZ%H10dym_AZ}5j#ZVw2ezl{gma6ECAPm~b@bVe-z{@`?>!;CWWdXj{oi;x?- zSC01-m717{jM%_sXaxY!D>L7=H4(3{ZEY(m*Wu~|LAWaD;0k~``N;ih?gr<yAcwGj zRqCaiu@U9_$1u<|D3W03e)wDikn%NX()Vrs9;pKQbm$WlyTQnLDHref+X8&JDm+u) zEXcQ!H>^vUm5n+nCbLWXj|kOy%VFS6V0=c>G>I7mwD{2nCvH4Juidy6^c>KNy6i6V zr&0?Str2Re)h9qrw>Erz8cz1qpnmZ}ht#!D9y_L>nVFd*;rp3}i@`dOlLJ0D?VAYk zdt^lYb@O8SL+iKVJ>4?rRISmQZ8%}~)4Shh6}O}8;Vbdh_A(Eb!{~d>qs>z88E)0W zmI4hkd~o=Y5Nh*NRb7?dP?uhF=11D{!uFq-=XmA>IZJ7vFi9W}b$8B`bO{b1*yjCM zwjL*gBRQS+!kcG+4Eja(joE_z%zc5O0m8F=l5W_g6V~C&9k1sKEJWd{MQ%zf;vNMa zr|1TOFGcL0s4w}sUjZJx>$9+Aqaa^skSUBlpbh}^PsVRrB}gszHRzsd_)zkVVA0Af z;pD6Xx6;oiX|xUi4J`8jYayxuJVZ2IykrB|!L9}hS<U+q+S`&4=>>=uzOe2SAp%(r z)JF{$nWH2AS<RZz`yxI94G_)+I?_};ciF+9Zf~@d&l*ypmD=aA1?81~_$XdSE^gD! z7YZLSO|Dgq+grs^3!m64?@5@<b+N6x^{62KK2#x@D@5SK5p1M;g5DYJD0EH5;`3<7 zr%w{TZ=sJ@H+qU9FGQni<j2iRYQ{f3IXEy;s_piGIGLK6mV`*TI8dl@TaD@9bGq^* z<8!gydi5@M14|Hgm|RLazR8_(LGHYINb!@KXBUjzTO|-uKNqU213$)1|5#J@vJ5<B ze!~a7umk2Mh1XunsK#iN!-Vh2NJ|hOT;S}DVvSm4)oKK0Y}1HcR1D}vLV1gvWxGC! z#m9iHvmoYPuphhR2Md6^yV)olgS%|opM;v5pXo2eJ*=}*XeD0bz`5h>MHBFohiqb4 zqz-|hM)sh7&R@2ii?VF6QRnh8JzwW3w^W)06GVP+bvzJ3jKJ&B^hG@7Ucur>BOvQ& zvT$Fkb%&tcc(oLYep$!P90(T_$9a7-`>scCT@iY8c)0FV5%DhOa4E|C1|{D-ak5Xh z`%L9Hnj_HAT$RwvO%Lb*fdE*~<?Fp4S%!TZIS%yUuC5Q%YZquEe$J*AY(kuXwFqu@ zH#iH9y1sI1%jG~VsYrrlS}<K`Pt>A(ut)dmf6yTiLNlI3%k1Mo8SNm{TEMmT{{-Di zLDm}FI$Ma5#Ck6Vg`E&Zj;yM#K5HEirGWYg(879VIx5wy@$?DEdxv1J+<rhDPtClG zH(?xm{_SD$dT$*Iog%>dP;j#B`P2H-8f3~42hJa!FTgZQ-0t|n-2iqm;vCs$=vb`A zF70~c1h6jeA`Ve{H_tv<4&AV<bUSc`2JwBms)(;H#8TawM(FWnJb=a!x0q>ih^bNd z?ooN0yVO!f6dqWS^Qv%$kSwUo8zJ&OhVDIlhifQS3t{=BP9{tCG8%aoE0@;qy1R<# z$%(rKtnD3ncUr#J?WEC~JjueMMTGg{-m=!F3(aYymT=eQ{_f8<_Do5yt5eVD1aJ=T zUjM$RTLzl{R0&bC9QZ;1h-My`<LGOAp%Onk6a&84puhLLz({3B^QBX13vfzpxi|0u zPmimjZuZ?OscAAMn2V}k#RrRa1kZ4wCJVW`tn8TqzLu9|^IzB9pJPYR^Y?!ni>L-j zEn_NkjeYl;FHh;TeGLfS<CcyV_FJ+mq3C-V6sp~>Sh}wiAIZNI0|kUY4>Txyl$&&( zSs8i}T@JSzT(xf2Wu<@Ww1IP3?Cgk&5zAkj*#1)DjzQH%5a!37E|)8(<twvHy*5Qo zh`z4~PQiZqWbA43f>h?#g}V9r-SHi5N-<*E=*}6*-US@QpK%6JgW|`TvJpfk_8@gM zjx23%J7QBzZvY7^V{)O2La!U8aC&NYyt~Dy4H5&Yw@sG?eic-|0`~^NR;T!8ia!PF zS7Uu9O94=2@}zf0BP=d<k3XAJ_(?4s<c5dH=a>$!=V@fVCV$koQpZx=9x<{}0lZlc zS&vXyM0DI4T9TCJ5m*sJJvX8`iR>m1GWJv7E96_L10LFtfBLYU?wQO`_KLi#sF=(W z6ZG!f{u8f8otHtI2*u2Aj%i&a(NuC~ruaM`Eq(a8JJB73t{_1!%CaTlbRB-L)eX<L zIrsYP3J$OWdK0X7vCi($@!XZ8V~<gIe_CC@1;>5Uf^^FsH>l8O=!vTxd$#qFJrnJQ zLD$Wi!6F@_-FZ4sYyNcXX&l!glMG!+SBj`p7ITmud=Ns>j!Amu7?Erff7pzBo&O|6 zN<iFjn?=zK4K=k>tJ}5=9qwgPPxtLstDEy+gvi=ubXS3mpW>>?eRA%XX@rG{aC)KV zyY8uHiyj}SQ;nJQK2xTyS7!ET3RY6XJX$>IdWT(0n#NScW_Gaf=oy2J&MX^}Qm~;) z=C932nnjYgnS%!$;m(g;<>N$vN7jk!a~n6xk1qS}RdGy}R2y^hk3I5)r=PS*R2;T9 zr5ePMcg<*dy55$1STa%AmX0p?G^*Z<xhUScDeSFDTdfK?P-9xhx4d&o8*IjcvWoW{ zsFZn6`j)CVu-#!n2%PB38X)RO{&eD%u)x*z1m@d>96|0r4QI&0hQ#6War|6Q9{lV+ zm$-8TQ}|e<d_hK(9cvulikiHqA0DOY(7Tysqx)tD(}ECqg4pwxY;?YOInsAcQlu$( zta&@VPZM3BsVL;3;`|Bigg@KITz;ii@Cq$KWosKXe|Eer@8dy--Yt|nhu&!UnATh0 z+(1>`mx&6mD@#iIS<(EMp3-p-`LLBEjJ6jPeDOjsZ+U6#&u6&jLh%srhFL-gWveu$ z5;~%)p#obj^h#vqOS0GPCC-r$Esd@zMZ1*~NiQC@ZUhkn2xII?CrN{%-nd@nF{4kY zN@atGu#aSu=Ocl>&Qis+GWyuPJc{~9K4Je_Y@;wK_^ah;f|yJ9HrlSRcQIp{S<WDy zArwzF_pF=2aveqt=TMQ6kprrDEj|(VMB5gUuGXVcW|Qbf{oYLKCjj8vTqWI7Lurc3 z$gSveMI;^(?8$gm2vsU`czXY=q&I8HdM+w_SsyC<*XNP;!k!tEIkBaH5gBnei_8-3 z*JP<J9C0`5oT{bthEl3*(Z)SOIqu^|_?=z-zH#Mif=FP*JmEX0^({oszrMo24838! z5_*-Sj9dCKJ~k4P75=o_j|h&k?68F!_dLvD(Cj+huc)q@A%XwQ!=PF<-#1ZEeV9~E z)va{<H=xky*RE<C7I5K(09G?(_^U5q(;t#<m7+eUrdot-HFST_C5{v8XZGeT6X125 z9eiJ)pp)#HK7yclrd3~dmsLy)(=~V%p|xv$eH~#ElOJf|Z}h8=ZzE&U7CS{!qk??8 zMF^i^u7#+0+7ZWWt7%4D%)n+>UsV+CU^6)La}35%X>Q1<B_HOOYa>viH|*N$q3o;~ zVp2S}>sf14vJyqfA@d<^dzhP0*5z~A7?+QB0lRbOk-)$lN5J)J#*zhImp$U~6wk** zcDfS6XM)bNM+0Y5QGhgQ3o_RVeweMVc;{oov(rr0SCJ&Lt9vEm8i>k#S5$CsY(&vD z&li`f&G7~;t`{SIK`lI|bKb14*&T?0l@fYewlh58=&F%Oq3sw?9CP#2E&}@n9>ic! zQ;$pN(zb=h&tFT+AP9G8<Qerm>2djDtDd)ymB*@`=I~GJ%3244>@5e?tzy9WK!Gs% zuWjjT7x=NbxYI<jtBh&aNd~A3DW)eeB-<b96utw2dM$fI>-=74Ub@c8z%}Ezw$BXV zWSr})4sW!xGOJqzruJUj#@#z}t@>GjrQKCJIT~Y4d-Cns!$&nL`jS_IeZjK2EthQ{ z5DB88_HU@kFxyE?5^ZZ(PO9>*Zo5HV{Cb84Rz-W|L}HVAzDUd2macm*^5NX|u62!0 zgqS;AbN1&}Ec(kP77ku|LDb4mz~49%{QR?{kS6!c)S2lBRh!G({xm`Cm&xi$c#$sx zIB}7N3w?N>mQj}jtrQC&L)h%|d+Z_*2v~V6QXESsn<)iOTGabKJ!81I3twbUbkVau zVhE3mM~%gxP}e}HIdxsbNCvqE@(R6U=K?ZrXe5hG^%B=uCtbT?-Dt}sI%8h@DARPE zY!`I=O7J2QkP*K%Cnzph5#jG&IhW8cye(^!K!`wVf|>g5MlJmSP-v&NYWZ-)sqH#x zO--Tk7_l?&(yf~l^gv>UyRgP+E1}$F*I2X|FWlU3$)R$?`m4u$9<bSt5Qfj&lY|a* zfJn)N73%h+MHJd(R_H?+c?)_t=$p_LEZ7I@_a1pXi%yN$k)TBFE&p+6CY*ex7~^I; zcq|#0GPK@QAk!_K!=mhgkyk4pfFfX~iXSn?w1<!NE6<RR%{R!krh>Jgv8{@27YknH zcA4JHrsgqk6F_WtUk${&z_=y%IdT;oz?P;_dOuFV-1M+L`s<lPWQo)|T-!8U%98G> zy6~`w&YjnNoWc2~a`O4G&IJQ(Yv}zn%1qW>#fD(4J6b+Rdg+XDY#Dz6%8B<|)M{B0 zZC$cvJyy~?*vglfd#en?qt{p%xh$v<Gco0_U#s-Bxd)vwO$ekj<OUCtr9^63vU-kc zWKq$D*Doa!%rK!z`-!<8C}9}W*F=9Pa;0YJq|?FH;79dF_1168EO)VXc2EMocO=jV zhR+s6dfK#?(GkqNPC&<%4+qLLk|oB;QeK%?QvoJES&y=1L3ta2$gANq3>?Uv4f7H~ znu`yHhV|)sy987~jz<yFCcOvm?BI7o>&g_r5?}Jp6tbkNK*<ba(sVLSR%K;au{U7T z%|@CP@SmG|v97CZqQUGi?lCPy-2Yw8r-d^C&YZu9`vpeA%v;QF&{VvpYAh{ycN`;k zu_`(ymjetGTAgfO><eFR>I@6W!O{X58s){Y>hzJcBn)aTLxDP+M}6m=!&rOt)+V#f z{XwWcIN!75<>@iiJsbF8A;l#2*6D&q<1IJ;{f}izfuP4+-@Ag7h{dsGDoYuuGM&RR z)=6|iU*?!(ehVQaE>fd_(@f<}WK7(B9=jZw?TNeS8w8`ag#>=mcBcZP49ky3AGx*s z`j^j|<iW3$bPf<O&qSW@9XTx5Ipg{eTl=_9UbTR;P+g@D)Cj(!su^3vf}7Ihb_wqe zUQ8>8wq~%9maZRHPN@=xp<RlN`Z+H+`i*Acl$!GfhH798`YKQS*a|EB^U=NUJeLuM zBHzzcElwCg4}U)qIcMTGv$)df3p^`3#TPJagYHn;=f-kL@2@!RZ1A}5{B8#p5i|O2 zYbFx`$3~)cXA+is_2~n%oA%CJ4kYb&x^NJyXxSnNGTX{%*YpBMOgp8qJFb>G)AF2I zonlZprF8qApE{^^6TtE%>QzZwsU(yQEFJ;y=1&WIUuQTmiig;?CSJJc!k;)Fbd?j; zhN2AI&6++>t7ca~wv$9Sj_aty8Hc&+miHW^JymB!>07^Vu3@?8IkOfGukco$Vj01n znq9xMH>M-#DhKK{*iQ!la&~gZw^%J~K|OK|b+eRq$m>YARVDh|3l_iI2)b0-YEx&{ zyYG$1KAW+uZ$H3>w~tnd4iKj~P?y*%h&C%qL!g1fZ9af?tw#pZ1q20=x{=7JkphK} z%q!lk+JKwXK~!>9qVkx3uQG}2Wj)prU8WtFssa27H+_T-Oq5;X5A`pLx;5)p+@$ea zDD$N<^LU#_KbJG}%7T2}9#E5h37<%X*b!R-Pqnf9K4Nm$BkDe+%fYaGb+eHf-23vQ z#rqo9lz|K=wHo5M7B`j}ZKi0#<!NYqw^byfeWuiXxR)lC5y1R-LP764!W?!Vq0Jau zP-{)66x1(%0|}}*ll3;tH2Rj+#bDP^Jeff@E9h6aQ>K|PB|9XJZ!ccW4c7Uwv`3O; z%hY4EZ1+o}WZcEfvE!9w4Z6xz{UxaZ8^oI&zu~&PLk4`HQmw9o4teTR;7S%6oFVHm zWXWk*e%4-+Y7-RP{#s-njz0fd=)uL{y1V#y4B#N;JMog!?p-0dGMg=6EJ5CaiWH_L z)^<?ZEwgATrs?+^_8+YIb^3vSu*!I~KB|(J0`pq1KBvsuXI<Tu%9=a2saJnIDd)Ro zzC9K_Ymef?i}0aV*-GaeEqLs=bWGtP`JmQngf0@Ms+WLf{`fd?sWZ4%>T9vyG5C`4 zfsDfCwf=g1c{=ZisP%D?7{m<@RR0o)>`oL<3>e2psw@p(gNJ;{=n9e9HZ>Ox(rW!W ztB4BsK24VCM~~}$D!b_k;74UXqH4_Qtv@^B8eK29I1#+J&<lR07PRP?`}w!$n06L6 zXAVnOKvf5}{#0zi2WbCjKClr*g8I?#H5%VM;x84&mW=^@I-Kg^_0;-|dE(*p{v`cl zEWvPL_+#y-G1Eu=CU4wY>U6hyp*F5#19E_>`O$5D122VsQBKz*Q9zs1zA!f2yv}m8 zwn7QZN*6JY4*96%&_9Dh%xZ<dOkzdeY^G0;ftCB&$4a-G9lxB;n7U&yKGmv5-Iv-@ zZ9(#DhxV5#AK&O-0!Q1dht8|nD&G++oHh9*;=qaXqI{3OTT3>QwTi)PIkc;^9;rj0 zb|rb|)gE%_EuTu&ZE*m#PM=pc?5teI37#l8aO(S1s}oo@X)$6PnB0i^TO<Cb*-KCT zIt~;ZHBC?IcVG%;&YpodXg8L~rYbcuKQ&*b4Vgq>q}f)ibh+cK{c7$%@!X`_CgY6L z6YRE2dzU(`uUcCy!Slz9V-iDz3OzqP6zSlmboPT>rr%7&(SgPzz+c?Olj-2CUT6vy zmQ22;Xj@yMN4}4b+4g+CNGs2Y)=*60UmE6zkEnX8F|I3G38JzG(bzUl)b&pvZQ!Oh z>FA_nWmJlt3XbbLvL$<S%$OV<ZjDrNw^kJyug*XPWk0Mfi8%U!=)(=BGvkXHhXZl$ zKrsPH6X8%)&0l_Dd7ZD^5=_`8I6qVCeCZF$u>NA(Uma;($xZsn-Itk>Gi}AfC!2T9 zqotgoz`Fg1-h*pyZ$MgC0c@2lQh!Nh)c(>I2EKJ8PM7X^fl6vL$jBpqiGA%povL$U zqn+p^>5joU?`FMnWzdxfc*w<K67zXY*Y}TpsH?$;rgkZGmU}6~{o+yb=cwg7G|u1F zLwO#*EwZaD{ToaSB%h5Zt8qA%>CLb^g_Y_@pZD>F&UQ_)eIf5;Du9G6{Jf(r03H)U z!iVIG7b@RgV+HT3NG!Hg1%M~c9SU6f+NO1V%N{~0#);L8ejTpaP2Mv|eLci&-;x~Z z_4vN}mLuikmp9QpfChguZNnxgm<Q-A=&7{sK-i6ox7w)h%&*ln?WMD}@7wS?^@O_h zsmg;0z0W2<!b=qmU!d9THDnmC$MgsOEFC`1_Hd1~UUSl&{6m^nlQO!nQ`F%}@j~E4 z#rd_iU4?SvOOuf{{An>`TSIER<$kXh3AnR;_l(_!;&Z(&^6z!cfnzSzE4PI1E~2ll z3SiR&&IP^B4xNr`UI!m>rGNAycHRt`hLG)iq7?m;3O{AkVg>}U*ZGq{THD9;a@bdG z2u*lPhj#sR?|RFdcj?Id*ZSc*1%bPYmzmeMNLR7jKDjI$B3K`Mgd@#k?T7CH#gwQo z5Ri7SSOzGG+Iykwdz05{f4z_ZVOl7r7RnXx=}ah&US+|iPwc=vI+vLP&S)$coIV@n z<z^1yE;Tf0ZGzpzSJ=jdw{dLm)IFA94U+MlF~!khRcnXL@SFES<D>=>o&1Ff%~v2~ ze7pma=P9_fs#wdu+CRp2Y5~fEcSaT~1Bz2WhpbATIIOrbXnVq!9U3;O{E(jPWv`h0 z<*T(Ws52F;;Dk-|k)`?S%r9*$&u!0N2PQ{>6JOd&=hNF+MV2LobHFk$Rb1E$WpY!Q zx?hUzsQZi{<4Pi!#k@ar`1;x6ImwG*el#b}`3H+iN%92;%Eza8==X`hTAj9l>T>-t ztnF&+`Ch(H_kT?~&ET>GXW1+^+I;~VaQ~vH4e&eTI)YFa;_r*~ig9^Sb=P-88<4t% zz=`H4@9vr0W#`A;Ue;@we&lL*b3;3D2phGp+2k%pdMTq2ga<!!bR1#7!OhVv?8qmc zVVlf)qFH5^0*HvugFBk1R#flOjiJ=5lG&Hg(x`EeNx$4=PX~~CEvQ~;$5P4vqbOIG zbE%BuUIwr-&G)yGkx%x%w8zWySUZ#i1wTpSHnvt3hcxB>a?@cBF<UD7(wTsM_NqC} zAdAShXk^xSo+3?oQ~Lzy5=ucOw#ux}5HQ;^bIoHq>LMT1s}mFw)lO5$W$Y?*zm4ms z1{*x?5kTnrzFE26ELF#;p}84oWu>6@9MO@ELx&%+O&&xBfWkzzf05?EHH8%7yqg-p z7tSG13$}Sb5POPl@Oqj*D>3ASm%XNWvG>Z<w#-YNP9h!KAu!H~@k(gFW1<Ig;jNn_ za6!OevhLisX3C_tdJ5#wv6*&<Pkhm+tQfNy@@xn2@vZjfbm0UISjuKLdI`<!Pf)dQ zy{W0mTYJ5GEvVk+K5lwyc{S~mDftp*P4|mKy7a*|Q9zY~tr&W~h<d{hbz98V^y%}A z+aU>%-Mtu(vbY$SuM>kwYIPIHiI}`-27a6+xqtqCKu_dx9y@XVrAV)cKoRTyC<(<` zHrCg=++<Yma&w$1HJbXzB{ff&h0y(M@!jSf0Ex+52!Q;|fhTXt{h4G|kgk=x+mj+! zXrVO&U=CVnh>JsIkZzSzW-hl(XY9{sK1~87GhF6tNt*u3p4>yn;Y-Kq65&TxMc(lJ z6PNf(zshv8zt+NAQ4sopUuK~svM%Qxd74BX5bqB@l-hsp*({vtmwYJ1@L?YK1)9#{ z(rx`F$q?5gEgHj|(|X^Z^+l&N!q!i2e=;$y!3OuM(494RWM0u6H~0mA@?-Hp<$6Ml zW3QnfL)9Z+;Uj+NokmV~bK-BdNV&{Y;OF$7ysrV^JY<sGNVzSOYqK^H<_ujkC5Mqz zJ9Ui(obrCaSx}ekHou*mr{7-WzExwv(->0LpX|XGVVEYky2;WCHz-F?hDbjb?8lf7 zw8eEg&{~gK<KMCJj;1@|_Brg=0r2HwWg>QCV1!7k^fg{cX<ZmT2|#Is80b3Y)UYDZ zxtuZxY#M0uFUI_QNq?e;CNPJ^iZHf&95vy+;kU|X1ne)2^xlW0KNrnjr6?NbLX{RI zK`e?Ew{u_knBq#uh$(?7{0n-N)n@WMdhLX0mxE>~DztwwZ_(r$#B6!>90e>on7pSA zqdM!<9Ar>#W>SF6T(sv4#KLE^VknJ7@?!+#Sxua{qQW}+OaIg`)ambl`4bfS87D-l zgfKh>435L+9op|WnoJd^Qg<X+_mRiF183CQ3ySXH-vJmb_lU?FD|{552eNu<>=1}H zqcn2uD+qstZ+}V#Rc_jS2TT^}m`QhoSSQuh#n;bcHhgXKd_!#-k+yEG+|9P?zm=^B z^R#)iD%q*kvCXy)V?Bi#JW_!_eS7D6e5A&g`rc?`xT#mF_{RK11)CK+k=i>|6MDot zXu`jV{&umiV4&E-wkFDK*>P(JW*v<%WV;^d?6rDyK@nC$9EaCE;<*muJ%M{SPFqZ- zs)`M=9v?9rKR{&TwLoY!XL^iEf(!!j(}X&R!MV?pdFm?6B&KRk1W*~d15>r;iQ^Og zRs17F)`i!CC*nqK71Q6)X6peT<|4?MK#pd=17w(!uq7v8V{P|$C1`^%XTEqWb%K8~ zpx1yYm|M0Yx?fuGxwIY5ntymO;ar-9%w5k!mPdNQ0HO3?>m@eycr`5sD8QwOi24M- z>N6Ey2JtdoN$~sDt9NWiPgZ*_=#AEUy+xCUG`#xWSzghsG^eiHIT)y0RcvB2PHI%V zX|a(IiwCG7uwHhzDqNj2+kkL?2JM8$7E(}pgDhg{VdK_nvf0ixaC+EBN6P&jx@O_{ zHP2TvYI`;eo<IoXN-rtQo0Q2iUIVtpDb`r;q;CthwHiQs6>_H`iQAt`cN|Q(Q9XnF ztnUcFX@;&9n9(7(5vRYA<-E=oVLVaT#JW+5UyR(vc>8D713Ivt=*4@s2LPc~i0hiz zd+Pcp2+XE_z7oC?g==h!!nta^bU7!#2XKG63{OVduNDSh(P{+ruGDLyD*j7wPdT56 zGzI8sLr@l8{Rs54I+!EX!t+r$tCDDOi_OO1KRs$E@b2XxbJA4U@zU~VGyVsgY>^Xm z2@nm0xE@WrvXIM4H&n1TbO<hw>yBP&v&f6TE6W>}?RpYyS+Aixu8KdirY8e<;iPDx z*KPmNjeuthH4P%&fmxCaMp#F9mR|P-SrjcOC|G9Bx6yzk879k{UcQX$o5C)K*F-$) z!g<F!Xux+Z%hwV>)3Tn??X0~iCm2}(IvNQR=RhXw3xh|(Cd9IuN<m3kyI|+x_US2n zuku1Ruv&W^=y9KGL7zg~GaiE<n`>XFFD!pa(L<cpU5`8MyU7X;vZpT8{Ov}O>_HdV zws6y2S_;cvh8rMgO9wA~FzKtL6li|ze!#f_5*VkF`Ld>Yv_5g>;{&<wR71&wkD#M7 zr>0m~&Ase?jKCqIu&%@KhC+GwRs+QCJyj-T9l?nLzyOim8&2jAAzQP&)TZ8k>q@<* z4AFR$6mskX1oM|eyoBVyJs(WK$!04Uqj1_!1mpH1t&#eArmf|d<-SMlNbsW+KTRfK z`3(_}m>niB_uXW@1O5ATB*kzVXW?Bm*sPAL032yL+k0if=vEJCGTRlLi|~ewPGK<W zV8b_vb2Ia+5Gngv(DP(T5JpoDYVB6^7%y`G&>X*ZPb7Q~{(MOjpds1{k1@8htu*vu zO1c|#Q`FdWRyJWh!5$WjpGp`6=pa$-{%XI-9#;<*-<lwpUMm~&rG-F>&k-u=(Y`KJ zg?Zk+BLEGUQ9q>&hl6u$={`VACk=8;>o50L>Z;!-MVheDw&Qzo1oeH&Sh)FeDxlW; zdI=kW8wuv>Tq(+E2^s9mC+*Y^sSq>ZKnjLA)CSej`K7{BtUPu+CR`;iYBQJ~{@ue7 z^-fcQb`U@34#3%GkcV7=xy+FPRs5IFcqOv#0a96C9wa_`6iaLA<dL0a+t#VOAO8k% zpXB0+RV|$<9h38(-+k1X15Gx4-7skt*1Wwa&X_Oi@-#C4#x|+}Cg7p-B;F{q7;<wB z>JRXI9U@PC07>zUIERMx;vS=QkfpLa!G#K7dj#Zd6!^_U6QpqIV~G8Cj(7Z0gEl}W zAP)zTc$#(s^8&HUK(5#gOb)cGU|VEvU?1LItP^_R8=N5l6t-Lr3WlJoZn}`QDL&%v z3jk&-#g-)l)C>8SDY_9w^Zx8>nhkhe^+JRO^+Vt1bTUlz*iIb^4ekM>I6CwugF6n; zlOX036mT4(U6AW}S&LWo1e6H&TSE>s47xRaxHAmEq5s}ijrRRg!}ZR|ONKyuixoKF zI*=H~tM34ENYBe+yy^!?UAIvN|FBe{h6hJfb)8$-Uir63>ewyMb%y<y960H7kRZN# zTo>C3s0{2@p_T{mATt=CLd)PbdmhC1R|HF>MZnJ)jb6Rf09N}3U{8Mw;5*dD={X&~ z9fUf!Kf~jp@GnM29IbY%JJTb97j1(4G;|?@Aqi`(f&o%WCH^%*q(UQ%^RJL)4O$gN ze+PSuKQkr79^*5l*pCT+Bgd@}=MTIfxLTK*08=z~RMm5*=U+*2(hJzV@_=41j%)vi zv`YnP+n$%_b@*r!HEgOFdrTQPz{Z(NS<B!K5y*6CIs13Q?jq<=ultZXeD@`E|3lm5 zp;&bTw$ODd_DoNjhGN)n>Mx`qQe)8fEAPSg5{ixND3<-6I#@{RTdIIU$!q@Avb%_2 z;Im(yEzsdx#*Btb=u&F`5_|WX0yjMUwJL+VHYiJuCmu?7{S|XR2^wqv>6&u?L} z1xf?q%gyH`1gFN<k^kx#4$0X;oy%?K{~xf6W8(HQK)HOo<0;qle<Vj={~mpm(2UTC z2qgfL%AXYh<!1tX<z59$EOtn6{-X{<g0AM{+n7oDe)%`W6l^+UQGPDG<IRF_mA`XT zFs=jgp;k6@b~ZYE+Vejn-GK8NQ}w(vQP$k@Yin=sU%D%Mwc)pmag@TCUCe_5n*X65 zgX}_!dTYc6Yx+{fU#VOWr@J}*Z=Zm!6q~{Q9z#(H4v78lNd+T%NWWhrFErPT*p}lC z(4W7r3H`OC8>w=IVJPbp|E0rVsfxp8{&$$rnsE{1&?Po?Z~3R}D{BX9&-lC$K~J_p zz?9p6^UGPNKGD!};I)BY?h$S37Wns6#F{=<{^UE#bYt%G8>e7Rm5Z5vOmyOvdk@Ug UvR{Iq%-&#bYHd<#bUy6=09?;xssI20 diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png.meta deleted file mode 100644 index d55875b..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/cloud.png.meta +++ /dev/null @@ -1,98 +0,0 @@ -fileFormatVersion: 2 -guid: 8338d2b625f22b44095330be071b8e56 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/link.png b/Assets/ETSI.ARF/ARF World Storage API/Images/link.png deleted file mode 100644 index dda8f37b2a455617c9f692431928b0502e31747c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18903 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 GzV$Cjsy(#; diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/link.png.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/link.png.meta deleted file mode 100644 index 70c4fed..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/link.png.meta +++ /dev/null @@ -1,98 +0,0 @@ -fileFormatVersion: 2 -guid: fef18a27fe1e4a040b8cfda6b3b5c178 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png b/Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png deleted file mode 100644 index f31019b2f9ea607e3bfa127348fa17d80296938d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14290 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 ap!r*CHmgtXn*q=a3<!1I%eks|9{(?|8>?3U diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png.meta deleted file mode 100644 index fb29933..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/trackable.png.meta +++ /dev/null @@ -1,98 +0,0 @@ -fileFormatVersion: 2 -guid: 90d4635c9d0895c42bec0551c4e790ea -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/warning.png b/Assets/ETSI.ARF/ARF World Storage API/Images/warning.png deleted file mode 100644 index a989284db594278ae478f2e8cb1b8cafa036a229..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55016 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@bgVdDf56-N&>%wPl&{ieX-^v`U*5%*C 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 Fe*<)S7lQx* diff --git a/Assets/ETSI.ARF/ARF World Storage API/Images/warning.png.meta b/Assets/ETSI.ARF/ARF World Storage API/Images/warning.png.meta deleted file mode 100644 index d013024..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Images/warning.png.meta +++ /dev/null @@ -1,98 +0,0 @@ -fileFormatVersion: 2 -guid: 2add88abf0fc00043bfb7863d59d3aa8 -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 11 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - vTOnly: 0 - ignoreMasterTextureLimit: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 0 - seamlessCubemap: 0 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 1 - aniso: 1 - mipBias: 0 - wrapU: 0 - wrapV: 0 - wrapW: 0 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - flipbookRows: 1 - flipbookColumns: 1 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - ignorePngGamma: 0 - applyGammaDecoding: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - nameFileIdTable: {} - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat b/Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat deleted file mode 100644 index 55a4310..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: blue - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0, g: 0, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat.meta b/Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat.meta deleted file mode 100644 index 550aada..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Materials/blue.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1b6b868784cd25c46a90fe7b882fddb2 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat b/Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat deleted file mode 100644 index 62e6953..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: green - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0, g: 1, b: 0, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat.meta b/Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat.meta deleted file mode 100644 index 67bcad2..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Materials/green.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 19de5bd9483daf448a5fab21d3eecba3 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat b/Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat deleted file mode 100644 index cdde4c4..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat +++ /dev/null @@ -1,80 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 8 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: red - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ValidKeywords: [] - m_InvalidKeywords: [] - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Ints: [] - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 0, b: 0, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - m_BuildTextureStacks: [] diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat.meta b/Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat.meta deleted file mode 100644 index 2f910fe..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Materials/red.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0c6a9f85031693343a9e37c4a08627e9 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - 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 deleted file mode 100644 index 3afe3fd..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Prefabs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 58d625e15ff264e479d393186a4a9827 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab b/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab deleted file mode 100644 index 678ddae..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab +++ /dev/null @@ -1,835 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1239500166128132140 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1814829793678878270} - m_Layer: 0 - m_Name: ARFTrackable - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1814829793678878270 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1239500166128132140} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4532241398218188797} - - {fileID: 33536572583887604} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1389085265039543899 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 788171341007892784} - - component: {fileID: 8839914115087242523} - - component: {fileID: 4246121306890513542} - - component: {fileID: 1020142642249578057} - m_Layer: 0 - m_Name: Y - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &788171341007892784 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1389085265039543899} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.1, z: 0} - m_LocalScale: {x: 0.020000001, y: 0.05, z: 0.020000001} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4532241398218188797} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8839914115087242523 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1389085265039543899} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &4246121306890513542 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1389085265039543899} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 19de5bd9483daf448a5fab21d3eecba3, type: 2} - 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!136 &1020142642249578057 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1389085265039543899} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!1 &1687101261560852242 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 377487265314945344} - - component: {fileID: 6822513350628080072} - - component: {fileID: 6739960153126183626} - - component: {fileID: 8765868915607131294} - m_Layer: 0 - m_Name: Z - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &377487265314945344 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1687101261560852242} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0.1} - m_LocalScale: {x: 0.020000001, y: 0.05000001, z: 0.019999998} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4532241398218188797} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &6822513350628080072 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1687101261560852242} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6739960153126183626 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1687101261560852242} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1b6b868784cd25c46a90fe7b882fddb2, type: 2} - 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!136 &8765868915607131294 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1687101261560852242} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!1 &1823986580348874447 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1436432047471570793} - - component: {fileID: 5158975352210721371} - - component: {fileID: 4673833591676428792} - - component: {fileID: 961187375770271614} - m_Layer: 0 - m_Name: X - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1436432047471570793 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1823986580348874447} - m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} - m_LocalPosition: {x: 0.1, y: 0, z: 0} - m_LocalScale: {x: 0.019999998, y: 0.05000001, z: 0.020000001} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 4532241398218188797} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} ---- !u!33 &5158975352210721371 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1823986580348874447} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &4673833591676428792 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1823986580348874447} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0c6a9f85031693343a9e37c4a08627e9, type: 2} - 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!136 &961187375770271614 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1823986580348874447} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!1 &4451045791079530586 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2888022835692577799} - - component: {fileID: 3434672324534858807} - - component: {fileID: 420668000673399792} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2888022835692577799 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4451045791079530586} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 33536572583887604} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -0.025} - m_SizeDelta: {x: 250, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3434672324534858807 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4451045791079530586} - m_CullTransparentMesh: 1 ---- !u!114 &420668000673399792 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4451045791079530586} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: 'Name: - - UUID:' - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 16 - m_fontSizeBase: 16 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &5897666007833324009 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8156859587808685068} - - component: {fileID: 1360188677730577841} - - component: {fileID: 3860478840123770047} - m_Layer: 5 - m_Name: Headline - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8156859587808685068 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5897666007833324009} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 33536572583887604} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0.02} - m_SizeDelta: {x: 250, y: 25} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1360188677730577841 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5897666007833324009} - m_CullTransparentMesh: 1 ---- !u!114 &3860478840123770047 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5897666007833324009} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: AR Trackable - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 24 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 1 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &8182691244837652424 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4532241398218188797} - m_Layer: 0 - m_Name: Axe - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4532241398218188797 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8182691244837652424} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8225488253825437765} - - {fileID: 1436432047471570793} - - {fileID: 788171341007892784} - - {fileID: 377487265314945344} - m_Father: {fileID: 1814829793678878270} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &8225488253825437761 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8225488253825437765} - - component: {fileID: 8225488253825437764} - - component: {fileID: 8225488253825437763} - - component: {fileID: 8225488253825437762} - m_Layer: 0 - m_Name: Center - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8225488253825437765 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 4532241398218188797} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8225488253825437764 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8225488253825437763 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 4f607925b7a7fcc44806b35f5aa087a4, type: 2} - 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!65 &8225488253825437762 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - 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!1 &8292506020522815698 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 33536572583887604} - - component: {fileID: 1417027443369488948} - - component: {fileID: 1035955511594240086} - - component: {fileID: 5661858723465099382} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &33536572583887604 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8156859587808685068} - - {fileID: 2888022835692577799} - m_Father: {fileID: 1814829793678878270} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0.1263, y: -0.1} - m_SizeDelta: {x: 640, y: 480} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!223 &1417027443369488948 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &1035955511594240086 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!114 &5661858723465099382 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 diff --git a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab.meta b/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab.meta deleted file mode 100644 index 817771e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFTrackable.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 889bc3e43608e504c977b93ba5f8ed37 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab b/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab deleted file mode 100644 index cea4dce..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab +++ /dev/null @@ -1,835 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1058305942658709743 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4263110725940009300} - - component: {fileID: 4129045750120536829} - - component: {fileID: 6557221987491350997} - m_Layer: 5 - m_Name: Headline - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &4263110725940009300 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1058305942658709743} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 1497700213276983046} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0.02} - m_SizeDelta: {x: 250, y: 25} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4129045750120536829 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1058305942658709743} - m_CullTransparentMesh: 1 ---- !u!114 &6557221987491350997 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1058305942658709743} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: AR World Anchor - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 24 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 1 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &1525499792725534490 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6503384942250313519} - m_Layer: 0 - m_Name: Axe - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6503384942250313519 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1525499792725534490} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1622323168209334423} - - {fileID: 8595771872739495867} - - {fileID: 7950346510699467234} - - {fileID: 7032495084649945490} - m_Father: {fileID: 9046317383172441836} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1622323168209334419 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1622323168209334423} - - component: {fileID: 1622323168209334422} - - component: {fileID: 1622323168209334417} - - component: {fileID: 1622323168209334416} - m_Layer: 0 - m_Name: Center - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1622323168209334423 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1622323168209334419} - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 6503384942250313519} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} ---- !u!33 &1622323168209334422 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1622323168209334419} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1622323168209334417 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1622323168209334419} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 730ea8fe50af5874fb3b990c534eaebc, type: 2} - 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!65 &1622323168209334416 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1622323168209334419} - 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!1 &4529171925897838154 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2044833251513730170} - - component: {fileID: 8475275463028488054} - - component: {fileID: 3041298355498540117} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2044833251513730170 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4529171925897838154} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 1497700213276983046} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -0.025} - m_SizeDelta: {x: 250, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &8475275463028488054 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4529171925897838154} - m_CullTransparentMesh: 1 ---- !u!114 &3041298355498540117 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4529171925897838154} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: 'Name: - - UUID:' - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 16 - m_fontSizeBase: 16 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &8344222362070912960 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7032495084649945490} - - component: {fileID: 4182441150992537882} - - component: {fileID: 4119753123192799768} - - component: {fileID: 2090784007532835916} - m_Layer: 0 - m_Name: Z - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7032495084649945490 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8344222362070912960} - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0.1} - m_LocalScale: {x: 0.020000001, y: 0.05000001, z: 0.019999998} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6503384942250313519} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &4182441150992537882 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8344222362070912960} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &4119753123192799768 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8344222362070912960} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1b6b868784cd25c46a90fe7b882fddb2, type: 2} - 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!136 &2090784007532835916 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8344222362070912960} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!1 &8473238451594182910 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9046317383172441836} - m_Layer: 0 - m_Name: ARFWorldAnchor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9046317383172441836 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8473238451594182910} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 6503384942250313519} - - {fileID: 1497700213276983046} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &8638588117357457033 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7950346510699467234} - - component: {fileID: 2164195824166614473} - - component: {fileID: 6793727845488397396} - - component: {fileID: 7677843500006282907} - m_Layer: 0 - m_Name: Y - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7950346510699467234 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8638588117357457033} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.1, z: 0} - m_LocalScale: {x: 0.020000001, y: 0.05, z: 0.020000001} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6503384942250313519} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &2164195824166614473 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8638588117357457033} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6793727845488397396 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8638588117357457033} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 19de5bd9483daf448a5fab21d3eecba3, type: 2} - 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!136 &7677843500006282907 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8638588117357457033} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!1 &8828373246506081872 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1497700213276983046} - - component: {fileID: 8595258003796922682} - - component: {fileID: 3895121440785909528} - - component: {fileID: 2278103916936109689} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1497700213276983046 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8828373246506081872} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4263110725940009300} - - {fileID: 2044833251513730170} - m_Father: {fileID: 9046317383172441836} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0.1263, y: -0.1} - m_SizeDelta: {x: 640, y: 480} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!223 &8595258003796922682 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8828373246506081872} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &3895121440785909528 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8828373246506081872} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!114 &2278103916936109689 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8828373246506081872} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!1 &9076285480843021853 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8595771872739495867} - - component: {fileID: 2539246307318246025} - - component: {fileID: 2628309207522230570} - - component: {fileID: 7634649738335838124} - m_Layer: 0 - m_Name: X - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8595771872739495867 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9076285480843021853} - m_LocalRotation: {x: -0, y: -0, z: 0.7071068, w: 0.7071068} - m_LocalPosition: {x: 0.1, y: 0, z: 0} - m_LocalScale: {x: 0.019999998, y: 0.05000001, z: 0.020000001} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 6503384942250313519} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 90} ---- !u!33 &2539246307318246025 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9076285480843021853} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &2628309207522230570 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9076285480843021853} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 0c6a9f85031693343a9e37c4a08627e9, type: 2} - 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!136 &7634649738335838124 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9076285480843021853} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} diff --git a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab.meta b/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab.meta deleted file mode 100644 index 898f39e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldAnchor.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 832a64407eb5c8249bb8e4a074649918 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab b/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab deleted file mode 100644 index 077a9e1..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab +++ /dev/null @@ -1,555 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1239500166128132140 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1814829793678878270} - - component: {fileID: 2766171691247251799} - m_Layer: 0 - m_Name: ARFWorldLink - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1814829793678878270 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1239500166128132140} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 4532241398218188797} - - {fileID: 33536572583887604} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2766171691247251799 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1239500166128132140} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 33fce8a1d8d349d47b8565dfe031b6b1, type: 3} - m_Name: - m_EditorClassIdentifier: - fromElement: {fileID: 0} - toElement: {fileID: 0} ---- !u!1 &4451045791079530586 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2888022835692577799} - - component: {fileID: 3434672324534858807} - - component: {fileID: 420668000673399792} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2888022835692577799 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4451045791079530586} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 33536572583887604} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: -0.025} - m_SizeDelta: {x: 250, y: 50} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &3434672324534858807 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4451045791079530586} - m_CullTransparentMesh: 1 ---- !u!114 &420668000673399792 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4451045791079530586} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: 'UUID: - - From: - - To:' - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 16 - m_fontSizeBase: 16 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 0 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &5897666007833324009 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8156859587808685068} - - component: {fileID: 1360188677730577841} - - component: {fileID: 3860478840123770047} - m_Layer: 5 - m_Name: Headline - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &8156859587808685068 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5897666007833324009} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.001, y: 0.001, z: 0.001} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 33536572583887604} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0.02} - m_SizeDelta: {x: 250, y: 25} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1360188677730577841 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5897666007833324009} - m_CullTransparentMesh: 1 ---- !u!114 &3860478840123770047 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5897666007833324009} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: AR World Link - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 24 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 0 - m_fontSizeMin: 18 - m_fontSizeMax: 72 - m_fontStyle: 1 - m_HorizontalAlignment: 1 - m_VerticalAlignment: 256 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_enableWordWrapping: 1 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 1 - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &8182691244837652424 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4532241398218188797} - m_Layer: 0 - m_Name: Axe - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4532241398218188797 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8182691244837652424} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8225488253825437765} - m_Father: {fileID: 1814829793678878270} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &8225488253825437761 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8225488253825437765} - - component: {fileID: 8225488253825437764} - - component: {fileID: 8225488253825437763} - - component: {fileID: 8225488253825437762} - m_Layer: 0 - m_Name: Center - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8225488253825437765 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 4532241398218188797} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &8225488253825437764 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8225488253825437763 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: ce02d83032448a945ac827316ba8bb87, type: 2} - 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!65 &8225488253825437762 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8225488253825437761} - 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!1 &8292506020522815698 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 33536572583887604} - - component: {fileID: 1417027443369488948} - - component: {fileID: 1035955511594240086} - - component: {fileID: 5661858723465099382} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &33536572583887604 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - 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_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 8156859587808685068} - - {fileID: 2888022835692577799} - m_Father: {fileID: 1814829793678878270} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0.1263, y: -0.1} - m_SizeDelta: {x: 640, y: 480} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!223 &1417027443369488948 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 2 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 25 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!114 &1035955511594240086 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 1 ---- !u!114 &5661858723465099382 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292506020522815698} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 diff --git a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab.meta b/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab.meta deleted file mode 100644 index 7c41f4e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Prefabs/ARFWorldLink.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: fbd37f7ee889c994a913eeca05e0501f -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Resources.meta b/Assets/ETSI.ARF/ARF World Storage API/Resources.meta deleted file mode 100644 index f531d88..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Resources.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f07b85312ef176543b32402edd2bdb8a -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset b/Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset deleted file mode 100644 index 9190b5a..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset +++ /dev/null @@ -1,17 +0,0 @@ -%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: 1aec4cd1383f70e4092183ea55088e8e, type: 3} - m_Name: ARFPrefabs - m_EditorClassIdentifier: - trackablePrefab: {fileID: 1239500166128132140, guid: 889bc3e43608e504c977b93ba5f8ed37, type: 3} - worldAnchorPrefab: {fileID: 8473238451594182910, guid: 832a64407eb5c8249bb8e4a074649918, type: 3} - worldLinkPrefab: {fileID: 1239500166128132140, guid: fbd37f7ee889c994a913eeca05e0501f, type: 3} diff --git a/Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset.meta b/Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset.meta deleted file mode 100644 index a377b92..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Resources/ARFPrefabs.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cc22d9e73b4dcca4da1f7bdd0321a3d2 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - 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 deleted file mode 100644 index 4ef537e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bee2e150130771041a1a97b017e971db -folderAsset: yes -DefaultImporter: - externalObjects: {} - 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 deleted file mode 100644 index f83558e..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: be2764d34364d6e4e8b4811c9fe72a5b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs b/Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs deleted file mode 100644 index 852b8a7..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace ETSI.ARF.WorldStorage.UI -{ - [ExecuteAlways] - public class AttachToWorldAnchor : MonoBehaviour - { - public GameObject worldAnchor; - public bool autoUpdate = true; - - private void Update() - { - if (autoUpdate && worldAnchor != null) - { - transform.position = worldAnchor.transform.position; - transform.rotation = worldAnchor.transform.rotation; - } - } - - void OnDrawGizmos() - { -#if UNITY_EDITOR - // do something... -#endif - } - } -} diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs.meta deleted file mode 100644 index b568971..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/AttachToWorldAnchor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 53275cee00d69114f926dc2b69bb4e53 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs b/Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs deleted file mode 100644 index 57da603..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using ETSI.ARF.OpenAPI.WorldStorage; - -namespace ETSI.ARF.OpenAPI -{ - public struct Data<T> - { - public Dictionary<Guid, T> list; - - public int Count => list.Count; - public int PreCount { get; set; } - }; - -} diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs.meta deleted file mode 100644 index f62618b..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/Data.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: eb8e8851570d3a14883c7798cbe1e1da -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs b/Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs deleted file mode 100644 index 2acf9d7..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace ETSI.ARF.WorldStorage.UI -{ - [ExecuteAlways] - public class LinkVisual : MonoBehaviour - { - public GameObject fromElement, toElement; - - - private void Update() - { -#if UNITY_EDITOR - if (fromElement != null && toElement != null) transform.position = (fromElement.transform.position + toElement.transform.position) / 2; -#endif - } - - void OnDrawGizmos() - { -#if UNITY_EDITOR - if (fromElement != null && toElement != null) - { - // Draws a blue line from this transform to the target - Gizmos.color = Color.blue; - Gizmos.DrawLine(fromElement.transform.position, toElement.transform.position); - } - else - { - Debug.Log("Rien à tracer"); - } - } -#endif - } -} diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs.meta deleted file mode 100644 index 07696e6..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/LinkVisual.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 33fce8a1d8d349d47b8565dfe031b6b1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs b/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs deleted file mode 100644 index e144bd4..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using ETSI.ARF.OpenAPI.WorldStorage; -using UnityEngine; -using System.IO; -using ETSI.ARF.OpenAPI; - -namespace ETSI.ARF.WorldStorage -{ - public class WorldStorageCollections - { - // MongoDB collections - // Contains list after response from REST server - public Data<Trackable> trackables = new Data<Trackable>(); - public Data<WorldAnchor> worldAnchors = new Data<WorldAnchor>(); - public Data<WorldLink> worldLinks = new Data<WorldLink>(); - - public WorldStorageCollections() - { - trackables.list = new Dictionary<Guid, Trackable>(); - worldAnchors.list = new Dictionary<Guid, WorldAnchor>(); - worldLinks.list = new Dictionary<Guid, WorldLink>(); - } - } -} diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs.meta deleted file mode 100644 index c15e911..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageCollections.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a5b322b539094934193f20b797fab02a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs b/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs deleted file mode 100644 index cdda36c..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs +++ /dev/null @@ -1,153 +0,0 @@ -// The Fraunhofer HHI Unity Framework -// ___________ .__ _____ ___ ___ ___ ___ .___ -// \_ _____/___________ __ __ ____ | |__ _____/ ____\___________ / | \ / | \| | -// | __) \_ __ \__ \ | | \/ \| | \ / _ \ __\/ __ \_ __ \ / ~ \/ ~ \ | -// | \ | | \// __ \| | / | \ Y ( <_> ) | \ ___/| | \/ \ Y /\ Y / | -// \___ / |__| (____ /____/|___| /___| /\____/|__| \___ >__| \___|_ / \___|_ /|___| -// \/ \/ \/ \/ \/ \/ \/ -// (C) Fraunhofer HHI, 2024 - -using System; -using System.IO; -using System.Net; -using System.Collections.Generic; -using System.Threading; -using System.Drawing; -using System.Threading.Tasks; -using UnityEngine; - -using ETSI.ARF.OpenAPI; -using ETSI.ARF.OpenAPI.WorldStorage; -using ETSI.ARF.WorldStorage.REST; - -namespace ETSI.ARF.WorldStorage -{ - /// <summary> - /// Manager class for OpenAPI REST calls. - /// This class insert create a response object with cancellation token for all call. - /// Also usefull for measuring the request-response time. - /// </summary> - public class WorldStorageRequest : WorldStorageCollections - { - private WorldStorageServer wsServer; - private WorldStorageClient apiClient; - private string serverUri; - - public string URI => serverUri; - public WorldStorageClient Client => apiClient; - - public WorldStorageRequest(WorldStorageServer server) : base() - { - wsServer = server; - serverUri = wsServer.URI; - var httpClient = new UnityWebRequestHttpClient(serverUri); - apiClient = new WorldStorageClient(httpClient); - } - - public WorldStorageRequest(string uri) : base() - { - wsServer = new WorldStorageServer(); - wsServer.basePath = uri; - wsServer.port = 0; - serverUri = uri; - var httpClient = new UnityWebRequestHttpClient(serverUri); - apiClient = new WorldStorageClient(httpClient); - } - - // - // Callback method - // Call the callback method defined by the calling class when the result is there. - // - #region Callbacks - private void ReceiveTextCallback(Task<string> t, object id) - { - if (t.IsCompleted) - { - string res = t.Result; - - ResponseObject<string> o = (ResponseObject<string>)id; - o.responseTime = DateTime.Now; - o.result = res; - Debug.Log($"[REST] Server Response = {o.result} (#{o.transactionId}, {o.message})"); - - o.callback?.Invoke(o); - } - else Debug.Log("[REST] OpenAPI Timeout!"); - } - - private void ReceiveTrackableCallback(Task<Trackable> t, object id) - { - if (t.IsCompleted) - { - ResponseObject<Trackable> o = (ResponseObject<Trackable>)id; - o.responseTime = DateTime.Now; - o.result = t.Result; - Debug.Log($"[REST] Server Response = Got asset (#{o.transactionId}, {o.message})"); - - o.callback?.Invoke(o); - } - else Debug.Log("[REST] OpenAPI Timeout!"); - } - #endregion - - // - // Admin requests - // - #region Handle admin requests - public string Ping() => apiClient.GetPing(); - - public ResponseObject<string> PingAsync(Action<ResponseObject<string>> func) - { - return AdminRequest.PingAsync(wsServer, func); - } - - public string Status() => apiClient.GetAdmin(); - - public ResponseObject<string> StatusAsync(Action<ResponseObject<string>> func) - { - return AdminRequest.AdminAsync(wsServer, func); - } - - public string Version() => apiClient.GetVersion(); - public Task<string> GetVersion() => apiClient.GetVersionAsync(); - - public ResponseObject<string> VersionAsync(Action<ResponseObject<string>> func) - { - return AdminRequest.VersionAsync(wsServer, func); - } - #endregion - - // - // TRACKABLES - // - #region Trackables - - //public Task<int> GetNumOfAssets() => apiClient.NumOfAssetsAsync(); - //public bool IsAssetExists(Guid id) => apiClient.IsAssetId(id); - public ResponseObject<string> AddTrackableAsync(Action<ResponseObject<string>> func, Trackable trackable) - { - return TrackableRequest.CreateTrackableAsync(wsServer, trackable, func); - } - - public ResponseObject<string> DeleteTrackableAsync(Action<ResponseObject<string>> func, Guid id) - { - return TrackableRequest.DeleteTrackableAsync(wsServer, id, func); - } - - public ResponseObject<string> ModifyTrackableAsync(Action<ResponseObject<string>> func, Trackable trackable) - { - return TrackableRequest.UpdateTrackableAsync(wsServer, trackable, func); - } - - public ResponseObject<Trackable> GetTrackableByIdAsync(Action<ResponseObject<Trackable>> func, Guid id) - { - return TrackableRequest.GetTrackableAsync(wsServer, id, func); - } - - public ResponseObject<List<Trackable>> GetTrackableListAsync(Action<ResponseObject<List<Trackable>>> func, int? max = 1) - { - return TrackableRequest.GetTrackablesAsync(wsServer, func); - } - #endregion - } -} diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs.meta b/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs.meta deleted file mode 100644 index 78ca79b..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/Scripts/WorldStorageRequest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7dc0c152448d1cc41ade67c36e145ff2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/ARF World Storage API/csc.rsp b/Assets/ETSI.ARF/ARF World Storage API/csc.rsp deleted file mode 100644 index 42cb45b..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/csc.rsp +++ /dev/null @@ -1 +0,0 @@ --r:System.ComponentModel.DataAnnotations.dll \ No newline at end of file diff --git a/Assets/ETSI.ARF/ARF World Storage API/csc.rsp.meta b/Assets/ETSI.ARF/ARF World Storage API/csc.rsp.meta deleted file mode 100644 index c1c3d66..0000000 --- a/Assets/ETSI.ARF/ARF World Storage API/csc.rsp.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 227b79b2283f2354f811787d81f2e1c3 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/Materials.meta b/Assets/ETSI.ARF/Materials.meta deleted file mode 100644 index c610e73..0000000 --- a/Assets/ETSI.ARF/Materials.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5687f50b6a7fe4e4ab0ab249f6e9aee0 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/Scenes.meta b/Assets/ETSI.ARF/Scenes.meta deleted file mode 100644 index 1abaa61..0000000 --- a/Assets/ETSI.ARF/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: eabab3d802b335146a16615051dbd543 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/GUI.meta b/Assets/GUI.meta similarity index 100% rename from Assets/ETSI.ARF/GUI.meta rename to Assets/GUI.meta diff --git a/Assets/ETSI.ARF/GUI/Buttons.meta b/Assets/GUI/Buttons.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Buttons.meta rename to Assets/GUI/Buttons.meta diff --git a/Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Down.png b/Assets/GUI/Buttons/HalfRounded20px@2x_Down.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Down.png rename to Assets/GUI/Buttons/HalfRounded20px@2x_Down.png diff --git a/Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Down.png.meta b/Assets/GUI/Buttons/HalfRounded20px@2x_Down.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Down.png.meta rename to Assets/GUI/Buttons/HalfRounded20px@2x_Down.png.meta diff --git a/Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Up.png b/Assets/GUI/Buttons/HalfRounded20px@2x_Up.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Up.png rename to Assets/GUI/Buttons/HalfRounded20px@2x_Up.png diff --git a/Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Up.png.meta b/Assets/GUI/Buttons/HalfRounded20px@2x_Up.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Buttons/HalfRounded20px@2x_Up.png.meta rename to Assets/GUI/Buttons/HalfRounded20px@2x_Up.png.meta diff --git a/Assets/ETSI.ARF/GUI/Buttons/Rounded20px@2x.png b/Assets/GUI/Buttons/Rounded20px@2x.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Buttons/Rounded20px@2x.png rename to Assets/GUI/Buttons/Rounded20px@2x.png diff --git a/Assets/ETSI.ARF/GUI/Buttons/Rounded20px@2x.png.meta b/Assets/GUI/Buttons/Rounded20px@2x.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Buttons/Rounded20px@2x.png.meta rename to Assets/GUI/Buttons/Rounded20px@2x.png.meta diff --git a/Assets/ETSI.ARF/GUI/Checkbox.meta b/Assets/GUI/Checkbox.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox.meta rename to Assets/GUI/Checkbox.meta diff --git a/Assets/ETSI.ARF/GUI/Checkbox/BackgroundSimpleRound.png b/Assets/GUI/Checkbox/BackgroundSimpleRound.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/BackgroundSimpleRound.png rename to Assets/GUI/Checkbox/BackgroundSimpleRound.png diff --git a/Assets/ETSI.ARF/GUI/Checkbox/BackgroundSimpleRound.png.meta b/Assets/GUI/Checkbox/BackgroundSimpleRound.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/BackgroundSimpleRound.png.meta rename to Assets/GUI/Checkbox/BackgroundSimpleRound.png.meta diff --git a/Assets/ETSI.ARF/GUI/Checkbox/ButtonWithBorder.png b/Assets/GUI/Checkbox/ButtonWithBorder.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/ButtonWithBorder.png rename to Assets/GUI/Checkbox/ButtonWithBorder.png diff --git a/Assets/ETSI.ARF/GUI/Checkbox/ButtonWithBorder.png.meta b/Assets/GUI/Checkbox/ButtonWithBorder.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/ButtonWithBorder.png.meta rename to Assets/GUI/Checkbox/ButtonWithBorder.png.meta diff --git a/Assets/ETSI.ARF/GUI/Checkbox/Checkbox.prefab b/Assets/GUI/Checkbox/Checkbox.prefab similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/Checkbox.prefab rename to Assets/GUI/Checkbox/Checkbox.prefab diff --git a/Assets/ETSI.ARF/GUI/Checkbox/Checkbox.prefab.meta b/Assets/GUI/Checkbox/Checkbox.prefab.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/Checkbox.prefab.meta rename to Assets/GUI/Checkbox/Checkbox.prefab.meta diff --git a/Assets/ETSI.ARF/GUI/Checkbox/CheckboxNew.prefab b/Assets/GUI/Checkbox/CheckboxNew.prefab similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/CheckboxNew.prefab rename to Assets/GUI/Checkbox/CheckboxNew.prefab diff --git a/Assets/ETSI.ARF/GUI/Checkbox/CheckboxNew.prefab.meta b/Assets/GUI/Checkbox/CheckboxNew.prefab.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Checkbox/CheckboxNew.prefab.meta rename to Assets/GUI/Checkbox/CheckboxNew.prefab.meta diff --git a/Assets/ETSI.ARF/GUI/Icons.meta b/Assets/GUI/Icons.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons.meta rename to Assets/GUI/Icons.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/AppDummy.png b/Assets/GUI/Icons/AppDummy.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/AppDummy.png rename to Assets/GUI/Icons/AppDummy.png diff --git a/Assets/ETSI.ARF/GUI/Icons/AppDummy.png.meta b/Assets/GUI/Icons/AppDummy.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/AppDummy.png.meta rename to Assets/GUI/Icons/AppDummy.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Clouds.png b/Assets/GUI/Icons/Clouds.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Clouds.png rename to Assets/GUI/Icons/Clouds.png diff --git a/Assets/ETSI.ARF/GUI/Icons/Clouds.png.meta b/Assets/GUI/Icons/Clouds.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Clouds.png.meta rename to Assets/GUI/Icons/Clouds.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Cube.prefab b/Assets/GUI/Icons/Cube.prefab similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Cube.prefab rename to Assets/GUI/Icons/Cube.prefab diff --git a/Assets/ETSI.ARF/GUI/Icons/Cube.prefab.meta b/Assets/GUI/Icons/Cube.prefab.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Cube.prefab.meta rename to Assets/GUI/Icons/Cube.prefab.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/CustomMenu.png b/Assets/GUI/Icons/CustomMenu.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/CustomMenu.png rename to Assets/GUI/Icons/CustomMenu.png diff --git a/Assets/ETSI.ARF/GUI/Icons/CustomMenu.png.meta b/Assets/GUI/Icons/CustomMenu.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/CustomMenu.png.meta rename to Assets/GUI/Icons/CustomMenu.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/DB.png b/Assets/GUI/Icons/DB.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/DB.png rename to Assets/GUI/Icons/DB.png diff --git a/Assets/ETSI.ARF/GUI/Icons/DB.png.meta b/Assets/GUI/Icons/DB.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/DB.png.meta rename to Assets/GUI/Icons/DB.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Edit.png b/Assets/GUI/Icons/Edit.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Edit.png rename to Assets/GUI/Icons/Edit.png diff --git a/Assets/ETSI.ARF/GUI/Icons/Edit.png.meta b/Assets/GUI/Icons/Edit.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Edit.png.meta rename to Assets/GUI/Icons/Edit.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Exclamation-mark.png b/Assets/GUI/Icons/Exclamation-mark.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Exclamation-mark.png rename to Assets/GUI/Icons/Exclamation-mark.png diff --git a/Assets/ETSI.ARF/GUI/Icons/Exclamation-mark.png.meta b/Assets/GUI/Icons/Exclamation-mark.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Exclamation-mark.png.meta rename to Assets/GUI/Icons/Exclamation-mark.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Exit.png b/Assets/GUI/Icons/Exit.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Exit.png rename to Assets/GUI/Icons/Exit.png diff --git a/Assets/ETSI.ARF/GUI/Icons/Exit.png.meta b/Assets/GUI/Icons/Exit.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Exit.png.meta rename to Assets/GUI/Icons/Exit.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Gear 1.png b/Assets/GUI/Icons/Gear 1.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Gear 1.png rename to Assets/GUI/Icons/Gear 1.png diff --git a/Assets/ETSI.ARF/GUI/Icons/Gear 1.png.meta b/Assets/GUI/Icons/Gear 1.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Gear 1.png.meta rename to Assets/GUI/Icons/Gear 1.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Pin.png b/Assets/GUI/Icons/Pin.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Pin.png rename to Assets/GUI/Icons/Pin.png diff --git a/Assets/ETSI.ARF/GUI/Icons/Pin.png.meta b/Assets/GUI/Icons/Pin.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Pin.png.meta rename to Assets/GUI/Icons/Pin.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/Save.png b/Assets/GUI/Icons/Save.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Save.png rename to Assets/GUI/Icons/Save.png diff --git a/Assets/ETSI.ARF/GUI/Icons/Save.png.meta b/Assets/GUI/Icons/Save.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/Save.png.meta rename to Assets/GUI/Icons/Save.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/circular01.png b/Assets/GUI/Icons/circular01.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/circular01.png rename to Assets/GUI/Icons/circular01.png diff --git a/Assets/ETSI.ARF/GUI/Icons/circular01.png.meta b/Assets/GUI/Icons/circular01.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/circular01.png.meta rename to Assets/GUI/Icons/circular01.png.meta diff --git a/Assets/ETSI.ARF/GUI/Icons/icon-locked.png b/Assets/GUI/Icons/icon-locked.png similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/icon-locked.png rename to Assets/GUI/Icons/icon-locked.png diff --git a/Assets/ETSI.ARF/GUI/Icons/icon-locked.png.meta b/Assets/GUI/Icons/icon-locked.png.meta similarity index 100% rename from Assets/ETSI.ARF/GUI/Icons/icon-locked.png.meta rename to Assets/GUI/Icons/icon-locked.png.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials.meta b/Assets/Materials.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials.meta rename to Assets/Materials.meta diff --git a/Assets/ETSI.ARF/Materials/Back Portrait.mat b/Assets/Materials/Back Portrait.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/Back Portrait.mat rename to Assets/Materials/Back Portrait.mat diff --git a/Assets/ETSI.ARF/Materials/Back Portrait.mat.meta b/Assets/Materials/Back Portrait.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/Back Portrait.mat.meta rename to Assets/Materials/Back Portrait.mat.meta diff --git a/Assets/ETSI.ARF/Materials/Blue Metal.mat b/Assets/Materials/Blue Metal.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/Blue Metal.mat rename to Assets/Materials/Blue Metal.mat diff --git a/Assets/ETSI.ARF/Materials/Blue Metal.mat.meta b/Assets/Materials/Blue Metal.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/Blue Metal.mat.meta rename to Assets/Materials/Blue Metal.mat.meta diff --git a/Assets/ETSI.ARF/Materials/Blue.mat b/Assets/Materials/Blue.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/Blue.mat rename to Assets/Materials/Blue.mat diff --git a/Assets/ETSI.ARF/Materials/Blue.mat.meta b/Assets/Materials/Blue.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/Blue.mat.meta rename to Assets/Materials/Blue.mat.meta diff --git a/Assets/ETSI.ARF/Materials/GridGreyWhite.mat b/Assets/Materials/GridGreyWhite.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/GridGreyWhite.mat rename to Assets/Materials/GridGreyWhite.mat diff --git a/Assets/ETSI.ARF/Materials/GridGreyWhite.mat.meta b/Assets/Materials/GridGreyWhite.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/GridGreyWhite.mat.meta rename to Assets/Materials/GridGreyWhite.mat.meta diff --git a/Assets/ETSI.ARF/Materials/GridRedWhite.mat b/Assets/Materials/GridRedWhite.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/GridRedWhite.mat rename to Assets/Materials/GridRedWhite.mat diff --git a/Assets/ETSI.ARF/Materials/GridRedWhite.mat.meta b/Assets/Materials/GridRedWhite.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/GridRedWhite.mat.meta rename to Assets/Materials/GridRedWhite.mat.meta diff --git a/Assets/ETSI.ARF/Materials/MultiChecked.mat b/Assets/Materials/MultiChecked.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/MultiChecked.mat rename to Assets/Materials/MultiChecked.mat diff --git a/Assets/ETSI.ARF/Materials/MultiChecked.mat.meta b/Assets/Materials/MultiChecked.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/MultiChecked.mat.meta rename to Assets/Materials/MultiChecked.mat.meta diff --git a/Assets/ETSI.ARF/Materials/Orange.mat b/Assets/Materials/Orange.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/Orange.mat rename to Assets/Materials/Orange.mat diff --git a/Assets/ETSI.ARF/Materials/Orange.mat.meta b/Assets/Materials/Orange.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/Orange.mat.meta rename to Assets/Materials/Orange.mat.meta diff --git a/Assets/ETSI.ARF/Materials/Red Metal.mat b/Assets/Materials/Red Metal.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/Red Metal.mat rename to Assets/Materials/Red Metal.mat diff --git a/Assets/ETSI.ARF/Materials/Red Metal.mat.meta b/Assets/Materials/Red Metal.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/Red Metal.mat.meta rename to Assets/Materials/Red Metal.mat.meta diff --git a/Assets/ETSI.ARF/Materials/Red.mat b/Assets/Materials/Red.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/Red.mat rename to Assets/Materials/Red.mat diff --git a/Assets/ETSI.ARF/Materials/Red.mat.meta b/Assets/Materials/Red.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/Red.mat.meta rename to Assets/Materials/Red.mat.meta diff --git a/Assets/ETSI.ARF/Materials/SpeedMetals.mat b/Assets/Materials/SpeedMetals.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/SpeedMetals.mat rename to Assets/Materials/SpeedMetals.mat diff --git a/Assets/ETSI.ARF/Materials/SpeedMetals.mat.meta b/Assets/Materials/SpeedMetals.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/SpeedMetals.mat.meta rename to Assets/Materials/SpeedMetals.mat.meta diff --git a/Assets/ETSI.ARF/Materials/Yellow Metal.mat b/Assets/Materials/Yellow Metal.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/Yellow Metal.mat rename to Assets/Materials/Yellow Metal.mat diff --git a/Assets/ETSI.ARF/Materials/Yellow Metal.mat.meta b/Assets/Materials/Yellow Metal.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/Yellow Metal.mat.meta rename to Assets/Materials/Yellow Metal.mat.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/grey.mat b/Assets/Materials/grey.mat similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/grey.mat rename to Assets/Materials/grey.mat diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/grey.mat.meta b/Assets/Materials/grey.mat.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/grey.mat.meta rename to Assets/Materials/grey.mat.meta diff --git a/Assets/ETSI.ARF/Materials/grid_grey&white.mat b/Assets/Materials/grid_grey&white.mat similarity index 100% rename from Assets/ETSI.ARF/Materials/grid_grey&white.mat rename to Assets/Materials/grid_grey&white.mat diff --git a/Assets/ETSI.ARF/Materials/grid_grey&white.mat.meta b/Assets/Materials/grid_grey&white.mat.meta similarity index 100% rename from Assets/ETSI.ARF/Materials/grid_grey&white.mat.meta rename to Assets/Materials/grid_grey&white.mat.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.jpg b/Assets/Materials/ground_stone_ground.jpg similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.jpg rename to Assets/Materials/ground_stone_ground.jpg diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.jpg.meta b/Assets/Materials/ground_stone_ground.jpg.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.jpg.meta rename to Assets/Materials/ground_stone_ground.jpg.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.mat b/Assets/Materials/ground_stone_ground.mat similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.mat rename to Assets/Materials/ground_stone_ground.mat diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.mat.meta b/Assets/Materials/ground_stone_ground.mat.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/ground_stone_ground.mat.meta rename to Assets/Materials/ground_stone_ground.mat.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/statue.mat b/Assets/Materials/statue.mat similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/statue.mat rename to Assets/Materials/statue.mat diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/statue.mat.meta b/Assets/Materials/statue.mat.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/statue.mat.meta rename to Assets/Materials/statue.mat.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/wall.mat b/Assets/Materials/wall.mat similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/wall.mat rename to Assets/Materials/wall.mat diff --git a/Assets/ETSI.ARF/ARF World Storage API/Materials/wall.mat.meta b/Assets/Materials/wall.mat.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Materials/wall.mat.meta rename to Assets/Materials/wall.mat.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Models.meta b/Assets/Models.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Models.meta rename to Assets/Models.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Models/knabe_simplified.obj b/Assets/Models/knabe_simplified.obj similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Models/knabe_simplified.obj rename to Assets/Models/knabe_simplified.obj diff --git a/Assets/ETSI.ARF/ARF World Storage API/Models/knabe_simplified.obj.meta b/Assets/Models/knabe_simplified.obj.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Models/knabe_simplified.obj.meta rename to Assets/Models/knabe_simplified.obj.meta diff --git a/Assets/ETSI.ARF/Prefabs.meta b/Assets/Prefabs.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs.meta rename to Assets/Prefabs.meta diff --git a/Assets/ETSI.ARF/Prefabs/Entry.prefab b/Assets/Prefabs/Entry.prefab similarity index 100% rename from Assets/ETSI.ARF/Prefabs/Entry.prefab rename to Assets/Prefabs/Entry.prefab diff --git a/Assets/ETSI.ARF/Prefabs/Entry.prefab.meta b/Assets/Prefabs/Entry.prefab.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/Entry.prefab.meta rename to Assets/Prefabs/Entry.prefab.meta diff --git a/Assets/ETSI.ARF/Prefabs/EntryHandler.cs b/Assets/Prefabs/EntryHandler.cs similarity index 100% rename from Assets/ETSI.ARF/Prefabs/EntryHandler.cs rename to Assets/Prefabs/EntryHandler.cs diff --git a/Assets/ETSI.ARF/Prefabs/EntryHandler.cs.meta b/Assets/Prefabs/EntryHandler.cs.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/EntryHandler.cs.meta rename to Assets/Prefabs/EntryHandler.cs.meta diff --git a/Assets/ETSI.ARF/Prefabs/Monitor Server.prefab b/Assets/Prefabs/Monitor Server.prefab similarity index 91% rename from Assets/ETSI.ARF/Prefabs/Monitor Server.prefab rename to Assets/Prefabs/Monitor Server.prefab index cb2c1be..be4a122 100644 --- a/Assets/ETSI.ARF/Prefabs/Monitor Server.prefab +++ b/Assets/Prefabs/Monitor Server.prefab @@ -48,6 +48,36 @@ PrefabInstance: propertyPath: m_Name value: Monitor Server objectReference: {fileID: 0} + - target: {fileID: 2396108624338673315, guid: 32db196abc79c03418ce7689ee059061, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2396108624338673315, guid: 32db196abc79c03418ce7689ee059061, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3125550876157095326, guid: 32db196abc79c03418ce7689ee059061, + type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3125550876157095326, guid: 32db196abc79c03418ce7689ee059061, + type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3125550876157095326, guid: 32db196abc79c03418ce7689ee059061, + type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3450597744907078845, guid: 32db196abc79c03418ce7689ee059061, + type: 3} + propertyPath: m_Size + value: 0.9558824 + objectReference: {fileID: 0} - target: {fileID: 3661075027237127527, guid: 32db196abc79c03418ce7689ee059061, type: 3} propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size @@ -257,6 +287,7 @@ MonoBehaviour: m_EditorClassIdentifier: isDebugMessage: 0 autoUpdate: 0 + seconds: 5 startClosed: 0 startHeight: 0 busy: {fileID: 2438302738158184294} diff --git a/Assets/ETSI.ARF/Prefabs/Monitor Server.prefab.meta b/Assets/Prefabs/Monitor Server.prefab.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/Monitor Server.prefab.meta rename to Assets/Prefabs/Monitor Server.prefab.meta diff --git a/Assets/ETSI.ARF/Prefabs/Monitor World Storage.prefab b/Assets/Prefabs/Monitor World Storage.prefab similarity index 100% rename from Assets/ETSI.ARF/Prefabs/Monitor World Storage.prefab rename to Assets/Prefabs/Monitor World Storage.prefab diff --git a/Assets/ETSI.ARF/Prefabs/Monitor World Storage.prefab.meta b/Assets/Prefabs/Monitor World Storage.prefab.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/Monitor World Storage.prefab.meta rename to Assets/Prefabs/Monitor World Storage.prefab.meta diff --git a/Assets/ETSI.ARF/Prefabs/Monitor.prefab b/Assets/Prefabs/Monitor.prefab similarity index 100% rename from Assets/ETSI.ARF/Prefabs/Monitor.prefab rename to Assets/Prefabs/Monitor.prefab diff --git a/Assets/ETSI.ARF/Prefabs/Monitor.prefab.meta b/Assets/Prefabs/Monitor.prefab.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/Monitor.prefab.meta rename to Assets/Prefabs/Monitor.prefab.meta diff --git a/Assets/ETSI.ARF/Prefabs/MonitorBase.cs b/Assets/Prefabs/MonitorBase.cs similarity index 100% rename from Assets/ETSI.ARF/Prefabs/MonitorBase.cs rename to Assets/Prefabs/MonitorBase.cs diff --git a/Assets/ETSI.ARF/Prefabs/MonitorBase.cs.meta b/Assets/Prefabs/MonitorBase.cs.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/MonitorBase.cs.meta rename to Assets/Prefabs/MonitorBase.cs.meta diff --git a/Assets/ETSI.ARF/Prefabs/MonitorServer.cs b/Assets/Prefabs/MonitorServer.cs similarity index 100% rename from Assets/ETSI.ARF/Prefabs/MonitorServer.cs rename to Assets/Prefabs/MonitorServer.cs diff --git a/Assets/ETSI.ARF/Prefabs/MonitorServer.cs.meta b/Assets/Prefabs/MonitorServer.cs.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/MonitorServer.cs.meta rename to Assets/Prefabs/MonitorServer.cs.meta diff --git a/Assets/ETSI.ARF/Prefabs/MonitorWorldStorage.cs b/Assets/Prefabs/MonitorWorldStorage.cs similarity index 100% rename from Assets/ETSI.ARF/Prefabs/MonitorWorldStorage.cs rename to Assets/Prefabs/MonitorWorldStorage.cs diff --git a/Assets/ETSI.ARF/Prefabs/MonitorWorldStorage.cs.meta b/Assets/Prefabs/MonitorWorldStorage.cs.meta similarity index 100% rename from Assets/ETSI.ARF/Prefabs/MonitorWorldStorage.cs.meta rename to Assets/Prefabs/MonitorWorldStorage.cs.meta diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity deleted file mode 100644 index 9c5c0d0..0000000 --- a/Assets/Scenes/SampleScene.unity +++ /dev/null @@ -1,301 +0,0 @@ -%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 deleted file mode 100644 index 952bd1e..0000000 --- a/Assets/Scenes/SampleScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 9fc0d4010bbf28b4594072e72b8655ab -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/ETSI.ARF/Scenes/WorldStorageSample.unity b/Assets/Scenes/WorldStorageSample.unity similarity index 100% rename from Assets/ETSI.ARF/Scenes/WorldStorageSample.unity rename to Assets/Scenes/WorldStorageSample.unity diff --git a/Assets/ETSI.ARF/Scenes/WorldStorageSample.unity.meta b/Assets/Scenes/WorldStorageSample.unity.meta similarity index 100% rename from Assets/ETSI.ARF/Scenes/WorldStorageSample.unity.meta rename to Assets/Scenes/WorldStorageSample.unity.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity b/Assets/Scenes/WorldStorageSampleStatue.unity similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity rename to Assets/Scenes/WorldStorageSampleStatue.unity diff --git a/Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity.meta b/Assets/Scenes/WorldStorageSampleStatue.unity.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/Scenes/WorldStorageSample.unity.meta rename to Assets/Scenes/WorldStorageSampleStatue.unity.meta diff --git a/Assets/ETSI.ARF/Scripts.meta b/Assets/Scripts.meta similarity index 100% rename from Assets/ETSI.ARF/Scripts.meta rename to Assets/Scripts.meta diff --git a/Assets/ETSI.ARF/Scripts/ARFDatamanager.cs b/Assets/Scripts/ARFDatamanager.cs similarity index 100% rename from Assets/ETSI.ARF/Scripts/ARFDatamanager.cs rename to Assets/Scripts/ARFDatamanager.cs diff --git a/Assets/ETSI.ARF/Scripts/ARFDatamanager.cs.meta b/Assets/Scripts/ARFDatamanager.cs.meta similarity index 100% rename from Assets/ETSI.ARF/Scripts/ARFDatamanager.cs.meta rename to Assets/Scripts/ARFDatamanager.cs.meta diff --git a/Assets/ETSI.ARF/Scripts/ConsoleLogFile.cs b/Assets/Scripts/ConsoleLogFile.cs similarity index 100% rename from Assets/ETSI.ARF/Scripts/ConsoleLogFile.cs rename to Assets/Scripts/ConsoleLogFile.cs diff --git a/Assets/ETSI.ARF/Scripts/ConsoleLogFile.cs.meta b/Assets/Scripts/ConsoleLogFile.cs.meta similarity index 100% rename from Assets/ETSI.ARF/Scripts/ConsoleLogFile.cs.meta rename to Assets/Scripts/ConsoleLogFile.cs.meta diff --git a/Assets/ETSI.ARF/Scripts/SimpleClientDemo.cs b/Assets/Scripts/SimpleClientDemo.cs similarity index 100% rename from Assets/ETSI.ARF/Scripts/SimpleClientDemo.cs rename to Assets/Scripts/SimpleClientDemo.cs diff --git a/Assets/ETSI.ARF/Scripts/SimpleClientDemo.cs.meta b/Assets/Scripts/SimpleClientDemo.cs.meta similarity index 100% rename from Assets/ETSI.ARF/Scripts/SimpleClientDemo.cs.meta rename to Assets/Scripts/SimpleClientDemo.cs.meta diff --git a/Assets/ETSI.ARF/Textures.meta b/Assets/Textures.meta similarity index 100% rename from Assets/ETSI.ARF/Textures.meta rename to Assets/Textures.meta diff --git a/Assets/ETSI.ARF/Textures/Back.png b/Assets/Textures/Back.png similarity index 100% rename from Assets/ETSI.ARF/Textures/Back.png rename to Assets/Textures/Back.png diff --git a/Assets/ETSI.ARF/Textures/Back.png.meta b/Assets/Textures/Back.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/Back.png.meta rename to Assets/Textures/Back.png.meta diff --git a/Assets/ETSI.ARF/Textures/BackPortrait No Transp.png b/Assets/Textures/BackPortrait No Transp.png similarity index 100% rename from Assets/ETSI.ARF/Textures/BackPortrait No Transp.png rename to Assets/Textures/BackPortrait No Transp.png diff --git a/Assets/ETSI.ARF/Textures/BackPortrait No Transp.png.meta b/Assets/Textures/BackPortrait No Transp.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/BackPortrait No Transp.png.meta rename to Assets/Textures/BackPortrait No Transp.png.meta diff --git a/Assets/ETSI.ARF/Textures/BackPortrait.png b/Assets/Textures/BackPortrait.png similarity index 100% rename from Assets/ETSI.ARF/Textures/BackPortrait.png rename to Assets/Textures/BackPortrait.png diff --git a/Assets/ETSI.ARF/Textures/BackPortrait.png.meta b/Assets/Textures/BackPortrait.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/BackPortrait.png.meta rename to Assets/Textures/BackPortrait.png.meta diff --git a/Assets/ETSI.ARF/Textures/BackPortraitWhite.png b/Assets/Textures/BackPortraitWhite.png similarity index 100% rename from Assets/ETSI.ARF/Textures/BackPortraitWhite.png rename to Assets/Textures/BackPortraitWhite.png diff --git a/Assets/ETSI.ARF/Textures/BackPortraitWhite.png.meta b/Assets/Textures/BackPortraitWhite.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/BackPortraitWhite.png.meta rename to Assets/Textures/BackPortraitWhite.png.meta diff --git a/Assets/ETSI.ARF/Textures/BackRound with Border.png b/Assets/Textures/BackRound with Border.png similarity index 100% rename from Assets/ETSI.ARF/Textures/BackRound with Border.png rename to Assets/Textures/BackRound with Border.png diff --git a/Assets/ETSI.ARF/Textures/BackRound with Border.png.meta b/Assets/Textures/BackRound with Border.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/BackRound with Border.png.meta rename to Assets/Textures/BackRound with Border.png.meta diff --git a/Assets/ETSI.ARF/Textures/BackWhite.png b/Assets/Textures/BackWhite.png similarity index 100% rename from Assets/ETSI.ARF/Textures/BackWhite.png rename to Assets/Textures/BackWhite.png diff --git a/Assets/ETSI.ARF/Textures/BackWhite.png.meta b/Assets/Textures/BackWhite.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/BackWhite.png.meta rename to Assets/Textures/BackWhite.png.meta diff --git a/Assets/ETSI.ARF/Textures/Fill.png b/Assets/Textures/Fill.png similarity index 100% rename from Assets/ETSI.ARF/Textures/Fill.png rename to Assets/Textures/Fill.png diff --git a/Assets/ETSI.ARF/Textures/Fill.png.meta b/Assets/Textures/Fill.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/Fill.png.meta rename to Assets/Textures/Fill.png.meta diff --git a/Assets/ETSI.ARF/Textures/FillWhite.png b/Assets/Textures/FillWhite.png similarity index 100% rename from Assets/ETSI.ARF/Textures/FillWhite.png rename to Assets/Textures/FillWhite.png diff --git a/Assets/ETSI.ARF/Textures/FillWhite.png.meta b/Assets/Textures/FillWhite.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/FillWhite.png.meta rename to Assets/Textures/FillWhite.png.meta diff --git a/Assets/ETSI.ARF/Textures/etsi_logo.png b/Assets/Textures/etsi_logo.png similarity index 100% rename from Assets/ETSI.ARF/Textures/etsi_logo.png rename to Assets/Textures/etsi_logo.png diff --git a/Assets/ETSI.ARF/Textures/etsi_logo.png.meta b/Assets/Textures/etsi_logo.png.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/etsi_logo.png.meta rename to Assets/Textures/etsi_logo.png.meta diff --git a/Assets/ETSI.ARF/Textures/grid_black&white.jpg b/Assets/Textures/grid_black&white.jpg similarity index 100% rename from Assets/ETSI.ARF/Textures/grid_black&white.jpg rename to Assets/Textures/grid_black&white.jpg diff --git a/Assets/ETSI.ARF/Textures/grid_black&white.jpg.meta b/Assets/Textures/grid_black&white.jpg.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/grid_black&white.jpg.meta rename to Assets/Textures/grid_black&white.jpg.meta diff --git a/Assets/ETSI.ARF/Textures/grid_grey&white.jpg b/Assets/Textures/grid_grey&white.jpg similarity index 100% rename from Assets/ETSI.ARF/Textures/grid_grey&white.jpg rename to Assets/Textures/grid_grey&white.jpg diff --git a/Assets/ETSI.ARF/Textures/grid_grey&white.jpg.meta b/Assets/Textures/grid_grey&white.jpg.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/grid_grey&white.jpg.meta rename to Assets/Textures/grid_grey&white.jpg.meta diff --git a/Assets/ETSI.ARF/Textures/grid_white&red.jpg b/Assets/Textures/grid_white&red.jpg similarity index 100% rename from Assets/ETSI.ARF/Textures/grid_white&red.jpg rename to Assets/Textures/grid_white&red.jpg diff --git a/Assets/ETSI.ARF/Textures/grid_white&red.jpg.meta b/Assets/Textures/grid_white&red.jpg.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/grid_white&red.jpg.meta rename to Assets/Textures/grid_white&red.jpg.meta diff --git a/Assets/ETSI.ARF/Textures/gridinv257.psd b/Assets/Textures/gridinv257.psd similarity index 100% rename from Assets/ETSI.ARF/Textures/gridinv257.psd rename to Assets/Textures/gridinv257.psd diff --git a/Assets/ETSI.ARF/Textures/gridinv257.psd.meta b/Assets/Textures/gridinv257.psd.meta similarity index 100% rename from Assets/ETSI.ARF/Textures/gridinv257.psd.meta rename to Assets/Textures/gridinv257.psd.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage.meta b/Assets/World Storage.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage.meta rename to Assets/World Storage.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated.meta b/Assets/World Storage/Depreciated.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated.meta rename to Assets/World Storage/Depreciated.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server - detlef dev.asset b/Assets/World Storage/Depreciated/HHI Server - detlef dev.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server - detlef dev.asset rename to Assets/World Storage/Depreciated/HHI Server - detlef dev.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server - detlef dev.asset.meta b/Assets/World Storage/Depreciated/HHI Server - detlef dev.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server - detlef dev.asset.meta rename to Assets/World Storage/Depreciated/HHI Server - detlef dev.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server STF620.asset b/Assets/World Storage/Depreciated/HHI Server STF620.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server STF620.asset rename to Assets/World Storage/Depreciated/HHI Server STF620.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server STF620.asset.meta b/Assets/World Storage/Depreciated/HHI Server STF620.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/Depreciated/HHI Server STF620.asset.meta rename to Assets/World Storage/Depreciated/HHI Server STF620.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server - sylvain dev.asset b/Assets/World Storage/HHI Server - sylvain dev.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server - sylvain dev.asset rename to Assets/World Storage/HHI Server - sylvain dev.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server - sylvain dev.asset.meta b/Assets/World Storage/HHI Server - sylvain dev.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server - sylvain dev.asset.meta rename to Assets/World Storage/HHI Server - sylvain dev.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server STF669.asset b/Assets/World Storage/HHI Server STF669.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server STF669.asset rename to Assets/World Storage/HHI Server STF669.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server STF669.asset.meta b/Assets/World Storage/HHI Server STF669.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/HHI Server STF669.asset.meta rename to Assets/World Storage/HHI Server STF669.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8080.asset b/Assets/World Storage/LocalHost8080.asset similarity index 94% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8080.asset rename to Assets/World Storage/LocalHost8080.asset index d00574d..8f9c9b3 100644 --- a/Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8080.asset +++ b/Assets/World Storage/LocalHost8080.asset @@ -14,6 +14,6 @@ MonoBehaviour: m_EditorClassIdentifier: serverName: Local hosted World Storage company: b<>com - basePath: http://10.55.11.9 + basePath: http://localhost port: 8080 currentUser: {fileID: 11400000, guid: c0696089e4a855b46ad490437919b1e8, type: 2} diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8080.asset.meta b/Assets/World Storage/LocalHost8080.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8080.asset.meta rename to Assets/World Storage/LocalHost8080.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8081.asset b/Assets/World Storage/LocalHost8081.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8081.asset rename to Assets/World Storage/LocalHost8081.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8081.asset.meta b/Assets/World Storage/LocalHost8081.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/LocalHost8081.asset.meta rename to Assets/World Storage/LocalHost8081.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/User Demo.asset b/Assets/World Storage/User Demo.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/User Demo.asset rename to Assets/World Storage/User Demo.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/User Demo.asset.meta b/Assets/World Storage/User Demo.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/User Demo.asset.meta rename to Assets/World Storage/User Demo.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/User Nathan.asset b/Assets/World Storage/User Nathan.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/User Nathan.asset rename to Assets/World Storage/User Nathan.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/User Nathan.asset.meta b/Assets/World Storage/User Nathan.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/User Nathan.asset.meta rename to Assets/World Storage/User Nathan.asset.meta diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/User Sylvain.asset b/Assets/World Storage/User Sylvain.asset similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/User Sylvain.asset rename to Assets/World Storage/User Sylvain.asset diff --git a/Assets/ETSI.ARF/ARF World Storage API/World Storage/User Sylvain.asset.meta b/Assets/World Storage/User Sylvain.asset.meta similarity index 100% rename from Assets/ETSI.ARF/ARF World Storage API/World Storage/User Sylvain.asset.meta rename to Assets/World Storage/User Sylvain.asset.meta -- GitLab