diff --git a/PicoCTF_Score.png b/PicoCTF_Score.png new file mode 100644 index 0000000..6a68a2a Binary files /dev/null and b/PicoCTF_Score.png differ diff --git a/Unity_VR_Assignment/.gradle/4.6/fileChanges/last-build.bin b/Unity_VR_Assignment/.gradle/4.6/fileChanges/last-build.bin new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/Unity_VR_Assignment/.gradle/4.6/fileChanges/last-build.bin differ diff --git a/Unity_VR_Assignment/.gradle/4.6/fileHashes/fileHashes.lock b/Unity_VR_Assignment/.gradle/4.6/fileHashes/fileHashes.lock new file mode 100644 index 0000000..a4e239b Binary files /dev/null and b/Unity_VR_Assignment/.gradle/4.6/fileHashes/fileHashes.lock differ diff --git a/Unity_VR_Assignment/.gradle/4.6/taskHistory/taskHistory.lock b/Unity_VR_Assignment/.gradle/4.6/taskHistory/taskHistory.lock new file mode 100644 index 0000000..897bd24 Binary files /dev/null and b/Unity_VR_Assignment/.gradle/4.6/taskHistory/taskHistory.lock differ diff --git a/Unity_VR_Assignment/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/Unity_VR_Assignment/.gradle/buildOutputCleanup/buildOutputCleanup.lock new file mode 100644 index 0000000..c1cff37 Binary files /dev/null and b/Unity_VR_Assignment/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/Unity_VR_Assignment/.gradle/buildOutputCleanup/cache.properties b/Unity_VR_Assignment/.gradle/buildOutputCleanup/cache.properties new file mode 100644 index 0000000..63dcf29 --- /dev/null +++ b/Unity_VR_Assignment/.gradle/buildOutputCleanup/cache.properties @@ -0,0 +1,2 @@ +#Wed Feb 06 21:31:52 IST 2019 +gradle.version=4.6 diff --git a/Unity_VR_Assignment/.vs/MazeGame/v15/.suo b/Unity_VR_Assignment/.vs/MazeGame/v15/.suo new file mode 100644 index 0000000..6a057e9 Binary files /dev/null and b/Unity_VR_Assignment/.vs/MazeGame/v15/.suo differ diff --git a/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/db.lock b/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/db.lock new file mode 100644 index 0000000..e69de29 diff --git a/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide b/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide new file mode 100644 index 0000000..12a6671 Binary files /dev/null and b/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide differ diff --git a/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide-shm b/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide-shm new file mode 100644 index 0000000..8e4cdf6 Binary files /dev/null and b/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide-shm differ diff --git a/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide-wal b/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide-wal new file mode 100644 index 0000000..91eafd0 Binary files /dev/null and b/Unity_VR_Assignment/.vs/MazeGame/v15/Server/sqlite3/storage.ide-wal differ diff --git a/Unity_VR_Assignment/Assembly-CSharp-Editor.csproj b/Unity_VR_Assignment/Assembly-CSharp-Editor.csproj new file mode 100644 index 0000000..2009d89 --- /dev/null +++ b/Unity_VR_Assignment/Assembly-CSharp-Editor.csproj @@ -0,0 +1,724 @@ + + + + latest + + + Debug + AnyCPU + 10.0.20506 + 2.0 + + {28E71F1A-F883-1250-6F81-BA7E09B149C9} + Library + Properties + Assembly-CSharp-Editor + v4.7.1 + 512 + . + + + true + full + false + Temp\bin\Debug\ + DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_3_4;UNITY_2018_3;UNITY_2018;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_ANDROID;UNITY_ANDROID;UNITY_ANDROID_API;ENABLE_SUBSTANCE;ENABLE_EGL;ENABLE_NETWORK;ENABLE_RUNTIME_GI;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_EVENT_QUEUE;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_NATIVE_CRASH_REPORTING;PLATFORM_SUPPORTS_ADS_ID;UNITY_CAN_SHOW_SPLASH_SCREEN;ENABLE_VR;ENABLE_AR;UNITY_HAS_GOOGLEVR;UNITY_HAS_TANGO;ENABLE_SPATIALTRACKING;ENABLE_RUNTIME_PERMISSIONS;UNITY_ASTC_ONLY_DECOMPRESS;ENABLE_UNITYADS_RUNTIME;UNITY_UNITYADS_API;ENABLE_MONO;NET_4_6;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + prompt + 4 + 0169 + False + + + pdbonly + true + Temp\bin\Release\ + prompt + 4 + 0169 + False + + + true + true + false + false + false + + + {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Unity/VSTU + Editor:5 + Android:13 + 2018.3.4f1 + + + + C:\Program Files\Unity\Editor\Data\Managed/UnityEngine/UnityEngine.dll + + + C:\Program Files\Unity\Editor\Data\Managed/UnityEditor.dll + + + + + + + + + + + + + + + + + + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.TextMeshPro.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterInputModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ClusterRendererModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SpatialTrackingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/Unity.Locator.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/Editor/UnityEditor.UI.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/Editor/UnityEditor.TestRunner.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Timeline/Editor/UnityEditor.Timeline.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Networking/Editor/UnityEditor.Networking.dll + + + C:/Program Files/Unity/Editor/Data/PlaybackEngines/VuforiaSupport/Managed/Editor/Vuforia.UnityExtensions.Editor.dll + + + C:/Program Files/Unity/Editor/Data/PlaybackEngines/VuforiaSupport/Managed/Runtime/Vuforia.UnityExtensions.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/Editor/UnityEditor.GoogleAudioSpatializer.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/Editor/UnityEditor.SpatialTracking.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityVR/Editor/UnityEditor.VR.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEditor.Graphs.dll + + + C:/Program Files/Unity/Editor/Data/PlaybackEngines/AndroidPlayer/UnityEditor.Android.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/PlaybackEngines/windowsstandalonesupport/UnityEditor.WindowsStandalone.Extensions.dll + + + C:/Program Files (x86)/Microsoft Visual Studio Tools for Unity/15.0/Editor/SyntaxTree.VisualStudio.Unity.Bridge.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.purchasing@2.0.3/Editor/UnityEditor.Purchasing.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/mscorlib.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Core.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Runtime.Serialization.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Xml.Linq.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Numerics.Vectors.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Net.Http.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Microsoft.CSharp.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/System.Data.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/Microsoft.Win32.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/netstandard.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.AppContext.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Concurrent.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.NonGeneric.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Collections.Specialized.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Annotations.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.EventBasedAsync.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ComponentModel.TypeConverter.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Console.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Data.Common.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Contracts.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Debug.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.FileVersionInfo.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Process.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.StackTrace.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TextWriterTraceListener.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.Tools.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Diagnostics.TraceSource.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Drawing.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Dynamic.Runtime.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Calendars.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Globalization.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Compression.ZipFile.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.DriveInfo.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.FileSystem.Watcher.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.IsolatedStorage.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.MemoryMappedFiles.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.Pipes.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.IO.UnmanagedMemoryStream.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Expressions.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Parallel.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Linq.Queryable.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Http.Rtc.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NameResolution.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.NetworkInformation.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Ping.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Requests.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Security.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.Sockets.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebHeaderCollection.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.Client.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Net.WebSockets.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ObjectModel.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.ILGeneration.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Emit.Lightweight.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Reflection.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Reader.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.ResourceManager.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Resources.Writer.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.CompilerServices.VisualC.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Handles.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.RuntimeInformation.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.InteropServices.WindowsRuntime.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Numerics.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Formatters.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Json.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Runtime.Serialization.Xml.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Claims.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Algorithms.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Csp.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Encoding.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Cryptography.X509Certificates.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.Principal.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Security.SecureString.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Duplex.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Http.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.NetTcp.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ServiceModel.Security.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.Encoding.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Text.RegularExpressions.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Overlapped.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Tasks.Parallel.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Thread.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.ThreadPool.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Threading.Timer.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.ValueTuple.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.ReaderWriter.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XDocument.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlDocument.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XmlSerializer.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/4.7.1-api/Facades/System.Xml.XPath.XDocument.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/UnityScript.Lang.dll + + + C:/Program Files/Unity/Editor/Data/MonoBleedingEdge/lib/mono/unityscript/Boo.Lang.dll + + + + + {A21DA567-4D02-FAFA-3719-CDAEF370184D} + Assembly-CSharp + + + + + + \ No newline at end of file diff --git a/Unity_VR_Assignment/Assembly-CSharp.csproj b/Unity_VR_Assignment/Assembly-CSharp.csproj new file mode 100644 index 0000000..b026daa --- /dev/null +++ b/Unity_VR_Assignment/Assembly-CSharp.csproj @@ -0,0 +1,779 @@ + + + + latest + + + Debug + AnyCPU + 10.0.20506 + 2.0 + + {A21DA567-4D02-FAFA-3719-CDAEF370184D} + Library + Properties + Assembly-CSharp + v4.7.1 + 512 + . + + + true + full + false + Temp\bin\Debug\ + DEBUG;TRACE;UNITY_5_3_OR_NEWER;UNITY_5_4_OR_NEWER;UNITY_5_5_OR_NEWER;UNITY_5_6_OR_NEWER;UNITY_2017_1_OR_NEWER;UNITY_2017_2_OR_NEWER;UNITY_2017_3_OR_NEWER;UNITY_2017_4_OR_NEWER;UNITY_2018_1_OR_NEWER;UNITY_2018_2_OR_NEWER;UNITY_2018_3_OR_NEWER;UNITY_2018_3_4;UNITY_2018_3;UNITY_2018;UNITY_INCLUDE_TESTS;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_SPRITES;ENABLE_GRID;ENABLE_TILEMAP;ENABLE_TERRAIN;ENABLE_TEXTURE_STREAMING;ENABLE_DIRECTOR;ENABLE_UNET;ENABLE_LZMA;ENABLE_UNITYEVENTS;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES_COLLAB;ENABLE_CLOUD_SERVICES_COLLAB_SOFTLOCKS;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_USE_WEBREQUEST;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_HUB;ENABLE_EDITOR_HUB_LICENSE;ENABLE_WEBSOCKET_CLIENT;ENABLE_DIRECTOR_AUDIO;ENABLE_DIRECTOR_TEXTURE;ENABLE_TIMELINE;ENABLE_EDITOR_METRICS;ENABLE_EDITOR_METRICS_CACHING;ENABLE_MANAGED_JOBS;ENABLE_MANAGED_TRANSFORM_JOBS;ENABLE_MANAGED_ANIMATION_JOBS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;ENABLE_MONO_BDWGC;PLATFORM_SUPPORTS_MONO;INCLUDE_PUBNUB;ENABLE_VIDEO;ENABLE_CUSTOM_RENDER_TEXTURE;ENABLE_LOCALIZATION;PLATFORM_ANDROID;UNITY_ANDROID;UNITY_ANDROID_API;ENABLE_SUBSTANCE;ENABLE_EGL;ENABLE_NETWORK;ENABLE_RUNTIME_GI;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_UNITYWEBREQUEST;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_EVENT_QUEUE;ENABLE_CLOUD_SERVICES_PURCHASING;ENABLE_CLOUD_SERVICES_CRASH_REPORTING;ENABLE_CLOUD_SERVICES_NATIVE_CRASH_REPORTING;PLATFORM_SUPPORTS_ADS_ID;UNITY_CAN_SHOW_SPLASH_SCREEN;ENABLE_VR;ENABLE_AR;UNITY_HAS_GOOGLEVR;UNITY_HAS_TANGO;ENABLE_SPATIALTRACKING;ENABLE_RUNTIME_PERMISSIONS;UNITY_ASTC_ONLY_DECOMPRESS;ENABLE_UNITYADS_RUNTIME;UNITY_UNITYADS_API;ENABLE_MONO;NET_STANDARD_2_0;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_64;UNITY_EDITOR_WIN;ENABLE_UNITY_COLLECTIONS_CHECKS;ENABLE_BURST_AOT;UNITY_TEAM_LICENSE;ENABLE_VSTU;CSHARP_7_OR_LATER;CSHARP_7_3_OR_NEWER + prompt + 4 + 0169 + False + + + pdbonly + true + Temp\bin\Release\ + prompt + 4 + 0169 + False + + + true + true + false + false + false + + + {E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Unity/VSTU + Game:1 + Android:13 + 2018.3.4f1 + + + + C:\Program Files\Unity\Editor\Data\Managed/UnityEngine/UnityEngine.dll + + + C:\Program Files\Unity\Editor\Data\Managed/UnityEditor.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.TextMeshPro.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.PackageManagerUI.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.CollabProxy.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.TextMeshPro.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/ScriptAssemblies/Unity.Analytics.DataPrivacy.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AIModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ARModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AccessibilityModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AnimationModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AssetBundleModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.AudioModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.BaselibModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ClothModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.CoreModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.CrashReportingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.DirectorModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.FileSystemHttpModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.GameCenterModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.GridModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.HotReloadModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.IMGUIModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ImageConversionModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.InputModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.JSONSerializeModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.LocalizationModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ParticleSystemModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.PerformanceReportingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.PhysicsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.Physics2DModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ProfilerModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.ScreenCaptureModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SharedInternalsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SpatialTrackingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteMaskModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SpriteShapeModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.StreamingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.StyleSheetsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.SubstanceModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TLSModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TerrainPhysicsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TextCoreModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TextRenderingModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TilemapModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.TimelineModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UIModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UIElementsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UNETModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UmbraModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityAnalyticsModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityConnectModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityTestProtocolModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAssetBundleModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestAudioModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestTextureModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.UnityWebRequestWWWModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VFXModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VRModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VehiclesModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.VideoModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.WindModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/UnityEngine/UnityEngine.XRModule.dll + + + C:/Program Files/Unity/Editor/Data/Managed/Unity.Locator.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/UnityEngine.TestRunner.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/TestRunner/net35/unity-custom/nunit.framework.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Timeline/RuntimeEditor/UnityEngine.Timeline.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll + + + C:/Program Files/Unity/Editor/Data/PlaybackEngines/VuforiaSupport/Managed/Runtime/Vuforia.UnityExtensions.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnityGoogleAudioSpatializer/RuntimeEditor/UnityEngine.GoogleAudioSpatializer.dll + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/UnitySpatialTracking/RuntimeEditor/UnityEngine.SpatialTracking.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll + + + C:/Users/HP Laptop/Documents/MazeGame/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/ref/2.0.0/netstandard.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/Microsoft.Win32.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.AppContext.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Concurrent.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.NonGeneric.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Collections.Specialized.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.EventBasedAsync.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ComponentModel.TypeConverter.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Console.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Data.Common.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Contracts.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Debug.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.FileVersionInfo.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Process.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.StackTrace.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TextWriterTraceListener.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tools.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.TraceSource.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Diagnostics.Tracing.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Drawing.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Dynamic.Runtime.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Calendars.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Globalization.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Compression.ZipFile.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.DriveInfo.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.FileSystem.Watcher.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.IsolatedStorage.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.MemoryMappedFiles.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.Pipes.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.IO.UnmanagedMemoryStream.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Expressions.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Parallel.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Linq.Queryable.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Http.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NameResolution.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.NetworkInformation.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Ping.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Requests.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Security.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.Sockets.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebHeaderCollection.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.Client.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Net.WebSockets.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ObjectModel.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Reflection.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Reader.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.ResourceManager.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Resources.Writer.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.CompilerServices.VisualC.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Handles.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.InteropServices.RuntimeInformation.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Numerics.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Formatters.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Json.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Runtime.Serialization.Xml.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Claims.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Algorithms.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Csp.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Encoding.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.Primitives.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Cryptography.X509Certificates.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.Principal.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Security.SecureString.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.Encoding.Extensions.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Text.RegularExpressions.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Overlapped.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Tasks.Parallel.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Thread.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.ThreadPool.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Threading.Timer.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.ValueTuple.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.ReaderWriter.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XDocument.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlDocument.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XmlSerializer.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netstandard/System.Xml.XPath.XDocument.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/Extensions/2.0.0/System.Numerics.Vectors.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/Extensions/2.0.0/System.Runtime.InteropServices.WindowsRuntime.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/mscorlib.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ComponentModel.Composition.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Core.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Data.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Drawing.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.IO.Compression.FileSystem.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Net.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Numerics.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Runtime.Serialization.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.ServiceModel.Web.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Transactions.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Web.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Windows.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Linq.dll + + + C:/Program Files/Unity/Editor/Data/NetStandard/compat/2.0.0/shims/netfx/System.Xml.Serialization.dll + + + + + + \ No newline at end of file diff --git a/Unity_VR_Assignment/Assets/GoogleVR.meta b/Unity_VR_Assignment/Assets/GoogleVR.meta new file mode 100644 index 0000000..cdcf347 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d4e5ba98821182c478ec2cd78c8c0dc4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta.meta new file mode 100644 index 0000000..1805a8f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: af933ee63fa154f2587121dc2cfd5ea2 +folderAsset: yes +timeCreated: 1535146527 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos.meta new file mode 100644 index 0000000..30650e5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0c224bedd0850dc409ad1ee61408fee7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers.meta new file mode 100644 index 0000000..dc222cb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 539663af6046e2943bfb057e914cbfe7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes.meta new file mode 100644 index 0000000..56fbf52 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e1b20bf0e56c1a4e81d959e54e2841e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes/Hello6DoFControllers.unity b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes/Hello6DoFControllers.unity new file mode 100644 index 0000000..1170eb7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes/Hello6DoFControllers.unity @@ -0,0 +1,1904 @@ +%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: 8 + 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.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !u!196 &5 +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.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &76323789 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 907292808} + m_Modifications: + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 555767533, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_Name + value: GvrBetaControllerPointer0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &83144409 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointers.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.y + value: 0.75 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.z + value: -0.47 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerMain + value: + objectReference: {fileID: 1168548481} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointer + value: + objectReference: {fileID: 0} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: reticlePointer + value: + objectReference: {fileID: 879839115} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointers.Array.data[0] + value: + objectReference: {fileID: 1518338372} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointers.Array.data[1] + value: + objectReference: {fileID: 2037687705} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &148680882 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 148680883} + - component: {fileID: 148680891} + - component: {fileID: 148680890} + - component: {fileID: 148680889} + - component: {fileID: 148680884} + - component: {fileID: 148680886} + - component: {fileID: 148680885} + m_Layer: 0 + m_Name: TriSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &148680883 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1.5} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_Children: [] + m_Father: {fileID: 1199920617} + 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} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &148680884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: ClickTeleport + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: GripStartGrab + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: GripEndGrab + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: TeleportRandomly + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &148680885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b2d5a7a64cb36b94fb3234899ed1afb0, type: 3} + m_Name: + m_EditorClassIdentifier: + inactiveMaterial: {fileID: 2100000, guid: a5801e27da69043b69f7f194b62c2716, type: 2} + gazedAtMaterial: {fileID: 2100000, guid: c63bdfc3c6f1447c8bcb58360dd31d6a, type: 2} +--- !u!82 &148680886 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!135 &148680889 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.499999 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &148680890 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: c63bdfc3c6f1447c8bcb58360dd31d6a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!33 &148680891 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Mesh: {fileID: 4300000, guid: 18ea1f717668b466d9b043f460af69d1, type: 3} +--- !u!1001 &368821659 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 907292808} + m_Modifications: + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 555767533, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_Name + value: GvrBetaControllerPointer1 + objectReference: {fileID: 0} + - target: {fileID: 114000013899574178, guid: 048f0870e3e4143d9a65ef712d616c2b, + type: 2} + propertyPath: controllerHand + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + propertyPath: m_LocalPosition.x + value: -0.12 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 048f0870e3e4143d9a65ef712d616c2b, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &389255504 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 389255506} + - component: {fileID: 389255505} + m_Layer: 0 + m_Name: Point light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &389255505 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 389255504} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 10 + m_Range: 20 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &389255506 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 389255504} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 7.8045807, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &402391661 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 114063829130735768, guid: 5ca80f4596fa44b87912a0592346d260, + type: 2} + propertyPath: enablePositionalTracking + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &781074293 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &848404732 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959308593} + m_Modifications: + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 171526, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &848404733 stripped +Transform: + m_PrefabParentObject: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_PrefabInternal: {fileID: 848404732} +--- !u!1001 &873428114 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &879839115 stripped +GameObject: + m_PrefabParentObject: {fileID: 171526, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_PrefabInternal: {fileID: 848404732} +--- !u!1 &907292807 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 907292808} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907292808 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907292807} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 959308593} + - {fileID: 2052240572} + - {fileID: 1100274185} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &946975180 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &955127915 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 955127926} + - component: {fileID: 955127918} + - component: {fileID: 955127916} + - component: {fileID: 955127917} + - component: {fileID: 955127923} + - component: {fileID: 955127919} + - component: {fileID: 955127920} + m_Layer: 0 + m_Name: Icosahedron + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &955127916 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 0edec395166a3244592f3532c7ce794c, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!64 &955127917 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 4300000, guid: 5c39ec134a75d4a87a4a69a1be8dc5de, type: 3} +--- !u!33 &955127918 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Mesh: {fileID: 4300000, guid: 5c39ec134a75d4a87a4a69a1be8dc5de, type: 3} +--- !u!82 &955127919 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &955127920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b2d5a7a64cb36b94fb3234899ed1afb0, type: 3} + m_Name: + m_EditorClassIdentifier: + inactiveMaterial: {fileID: 2100000, guid: daad62324deb0cf448e5c805c8459bff, type: 2} + gazedAtMaterial: {fileID: 2100000, guid: 0edec395166a3244592f3532c7ce794c, type: 2} +--- !u!114 &955127923 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127920} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127920} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127920} + m_MethodName: ClickTeleport + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127920} + m_MethodName: GripStartGrab + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127920} + m_MethodName: GripEndGrab + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: TeleportRandomly + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!224 &955127926 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1.5} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_Children: [] + m_Father: {fileID: 1199920617} + m_RootOrder: 2 + 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} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &959308587 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: b8b03d395f5734e98af91ccf44f9bf47, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 959308593} + - component: {fileID: 959308592} + - component: {fileID: 959308591} + - component: {fileID: 959308590} + - component: {fileID: 959308589} + - component: {fileID: 959308594} + 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 &959308589 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 +--- !u!92 &959308590 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 9200004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 +--- !u!124 &959308591 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 12400004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 +--- !u!20 &959308592 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2000004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.03 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &959308593 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: b8b03d395f5734e98af91ccf44f9bf47, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 848404733} + m_Father: {fileID: 907292808} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &959308594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb5dd43baba2d4dc1bab789615567e3d, type: 3} + m_Name: + m_EditorClassIdentifier: + raycasterEventMask: + serializedVersion: 2 + m_Bits: 4294967295 + maxRaycastHits: 64 +--- !u!4 &1100274185 stripped +Transform: + m_PrefabParentObject: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, + type: 2} + m_PrefabInternal: {fileID: 368821659} +--- !u!1 &1136815077 stripped +GameObject: + m_PrefabParentObject: {fileID: 195966, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + m_PrefabInternal: {fileID: 83144409} +--- !u!114 &1136815078 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1136815077} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ae2d286fc7c3e427bbde238c0ebb970b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_launchVrHomeButton: {fileID: 0} + m_demoInputManager: {fileID: 1136815079} +--- !u!114 &1136815079 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, + type: 2} + m_PrefabInternal: {fileID: 83144409} + m_Script: {fileID: 11500000, guid: ddd25f1308577456cbaa207901961126, type: 3} +--- !u!1001 &1163767423 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 114055343288806878, guid: 87c35d808850c410ca0e398a8da84e68, + type: 2} + propertyPath: safetyRing + value: + objectReference: {fileID: 1725746395} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1168548481 stripped +GameObject: + m_PrefabParentObject: {fileID: 198490, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_PrefabInternal: {fileID: 402391661} +--- !u!1 &1199920616 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1199920617} + m_Layer: 0 + m_Name: Treasure + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1199920617 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1199920616} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1490385948} + - {fileID: 148680883} + - {fileID: 955127926} + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1252116907 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1266476664 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 1000013061525784, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1490385947 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1490385948} + - component: {fileID: 1490385956} + - component: {fileID: 1490385955} + - component: {fileID: 1490385954} + - component: {fileID: 1490385949} + - component: {fileID: 1490385957} + - component: {fileID: 1490385950} + m_Layer: 0 + m_Name: QuadSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1490385948 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 1.5} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_Children: [] + m_Father: {fileID: 1199920617} + 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} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1490385949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: ClickTeleport + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: GripStartGrab + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: GripEndGrab + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: TeleportRandomly + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &1490385950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b2d5a7a64cb36b94fb3234899ed1afb0, type: 3} + m_Name: + m_EditorClassIdentifier: + inactiveMaterial: {fileID: 2100000, guid: 07e4eb2033080474d8aa55e5a35d49ca, type: 2} + gazedAtMaterial: {fileID: 2100000, guid: c5f8095b20dc2423cad63ce7379784d7, type: 2} +--- !u!135 &1490385954 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.499999 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1490385955 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: c5f8095b20dc2423cad63ce7379784d7, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!33 &1490385956 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Mesh: {fileID: 4300000, guid: 137df3466902d424983627567b86735e, type: 3} +--- !u!82 &1490385957 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!1 &1518338372 stripped +GameObject: + m_PrefabParentObject: {fileID: 555767533, guid: 048f0870e3e4143d9a65ef712d616c2b, + type: 2} + m_PrefabInternal: {fileID: 76323789} +--- !u!1 &1725746395 stripped +GameObject: + m_PrefabParentObject: {fileID: 1251124450334416, guid: c12db6ac95da443448d6aa9e4cfc66c0, + type: 2} + m_PrefabInternal: {fileID: 873428114} +--- !u!1 &2037687705 stripped +GameObject: + m_PrefabParentObject: {fileID: 555767533, guid: 048f0870e3e4143d9a65ef712d616c2b, + type: 2} + m_PrefabInternal: {fileID: 368821659} +--- !u!4 &2052240572 stripped +Transform: + m_PrefabParentObject: {fileID: 1820761120, guid: 048f0870e3e4143d9a65ef712d616c2b, + type: 2} + m_PrefabInternal: {fileID: 76323789} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes/Hello6DoFControllers.unity.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes/Hello6DoFControllers.unity.meta new file mode 100644 index 0000000..4679d2d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scenes/Hello6DoFControllers.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c0b832c140b8454f9966240e2cc9b45 +timeCreated: 1479266156 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts.meta new file mode 100644 index 0000000..991275c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 94cac3c6685d69f43b98e08a99c1655d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts/DemoObjectController6DoF.cs b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts/DemoObjectController6DoF.cs new file mode 100644 index 0000000..cba5ef9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts/DemoObjectController6DoF.cs @@ -0,0 +1,158 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.Hello6DoFController +{ + using UnityEngine; + using UnityEngine.EventSystems; + using System.Collections.Generic; + + public class DemoObjectController6DoF : MonoBehaviour + { + private Vector3 startingPosition; + private Vector3 startingScale; + private bool isLockedToController; + private Renderer myRenderer; + + public Material inactiveMaterial; + public Material gazedAtMaterial; + + private GvrTrackedController grabController; + + void Start() + { + startingPosition = transform.position; + startingScale = transform.localScale; + myRenderer = GetComponent(); + SetGazedAt(false); + } + + public void UpdateStartPosition() + { + startingPosition = transform.position; + startingScale = transform.localScale; + } + + private void Update() + { + Vector3 targetPos = startingPosition; + Quaternion targetRotation = Quaternion.identity; + Vector3 targetScale = startingScale; + + if (grabController != null) + { + targetRotation = grabController.transform.rotation; + targetPos = grabController.transform.position; + + // Offset the object 15cm down the pointing axis of the controller + // to place it in front of the controller. + targetPos += targetRotation * Vector3.forward * 0.20f; + + // Shrink the object down a bit while "gripped". + targetScale *= 0.5f; + if (Vector3.Distance(targetPos, transform.position) < 0.01f) + { + isLockedToController = true; + } + } + + float interpAmount = 1; + if (!isLockedToController) + { + interpAmount = 1 - Mathf.Pow(0.01f, 4 * Time.deltaTime); + } + + transform.position = Vector3.Lerp(transform.position, targetPos, interpAmount); + transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, interpAmount); + transform.localScale = Vector3.Lerp(transform.localScale, targetScale, interpAmount); + } + + // Hook this up to Event Trigger PointerEnter with the checkbox checked + // and PointerExit with the checkbox unchecked. + public void SetGazedAt(bool gazedAt) + { + if (inactiveMaterial != null && gazedAtMaterial != null) + { + myRenderer.material = gazedAt ? gazedAtMaterial : inactiveMaterial; + } + } + + // Hook this up to Event Trigger PointerDown. + public void GripStartGrab(BaseEventData eventData) + { + PointerEventData ptrEventData = eventData as PointerEventData; + if (ptrEventData != null && + (ptrEventData.GvrGetButtonsDown() & GvrControllerButton.Grip) != 0) + { + grabController = GvrPointerInputModule.Pointer.GetComponentInParent(); + isLockedToController = false; + } + } + + // Hook this up to Event Trigger PointerUp. + public void GripEndGrab(BaseEventData eventData) + { + PointerEventData ptrEventData = eventData as PointerEventData; + if (ptrEventData != null && + (ptrEventData.GvrGetButtonsDown() & GvrControllerButton.Grip) != 0) + { + grabController = null; + isLockedToController = false; + } + } + + // Hook this up to Event Trigger PointerClick. + public void ClickTeleport(BaseEventData eventData) + { + PointerEventData ptrEventData = eventData as PointerEventData; + if (ptrEventData != null && + ptrEventData.button == PointerEventData.InputButton.Left) + { + TeleportRandomly(); + } + } + + private void TeleportRandomly() + { + // Pick a random sibling, move them somewhere random, activate them, + // deactivate ourself. + int sibIdx = transform.GetSiblingIndex(); + int numSibs = transform.parent.childCount; + sibIdx = (sibIdx + Random.Range(1, numSibs)) % numSibs; + GameObject randomSib = transform.parent.GetChild(sibIdx).gameObject; + + // Move to random new location ±90˚ horzontal. + Vector3 direction = Quaternion.Euler( + 0, + Random.Range(-90, 90), + 0) * Vector3.forward; + + // New location between 1m and 2m. + float distance = Random.Range(1, 2); + Vector3 newPos = direction * distance; + + // Limit vertical position to be fully in the room. + newPos.y = Mathf.Clamp(newPos.y, -1.2f, 4f); + randomSib.transform.localPosition = newPos; + randomSib.GetComponent().UpdateStartPosition(); + randomSib.SetActive(true); + gameObject.SetActive(false); + SetGazedAt(false); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts/DemoObjectController6DoF.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts/DemoObjectController6DoF.cs.meta new file mode 100644 index 0000000..5fe7f28 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Demos/Hello6DoFControllers/Scripts/DemoObjectController6DoF.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2d5a7a64cb36b94fb3234899ed1afb0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials.meta new file mode 100644 index 0000000..7b83425 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d5fb7f927cfda049957aba39ec1cb44 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials/Controller6DoF.mat b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials/Controller6DoF.mat new file mode 100644 index 0000000..1fb51e2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials/Controller6DoF.mat @@ -0,0 +1,97 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Controller6DoF + m_Shader: {fileID: 4800000, guid: fdbce15836bf64163856f689fdd67b2c, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseColorTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _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: 9b5d1610ce929b24c944336a19e52d3a, 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_Floats: + - _BumpScale: 1 + - _ColorMask: 15 + - _Cutoff: 0.541 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GVRTouchPadRadius: 0.139 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _GvrTouchpadCenterX: 0.851 + - _GvrTouchpadCenterY: 0.855 + - _Metallic: 0 + - _MetallicFactor: 1 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _RoughnessFactor: 1 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UVSec: 0 + - _UseUIAlphaClip: 0 + - _ZWrite: 1 + - _fadeParameter: 1 + m_Colors: + - _BaseColorFactor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 0.6981132, g: 0.6981132, b: 0.6981132, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _GVRTouchPadCenter: {r: 0.851, g: 0.855, b: 0, a: 0} + - _HighlightColor: {r: 0.63, g: 0.52, b: 0.38, a: 0.66} + - _ShadowColor: {r: 0.96, g: 1, b: 1, a: 0.85} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials/Controller6DoF.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials/Controller6DoF.mat.meta new file mode 100644 index 0000000..fdf3d49 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Materials/Controller6DoF.mat.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: fa5f1e7e0a10ce04795dc813f786b698 +timeCreated: 1523031812 +licenseType: Pro +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models.meta new file mode 100644 index 0000000..c878f6d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b04e3f7a2593f5b4082007df12f7f730 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models/dd6dof_controller.fbx b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models/dd6dof_controller.fbx new file mode 100644 index 0000000..4e6a5a8 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models/dd6dof_controller.fbx differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models/dd6dof_controller.fbx.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models/dd6dof_controller.fbx.meta new file mode 100644 index 0000000..5de8e1d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Models/dd6dof_controller.fbx.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: a331b5ea41eca5f4699c621b677b2166 +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2100000: No Name + 2300000: //RootNode + 3300000: //RootNode + 4300000: NovaController_Mesh + 4300002: dd6dof_controller + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs.meta new file mode 100644 index 0000000..7f0a34c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 05d308b50f1d445898348cf2b9532987 +folderAsset: yes +timeCreated: 1535757031 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs/GvrBetaControllerPointer.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs/GvrBetaControllerPointer.prefab new file mode 100644 index 0000000..5f986e0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs/GvrBetaControllerPointer.prefab @@ -0,0 +1,432 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 555767533} + m_IsPrefabParent: 1 +--- !u!23 &225929234 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 2100000, guid: ebbccbcf1451ddf4199eab062dc6d367, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!4 &364184199 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1820761120} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &555767533 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 1820761120} + - component: {fileID: 114000013899574178} + - component: {fileID: 114000013128025656} + m_Layer: 0 + m_Name: GvrBetaControllerPointer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &573318178 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 364184199} + - component: {fileID: 114798584365988060} + - component: {fileID: 1475472563} + - component: {fileID: 904534127} + m_Layer: 0 + m_Name: ControllerVisualMulti + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &573655681 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 51b65678ccdd949e9a58874d2880c0ef, type: 3} + m_Name: + m_EditorClassIdentifier: + raycastMode: 2 + overridePointerCamera: {fileID: 0} + drawDebugRays: 0 + maxPointerDistance: 20 + defaultReticleDistance: 20 + overrideCameraRayIntersectionDistance: 0 +--- !u!120 &750984299 +LineRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: a6329ec80f51d6049a5d00d86224003b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_Parameters: + serializedVersion: 2 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0.01 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0.01 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + m_UseWorldSpace: 0 + m_Loop: 0 +--- !u!1 &771218441 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 1915109966} + - component: {fileID: 573655681} + - component: {fileID: 114000010349995660} + - component: {fileID: 750984299} + m_Layer: 2 + m_Name: Laser + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &904534127 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 3b4f6031d569a624ba87b631c93a788a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!1 &1225896218 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 1412694727} + - component: {fileID: 114000013395929458} + - component: {fileID: 1583549455} + - component: {fileID: 225929234} + m_Layer: 2 + m_Name: Reticle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1412694727 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1915109966} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1475472563 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_Mesh: {fileID: 4300000, guid: 581a0d1f069aa2d41b4112fb6b01244e, type: 3} +--- !u!33 &1583549455 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1820761120 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 555767533} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 364184199} + - {fileID: 1915109966} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &1915109966 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} + m_LocalPosition: {x: 0, y: -0.009, z: 0.049} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1412694727} + m_Father: {fileID: 1820761120} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} +--- !u!114 &114000010349995660 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4ee199cdc1304b2090f019e4f488674, type: 3} + m_Name: + m_EditorClassIdentifier: + reticle: {fileID: 114000013395929458} + controller: {fileID: 364184199} + laserColor: {r: 1, g: 1, b: 1, a: 0.25} + laserColorEnd: {r: 1, g: 1, b: 1, a: 0} + maxLaserDistance: 1 + lerpSpeed: 20 + lerpThreshold: 1 + shrinkLaser: 1 + shrunkScale: 0.2 + beginShrinkAngleDegrees: 0 + endShrinkAngleDegrees: 2 +--- !u!114 &114000013128025656 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 555767533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7dda4bb2d5509e44e978d2bf56e25d7c, type: 3} + m_Name: + m_EditorClassIdentifier: + elbowRestPosition: {x: 0.195, y: -0.5, z: 0.005} + wristRestPosition: {x: 0, y: 0, z: 0.25} + controllerRestPosition: {x: 0, y: 0, z: 0.05} + armExtensionOffset: {x: -0.13, y: 0.14, z: 0.08} + elbowBendRatio: 0.6 + fadeControllerOffset: 0 + fadeDistanceFromHeadForward: 0.25 + fadeDistanceFromHeadSide: 0.15 + tooltipMinDistanceFromFace: 0.45 + tooltipMaxAngleFromCamera: 80 + isLockedToNeck: 1 +--- !u!114 &114000013395929458 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5cd7f7fcfc8a4c1fbc201ccc579556d, type: 3} + m_Name: + m_EditorClassIdentifier: + isSizeBasedOnCameraDistance: 1 + sizeMeters: 0.1 + doesReticleFaceCamera: + alongXAxis: 1 + alongYAxis: 1 + alongZAxis: 1 + sortingOrder: 0 +--- !u!114 &114000013899574178 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 555767533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 311793381eb9d45149dc1a422000a9fd, type: 3} + m_Name: + m_EditorClassIdentifier: + armModel: {fileID: 114000013128025656} + isDeactivatedWhenDisconnected: 1 + controllerHand: 2 +--- !u!114 &114798584365988060 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d5f98cfdb173ab4db83e5e352f4157d, type: 3} + m_Name: + m_EditorClassIdentifier: + attachmentPrefabs: + - {fileID: 1000011375678268, guid: 6e5b693d0947f4a8b85a00d3965ba64c, type: 2} + touchPadColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + appButtonColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + systemButtonColor: {r: 0.078431375, g: 0.078431375, b: 0.078431375, a: 1} + readControllerState: 1 + displayState: + batteryLevel: -1 + batteryCharging: 0 + clickButton: 0 + appButton: 0 + homeButton: 0 + touching: 0 + touchPos: {x: 0.5, y: 0.5} + maximumAlpha: 1 + visualsAssets: + - mesh: {fileID: 4300000, guid: 581a0d1f069aa2d41b4112fb6b01244e, type: 3} + material: {fileID: 2100000, guid: 3b4f6031d569a624ba87b631c93a788a, type: 2} + - mesh: {fileID: 4300002, guid: a331b5ea41eca5f4699c621b677b2166, type: 3} + material: {fileID: 2100000, guid: fa5f1e7e0a10ce04795dc813f786b698, type: 2} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs/GvrBetaControllerPointer.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs/GvrBetaControllerPointer.prefab.meta new file mode 100644 index 0000000..f55aa77 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Prefabs/GvrBetaControllerPointer.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 048f0870e3e4143d9a65ef712d616c2b +timeCreated: 1478632992 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts.meta new file mode 100644 index 0000000..249c2f9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 13dc6e2cef0de4225b76faab2828f14c +folderAsset: yes +timeCreated: 1535146527 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBeta.cs b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBeta.cs new file mode 100644 index 0000000..0341dff --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBeta.cs @@ -0,0 +1,117 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +/// Daydream Beta API. This API surface is for experimental purposes and may +/// change or be removed in any future release without forewarning. +namespace GoogleVR.Beta +{ + using UnityEngine; + using System; + using System.Runtime.InteropServices; + + /// Daydream controller Beta API. + public class GvrBetaControllerInput + { + /// Daydream Controller configurations. + + // enum gvr_beta_controller_configuration_type + public enum Configuration + { + /// Used when controller configuration is unknown. + Unknown = 0, + + /// Daydream controller. + Is3DoF = 1, + + /// Daydream 6DoF controller. + Is6DoF = 2, + } + + /// Tracking status flags for Daydream 6DoF controllers. Although enum values are + /// in practice currently mutually exclusive, returned values should be tested + /// using bitwise tests. + + // enum gvr_beta_controller_tracking_status_flags + public enum TrackingStatusFlags + { + /// The controller's tracking status is unknown. + Unknown = (1 << 0), + + /// The controller is tracking in 6DoF mode. + Nominal = (1 << 1), + + /// The controller is occluded. Controller reports 3DoF pose + /// and last known position in this case. + Occluded = (1 << 2), + + /// The controller is out of field of view. Controller + /// reports 3DoF pose and last known position in this case. + OutOfFov = (1 << 3), + } + + // Gets the current controller configuration. Controller configuration will only + // change while the app is paused. + internal static Configuration GetConfigurationType(int device) + { +#if UNITY_ANDROID && !UNITY_EDITOR + return (Configuration)GvrShimUnity_betaControllerGetConfigurationType(device); +#else + return Configuration.Is3DoF; +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + + // Gets the tracking status flags for the given controller. + internal static TrackingStatusFlags GetTrackingStatusFlags(int device) + { +#if UNITY_ANDROID && !UNITY_EDITOR + return (TrackingStatusFlags)GvrShimUnity_betaControllerStateGetTrackingStatus(device); +#else + return TrackingStatusFlags.Nominal; +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + +#if UNITY_ANDROID && !UNITY_EDITOR + private const string shimDllName = GvrActivityHelper.GVR_SHIM_DLL_NAME; + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_betaControllerGetConfigurationType(int device); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_betaControllerStateGetTrackingStatus(int device); +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + + /// Class extension for GvrControllerInputDevice to add beta tracking status getter. + public static class GvrControllerInputDeviceExtension + { + /// Gets a controller's configuration type. Controller configuration will only + /// change while the app is paused. + public static GvrBetaControllerInput.Configuration GetConfigurationType(this GvrControllerInputDevice device) + { + return GvrBetaControllerInput.GetConfigurationType(device.IsDominantHand ? 0 : 1); + } + + /// Gets a controller's tracking status. Although TrackingStatusFlags values are + /// in practice currently mutually exclusive, returned values should be tested + /// using bitwise tests. + public static GvrBetaControllerInput.TrackingStatusFlags GetTrackingStatusFlags(this GvrControllerInputDevice device) + { + return GvrBetaControllerInput.GetTrackingStatusFlags(device.IsDominantHand ? 0 : 1); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBeta.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBeta.cs.meta new file mode 100644 index 0000000..ba48365 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBeta.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e10e28d2cc4e040d392ffbd22271fec0 +timeCreated: 1535146527 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBetaControllerVisualMulti.cs b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBetaControllerVisualMulti.cs new file mode 100644 index 0000000..d644af4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBetaControllerVisualMulti.cs @@ -0,0 +1,73 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.Beta +{ + using UnityEngine; + using GoogleVR.Beta; + + public class GvrBetaControllerVisualMulti : GvrControllerVisual + { + /// An array of mesh and material pairs used to dynamically change the controller visual. + [SerializeField] + private VisualAssets[] visualsAssets; + + public override float PreferredAlpha + { + get + { + float controllerAlpha = base.PreferredAlpha; + if (ControllerInputDevice != null) + { + switch (ControllerInputDevice.GetTrackingStatusFlags()) + { + case GvrBetaControllerInput.TrackingStatusFlags.Occluded: + case GvrBetaControllerInput.TrackingStatusFlags.OutOfFov: + controllerAlpha *= 0.5f; + break; + } + } + + return controllerAlpha; + } + } + + protected override VisualAssets GetVisualAssets() + { + VisualAssets vizAssets = base.GetVisualAssets(); + + int controllerVisualIndex = 0; + if (ControllerInputDevice != null && + ControllerInputDevice.GetConfigurationType() == + GvrBetaControllerInput.Configuration.Is6DoF) + { + controllerVisualIndex = 1; + } + + // Check that visualsAssets exists and that the visual index is within range. + if (visualsAssets != null && + controllerVisualIndex < visualsAssets.Length) + { + vizAssets.material = visualsAssets[controllerVisualIndex].material; + vizAssets.mesh = visualsAssets[controllerVisualIndex].mesh; + } + + return vizAssets; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBetaControllerVisualMulti.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBetaControllerVisualMulti.cs.meta new file mode 100644 index 0000000..2be78f7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Scripts/GvrBetaControllerVisualMulti.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d5f98cfdb173ab4db83e5e352f4157d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures.meta new file mode 100644 index 0000000..f7c0171 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 31b21793f3d34604cb73e670e9121e0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures/Controller6DoF.png b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures/Controller6DoF.png new file mode 100644 index 0000000..d666f37 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures/Controller6DoF.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures/Controller6DoF.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures/Controller6DoF.png.meta new file mode 100644 index 0000000..f4e11fc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Beta/Textures/Controller6DoF.png.meta @@ -0,0 +1,86 @@ +fileFormatVersion: 2 +guid: 9b5d1610ce929b24c944336a19e52d3a +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 6 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + 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 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos.meta new file mode 100644 index 0000000..4b26454 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5c9f6a26bef6644589977da9be4e7a54 +folderAsset: yes +timeCreated: 1462052921 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor.meta new file mode 100644 index 0000000..1c91519 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 01c8a812e961c498ba2c57ff1e77edb3 +folderAsset: yes +timeCreated: 1479319898 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/DemoInputManagerEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/DemoInputManagerEditor.cs new file mode 100644 index 0000000..144d68d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/DemoInputManagerEditor.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.Demos +{ + using UnityEngine; + using UnityEditor; + + [CustomEditor(typeof(DemoInputManager))] + public class DemoInputManagerEditor : Editor + { + SerializedProperty emulatedPlatformTypeProp; + SerializedProperty gvrControllerMainProp; + SerializedProperty gvrControllerPointerProp; + SerializedProperty gvrReticlePointerProp; + + void OnEnable() + { + gvrControllerMainProp = + serializedObject.FindProperty(DemoInputManager.CONTROLLER_MAIN_PROP_NAME); + gvrControllerPointerProp = + serializedObject.FindProperty(DemoInputManager.CONTROLLER_POINTER_PROP_NAME); + gvrReticlePointerProp = + serializedObject.FindProperty(DemoInputManager.RETICLE_POINTER_PROP_NAME); + + emulatedPlatformTypeProp = + serializedObject.FindProperty(DemoInputManager.EMULATED_PLATFORM_PROP_NAME); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.PropertyField(gvrControllerMainProp); + EditorGUILayout.PropertyField(gvrControllerPointerProp, true); + EditorGUILayout.PropertyField(gvrReticlePointerProp); + + if (DemoInputManager.playerSettingsHasCardboard() == + DemoInputManager.playerSettingsHasDaydream()) + { + // Show the platform emulation dropdown only if both or neither VR SDK selected in + // Player Settings > Virtual Reality supported, + EditorGUILayout.PropertyField(emulatedPlatformTypeProp); + } + + serializedObject.ApplyModifiedProperties(); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/DemoInputManagerEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/DemoInputManagerEditor.cs.meta new file mode 100644 index 0000000..87ad335 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/DemoInputManagerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 509a29025635b4c31bb337addea72a7c +timeCreated: 1479318538 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/PermissionsDemoBuildProcessor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/PermissionsDemoBuildProcessor.cs new file mode 100644 index 0000000..3d55696 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/PermissionsDemoBuildProcessor.cs @@ -0,0 +1,166 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// Only invoke custom build processor when building for Android. +#if UNITY_ANDROID +namespace GoogleVR.Demos +{ + using System; + using UnityEditor; + using UnityEditor.Build; + using UnityEditorInternal.VR; + +#if UNITY_2018_1_OR_NEWER + using UnityEditor.Build.Reporting; +#endif + +#if UNITY_2018_1_OR_NEWER + class PermissionsDemoBuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport +#else + class PermissionsDemoBuildProcessor : IPreprocessBuild, IPostprocessBuild +#endif + { + private const string SCENE_NAME_PERMISSIONS_DEMO = "PermissionsDemo"; + + private bool m_cardboardAddedFromCode = false; + + public int callbackOrder + { + get { return 0; } + } + +#if UNITY_2018_1_OR_NEWER + public void OnPreprocessBuild(BuildReport report) + { + OnPreprocessBuild(report.summary.platform, report.summary.outputPath); + } +#endif + + // OnPreprocessBuild() is called right before the build process begins. If it + // detects that the first enabled scene in the build arrays is the PermissionsDemo, + // and Daydream is in the VR SDKs, it will add Cardboard to the VR SDKs. Because + // the PermissionsDemo needs a perm statement in the Manifest while other demos don't. + // Adding Cardboard to VR SDKs will merge in the Manifest-Cardboard which has perm + // statement in it. + public void OnPreprocessBuild(BuildTarget target, string path) + { + m_cardboardAddedFromCode = false; + + string[] androidVrSDKs = VREditor.GetVREnabledDevicesOnTargetGroup(BuildTargetGroup.Android); + + EditorBuildSettingsScene[] scenes = EditorBuildSettings.scenes; + + // See if PermissionsDemo is the first enabled scene in the array of scenes to build. + for (int i = 0; i < scenes.Length; i++) + { + if (scenes[i].path.Contains(SCENE_NAME_PERMISSIONS_DEMO)) + { + if (!scenes[i].enabled) + { + return; + } + else + { + break; + } + } + else + { + if (scenes[i].enabled) + { + return; + } + } + } + + bool hasCardboard = Array.Exists(androidVrSDKs, + element => element.Equals(GvrSettings.VR_SDK_CARDBOARD)); + + if (hasCardboard) + { + return; + } + + bool hasDaydream = Array.Exists(androidVrSDKs, + element => element.Equals(GvrSettings.VR_SDK_DAYDREAM)); + + if (!hasDaydream) + { + return; + } + + string[] androidVrSDKsAppended = new string[androidVrSDKs.Length + 1]; + + for (int i = 0; i < androidVrSDKs.Length; i++) + { + androidVrSDKsAppended[i] = androidVrSDKs[i]; + } + + androidVrSDKsAppended[androidVrSDKsAppended.Length - 1] = GvrSettings.VR_SDK_CARDBOARD; + + VREditor.SetVREnabledOnTargetGroup( + BuildTargetGroup.Android, true); + VREditor.SetVREnabledDevicesOnTargetGroup( + BuildTargetGroup.Android, + androidVrSDKsAppended); + + m_cardboardAddedFromCode = true; + } + +#if UNITY_2018_1_OR_NEWER + public void OnPostprocessBuild(BuildReport report) + { + OnPostprocessBuild(report.summary.platform, report.summary.outputPath); + } +#endif + + // OnPostprocessBuild() is called after the build process. It does appropriate cleanup + // so that this script only affects build process for PermissionsDemo, not others. + public void OnPostprocessBuild(BuildTarget target, string path) + { + if (!m_cardboardAddedFromCode) + { + return; + } + + string[] androidVrSDKs = VREditor.GetVREnabledDevicesOnTargetGroup(BuildTargetGroup.Android); + + // The enabled devices are modified somehow, which shouldn't happen. Abort the post build process. + if (androidVrSDKs.Length == 0 || androidVrSDKs[androidVrSDKs.Length - 1] != GvrSettings.VR_SDK_CARDBOARD) + { + return; + } + + string[] androidVrSDKsShortened = new string[androidVrSDKs.Length - 1]; + + for (int i = 0; i < androidVrSDKsShortened.Length; i++) + { + androidVrSDKsShortened[i] = androidVrSDKs[i]; + } + + VREditor.SetVREnabledOnTargetGroup( + BuildTargetGroup.Android, true); + VREditor.SetVREnabledDevicesOnTargetGroup( + BuildTargetGroup.Android, + androidVrSDKsShortened); + + m_cardboardAddedFromCode = false; + } + } +} +#endif // UNITY_ANDROID diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/PermissionsDemoBuildProcessor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/PermissionsDemoBuildProcessor.cs.meta new file mode 100644 index 0000000..569e68e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Editor/PermissionsDemoBuildProcessor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7c28afb12456b7469919c6a64cee9c1 +timeCreated: 1493333870 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment.meta new file mode 100644 index 0000000..747fd36 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0035f5afb7b8f4651b0b85476e82dd7a +folderAsset: yes +timeCreated: 1478024344 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.obj b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.obj new file mode 100644 index 0000000..add91d0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.obj @@ -0,0 +1,20125 @@ +# This file uses centimeters as units for non-parametric coordinates. + +g default +v -5.000000 1.575003 -3.799999 +v -5.000000 1.587502 -3.803349 +v -5.000000 1.596651 -3.812500 +v -5.000000 1.600000 -3.824997 +v -5.000000 1.200000 -3.824997 +v -5.000000 1.203349 -3.812500 +v -5.000000 1.212499 -3.803349 +v -5.000000 1.224998 -3.799999 +v -4.603352 1.587502 -3.824997 +v -4.612499 1.596651 -3.824997 +v -4.625000 1.600000 -3.824997 +v -4.625000 1.596651 -3.812500 +v -4.625000 1.587502 -3.803349 +v -4.625000 1.575003 -3.799999 +v -4.612499 1.575003 -3.803349 +v -4.603352 1.575003 -3.812500 +v -4.600002 1.575003 -3.824997 +v -4.612499 1.203349 -3.824997 +v -4.603348 1.212499 -3.824997 +v -4.600002 1.224998 -3.824997 +v -4.603352 1.224998 -3.812500 +v -4.612499 1.224998 -3.803349 +v -4.625000 1.224998 -3.799999 +v -4.625000 1.212499 -3.803349 +v -4.625000 1.203349 -3.812500 +v -4.625000 1.200000 -3.824997 +v -4.625000 1.587502 -4.196651 +v -4.625000 1.596651 -4.187500 +v -4.625000 1.600000 -4.175003 +v -4.612499 1.596651 -4.175003 +v -4.603352 1.587502 -4.175003 +v -4.600002 1.575003 -4.175003 +v -4.603352 1.575003 -4.187500 +v -4.612499 1.575003 -4.196651 +v -4.625000 1.575003 -4.200001 +v -4.625000 1.203349 -4.187500 +v -4.625000 1.212499 -4.196651 +v -4.625000 1.224998 -4.200001 +v -4.612499 1.224998 -4.196651 +v -4.603352 1.224998 -4.187500 +v -4.600002 1.224998 -4.175003 +v -4.603348 1.212499 -4.175003 +v -4.612499 1.203349 -4.175003 +v -4.625000 1.200000 -4.175003 +v -5.000000 1.600000 -4.175003 +v -5.000000 1.596651 -4.187500 +v -5.000000 1.587502 -4.196651 +v -5.000000 1.575003 -4.200001 +v -5.000000 1.224998 -4.200001 +v -5.000000 1.212499 -4.196651 +v -5.000000 1.203349 -4.187500 +v -5.000000 1.200000 -4.175003 +v -4.605228 1.585804 -3.814198 +v -4.614197 1.594771 -3.814198 +v -4.614197 1.585804 -3.805229 +v -4.614197 1.205229 -3.814198 +v -4.605228 1.214196 -3.814198 +v -4.614197 1.214196 -3.805229 +v -4.614197 1.585804 -4.194771 +v -4.614197 1.594771 -4.185802 +v -4.605228 1.585804 -4.185802 +v -4.614197 1.205229 -4.185802 +v -4.614197 1.214196 -4.194771 +v -4.605228 1.214196 -4.185802 +v -4.996651 0.012498 -4.224998 +v -4.987499 0.003348 -4.224998 +v -4.975002 0.000000 -4.224998 +v -4.975002 0.003348 -4.212498 +v -4.975002 0.012498 -4.203350 +v -4.975002 0.024997 -4.200001 +v -4.987499 0.024997 -4.203350 +v -4.996651 0.024997 -4.212498 +v -5.000000 0.024997 -4.224998 +v -4.212498 0.003348 -4.224998 +v -4.203350 0.012498 -4.224998 +v -4.200001 0.024997 -4.224998 +v -4.203350 0.024997 -4.212498 +v -4.212498 0.024997 -4.203350 +v -4.224998 0.024997 -4.200001 +v -4.224998 0.012498 -4.203350 +v -4.224998 0.003348 -4.212498 +v -4.224998 0.000000 -4.224998 +v -4.987503 0.796651 -4.224998 +v -4.996651 0.787500 -4.224998 +v -5.000000 0.775002 -4.224998 +v -4.996651 0.775002 -4.212498 +v -4.987499 0.775002 -4.203350 +v -4.975002 0.775002 -4.200001 +v -4.975002 0.787500 -4.203350 +v -4.975002 0.796651 -4.212498 +v -4.975002 0.800000 -4.224998 +v -4.203350 0.787500 -4.224998 +v -4.212498 0.796651 -4.224998 +v -4.224998 0.800000 -4.224998 +v -4.224998 0.796651 -4.212498 +v -4.224998 0.787500 -4.203350 +v -4.224998 0.775002 -4.200001 +v -4.212498 0.775002 -4.203350 +v -4.203350 0.775002 -4.212498 +v -4.200001 0.775002 -4.224998 +v -4.224998 0.800000 -5.000000 +v -4.212498 0.796651 -5.000000 +v -4.203350 0.787500 -5.000000 +v -4.200001 0.775002 -5.000000 +v -4.994770 0.014195 -4.214195 +v -4.985806 0.005228 -4.214195 +v -4.985806 0.014195 -4.205227 +v -4.214195 0.005228 -4.214195 +v -4.205227 0.014195 -4.214195 +v -4.214195 0.014195 -4.205227 +v -4.985806 0.794771 -4.214195 +v -4.994770 0.785803 -4.214195 +v -4.985806 0.785803 -4.205227 +v -4.205227 0.785803 -4.214195 +v -4.214195 0.794771 -4.214195 +v -4.214195 0.785803 -4.205227 +v -4.996651 0.812499 -4.224998 +v -4.987503 0.803348 -4.224998 +v -4.975002 0.803348 -4.212498 +v -4.975002 0.812499 -4.203350 +v -4.975002 0.824997 -4.200001 +v -4.987503 0.824997 -4.203350 +v -4.996651 0.824997 -4.212498 +v -5.000000 0.824997 -4.224998 +v -4.212498 0.803348 -4.224998 +v -4.203350 0.812499 -4.224998 +v -4.200001 0.824997 -4.224998 +v -4.203350 0.824997 -4.212498 +v -4.212498 0.824997 -4.203350 +v -4.224998 0.824997 -4.200001 +v -4.224998 0.812499 -4.203350 +v -4.224998 0.803348 -4.212498 +v -4.987503 1.596651 -4.224998 +v -4.996651 1.587500 -4.224998 +v -5.000000 1.575002 -4.224998 +v -4.996651 1.575002 -4.212498 +v -4.987503 1.575002 -4.203350 +v -4.975002 1.575002 -4.200001 +v -4.975002 1.587500 -4.203350 +v -4.975002 1.596651 -4.212498 +v -4.975002 1.600000 -4.224998 +v -4.203350 1.587500 -4.224998 +v -4.212498 1.596651 -4.224998 +v -4.224998 1.600000 -4.224998 +v -4.224998 1.596651 -4.212498 +v -4.224998 1.587500 -4.203350 +v -4.224998 1.575002 -4.200001 +v -4.212498 1.575002 -4.203350 +v -4.203350 1.575002 -4.212498 +v -4.200001 1.575002 -4.224998 +v -5.000000 1.575002 -5.000000 +v -4.996651 1.587500 -5.000000 +v -4.987503 1.596651 -5.000000 +v -4.975002 1.600000 -5.000000 +v -4.224998 1.600000 -5.000000 +v -4.212498 1.596651 -5.000000 +v -4.203350 1.587500 -5.000000 +v -4.200001 1.575002 -5.000000 +v -4.203350 0.812499 -5.000000 +v -4.212498 0.803348 -5.000000 +v -4.200001 0.824997 -5.000000 +v -4.994770 0.814195 -4.214195 +v -4.985806 0.805228 -4.214195 +v -4.985806 0.814195 -4.205227 +v -4.214195 0.805228 -4.214195 +v -4.205227 0.814195 -4.214195 +v -4.214195 0.814195 -4.205227 +v -4.985806 1.594770 -4.214195 +v -4.994770 1.585803 -4.214195 +v -4.985806 1.585803 -4.205227 +v -4.205231 1.585803 -4.214195 +v -4.214195 1.594770 -4.214195 +v -4.214195 1.585803 -4.205227 +v -4.196651 0.012498 -4.224998 +v -4.187500 0.003348 -4.224998 +v -4.175003 0.000000 -4.224998 +v -4.175003 0.003348 -4.212498 +v -4.175003 0.012498 -4.203350 +v -4.175003 0.024997 -4.200001 +v -4.187500 0.024997 -4.203350 +v -4.196651 0.024997 -4.212498 +v -3.412498 0.003348 -4.224998 +v -3.403349 0.012498 -4.224998 +v -3.400000 0.024997 -4.224998 +v -3.403349 0.024997 -4.212498 +v -3.412498 0.024997 -4.203350 +v -3.424997 0.024997 -4.200001 +v -3.424997 0.012498 -4.203350 +v -3.424997 0.003348 -4.212498 +v -3.424997 0.000000 -4.224998 +v -4.187500 0.796651 -4.224998 +v -4.196651 0.787500 -4.224998 +v -4.196651 0.775002 -4.212498 +v -4.187500 0.775002 -4.203350 +v -4.175003 0.775002 -4.200001 +v -4.175003 0.787500 -4.203350 +v -4.175003 0.796651 -4.212498 +v -4.175003 0.800000 -4.224998 +v -3.403349 0.787500 -4.224998 +v -3.412498 0.796651 -4.224998 +v -3.424997 0.800000 -4.224998 +v -3.424997 0.796651 -4.212498 +v -3.424997 0.787500 -4.203350 +v -3.424997 0.775002 -4.200001 +v -3.412498 0.775002 -4.203350 +v -3.403349 0.775002 -4.212498 +v -3.400000 0.775002 -4.224998 +v -4.196651 0.787500 -5.000000 +v -4.187500 0.796651 -5.000000 +v -4.175003 0.800000 -5.000000 +v -3.424997 0.800000 -5.000000 +v -3.412498 0.796651 -5.000000 +v -3.403349 0.787500 -5.000000 +v -3.400000 0.775002 -5.000000 +v -3.403349 0.012498 -5.000000 +v -3.412498 0.003348 -5.000000 +v -3.424997 0.000000 -5.000000 +v -3.400000 0.024997 -5.000000 +v -4.194771 0.014195 -4.214195 +v -4.185802 0.005228 -4.214195 +v -4.185802 0.014195 -4.205227 +v -3.414196 0.005228 -4.214195 +v -3.405230 0.014195 -4.214195 +v -3.414196 0.014195 -4.205227 +v -4.185802 0.794771 -4.214195 +v -4.194771 0.785803 -4.214195 +v -4.185802 0.785803 -4.205227 +v -3.405230 0.785803 -4.214195 +v -3.414196 0.794771 -4.214195 +v -3.414196 0.785803 -4.205227 +v 4.987503 0.396651 -5.000000 +v 4.996651 0.387501 -5.000000 +v 5.000000 0.375002 -5.000000 +v 4.975002 0.400000 -5.000000 +v 4.603348 0.387501 -5.000000 +v 4.612499 0.396651 -5.000000 +v 4.625000 0.400000 -5.000000 +v 4.599998 0.375002 -5.000000 +v 4.612499 0.003349 -5.000000 +v 4.603348 0.012499 -5.000000 +v 4.599998 0.024998 -5.000000 +v 4.625000 0.000000 -5.000000 +v 4.625000 0.387501 -4.603348 +v 4.625000 0.396651 -4.612499 +v 4.625000 0.400000 -4.624996 +v 4.612499 0.396651 -4.624996 +v 4.603348 0.387501 -4.624996 +v 4.599998 0.375002 -4.624996 +v 4.603348 0.375002 -4.612499 +v 4.612499 0.375002 -4.603348 +v 4.625000 0.375002 -4.599998 +v 4.625000 0.003349 -4.612499 +v 4.625000 0.012499 -4.603348 +v 4.625000 0.024998 -4.599998 +v 4.612499 0.024998 -4.603348 +v 4.603348 0.024998 -4.612499 +v 4.599998 0.024998 -4.624996 +v 4.603348 0.012499 -4.624996 +v 4.612499 0.003349 -4.624996 +v 4.625000 0.000000 -4.624996 +v 4.996651 0.387501 -4.624996 +v 4.987503 0.396651 -4.624996 +v 4.975002 0.400000 -4.624996 +v 4.975002 0.396651 -4.612499 +v 4.975002 0.387501 -4.603348 +v 4.975002 0.375002 -4.599998 +v 4.987503 0.375002 -4.603348 +v 4.996651 0.375002 -4.612499 +v 5.000000 0.375002 -4.624996 +v 4.987503 0.003349 -4.624996 +v 4.996651 0.012499 -4.624996 +v 5.000000 0.024998 -4.624996 +v 4.996651 0.024998 -4.612499 +v 4.987503 0.024998 -4.603348 +v 4.975002 0.024998 -4.599998 +v 4.975002 0.012499 -4.603348 +v 4.975002 0.003349 -4.612499 +v 4.975002 0.000000 -4.624996 +v 4.614197 0.385804 -4.605228 +v 4.614197 0.394771 -4.614197 +v 4.605228 0.385804 -4.614197 +v 4.614197 0.005229 -4.614197 +v 4.614197 0.014196 -4.605228 +v 4.605228 0.014196 -4.614197 +v 4.994774 0.385804 -4.614197 +v 4.985806 0.394771 -4.614197 +v 4.985806 0.385804 -4.605228 +v 4.985806 0.005229 -4.614197 +v 4.994774 0.014196 -4.614197 +v 4.985806 0.014196 -4.605228 +v -1.799999 4.424999 -5.000000 +v -1.803349 4.412498 -5.000000 +v -1.812498 4.403347 -5.000000 +v -1.824997 4.400002 -5.000000 +v -1.824997 4.799999 -5.000000 +v -1.812498 4.796650 -5.000000 +v -1.803349 4.787502 -5.000000 +v -1.799999 4.775002 -5.000000 +v -1.824997 4.412498 -4.603348 +v -1.824997 4.403347 -4.612499 +v -1.824997 4.400002 -4.625000 +v -1.812498 4.403347 -4.625000 +v -1.803349 4.412498 -4.625000 +v -1.799999 4.424999 -4.625000 +v -1.803349 4.424999 -4.612499 +v -1.812498 4.424999 -4.603348 +v -1.824997 4.424999 -4.599998 +v -1.824997 4.796650 -4.612499 +v -1.824997 4.787502 -4.603348 +v -1.824997 4.775002 -4.599998 +v -1.812498 4.775002 -4.603348 +v -1.803349 4.775002 -4.612499 +v -1.799999 4.775002 -4.625000 +v -1.803349 4.787502 -4.625000 +v -1.812498 4.796650 -4.625000 +v -1.824997 4.799999 -4.625000 +v -2.196651 4.412498 -4.625000 +v -2.187502 4.403347 -4.625000 +v -2.175003 4.400002 -4.625000 +v -2.175003 4.403347 -4.612499 +v -2.175003 4.412498 -4.603348 +v -2.175003 4.424999 -4.599998 +v -2.187502 4.424999 -4.603348 +v -2.196651 4.424999 -4.612499 +v -2.200001 4.424999 -4.625000 +v -2.187502 4.796650 -4.625000 +v -2.196651 4.787502 -4.625000 +v -2.200001 4.775002 -4.625000 +v -2.196651 4.775002 -4.612499 +v -2.187502 4.775002 -4.603348 +v -2.175003 4.775002 -4.599998 +v -2.175003 4.787502 -4.603348 +v -2.175003 4.796650 -4.612499 +v -2.175003 4.799999 -4.625000 +v -2.175003 4.400002 -5.000000 +v -2.187502 4.403347 -5.000000 +v -2.196651 4.412498 -5.000000 +v -2.200001 4.424999 -5.000000 +v -2.200001 4.775002 -5.000000 +v -2.196651 4.787502 -5.000000 +v -2.187502 4.796650 -5.000000 +v -2.175003 4.799999 -5.000000 +v -1.814196 4.414196 -4.605228 +v -1.814196 4.405228 -4.614197 +v -1.805229 4.414196 -4.614197 +v -1.814196 4.794773 -4.614197 +v -1.814196 4.785805 -4.605228 +v -1.805229 4.785805 -4.614197 +v -2.194771 4.414196 -4.614197 +v -2.185804 4.405228 -4.614197 +v -2.185804 4.414196 -4.605228 +v -2.185804 4.794773 -4.614197 +v -2.194771 4.785805 -4.614197 +v -2.185804 4.785805 -4.605228 +v -1.375002 2.400000 -5.000000 +v -1.387501 2.403349 -5.000000 +v -1.396651 2.412498 -5.000000 +v -1.400000 2.424997 -5.000000 +v -0.600000 2.424997 -5.000000 +v -0.603349 2.412498 -5.000000 +v -0.612499 2.403349 -5.000000 +v -0.624998 2.400000 -5.000000 +v -1.387501 2.424997 -4.203350 +v -1.396651 2.424997 -4.212502 +v -1.400000 2.424997 -4.224998 +v -1.396651 2.412498 -4.224998 +v -1.387501 2.403349 -4.224998 +v -1.375002 2.400000 -4.224998 +v -1.375002 2.403349 -4.212502 +v -1.375002 2.412498 -4.203350 +v -1.375002 2.424997 -4.200001 +v -0.603349 2.424997 -4.212502 +v -0.612499 2.424997 -4.203350 +v -0.624998 2.424997 -4.200001 +v -0.624998 2.412498 -4.203350 +v -0.624998 2.403349 -4.212502 +v -0.624998 2.400000 -4.224998 +v -0.612499 2.403349 -4.224998 +v -0.603349 2.412498 -4.224998 +v -0.600000 2.424997 -4.224998 +v -1.387501 3.196651 -4.224998 +v -1.396651 3.187502 -4.224998 +v -1.400000 3.175003 -4.224998 +v -1.396651 3.175003 -4.212502 +v -1.387501 3.175003 -4.203350 +v -1.375002 3.175003 -4.200001 +v -1.375002 3.187502 -4.203350 +v -1.375002 3.196651 -4.212502 +v -1.375002 3.200001 -4.224998 +v -0.603349 3.187502 -4.224998 +v -0.612499 3.196651 -4.224998 +v -0.624998 3.200001 -4.224998 +v -0.624998 3.196651 -4.212502 +v -0.624998 3.187502 -4.203350 +v -0.624998 3.175003 -4.200001 +v -0.612499 3.175003 -4.203350 +v -0.603349 3.175003 -4.212502 +v -0.600000 3.175003 -4.224998 +v -1.400000 3.175003 -5.000000 +v -1.396651 3.187502 -5.000000 +v -1.387501 3.196651 -5.000000 +v -1.375002 3.200001 -5.000000 +v -0.624998 3.200001 -5.000000 +v -0.612499 3.196651 -5.000000 +v -0.603349 3.187502 -5.000000 +v -0.600000 3.175003 -5.000000 +v -1.385803 2.414196 -4.205231 +v -1.394772 2.414196 -4.214195 +v -1.385803 2.405230 -4.214195 +v -0.605229 2.414196 -4.214195 +v -0.614196 2.414196 -4.205231 +v -0.614196 2.405230 -4.214195 +v -1.385803 3.194771 -4.214195 +v -1.394772 3.185804 -4.214195 +v -1.385803 3.185804 -4.205231 +v -0.605229 3.185804 -4.214195 +v -0.614196 3.194771 -4.214195 +v -0.614196 3.185804 -4.205231 +v -1.375002 1.600000 -5.000000 +v -1.387501 1.603349 -5.000000 +v -1.396651 1.612499 -5.000000 +v -1.400000 1.624998 -5.000000 +v -0.600000 1.624998 -5.000000 +v -0.603349 1.612499 -5.000000 +v -0.612499 1.603349 -5.000000 +v -0.624998 1.600000 -5.000000 +v -1.387501 1.624998 -4.203350 +v -1.396651 1.624998 -4.212502 +v -1.400000 1.624998 -4.224998 +v -1.396651 1.612499 -4.224998 +v -1.387501 1.603349 -4.224998 +v -1.375002 1.600000 -4.224998 +v -1.375002 1.603349 -4.212502 +v -1.375002 1.612499 -4.203350 +v -1.375002 1.624998 -4.200001 +v -0.603349 1.624998 -4.212502 +v -0.612499 1.624998 -4.203350 +v -0.624998 1.624998 -4.200001 +v -0.624998 1.612499 -4.203350 +v -0.624998 1.603349 -4.212502 +v -0.624998 1.600000 -4.224998 +v -0.612499 1.603349 -4.224998 +v -0.603349 1.612499 -4.224998 +v -0.600000 1.624998 -4.224998 +v -1.387501 2.396650 -4.224998 +v -1.396651 2.387501 -4.224998 +v -1.400000 2.375002 -4.224998 +v -1.396651 2.375002 -4.212502 +v -1.387501 2.375002 -4.203350 +v -1.375002 2.375002 -4.200001 +v -1.375002 2.387501 -4.203350 +v -1.375002 2.396650 -4.212502 +v -0.603349 2.387501 -4.224998 +v -0.612499 2.396650 -4.224998 +v -0.624998 2.396650 -4.212502 +v -0.624998 2.387501 -4.203350 +v -0.624998 2.375002 -4.200001 +v -0.612499 2.375002 -4.203350 +v -0.603349 2.375002 -4.212502 +v -0.600000 2.375002 -4.224998 +v -1.400000 2.375002 -5.000000 +v -1.396651 2.387501 -5.000000 +v -1.387501 2.396650 -5.000000 +v -0.612499 2.396650 -5.000000 +v -0.603349 2.387501 -5.000000 +v -0.600000 2.375002 -5.000000 +v -1.385803 1.614197 -4.205231 +v -1.394772 1.614197 -4.214195 +v -1.385803 1.605228 -4.214195 +v -0.605229 1.614197 -4.214195 +v -0.614196 1.614197 -4.205231 +v -0.614196 1.605228 -4.214195 +v -1.385803 2.394772 -4.214195 +v -1.394772 2.385803 -4.214195 +v -1.385803 2.385803 -4.205231 +v -0.605229 2.385803 -4.214195 +v -0.614196 2.394772 -4.214195 +v -0.614196 2.385803 -4.205231 +v 0.224998 1.600000 -5.000000 +v 0.212499 1.603349 -5.000000 +v 0.203349 1.612499 -5.000000 +v 0.200000 1.624998 -5.000000 +v 1.000000 1.624998 -5.000000 +v 0.996651 1.612499 -5.000000 +v 0.987501 1.603349 -5.000000 +v 0.975002 1.600000 -5.000000 +v 0.212499 1.624998 -4.203350 +v 0.203349 1.624998 -4.212502 +v 0.200000 1.624998 -4.224998 +v 0.203349 1.612499 -4.224998 +v 0.212499 1.603349 -4.224998 +v 0.224998 1.600000 -4.224998 +v 0.224998 1.603349 -4.212502 +v 0.224998 1.612499 -4.203350 +v 0.224998 1.624998 -4.200001 +v 0.996651 1.624998 -4.212502 +v 0.987501 1.624998 -4.203350 +v 0.975002 1.624998 -4.200001 +v 0.975002 1.612499 -4.203350 +v 0.975002 1.603349 -4.212502 +v 0.975002 1.600000 -4.224998 +v 0.987501 1.603349 -4.224998 +v 0.996651 1.612499 -4.224998 +v 1.000000 1.624998 -4.224998 +v 0.212499 2.396650 -4.224998 +v 0.203349 2.387501 -4.224998 +v 0.200000 2.375002 -4.224998 +v 0.203349 2.375002 -4.212502 +v 0.212499 2.375002 -4.203350 +v 0.224998 2.375002 -4.200001 +v 0.224998 2.387501 -4.203350 +v 0.224998 2.396650 -4.212502 +v 0.224998 2.400000 -4.224998 +v 0.996651 2.387501 -4.224998 +v 0.987501 2.396650 -4.224998 +v 0.975002 2.400000 -4.224998 +v 0.975002 2.396650 -4.212502 +v 0.975002 2.387501 -4.203350 +v 0.975002 2.375002 -4.200001 +v 0.987501 2.375002 -4.203350 +v 0.996651 2.375002 -4.212502 +v 1.000000 2.375002 -4.224998 +v 0.200000 2.375002 -5.000000 +v 0.203349 2.387501 -5.000000 +v 0.212499 2.396650 -5.000000 +v 0.224998 2.400000 -5.000000 +v 0.975002 2.400000 -5.000000 +v 0.987501 2.396650 -5.000000 +v 0.996651 2.387501 -5.000000 +v 1.000000 2.375002 -5.000000 +v 0.214196 1.614197 -4.205231 +v 0.205229 1.614197 -4.214195 +v 0.214196 1.605228 -4.214195 +v 0.994771 1.614197 -4.214195 +v 0.985804 1.614197 -4.205231 +v 0.985804 1.605228 -4.214195 +v 0.214196 2.394772 -4.214195 +v 0.205229 2.385803 -4.214195 +v 0.214196 2.385803 -4.205231 +v 0.994771 2.385803 -4.214195 +v 0.985804 2.394772 -4.214195 +v 0.985804 2.385803 -4.205231 +v -0.575002 1.600000 -5.000000 +v -0.587501 1.603349 -5.000000 +v -0.596651 1.612499 -5.000000 +v 0.196651 1.612499 -5.000000 +v 0.187501 1.603349 -5.000000 +v 0.175002 1.600000 -5.000000 +v -0.587501 1.624998 -4.203350 +v -0.596651 1.624998 -4.212502 +v -0.596651 1.612499 -4.224998 +v -0.587501 1.603349 -4.224998 +v -0.575002 1.600000 -4.224998 +v -0.575002 1.603349 -4.212502 +v -0.575002 1.612499 -4.203350 +v -0.575002 1.624998 -4.200001 +v 0.196651 1.624998 -4.212502 +v 0.187501 1.624998 -4.203350 +v 0.175002 1.624998 -4.200001 +v 0.175002 1.612499 -4.203350 +v 0.175002 1.603349 -4.212502 +v 0.175002 1.600000 -4.224998 +v 0.187501 1.603349 -4.224998 +v 0.196651 1.612499 -4.224998 +v -0.587501 2.396650 -4.224998 +v -0.596651 2.387501 -4.224998 +v -0.596651 2.375002 -4.212502 +v -0.587501 2.375002 -4.203350 +v -0.575002 2.375002 -4.200001 +v -0.575002 2.387501 -4.203350 +v -0.575002 2.396650 -4.212502 +v -0.575002 2.400000 -4.224998 +v 0.196651 2.387501 -4.224998 +v 0.187501 2.396650 -4.224998 +v 0.175002 2.400000 -4.224998 +v 0.175002 2.396650 -4.212502 +v 0.175002 2.387501 -4.203350 +v 0.175002 2.375002 -4.200001 +v 0.187501 2.375002 -4.203350 +v 0.196651 2.375002 -4.212502 +v -0.596651 2.387501 -5.000000 +v -0.587501 2.396650 -5.000000 +v -0.575002 2.400000 -5.000000 +v 0.175002 2.400000 -5.000000 +v 0.187501 2.396650 -5.000000 +v 0.196651 2.387501 -5.000000 +v -0.585804 1.614197 -4.205231 +v -0.594771 1.614197 -4.214195 +v -0.585804 1.605228 -4.214195 +v 0.194771 1.614197 -4.214195 +v 0.185804 1.614197 -4.205231 +v 0.185804 1.605228 -4.214195 +v -0.585804 2.394772 -4.214195 +v -0.594771 2.385803 -4.214195 +v -0.585804 2.385803 -4.205231 +v 0.194771 2.385803 -4.214195 +v 0.185804 2.394772 -4.214195 +v 0.185804 2.385803 -4.205231 +v 0.224998 0.800000 -4.999996 +v 0.212499 0.803349 -5.000000 +v 0.203349 0.812499 -5.000000 +v 0.200000 0.824998 -5.000000 +v 0.212499 0.824998 -4.203350 +v 0.203349 0.824998 -4.212502 +v 0.200000 0.824998 -4.224998 +v 0.203349 0.812499 -4.224998 +v 0.212499 0.803349 -4.224998 +v 0.224998 0.800000 -4.224998 +v 0.224998 0.803349 -4.212502 +v 0.224998 0.812499 -4.203350 +v 0.224998 0.824998 -4.200001 +v 0.996651 0.824998 -4.212502 +v 0.987501 0.824998 -4.203350 +v 0.975002 0.824998 -4.200001 +v 0.975002 0.812499 -4.203350 +v 0.975002 0.803349 -4.212502 +v 0.975002 0.800000 -4.224998 +v 0.987501 0.803349 -4.224998 +v 0.996651 0.812499 -4.224998 +v 1.000000 0.824998 -4.224998 +v 0.212499 1.596651 -4.224998 +v 0.203349 1.587502 -4.224998 +v 0.200000 1.575003 -4.224998 +v 0.203349 1.575003 -4.212502 +v 0.212499 1.575003 -4.203350 +v 0.224998 1.575003 -4.200001 +v 0.224998 1.587502 -4.203350 +v 0.224998 1.596651 -4.212502 +v 0.996651 1.587502 -4.224998 +v 0.987501 1.596651 -4.224998 +v 0.975002 1.596651 -4.212502 +v 0.975002 1.587502 -4.203350 +v 0.975002 1.575003 -4.200001 +v 0.987501 1.575003 -4.203350 +v 0.996651 1.575003 -4.212502 +v 1.000000 1.575003 -4.224998 +v 0.200000 1.575003 -5.000000 +v 0.203349 1.587502 -5.000000 +v 0.212499 1.596651 -5.000000 +v 0.987501 1.596651 -5.000000 +v 0.996651 1.587502 -5.000000 +v 1.000000 1.575003 -5.000000 +v 0.214196 0.814197 -4.205231 +v 0.205229 0.814197 -4.214195 +v 0.214196 0.805229 -4.214195 +v 0.994771 0.814197 -4.214195 +v 0.985804 0.814197 -4.205231 +v 0.985804 0.805229 -4.214195 +v 0.214196 1.594771 -4.214195 +v 0.205229 1.585804 -4.214195 +v 0.214196 1.585804 -4.205231 +v 0.994771 1.585804 -4.214195 +v 0.985804 1.594771 -4.214195 +v 0.985804 1.585804 -4.205231 +v 1.799999 0.824998 -5.000000 +v 1.796652 0.812499 -5.000000 +v 1.787500 0.803349 -5.000000 +v 1.775002 0.800000 -4.999996 +v 1.012499 0.824998 -4.203350 +v 1.003349 0.824998 -4.212502 +v 1.003349 0.812499 -4.224998 +v 1.012499 0.803349 -4.224998 +v 1.024998 0.800000 -4.224998 +v 1.024998 0.803349 -4.212502 +v 1.024998 0.812499 -4.203350 +v 1.024998 0.824998 -4.200001 +v 1.796652 0.824998 -4.212502 +v 1.787500 0.824998 -4.203350 +v 1.775002 0.824998 -4.200001 +v 1.775002 0.812499 -4.203350 +v 1.775002 0.803349 -4.212502 +v 1.775002 0.800000 -4.224998 +v 1.787500 0.803349 -4.224998 +v 1.796652 0.812499 -4.224998 +v 1.799999 0.824998 -4.224998 +v 1.012499 1.596651 -4.224998 +v 1.003349 1.587502 -4.224998 +v 1.003349 1.575003 -4.212502 +v 1.012499 1.575003 -4.203350 +v 1.024998 1.575003 -4.200001 +v 1.024998 1.587502 -4.203350 +v 1.024998 1.596651 -4.212502 +v 1.024998 1.600000 -4.224998 +v 1.796652 1.587502 -4.224998 +v 1.787500 1.596651 -4.224998 +v 1.775002 1.600000 -4.224998 +v 1.775002 1.596651 -4.212502 +v 1.775002 1.587502 -4.203350 +v 1.775002 1.575003 -4.200001 +v 1.787500 1.575003 -4.203350 +v 1.796652 1.575003 -4.212502 +v 1.799999 1.575003 -4.224998 +v 1.003349 1.587502 -5.000000 +v 1.012499 1.596651 -5.000000 +v 1.024998 1.600000 -5.000000 +v 1.775002 1.600000 -5.000000 +v 1.787500 1.596651 -5.000000 +v 1.796652 1.587502 -5.000000 +v 1.799999 1.575003 -5.000000 +v 1.014196 0.814197 -4.205231 +v 1.005229 0.814197 -4.214195 +v 1.014196 0.805229 -4.214195 +v 1.794771 0.814197 -4.214195 +v 1.785803 0.814197 -4.205231 +v 1.785803 0.805229 -4.214195 +v 1.014196 1.594771 -4.214195 +v 1.005229 1.585804 -4.214195 +v 1.014196 1.585804 -4.205231 +v 1.794771 1.585804 -4.214195 +v 1.785803 1.594771 -4.214195 +v 1.785803 1.585804 -4.205231 +v 0.996651 0.812499 -4.999992 +v 1.000000 0.824998 -4.999992 +v 0.975002 0.800000 -4.999992 +v 0.987501 0.803349 -4.999992 +v 1.003349 0.812499 -4.999992 +v 1.012499 0.803349 -4.999992 +v 1.024998 0.800000 -4.999992 +v -4.975002 1.199999 -4.200001 +v -4.987503 1.199999 -4.203350 +v -4.996651 1.199999 -4.212498 +v -5.000000 1.199999 -4.224998 +v -4.600002 1.199999 -4.200001 +v -4.600002 1.575002 -4.200001 +v -4.600002 1.587500 -4.203350 +v -4.600002 1.596651 -4.212498 +v -4.600002 1.600000 -4.224998 +v -4.600002 1.600000 -5.000000 +v -5.000000 4.775002 -1.400000 +v -5.000000 4.787502 -1.403349 +v -5.000000 4.796650 -1.412498 +v -5.000000 4.799999 -1.424997 +v -5.000000 4.400002 -1.424997 +v -5.000000 4.403347 -1.412498 +v -5.000000 4.412498 -1.403349 +v -5.000000 4.424999 -1.400000 +v -4.603348 4.787502 -1.424997 +v -4.612499 4.796650 -1.424997 +v -4.625000 4.799999 -1.424997 +v -4.625000 4.796650 -1.412498 +v -4.625000 4.787502 -1.403349 +v -4.625000 4.775002 -1.400000 +v -4.612499 4.775002 -1.403349 +v -4.603348 4.775002 -1.412498 +v -4.599998 4.775002 -1.424997 +v -4.612499 4.403347 -1.424997 +v -4.603348 4.412498 -1.424997 +v -4.599998 4.424999 -1.424997 +v -4.603348 4.424999 -1.412498 +v -4.612499 4.424999 -1.403349 +v -4.625000 4.424999 -1.400000 +v -4.625000 4.412498 -1.403349 +v -4.625000 4.403347 -1.412498 +v -4.625000 4.400002 -1.424997 +v -4.625000 4.787502 -1.796652 +v -4.625000 4.796650 -1.787500 +v -4.625000 4.799999 -1.775002 +v -4.612499 4.796650 -1.775002 +v -4.603348 4.787502 -1.775002 +v -4.599998 4.775002 -1.775002 +v -4.603348 4.775002 -1.787500 +v -4.612499 4.775002 -1.796652 +v -4.625000 4.775002 -1.799999 +v -4.625000 4.403347 -1.787500 +v -4.625000 4.412498 -1.796652 +v -4.625000 4.424999 -1.799999 +v -4.612499 4.424999 -1.796652 +v -4.603348 4.424999 -1.787500 +v -4.599998 4.424999 -1.775002 +v -4.603348 4.412498 -1.775002 +v -4.612499 4.403347 -1.775002 +v -4.625000 4.400002 -1.775002 +v -5.000000 4.799999 -1.775002 +v -5.000000 4.796650 -1.787500 +v -5.000000 4.787502 -1.796652 +v -5.000000 4.775002 -1.799999 +v -5.000000 4.424999 -1.799999 +v -5.000000 4.412498 -1.796652 +v -5.000000 4.403347 -1.787500 +v -5.000000 4.400002 -1.775002 +v -4.605228 4.785805 -1.414196 +v -4.614197 4.794773 -1.414196 +v -4.614197 4.785805 -1.405229 +v -4.614197 4.405228 -1.414196 +v -4.605228 4.414196 -1.414196 +v -4.614197 4.414196 -1.405229 +v -4.614197 4.785805 -1.794771 +v -4.614197 4.794773 -1.785803 +v -4.605228 4.785805 -1.785803 +v -4.614197 4.405228 -1.785803 +v -4.614197 4.414196 -1.794771 +v -4.605228 4.414196 -1.785803 +v -5.000000 3.175003 0.200000 +v -5.000000 3.187502 0.196651 +v -5.000000 3.196651 0.187501 +v -5.000000 3.200001 0.175002 +v -5.000000 2.400000 0.175002 +v -5.000000 2.403349 0.187501 +v -5.000000 2.412498 0.196651 +v -5.000000 2.424997 0.200000 +v -4.203350 3.187502 0.175002 +v -4.212502 3.196651 0.175002 +v -4.224998 3.200001 0.175002 +v -4.224998 3.196651 0.187501 +v -4.224998 3.187502 0.196651 +v -4.224998 3.175003 0.200000 +v -4.212502 3.175003 0.196651 +v -4.203350 3.175003 0.187501 +v -4.200001 3.175003 0.175002 +v -4.212502 2.403349 0.175002 +v -4.203350 2.412498 0.175002 +v -4.200001 2.424997 0.175002 +v -4.203350 2.424997 0.187501 +v -4.212502 2.424997 0.196651 +v -4.224998 2.424997 0.200000 +v -4.224998 2.412498 0.196651 +v -4.224998 2.403349 0.187501 +v -4.224998 2.400000 0.175002 +v -4.224998 3.187502 -0.596651 +v -4.224998 3.196651 -0.587501 +v -4.224998 3.200001 -0.575002 +v -4.212502 3.196651 -0.575002 +v -4.203350 3.187502 -0.575002 +v -4.200001 3.175003 -0.575002 +v -4.203350 3.175003 -0.587501 +v -4.212502 3.175003 -0.596651 +v -4.224998 3.175001 -0.600000 +v -4.224998 2.403349 -0.587501 +v -4.224998 2.412498 -0.596651 +v -4.224998 2.424997 -0.600000 +v -4.212502 2.424997 -0.596651 +v -4.203350 2.424997 -0.587501 +v -4.200001 2.424997 -0.575002 +v -4.203350 2.412498 -0.575002 +v -4.212502 2.403349 -0.575002 +v -4.224998 2.400000 -0.575002 +v -5.000000 3.200001 -0.575002 +v -5.000000 3.196651 -0.587501 +v -5.000000 3.187502 -0.596651 +v -5.000000 3.175001 -0.600000 +v -5.000000 2.424997 -0.600000 +v -5.000000 2.412498 -0.596651 +v -5.000000 2.403349 -0.587501 +v -5.000000 2.400000 -0.575002 +v -4.205231 3.185804 0.185804 +v -4.214195 3.194771 0.185804 +v -4.214195 3.185804 0.194771 +v -4.214195 2.405230 0.185804 +v -4.205231 2.414196 0.185804 +v -4.214195 2.414196 0.194771 +v -4.214195 3.185804 -0.594771 +v -4.214195 3.194771 -0.585804 +v -4.205231 3.185804 -0.585804 +v -4.214195 2.405230 -0.585804 +v -4.214195 2.414196 -0.594771 +v -4.205231 2.414196 -0.585804 +v -5.000000 2.375002 -0.600000 +v -5.000000 2.387501 -0.603349 +v -5.000000 2.396650 -0.612499 +v -5.000000 2.400000 -0.624998 +v -5.000000 1.600000 -0.624998 +v -5.000000 1.603349 -0.612499 +v -5.000000 1.612499 -0.603349 +v -5.000000 1.624998 -0.600000 +v -4.203350 2.387501 -0.624998 +v -4.212502 2.396650 -0.624998 +v -4.224998 2.400000 -0.624998 +v -4.224998 2.396650 -0.612499 +v -4.224998 2.387501 -0.603349 +v -4.224998 2.375002 -0.600000 +v -4.212502 2.375002 -0.603349 +v -4.203350 2.375002 -0.612499 +v -4.200001 2.375002 -0.624998 +v -4.212502 1.603349 -0.624998 +v -4.203350 1.612499 -0.624998 +v -4.200001 1.624998 -0.624998 +v -4.203350 1.624998 -0.612499 +v -4.212502 1.624998 -0.603349 +v -4.224998 1.624998 -0.600000 +v -4.224998 1.612499 -0.603349 +v -4.224998 1.603349 -0.612499 +v -4.224998 1.600000 -0.624998 +v -4.224998 2.387501 -1.396651 +v -4.224998 2.396650 -1.387501 +v -4.224998 2.400000 -1.375002 +v -4.212502 2.396650 -1.375002 +v -4.203350 2.387501 -1.375002 +v -4.200001 2.375002 -1.375002 +v -4.203350 2.375002 -1.387501 +v -4.212502 2.375002 -1.396651 +v -4.224998 2.375002 -1.400000 +v -4.224998 1.603349 -1.387501 +v -4.224998 1.612499 -1.396651 +v -4.224998 1.624997 -1.400000 +v -4.212502 1.624998 -1.396651 +v -4.203350 1.624998 -1.387501 +v -4.200001 1.624998 -1.375002 +v -4.203350 1.612499 -1.375002 +v -4.212502 1.603349 -1.375002 +v -4.224998 1.600000 -1.375002 +v -5.000000 2.400000 -1.375002 +v -5.000000 2.396650 -1.387501 +v -5.000000 2.387501 -1.396651 +v -5.000000 2.375002 -1.400000 +v -5.000000 1.624997 -1.400000 +v -5.000000 1.612499 -1.396651 +v -5.000000 1.603349 -1.387501 +v -5.000000 1.600000 -1.375002 +v -4.205231 2.385803 -0.614196 +v -4.214195 2.394772 -0.614196 +v -4.214195 2.385803 -0.605229 +v -4.214195 1.605228 -0.614196 +v -4.205231 1.614197 -0.614196 +v -4.214195 1.614197 -0.605229 +v -4.214195 2.385803 -1.394772 +v -4.214195 2.394772 -1.385803 +v -4.205231 2.385803 -1.385803 +v -4.214195 1.605228 -1.385803 +v -4.214195 1.614197 -1.394772 +v -4.205231 1.614197 -1.385803 +v -5.000000 2.403347 -0.612499 +v -5.000000 2.412498 -0.603349 +v -4.212498 2.403347 -0.624998 +v -4.203350 2.412498 -0.624998 +v -4.200001 2.424997 -0.624998 +v -4.203350 2.424997 -0.612499 +v -4.212498 2.424997 -0.603349 +v -4.224998 2.412498 -0.603349 +v -4.224998 2.403347 -0.612499 +v -5.000000 3.187500 -0.603349 +v -5.000000 3.196651 -0.612499 +v -5.000000 3.200001 -0.624998 +v -4.203350 3.187500 -0.624998 +v -4.212498 3.196651 -0.624998 +v -4.224998 3.200001 -0.624998 +v -4.224998 3.196651 -0.612499 +v -4.224998 3.187500 -0.603349 +v -4.212498 3.175001 -0.603349 +v -4.203350 3.175001 -0.612499 +v -4.200001 3.175001 -0.624998 +v -5.000000 3.200001 -1.375002 +v -5.000000 3.196651 -1.387501 +v -5.000000 3.187500 -1.396651 +v -5.000000 3.175001 -1.400000 +v -4.203350 3.175001 -1.387501 +v -4.212498 3.175001 -1.396651 +v -4.224998 3.175001 -1.400000 +v -4.224998 3.187500 -1.396651 +v -4.224998 3.196651 -1.387501 +v -4.224998 3.200001 -1.375002 +v -4.212498 3.196651 -1.375002 +v -4.203350 3.187500 -1.375002 +v -4.200001 3.175001 -1.375002 +v -5.000000 2.424997 -1.400000 +v -5.000000 2.412498 -1.396651 +v -5.000000 2.403347 -1.387501 +v -4.203350 2.412498 -1.375002 +v -4.212498 2.403347 -1.375002 +v -4.224998 2.403347 -1.387501 +v -4.224998 2.412498 -1.396651 +v -4.224998 2.424997 -1.400000 +v -4.212498 2.424997 -1.396651 +v -4.203350 2.424997 -1.387501 +v -4.200001 2.424997 -1.375002 +v -4.214195 2.405228 -0.614196 +v -4.205227 2.414196 -0.614196 +v -4.214195 2.414196 -0.605229 +v -4.205227 3.185802 -0.614196 +v -4.214195 3.194771 -0.614196 +v -4.214195 3.185802 -0.605229 +v -4.205227 3.185802 -1.385803 +v -4.214195 3.185802 -1.394772 +v -4.214195 3.194771 -1.385803 +v -4.205227 2.414196 -1.385803 +v -4.214195 2.405228 -1.385803 +v -4.214195 2.414196 -1.394772 +v -5.000000 1.600000 -1.424997 +v -5.000000 1.603348 -1.412498 +v -5.000000 1.612498 -1.403349 +v -4.212498 1.603348 -1.424997 +v -4.203350 1.612498 -1.424997 +v -4.200001 1.624997 -1.424997 +v -4.203350 1.624997 -1.412498 +v -4.212498 1.624997 -1.403349 +v -4.224998 1.612498 -1.403349 +v -4.224998 1.603348 -1.412498 +v -4.224998 1.600000 -1.424997 +v -5.000000 2.387501 -1.403349 +v -5.000000 2.396650 -1.412498 +v -5.000000 2.400000 -1.424997 +v -4.203350 2.387501 -1.424997 +v -4.212498 2.396650 -1.424997 +v -4.224998 2.400000 -1.424997 +v -4.224998 2.396650 -1.412498 +v -4.224998 2.387501 -1.403349 +v -4.212498 2.375002 -1.403349 +v -4.203350 2.375002 -1.412498 +v -4.200001 2.375002 -1.424997 +v -5.000000 2.400000 -2.175003 +v -5.000000 2.396650 -2.187502 +v -5.000000 2.387501 -2.196651 +v -5.000000 2.375002 -2.200001 +v -4.203350 2.375002 -2.187502 +v -4.212498 2.375002 -2.196651 +v -4.224998 2.375002 -2.200001 +v -4.224998 2.387501 -2.196651 +v -4.224998 2.396650 -2.187502 +v -4.224998 2.400000 -2.175003 +v -4.212498 2.396650 -2.175003 +v -4.203350 2.387501 -2.175003 +v -4.200001 2.375002 -2.175003 +v -5.000000 1.624997 -2.200001 +v -5.000000 1.612498 -2.196651 +v -5.000000 1.603348 -2.187502 +v -5.000000 1.600000 -2.175003 +v -4.203350 1.612498 -2.175003 +v -4.212498 1.603348 -2.175003 +v -4.224998 1.600000 -2.175003 +v -4.224998 1.603348 -2.187502 +v -4.224998 1.612498 -2.196651 +v -4.224998 1.624997 -2.200001 +v -4.212498 1.624997 -2.196651 +v -4.203350 1.624997 -2.187502 +v -4.200001 1.624997 -2.175003 +v -4.214195 1.605227 -1.414196 +v -4.205227 1.614195 -1.414196 +v -4.214195 1.614195 -1.405229 +v -4.205227 2.385803 -1.414196 +v -4.214195 2.394772 -1.414196 +v -4.214195 2.385803 -1.405229 +v -4.205227 2.385803 -2.185804 +v -4.214195 2.385803 -2.194771 +v -4.214195 2.394772 -2.185804 +v -4.205227 1.614195 -2.185804 +v -4.214195 1.605227 -2.185804 +v -4.214195 1.614195 -2.194771 +v -5.000000 1.575003 -1.400000 +v -5.000000 1.587502 -1.403349 +v -5.000000 1.596651 -1.412498 +v -5.000000 0.800000 -1.424997 +v -5.000000 0.803349 -1.412498 +v -5.000000 0.812499 -1.403349 +v -5.000000 0.824998 -1.400000 +v -4.203350 1.587502 -1.424997 +v -4.212502 1.596651 -1.424997 +v -4.224998 1.596651 -1.412498 +v -4.224998 1.587502 -1.403349 +v -4.224998 1.575003 -1.400000 +v -4.212502 1.575003 -1.403349 +v -4.203350 1.575003 -1.412498 +v -4.200001 1.575003 -1.424997 +v -4.212502 0.803349 -1.424997 +v -4.203350 0.812499 -1.424997 +v -4.200001 0.824998 -1.424997 +v -4.203350 0.824998 -1.412498 +v -4.212502 0.824998 -1.403349 +v -4.224998 0.824998 -1.400000 +v -4.224998 0.812499 -1.403349 +v -4.224998 0.803349 -1.412498 +v -4.224998 0.800000 -1.424997 +v -4.224998 1.587502 -2.196651 +v -4.224998 1.596651 -2.187502 +v -4.212502 1.596651 -2.175003 +v -4.203350 1.587502 -2.175003 +v -4.200001 1.575003 -2.175003 +v -4.203350 1.575003 -2.187502 +v -4.212502 1.575003 -2.196651 +v -4.224998 1.575003 -2.200001 +v -4.224998 0.803349 -2.187502 +v -4.224998 0.812499 -2.196651 +v -4.224998 0.824998 -2.200001 +v -4.212502 0.824998 -2.196651 +v -4.203350 0.824998 -2.187502 +v -4.200001 0.824998 -2.175003 +v -4.203350 0.812499 -2.175003 +v -4.212502 0.803349 -2.175003 +v -4.224998 0.800000 -2.175003 +v -5.000000 1.596651 -2.187502 +v -5.000000 1.587502 -2.196651 +v -5.000000 1.575003 -2.200001 +v -5.000000 0.824998 -2.200001 +v -5.000000 0.812499 -2.196651 +v -5.000000 0.803349 -2.187502 +v -5.000000 0.800000 -2.175003 +v -4.205231 1.585804 -1.414196 +v -4.214195 1.594771 -1.414196 +v -4.214195 1.585804 -1.405229 +v -4.214195 0.805229 -1.414196 +v -4.205231 0.814197 -1.414196 +v -4.214195 0.814197 -1.405229 +v -4.214195 1.585804 -2.194771 +v -4.214195 1.594771 -2.185804 +v -4.205231 1.585804 -2.185804 +v -4.214195 0.805229 -2.185804 +v -4.214195 0.814197 -2.194771 +v -4.205231 0.814197 -2.185804 +v -5.000000 5.175003 -2.600000 +v -5.000000 5.187500 -2.603350 +v -5.000000 5.196651 -2.612499 +v -5.000000 5.200001 -2.624998 +v -5.000000 4.400002 -2.624998 +v -5.000000 4.403347 -2.612499 +v -5.000000 4.412498 -2.603350 +v -5.000000 4.424999 -2.600000 +v -4.203350 5.187500 -2.624998 +v -4.212502 5.196651 -2.624998 +v -4.224998 5.200001 -2.624998 +v -4.224998 5.196651 -2.612499 +v -4.224998 5.187500 -2.603350 +v -4.224998 5.175003 -2.600000 +v -4.212502 5.175003 -2.603350 +v -4.203350 5.175003 -2.612499 +v -4.200001 5.175003 -2.624998 +v -4.212502 4.403347 -2.624998 +v -4.203350 4.412498 -2.624998 +v -4.200001 4.424999 -2.624998 +v -4.203350 4.424999 -2.612499 +v -4.212502 4.424999 -2.603350 +v -4.224998 4.424999 -2.600000 +v -4.224998 4.412498 -2.603350 +v -4.224998 4.403347 -2.612499 +v -4.224998 4.400002 -2.624998 +v -4.224998 5.187500 -3.396650 +v -4.224998 5.196651 -3.387501 +v -4.224998 5.200001 -3.375002 +v -4.212502 5.196651 -3.375002 +v -4.203350 5.187500 -3.375002 +v -4.200001 5.175003 -3.375002 +v -4.203350 5.175003 -3.387501 +v -4.212502 5.175003 -3.396650 +v -4.224998 5.175003 -3.400000 +v -4.224998 4.403347 -3.387501 +v -4.224998 4.412498 -3.396650 +v -4.224998 4.424999 -3.400000 +v -4.212502 4.424999 -3.396650 +v -4.203350 4.424999 -3.387501 +v -4.200001 4.424999 -3.375002 +v -4.203350 4.412498 -3.375002 +v -4.212502 4.403347 -3.375002 +v -4.224998 4.400002 -3.375002 +v -5.000000 5.200001 -3.375002 +v -5.000000 5.196651 -3.387501 +v -5.000000 5.187500 -3.396650 +v -5.000000 5.175003 -3.400000 +v -5.000000 4.424999 -3.400000 +v -5.000000 4.412498 -3.396650 +v -5.000000 4.403347 -3.387501 +v -5.000000 4.400002 -3.375002 +v -4.205231 5.185802 -2.614197 +v -4.214195 5.194771 -2.614197 +v -4.214195 5.185802 -2.605228 +v -4.214195 4.405228 -2.614197 +v -4.205231 4.414196 -2.614197 +v -4.214195 4.414196 -2.605228 +v -4.214195 5.185802 -3.394772 +v -4.214195 5.194771 -3.385803 +v -4.205231 5.185802 -3.385803 +v -4.214195 4.405228 -3.385803 +v -4.214195 4.414196 -3.394772 +v -4.205231 4.414196 -3.385803 +v -5.000000 4.375004 -1.799999 +v -5.000000 4.387501 -1.803349 +v -5.000000 4.396652 -1.812498 +v -5.000000 4.400002 -1.824997 +v -5.000000 4.000000 -1.824997 +v -5.000000 4.003349 -1.812498 +v -5.000000 4.012501 -1.803349 +v -5.000000 4.024998 -1.799999 +v -4.603348 4.387501 -1.824997 +v -4.612499 4.396652 -1.824997 +v -4.625000 4.400002 -1.824997 +v -4.625000 4.396652 -1.812498 +v -4.625000 4.387501 -1.803349 +v -4.625000 4.375004 -1.799999 +v -4.612499 4.375004 -1.803349 +v -4.603348 4.375004 -1.812498 +v -4.599998 4.375004 -1.824997 +v -4.612499 4.003349 -1.824997 +v -4.603348 4.012501 -1.824997 +v -4.599998 4.024998 -1.824997 +v -4.603348 4.024998 -1.812498 +v -4.612499 4.024998 -1.803349 +v -4.625000 4.024998 -1.799999 +v -4.625000 4.012501 -1.803349 +v -4.625000 4.003349 -1.812498 +v -4.625000 4.000000 -1.824997 +v -4.625000 4.387501 -2.196651 +v -4.625000 4.396652 -2.187502 +v -4.625000 4.400002 -2.175003 +v -4.612499 4.396652 -2.175003 +v -4.603348 4.387501 -2.175003 +v -4.599998 4.375004 -2.175003 +v -4.603348 4.375004 -2.187502 +v -4.612499 4.375004 -2.196651 +v -4.625000 4.375004 -2.200001 +v -4.625000 4.003349 -2.187502 +v -4.625000 4.012501 -2.196651 +v -4.625000 4.024998 -2.200001 +v -4.612499 4.024998 -2.196651 +v -4.603348 4.024998 -2.187502 +v -4.599998 4.024998 -2.175003 +v -4.603348 4.012501 -2.175003 +v -4.612499 4.003349 -2.175003 +v -4.625000 4.000000 -2.175003 +v -5.000000 4.400002 -2.175003 +v -5.000000 4.396652 -2.187502 +v -5.000000 4.387501 -2.196651 +v -5.000000 4.375004 -2.200001 +v -5.000000 4.024998 -2.200001 +v -5.000000 4.012501 -2.196651 +v -5.000000 4.003349 -2.187502 +v -5.000000 4.000000 -2.175003 +v -4.605228 4.385803 -1.814196 +v -4.614197 4.394772 -1.814196 +v -4.614197 4.385803 -1.805229 +v -4.614197 4.005230 -1.814196 +v -4.605228 4.014194 -1.814196 +v -4.614197 4.014194 -1.805229 +v -4.614197 4.385803 -2.194771 +v -4.614197 4.394772 -2.185804 +v -4.605228 4.385803 -2.185804 +v -4.614197 4.005230 -2.185804 +v -4.614197 4.014194 -2.194771 +v -4.605228 4.014194 -2.185804 +v 3.403349 0.012498 5.000000 +v 3.412498 0.003348 5.000000 +v 3.424997 0.000000 5.000000 +v 3.400000 0.024997 5.000000 +v 3.412498 0.796651 5.000000 +v 3.403349 0.787500 5.000000 +v 3.400000 0.775002 5.000000 +v 3.424997 0.800000 5.000000 +v 3.412498 0.775002 4.203350 +v 3.403349 0.775002 4.212498 +v 3.400000 0.775002 4.224998 +v 3.403349 0.787500 4.224998 +v 3.412498 0.796651 4.224998 +v 3.424997 0.800000 4.224998 +v 3.424997 0.796651 4.212498 +v 3.424997 0.787500 4.203350 +v 3.424997 0.775002 4.200001 +v 3.412498 0.003348 4.224998 +v 3.403349 0.012498 4.224998 +v 3.400000 0.024997 4.224998 +v 3.403349 0.024997 4.212498 +v 3.412498 0.024997 4.203350 +v 3.424997 0.024997 4.200001 +v 3.424997 0.012498 4.203350 +v 4.225006 0.012498 4.203350 +v 3.414196 0.785803 4.205227 +v 3.405230 0.785803 4.214195 +v 3.414196 0.794771 4.214195 +v 3.414196 0.005228 4.214195 +v 3.405230 0.014195 4.214195 +v 3.414196 0.014195 4.205227 +v 3.424997 0.003348 4.212498 +v 4.225002 0.000000 4.224998 +v 4.225002 0.003348 4.212498 +v 3.424997 0.003295 4.224998 +v 4.225006 0.787500 4.203350 +v 4.225002 0.775002 4.200001 +v 4.225006 0.796651 4.212498 +v 4.225002 0.800000 4.224998 +v 4.225002 0.800000 5.000000 +v 4.225002 0.024997 4.200001 +v 1.424997 1.600000 5.000000 +v 1.412498 1.603348 5.000000 +v 1.403349 1.612498 5.000000 +v 1.400000 1.624997 5.000000 +v 1.424997 1.603348 4.612499 +v 1.424997 1.612498 4.603348 +v 1.424997 1.624997 4.599998 +v 1.412498 1.624997 4.603348 +v 1.403349 1.624997 4.612499 +v 1.400000 1.624997 4.624996 +v 1.403349 1.612498 4.624996 +v 1.412498 1.603348 4.624996 +v 1.424997 1.600000 4.624996 +v 1.400000 1.975002 5.000000 +v 1.403349 1.987499 5.000000 +v 1.412498 1.996651 5.000000 +v 1.424997 2.000000 5.000000 +v 1.424997 1.987499 4.603348 +v 1.424997 1.996651 4.612499 +v 1.424997 2.000000 4.624996 +v 1.412498 1.996651 4.624996 +v 1.403349 1.987499 4.624996 +v 1.400000 1.975002 4.624996 +v 1.403349 1.975002 4.612499 +v 1.412498 1.975002 4.603348 +v 1.424997 1.975002 4.599998 +v 1.414196 1.605227 4.614197 +v 1.414196 1.614195 4.605228 +v 1.405229 1.614195 4.614197 +v 1.414196 1.985804 4.605228 +v 1.414196 1.994770 4.614197 +v 1.405229 1.985804 4.614197 +v 1.775002 1.600000 5.000000 +v 1.787500 1.603348 5.000000 +v 1.796652 1.612498 5.000000 +v 1.799999 1.624997 5.000000 +v 1.775002 1.603348 4.612499 +v 1.775002 1.612498 4.603348 +v 1.775002 1.624997 4.599998 +v 1.787500 1.624997 4.603348 +v 1.796652 1.624997 4.612499 +v 1.799999 1.624997 4.624996 +v 1.796652 1.612498 4.624996 +v 1.787500 1.603348 4.624996 +v 1.775002 1.600000 4.624996 +v 1.799999 1.975002 5.000000 +v 1.796652 1.987499 5.000000 +v 1.787500 1.996651 5.000000 +v 1.775002 2.000000 5.000000 +v 1.775002 1.987499 4.603348 +v 1.775002 1.996651 4.612499 +v 1.775002 2.000000 4.624996 +v 1.787500 1.996651 4.624996 +v 1.796652 1.987499 4.624996 +v 1.799999 1.975002 4.624996 +v 1.796652 1.975002 4.612499 +v 1.787500 1.975002 4.603348 +v 1.775002 1.975002 4.599998 +v 1.785803 1.605227 4.614197 +v 1.785803 1.614195 4.605228 +v 1.794771 1.614195 4.614197 +v 1.785803 1.985804 4.605228 +v 1.785803 1.994770 4.614197 +v 1.794771 1.985804 4.614197 +v 2.175003 1.600000 5.000000 +v 2.187502 1.603348 5.000000 +v 2.196651 1.612498 5.000000 +v 2.200001 1.624997 5.000000 +v 2.175003 1.603348 4.612499 +v 2.175003 1.612498 4.603348 +v 2.175003 1.624997 4.599998 +v 2.187502 1.624997 4.603348 +v 2.196651 1.624997 4.612499 +v 2.200001 1.624997 4.624996 +v 2.196651 1.612498 4.624996 +v 2.187502 1.603348 4.624996 +v 2.175003 1.600000 4.624996 +v 2.200001 1.975002 5.000000 +v 2.196651 1.987499 5.000000 +v 2.187502 1.996651 5.000000 +v 2.175003 2.000000 5.000000 +v 2.175003 1.987499 4.603348 +v 2.175003 1.996651 4.612499 +v 2.175003 2.000000 4.624996 +v 2.187502 1.996651 4.624996 +v 2.196651 1.987499 4.624996 +v 2.200001 1.975002 4.624996 +v 2.196651 1.975002 4.612499 +v 2.187502 1.975002 4.603348 +v 2.175003 1.975002 4.599998 +v 2.185804 1.605227 4.614197 +v 2.185804 1.614195 4.605228 +v 2.194771 1.614195 4.614197 +v 2.185804 1.985804 4.605228 +v 2.185804 1.994770 4.614197 +v 2.194771 1.985804 4.614197 +v 4.200001 4.775002 5.000000 +v 4.196651 4.787502 5.000000 +v 4.187500 4.796650 5.000000 +v 4.175003 4.799999 5.000000 +v 4.196651 4.775002 4.612499 +v 4.187500 4.775002 4.603348 +v 4.175003 4.775002 4.599998 +v 4.175003 4.787502 4.603348 +v 4.175003 4.796650 4.612499 +v 4.175003 4.799999 4.624996 +v 4.187500 4.796650 4.624996 +v 4.196651 4.787502 4.624996 +v 4.200001 4.775002 4.624996 +v 3.824997 4.799999 5.000000 +v 3.812500 4.796650 5.000000 +v 3.803349 4.787502 5.000000 +v 3.799999 4.775002 5.000000 +v 3.812500 4.775002 4.603348 +v 3.803349 4.775002 4.612499 +v 3.799999 4.775002 4.624996 +v 3.803349 4.787502 4.624996 +v 3.812500 4.796650 4.624996 +v 3.824997 4.799999 4.624996 +v 3.824997 4.796650 4.612499 +v 3.824997 4.787502 4.603348 +v 3.824997 4.775002 4.599998 +v 3.799999 4.424999 5.000000 +v 3.803349 4.412498 5.000000 +v 3.812500 4.403347 5.000000 +v 3.824997 4.400002 5.000000 +v 3.824997 4.412498 4.603348 +v 3.824997 4.403347 4.612499 +v 3.824997 4.400002 4.624996 +v 3.812500 4.403347 4.624996 +v 3.803349 4.412498 4.624996 +v 3.799999 4.424999 4.624996 +v 3.803349 4.424999 4.612499 +v 3.812500 4.424999 4.603348 +v 3.824997 4.424999 4.599998 +v 4.175003 4.400002 5.000000 +v 4.187500 4.403347 5.000000 +v 4.196651 4.412498 5.000000 +v 4.200001 4.424999 5.000000 +v 4.187500 4.424999 4.603348 +v 4.196651 4.424999 4.612499 +v 4.200001 4.424999 4.624996 +v 4.196651 4.412498 4.624996 +v 4.187500 4.403347 4.624996 +v 4.175003 4.400002 4.624996 +v 4.175003 4.403347 4.612499 +v 4.175003 4.412498 4.603348 +v 4.175003 4.424999 4.599998 +v 4.194771 4.785805 4.614197 +v 4.185806 4.785805 4.605228 +v 4.185806 4.794773 4.614197 +v 3.814198 4.785805 4.605228 +v 3.805229 4.785805 4.614197 +v 3.814198 4.794773 4.614197 +v 3.814198 4.414196 4.605228 +v 3.814198 4.405228 4.614197 +v 3.805229 4.414196 4.614197 +v 4.185806 4.414196 4.605228 +v 4.194771 4.414196 4.614197 +v 4.185806 4.405228 4.614197 +v 3.024998 4.000000 5.000000 +v 3.012499 3.996651 5.000000 +v 3.003349 3.987499 5.000000 +v 3.000000 3.975002 5.000000 +v 3.799999 3.975002 5.000000 +v 3.796650 3.987499 5.000000 +v 3.787502 3.996651 5.000000 +v 3.775002 4.000000 5.000000 +v 3.012499 3.975002 4.203350 +v 3.003349 3.975002 4.212502 +v 3.000000 3.975002 4.224998 +v 3.003349 3.987499 4.224998 +v 3.012499 3.996651 4.224998 +v 3.024998 4.000000 4.224998 +v 3.024998 3.996651 4.212502 +v 3.024998 3.987499 4.203350 +v 3.024998 3.975002 4.200001 +v 3.796650 3.975002 4.212502 +v 3.787502 3.975002 4.203350 +v 3.775002 3.975002 4.200001 +v 3.775002 3.987499 4.203350 +v 3.775002 3.996651 4.212502 +v 3.775002 4.000000 4.224998 +v 3.787502 3.996651 4.224998 +v 3.796650 3.987499 4.224998 +v 3.799999 3.975002 4.224998 +v 3.012499 3.203348 4.224998 +v 3.003349 3.212500 4.224998 +v 3.000000 3.224998 4.224998 +v 3.003349 3.224998 4.212502 +v 3.012499 3.224998 4.203350 +v 3.024998 3.224998 4.200001 +v 3.024998 3.212500 4.203350 +v 3.024998 3.203348 4.212502 +v 3.024998 3.200001 4.224998 +v 3.796650 3.212500 4.224998 +v 3.787502 3.203348 4.224998 +v 3.775002 3.200001 4.224998 +v 3.775002 3.203348 4.212502 +v 3.775002 3.212500 4.203350 +v 3.775002 3.224998 4.200001 +v 3.787502 3.224998 4.203350 +v 3.796650 3.224998 4.212502 +v 3.799999 3.224998 4.224998 +v 3.000000 3.224998 5.000000 +v 3.003349 3.212500 5.000000 +v 3.012499 3.203348 5.000000 +v 3.024998 3.200001 5.000000 +v 3.775002 3.200001 5.000000 +v 3.787502 3.203348 5.000000 +v 3.796650 3.212500 5.000000 +v 3.799999 3.224998 5.000000 +v 3.014196 3.985806 4.205231 +v 3.005228 3.985806 4.214195 +v 3.014196 3.994770 4.214195 +v 3.794773 3.985806 4.214195 +v 3.785805 3.985806 4.205231 +v 3.785805 3.994770 4.214195 +v 3.014196 3.205229 4.214195 +v 3.005228 3.214197 4.214195 +v 3.014196 3.214197 4.205231 +v 3.794773 3.214197 4.214195 +v 3.785805 3.205229 4.214195 +v 3.785805 3.214197 4.205231 +v -1.824997 1.200000 5.000000 +v -1.812498 1.203348 5.000000 +v -1.803349 1.212499 5.000000 +v -1.799999 1.224997 5.000000 +v -1.824997 1.203348 4.612499 +v -1.824997 1.212499 4.603348 +v -1.824997 1.224997 4.599998 +v -1.812498 1.224997 4.603348 +v -1.803349 1.224997 4.612499 +v -1.799999 1.224997 4.624996 +v -1.803349 1.212499 4.624996 +v -1.812498 1.203348 4.624996 +v -1.824997 1.200000 4.624996 +v -1.799999 1.575002 5.000000 +v -1.803349 1.587500 5.000000 +v -1.812498 1.596651 5.000000 +v -1.824997 1.600000 5.000000 +v -1.824997 1.587500 4.603348 +v -1.824997 1.596651 4.612499 +v -1.824997 1.600000 4.624996 +v -1.812498 1.596651 4.624996 +v -1.803349 1.587500 4.624996 +v -1.799999 1.575002 4.624996 +v -1.803349 1.575002 4.612499 +v -1.812498 1.575002 4.603348 +v -1.824997 1.575002 4.599998 +v -2.175003 1.600000 5.000000 +v -2.187502 1.596651 5.000000 +v -2.196651 1.587500 5.000000 +v -2.200001 1.575002 5.000000 +v -2.187502 1.575002 4.603348 +v -2.196651 1.575002 4.612499 +v -2.200001 1.575002 4.624996 +v -2.196651 1.587500 4.624996 +v -2.187502 1.596651 4.624996 +v -2.175003 1.600000 4.624996 +v -2.175003 1.596651 4.612499 +v -2.175003 1.587500 4.603348 +v -2.175003 1.575002 4.599998 +v -2.200001 1.224997 5.000000 +v -2.196651 1.212499 5.000000 +v -2.187502 1.203348 5.000000 +v -2.175003 1.200000 5.000000 +v -2.175003 1.212499 4.603348 +v -2.175003 1.203348 4.612499 +v -2.175003 1.200000 4.624996 +v -2.187502 1.203348 4.624996 +v -2.196651 1.212499 4.624996 +v -2.200001 1.224997 4.624996 +v -2.196651 1.224997 4.612499 +v -2.187502 1.224997 4.603348 +v -2.175003 1.224997 4.599998 +v -1.814196 1.205228 4.614197 +v -1.814196 1.214195 4.605228 +v -1.805229 1.214195 4.614197 +v -1.814196 1.585803 4.605228 +v -1.814196 1.594770 4.614197 +v -1.805229 1.585803 4.614197 +v -2.185804 1.585803 4.605228 +v -2.194771 1.585803 4.614197 +v -2.185804 1.594770 4.614197 +v -2.185804 1.214195 4.605228 +v -2.185804 1.205228 4.614197 +v -2.194771 1.214195 4.614197 +v -3.824997 0.000000 5.000000 +v -3.812500 0.003348 5.000000 +v -3.803349 0.012498 5.000000 +v -3.799999 0.024997 5.000000 +v -3.824997 0.003348 4.612499 +v -3.824997 0.012498 4.603348 +v -3.824997 0.024997 4.599998 +v -3.812500 0.024997 4.603348 +v -3.803349 0.024997 4.612499 +v -3.799999 0.024997 4.624996 +v -3.803349 0.012498 4.624996 +v -3.812500 0.003348 4.624996 +v -3.824997 0.000000 4.624996 +v -3.799999 0.375001 5.000000 +v -3.803349 0.387500 5.000000 +v -3.812500 0.396651 5.000000 +v -3.824997 0.400000 5.000000 +v -3.824997 0.387500 4.603348 +v -3.824997 0.396651 4.612499 +v -3.824997 0.400000 4.624996 +v -3.812500 0.396651 4.624996 +v -3.803349 0.387500 4.624996 +v -3.799999 0.375001 4.624996 +v -3.803349 0.375001 4.612499 +v -3.812500 0.375001 4.603348 +v -3.824997 0.375001 4.599998 +v -4.175003 0.400000 5.000000 +v -4.187500 0.396651 5.000000 +v -4.196651 0.387500 5.000000 +v -4.200001 0.375001 5.000000 +v -4.187500 0.375001 4.603348 +v -4.196651 0.375001 4.612499 +v -4.200001 0.375001 4.624996 +v -4.196651 0.387500 4.624996 +v -4.187500 0.396651 4.624996 +v -4.175003 0.400000 4.624996 +v -4.175003 0.396651 4.612499 +v -4.175003 0.387500 4.603348 +v -4.175003 0.375001 4.599998 +v -4.175003 0.012498 4.603348 +v -4.175003 0.003348 4.612499 +v -4.175003 0.000000 4.624996 +v -4.187500 0.003348 4.624996 +v -4.196651 0.012498 4.624996 +v -4.200001 0.024997 4.624996 +v -4.196651 0.024997 4.612499 +v -4.187500 0.024997 4.603348 +v -4.175003 0.024997 4.599998 +v -3.814198 0.005228 4.614197 +v -3.814198 0.014195 4.605228 +v -3.805229 0.014195 4.614197 +v -3.814198 0.385803 4.605228 +v -3.814198 0.394771 4.614197 +v -3.805229 0.385803 4.614197 +v -4.185802 0.385803 4.605228 +v -4.194771 0.385803 4.614197 +v -4.185802 0.394771 4.614197 +v -4.185802 0.014195 4.605228 +v -4.185802 0.005228 4.614197 +v -4.194771 0.014195 4.614197 +v 1.824999 1.600000 5.000000 +v 1.812498 1.603348 5.000000 +v 1.803349 1.612498 5.000000 +v 1.824999 1.603348 4.612499 +v 1.824997 1.612498 4.603348 +v 1.824997 1.624997 4.599998 +v 1.812498 1.624997 4.603348 +v 1.803349 1.624997 4.612499 +v 1.803349 1.612498 4.624996 +v 1.812498 1.603348 4.624996 +v 1.824997 1.600000 4.624996 +v 1.803349 1.987499 5.000000 +v 1.812498 1.996651 5.000000 +v 1.824997 2.000000 5.000000 +v 1.824997 1.987499 4.603348 +v 1.824997 1.996651 4.612499 +v 1.824997 2.000000 4.624996 +v 1.812498 1.996651 4.624996 +v 1.803349 1.987499 4.624996 +v 1.803349 1.975002 4.612499 +v 1.812498 1.975002 4.603348 +v 1.824997 1.975002 4.599998 +v 1.814196 1.605227 4.614197 +v 1.814196 1.614195 4.605228 +v 1.805229 1.614195 4.614197 +v 1.814196 1.985804 4.605228 +v 1.814196 1.994770 4.614197 +v 1.805229 1.985804 4.614197 +v 1.424997 1.200000 5.000000 +v 1.412498 1.203348 5.000000 +v 1.403349 1.212499 5.000000 +v 1.400000 1.224997 5.000000 +v 1.424997 1.203348 4.612499 +v 1.424997 1.212499 4.603348 +v 1.424997 1.224997 4.599998 +v 1.412498 1.224997 4.603348 +v 1.403349 1.224997 4.612499 +v 1.400000 1.224997 4.624996 +v 1.403349 1.212499 4.624996 +v 1.412498 1.203348 4.624996 +v 1.424997 1.200000 4.624996 +v 1.400000 1.575002 5.000000 +v 1.403349 1.587500 5.000000 +v 1.412498 1.596651 5.000000 +v 1.424997 1.587500 4.603348 +v 1.424997 1.596651 4.612499 +v 1.412498 1.596651 4.624996 +v 1.403349 1.587500 4.624996 +v 1.400000 1.575002 4.624996 +v 1.403349 1.575002 4.612499 +v 1.412498 1.575002 4.603348 +v 1.424997 1.575002 4.599998 +v 1.414196 1.205228 4.614197 +v 1.414196 1.214195 4.605228 +v 1.405229 1.214195 4.614197 +v 1.414196 1.585803 4.605228 +v 1.414196 1.594770 4.614197 +v 1.405229 1.585803 4.614197 +v 1.775002 1.200000 5.000000 +v 1.787500 1.203348 5.000000 +v 1.796652 1.212499 5.000000 +v 1.799999 1.224997 5.000000 +v 1.775002 1.203348 4.612499 +v 1.775002 1.212499 4.603348 +v 1.775002 1.224997 4.599998 +v 1.787500 1.224997 4.603348 +v 1.796652 1.224997 4.612499 +v 1.799999 1.224997 4.624996 +v 1.796652 1.212499 4.624996 +v 1.787500 1.203348 4.624996 +v 1.775002 1.200000 4.624996 +v 1.799999 1.575002 5.000000 +v 1.796652 1.587500 5.000000 +v 1.787500 1.596651 5.000000 +v 1.775002 1.587500 4.603348 +v 1.775002 1.596651 4.612499 +v 1.787500 1.596651 4.624996 +v 1.796652 1.587500 4.624996 +v 1.799999 1.575002 4.624996 +v 1.796652 1.575002 4.612499 +v 1.787500 1.575002 4.603348 +v 1.775002 1.575002 4.599998 +v 1.785803 1.205228 4.614197 +v 1.785803 1.214195 4.605228 +v 1.794771 1.214195 4.614197 +v 1.785803 1.585803 4.605228 +v 1.785803 1.594770 4.614197 +v 1.794771 1.585803 4.614197 +v -4.212498 0.803348 5.000000 +v -4.203350 0.812499 5.000000 +v -4.200001 0.824997 5.000000 +v -4.224998 0.800000 5.000000 +v -4.203350 1.587500 5.000000 +v -4.212498 1.596651 5.000000 +v -4.224998 1.600000 5.000000 +v -4.200001 1.575002 5.000000 +v -5.000000 1.600000 4.224998 +v -5.000000 1.596651 4.212498 +v -5.000000 1.587500 4.203350 +v -5.000000 1.575002 4.200001 +v -4.203350 1.575002 4.212498 +v -4.212498 1.575002 4.203350 +v -4.224998 1.575002 4.200001 +v -4.224998 1.587500 4.203350 +v -4.224998 1.596651 4.212498 +v -4.224998 1.600000 4.224998 +v -4.212498 1.596651 4.224998 +v -4.203350 1.587500 4.224998 +v -4.200001 1.575002 4.224998 +v -4.203350 0.812499 4.224998 +v -4.212498 0.803348 4.224998 +v -4.224998 0.800000 4.224998 +v -4.224998 0.803348 4.212498 +v -4.224998 0.812499 4.203350 +v -4.224998 0.824997 4.200001 +v -4.212498 0.824997 4.203350 +v -4.203350 0.824997 4.212498 +v -4.200001 0.824997 4.224998 +v -4.205227 1.585803 4.214195 +v -4.214195 1.585803 4.205227 +v -4.214195 1.594770 4.214195 +v -4.205227 0.814195 4.214195 +v -4.214195 0.805228 4.214195 +v -4.214195 0.814195 4.205227 +v -4.212498 1.603348 5.000000 +v -4.203350 1.612498 5.000000 +v -4.200001 1.624997 5.000000 +v -5.000000 2.400000 5.000000 +v -4.203350 2.387501 5.000000 +v -4.212498 2.396650 5.000000 +v -4.224998 2.400000 5.000000 +v -4.200001 2.375002 5.000000 +v -5.000000 2.400000 4.224998 +v -5.000000 2.396650 4.212498 +v -5.000000 2.387501 4.203350 +v -5.000000 2.375002 4.200001 +v -4.203350 2.375002 4.212498 +v -4.212498 2.375002 4.203350 +v -4.224998 2.375002 4.200001 +v -4.224998 2.387501 4.203350 +v -4.224998 2.396650 4.212498 +v -4.224998 2.400000 4.224998 +v -4.212498 2.396650 4.224998 +v -4.203350 2.387501 4.224998 +v -4.200001 2.375002 4.224998 +v -5.000000 1.624997 4.200001 +v -5.000000 1.612498 4.203350 +v -5.000000 1.603348 4.212498 +v -4.203350 1.612498 4.224998 +v -4.212498 1.603348 4.224998 +v -4.224998 1.603348 4.212498 +v -4.224998 1.612498 4.203350 +v -4.224998 1.624997 4.200001 +v -4.212498 1.624997 4.203350 +v -4.203350 1.624997 4.212498 +v -4.200001 1.624997 4.224998 +v -4.205227 2.385803 4.214195 +v -4.214195 2.385803 4.205227 +v -4.214195 2.394772 4.214195 +v -4.205227 1.614195 4.214195 +v -4.214195 1.605227 4.214195 +v -4.214195 1.614195 4.205227 +v -4.212498 0.003348 4.175003 +v -4.203350 0.012498 4.175003 +v -4.200001 0.024997 4.175003 +v -4.203350 0.024997 4.187500 +v -4.212498 0.024997 4.196651 +v -4.224998 0.024997 4.200001 +v -4.224998 0.012498 4.196651 +v -4.224998 0.003348 4.187500 +v -4.224998 0.000000 4.175003 +v -4.203350 0.787500 4.175003 +v -4.212498 0.796651 4.175003 +v -4.224998 0.800000 4.175003 +v -4.224998 0.796651 4.187500 +v -4.224998 0.787500 4.196651 +v -4.224998 0.775002 4.200001 +v -4.212498 0.775002 4.196651 +v -4.203350 0.775002 4.187500 +v -4.200001 0.775002 4.175003 +v -5.000000 0.800000 3.424997 +v -5.000000 0.796651 3.412498 +v -5.000000 0.787500 3.403349 +v -5.000000 0.775002 3.400000 +v -4.203350 0.775002 3.412498 +v -4.212498 0.775002 3.403349 +v -4.224998 0.775002 3.400000 +v -4.224998 0.787500 3.403349 +v -4.224998 0.796651 3.412498 +v -4.224998 0.800000 3.424997 +v -4.212498 0.796651 3.424997 +v -4.203350 0.787500 3.424997 +v -4.200001 0.775002 3.424997 +v -4.203350 0.012498 3.424997 +v -4.212498 0.003348 3.424997 +v -4.224998 0.000000 3.424997 +v -4.224998 0.003348 3.412498 +v -4.224998 0.012498 3.403349 +v -4.224998 0.024997 3.400000 +v -4.212498 0.024997 3.403349 +v -4.203350 0.024997 3.412498 +v -4.200001 0.024997 3.424997 +v -4.214195 0.005228 4.185802 +v -4.205227 0.014195 4.185802 +v -4.214195 0.014195 4.194771 +v -4.205227 0.785803 4.185802 +v -4.214195 0.794771 4.185802 +v -4.214195 0.785803 4.194771 +v -4.205227 0.785803 3.414196 +v -4.214195 0.785803 3.405230 +v -4.214195 0.794771 3.414196 +v -4.205227 0.014195 3.414196 +v -4.214195 0.005228 3.414196 +v -4.214195 0.014195 3.405230 +v -4.212498 0.803348 4.175003 +v -4.203350 0.812499 4.175003 +v -4.200001 0.824997 4.175003 +v -4.203350 0.824997 4.187500 +v -4.212498 0.824997 4.196651 +v -4.224998 0.812499 4.196651 +v -4.224998 0.803348 4.187500 +v -5.000000 1.587500 4.196651 +v -5.000000 1.596651 4.187500 +v -5.000000 1.600000 4.175003 +v -4.203350 1.587500 4.175003 +v -4.212498 1.596651 4.175003 +v -4.224998 1.600000 4.175003 +v -4.224998 1.596651 4.187500 +v -4.224998 1.587500 4.196651 +v -4.212498 1.575002 4.196651 +v -4.203350 1.575002 4.187500 +v -4.200001 1.575002 4.175003 +v -5.000000 1.600000 3.424997 +v -5.000000 1.596651 3.412498 +v -5.000000 1.587500 3.403349 +v -5.000000 1.575002 3.400000 +v -4.203350 1.575002 3.412498 +v -4.212498 1.575002 3.403349 +v -4.224998 1.575002 3.400000 +v -4.224998 1.587500 3.403349 +v -4.224998 1.596651 3.412498 +v -4.224998 1.600000 3.424997 +v -4.212498 1.596651 3.424997 +v -4.203350 1.587500 3.424997 +v -4.200001 1.575002 3.424997 +v -5.000000 0.824997 3.400000 +v -5.000000 0.812499 3.403349 +v -5.000000 0.803348 3.412498 +v -4.203350 0.812499 3.424997 +v -4.212498 0.803348 3.424997 +v -4.224998 0.803348 3.412498 +v -4.224998 0.812499 3.403349 +v -4.224998 0.824997 3.400000 +v -4.212498 0.824997 3.403349 +v -4.203350 0.824997 3.412498 +v -4.200001 0.824997 3.424997 +v -4.214195 0.805228 4.185802 +v -4.205227 0.814195 4.185802 +v -4.214195 0.814195 4.194771 +v -4.205227 1.585803 4.185802 +v -4.214195 1.594770 4.185802 +v -4.214195 1.585803 4.194771 +v -4.205227 1.585803 3.414196 +v -4.214195 1.585803 3.405230 +v -4.214195 1.594770 3.414196 +v -4.205227 0.814195 3.414196 +v -4.214195 0.805228 3.414196 +v -4.214195 0.814195 3.405230 +v -4.212498 0.003348 3.375002 +v -4.203350 0.012498 3.375002 +v -4.200001 0.024997 3.375002 +v -4.203350 0.024997 3.387501 +v -4.212498 0.024997 3.396650 +v -4.224998 0.012498 3.396650 +v -4.224998 0.003348 3.387501 +v -4.224998 0.000000 3.375002 +v -5.000000 0.775002 3.400000 +v -5.000000 0.787500 3.396650 +v -5.000000 0.796651 3.387501 +v -5.000000 0.800000 3.375002 +v -4.203350 0.787500 3.375002 +v -4.212498 0.796651 3.375002 +v -4.224998 0.800000 3.375002 +v -4.224998 0.796651 3.387501 +v -4.224998 0.787500 3.396650 +v -4.212498 0.775002 3.396650 +v -4.203350 0.775002 3.387501 +v -4.200001 0.775002 3.375002 +v -5.000000 0.800000 2.624998 +v -5.000000 0.796651 2.612499 +v -5.000000 0.787500 2.603350 +v -5.000000 0.775002 2.600000 +v -4.203350 0.775002 2.612499 +v -4.212498 0.775002 2.603350 +v -4.224998 0.775002 2.600000 +v -4.224998 0.787500 2.603350 +v -4.224998 0.796651 2.612499 +v -4.224998 0.800000 2.624998 +v -4.212498 0.796651 2.624998 +v -4.203350 0.787500 2.624998 +v -4.200001 0.775002 2.624998 +v -5.000000 0.024997 2.600000 +v -5.000000 0.012498 2.603350 +v -5.000000 0.003348 2.612499 +v -5.000000 0.000000 2.624998 +v -4.203350 0.012498 2.624998 +v -4.212498 0.003348 2.624998 +v -4.224998 0.000000 2.624998 +v -4.224998 0.003348 2.612499 +v -4.224998 0.012498 2.603350 +v -4.224998 0.024997 2.600000 +v -4.212498 0.024997 2.603350 +v -4.203350 0.024997 2.612499 +v -4.200001 0.024997 2.624998 +v -4.214195 0.005228 3.385803 +v -4.205227 0.014195 3.385803 +v -4.214195 0.014195 3.394772 +v -4.205227 0.785803 3.385803 +v -4.214195 0.794771 3.385803 +v -4.214195 0.785803 3.394772 +v -4.205227 0.785803 2.614197 +v -4.214195 0.785803 2.605228 +v -4.214195 0.794771 2.614197 +v -4.205227 0.014195 2.614197 +v -4.214195 0.005228 2.614197 +v -4.214195 0.014195 2.605228 +v -4.212498 0.003348 5.000000 +v -4.203350 0.012498 5.000000 +v -4.200001 0.024997 5.000000 +v -4.224998 0.000000 5.000000 +v -4.203350 0.787500 5.000000 +v -4.212498 0.796651 5.000000 +v -4.200001 0.775002 5.000000 +v -4.203350 0.775002 4.212498 +v -4.212498 0.775002 4.203350 +v -4.224998 0.787500 4.203350 +v -4.224998 0.796651 4.212498 +v -4.212498 0.796651 4.224998 +v -4.203350 0.787500 4.224998 +v -4.200001 0.775002 4.224998 +v -4.203350 0.012498 4.224998 +v -4.212498 0.003348 4.224998 +v -4.224998 0.000000 4.224998 +v -4.224998 0.003348 4.212498 +v -4.224998 0.012498 4.203350 +v -4.212498 0.024997 4.203350 +v -4.203350 0.024997 4.212498 +v -4.200001 0.024997 4.224998 +v -4.205227 0.785803 4.214195 +v -4.214195 0.785803 4.205227 +v -4.214195 0.794771 4.214195 +v -4.205227 0.014195 4.214195 +v -4.214195 0.005228 4.214195 +v -4.214195 0.014195 4.205227 +v -4.224998 0.799999 4.200001 +v -4.200001 5.975002 5.000000 +v -4.203350 5.987499 4.975002 +v -4.212498 5.996651 4.975002 +v -4.224998 6.000000 4.975002 +v -4.975002 6.000000 4.224998 +v -4.975002 5.996651 4.212502 +v -4.975002 5.987499 4.203350 +v -5.000000 5.975002 4.200001 +v -4.203350 5.975002 4.212502 +v -4.212498 5.975002 4.203350 +v -4.224998 5.975002 4.200001 +v -4.224998 5.987499 4.203350 +v -4.224998 5.996651 4.212502 +v -4.224998 6.000000 4.224998 +v -4.212498 5.996651 4.224998 +v -4.203350 5.987499 4.224998 +v -4.200001 5.975002 4.224998 +v -5.000000 5.224998 4.200001 +v -5.000000 5.212498 4.203350 +v -5.000000 5.203350 4.212502 +v -5.000000 5.200001 4.224998 +v -4.203350 5.212498 4.224998 +v -4.212498 5.203350 4.224998 +v -4.224998 5.200001 4.224998 +v -4.224998 5.203350 4.212502 +v -4.224998 5.212498 4.203350 +v -4.224998 5.224998 4.200001 +v -4.212498 5.224998 4.203350 +v -4.203350 5.224998 4.212502 +v -4.200001 5.224998 4.224998 +v -5.000000 5.200001 5.000000 +v -4.224998 5.200001 5.000000 +v -4.212498 5.203350 5.000000 +v -4.203350 5.212498 5.000000 +v -4.200001 5.224998 5.000000 +v -4.205227 5.985806 4.214195 +v -4.214195 5.985806 4.205231 +v -4.214195 5.994770 4.214195 +v -4.205227 5.214195 4.214195 +v -4.214195 5.205227 4.214195 +v -4.214195 5.214195 4.205231 +v 4.203350 0.012498 3.375002 +v 4.212498 0.003348 3.375002 +v 4.224998 0.000000 3.375002 +v 4.224998 0.003348 3.387501 +v 4.224998 0.012498 3.396650 +v 4.224998 0.024997 3.400000 +v 4.212498 0.024997 3.396650 +v 4.203350 0.024997 3.387501 +v 4.200001 0.024997 3.375002 +v 4.212498 0.796651 3.375002 +v 4.203350 0.787500 3.375002 +v 4.200001 0.775002 3.375002 +v 4.203350 0.775002 3.387501 +v 4.212498 0.775002 3.396650 +v 4.224998 0.775002 3.400000 +v 4.224998 0.787500 3.396650 +v 4.224998 0.796651 3.387501 +v 4.224998 0.800000 3.375002 +v 5.000000 0.800000 3.375002 +v 5.000000 0.796651 3.387501 +v 5.000000 0.787500 3.396650 +v 5.000000 0.775002 3.400000 +v 4.212498 0.775002 2.603350 +v 4.203350 0.775002 2.612499 +v 4.200001 0.775002 2.624998 +v 4.203350 0.787500 2.624998 +v 4.212498 0.796651 2.624998 +v 4.224998 0.800000 2.624998 +v 4.224998 0.796651 2.612499 +v 4.224998 0.787500 2.603350 +v 4.224998 0.775002 2.600000 +v 5.000000 0.775002 2.600000 +v 5.000000 0.787500 2.603350 +v 5.000000 0.796651 2.612499 +v 5.000000 0.800000 2.624998 +v 4.212498 0.003348 2.624998 +v 4.203350 0.012498 2.624998 +v 4.200001 0.024997 2.624998 +v 4.203350 0.024997 2.612499 +v 4.212498 0.024997 2.603350 +v 4.224998 0.024997 2.600000 +v 4.224998 0.012498 2.603350 +v 4.224998 0.003348 2.612499 +v 4.224998 0.000000 2.624998 +v 5.000000 0.000000 2.624998 +v 5.000000 0.003348 2.612499 +v 5.000000 0.012498 2.603350 +v 5.000000 0.024997 2.600000 +v 4.205231 0.014195 3.385803 +v 4.214195 0.005228 3.385803 +v 4.214195 0.014195 3.394772 +v 4.214195 0.794771 3.385803 +v 4.205231 0.785803 3.385803 +v 4.214195 0.785803 3.394772 +v 4.214195 0.785803 2.605228 +v 4.205227 0.785803 2.614197 +v 4.214195 0.794771 2.614197 +v 4.214195 0.005228 2.614197 +v 4.205227 0.014195 2.614197 +v 4.214195 0.014195 2.605228 +v 4.203350 0.012498 4.175003 +v 4.212498 0.003348 4.175003 +v 4.224998 0.000000 4.175003 +v 4.224998 0.003348 4.187500 +v 4.224998 0.012498 4.196651 +v 4.225002 0.024997 4.200001 +v 4.212498 0.024997 4.196651 +v 4.203350 0.024997 4.187500 +v 4.200001 0.024997 4.175003 +v 4.212498 0.796651 4.175003 +v 4.203350 0.787500 4.175003 +v 4.200001 0.775002 4.175003 +v 4.203350 0.775002 4.187500 +v 4.212498 0.775002 4.196651 +v 4.225002 0.775002 4.200001 +v 4.224998 0.787500 4.196651 +v 4.224998 0.796651 4.187500 +v 4.224998 0.800000 4.175003 +v 4.212498 0.775002 3.403349 +v 4.203350 0.775002 3.412498 +v 4.200001 0.775002 3.424997 +v 4.203350 0.787500 3.424997 +v 4.212498 0.796651 3.424997 +v 4.224998 0.800000 3.424997 +v 4.224998 0.796651 3.412498 +v 4.224998 0.787500 3.403349 +v 5.000000 0.787500 3.403349 +v 5.000000 0.796651 3.412498 +v 5.000000 0.800000 3.424997 +v 4.212498 0.003348 3.424997 +v 4.203350 0.012498 3.424997 +v 4.200001 0.024997 3.424997 +v 4.203350 0.024997 3.412498 +v 4.212498 0.024997 3.403349 +v 4.224998 0.012498 3.403349 +v 4.224998 0.003348 3.412498 +v 4.224998 0.000000 3.424997 +v 4.205231 0.014195 4.185802 +v 4.214195 0.005228 4.185802 +v 4.214195 0.014195 4.194771 +v 4.214195 0.794771 4.185802 +v 4.205231 0.785803 4.185802 +v 4.214195 0.785803 4.194771 +v 4.214195 0.785803 3.405230 +v 4.205231 0.785803 3.414196 +v 4.214195 0.794771 3.414196 +v 4.214195 0.005228 3.414196 +v 4.205231 0.014195 3.414196 +v 4.214195 0.014195 3.405230 +v 4.225002 0.800000 5.000000 +v 4.225002 0.800000 4.224998 +v 4.203350 0.812499 4.175003 +v 4.212498 0.803348 4.175003 +v 4.224998 0.803348 4.187500 +v 4.224998 0.812499 4.196651 +v 4.224998 0.824997 4.200001 +v 4.212498 0.824997 4.196651 +v 4.203350 0.824997 4.187500 +v 4.200001 0.824997 4.175003 +v 4.212498 1.596651 4.175003 +v 4.203350 1.587500 4.175003 +v 4.200001 1.575002 4.175003 +v 4.203350 1.575002 4.187500 +v 4.212498 1.575002 4.196651 +v 4.224998 1.575002 4.200001 +v 4.224998 1.587500 4.196651 +v 4.224998 1.596651 4.187500 +v 4.224998 1.600000 4.175003 +v 5.000000 1.600000 4.175003 +v 5.000000 1.596651 4.187500 +v 5.000000 1.587500 4.196651 +v 5.000000 1.575002 4.200001 +v 4.212498 1.575002 3.403349 +v 4.203350 1.575002 3.412498 +v 4.200001 1.575002 3.424997 +v 4.203350 1.587500 3.424997 +v 4.212498 1.596651 3.424997 +v 4.224998 1.600000 3.424997 +v 4.224998 1.596651 3.412498 +v 4.224998 1.587500 3.403349 +v 4.224998 1.575002 3.400000 +v 5.000000 1.575002 3.400000 +v 5.000000 1.587500 3.403349 +v 5.000000 1.596651 3.412498 +v 5.000000 1.600000 3.424997 +v 4.212498 0.803348 3.424997 +v 4.203350 0.812499 3.424997 +v 4.200001 0.824997 3.424997 +v 4.203350 0.824997 3.412498 +v 4.212498 0.824997 3.403349 +v 4.224998 0.824997 3.400000 +v 4.224998 0.812499 3.403349 +v 4.224998 0.803348 3.412498 +v 5.000000 0.803348 3.412498 +v 5.000000 0.812499 3.403349 +v 5.000000 0.824997 3.400000 +v 4.205231 0.814195 4.185802 +v 4.214195 0.805228 4.185802 +v 4.214195 0.814195 4.194771 +v 4.214195 1.594770 4.185802 +v 4.205231 1.585803 4.185802 +v 4.214195 1.585803 4.194771 +v 4.214195 1.585803 3.405230 +v 4.205231 1.585803 3.414196 +v 4.214195 1.594770 3.414196 +v 4.214195 0.805228 3.414196 +v 4.205231 0.814195 3.414196 +v 4.214195 0.814195 3.405230 +v 4.203350 1.612498 5.000000 +v 4.212498 1.603348 5.000000 +v 4.224998 1.600000 5.000000 +v 4.200001 1.624997 5.000000 +v 4.212498 2.396650 5.000000 +v 4.203350 2.387501 5.000000 +v 4.200001 2.375002 5.000000 +v 4.224998 2.400000 5.000000 +v 5.000000 2.400000 5.000000 +v 4.212498 2.375002 4.203350 +v 4.203350 2.375002 4.212498 +v 4.200001 2.375002 4.224998 +v 4.203350 2.387501 4.224998 +v 4.212498 2.396650 4.224998 +v 4.224998 2.400000 4.224998 +v 4.224998 2.396650 4.212498 +v 4.224998 2.387501 4.203350 +v 4.224998 2.375002 4.200001 +v 5.000000 2.375002 4.200001 +v 5.000000 2.387501 4.203350 +v 5.000000 2.396650 4.212498 +v 5.000000 2.400000 4.224998 +v 4.212498 1.603348 4.224998 +v 4.203350 1.612498 4.224998 +v 4.200001 1.624997 4.224998 +v 4.203350 1.624997 4.212498 +v 4.212498 1.624997 4.203350 +v 4.224998 1.624997 4.200001 +v 4.224998 1.612498 4.203350 +v 4.224998 1.603348 4.212498 +v 4.224998 1.600000 4.224998 +v 5.000000 1.600000 4.224998 +v 5.000000 1.603348 4.212498 +v 5.000000 1.612498 4.203350 +v 5.000000 1.624997 4.200001 +v 4.214195 2.385803 4.205227 +v 4.205227 2.385803 4.214195 +v 4.214195 2.394772 4.214195 +v 4.214195 1.605227 4.214195 +v 4.205231 1.614195 4.214195 +v 4.214195 1.614195 4.205227 +v 4.203350 0.812499 5.000000 +v 4.212498 0.803348 5.000000 +v 4.200001 0.824997 5.000000 +v 4.212498 1.596651 5.000000 +v 4.203350 1.587500 5.000000 +v 4.200001 1.575002 5.000000 +v 4.212498 1.575002 4.203350 +v 4.203350 1.575002 4.212498 +v 4.200001 1.575002 4.224998 +v 4.203350 1.587500 4.224998 +v 4.212498 1.596651 4.224998 +v 4.224998 1.596651 4.212498 +v 4.224998 1.587500 4.203350 +v 5.000000 1.587500 4.203350 +v 5.000000 1.596651 4.212498 +v 4.212498 0.803348 4.224998 +v 4.203350 0.812499 4.224998 +v 4.200001 0.824997 4.224998 +v 4.203350 0.824997 4.212498 +v 4.212498 0.824997 4.203350 +v 4.224998 0.812499 4.203350 +v 4.224998 0.803348 4.212498 +v 4.214195 1.585803 4.205227 +v 4.205231 1.585803 4.214195 +v 4.214195 1.594770 4.214195 +v 4.214195 0.805228 4.214195 +v 4.205231 0.814195 4.214195 +v 4.214195 0.814195 4.205227 +v 4.225006 0.787500 4.203350 +v 4.225006 0.796651 4.212498 +v 4.224998 0.799999 4.200001 +v -4.200001 0.024997 4.612499 +v -4.203350 0.012498 4.612499 +v -4.212498 0.003348 4.612499 +v -4.224998 0.000000 4.612499 +v -4.200001 0.399999 4.612499 +v -4.200001 0.399999 5.000000 +v 4.203350 0.012498 -1.024998 +v 4.212498 0.003348 -1.024998 +v 4.224998 0.000000 -1.024998 +v 4.224998 0.003348 -1.012499 +v 4.224998 0.012498 -1.003349 +v 4.224998 0.024997 -1.000000 +v 4.212498 0.024997 -1.003349 +v 4.203350 0.024997 -1.012499 +v 4.200001 0.024997 -1.024998 +v 4.212498 0.796651 -1.024998 +v 4.203350 0.787500 -1.024998 +v 4.200001 0.775002 -1.024998 +v 4.203350 0.775002 -1.012499 +v 4.212498 0.775002 -1.003349 +v 4.224998 0.775002 -1.000000 +v 4.224998 0.787500 -1.003349 +v 4.224998 0.796651 -1.012499 +v 4.224998 0.800000 -1.024998 +v 4.212498 0.775002 -1.796652 +v 4.203350 0.775002 -1.787500 +v 4.200001 0.775002 -1.775002 +v 4.203350 0.787500 -1.775002 +v 4.212498 0.796651 -1.775002 +v 4.224998 0.800000 -1.775002 +v 4.224998 0.796651 -1.787500 +v 4.224998 0.787500 -1.796652 +v 4.224998 0.775002 -1.799999 +v 5.000000 0.775002 -1.799999 +v 5.000000 0.787500 -1.796652 +v 5.000000 0.796651 -1.787500 +v 5.000000 0.800000 -1.775002 +v 4.212498 0.003348 -1.775002 +v 4.203350 0.012498 -1.775002 +v 4.200001 0.024997 -1.775002 +v 4.203350 0.024997 -1.787500 +v 4.212498 0.024997 -1.796652 +v 4.224998 0.024997 -1.799999 +v 4.224998 0.012498 -1.796652 +v 4.224998 0.003348 -1.787500 +v 4.224998 0.000000 -1.775002 +v 4.205227 0.014195 -1.014196 +v 4.214195 0.005228 -1.014196 +v 4.214195 0.014195 -1.005229 +v 4.214195 0.794771 -1.014196 +v 4.205227 0.785803 -1.014196 +v 4.214195 0.785803 -1.005229 +v 4.214195 0.785803 -1.794771 +v 4.205227 0.785803 -1.785803 +v 4.214195 0.794771 -1.785803 +v 4.214195 0.005228 -1.785803 +v 4.205227 0.014195 -1.785803 +v 4.214195 0.014195 -1.794771 +v 5.000000 4.424999 2.200001 +v 5.000000 4.412498 2.196651 +v 5.000000 4.403347 2.187502 +v 5.000000 4.400002 2.175003 +v 5.000000 4.799999 2.175003 +v 5.000000 4.796650 2.187502 +v 5.000000 4.787502 2.196651 +v 5.000000 4.775002 2.200001 +v 4.603348 4.412498 2.175003 +v 4.612499 4.403347 2.175003 +v 4.625000 4.400002 2.175003 +v 4.625000 4.403347 2.187502 +v 4.625000 4.412498 2.196651 +v 4.625000 4.424999 2.200001 +v 4.612499 4.424999 2.196651 +v 4.603348 4.424999 2.187502 +v 4.599998 4.424999 2.175003 +v 4.612499 4.796650 2.175003 +v 4.603348 4.787502 2.175003 +v 4.599998 4.775002 2.175003 +v 4.603348 4.775002 2.187502 +v 4.612499 4.775002 2.196651 +v 4.625000 4.775002 2.200001 +v 4.625000 4.787502 2.196651 +v 4.625000 4.796650 2.187502 +v 4.625000 4.799999 2.175003 +v 4.625000 4.412498 1.803349 +v 4.625000 4.403347 1.812498 +v 4.625000 4.400002 1.824997 +v 4.612499 4.403347 1.824997 +v 4.603348 4.412498 1.824997 +v 4.599998 4.424999 1.824997 +v 4.603348 4.424999 1.812498 +v 4.612499 4.424999 1.803349 +v 4.625000 4.424999 1.799999 +v 4.625000 4.796650 1.812498 +v 4.625000 4.787502 1.803349 +v 4.625000 4.775002 1.799999 +v 4.612499 4.775002 1.803349 +v 4.603348 4.775002 1.812498 +v 4.599998 4.775002 1.824997 +v 4.603348 4.787502 1.824997 +v 4.612499 4.796650 1.824997 +v 4.625000 4.799999 1.824997 +v 5.000000 4.400002 1.824997 +v 5.000000 4.403347 1.812498 +v 5.000000 4.412498 1.803349 +v 5.000000 4.424999 1.799999 +v 5.000000 4.775002 1.799999 +v 5.000000 4.787502 1.803349 +v 5.000000 4.796650 1.812498 +v 5.000000 4.799999 1.824997 +v 4.605228 4.414196 2.185804 +v 4.614197 4.405228 2.185804 +v 4.614197 4.414196 2.194771 +v 4.614197 4.794773 2.185804 +v 4.605228 4.785805 2.185804 +v 4.614197 4.785805 2.194771 +v 4.614197 4.414196 1.805229 +v 4.614197 4.405228 1.814196 +v 4.605228 4.414196 1.814196 +v 4.614197 4.794773 1.814196 +v 4.614197 4.785805 1.805229 +v 4.605228 4.785805 1.814196 +v 4.203350 0.012498 -0.224998 +v 4.212498 0.003348 -0.224998 +v 4.224998 0.000000 -0.224998 +v 4.224998 0.003348 -0.212499 +v 4.224998 0.012498 -0.203349 +v 4.224998 0.024997 -0.200000 +v 4.212498 0.024997 -0.203349 +v 4.203350 0.024997 -0.212499 +v 4.200001 0.024997 -0.224998 +v 5.000000 0.024997 -0.200000 +v 5.000000 0.012498 -0.203349 +v 5.000000 0.003348 -0.212499 +v 5.000000 0.000000 -0.224998 +v 4.212498 0.796651 -0.224998 +v 4.203350 0.787500 -0.224998 +v 4.200001 0.775002 -0.224998 +v 4.203350 0.775002 -0.212499 +v 4.212498 0.775002 -0.203349 +v 4.224998 0.775002 -0.200000 +v 4.224998 0.787500 -0.203349 +v 4.224998 0.796651 -0.212499 +v 4.224998 0.800000 -0.224998 +v 5.000000 0.800000 -0.224998 +v 5.000000 0.796651 -0.212499 +v 5.000000 0.787500 -0.203349 +v 5.000000 0.775002 -0.200000 +v 4.212498 0.775002 -0.996651 +v 4.203350 0.775002 -0.987501 +v 4.200001 0.775002 -0.975002 +v 4.203350 0.787500 -0.975002 +v 4.212498 0.796651 -0.975002 +v 4.224998 0.800000 -0.975002 +v 4.224998 0.796651 -0.987501 +v 4.224998 0.787500 -0.996651 +v 4.212498 0.003348 -0.975002 +v 4.203350 0.012498 -0.975002 +v 4.200001 0.024997 -0.975002 +v 4.203350 0.024997 -0.987501 +v 4.212498 0.024997 -0.996651 +v 4.224998 0.012498 -0.996651 +v 4.224998 0.003348 -0.987501 +v 4.224998 0.000000 -0.975002 +v 4.205227 0.014195 -0.214196 +v 4.214195 0.005228 -0.214196 +v 4.214195 0.014195 -0.205229 +v 4.214195 0.794771 -0.214196 +v 4.205227 0.785803 -0.214196 +v 4.214195 0.785803 -0.205229 +v 4.214195 0.785803 -0.994771 +v 4.205227 0.785803 -0.985804 +v 4.214195 0.794771 -0.985804 +v 4.214195 0.005228 -0.985804 +v 4.205227 0.014195 -0.985804 +v 4.214195 0.014195 -0.994771 +v 4.203350 0.012498 -1.824997 +v 4.212498 0.003348 -1.824997 +v 4.224998 0.000000 -1.824997 +v 4.224998 0.003348 -1.812498 +v 4.224998 0.012498 -1.803349 +v 4.212498 0.024997 -1.803349 +v 4.203350 0.024997 -1.812498 +v 4.200001 0.024997 -1.824997 +v 4.212498 0.796651 -1.824997 +v 4.203350 0.787500 -1.824997 +v 4.200001 0.775002 -1.824997 +v 4.203350 0.775002 -1.812498 +v 4.212498 0.775002 -1.803349 +v 4.224998 0.787500 -1.803349 +v 4.224998 0.796651 -1.812498 +v 4.224998 0.800000 -1.824997 +v 5.000000 0.800000 -1.824997 +v 5.000000 0.796651 -1.812498 +v 5.000000 0.787500 -1.803349 +v 4.212498 0.775002 -2.596651 +v 4.203350 0.775002 -2.587502 +v 4.200001 0.775002 -2.575003 +v 4.203350 0.787500 -2.575003 +v 4.212498 0.796651 -2.575003 +v 4.224998 0.800000 -2.575003 +v 4.224998 0.796651 -2.587502 +v 4.224998 0.787500 -2.596651 +v 4.224998 0.775002 -2.600000 +v 5.000000 0.775002 -2.600000 +v 5.000000 0.787500 -2.596651 +v 5.000000 0.796651 -2.587502 +v 5.000000 0.800000 -2.575003 +v 4.212498 0.003348 -2.575003 +v 4.203350 0.012498 -2.575003 +v 4.200001 0.024997 -2.575003 +v 4.203350 0.024997 -2.587502 +v 4.212498 0.024997 -2.596651 +v 4.224998 0.024997 -2.600000 +v 4.224998 0.012498 -2.596651 +v 4.224998 0.003348 -2.587502 +v 4.224998 0.000000 -2.575003 +v 5.000000 0.000000 -2.575003 +v 5.000000 0.003348 -2.587502 +v 5.000000 0.012498 -2.596651 +v 5.000000 0.024997 -2.600000 +v 4.205227 0.014195 -1.814196 +v 4.214195 0.005228 -1.814196 +v 4.214195 0.014195 -1.805229 +v 4.214195 0.794771 -1.814196 +v 4.205227 0.785803 -1.814196 +v 4.214195 0.785803 -1.805229 +v 4.214195 0.785803 -2.594770 +v 4.205227 0.785803 -2.585804 +v 4.214195 0.794771 -2.585804 +v 4.214195 0.005228 -2.585804 +v 4.205227 0.014195 -2.585804 +v 4.214195 0.014195 -2.594770 +v 5.000000 1.600000 -1.024998 +v 5.000000 1.596651 -1.012499 +v 5.000000 1.587502 -1.003349 +v 5.000000 1.575002 -1.000000 +v 4.203350 0.812499 -1.024998 +v 4.212502 0.803349 -1.024998 +v 4.224998 0.803349 -1.012499 +v 4.224998 0.812499 -1.003349 +v 4.224998 0.824997 -1.000000 +v 4.212502 0.824998 -1.003349 +v 4.203350 0.824998 -1.012499 +v 4.200001 0.824998 -1.024998 +v 4.212502 1.596651 -1.024998 +v 4.203350 1.587502 -1.024998 +v 4.200001 1.575003 -1.024998 +v 4.203350 1.575003 -1.012499 +v 4.212502 1.575003 -1.003349 +v 4.224998 1.575002 -1.000000 +v 4.224998 1.587502 -1.003349 +v 4.224998 1.596651 -1.012499 +v 4.224998 1.600000 -1.024998 +v 4.224998 0.812499 -1.796652 +v 4.224998 0.803349 -1.787500 +v 4.212502 0.803349 -1.775002 +v 4.203350 0.812499 -1.775002 +v 4.200001 0.824998 -1.775002 +v 4.203350 0.824998 -1.787500 +v 4.212502 0.824998 -1.796652 +v 4.224998 0.824998 -1.799999 +v 4.224998 1.596651 -1.787500 +v 4.224998 1.587502 -1.796652 +v 4.224998 1.575003 -1.799999 +v 4.212502 1.575003 -1.796652 +v 4.203350 1.575003 -1.787500 +v 4.200001 1.575003 -1.775002 +v 4.203350 1.587502 -1.775002 +v 4.212502 1.596651 -1.775002 +v 4.224998 1.600000 -1.775002 +v 5.000000 0.803349 -1.787500 +v 5.000000 0.812499 -1.796652 +v 5.000000 0.824998 -1.799999 +v 5.000000 1.575003 -1.799999 +v 5.000000 1.587502 -1.796652 +v 5.000000 1.596651 -1.787500 +v 5.000000 1.600000 -1.775002 +v 4.205231 0.814197 -1.014196 +v 4.214195 0.805229 -1.014196 +v 4.214195 0.814197 -1.005229 +v 4.214195 1.594771 -1.014196 +v 4.205231 1.585804 -1.014196 +v 4.214195 1.585804 -1.005229 +v 4.214195 0.814197 -1.794771 +v 4.214195 0.805229 -1.785803 +v 4.205231 0.814197 -1.785803 +v 4.214195 1.594771 -1.785803 +v 4.214195 1.585804 -1.794771 +v 4.205231 1.585804 -1.785803 +v 5.000000 4.024998 -1.799999 +v 5.000000 4.012501 -1.803349 +v 5.000000 4.003349 -1.812498 +v 5.000000 4.000000 -1.824997 +v 5.000000 4.400002 -1.824997 +v 5.000000 4.396652 -1.812498 +v 5.000000 4.387501 -1.803349 +v 5.000000 4.375004 -1.799999 +v 4.603348 4.012501 -1.824997 +v 4.612499 4.003349 -1.824997 +v 4.625000 4.000000 -1.824997 +v 4.625000 4.003349 -1.812498 +v 4.625000 4.012501 -1.803349 +v 4.625000 4.024998 -1.799999 +v 4.612499 4.024998 -1.803349 +v 4.603348 4.024998 -1.812498 +v 4.599998 4.024998 -1.824997 +v 4.612499 4.396652 -1.824997 +v 4.603348 4.387501 -1.824997 +v 4.599998 4.375004 -1.824997 +v 4.603348 4.375004 -1.812498 +v 4.612499 4.375004 -1.803349 +v 4.625000 4.375004 -1.799999 +v 4.625000 4.387501 -1.803349 +v 4.625000 4.396652 -1.812498 +v 4.625000 4.400002 -1.824997 +v 4.625000 4.012501 -2.196651 +v 4.625000 4.003349 -2.187502 +v 4.625000 4.000000 -2.175003 +v 4.612499 4.003349 -2.175003 +v 4.603348 4.012501 -2.175003 +v 4.599998 4.024998 -2.175003 +v 4.603348 4.024998 -2.187502 +v 4.612499 4.024998 -2.196651 +v 4.625000 4.024998 -2.200001 +v 4.625000 4.396652 -2.187502 +v 4.625000 4.387501 -2.196651 +v 4.625000 4.375004 -2.200001 +v 4.612499 4.375004 -2.196651 +v 4.603348 4.375004 -2.187502 +v 4.599998 4.375004 -2.175003 +v 4.603348 4.387501 -2.175003 +v 4.612499 4.396652 -2.175003 +v 4.625000 4.400002 -2.175003 +v 5.000000 4.000000 -2.175003 +v 5.000000 4.003349 -2.187502 +v 5.000000 4.012501 -2.196651 +v 5.000000 4.024998 -2.200001 +v 5.000000 4.375004 -2.200001 +v 5.000000 4.387501 -2.196651 +v 5.000000 4.396652 -2.187502 +v 5.000000 4.400002 -2.175003 +v 4.605228 4.014194 -1.814196 +v 4.614197 4.005230 -1.814196 +v 4.614197 4.014194 -1.805229 +v 4.614197 4.394772 -1.814196 +v 4.605228 4.385803 -1.814196 +v 4.614197 4.385803 -1.805229 +v 4.614197 4.014194 -2.194771 +v 4.614197 4.005230 -2.185804 +v 4.605228 4.014194 -2.185804 +v 4.614197 4.394772 -2.185804 +v 4.614197 4.385803 -2.194771 +v 4.605228 4.385803 -2.185804 +v 5.000000 4.024998 -1.400000 +v 5.000000 4.012501 -1.403349 +v 5.000000 4.003349 -1.412498 +v 5.000000 4.000000 -1.424997 +v 5.000000 4.400002 -1.424997 +v 5.000000 4.396652 -1.412498 +v 5.000000 4.387501 -1.403349 +v 5.000000 4.375004 -1.400000 +v 4.603348 4.012501 -1.424997 +v 4.612499 4.003349 -1.424997 +v 4.625000 4.000000 -1.424997 +v 4.625000 4.003349 -1.412498 +v 4.625000 4.012501 -1.403349 +v 4.625000 4.024998 -1.400000 +v 4.612499 4.024998 -1.403349 +v 4.603348 4.024998 -1.412498 +v 4.599998 4.024998 -1.424997 +v 4.612499 4.396652 -1.424997 +v 4.603348 4.387501 -1.424997 +v 4.599998 4.375004 -1.424997 +v 4.603348 4.375004 -1.412498 +v 4.612499 4.375004 -1.403349 +v 4.625000 4.375004 -1.400000 +v 4.625000 4.387501 -1.403349 +v 4.625000 4.396652 -1.412498 +v 4.625000 4.400002 -1.424997 +v 4.625000 4.012501 -1.796652 +v 4.625000 4.003349 -1.787500 +v 4.625000 4.000000 -1.775002 +v 4.612499 4.003349 -1.775002 +v 4.603348 4.012501 -1.775002 +v 4.599998 4.024998 -1.775002 +v 4.603348 4.024998 -1.787500 +v 4.612499 4.024998 -1.796652 +v 4.625000 4.396652 -1.787500 +v 4.625000 4.387501 -1.796652 +v 4.612499 4.375004 -1.796652 +v 4.603348 4.375004 -1.787500 +v 4.599998 4.375004 -1.775002 +v 4.603348 4.387501 -1.775002 +v 4.612499 4.396652 -1.775002 +v 4.625000 4.400002 -1.775002 +v 5.000000 4.000000 -1.775002 +v 5.000000 4.003349 -1.787500 +v 5.000000 4.012501 -1.796652 +v 5.000000 4.387501 -1.796652 +v 5.000000 4.396652 -1.787500 +v 5.000000 4.400002 -1.775002 +v 4.605228 4.014194 -1.414196 +v 4.614197 4.005230 -1.414196 +v 4.614197 4.014194 -1.405229 +v 4.614197 4.394772 -1.414196 +v 4.605228 4.385803 -1.414196 +v 4.614197 4.385803 -1.405229 +v 4.614197 4.014194 -1.794771 +v 4.614197 4.005230 -1.785803 +v 4.605228 4.014194 -1.785803 +v 4.614197 4.394772 -1.785803 +v 4.614197 4.385803 -1.794771 +v 4.605228 4.385803 -1.785803 +v 5.000000 3.624996 0.200000 +v 5.000000 3.612499 0.196651 +v 5.000000 3.603348 0.187501 +v 5.000000 3.599998 0.175002 +v 5.000000 4.400002 0.175002 +v 5.000000 4.396652 0.187501 +v 5.000000 4.387501 0.196651 +v 5.000000 4.375004 0.200000 +v 4.203350 3.612499 0.175002 +v 4.212502 3.603348 0.175002 +v 4.224998 3.599998 0.175002 +v 4.224998 3.603348 0.187501 +v 4.224998 3.612499 0.196651 +v 4.224998 3.624996 0.200000 +v 4.212502 3.624996 0.196651 +v 4.203350 3.624996 0.187501 +v 4.200001 3.624996 0.175002 +v 4.212502 4.396652 0.175002 +v 4.203350 4.387501 0.175002 +v 4.200001 4.375004 0.175002 +v 4.203350 4.375004 0.187501 +v 4.212502 4.375004 0.196651 +v 4.224998 4.375004 0.200000 +v 4.224998 4.387501 0.196651 +v 4.224998 4.396652 0.187501 +v 4.224998 4.400002 0.175002 +v 4.224998 3.612499 -0.596651 +v 4.224998 3.603348 -0.587501 +v 4.224998 3.599998 -0.575002 +v 4.212502 3.603348 -0.575002 +v 4.203350 3.612499 -0.575002 +v 4.200001 3.624996 -0.575002 +v 4.203350 3.624996 -0.587501 +v 4.212502 3.624996 -0.596651 +v 4.224998 3.624996 -0.600000 +v 4.224998 4.396652 -0.587501 +v 4.224998 4.387501 -0.596651 +v 4.224998 4.375004 -0.600000 +v 4.212502 4.375004 -0.596651 +v 4.203350 4.375004 -0.587501 +v 4.200001 4.375004 -0.575002 +v 4.203350 4.387501 -0.575002 +v 4.212502 4.396652 -0.575002 +v 4.224998 4.400002 -0.575002 +v 5.000000 3.599998 -0.575002 +v 5.000000 3.603348 -0.587501 +v 5.000000 3.612499 -0.596651 +v 5.000000 3.624996 -0.600000 +v 5.000000 4.375004 -0.600000 +v 5.000000 4.387501 -0.596651 +v 5.000000 4.396652 -0.587501 +v 5.000000 4.400002 -0.575002 +v 4.205231 3.614197 0.185804 +v 4.214195 3.605228 0.185804 +v 4.214195 3.614197 0.194771 +v 4.214195 4.394772 0.185804 +v 4.205231 4.385803 0.185804 +v 4.214195 4.385803 0.194771 +v 4.214195 3.614197 -0.594771 +v 4.214195 3.605228 -0.585804 +v 4.205231 3.614197 -0.585804 +v 4.214195 4.394772 -0.585804 +v 4.214195 4.385803 -0.594771 +v 4.205231 4.385803 -0.585804 +v 5.000000 4.424999 -1.400000 +v 5.000000 4.412498 -1.403349 +v 5.000000 4.403347 -1.412498 +v 5.000000 4.799999 -1.424997 +v 5.000000 4.796650 -1.412498 +v 5.000000 4.787502 -1.403349 +v 5.000000 4.775002 -1.400000 +v 4.603348 4.412498 -1.424997 +v 4.612499 4.403347 -1.424997 +v 4.625000 4.403347 -1.412498 +v 4.625000 4.412498 -1.403349 +v 4.625000 4.424999 -1.400000 +v 4.612499 4.424999 -1.403349 +v 4.603348 4.424999 -1.412498 +v 4.599998 4.424999 -1.424997 +v 4.612499 4.796650 -1.424997 +v 4.603348 4.787502 -1.424997 +v 4.599998 4.775002 -1.424997 +v 4.603348 4.775002 -1.412498 +v 4.612499 4.775002 -1.403349 +v 4.625000 4.775002 -1.400000 +v 4.625000 4.787502 -1.403349 +v 4.625000 4.796650 -1.412498 +v 4.625000 4.799999 -1.424997 +v 4.625000 4.412498 -1.796652 +v 4.625000 4.403347 -1.787500 +v 4.612499 4.403347 -1.775002 +v 4.603348 4.412498 -1.775002 +v 4.599998 4.424999 -1.775002 +v 4.603348 4.424999 -1.787500 +v 4.612499 4.424999 -1.796652 +v 4.625000 4.424999 -1.799999 +v 4.625000 4.796650 -1.787500 +v 4.625000 4.787502 -1.796652 +v 4.625000 4.775002 -1.799999 +v 4.612499 4.775002 -1.796652 +v 4.603348 4.775002 -1.787500 +v 4.599998 4.775002 -1.775002 +v 4.603348 4.787502 -1.775002 +v 4.612499 4.796650 -1.775002 +v 4.625000 4.799999 -1.775002 +v 5.000000 4.403347 -1.787500 +v 5.000000 4.412498 -1.796652 +v 5.000000 4.424999 -1.799999 +v 5.000000 4.775002 -1.799999 +v 5.000000 4.787502 -1.796652 +v 5.000000 4.796650 -1.787500 +v 5.000000 4.799999 -1.775002 +v 4.605228 4.414196 -1.414196 +v 4.614197 4.405228 -1.414196 +v 4.614197 4.414196 -1.405229 +v 4.614197 4.794773 -1.414196 +v 4.605228 4.785805 -1.414196 +v 4.614197 4.785805 -1.405229 +v 4.614197 4.414196 -1.794771 +v 4.614197 4.405228 -1.785803 +v 4.605228 4.414196 -1.785803 +v 4.614197 4.794773 -1.785803 +v 4.614197 4.785805 -1.794771 +v 4.605228 4.785805 -1.785803 +v 4.203350 0.812499 -0.224998 +v 4.212498 0.803348 -0.224998 +v 4.224998 0.803348 -0.212499 +v 4.224998 0.812499 -0.203349 +v 4.224998 0.824997 -0.200000 +v 4.212498 0.824997 -0.203349 +v 4.203350 0.824997 -0.212499 +v 4.200001 0.824997 -0.224998 +v 5.000000 0.824997 -0.200000 +v 5.000000 0.812499 -0.203349 +v 5.000000 0.803348 -0.212499 +v 4.212498 1.596651 -0.224998 +v 4.203350 1.587500 -0.224998 +v 4.200001 1.575002 -0.224998 +v 4.203350 1.575002 -0.212499 +v 4.212498 1.575002 -0.203349 +v 4.224998 1.575002 -0.200000 +v 4.224998 1.587500 -0.203349 +v 4.224998 1.596651 -0.212499 +v 4.224998 1.600000 -0.224998 +v 5.000000 1.600000 -0.224998 +v 5.000000 1.596651 -0.212499 +v 5.000000 1.587500 -0.203349 +v 5.000000 1.575002 -0.200000 +v 4.212498 1.575002 -0.996651 +v 4.203350 1.575002 -0.987501 +v 4.200001 1.575002 -0.975002 +v 4.203350 1.587500 -0.975002 +v 4.212498 1.596651 -0.975002 +v 4.224998 1.600000 -0.975002 +v 4.224998 1.596651 -0.987501 +v 4.224998 1.587500 -0.996651 +v 5.000000 1.587500 -0.996651 +v 5.000000 1.596651 -0.987501 +v 5.000000 1.600000 -0.975002 +v 4.212498 0.803348 -0.975002 +v 4.203350 0.812499 -0.975002 +v 4.200001 0.824997 -0.975002 +v 4.203350 0.824997 -0.987501 +v 4.212498 0.824997 -0.996651 +v 4.224998 0.812499 -0.996651 +v 4.224998 0.803348 -0.987501 +v 4.205227 0.814195 -0.214196 +v 4.214195 0.805228 -0.214196 +v 4.214195 0.814195 -0.205229 +v 4.214195 1.594770 -0.214196 +v 4.205227 1.585803 -0.214196 +v 4.214195 1.585803 -0.205229 +v 4.214195 1.585803 -0.994771 +v 4.205227 1.585803 -0.985804 +v 4.214195 1.594770 -0.985804 +v 4.214195 0.805228 -0.985804 +v 4.205227 0.814195 -0.985804 +v 4.214195 0.814195 -0.994771 +v 5.000000 0.824998 0.600000 +v 5.000000 0.812499 0.596651 +v 5.000000 0.803349 0.587501 +v 5.000000 0.800000 0.575002 +v 5.000000 1.600000 0.575002 +v 5.000000 1.596651 0.587501 +v 5.000000 1.587502 0.596651 +v 5.000000 1.575003 0.600000 +v 4.203350 0.812499 0.575002 +v 4.212502 0.803349 0.575002 +v 4.224998 0.800000 0.575002 +v 4.224998 0.803349 0.587501 +v 4.224998 0.812499 0.596651 +v 4.224998 0.824998 0.600000 +v 4.212502 0.824998 0.596651 +v 4.203350 0.824998 0.587501 +v 4.200001 0.824998 0.575002 +v 4.212502 1.596651 0.575002 +v 4.203350 1.587502 0.575002 +v 4.200001 1.575003 0.575002 +v 4.203350 1.575003 0.587501 +v 4.212502 1.575003 0.596651 +v 4.224998 1.575003 0.600000 +v 4.224998 1.587502 0.596651 +v 4.224998 1.596651 0.587501 +v 4.224998 1.600000 0.575002 +v 4.224998 0.812499 -0.196651 +v 4.224998 0.803349 -0.187501 +v 4.224998 0.800000 -0.175002 +v 4.212502 0.803349 -0.175002 +v 4.203350 0.812499 -0.175002 +v 4.200001 0.824998 -0.175002 +v 4.203350 0.824998 -0.187501 +v 4.212502 0.824998 -0.196651 +v 4.224998 1.596651 -0.187501 +v 4.224998 1.587502 -0.196651 +v 4.212502 1.575003 -0.196651 +v 4.203350 1.575003 -0.187501 +v 4.200001 1.575003 -0.175002 +v 4.203350 1.587502 -0.175002 +v 4.212502 1.596651 -0.175002 +v 4.224998 1.600000 -0.175002 +v 5.000000 0.800000 -0.175002 +v 5.000000 0.803349 -0.187501 +v 5.000000 0.812499 -0.196651 +v 5.000000 1.587502 -0.196651 +v 5.000000 1.596651 -0.187501 +v 5.000000 1.600000 -0.175002 +v 4.205231 0.814197 0.585804 +v 4.214195 0.805229 0.585804 +v 4.214195 0.814197 0.594771 +v 4.214195 1.594771 0.585804 +v 4.205231 1.585804 0.585804 +v 4.214195 1.585804 0.594771 +v 4.214195 0.814197 -0.194771 +v 4.214195 0.805229 -0.185804 +v 4.205231 0.814197 -0.185804 +v 4.214195 1.594771 -0.185804 +v 4.214195 1.585804 -0.194771 +v 4.205231 1.585804 -0.185804 +v 4.224998 0.800000 -1.000000 +v 5.000000 0.000000 5.000000 +v 5.000000 0.000000 -5.000000 +v 5.000000 6.000000 4.999920 +v 5.000000 6.000000 -5.000080 +v -5.000000 0.000000 -5.000000 +v -5.000000 6.000000 -5.000080 +v -5.000000 0.000000 5.000000 +v -5.000000 6.000000 4.999920 +v -3.000000 6.000000 2.999758 +v 3.000000 6.000000 2.999758 +v -3.000000 6.000000 -3.000242 +v 3.000000 6.000000 -3.000242 +v -3.000000 7.000000 2.999758 +v 3.000000 7.000000 2.999758 +v -3.000000 7.000000 -3.000242 +v 3.000000 7.000000 -3.000242 +v -0.420773 5.995846 0.920694 +v 1.007731 5.995846 0.095947 +v -0.420773 5.995846 0.780227 +v 0.886083 5.995846 0.025714 +v -0.029536 6.077560 0.017053 +v 0.000000 6.077560 0.034105 +v 0.029536 6.077560 0.017053 +v 0.029536 6.077560 -0.017053 +v 0.000000 6.077560 -0.034105 +v -0.029536 6.077560 -0.017053 +v -0.021385 6.088909 0.012347 +v 0.000000 6.088909 0.024693 +v 0.021385 6.088909 0.012347 +v 0.021385 6.088909 -0.012347 +v 0.000000 6.088909 -0.024693 +v -0.021385 6.088909 -0.012347 +v -0.021385 6.942329 0.012347 +v 0.000000 6.942329 0.024693 +v 0.021385 6.942329 0.012347 +v 0.021385 6.942329 -0.012347 +v 0.000000 6.942329 -0.024693 +v -0.021385 6.942329 -0.012347 +v -0.373408 5.958347 0.819373 +v -0.361159 5.969334 0.840589 +v -0.356086 5.995850 0.849377 +v -0.390731 5.995850 0.789369 +v -0.385657 5.969334 0.798157 +v 0.896302 5.958347 0.086306 +v 0.908551 5.969334 0.107522 +v 0.913625 5.995850 0.116310 +v 0.878978 5.995850 0.056302 +v 0.884052 5.969334 0.065090 +v -0.379046 5.965031 0.822628 +v -0.368969 5.974014 0.840083 +v -0.379046 5.995850 0.822628 +v -0.364769 5.995850 0.847357 +v -0.393323 5.995850 0.797899 +v -0.389124 5.974014 0.805173 +v 0.901941 5.965031 0.083050 +v 0.912019 5.974014 0.100504 +v 0.901941 5.995850 0.083050 +v 0.916219 5.995850 0.107779 +v 0.887664 5.995850 0.058321 +v 0.891864 5.974014 0.065596 +v -0.074251 6.985794 -0.066856 +v -0.091277 6.985794 -0.040639 +v -0.099368 6.985794 -0.010444 +v -0.097732 6.985794 0.020774 +v -0.086529 6.985794 0.049958 +v -0.066856 6.985794 0.074251 +v -0.040639 6.985794 0.091277 +v -0.010444 6.985794 0.099368 +v 0.020774 6.985794 0.097732 +v 0.049958 6.985794 0.086529 +v 0.074251 6.985794 0.066856 +v 0.091277 6.985794 0.040639 +v 0.099368 6.985794 0.010444 +v 0.097732 6.985794 -0.020774 +v 0.086529 6.985794 -0.049958 +v 0.066856 6.985794 -0.074251 +v 0.040639 6.985794 -0.091277 +v 0.010444 6.985794 -0.099368 +v -0.020774 6.985794 -0.097732 +v -0.049958 6.985794 -0.086529 +v -0.023142 6.942329 -0.020837 +v -0.028449 6.942329 -0.012666 +v 0.000000 6.942329 0.000000 +v -0.030970 6.942329 -0.003255 +v -0.030460 6.942329 0.006475 +v -0.026969 6.942329 0.015570 +v -0.020837 6.942329 0.023142 +v -0.012666 6.942329 0.028449 +v -0.003255 6.942329 0.030970 +v 0.006475 6.942329 0.030460 +v 0.015570 6.942329 0.026969 +v 0.023142 6.942329 0.020837 +v 0.028448 6.942329 0.012666 +v 0.030970 6.942329 0.003255 +v 0.030460 6.942329 -0.006474 +v 0.026969 6.942329 -0.015570 +v 0.020837 6.942329 -0.023142 +v 0.012666 6.942329 -0.028448 +v 0.003255 6.942329 -0.030970 +v -0.006474 6.942329 -0.030460 +v -0.015570 6.942329 -0.026969 +v -0.019250 6.020546 0.011114 +v 0.000000 6.020546 0.022228 +v 0.019250 6.020546 0.011114 +v 0.019250 6.020546 -0.011114 +v 0.000000 6.020546 -0.022228 +v -0.019250 6.020546 -0.011114 +v 0.000000 6.020546 0.000000 +v -0.420773 5.995846 0.850461 +v 0.946907 5.995846 0.060830 +v -0.029536 6.053177 0.017053 +v 0.000000 6.053177 0.034105 +v 0.029536 6.053177 0.017053 +v 0.029536 6.053177 -0.017053 +v 0.000000 6.053177 -0.034105 +v -0.029536 6.053177 -0.017053 +v -0.029536 6.036861 0.017053 +v 0.000000 6.036861 0.034105 +v 0.029536 6.036861 0.017053 +v 0.029536 6.036861 -0.017053 +v 0.000000 6.036861 -0.034105 +v -0.029536 6.036861 -0.017053 +v -0.420773 6.101368 0.780227 +v 0.886083 6.101368 0.025714 +v 0.221059 6.053177 0.416992 +v 0.250596 6.053177 0.399939 +v 0.221059 6.036861 0.416992 +v 0.250596 6.036861 0.399939 +v -0.471655 6.053177 -0.017053 +v -0.471655 6.053177 0.017053 +v -0.471655 6.036861 -0.017053 +v -0.471655 6.036861 0.017053 +v 0.250596 6.053177 -0.399939 +v 0.221059 6.053177 -0.416992 +v 0.250596 6.036861 -0.399939 +v 0.221059 6.036861 -0.416992 +v 1.007731 5.995846 -0.095947 +v -0.420773 5.995846 -0.920694 +v 0.886083 5.995846 -0.025714 +v -0.420773 5.995846 -0.780228 +v 0.896302 5.958347 -0.086305 +v 0.908551 5.969334 -0.107521 +v 0.913625 5.995850 -0.116309 +v 0.878979 5.995850 -0.056302 +v 0.884053 5.969334 -0.065090 +v -0.373408 5.958347 -0.819373 +v -0.361158 5.969334 -0.840590 +v -0.356085 5.995850 -0.849378 +v -0.390730 5.995850 -0.789368 +v -0.385657 5.969334 -0.798156 +v 0.901940 5.965031 -0.083050 +v 0.912017 5.974014 -0.100505 +v 0.901939 5.995850 -0.083050 +v 0.916217 5.995850 -0.107779 +v 0.887662 5.995850 -0.058321 +v 0.891862 5.974014 -0.065596 +v -0.379047 5.965031 -0.822629 +v -0.368970 5.974014 -0.840083 +v -0.379047 5.995850 -0.822629 +v -0.364770 5.995850 -0.847358 +v -0.393324 5.995850 -0.797900 +v -0.389124 5.974014 -0.805175 +v 0.946907 5.995846 -0.060830 +v -0.420773 5.995846 -0.850461 +v 0.886083 6.101368 -0.025714 +v -0.420773 6.101368 -0.780228 +v -0.586958 5.995846 -0.824748 +v -0.586958 5.995846 0.824748 +v -0.465310 5.995846 -0.754514 +v -0.465311 5.995846 0.754514 +v -0.522894 5.958347 -0.733068 +v -0.547392 5.969334 -0.733068 +v -0.557539 5.995850 -0.733068 +v -0.488248 5.995850 -0.733068 +v -0.498395 5.969334 -0.733068 +v -0.522894 5.958347 0.733067 +v -0.547393 5.969334 0.733067 +v -0.557540 5.995850 0.733067 +v -0.488247 5.995850 0.733067 +v -0.498395 5.969334 0.733067 +v -0.522894 5.965031 -0.739578 +v -0.543049 5.974014 -0.739578 +v -0.522894 5.995850 -0.739577 +v -0.551448 5.995850 -0.739578 +v -0.494339 5.995850 -0.739577 +v -0.502739 5.974014 -0.739578 +v -0.522894 5.965031 0.739579 +v -0.543048 5.974014 0.739579 +v -0.522894 5.995850 0.739579 +v -0.551448 5.995850 0.739579 +v -0.494340 5.995850 0.739579 +v -0.502739 5.974014 0.739579 +v -0.526134 5.995846 -0.789631 +v -0.526134 5.995846 0.789631 +v -0.465310 6.101368 -0.754514 +v -0.465311 6.101368 0.754514 +v -0.029536 6.032745 0.017053 +v 0.000000 6.032745 0.034105 +v 0.029536 6.032745 0.017053 +v 0.029536 6.032745 -0.017053 +v 0.000000 6.032745 -0.034105 +v -0.029536 6.032745 -0.017053 +v -0.029536 6.053177 0.000000 +v -0.471655 6.053177 0.000000 +v 0.014768 6.053177 0.025579 +v 0.235827 6.053177 0.408465 +v 0.014768 6.053177 -0.025579 +v 0.235827 6.053177 -0.408465 +vt 0.659933 0.542983 +vt 0.660468 0.543515 +vt 0.645078 0.558938 +vt 0.644422 0.558426 +vt 0.661006 0.544049 +vt 0.645663 0.559526 +vt 0.661542 0.544584 +vt 0.646179 0.560177 +vt 0.661641 0.596454 +vt 0.661108 0.596990 +vt 0.645685 0.581598 +vt 0.646195 0.580940 +vt 0.660574 0.597528 +vt 0.645099 0.582186 +vt 0.660039 0.598064 +vt 0.644449 0.582703 +vt 0.644243 0.559119 +vt 0.623904 0.559070 +vt 0.623721 0.558369 +vt 0.644130 0.559818 +vt 0.624016 0.559774 +vt 0.644077 0.560523 +vt 0.624069 0.560479 +vt 0.644804 0.580651 +vt 0.644102 0.580598 +vt 0.644779 0.560471 +vt 0.645503 0.580763 +vt 0.645481 0.560359 +vt 0.644154 0.581301 +vt 0.624038 0.581386 +vt 0.624092 0.580681 +vt 0.644267 0.582005 +vt 0.623925 0.582087 +vt 0.623746 0.582781 +vt 0.607596 0.543536 +vt 0.608131 0.542999 +vt 0.623072 0.558880 +vt 0.607062 0.544073 +vt 0.622487 0.559460 +vt 0.606529 0.544608 +vt 0.621976 0.560111 +vt 0.622687 0.580861 +vt 0.621989 0.581052 +vt 0.622668 0.560297 +vt 0.623389 0.580741 +vt 0.623366 0.560417 +vt 0.607161 0.597168 +vt 0.606625 0.596633 +vt 0.622506 0.581695 +vt 0.607699 0.597702 +vt 0.623090 0.582275 +vt 0.608234 0.598233 +vt 0.644671 0.559936 +vt 0.644776 0.559316 +vt 0.645286 0.559819 +vt 0.644805 0.581808 +vt 0.644688 0.581193 +vt 0.645306 0.581296 +vt 0.622864 0.559767 +vt 0.623365 0.559260 +vt 0.623483 0.559877 +vt 0.623393 0.581895 +vt 0.622882 0.581398 +vt 0.623497 0.581274 +vt 0.160162 0.744348 +vt 0.160532 0.745113 +vt 0.159423 0.745303 +vt 0.159454 0.744606 +vt 0.158358 0.745093 +vt 0.158568 0.744452 +vt 0.157377 0.744545 +vt 0.157990 0.743956 +vt 0.158633 0.743403 +vt 0.159120 0.743886 +vt 0.159306 0.742891 +vt 0.159755 0.743607 +vt 0.133251 0.708672 +vt 0.132517 0.709096 +vt 0.132326 0.708175 +vt 0.133013 0.708095 +vt 0.132525 0.707255 +vt 0.133175 0.707338 +vt 0.133141 0.706447 +vt 0.133691 0.706821 +vt 0.134201 0.707251 +vt 0.133719 0.707713 +vt 0.134662 0.707736 +vt 0.133967 0.708220 +vt 0.196054 0.717700 +vt 0.196730 0.717573 +vt 0.196948 0.718562 +vt 0.196293 0.718368 +vt 0.196739 0.719454 +vt 0.196153 0.719118 +vt 0.196250 0.720208 +vt 0.195716 0.719550 +vt 0.195213 0.718866 +vt 0.195637 0.718506 +vt 0.194748 0.718156 +vt 0.195388 0.717888 +vt 0.171216 0.667108 +vt 0.170866 0.666308 +vt 0.171870 0.666347 +vt 0.171862 0.666914 +vt 0.172864 0.666496 +vt 0.172719 0.667034 +vt 0.173841 0.666740 +vt 0.173291 0.667418 +vt 0.172696 0.668026 +vt 0.172216 0.667579 +vt 0.172067 0.668578 +vt 0.171619 0.667862 +vt 0.179700 0.607683 +vt 0.180631 0.607870 +vt 0.181565 0.608049 +vt 0.182499 0.608224 +vt 0.199128 0.718330 +vt 0.199321 0.719159 +vt 0.198262 0.719026 +vt 0.198437 0.718363 +vt 0.197366 0.718484 +vt 0.197697 0.717927 +vt 0.197332 0.717240 +vt 0.197966 0.716954 +vt 0.198286 0.717576 +vt 0.198626 0.716723 +vt 0.198899 0.717520 +vt 0.174744 0.667093 +vt 0.174615 0.666050 +vt 0.174979 0.666519 +vt 0.175439 0.665570 +vt 0.175653 0.666061 +vt 0.176268 0.665222 +vt 0.176344 0.665931 +vt 0.176426 0.666639 +vt 0.175741 0.666724 +vt 0.176505 0.667346 +vt 0.175637 0.667283 +vt 0.241926 0.697420 +vt 0.242499 0.697127 +vt 0.242756 0.697927 +vt 0.242247 0.697981 +vt 0.242920 0.698765 +vt 0.242367 0.698710 +vt 0.242972 0.699635 +vt 0.242163 0.699203 +vt 0.241445 0.698675 +vt 0.241734 0.698285 +vt 0.240814 0.698083 +vt 0.241366 0.697739 +vt 0.219270 0.661123 +vt 0.219316 0.660427 +vt 0.219964 0.660698 +vt 0.219755 0.661143 +vt 0.220567 0.661043 +vt 0.220294 0.661436 +vt 0.221124 0.661450 +vt 0.220592 0.661853 +vt 0.220030 0.662203 +vt 0.219793 0.661756 +vt 0.219439 0.662503 +vt 0.219311 0.661817 +vt 0.267910 0.645799 +vt 0.283313 0.668066 +vt 0.231829 0.677797 +vt 0.231099 0.678239 +vt 0.230367 0.678678 +vt 0.229634 0.679112 +vt 0.221113 0.712094 +vt 0.220688 0.711356 +vt 0.220259 0.710616 +vt 0.219827 0.709873 +vt 0.208355 0.687492 +vt 0.183431 0.608393 +vt 0.184372 0.608554 +vt 0.185317 0.608711 +vt 0.242103 0.624865 +vt 0.243003 0.625453 +vt 0.243900 0.626046 +vt 0.244792 0.626643 +vt 0.283664 0.668862 +vt 0.284011 0.669653 +vt 0.284353 0.670438 +vt 0.132763 0.705913 +vt 0.132165 0.707040 +vt 0.132130 0.706373 +vt 0.131131 0.707114 +vt 0.131279 0.706471 +vt 0.130132 0.706811 +vt 0.130675 0.706161 +vt 0.131252 0.705532 +vt 0.131762 0.705825 +vt 0.131862 0.704936 +vt 0.132339 0.705403 +vt 0.095174 0.674959 +vt 0.094315 0.675198 +vt 0.094522 0.674284 +vt 0.095066 0.674384 +vt 0.094844 0.673429 +vt 0.095309 0.673642 +vt 0.095244 0.672634 +vt 0.095750 0.673146 +vt 0.096236 0.673672 +vt 0.095759 0.674109 +vt 0.096701 0.674213 +vt 0.095966 0.674623 +vt 0.168675 0.664811 +vt 0.168952 0.664152 +vt 0.169652 0.664727 +vt 0.169294 0.665133 +vt 0.170305 0.665433 +vt 0.169828 0.665766 +vt 0.169884 0.666404 +vt 0.168966 0.666318 +vt 0.169041 0.665756 +vt 0.168110 0.666123 +vt 0.168396 0.665468 +vt 0.129316 0.647367 +vt 0.128899 0.646868 +vt 0.129513 0.646597 +vt 0.129684 0.647043 +vt 0.130161 0.646418 +vt 0.130254 0.646887 +vt 0.130831 0.646331 +vt 0.130721 0.647011 +vt 0.130528 0.647662 +vt 0.130100 0.647465 +vt 0.130260 0.648277 +vt 0.129770 0.647838 +vt 0.116791 0.603285 +vt 0.176878 0.607083 +vt 0.066900 0.640451 +vt 0.067405 0.639759 +vt 0.067918 0.639064 +vt 0.068439 0.638366 +vt 0.113388 0.603872 +vt 0.114521 0.603673 +vt 0.115656 0.603477 +vt 0.177822 0.607287 +vt 0.178763 0.607488 +vt 0.068366 0.474697 +vt 0.043714 0.500857 +vt 0.042678 0.500344 +vt 0.067063 0.474710 +vt 0.041618 0.499822 +vt 0.065831 0.474511 +vt 0.040534 0.499285 +vt 0.064684 0.474168 +vt 0.015711 0.469459 +vt 0.015098 0.467966 +vt 0.041915 0.460064 +vt 0.042236 0.460920 +vt 0.014498 0.466462 +vt 0.041742 0.459158 +vt 0.013920 0.464956 +vt 0.041706 0.458221 +vt 0.020076 0.428475 +vt 0.020564 0.427376 +vt 0.049414 0.431259 +vt 0.048653 0.432203 +vt 0.021056 0.426304 +vt 0.050304 0.430376 +vt 0.021548 0.425261 +vt 0.051337 0.429577 +vt 0.065286 0.473429 +vt 0.042916 0.460246 +vt 0.065896 0.472695 +vt 0.043517 0.459523 +vt 0.066528 0.471968 +vt 0.044035 0.458747 +vt 0.050687 0.432728 +vt 0.051715 0.432955 +vt 0.043280 0.458490 +vt 0.049668 0.432480 +vt 0.042502 0.458314 +vt 0.080210 0.443904 +vt 0.079770 0.444942 +vt 0.051737 0.431868 +vt 0.080704 0.442894 +vt 0.051630 0.430739 +vt 0.081248 0.441912 +vt 0.081822 0.445910 +vt 0.082889 0.446310 +vt 0.067846 0.473669 +vt 0.080780 0.445457 +vt 0.067227 0.472763 +vt 0.043036 0.459143 +vt 0.042498 0.459789 +vt 0.042321 0.459002 +vt 0.050803 0.430939 +vt 0.050944 0.431905 +vt 0.050020 0.431681 +vt 0.067100 0.473990 +vt 0.066047 0.473875 +vt 0.066587 0.473182 +vt 0.082340 0.443151 +vt 0.081539 0.443596 +vt 0.082869 0.444655 +vt 0.082001 0.444827 +vt 0.080987 0.444508 +vt 0.689898 0.953190 +vt 0.689462 0.954139 +vt 0.674620 0.939428 +vt 0.675153 0.938746 +vt 0.688754 0.954856 +vt 0.674010 0.940036 +vt 0.687808 0.955295 +vt 0.673334 0.940572 +vt 0.637354 0.955278 +vt 0.636399 0.954859 +vt 0.651103 0.940027 +vt 0.651786 0.940560 +vt 0.635686 0.954153 +vt 0.650495 0.939416 +vt 0.635264 0.953202 +vt 0.649959 0.938740 +vt 0.674433 0.938559 +vt 0.674446 0.917386 +vt 0.675173 0.917197 +vt 0.673707 0.938440 +vt 0.673715 0.917501 +vt 0.672974 0.938383 +vt 0.672984 0.917556 +vt 0.652090 0.939113 +vt 0.652148 0.938381 +vt 0.673029 0.939115 +vt 0.651972 0.939839 +vt 0.673145 0.939846 +vt 0.651416 0.938435 +vt 0.651424 0.917495 +vt 0.652155 0.917553 +vt 0.650686 0.938551 +vt 0.650696 0.917377 +vt 0.649976 0.917190 +vt 0.689443 0.901777 +vt 0.689864 0.902730 +vt 0.674637 0.916520 +vt 0.688733 0.901067 +vt 0.674029 0.915910 +vt 0.687784 0.900630 +vt 0.673346 0.915377 +vt 0.651985 0.916091 +vt 0.651796 0.915364 +vt 0.673160 0.916097 +vt 0.652101 0.916821 +vt 0.673042 0.916824 +vt 0.636376 0.901093 +vt 0.637328 0.900670 +vt 0.651119 0.915900 +vt 0.635665 0.901802 +vt 0.650509 0.916508 +vt 0.635228 0.902751 +vt 0.673584 0.939003 +vt 0.674227 0.939113 +vt 0.673706 0.939643 +vt 0.650887 0.939112 +vt 0.651527 0.938991 +vt 0.651418 0.939634 +vt 0.673714 0.916302 +vt 0.674244 0.916825 +vt 0.673604 0.916946 +vt 0.650902 0.916823 +vt 0.651424 0.916292 +vt 0.651546 0.916932 +vt 0.125776 0.501388 +vt 0.125700 0.502001 +vt 0.125070 0.501669 +vt 0.125268 0.501231 +vt 0.124440 0.501337 +vt 0.124680 0.500933 +vt 0.123805 0.501011 +vt 0.124293 0.500606 +vt 0.124892 0.500277 +vt 0.125214 0.500654 +vt 0.125586 0.500035 +vt 0.125768 0.500740 +vt 0.165365 0.539151 +vt 0.164487 0.539643 +vt 0.164410 0.538962 +vt 0.165136 0.538713 +vt 0.164315 0.538287 +vt 0.165026 0.538069 +vt 0.164220 0.537612 +vt 0.165115 0.537479 +vt 0.166055 0.537472 +vt 0.165833 0.538125 +vt 0.167028 0.537627 +vt 0.166233 0.538512 +vt 0.100390 0.525420 +vt 0.099873 0.525737 +vt 0.099637 0.525123 +vt 0.100073 0.525037 +vt 0.099550 0.524484 +vt 0.100012 0.524484 +vt 0.099602 0.523847 +vt 0.100265 0.524102 +vt 0.100873 0.524413 +vt 0.100560 0.524733 +vt 0.101423 0.524777 +vt 0.100906 0.525101 +vt 0.119491 0.555676 +vt 0.119469 0.556275 +vt 0.118707 0.556154 +vt 0.118935 0.555767 +vt 0.118008 0.555928 +vt 0.118322 0.555582 +vt 0.117380 0.555613 +vt 0.118008 0.555229 +vt 0.118643 0.554868 +vt 0.118890 0.555243 +vt 0.119285 0.554530 +vt 0.119430 0.555092 +vt 0.081008 0.469303 +vt 0.081881 0.468621 +vt 0.082755 0.467942 +vt 0.083625 0.467265 +vt 0.158899 0.595233 +vt 0.158004 0.595333 +vt 0.157098 0.595439 +vt 0.156185 0.595548 +vt 0.096000 0.585890 +vt 0.094994 0.585272 +vt 0.093989 0.584645 +vt 0.092987 0.584010 +vt 0.056783 0.531421 +vt 0.056896 0.530170 +vt 0.057016 0.528919 +vt 0.057142 0.527670 +vt 0.151600 0.470558 +vt 0.151424 0.471126 +vt 0.150913 0.470751 +vt 0.151185 0.470422 +vt 0.150452 0.470322 +vt 0.150758 0.470049 +vt 0.150048 0.469841 +vt 0.150556 0.469622 +vt 0.151090 0.469461 +vt 0.151250 0.469893 +vt 0.151645 0.469354 +vt 0.151677 0.469964 +vt 0.194337 0.485105 +vt 0.194896 0.485842 +vt 0.194036 0.486161 +vt 0.193923 0.485561 +vt 0.193195 0.486289 +vt 0.193205 0.485711 +vt 0.192392 0.486292 +vt 0.192617 0.485509 +vt 0.192843 0.484731 +vt 0.193405 0.485000 +vt 0.193081 0.483961 +vt 0.193725 0.484486 +vt 0.126304 0.499868 +vt 0.125364 0.499296 +vt 0.125956 0.499421 +vt 0.125277 0.498586 +vt 0.125849 0.498801 +vt 0.125282 0.497908 +vt 0.126024 0.498359 +vt 0.126760 0.498822 +vt 0.126520 0.499203 +vt 0.127497 0.499292 +vt 0.126951 0.499623 +vt 0.169822 0.536618 +vt 0.170403 0.537320 +vt 0.169267 0.537555 +vt 0.169155 0.536999 +vt 0.168138 0.537646 +vt 0.168190 0.537087 +vt 0.167486 0.536839 +vt 0.167985 0.536099 +vt 0.168613 0.536428 +vt 0.168517 0.535402 +vt 0.169192 0.535979 +vt 0.131672 0.426057 +vt 0.132847 0.425776 +vt 0.134023 0.425501 +vt 0.135199 0.425232 +vt 0.191643 0.432759 +vt 0.192554 0.432890 +vt 0.193461 0.433024 +vt 0.194361 0.433158 +vt 0.161565 0.594966 +vt 0.160681 0.595052 +vt 0.159792 0.595141 +vt 0.084499 0.466601 +vt 0.085366 0.465923 +vt 0.086236 0.465246 +vt 0.254013 0.497433 +vt 0.253587 0.498218 +vt 0.252780 0.497686 +vt 0.253294 0.497168 +vt 0.252003 0.497095 +vt 0.252618 0.496649 +vt 0.251254 0.496450 +vt 0.252369 0.496089 +vt 0.253517 0.495855 +vt 0.253598 0.496440 +vt 0.254681 0.495722 +vt 0.254386 0.496605 +vt 0.303186 0.538451 +vt 0.302734 0.539093 +vt 0.302172 0.538485 +vt 0.302645 0.538075 +vt 0.301610 0.537871 +vt 0.302121 0.537521 +vt 0.301046 0.537249 +vt 0.301874 0.537008 +vt 0.302800 0.536881 +vt 0.302923 0.537426 +vt 0.303812 0.536889 +vt 0.303566 0.537728 +vt 0.228072 0.548179 +vt 0.227743 0.548895 +vt 0.227128 0.548364 +vt 0.227523 0.547887 +vt 0.226564 0.547741 +vt 0.227059 0.547320 +vt 0.226073 0.547011 +vt 0.227007 0.546754 +vt 0.227897 0.546680 +vt 0.227818 0.547219 +vt 0.228732 0.546729 +vt 0.228396 0.547455 +vt 0.269252 0.566572 +vt 0.269570 0.567155 +vt 0.268898 0.567269 +vt 0.268820 0.566786 +vt 0.268223 0.567346 +vt 0.268202 0.566865 +vt 0.267544 0.567392 +vt 0.267720 0.566751 +vt 0.267995 0.566142 +vt 0.268445 0.566331 +vt 0.268355 0.565572 +vt 0.268844 0.566041 +vt 0.244668 0.436049 +vt 0.245400 0.435997 +vt 0.246134 0.435930 +vt 0.246867 0.435859 +vt 0.329747 0.588952 +vt 0.328875 0.589201 +vt 0.328004 0.589467 +vt 0.327133 0.589731 +vt 0.275350 0.610419 +vt 0.274342 0.610539 +vt 0.273334 0.610653 +vt 0.272325 0.610759 +vt 0.218167 0.603464 +vt 0.217322 0.603319 +vt 0.216479 0.603173 +vt 0.215640 0.603028 +vt 0.196962 0.486859 +vt 0.196716 0.487529 +vt 0.196055 0.487048 +vt 0.196397 0.486635 +vt 0.195447 0.486482 +vt 0.195870 0.486135 +vt 0.195699 0.485603 +vt 0.196510 0.485488 +vt 0.196570 0.486013 +vt 0.197318 0.485477 +vt 0.197161 0.486175 +vt 0.250313 0.495847 +vt 0.250210 0.496880 +vt 0.249881 0.496312 +vt 0.249153 0.497123 +vt 0.248999 0.496578 +vt 0.248105 0.497250 +vt 0.248185 0.496544 +vt 0.248278 0.495839 +vt 0.249066 0.495918 +vt 0.248384 0.495131 +vt 0.249348 0.495421 +vt 0.173103 0.538204 +vt 0.172871 0.538912 +vt 0.172006 0.538508 +vt 0.172372 0.538036 +vt 0.171175 0.537987 +vt 0.171672 0.537560 +vt 0.171453 0.536988 +vt 0.172490 0.536829 +vt 0.172548 0.537377 +vt 0.173502 0.536779 +vt 0.173311 0.537493 +vt 0.225557 0.546361 +vt 0.225195 0.547228 +vt 0.225079 0.546689 +vt 0.224328 0.547328 +vt 0.224330 0.546801 +vt 0.223479 0.547340 +vt 0.223714 0.546654 +vt 0.223987 0.545979 +vt 0.224572 0.546187 +vt 0.224306 0.545319 +vt 0.224966 0.545793 +vt 0.195253 0.433285 +vt 0.196147 0.433412 +vt 0.197041 0.433540 +vt 0.242440 0.436177 +vt 0.243185 0.436140 +vt 0.243929 0.436097 +vt 0.214805 0.602894 +vt 0.213967 0.602759 +vt 0.213126 0.602625 +vt 0.164221 0.594740 +vt 0.163337 0.594813 +vt 0.162451 0.594888 +vt 0.294213 0.469772 +vt 0.293705 0.470385 +vt 0.293380 0.469789 +vt 0.293835 0.469495 +vt 0.293151 0.469143 +vt 0.293620 0.468937 +vt 0.293028 0.468459 +vt 0.293711 0.468405 +vt 0.294384 0.468399 +vt 0.294230 0.468926 +vt 0.295045 0.468439 +vt 0.294661 0.469123 +vt 0.330257 0.485249 +vt 0.330434 0.485884 +vt 0.329637 0.485966 +vt 0.329757 0.485516 +vt 0.328901 0.485904 +vt 0.329117 0.485494 +vt 0.328233 0.485734 +vt 0.328701 0.485220 +vt 0.329155 0.484699 +vt 0.329539 0.485002 +vt 0.329612 0.484184 +vt 0.329979 0.484680 +vt 0.255796 0.495691 +vt 0.255196 0.494754 +vt 0.255810 0.495066 +vt 0.255828 0.493971 +vt 0.256301 0.494363 +vt 0.256507 0.493300 +vt 0.256935 0.493931 +vt 0.257367 0.494560 +vt 0.256710 0.494947 +vt 0.257801 0.495193 +vt 0.256840 0.495506 +vt 0.305962 0.535705 +vt 0.306743 0.536231 +vt 0.305825 0.536553 +vt 0.305489 0.536091 +vt 0.304843 0.536771 +vt 0.304646 0.536292 +vt 0.303902 0.536145 +vt 0.304096 0.535450 +vt 0.304789 0.535669 +vt 0.304357 0.534792 +vt 0.305168 0.535221 +vt 0.300531 0.425215 +vt 0.301547 0.425212 +vt 0.302564 0.425214 +vt 0.303584 0.425224 +vt 0.332390 0.588194 +vt 0.331504 0.588436 +vt 0.330623 0.588693 +vt 0.247598 0.435789 +vt 0.248335 0.435702 +vt 0.249075 0.435613 +vt 0.331728 0.487105 +vt 0.331165 0.487727 +vt 0.330828 0.487195 +vt 0.331326 0.486817 +vt 0.330579 0.486578 +vt 0.331124 0.486263 +vt 0.331296 0.485748 +vt 0.332092 0.485745 +vt 0.331816 0.486234 +vt 0.332824 0.485831 +vt 0.332276 0.486471 +vt 0.369415 0.505636 +vt 0.369578 0.506219 +vt 0.368893 0.506039 +vt 0.368969 0.505644 +vt 0.368225 0.505837 +vt 0.368358 0.505476 +vt 0.367573 0.505611 +vt 0.367892 0.505219 +vt 0.368271 0.504864 +vt 0.368708 0.505153 +vt 0.368702 0.504550 +vt 0.369123 0.505072 +vt 0.309587 0.536707 +vt 0.309713 0.537477 +vt 0.308761 0.537236 +vt 0.308854 0.536699 +vt 0.307762 0.536843 +vt 0.308011 0.536334 +vt 0.307592 0.535708 +vt 0.308483 0.535381 +vt 0.308735 0.535983 +vt 0.309380 0.535177 +vt 0.309476 0.535941 +vt 0.353293 0.535569 +vt 0.353946 0.535711 +vt 0.353526 0.536149 +vt 0.353141 0.535946 +vt 0.352993 0.536492 +vt 0.352675 0.536239 +vt 0.352367 0.536726 +vt 0.352155 0.536243 +vt 0.352026 0.535759 +vt 0.352530 0.535807 +vt 0.351980 0.535285 +vt 0.352639 0.535428 +vt 0.406585 0.490802 +vt 0.406923 0.492078 +vt 0.407255 0.493358 +vt 0.407580 0.494641 +vt 0.393379 0.563093 +vt 0.392476 0.564071 +vt 0.391572 0.565046 +vt 0.390667 0.566018 +vt 0.335106 0.587454 +vt 0.334193 0.587700 +vt 0.333287 0.587946 +vt 0.359867 0.444481 +vt 0.360764 0.445031 +vt 0.358069 0.443390 +vt 0.358969 0.443934 +vt 0.361662 0.445571 +vt 0.362564 0.446121 +vt 0.363470 0.446673 +vt 0.755469 0.767802 +vt 0.756003 0.768328 +vt 0.740772 0.783697 +vt 0.740119 0.783192 +vt 0.756538 0.768856 +vt 0.741355 0.784276 +vt 0.757073 0.769385 +vt 0.741870 0.784918 +vt 0.757346 0.820825 +vt 0.756820 0.821359 +vt 0.741452 0.806128 +vt 0.741957 0.805475 +vt 0.756291 0.821895 +vt 0.740872 0.806711 +vt 0.755762 0.822429 +vt 0.740229 0.807226 +vt 0.739944 0.783880 +vt 0.719746 0.783964 +vt 0.719562 0.783271 +vt 0.739835 0.784573 +vt 0.719859 0.784661 +vt 0.739783 0.785272 +vt 0.719915 0.785357 +vt 0.740574 0.805191 +vt 0.739877 0.805139 +vt 0.740481 0.785217 +vt 0.741269 0.805300 +vt 0.741177 0.785103 +vt 0.739931 0.805837 +vt 0.719956 0.805926 +vt 0.720007 0.805227 +vt 0.740046 0.806533 +vt 0.719846 0.806620 +vt 0.719672 0.807307 +vt 0.703499 0.768603 +vt 0.704029 0.768068 +vt 0.718919 0.783786 +vt 0.702971 0.769139 +vt 0.718340 0.784369 +vt 0.702444 0.769672 +vt 0.717835 0.785022 +vt 0.718613 0.805396 +vt 0.717921 0.805581 +vt 0.718523 0.785197 +vt 0.719310 0.805283 +vt 0.719217 0.785307 +vt 0.703252 0.821642 +vt 0.702717 0.821112 +vt 0.718435 0.806223 +vt 0.703788 0.822170 +vt 0.719019 0.806802 +vt 0.704321 0.822697 +vt 0.740372 0.784687 +vt 0.740473 0.784073 +vt 0.740982 0.784568 +vt 0.740579 0.806338 +vt 0.740460 0.805728 +vt 0.741075 0.805829 +vt 0.718716 0.784667 +vt 0.719211 0.784159 +vt 0.719330 0.784769 +vt 0.719317 0.806426 +vt 0.718809 0.805931 +vt 0.719419 0.805812 +vt 0.417585 0.819373 +vt 0.418291 0.819330 +vt 0.418472 0.820075 +vt 0.417839 0.820044 +vt 0.418354 0.820739 +vt 0.417728 0.820757 +vt 0.417880 0.821294 +vt 0.417203 0.821149 +vt 0.416701 0.820816 +vt 0.417182 0.820276 +vt 0.416355 0.820217 +vt 0.416924 0.819690 +vt 0.403501 0.786624 +vt 0.404062 0.786106 +vt 0.404689 0.786317 +vt 0.404089 0.786689 +vt 0.405175 0.786728 +vt 0.404588 0.787152 +vt 0.405525 0.787335 +vt 0.404866 0.787770 +vt 0.404178 0.788007 +vt 0.403883 0.787394 +vt 0.403443 0.787972 +vt 0.403304 0.787234 +vt 0.453243 0.814193 +vt 0.453697 0.814826 +vt 0.453175 0.815407 +vt 0.453007 0.814767 +vt 0.452500 0.815797 +vt 0.452264 0.815131 +vt 0.451732 0.816008 +vt 0.451599 0.815172 +vt 0.451589 0.814332 +vt 0.452337 0.814332 +vt 0.451712 0.813563 +vt 0.452522 0.813765 +vt 0.445614 0.761782 +vt 0.445205 0.761198 +vt 0.446219 0.760884 +vt 0.446308 0.761406 +vt 0.447280 0.760650 +vt 0.447224 0.761176 +vt 0.448329 0.760573 +vt 0.447743 0.761420 +vt 0.447015 0.762258 +vt 0.446707 0.761918 +vt 0.446295 0.762990 +vt 0.445993 0.762405 +vt 0.388069 0.852745 +vt 0.387104 0.852074 +vt 0.386317 0.851242 +vt 0.385652 0.850279 +vt 0.365127 0.789204 +vt 0.365172 0.788045 +vt 0.365272 0.786890 +vt 0.365430 0.785728 +vt 0.394082 0.731254 +vt 0.394587 0.730424 +vt 0.395165 0.729650 +vt 0.395797 0.728951 +vt 0.453233 0.868838 +vt 0.452154 0.869049 +vt 0.451060 0.869096 +vt 0.449969 0.868995 +vt 0.451678 0.755827 +vt 0.452390 0.756112 +vt 0.451831 0.756914 +vt 0.451424 0.756541 +vt 0.451191 0.757649 +vt 0.450854 0.757185 +vt 0.450430 0.758272 +vt 0.450267 0.757323 +vt 0.450220 0.756343 +vt 0.450751 0.756328 +vt 0.450251 0.755376 +vt 0.450975 0.755591 +vt 0.463963 0.710301 +vt 0.464682 0.710007 +vt 0.465093 0.710644 +vt 0.464415 0.710776 +vt 0.465258 0.711352 +vt 0.464598 0.711500 +vt 0.465168 0.712111 +vt 0.464404 0.712155 +vt 0.463701 0.711953 +vt 0.463884 0.711297 +vt 0.463090 0.711500 +vt 0.463431 0.710805 +vt 0.513149 0.761757 +vt 0.514016 0.762039 +vt 0.513369 0.762811 +vt 0.512912 0.762395 +vt 0.512677 0.763485 +vt 0.512304 0.763022 +vt 0.511878 0.764106 +vt 0.511646 0.763223 +vt 0.511485 0.762337 +vt 0.512129 0.762221 +vt 0.511395 0.761426 +vt 0.512284 0.761554 +vt 0.509328 0.700308 +vt 0.509155 0.699569 +vt 0.510105 0.699560 +vt 0.510075 0.700134 +vt 0.511076 0.699635 +vt 0.510910 0.700201 +vt 0.512009 0.699820 +vt 0.511364 0.700569 +vt 0.510603 0.701198 +vt 0.510266 0.700811 +vt 0.509774 0.701745 +vt 0.509530 0.701027 +vt 0.397666 0.726934 +vt 0.398271 0.726245 +vt 0.398856 0.725521 +vt 0.399411 0.724772 +vt 0.431641 0.678907 +vt 0.432383 0.678193 +vt 0.433146 0.677489 +vt 0.433925 0.676800 +vt 0.482828 0.648749 +vt 0.483641 0.648303 +vt 0.484440 0.647835 +vt 0.485224 0.647351 +vt 0.555948 0.806837 +vt 0.555291 0.807449 +vt 0.554634 0.808071 +vt 0.553988 0.808694 +vt 0.449648 0.758957 +vt 0.450714 0.759095 +vt 0.450044 0.759344 +vt 0.450927 0.759969 +vt 0.450290 0.760087 +vt 0.451074 0.760847 +vt 0.450171 0.760789 +vt 0.449277 0.760693 +vt 0.449475 0.760044 +vt 0.448976 0.759709 +vt 0.454821 0.813866 +vt 0.455589 0.813675 +vt 0.455749 0.814489 +vt 0.455079 0.814490 +vt 0.455786 0.815225 +vt 0.455029 0.815283 +vt 0.455658 0.815977 +vt 0.454850 0.815806 +vt 0.454148 0.815434 +vt 0.454398 0.814857 +vt 0.454171 0.814238 +vt 0.493346 0.811357 +vt 0.493583 0.810585 +vt 0.494313 0.810719 +vt 0.493992 0.811346 +vt 0.494948 0.811073 +vt 0.494643 0.811711 +vt 0.495432 0.811639 +vt 0.494996 0.812281 +vt 0.494378 0.812733 +vt 0.494041 0.812118 +vt 0.493668 0.812934 +vt 0.493378 0.812179 +vt 0.510467 0.766533 +vt 0.509796 0.766252 +vt 0.510411 0.765470 +vt 0.510811 0.765804 +vt 0.511105 0.764724 +vt 0.511410 0.765193 +vt 0.511954 0.765108 +vt 0.511877 0.766156 +vt 0.511426 0.766093 +vt 0.511730 0.767172 +vt 0.511096 0.766834 +vt 0.553370 0.809304 +vt 0.552815 0.809893 +vt 0.552295 0.810506 +vt 0.517780 0.853667 +vt 0.516996 0.854352 +vt 0.516170 0.854866 +vt 0.515221 0.855272 +vt 0.456382 0.868389 +vt 0.455333 0.868457 +vt 0.454292 0.868608 +vt 0.396426 0.728279 +vt 0.397051 0.727608 +vt 0.513459 0.698337 +vt 0.514339 0.697667 +vt 0.514406 0.698639 +vt 0.513749 0.698824 +vt 0.514468 0.699559 +vt 0.513809 0.699674 +vt 0.514508 0.700510 +vt 0.513659 0.700350 +vt 0.512816 0.700117 +vt 0.513084 0.699456 +vt 0.512703 0.699032 +vt 0.515445 0.760644 +vt 0.516255 0.760058 +vt 0.516489 0.760744 +vt 0.515740 0.761035 +vt 0.516761 0.761391 +vt 0.516002 0.761666 +vt 0.517060 0.762054 +vt 0.516047 0.762148 +vt 0.515003 0.762167 +vt 0.515125 0.761656 +vt 0.514662 0.761304 +vt 0.561371 0.747320 +vt 0.561292 0.746583 +vt 0.562072 0.746394 +vt 0.562012 0.747059 +vt 0.562891 0.746479 +vt 0.562774 0.747116 +vt 0.563625 0.746817 +vt 0.563378 0.747508 +vt 0.562876 0.748099 +vt 0.562362 0.747710 +vt 0.562203 0.748490 +vt 0.561683 0.747971 +vt 0.568002 0.709490 +vt 0.567202 0.709263 +vt 0.567443 0.708523 +vt 0.568074 0.708829 +vt 0.567867 0.707906 +vt 0.568452 0.708183 +vt 0.568517 0.707503 +vt 0.569075 0.707950 +vt 0.569383 0.708679 +vt 0.568859 0.708792 +vt 0.569465 0.709487 +vt 0.568733 0.709558 +vt 0.617770 0.708448 +vt 0.617563 0.709513 +vt 0.617458 0.710560 +vt 0.617449 0.711617 +vt 0.603682 0.770450 +vt 0.603242 0.771410 +vt 0.602699 0.772245 +vt 0.601988 0.773008 +vt 0.557834 0.805209 +vt 0.557205 0.805714 +vt 0.556590 0.806249 +vt 0.486001 0.646865 +vt 0.486777 0.646371 +vt 0.487549 0.645869 +vt 0.516159 0.695349 +vt 0.516722 0.695706 +vt 0.515985 0.696396 +vt 0.515658 0.696002 +vt 0.515173 0.697086 +vt 0.515002 0.696559 +vt 0.514473 0.696632 +vt 0.514769 0.695587 +vt 0.515172 0.695644 +vt 0.515126 0.694574 +vt 0.515643 0.694969 +vt 0.542433 0.655996 +vt 0.543114 0.656180 +vt 0.543113 0.656950 +vt 0.542573 0.656608 +vt 0.542916 0.657572 +vt 0.542246 0.657318 +vt 0.542443 0.658171 +vt 0.541818 0.657810 +vt 0.541370 0.657266 +vt 0.541884 0.656788 +vt 0.541204 0.656608 +vt 0.541799 0.656147 +vt 0.568857 0.705431 +vt 0.569650 0.705575 +vt 0.569483 0.706365 +vt 0.568871 0.706131 +vt 0.569128 0.707034 +vt 0.568542 0.706813 +vt 0.567946 0.707032 +vt 0.567589 0.706241 +vt 0.568097 0.706198 +vt 0.567421 0.705424 +vt 0.568137 0.705391 +vt 0.572785 0.667365 +vt 0.573388 0.666842 +vt 0.573926 0.667258 +vt 0.573312 0.667640 +vt 0.574267 0.667798 +vt 0.573752 0.668251 +vt 0.574414 0.668484 +vt 0.573756 0.668887 +vt 0.572992 0.668997 +vt 0.573078 0.668297 +vt 0.572282 0.668839 +vt 0.572391 0.668099 +vt 0.488305 0.645373 +vt 0.489042 0.644885 +vt 0.489779 0.644397 +vt 0.539453 0.615580 +vt 0.540519 0.615280 +vt 0.541574 0.615091 +vt 0.542722 0.615021 +vt 0.609018 0.637526 +vt 0.609987 0.638233 +vt 0.610713 0.639092 +vt 0.611182 0.640175 +vt 0.618336 0.705247 +vt 0.618178 0.706316 +vt 0.617990 0.707378 +vt 0.712313 0.681711 +vt 0.711614 0.681770 +vt 0.711675 0.681071 +vt 0.712208 0.681184 +vt 0.711789 0.680375 +vt 0.712313 0.680572 +vt 0.711966 0.679687 +vt 0.712608 0.680198 +vt 0.713188 0.680779 +vt 0.712816 0.681067 +vt 0.713702 0.681419 +vt 0.713011 0.681598 +vt 0.712606 0.726369 +vt 0.711966 0.726884 +vt 0.711788 0.726193 +vt 0.712318 0.725998 +vt 0.711675 0.725495 +vt 0.712201 0.725389 +vt 0.711615 0.724796 +vt 0.712315 0.724856 +vt 0.713011 0.724971 +vt 0.712814 0.725494 +vt 0.713699 0.725147 +vt 0.713187 0.725790 +vt 0.667193 0.681590 +vt 0.666505 0.681414 +vt 0.667017 0.680771 +vt 0.667390 0.681067 +vt 0.667598 0.680192 +vt 0.667887 0.680563 +vt 0.668238 0.679677 +vt 0.668417 0.680369 +vt 0.668529 0.681066 +vt 0.668003 0.681171 +vt 0.668588 0.681765 +vt 0.667889 0.681705 +vt 0.668415 0.726186 +vt 0.668238 0.726874 +vt 0.667595 0.726363 +vt 0.667892 0.725989 +vt 0.667017 0.725781 +vt 0.667387 0.725494 +vt 0.666502 0.725142 +vt 0.667193 0.724963 +vt 0.667890 0.724850 +vt 0.667996 0.725377 +vt 0.668590 0.724791 +vt 0.668529 0.725490 +vt 0.743733 0.648024 +vt 0.744263 0.648554 +vt 0.744794 0.649084 +vt 0.745326 0.649615 +vt 0.745362 0.756914 +vt 0.744832 0.757443 +vt 0.744302 0.757975 +vt 0.743771 0.758506 +vt 0.636471 0.758537 +vt 0.635942 0.758008 +vt 0.635410 0.757477 +vt 0.634879 0.756947 +vt 0.634842 0.649649 +vt 0.635371 0.649118 +vt 0.635901 0.648586 +vt 0.636432 0.648055 +vt 0.690170 0.822015 +vt 0.689642 0.822547 +vt 0.674306 0.807283 +vt 0.674813 0.806631 +vt 0.689113 0.823081 +vt 0.673726 0.807865 +vt 0.688582 0.823615 +vt 0.673083 0.808378 +vt 0.637142 0.823777 +vt 0.636610 0.823250 +vt 0.651874 0.807914 +vt 0.652526 0.808421 +vt 0.636076 0.822719 +vt 0.651292 0.807333 +vt 0.635542 0.822189 +vt 0.650779 0.806690 +vt 0.674125 0.806455 +vt 0.674085 0.786256 +vt 0.674778 0.786074 +vt 0.673432 0.806343 +vt 0.673388 0.786368 +vt 0.672733 0.806291 +vt 0.672691 0.786423 +vt 0.652813 0.807039 +vt 0.652866 0.806342 +vt 0.672787 0.806989 +vt 0.652702 0.807733 +vt 0.672899 0.807685 +vt 0.652169 0.806395 +vt 0.652122 0.786419 +vt 0.652820 0.786472 +vt 0.651472 0.806507 +vt 0.651429 0.786308 +vt 0.650742 0.786131 +vt 0.689480 0.770043 +vt 0.690014 0.770574 +vt 0.674264 0.785431 +vt 0.688946 0.769514 +vt 0.673683 0.784850 +vt 0.688414 0.768986 +vt 0.673031 0.784343 +vt 0.652655 0.785077 +vt 0.652472 0.784385 +vt 0.672855 0.785031 +vt 0.652767 0.785775 +vt 0.672744 0.785725 +vt 0.636442 0.769681 +vt 0.636973 0.769148 +vt 0.651829 0.784898 +vt 0.635913 0.770215 +vt 0.651248 0.785480 +vt 0.635385 0.770747 +vt 0.673317 0.806881 +vt 0.673931 0.806983 +vt 0.673435 0.807491 +vt 0.651666 0.807042 +vt 0.652276 0.806925 +vt 0.652173 0.807538 +vt 0.673383 0.785225 +vt 0.673891 0.785722 +vt 0.673281 0.785840 +vt 0.651623 0.785779 +vt 0.652120 0.785272 +vt 0.652238 0.785882 +vt 0.046316 0.953458 +vt 0.046416 0.953033 +vt 0.046770 0.953283 +vt 0.046602 0.953548 +vt 0.047101 0.953558 +vt 0.046903 0.953791 +vt 0.047409 0.953856 +vt 0.047054 0.954070 +vt 0.046673 0.954234 +vt 0.046565 0.953936 +vt 0.046271 0.954347 +vt 0.046266 0.953898 +vt 0.065644 0.933895 +vt 0.066003 0.933925 +vt 0.065868 0.934464 +vt 0.065545 0.934364 +vt 0.065686 0.934973 +vt 0.065309 0.934700 +vt 0.064944 0.934416 +vt 0.065213 0.934112 +vt 0.064590 0.934120 +vt 0.065043 0.933816 +vt 0.065538 0.933560 +vt 0.037130 0.913723 +vt 0.037535 0.913361 +vt 0.036723 0.914087 +vt 0.019938 0.946357 +vt 0.020073 0.945694 +vt 0.019807 0.947020 +vt 0.019680 0.947682 +vt 0.059998 0.980037 +vt 0.022518 0.984388 +vt 0.086130 0.954205 +vt 0.061942 0.979289 +vt 0.060647 0.979790 +vt 0.061294 0.979540 +vt 0.086404 0.953732 +vt 0.086673 0.953262 +vt 0.066064 0.933377 +vt 0.037934 0.913004 +vt 0.086938 0.952793 +vt 0.408829 0.922204 +vt 0.385099 0.902551 +vt 0.385963 0.901296 +vt 0.409135 0.921395 +vt 0.408656 0.923077 +vt 0.384242 0.903811 +vt 0.383394 0.905050 +vt 0.408638 0.924022 +vt 0.423546 0.904024 +vt 0.424095 0.904827 +vt 0.409857 0.921942 +vt 0.424720 0.905557 +vt 0.410572 0.922514 +vt 0.425410 0.906217 +vt 0.411291 0.923100 +vt 0.425171 0.903723 +vt 0.421158 0.877422 +vt 0.422682 0.876993 +vt 0.426013 0.903739 +vt 0.424346 0.903823 +vt 0.419637 0.877870 +vt 0.418121 0.878338 +vt 0.409339 0.923253 +vt 0.409628 0.923858 +vt 0.410125 0.923014 +vt 0.410517 0.923542 +vt 0.409467 0.922476 +vt 0.425108 0.905114 +vt 0.425708 0.905415 +vt 0.425301 0.904377 +vt 0.425910 0.904588 +vt 0.424563 0.904462 +vt 0.458802 0.884816 +vt 0.448668 0.910739 +vt 0.448221 0.911635 +vt 0.447798 0.912543 +vt 0.447381 0.913460 +vt 0.436215 0.945873 +vt 0.435760 0.946841 +vt 0.435377 0.947872 +vt 0.435111 0.948988 +vt 0.437520 0.948364 +vt 0.438644 0.947804 +vt 0.448669 0.981194 +vt 0.447262 0.981430 +vt 0.436335 0.948748 +vt 0.445855 0.981682 +vt 0.444455 0.981946 +vt 0.437871 0.947084 +vt 0.449277 0.913410 +vt 0.450283 0.913088 +vt 0.437063 0.946437 +vt 0.448305 0.913516 +vt 0.449290 0.911419 +vt 0.460127 0.885346 +vt 0.449832 0.912203 +vt 0.461444 0.885888 +vt 0.462751 0.886437 +vt 0.436217 0.948034 +vt 0.436522 0.947120 +vt 0.437245 0.947700 +vt 0.448437 0.912818 +vt 0.448815 0.911983 +vt 0.449277 0.912691 +vt 0.469387 0.946651 +vt 0.469771 0.945874 +vt 0.493179 0.957911 +vt 0.492042 0.959191 +vt 0.468854 0.947341 +vt 0.490887 0.960458 +vt 0.489721 0.961703 +vt 0.468196 0.947939 +vt 0.469021 0.945769 +vt 0.473978 0.925323 +vt 0.474979 0.925376 +vt 0.468265 0.945691 +vt 0.472998 0.925220 +vt 0.467502 0.945646 +vt 0.472034 0.925061 +vt 0.474100 0.923923 +vt 0.473441 0.923309 +vt 0.495922 0.911539 +vt 0.496462 0.913123 +vt 0.474611 0.924624 +vt 0.496985 0.914718 +vt 0.497486 0.916323 +vt 0.467849 0.947194 +vt 0.468441 0.946982 +vt 0.467619 0.946425 +vt 0.468200 0.946311 +vt 0.468910 0.946384 +vt 0.472430 0.924437 +vt 0.473106 0.924686 +vt 0.472902 0.923852 +vt 0.473533 0.924151 +vt 0.473985 0.924757 +vt 0.715302 0.874003 +vt 0.715953 0.874510 +vt 0.700534 0.889831 +vt 0.700004 0.889302 +vt 0.714722 0.873421 +vt 0.699470 0.888771 +vt 0.698939 0.888242 +vt 0.714209 0.872774 +vt 0.716299 0.872432 +vt 0.715601 0.872483 +vt 0.715617 0.852507 +vt 0.716315 0.852562 +vt 0.714903 0.872593 +vt 0.714924 0.852394 +vt 0.714237 0.852216 +vt 0.716131 0.873823 +vt 0.736329 0.873840 +vt 0.736509 0.874534 +vt 0.716244 0.873129 +vt 0.736218 0.873143 +vt 0.736167 0.872445 +vt 0.737736 0.873443 +vt 0.738245 0.872792 +vt 0.753550 0.888228 +vt 0.753021 0.888758 +vt 0.737154 0.874023 +vt 0.752490 0.889291 +vt 0.751957 0.889823 +vt 0.737558 0.872614 +vt 0.737580 0.852415 +vt 0.738274 0.852235 +vt 0.736865 0.872500 +vt 0.736883 0.852525 +vt 0.736185 0.852577 +vt 0.737182 0.851007 +vt 0.736531 0.850499 +vt 0.751968 0.835194 +vt 0.752498 0.835723 +vt 0.737762 0.851590 +vt 0.753031 0.836255 +vt 0.753563 0.836787 +vt 0.716154 0.851168 +vt 0.715974 0.850474 +vt 0.736353 0.851186 +vt 0.716264 0.851864 +vt 0.736241 0.851879 +vt 0.714745 0.851565 +vt 0.698932 0.836780 +vt 0.699461 0.836250 +vt 0.715328 0.850985 +vt 0.699992 0.835717 +vt 0.700525 0.835185 +vt 0.715096 0.873129 +vt 0.715707 0.873013 +vt 0.715603 0.873627 +vt 0.736748 0.873037 +vt 0.737362 0.873142 +vt 0.736864 0.873648 +vt 0.736777 0.851996 +vt 0.736882 0.851382 +vt 0.737388 0.851880 +vt 0.715734 0.851970 +vt 0.715120 0.851865 +vt 0.715618 0.851360 +vt 0.789339 0.723950 +vt 0.790038 0.723890 +vt 0.789979 0.724589 +vt 0.789445 0.724476 +vt 0.789865 0.725285 +vt 0.789342 0.725089 +vt 0.789690 0.725974 +vt 0.789046 0.725463 +vt 0.788466 0.724882 +vt 0.788837 0.724594 +vt 0.787950 0.724243 +vt 0.788642 0.724064 +vt 0.788991 0.679292 +vt 0.789630 0.678776 +vt 0.789810 0.679467 +vt 0.789279 0.679662 +vt 0.789923 0.680165 +vt 0.789397 0.680271 +vt 0.789983 0.680864 +vt 0.789284 0.680805 +vt 0.788588 0.680691 +vt 0.788784 0.680167 +vt 0.787899 0.680515 +vt 0.788410 0.679871 +vt 0.834459 0.724002 +vt 0.835148 0.724178 +vt 0.834638 0.724822 +vt 0.834264 0.724525 +vt 0.834056 0.725401 +vt 0.833769 0.725031 +vt 0.833417 0.725916 +vt 0.833238 0.725226 +vt 0.833124 0.724528 +vt 0.833650 0.724422 +vt 0.833064 0.723829 +vt 0.833763 0.723888 +vt 0.833182 0.679408 +vt 0.833357 0.678719 +vt 0.834002 0.679230 +vt 0.833705 0.679604 +vt 0.834581 0.679811 +vt 0.834210 0.680099 +vt 0.835097 0.680450 +vt 0.834405 0.680629 +vt 0.833708 0.680743 +vt 0.833603 0.680217 +vt 0.833009 0.680803 +vt 0.833068 0.680104 +vt 0.757968 0.757681 +vt 0.757436 0.757152 +vt 0.756905 0.756622 +vt 0.756373 0.756092 +vt 0.756193 0.648793 +vt 0.756721 0.648262 +vt 0.757251 0.647730 +vt 0.757781 0.647198 +vt 0.865080 0.647012 +vt 0.865611 0.647541 +vt 0.866143 0.648071 +vt 0.866675 0.648601 +vt 0.866855 0.755900 +vt 0.866326 0.756431 +vt 0.865796 0.756964 +vt 0.865266 0.757495 +vt 0.673661 0.850499 +vt 0.673010 0.849993 +vt 0.688398 0.834641 +vt 0.688930 0.835169 +vt 0.674242 0.851080 +vt 0.689465 0.835699 +vt 0.689996 0.836228 +vt 0.674756 0.851726 +vt 0.672668 0.852072 +vt 0.673366 0.852019 +vt 0.673389 0.871995 +vt 0.672690 0.871941 +vt 0.674063 0.851907 +vt 0.674082 0.872107 +vt 0.674769 0.872284 +vt 0.672833 0.850680 +vt 0.652635 0.850703 +vt 0.652453 0.850010 +vt 0.672721 0.851373 +vt 0.652746 0.851399 +vt 0.652799 0.852097 +vt 0.651227 0.851103 +vt 0.650720 0.851754 +vt 0.635385 0.836348 +vt 0.635913 0.835817 +vt 0.651809 0.850522 +vt 0.636444 0.835284 +vt 0.636975 0.834751 +vt 0.651407 0.851932 +vt 0.651426 0.872130 +vt 0.650733 0.872311 +vt 0.652101 0.852043 +vt 0.652123 0.872018 +vt 0.652820 0.871965 +vt 0.651826 0.873537 +vt 0.652478 0.874044 +vt 0.637072 0.889379 +vt 0.636541 0.888851 +vt 0.651246 0.872955 +vt 0.636007 0.888321 +vt 0.635474 0.887789 +vt 0.672855 0.873336 +vt 0.673036 0.874029 +vt 0.652655 0.873357 +vt 0.672743 0.872639 +vt 0.652767 0.872663 +vt 0.674262 0.872936 +vt 0.690105 0.887690 +vt 0.689577 0.888220 +vt 0.673680 0.873516 +vt 0.689046 0.888754 +vt 0.688515 0.889287 +vt 0.673868 0.851372 +vt 0.673258 0.851489 +vt 0.673362 0.850875 +vt 0.652217 0.851506 +vt 0.651603 0.851403 +vt 0.652100 0.850896 +vt 0.652230 0.872548 +vt 0.652127 0.873161 +vt 0.651620 0.872665 +vt 0.673273 0.872532 +vt 0.673887 0.872635 +vt 0.673390 0.873142 +vt 0.333841 0.608213 +vt 0.334043 0.609374 +vt 0.306171 0.629917 +vt 0.305762 0.628785 +vt 0.333798 0.606990 +vt 0.305364 0.627675 +vt 0.304978 0.626601 +vt 0.333952 0.605705 +vt 0.336442 0.607948 +vt 0.335749 0.607123 +vt 0.365552 0.595228 +vt 0.365934 0.596277 +vt 0.334930 0.606362 +vt 0.365233 0.594160 +vt 0.364973 0.593073 +vt 0.334846 0.608910 +vt 0.345416 0.631520 +vt 0.344639 0.632158 +vt 0.335643 0.608433 +vt 0.346235 0.630969 +vt 0.347094 0.630503 +vt 0.346294 0.632891 +vt 0.347210 0.633053 +vt 0.336675 0.660039 +vt 0.335277 0.659275 +vt 0.345434 0.632585 +vt 0.333884 0.658496 +vt 0.332499 0.657704 +vt 0.347252 0.632203 +vt 0.373161 0.629865 +vt 0.373302 0.630877 +vt 0.347214 0.631351 +vt 0.373041 0.628858 +vt 0.372946 0.627851 +vt 0.375328 0.629559 +vt 0.376254 0.628658 +vt 0.376525 0.658490 +vt 0.375434 0.658816 +vt 0.374331 0.630285 +vt 0.374311 0.659142 +vt 0.373159 0.659463 +vt 0.368095 0.595674 +vt 0.369158 0.595280 +vt 0.375148 0.628224 +vt 0.367021 0.596010 +vt 0.374042 0.627964 +vt 0.334508 0.607057 +vt 0.335252 0.607665 +vt 0.334511 0.608108 +vt 0.346518 0.631517 +vt 0.346557 0.632288 +vt 0.345802 0.632021 +vt 0.373885 0.628732 +vt 0.374835 0.628984 +vt 0.374011 0.629646 +vt 0.366536 0.595166 +vt 0.366332 0.594125 +vt 0.366635 0.593266 +vt 0.368042 0.594046 +vt 0.367505 0.594741 +vt 0.439765 0.948491 +vt 0.450083 0.980964 +vt 0.440897 0.948884 +vt 0.451522 0.980746 +vt 0.452978 0.980524 +vt 0.441999 0.949092 +vt 0.450693 0.914042 +vt 0.439583 0.947168 +vt 0.451254 0.914810 +vt 0.440544 0.946728 +vt 0.451898 0.915441 +vt 0.441507 0.946462 +vt 0.452329 0.912692 +vt 0.465369 0.887542 +vt 0.466681 0.888113 +vt 0.453281 0.912720 +vt 0.451325 0.912809 +vt 0.464057 0.886984 +vt 0.440972 0.948244 +vt 0.441826 0.948218 +vt 0.440846 0.947408 +vt 0.441667 0.947341 +vt 0.440031 0.947841 +vt 0.451731 0.914219 +vt 0.452361 0.914539 +vt 0.452167 0.913394 +vt 0.452823 0.913636 +vt 0.451285 0.913518 +vt 0.393670 0.945276 +vt 0.365556 0.949156 +vt 0.365305 0.947359 +vt 0.393794 0.944458 +vt 0.393752 0.946079 +vt 0.365823 0.950957 +vt 0.366111 0.952750 +vt 0.394012 0.946843 +vt 0.405654 0.925065 +vt 0.406609 0.925584 +vt 0.394444 0.944718 +vt 0.407551 0.926098 +vt 0.395055 0.945041 +vt 0.408495 0.926599 +vt 0.395616 0.945438 +vt 0.407508 0.924228 +vt 0.382541 0.906294 +vt 0.406516 0.924595 +vt 0.381676 0.907550 +vt 0.380809 0.908820 +vt 0.394212 0.945939 +vt 0.394568 0.946399 +vt 0.394735 0.945523 +vt 0.395106 0.945933 +vt 0.394165 0.945236 +vt 0.407908 0.925551 +vt 0.408692 0.925820 +vt 0.407936 0.924785 +vt 0.408756 0.924962 +vt 0.407057 0.925062 +vt 0.433914 0.949013 +vt 0.432793 0.949198 +vt 0.431753 0.949534 +vt 0.409281 0.961090 +vt 0.408425 0.961677 +vt 0.407601 0.962317 +vt 0.406800 0.963007 +vt 0.397122 0.984802 +vt 0.408541 0.963273 +vt 0.409481 0.963179 +vt 0.401923 0.986997 +vt 0.400316 0.986289 +vt 0.407641 0.963213 +vt 0.398712 0.985558 +vt 0.409500 0.962460 +vt 0.432722 0.951313 +vt 0.433196 0.952217 +vt 0.409434 0.961762 +vt 0.432240 0.950422 +vt 0.434612 0.950283 +vt 0.443058 0.982216 +vt 0.433940 0.951332 +vt 0.441646 0.982507 +vt 0.440222 0.982802 +vt 0.408023 0.962672 +vt 0.408740 0.962083 +vt 0.408806 0.962725 +vt 0.432979 0.949982 +vt 0.433961 0.949877 +vt 0.433440 0.950806 +vt 0.481498 0.559388 +vt 0.481875 0.558568 +vt 0.482660 0.559040 +vt 0.482187 0.559586 +vt 0.483391 0.559610 +vt 0.482846 0.560084 +vt 0.484093 0.560239 +vt 0.483077 0.560662 +vt 0.482026 0.560960 +vt 0.481932 0.560366 +vt 0.480934 0.561145 +vt 0.481193 0.560252 +vt 0.504637 0.512178 +vt 0.503786 0.511989 +vt 0.504153 0.511245 +vt 0.504853 0.511499 +vt 0.504571 0.510570 +vt 0.505319 0.510821 +vt 0.504984 0.509943 +vt 0.505941 0.510427 +vt 0.506407 0.511304 +vt 0.505717 0.511544 +vt 0.506282 0.512335 +vt 0.505477 0.512269 +vt 0.495504 0.614645 +vt 0.494735 0.614840 +vt 0.493980 0.615040 +vt 0.493237 0.615246 +vt 0.455522 0.493217 +vt 0.455708 0.492514 +vt 0.455329 0.493912 +vt 0.455129 0.494601 +vt 0.434684 0.530140 +vt 0.434116 0.530706 +vt 0.433553 0.531290 +vt 0.433001 0.531891 +vt 0.441201 0.587572 +vt 0.441723 0.586971 +vt 0.442380 0.587394 +vt 0.441833 0.587802 +vt 0.442863 0.588008 +vt 0.442305 0.588391 +vt 0.443128 0.588757 +vt 0.442396 0.589069 +vt 0.441611 0.589187 +vt 0.441541 0.588507 +vt 0.440819 0.589108 +vt 0.440896 0.588305 +vt 0.478318 0.562539 +vt 0.477903 0.561915 +vt 0.478863 0.561513 +vt 0.478998 0.562106 +vt 0.479879 0.561270 +vt 0.479890 0.561885 +vt 0.480474 0.562109 +vt 0.479900 0.562986 +vt 0.479404 0.562673 +vt 0.479199 0.563752 +vt 0.478748 0.563157 +vt 0.492506 0.615459 +vt 0.491778 0.615679 +vt 0.491050 0.615902 +vt 0.447495 0.634093 +vt 0.446547 0.634325 +vt 0.445588 0.634478 +vt 0.444621 0.634549 +vt 0.393472 0.628766 +vt 0.398867 0.577395 +vt 0.432461 0.532511 +vt 0.431936 0.533152 +vt 0.431423 0.533808 +vt 0.399947 0.574586 +vt 0.399520 0.575519 +vt 0.399162 0.576456 +vt 0.507966 0.456376 +vt 0.509003 0.456183 +vt 0.509115 0.456962 +vt 0.508341 0.456936 +vt 0.509201 0.457784 +vt 0.508489 0.457753 +vt 0.509166 0.458636 +vt 0.508384 0.458498 +vt 0.507629 0.458292 +vt 0.507717 0.457513 +vt 0.506906 0.458067 +vt 0.507179 0.457058 +vt 0.509025 0.508725 +vt 0.509832 0.508873 +vt 0.509577 0.509663 +vt 0.508878 0.509447 +vt 0.509218 0.510383 +vt 0.508473 0.510164 +vt 0.508828 0.511043 +vt 0.507869 0.510578 +vt 0.507372 0.509690 +vt 0.508046 0.509436 +vt 0.507463 0.508642 +vt 0.508227 0.508675 +vt 0.565461 0.523773 +vt 0.565395 0.522822 +vt 0.566360 0.523035 +vt 0.566208 0.523745 +vt 0.567372 0.523230 +vt 0.567059 0.523910 +vt 0.568365 0.523416 +vt 0.567518 0.524280 +vt 0.566594 0.525033 +vt 0.566283 0.524573 +vt 0.565574 0.525666 +vt 0.565525 0.524719 +vt 0.545165 0.459458 +vt 0.544548 0.459833 +vt 0.544255 0.459017 +vt 0.544890 0.458730 +vt 0.544108 0.458202 +vt 0.544784 0.457912 +vt 0.544081 0.457397 +vt 0.545072 0.457257 +vt 0.545966 0.457699 +vt 0.545504 0.458238 +vt 0.546186 0.458643 +vt 0.545707 0.459036 +vt 0.594185 0.575878 +vt 0.593374 0.576273 +vt 0.592578 0.576657 +vt 0.591792 0.577032 +vt 0.507752 0.510952 +vt 0.508766 0.511806 +vt 0.507999 0.511595 +vt 0.508676 0.512593 +vt 0.507954 0.512408 +vt 0.508486 0.513388 +vt 0.507693 0.513089 +vt 0.506966 0.512715 +vt 0.507233 0.511989 +vt 0.506819 0.511408 +vt 0.486047 0.559468 +vt 0.487067 0.559307 +vt 0.487043 0.560066 +vt 0.486237 0.560032 +vt 0.486971 0.560827 +vt 0.486184 0.560738 +vt 0.486852 0.561579 +vt 0.485885 0.561283 +vt 0.484968 0.560821 +vt 0.485367 0.560339 +vt 0.485055 0.559789 +vt 0.530508 0.561205 +vt 0.530881 0.560503 +vt 0.531619 0.560763 +vt 0.531178 0.561288 +vt 0.532243 0.561240 +vt 0.531786 0.561746 +vt 0.532702 0.561890 +vt 0.532055 0.562372 +vt 0.531309 0.562673 +vt 0.531065 0.562041 +vt 0.530508 0.562783 +vt 0.530386 0.561987 +vt 0.563350 0.527783 +vt 0.562771 0.527288 +vt 0.563637 0.526659 +vt 0.563921 0.527195 +vt 0.564579 0.526134 +vt 0.564746 0.526738 +vt 0.565358 0.526775 +vt 0.565010 0.527809 +vt 0.564459 0.527645 +vt 0.564503 0.528747 +vt 0.563926 0.528277 +vt 0.591025 0.577398 +vt 0.590267 0.577759 +vt 0.589526 0.578116 +vt 0.548756 0.604118 +vt 0.547888 0.604518 +vt 0.547006 0.604874 +vt 0.546104 0.605183 +vt 0.497907 0.614060 +vt 0.497091 0.614257 +vt 0.496290 0.614452 +vt 0.545434 0.456643 +vt 0.546023 0.455688 +vt 0.546624 0.456249 +vt 0.546058 0.456734 +vt 0.547237 0.456913 +vt 0.546731 0.457282 +vt 0.547742 0.457749 +vt 0.547190 0.458010 +vt 0.546671 0.458321 +vt 0.546129 0.457637 +vt 0.545494 0.457754 +vt 0.569061 0.521337 +vt 0.569514 0.520338 +vt 0.570099 0.520886 +vt 0.569609 0.521543 +vt 0.570680 0.521367 +vt 0.570162 0.522007 +vt 0.571264 0.521803 +vt 0.570427 0.522506 +vt 0.569439 0.523032 +vt 0.569332 0.522451 +vt 0.568682 0.522369 +vt 0.594057 0.480987 +vt 0.593556 0.480388 +vt 0.594115 0.479816 +vt 0.594434 0.480417 +vt 0.594811 0.479417 +vt 0.595104 0.480031 +vt 0.595595 0.479205 +vt 0.595782 0.479995 +vt 0.595751 0.480796 +vt 0.595080 0.480802 +vt 0.595484 0.481559 +vt 0.594719 0.481388 +vt 0.578480 0.439251 +vt 0.577782 0.439474 +vt 0.577532 0.438554 +vt 0.578155 0.438546 +vt 0.577516 0.437601 +vt 0.578136 0.437689 +vt 0.577708 0.436652 +vt 0.578518 0.437166 +vt 0.579231 0.437805 +vt 0.578801 0.438251 +vt 0.579812 0.438564 +vt 0.579161 0.438943 +vt 0.627694 0.422224 +vt 0.627943 0.423078 +vt 0.628192 0.423936 +vt 0.628432 0.424805 +vt 0.639657 0.474159 +vt 0.639718 0.475122 +vt 0.639752 0.476104 +vt 0.639758 0.477107 +vt 0.630562 0.528425 +vt 0.630462 0.529290 +vt 0.630340 0.530173 +vt 0.630216 0.531081 +vt 0.505064 0.508427 +vt 0.505153 0.507615 +vt 0.505986 0.507911 +vt 0.505799 0.508599 +vt 0.506749 0.508271 +vt 0.506547 0.509004 +vt 0.506970 0.509588 +vt 0.506064 0.510057 +vt 0.505803 0.509413 +vt 0.505029 0.509208 +vt 0.505387 0.457995 +vt 0.504615 0.457860 +vt 0.504808 0.456996 +vt 0.505480 0.457241 +vt 0.505186 0.456218 +vt 0.505874 0.456502 +vt 0.505628 0.455486 +vt 0.506458 0.456109 +vt 0.506923 0.457030 +vt 0.506285 0.457262 +vt 0.506158 0.458042 +vt 0.485088 0.450255 +vt 0.484901 0.451100 +vt 0.484733 0.451956 +vt 0.484583 0.452828 +vt 0.482319 0.476477 +vt 0.456055 0.491083 +vt 0.456221 0.490355 +vt 0.455884 0.491803 +vt 0.506918 0.510500 +vt 0.048656 0.605866 +vt 0.048436 0.605367 +vt 0.048899 0.605309 +vt 0.048959 0.605714 +vt 0.049363 0.605265 +vt 0.049378 0.605669 +vt 0.049831 0.605239 +vt 0.049712 0.605767 +vt 0.049534 0.606290 +vt 0.049216 0.606119 +vt 0.049293 0.606804 +vt 0.048937 0.606350 +vt 0.043833 0.579588 +vt 0.043400 0.579601 +vt 0.043549 0.579191 +vt 0.043842 0.579279 +vt 0.043750 0.578798 +vt 0.044016 0.578932 +vt 0.044000 0.578425 +vt 0.044276 0.578740 +vt 0.044504 0.579088 +vt 0.044226 0.579232 +vt 0.044685 0.579461 +vt 0.044262 0.579541 +vt 0.069560 0.564374 +vt 0.069967 0.564928 +vt 0.070375 0.565485 +vt 0.070780 0.566044 +vt 0.077521 0.600105 +vt 0.076600 0.600816 +vt 0.076576 0.601357 +vt 0.076548 0.601895 +vt 0.016698 0.608736 +vt 0.016553 0.608220 +vt 0.016406 0.607698 +vt 0.015176 0.607234 +vt 0.018197 0.571617 +vt 0.018446 0.570985 +vt 0.018697 0.570354 +vt 0.018952 0.569724 +vt 0.041684 0.540777 +vt 0.114564 0.736181 +vt 0.114057 0.735668 +vt 0.114716 0.735170 +vt 0.115077 0.735719 +vt 0.115413 0.734764 +vt 0.115738 0.735341 +vt 0.116161 0.734455 +vt 0.116342 0.735389 +vt 0.116126 0.736333 +vt 0.115600 0.736158 +vt 0.115550 0.737169 +vt 0.115073 0.736684 +vt 0.073021 0.772186 +vt 0.072495 0.771376 +vt 0.073160 0.771124 +vt 0.073411 0.771840 +vt 0.073845 0.770883 +vt 0.074069 0.771599 +vt 0.074535 0.770627 +vt 0.074638 0.771572 +vt 0.074615 0.772551 +vt 0.074041 0.772435 +vt 0.074465 0.773493 +vt 0.073688 0.772901 +vt 0.059569 0.727043 +vt 0.060005 0.726419 +vt 0.060703 0.726785 +vt 0.060214 0.727273 +vt 0.061245 0.727375 +vt 0.060722 0.727808 +vt 0.061564 0.728092 +vt 0.060922 0.728489 +vt 0.060171 0.728662 +vt 0.060014 0.727999 +vt 0.059408 0.728555 +vt 0.059356 0.727785 +vt 0.091094 0.697738 +vt 0.091998 0.697650 +vt 0.091781 0.698544 +vt 0.091198 0.698348 +vt 0.091394 0.699348 +vt 0.090861 0.699084 +vt 0.090837 0.700038 +vt 0.090298 0.699555 +vt 0.089848 0.699034 +vt 0.090404 0.698553 +vt 0.089491 0.698428 +vt 0.090259 0.697984 +vt 0.058045 0.667629 +vt 0.058647 0.667076 +vt 0.057328 0.668117 +vt 0.056555 0.668597 +vt 0.015967 0.711247 +vt 0.016471 0.710352 +vt 0.015657 0.712173 +vt 0.015492 0.713191 +vt 0.019956 0.771576 +vt 0.020124 0.772448 +vt 0.020235 0.773344 +vt 0.020326 0.774282 +vt 0.149996 0.766659 +vt 0.149362 0.766199 +vt 0.149861 0.765605 +vt 0.150338 0.766082 +vt 0.150406 0.765096 +vt 0.150856 0.765605 +vt 0.151016 0.764621 +vt 0.151431 0.765467 +vt 0.151532 0.766405 +vt 0.150969 0.766405 +vt 0.151348 0.767355 +vt 0.150650 0.767018 +vt 0.121749 0.802788 +vt 0.120806 0.802537 +vt 0.121060 0.801859 +vt 0.121711 0.802188 +vt 0.121336 0.801171 +vt 0.121971 0.801492 +vt 0.121723 0.800519 +vt 0.122399 0.800973 +vt 0.122981 0.801515 +vt 0.122533 0.802029 +vt 0.123465 0.802112 +vt 0.122647 0.802630 +vt 0.074390 0.774476 +vt 0.075250 0.773829 +vt 0.074973 0.774465 +vt 0.076015 0.774249 +vt 0.075679 0.774830 +vt 0.076747 0.774717 +vt 0.076126 0.775336 +vt 0.075451 0.775903 +vt 0.075069 0.775341 +vt 0.074740 0.776391 +vt 0.074484 0.775438 +vt 0.117265 0.736638 +vt 0.118163 0.736991 +vt 0.117769 0.737689 +vt 0.117220 0.737278 +vt 0.117312 0.738377 +vt 0.116803 0.737981 +vt 0.116728 0.738993 +vt 0.116239 0.738433 +vt 0.115853 0.737795 +vt 0.116423 0.737363 +vt 0.116336 0.736695 +vt 0.020411 0.775239 +vt 0.020488 0.776199 +vt 0.020562 0.777154 +vt 0.120158 0.804694 +vt 0.119424 0.804409 +vt 0.119823 0.803715 +vt 0.120430 0.804047 +vt 0.120311 0.803081 +vt 0.120933 0.803416 +vt 0.121521 0.803124 +vt 0.121790 0.803968 +vt 0.121193 0.804177 +vt 0.121598 0.804929 +vt 0.120920 0.804839 +vt 0.101552 0.854501 +vt 0.100659 0.854120 +vt 0.101077 0.853521 +vt 0.101683 0.853968 +vt 0.101553 0.852933 +vt 0.102104 0.853435 +vt 0.102044 0.852385 +vt 0.102612 0.853163 +vt 0.103100 0.854033 +vt 0.102540 0.854184 +vt 0.103495 0.854956 +vt 0.102502 0.854780 +vt 0.067163 0.823818 +vt 0.067169 0.823032 +vt 0.067935 0.822953 +vt 0.067813 0.823642 +vt 0.068681 0.823114 +vt 0.068540 0.823790 +vt 0.069325 0.823518 +vt 0.069054 0.824246 +vt 0.068558 0.824818 +vt 0.068055 0.824362 +vt 0.067870 0.825163 +vt 0.067397 0.824556 +vt 0.074067 0.777062 +vt 0.075043 0.777312 +vt 0.074473 0.777491 +vt 0.075210 0.778259 +vt 0.074650 0.778342 +vt 0.075247 0.779209 +vt 0.074512 0.779072 +vt 0.073787 0.778895 +vt 0.073970 0.778168 +vt 0.073096 0.778682 +vt 0.073505 0.777840 +vt 0.020631 0.778095 +vt 0.020682 0.779002 +vt 0.020697 0.779893 +vt 0.024079 0.834867 +vt 0.023836 0.833939 +vt 0.024375 0.835773 +vt 0.024707 0.836708 +vt 0.054111 0.884946 +vt 0.054609 0.885679 +vt 0.055115 0.886398 +vt 0.055620 0.887108 +vt 0.119716 0.901972 +vt 0.119341 0.901293 +vt 0.119916 0.900800 +vt 0.120149 0.901456 +vt 0.120616 0.900550 +vt 0.120836 0.901195 +vt 0.121384 0.900571 +vt 0.121515 0.901324 +vt 0.121392 0.902065 +vt 0.120729 0.901936 +vt 0.121007 0.902733 +vt 0.120288 0.902460 +vt 0.105106 0.858444 +vt 0.105304 0.857477 +vt 0.106035 0.858152 +vt 0.105666 0.858624 +vt 0.106673 0.858895 +vt 0.106252 0.859269 +vt 0.107206 0.859694 +vt 0.106513 0.859969 +vt 0.105779 0.860198 +vt 0.105596 0.859485 +vt 0.105052 0.860369 +vt 0.105018 0.859420 +vt 0.057577 0.889977 +vt 0.057092 0.889254 +vt 0.058071 0.890702 +vt 0.058585 0.891419 +vt 0.092196 0.935752 +vt 0.091464 0.935105 +vt 0.092929 0.936380 +vt 0.093679 0.936987 +vt 0.164304 0.912363 +vt 0.142965 0.962634 +vt 0.162256 0.859138 +vt 0.164773 0.909557 +vt 0.164507 0.911435 +vt 0.164667 0.910501 +vt 0.162235 0.858341 +vt 0.162173 0.857575 +vt 0.162097 0.856851 +vt 0.103986 0.855885 +vt 0.104380 0.854938 +vt 0.104475 0.855623 +vt 0.105277 0.854956 +vt 0.105271 0.855614 +vt 0.106164 0.855010 +vt 0.105918 0.855841 +vt 0.105627 0.856669 +vt 0.105017 0.856348 +vt 0.104587 0.856719 +vt 0.122880 0.803562 +vt 0.123856 0.803499 +vt 0.123826 0.804250 +vt 0.123117 0.804147 +vt 0.123737 0.805045 +vt 0.123081 0.804954 +vt 0.123519 0.805849 +vt 0.122817 0.805634 +vt 0.122179 0.805303 +vt 0.122437 0.804612 +vt 0.122124 0.804090 +vt 0.056117 0.887820 +vt 0.056608 0.888535 +vt 0.167561 0.812390 +vt 0.161861 0.854731 +vt 0.162026 0.856138 +vt 0.161952 0.855433 +vt 0.167675 0.811614 +vt 0.167791 0.810839 +vt 0.167908 0.810055 +vt 0.122251 0.803284 +vt 0.123034 0.802740 +vt 0.123130 0.803228 +vt 0.458708 0.470746 +vt 0.461434 0.448009 +vt 0.461563 0.447129 +vt 0.461713 0.446257 +vt 0.461882 0.445395 +vt 0.343437 0.819880 +vt 0.343433 0.819002 +vt 0.344296 0.819020 +vt 0.344236 0.819876 +vt 0.345157 0.819155 +vt 0.345088 0.820041 +vt 0.346008 0.819252 +vt 0.345782 0.820399 +vt 0.344885 0.821405 +vt 0.344442 0.820808 +vt 0.343626 0.821563 +vt 0.343537 0.820708 +vt 0.294434 0.818860 +vt 0.294301 0.817510 +vt 0.295116 0.817415 +vt 0.295053 0.818369 +vt 0.295955 0.817327 +vt 0.295933 0.818218 +vt 0.296801 0.817291 +vt 0.296749 0.818274 +vt 0.296610 0.819232 +vt 0.295731 0.819213 +vt 0.296437 0.820173 +vt 0.295180 0.819821 +vt 0.296559 0.757423 +vt 0.297605 0.756843 +vt 0.297693 0.757884 +vt 0.296860 0.758024 +vt 0.297663 0.758963 +vt 0.296871 0.758984 +vt 0.297563 0.760012 +vt 0.296568 0.759763 +vt 0.295585 0.759434 +vt 0.295969 0.758708 +vt 0.294668 0.759001 +vt 0.295536 0.758159 +vt 0.352057 0.775407 +vt 0.351944 0.776597 +vt 0.351060 0.776477 +vt 0.351284 0.775593 +vt 0.350161 0.776341 +vt 0.350373 0.775565 +vt 0.349268 0.776090 +vt 0.349559 0.775309 +vt 0.349876 0.774585 +vt 0.350794 0.774731 +vt 0.350186 0.773848 +vt 0.351428 0.774243 +vt 0.265994 0.708990 +vt 0.266884 0.708469 +vt 0.265142 0.709560 +vt 0.264313 0.710198 +vt 0.751407 0.900057 +vt 0.752264 0.900744 +vt 0.739336 0.913775 +vt 0.738553 0.913301 +vt 0.753053 0.901523 +vt 0.739972 0.914422 +vt 0.753700 0.902389 +vt 0.740453 0.915198 +vt 0.753545 0.952436 +vt 0.752858 0.953291 +vt 0.739990 0.940527 +vt 0.740463 0.939744 +vt 0.752078 0.954085 +vt 0.739342 0.941164 +vt 0.751209 0.954725 +vt 0.738566 0.941645 +vt 0.738175 0.914108 +vt 0.714385 0.914119 +vt 0.714006 0.913303 +vt 0.737926 0.914966 +vt 0.714620 0.914979 +vt 0.737898 0.915845 +vt 0.714652 0.915859 +vt 0.738798 0.939118 +vt 0.737920 0.939089 +vt 0.738777 0.915812 +vt 0.739656 0.939367 +vt 0.739638 0.915576 +vt 0.737952 0.939969 +vt 0.714645 0.939984 +vt 0.714674 0.939106 +vt 0.738188 0.940829 +vt 0.714396 0.940843 +vt 0.714018 0.941649 +vt 0.700352 0.900878 +vt 0.701237 0.900253 +vt 0.713229 0.913784 +vt 0.699560 0.901657 +vt 0.712582 0.914420 +vt 0.698855 0.902498 +vt 0.712109 0.915203 +vt 0.712934 0.939374 +vt 0.712118 0.939752 +vt 0.712915 0.915581 +vt 0.713794 0.939137 +vt 0.713774 0.915830 +vt 0.699673 0.953424 +vt 0.699049 0.952541 +vt 0.712599 0.940529 +vt 0.700452 0.954218 +vt 0.713234 0.941175 +vt 0.701291 0.954922 +vt 0.738640 0.915114 +vt 0.738852 0.914313 +vt 0.739443 0.914884 +vt 0.738881 0.940635 +vt 0.738650 0.939832 +vt 0.739451 0.940044 +vt 0.713121 0.914904 +vt 0.713691 0.914314 +vt 0.713922 0.915116 +vt 0.713719 0.940637 +vt 0.713128 0.940067 +vt 0.713930 0.939836 +vt 0.342022 0.868965 +vt 0.341996 0.868198 +vt 0.342975 0.868179 +vt 0.342604 0.868902 +vt 0.343853 0.868342 +vt 0.343533 0.868891 +vt 0.344789 0.868682 +vt 0.344088 0.869372 +vt 0.343407 0.869947 +vt 0.342914 0.869534 +vt 0.342511 0.870382 +vt 0.342207 0.869702 +vt 0.295050 0.881256 +vt 0.293949 0.880916 +vt 0.294821 0.880180 +vt 0.295329 0.880648 +vt 0.295744 0.879546 +vt 0.296148 0.880072 +vt 0.296789 0.879044 +vt 0.297028 0.879827 +vt 0.297198 0.880610 +vt 0.296314 0.880782 +vt 0.297283 0.881408 +vt 0.296139 0.881425 +vt 0.295150 0.820360 +vt 0.296492 0.821111 +vt 0.295584 0.821055 +vt 0.296530 0.822055 +vt 0.295707 0.822029 +vt 0.296518 0.823001 +vt 0.295630 0.822896 +vt 0.294780 0.822732 +vt 0.294807 0.821811 +vt 0.293956 0.822545 +vt 0.294288 0.821215 +vt 0.345859 0.822781 +vt 0.346102 0.823997 +vt 0.345199 0.824043 +vt 0.345229 0.823128 +vt 0.344275 0.824110 +vt 0.344373 0.823292 +vt 0.343365 0.824082 +vt 0.343475 0.823230 +vt 0.343554 0.822409 +vt 0.344483 0.822362 +vt 0.344945 0.821736 +vt 0.316770 0.932496 +vt 0.315934 0.932940 +vt 0.317647 0.932136 +vt 0.318547 0.931787 +vt 0.365109 0.909190 +vt 0.364334 0.909688 +vt 0.365873 0.908695 +vt 0.366617 0.908295 +vt 0.350519 0.772313 +vt 0.350731 0.771508 +vt 0.351619 0.771812 +vt 0.351348 0.772588 +vt 0.352429 0.772223 +vt 0.352135 0.773051 +vt 0.353247 0.772585 +vt 0.352649 0.773637 +vt 0.351417 0.774227 +vt 0.351231 0.773519 +vt 0.350375 0.773079 +vt 0.298073 0.754568 +vt 0.298610 0.753497 +vt 0.299221 0.753930 +vt 0.298655 0.754690 +vt 0.299822 0.754401 +vt 0.299197 0.755111 +vt 0.300427 0.754910 +vt 0.299552 0.755695 +vt 0.298618 0.756321 +vt 0.298381 0.755718 +vt 0.297754 0.755676 +vt 0.329932 0.717002 +vt 0.330665 0.717023 +vt 0.330661 0.717729 +vt 0.330512 0.717098 +vt 0.330481 0.718384 +vt 0.330012 0.717890 +vt 0.330135 0.719040 +vt 0.329576 0.718649 +vt 0.329110 0.718208 +vt 0.329632 0.717536 +vt 0.328709 0.717668 +vt 0.329285 0.717233 +vt 0.370968 0.731630 +vt 0.371656 0.732366 +vt 0.370668 0.732649 +vt 0.370410 0.732080 +vt 0.369668 0.732733 +vt 0.369594 0.732166 +vt 0.368586 0.732601 +vt 0.368734 0.731872 +vt 0.368962 0.731123 +vt 0.369810 0.731407 +vt 0.369263 0.730439 +vt 0.370197 0.730971 +vt 0.381423 0.679822 +vt 0.380473 0.679691 +vt 0.379470 0.679489 +vt 0.378436 0.679320 +vt 0.320247 0.676674 +vt 0.321401 0.676393 +vt 0.319098 0.676967 +vt 0.317951 0.677271 +vt 0.269293 0.706613 +vt 0.268519 0.707282 +vt 0.267734 0.707918 +vt 0.291739 0.817978 +vt 0.291741 0.817022 +vt 0.292635 0.817147 +vt 0.292561 0.818017 +vt 0.293484 0.817321 +vt 0.293460 0.818237 +vt 0.293978 0.818844 +vt 0.293120 0.819690 +vt 0.292681 0.818996 +vt 0.291828 0.819868 +vt 0.291777 0.818928 +vt 0.241232 0.814788 +vt 0.241205 0.813781 +vt 0.241977 0.813792 +vt 0.241857 0.814678 +vt 0.242731 0.813909 +vt 0.242545 0.814785 +vt 0.243492 0.814135 +vt 0.243133 0.815082 +vt 0.242604 0.815895 +vt 0.242065 0.815555 +vt 0.241911 0.816589 +vt 0.241462 0.815724 +vt 0.291504 0.759480 +vt 0.291354 0.758703 +vt 0.292487 0.758609 +vt 0.292384 0.759251 +vt 0.293580 0.758717 +vt 0.293365 0.759330 +vt 0.293883 0.759785 +vt 0.293012 0.760457 +vt 0.292596 0.759939 +vt 0.292010 0.761003 +vt 0.291726 0.760241 +vt 0.250585 0.773198 +vt 0.249927 0.772965 +vt 0.250238 0.772329 +vt 0.250847 0.772418 +vt 0.250657 0.771801 +vt 0.251293 0.771591 +vt 0.251262 0.771404 +vt 0.251718 0.771971 +vt 0.251951 0.772613 +vt 0.251375 0.772533 +vt 0.251971 0.773313 +vt 0.251253 0.773323 +vt 0.192340 0.805423 +vt 0.192608 0.804395 +vt 0.192908 0.803359 +vt 0.193182 0.802306 +vt 0.213884 0.749853 +vt 0.214570 0.748922 +vt 0.215269 0.747980 +vt 0.215983 0.747023 +vt 0.261591 0.711800 +vt 0.262543 0.711301 +vt 0.263460 0.710789 +vt 0.626531 0.889036 +vt 0.626496 0.890368 +vt 0.595301 0.889697 +vt 0.595527 0.888653 +vt 0.626278 0.891772 +vt 0.594813 0.890626 +vt 0.626006 0.893226 +vt 0.594022 0.891315 +vt 0.533221 0.860838 +vt 0.534213 0.859918 +vt 0.558049 0.883571 +vt 0.558214 0.884814 +vt 0.535147 0.859030 +vt 0.558049 0.882320 +vt 0.535977 0.858140 +vt 0.558376 0.881126 +vt 0.594438 0.888499 +vt 0.596980 0.866156 +vt 0.597779 0.865617 +vt 0.593372 0.888535 +vt 0.595980 0.866334 +vt 0.592336 0.888626 +vt 0.594911 0.866236 +vt 0.560168 0.883412 +vt 0.560946 0.882527 +vt 0.592591 0.889745 +vt 0.559236 0.884151 +vt 0.593164 0.890678 +vt 0.560075 0.881988 +vt 0.573302 0.860525 +vt 0.574226 0.860887 +vt 0.559219 0.881502 +vt 0.572613 0.859849 +vt 0.572175 0.858964 +vt 0.614171 0.846855 +vt 0.614978 0.847919 +vt 0.597476 0.864610 +vt 0.613322 0.845862 +vt 0.596746 0.863885 +vt 0.612269 0.845055 +vt 0.595824 0.863443 +vt 0.574996 0.858944 +vt 0.574917 0.857946 +vt 0.595227 0.864290 +vt 0.574729 0.859947 +vt 0.594949 0.865245 +vt 0.568991 0.834196 +vt 0.570309 0.834020 +vt 0.573896 0.857841 +vt 0.567738 0.834410 +vt 0.572955 0.858255 +vt 0.566541 0.834801 +vt 0.593408 0.889467 +vt 0.594438 0.889399 +vt 0.593970 0.890315 +vt 0.558781 0.882359 +vt 0.559608 0.882787 +vt 0.558816 0.883481 +vt 0.596119 0.864538 +vt 0.596855 0.865233 +vt 0.595884 0.865453 +vt 0.573224 0.859118 +vt 0.574136 0.858708 +vt 0.573878 0.859750 +vt 0.612520 0.936120 +vt 0.611817 0.937161 +vt 0.590540 0.916914 +vt 0.590970 0.916019 +vt 0.610975 0.938046 +vt 0.589855 0.917632 +vt 0.609979 0.938796 +vt 0.588969 0.918096 +vt 0.572375 0.953487 +vt 0.571100 0.953674 +vt 0.566133 0.923778 +vt 0.567220 0.923809 +vt 0.569752 0.953963 +vt 0.565184 0.923344 +vt 0.568345 0.954287 +vt 0.564477 0.922598 +vt 0.590074 0.915400 +vt 0.594440 0.894056 +vt 0.595437 0.893975 +vt 0.589067 0.915112 +vt 0.593368 0.893940 +vt 0.588045 0.915207 +vt 0.592270 0.893603 +vt 0.567073 0.921743 +vt 0.566680 0.920670 +vt 0.587992 0.916238 +vt 0.567256 0.922795 +vt 0.588323 0.917227 +vt 0.565746 0.921063 +vt 0.558065 0.888105 +vt 0.559188 0.888156 +vt 0.564968 0.921702 +vt 0.556980 0.887953 +vt 0.555925 0.887671 +vt 0.625499 0.896045 +vt 0.625385 0.897333 +vt 0.595343 0.892883 +vt 0.625736 0.894671 +vt 0.594828 0.891954 +vt 0.558674 0.885877 +vt 0.593172 0.891856 +vt 0.558986 0.886996 +vt 0.592605 0.892663 +vt 0.532187 0.861773 +vt 0.557274 0.885621 +vt 0.531136 0.862701 +vt 0.556505 0.886571 +vt 0.530081 0.863614 +vt 0.588869 0.916007 +vt 0.589849 0.916263 +vt 0.589189 0.916974 +vt 0.565446 0.922490 +vt 0.566217 0.921876 +vt 0.566364 0.922930 +vt 0.594000 0.892285 +vt 0.594522 0.893151 +vt 0.593464 0.893088 +vt 0.557153 0.887070 +vt 0.557856 0.886183 +vt 0.558158 0.887199 +vt 0.952400 0.725700 +vt 0.952403 0.724855 +vt 0.953244 0.724861 +vt 0.953102 0.725573 +vt 0.954028 0.725015 +vt 0.953837 0.725716 +vt 0.954717 0.725386 +vt 0.954327 0.726174 +vt 0.953707 0.726788 +vt 0.953265 0.726303 +vt 0.952913 0.727174 +vt 0.952549 0.726487 +vt 0.905356 0.726050 +vt 0.904968 0.725257 +vt 0.905658 0.724892 +vt 0.905841 0.725608 +vt 0.906444 0.724743 +vt 0.906572 0.725444 +vt 0.907289 0.724745 +vt 0.907285 0.725587 +vt 0.907130 0.726371 +vt 0.906430 0.726181 +vt 0.906759 0.727060 +vt 0.905971 0.726669 +vt 0.952678 0.678118 +vt 0.953050 0.677431 +vt 0.953837 0.677819 +vt 0.953379 0.678308 +vt 0.954452 0.678439 +vt 0.953967 0.678880 +vt 0.954837 0.679231 +vt 0.954150 0.679596 +vt 0.953364 0.679744 +vt 0.953237 0.679044 +vt 0.952519 0.679743 +vt 0.952524 0.678902 +vt 0.905781 0.679473 +vt 0.905095 0.679102 +vt 0.905482 0.678314 +vt 0.905971 0.678773 +vt 0.906102 0.677699 +vt 0.906543 0.678185 +vt 0.906895 0.677311 +vt 0.907259 0.678000 +vt 0.907408 0.678787 +vt 0.906707 0.678915 +vt 0.907406 0.679632 +vt 0.906565 0.679627 +vt 0.985027 0.755066 +vt 0.984387 0.756147 +vt 0.983554 0.756984 +vt 0.982474 0.757625 +vt 0.877084 0.757370 +vt 0.876004 0.756730 +vt 0.875171 0.755895 +vt 0.874533 0.754814 +vt 0.874768 0.649423 +vt 0.875412 0.648345 +vt 0.876251 0.647513 +vt 0.877333 0.646876 +vt 0.982729 0.647107 +vt 0.983809 0.647750 +vt 0.984644 0.648587 +vt 0.985285 0.649668 +vt 0.566939 0.954611 +vt 0.563839 0.923438 +vt 0.565571 0.954875 +vt 0.562938 0.924013 +vt 0.564251 0.954940 +vt 0.561889 0.924314 +vt 0.524721 0.945277 +vt 0.523638 0.944459 +vt 0.537056 0.928346 +vt 0.538104 0.928487 +vt 0.522575 0.943611 +vt 0.536207 0.927749 +vt 0.521557 0.942701 +vt 0.535731 0.926796 +vt 0.563761 0.921802 +vt 0.555451 0.888798 +vt 0.562801 0.921316 +vt 0.554826 0.889848 +vt 0.561663 0.921162 +vt 0.554008 0.890750 +vt 0.538595 0.926663 +vt 0.538400 0.925644 +vt 0.561632 0.922199 +vt 0.538527 0.927642 +vt 0.561677 0.923250 +vt 0.537357 0.925806 +vt 0.533219 0.904112 +vt 0.534039 0.903566 +vt 0.536430 0.926179 +vt 0.532254 0.904464 +vt 0.531183 0.904530 +vt 0.529041 0.864502 +vt 0.554675 0.887647 +vt 0.528048 0.865370 +vt 0.553468 0.887812 +vt 0.527160 0.866257 +vt 0.552337 0.888209 +vt 0.532800 0.901944 +vt 0.531860 0.901659 +vt 0.552821 0.889111 +vt 0.533555 0.902616 +vt 0.553397 0.889950 +vt 0.505313 0.902012 +vt 0.505616 0.900716 +vt 0.531251 0.902507 +vt 0.505108 0.903302 +vt 0.531053 0.903512 +vt 0.505148 0.904608 +vt 0.562556 0.922163 +vt 0.563466 0.922629 +vt 0.562587 0.923195 +vt 0.536757 0.927065 +vt 0.537666 0.926658 +vt 0.537585 0.927631 +vt 0.553630 0.888621 +vt 0.554735 0.888431 +vt 0.554180 0.889386 +vt 0.531965 0.903611 +vt 0.532140 0.902617 +vt 0.532893 0.903231 +vt 0.290891 0.880855 +vt 0.290991 0.879823 +vt 0.292013 0.880097 +vt 0.291697 0.880856 +vt 0.293032 0.880456 +vt 0.292631 0.881155 +vt 0.293046 0.881714 +vt 0.291961 0.882404 +vt 0.291690 0.881796 +vt 0.290893 0.882946 +vt 0.290826 0.881913 +vt 0.235068 0.863273 +vt 0.234967 0.862340 +vt 0.235816 0.862275 +vt 0.235668 0.863021 +vt 0.236632 0.862415 +vt 0.236456 0.863177 +vt 0.237442 0.862731 +vt 0.237069 0.863574 +vt 0.236525 0.864308 +vt 0.235976 0.863838 +vt 0.235845 0.864912 +vt 0.235365 0.864144 +vt 0.241241 0.817274 +vt 0.242386 0.817422 +vt 0.241761 0.817678 +vt 0.242667 0.818332 +vt 0.242036 0.818518 +vt 0.242764 0.819309 +vt 0.241959 0.819356 +vt 0.241181 0.819253 +vt 0.241304 0.818423 +vt 0.240416 0.818985 +vt 0.240744 0.818073 +vt 0.293828 0.821196 +vt 0.293137 0.822634 +vt 0.293210 0.821680 +vt 0.292289 0.822706 +vt 0.292319 0.821821 +vt 0.291428 0.822720 +vt 0.291497 0.821749 +vt 0.291649 0.820801 +vt 0.292532 0.820836 +vt 0.293088 0.820232 +vt 0.192079 0.806445 +vt 0.191855 0.807473 +vt 0.191609 0.808484 +vt 0.183360 0.863144 +vt 0.183293 0.864250 +vt 0.183217 0.865376 +vt 0.183207 0.866508 +vt 0.314258 0.933846 +vt 0.313369 0.934224 +vt 0.315102 0.933423 +vt 0.259307 0.918128 +vt 0.259676 0.917554 +vt 0.260144 0.917951 +vt 0.259884 0.918635 +vt 0.260509 0.918385 +vt 0.260516 0.919182 +vt 0.260745 0.918945 +vt 0.260151 0.919326 +vt 0.259511 0.919463 +vt 0.259622 0.919212 +vt 0.258870 0.919358 +vt 0.259037 0.918713 +vt 0.226597 0.905958 +vt 0.226478 0.905339 +vt 0.227016 0.905121 +vt 0.226264 0.905353 +vt 0.227587 0.905050 +vt 0.227173 0.905612 +vt 0.228223 0.905135 +vt 0.228010 0.905754 +vt 0.227733 0.906291 +vt 0.226897 0.905973 +vt 0.227389 0.906820 +vt 0.226916 0.906450 +vt 0.289851 0.883405 +vt 0.290666 0.884094 +vt 0.290058 0.884013 +vt 0.290277 0.885181 +vt 0.289720 0.885027 +vt 0.289663 0.886222 +vt 0.289100 0.885758 +vt 0.288544 0.885261 +vt 0.289215 0.884577 +vt 0.287980 0.884730 +vt 0.288895 0.883983 +vt 0.235119 0.867524 +vt 0.234333 0.867348 +vt 0.234654 0.866406 +vt 0.235268 0.866629 +vt 0.235160 0.865609 +vt 0.235738 0.865825 +vt 0.236338 0.865772 +vt 0.236605 0.866673 +vt 0.235939 0.866717 +vt 0.236675 0.867685 +vt 0.235886 0.867639 +vt 0.260923 0.956946 +vt 0.259700 0.957030 +vt 0.258446 0.957073 +vt 0.257165 0.957071 +vt 0.199547 0.932855 +vt 0.198625 0.931890 +vt 0.197776 0.930859 +vt 0.196986 0.929786 +vt 0.183342 0.869992 +vt 0.183282 0.868815 +vt 0.183218 0.867651 +vt 0.312508 0.934628 +vt 0.311683 0.935119 +vt 0.310851 0.935634 +vt 0.294136 0.820029 +vt 0.347527 0.409268 +vt 0.347527 0.212515 +vt 0.675449 0.212515 +vt 0.675449 0.409268 +vt 0.009165 0.203046 +vt 0.009165 0.009345 +vt 0.337087 0.009345 +vt 0.337087 0.203046 +vt 0.348104 0.203319 +vt 0.348105 0.009618 +vt 0.676026 0.009618 +vt 0.676026 0.203319 +vt 0.008588 0.409268 +vt 0.008588 0.212515 +vt 0.336509 0.212515 +vt 0.336509 0.409268 +vt 0.927314 0.387813 +vt 0.988224 0.326903 +vt 0.988224 0.631455 +vt 0.927313 0.570545 +vt 0.756954 0.558172 +vt 0.756954 0.400185 +vt 0.914941 0.400185 +vt 0.914941 0.558172 +vt 0.683671 0.631454 +vt 0.744581 0.570544 +vt 0.958563 0.916489 +vt 0.933688 0.916489 +vt 0.933688 0.767237 +vt 0.958563 0.767237 +vt 0.965307 0.767987 +vt 0.990184 0.767987 +vt 0.990184 0.917240 +vt 0.965307 0.917240 +vt 0.773628 0.796598 +vt 0.922440 0.796598 +vt 0.922440 0.819668 +vt 0.773628 0.819668 +vt 0.922440 0.766208 +vt 0.922440 0.791083 +vt 0.773188 0.791083 +vt 0.773188 0.766208 +vt 0.683672 0.326902 +vt 0.744582 0.387813 +vt 0.990655 0.317891 +vt 0.684126 0.317891 +vt 0.684126 0.011362 +vt 0.990655 0.011362 +vt 0.787773 0.977407 +vt 0.926800 0.976853 +vt 0.920927 0.989967 +vt 0.793826 0.990481 +vt 0.777123 0.959310 +vt 0.772528 0.977241 +vt 0.770114 0.973284 +vt 0.918805 0.840025 +vt 0.920346 0.840020 +vt 0.913467 0.852030 +vt 0.912692 0.850699 +vt 0.912618 0.829395 +vt 0.913383 0.828058 +vt 0.900318 0.829438 +vt 0.899543 0.828106 +vt 0.894205 0.840111 +vt 0.892665 0.840116 +vt 0.900392 0.850742 +vt 0.899627 0.852078 +vt 0.755359 0.987233 +vt 0.633867 0.987227 +vt 0.633867 0.983713 +vt 0.755359 0.983716 +vt 0.755358 0.969655 +vt 0.633867 0.969651 +vt 0.633867 0.966136 +vt 0.755358 0.966140 +vt 0.755359 0.973172 +vt 0.633867 0.973166 +vt 0.755359 0.976686 +vt 0.633867 0.976682 +vt 0.755359 0.980201 +vt 0.633867 0.980197 +vt 0.797087 0.971483 +vt 0.796805 0.973157 +vt 0.795192 0.971435 +vt 0.795821 0.974581 +vt 0.795778 0.968415 +vt 0.796815 0.969804 +vt 0.917673 0.972649 +vt 0.917343 0.970969 +vt 0.919244 0.970921 +vt 0.918712 0.974072 +vt 0.917569 0.969299 +vt 0.918558 0.967916 +vt 0.916810 0.970981 +vt 0.917123 0.972947 +vt 0.797358 0.973456 +vt 0.797620 0.971491 +vt 0.918082 0.974868 +vt 0.796474 0.975372 +vt 0.917821 0.967086 +vt 0.916992 0.969013 +vt 0.797386 0.969515 +vt 0.796488 0.967575 +vt 0.839717 0.916303 +vt 0.843144 0.910957 +vt 0.854161 0.920651 +vt 0.853190 0.922119 +vt 0.838111 0.922448 +vt 0.852722 0.923814 +vt 0.838482 0.928788 +vt 0.852801 0.925573 +vt 0.840794 0.934703 +vt 0.853417 0.927220 +vt 0.844819 0.939614 +vt 0.854514 0.928598 +vt 0.850166 0.943040 +vt 0.855982 0.929567 +vt 0.856311 0.944648 +vt 0.857678 0.930037 +vt 0.862651 0.944277 +vt 0.859437 0.929958 +vt 0.868566 0.941965 +vt 0.861083 0.929340 +vt 0.873477 0.937938 +vt 0.862459 0.928244 +vt 0.876903 0.932591 +vt 0.863430 0.926777 +vt 0.878510 0.926447 +vt 0.863900 0.925080 +vt 0.878139 0.920107 +vt 0.863821 0.923322 +vt 0.875828 0.914193 +vt 0.863203 0.921674 +vt 0.871801 0.909281 +vt 0.862107 0.920298 +vt 0.866454 0.905855 +vt 0.860638 0.919327 +vt 0.860310 0.904248 +vt 0.858943 0.918859 +vt 0.853970 0.904618 +vt 0.857185 0.918937 +vt 0.848055 0.906931 +vt 0.855537 0.919554 +vt 0.858311 0.924448 +vt 0.910018 0.840056 +vt 0.908272 0.843105 +vt 0.906505 0.840068 +vt 0.908251 0.837020 +vt 0.904738 0.837032 +vt 0.902992 0.840080 +vt 0.904760 0.843116 +vt 0.794480 0.965878 +vt 0.919766 0.965367 +vt 0.923632 0.970862 +vt 0.790848 0.971415 +vt 0.783904 0.959549 +vt 0.790655 0.958899 +vt 0.798057 0.956822 +vt 0.799754 0.959990 +vt 0.795623 0.876640 +vt 0.797255 0.877639 +vt 0.771323 0.919938 +vt 0.769691 0.918938 +vt 0.789239 0.872725 +vt 0.790800 0.873682 +vt 0.764868 0.915980 +vt 0.763307 0.915023 +vt 0.794063 0.875683 +vt 0.768130 0.917981 +vt 0.792509 0.866989 +vt 0.790877 0.865990 +vt 0.816793 0.823681 +vt 0.818425 0.824680 +vt 0.798896 0.870902 +vt 0.797335 0.869945 +vt 0.823249 0.827636 +vt 0.824811 0.828592 +vt 0.794071 0.867945 +vt 0.819986 0.825637 +vt 0.762361 0.882958 +vt 0.760729 0.881958 +vt 0.786660 0.839660 +vt 0.788292 0.840660 +vt 0.768744 0.886872 +vt 0.767184 0.885915 +vt 0.793116 0.843617 +vt 0.794676 0.844574 +vt 0.763921 0.883915 +vt 0.789853 0.841617 +vt 0.937170 0.958627 +vt 0.867348 0.838555 +vt 0.881667 0.837129 +vt 0.945499 0.946903 +vt 0.944614 0.971958 +vt 0.942376 0.976009 +vt 0.927380 0.953476 +vt 0.928975 0.952892 +vt 0.928284 0.955146 +vt 0.930704 0.953043 +vt 0.925364 0.956128 +vt 0.926057 0.954543 +vt 0.868241 0.848547 +vt 0.866944 0.849665 +vt 0.865956 0.848042 +vt 0.868962 0.846940 +vt 0.865379 0.850298 +vt 0.863684 0.850128 +vt 0.867219 0.850123 +vt 0.868773 0.848875 +vt 0.928959 0.952264 +vt 0.927121 0.953009 +vt 0.869968 0.847090 +vt 0.931064 0.952084 +vt 0.863330 0.851178 +vt 0.865417 0.850941 +vt 0.925521 0.954190 +vt 0.924278 0.955927 +vt 0.923800 0.958497 +vt 0.860864 0.850346 +vt 0.863721 0.844269 +vt 0.930443 0.958935 +vt 0.916090 0.956988 +vt 0.859023 0.857855 +vt 0.914165 0.960044 +vt 0.846368 0.838561 +vt 0.768756 0.947569 +vt 0.832067 0.837186 +vt 0.854334 0.825488 +vt 0.858962 0.825441 +vt 0.846779 0.849633 +vt 0.845478 0.848541 +vt 0.847775 0.848017 +vt 0.844748 0.846967 +vt 0.850078 0.850070 +vt 0.848363 0.850247 +vt 0.785357 0.953466 +vt 0.786981 0.954017 +vt 0.786073 0.955698 +vt 0.783601 0.953659 +vt 0.788320 0.955045 +vt 0.789034 0.956593 +vt 0.787237 0.953546 +vt 0.785370 0.952840 +vt 0.844942 0.848869 +vt 0.846502 0.850089 +vt 0.783221 0.952717 +vt 0.843739 0.847133 +vt 0.790129 0.956362 +vt 0.788859 0.954686 +vt 0.848322 0.850889 +vt 0.850444 0.851115 +vt 0.852901 0.850264 +vt 0.849985 0.844260 +vt 0.855411 0.857712 +vt 0.912671 0.840047 +vt 0.909607 0.845398 +vt 0.909570 0.834717 +vt 0.903403 0.834739 +vt 0.900339 0.840090 +vt 0.903441 0.845419 +vt 0.800528 0.871900 +vt 0.826443 0.829592 +vt 0.787608 0.871725 +vt 0.761675 0.914023 +vt 0.770376 0.887872 +vt 0.796308 0.845574 +vn 0.000000 0.965911 0.258874 +vn 0.000000 0.965911 0.258874 +vn 0.000000 0.965911 0.258874 +vn 0.000000 0.965911 0.258874 +vn 0.000000 0.866027 0.499997 +vn 0.000000 0.499997 0.866027 +vn 0.006507 0.499892 0.866063 +vn 0.006507 0.866063 0.499892 +vn 0.000000 0.499997 0.866027 +vn 0.000000 0.009238 0.999957 +vn 0.008568 0.009164 0.999921 +vn 0.006507 0.499892 0.866063 +vn 0.000000 -0.009238 0.999957 +vn 0.000000 -0.499998 0.866027 +vn 0.006507 -0.499894 0.866062 +vn 0.008568 -0.009164 0.999921 +vn 0.000000 -0.499998 0.866027 +vn 0.000000 -0.866027 0.499997 +vn 0.006507 -0.866064 0.499891 +vn 0.006507 -0.499894 0.866062 +vn 0.000000 -0.866027 0.499997 +vn 0.000000 -0.999957 0.009238 +vn 0.008568 -0.999921 0.009164 +vn 0.006507 -0.866064 0.499891 +vn 0.008568 0.999921 0.009164 +vn 0.499875 0.866070 0.006959 +vn 0.499875 0.866070 -0.006959 +vn 0.008568 0.999921 -0.009164 +vn 0.499875 0.866070 0.006959 +vn 0.866048 0.499913 0.006959 +vn 0.866048 0.499913 -0.006959 +vn 0.499875 0.866070 -0.006959 +vn 0.866048 0.499913 -0.006959 +vn 0.866048 0.499913 0.006959 +vn 0.999916 0.009159 0.009160 +vn 0.999916 0.009159 -0.009160 +vn 0.866042 -0.006958 0.499924 +vn 0.999916 -0.009159 0.009160 +vn 0.999916 0.009159 0.009160 +vn 0.866041 0.006958 0.499924 +vn 0.499880 -0.006958 0.866067 +vn 0.866042 -0.006958 0.499924 +vn 0.866041 0.006958 0.499924 +vn 0.499880 0.006958 0.866067 +vn 0.008568 -0.009164 0.999921 +vn 0.499880 -0.006958 0.866067 +vn 0.499880 0.006958 0.866067 +vn 0.008568 0.009164 0.999921 +vn 0.999916 -0.009159 0.009160 +vn 0.866055 -0.499900 0.006959 +vn 0.866055 -0.499900 -0.006959 +vn 0.999916 -0.009159 -0.009160 +vn 0.866055 -0.499900 0.006959 +vn 0.499882 -0.866066 0.006959 +vn 0.499882 -0.866066 -0.006959 +vn 0.866055 -0.499900 -0.006959 +vn 0.499882 -0.866066 0.006959 +vn 0.008568 -0.999921 0.009164 +vn 0.008568 -0.999921 -0.009164 +vn 0.499882 -0.866066 -0.006959 +vn 0.000000 0.866027 -0.499997 +vn 0.000000 0.999957 -0.009238 +vn 0.008568 0.999921 -0.009164 +vn 0.006508 0.866063 -0.499892 +vn 0.000000 0.499997 -0.866027 +vn 0.000000 0.866027 -0.499997 +vn 0.006508 0.866063 -0.499892 +vn 0.006507 0.499892 -0.866063 +vn 0.000000 0.258809 -0.965929 +vn 0.000000 0.499997 -0.866027 +vn 0.006507 0.499892 -0.866063 +vn 0.128599 0.137540 -0.982113 +vn 0.499880 -0.006958 -0.866067 +vn 0.128599 -0.137540 -0.982113 +vn 0.128599 0.137540 -0.982113 +vn 0.499880 0.006959 -0.866067 +vn 0.866041 -0.006958 -0.499924 +vn 0.499880 -0.006958 -0.866067 +vn 0.499880 0.006959 -0.866067 +vn 0.866042 0.006959 -0.499924 +vn 0.999916 -0.009159 -0.009160 +vn 0.866041 -0.006958 -0.499924 +vn 0.866042 0.006959 -0.499924 +vn 0.999916 0.009159 -0.009160 +vn 0.000000 -0.499997 -0.866027 +vn 0.000000 -0.258809 -0.965929 +vn 0.128599 -0.137540 -0.982113 +vn 0.006507 -0.499892 -0.866063 +vn 0.000000 -0.866027 -0.499997 +vn 0.000000 -0.499997 -0.866027 +vn 0.006507 -0.499892 -0.866063 +vn 0.006507 -0.866065 -0.499890 +vn 0.000000 -0.999957 -0.009238 +vn 0.000000 -0.866027 -0.499997 +vn 0.006507 -0.866065 -0.499890 +vn 0.008568 -0.999921 -0.009164 +vn 0.008568 0.009164 0.999921 +vn 0.000000 0.009238 0.999957 +vn 0.000000 -0.009238 0.999957 +vn 0.008568 -0.009164 0.999921 +vn 0.000000 -0.999957 0.009238 +vn 0.000000 -0.999957 -0.009238 +vn 0.008568 -0.999921 -0.009164 +vn 0.008568 -0.999921 0.009164 +vn 0.000000 0.999957 -0.009238 +vn 0.000000 0.999957 0.009238 +vn 0.008568 0.999921 0.009164 +vn 0.008568 0.999921 -0.009164 +vn 0.866041 0.006958 0.499924 +vn 0.999916 0.009159 0.009160 +vn 0.866048 0.499913 0.006959 +vn 0.809117 0.415527 0.415533 +vn 0.809117 0.415527 0.415533 +vn 0.866048 0.499913 0.006959 +vn 0.499875 0.866070 0.006959 +vn 0.415517 0.809129 0.415518 +vn 0.499875 0.866070 0.006959 +vn 0.008568 0.999921 0.009164 +vn 0.006507 0.866063 0.499892 +vn 0.415517 0.809129 0.415518 +vn 0.415517 0.809129 0.415518 +vn 0.006507 0.866063 0.499892 +vn 0.006507 0.499892 0.866063 +vn 0.415515 0.415522 0.809128 +vn 0.006507 0.499892 0.866063 +vn 0.008568 0.009164 0.999921 +vn 0.499880 0.006958 0.866067 +vn 0.415515 0.415522 0.809128 +vn 0.415515 0.415522 0.809128 +vn 0.499880 0.006958 0.866067 +vn 0.866041 0.006958 0.499924 +vn 0.809117 0.415527 0.415533 +vn 0.809117 0.415527 0.415533 +vn 0.415517 0.809129 0.415518 +vn 0.415515 0.415522 0.809128 +vn 0.006507 -0.866064 0.499891 +vn 0.008568 -0.999921 0.009164 +vn 0.499882 -0.866066 0.006959 +vn 0.415520 -0.809127 0.415519 +vn 0.415520 -0.809127 0.415519 +vn 0.499882 -0.866066 0.006959 +vn 0.866055 -0.499900 0.006959 +vn 0.809125 -0.415512 0.415531 +vn 0.866055 -0.499900 0.006959 +vn 0.999916 -0.009159 0.009160 +vn 0.866042 -0.006958 0.499924 +vn 0.809125 -0.415512 0.415531 +vn 0.809125 -0.415512 0.415531 +vn 0.866042 -0.006958 0.499924 +vn 0.499880 -0.006958 0.866067 +vn 0.415520 -0.415513 0.809130 +vn 0.499880 -0.006958 0.866067 +vn 0.008568 -0.009164 0.999921 +vn 0.006507 -0.499894 0.866062 +vn 0.415520 -0.415513 0.809130 +vn 0.415520 -0.415513 0.809130 +vn 0.006507 -0.499894 0.866062 +vn 0.006507 -0.866064 0.499891 +vn 0.415520 -0.809127 0.415519 +vn 0.415520 -0.809127 0.415519 +vn 0.809125 -0.415512 0.415531 +vn 0.415520 -0.415513 0.809130 +vn 0.499880 0.006959 -0.866067 +vn 0.128599 0.137540 -0.982113 +vn 0.006507 0.499892 -0.866063 +vn 0.415514 0.415526 -0.809127 +vn 0.415514 0.415526 -0.809127 +vn 0.006507 0.499892 -0.866063 +vn 0.006508 0.866063 -0.499892 +vn 0.415521 0.809126 -0.415520 +vn 0.006508 0.866063 -0.499892 +vn 0.008568 0.999921 -0.009164 +vn 0.499875 0.866070 -0.006959 +vn 0.415521 0.809126 -0.415520 +vn 0.415521 0.809126 -0.415520 +vn 0.499875 0.866070 -0.006959 +vn 0.866048 0.499913 -0.006959 +vn 0.809115 0.415536 -0.415528 +vn 0.866048 0.499913 -0.006959 +vn 0.999916 0.009159 -0.009160 +vn 0.866042 0.006959 -0.499924 +vn 0.809115 0.415536 -0.415528 +vn 0.809115 0.415536 -0.415528 +vn 0.866042 0.006959 -0.499924 +vn 0.499880 0.006959 -0.866067 +vn 0.415514 0.415526 -0.809127 +vn 0.415514 0.415526 -0.809127 +vn 0.415521 0.809126 -0.415520 +vn 0.809115 0.415536 -0.415528 +vn 0.499882 -0.866066 -0.006959 +vn 0.008568 -0.999921 -0.009164 +vn 0.006507 -0.866065 -0.499890 +vn 0.415516 -0.809129 -0.415520 +vn 0.415516 -0.809129 -0.415520 +vn 0.006507 -0.866065 -0.499890 +vn 0.006507 -0.499892 -0.866063 +vn 0.415511 -0.415525 -0.809129 +vn 0.006507 -0.499892 -0.866063 +vn 0.128599 -0.137540 -0.982113 +vn 0.499880 -0.006958 -0.866067 +vn 0.415511 -0.415525 -0.809129 +vn 0.415511 -0.415525 -0.809129 +vn 0.499880 -0.006958 -0.866067 +vn 0.866041 -0.006958 -0.499924 +vn 0.809120 -0.415513 -0.415540 +vn 0.866041 -0.006958 -0.499924 +vn 0.999916 -0.009159 -0.009160 +vn 0.866055 -0.499900 -0.006959 +vn 0.809120 -0.415513 -0.415540 +vn 0.809120 -0.415513 -0.415540 +vn 0.866055 -0.499900 -0.006959 +vn 0.499882 -0.866066 -0.006959 +vn 0.415516 -0.809129 -0.415520 +vn 0.415516 -0.809129 -0.415520 +vn 0.415511 -0.415525 -0.809129 +vn 0.809120 -0.415513 -0.415540 +vn 0.999916 -0.009159 0.009160 +vn 0.999916 -0.009159 -0.009160 +vn 0.999916 0.009159 -0.009160 +vn 0.999916 0.009159 0.009160 +vn -0.866046 -0.003298 0.499954 +vn -0.966003 -0.003180 0.258513 +vn -0.843379 -0.482303 0.236846 +vn -0.809126 -0.415518 0.415523 +vn -0.809126 -0.415518 0.415523 +vn -0.843379 -0.482303 0.236846 +vn -0.482306 -0.843384 0.236821 +vn -0.415509 -0.809135 0.415516 +vn -0.482306 -0.843384 0.236821 +vn -0.003179 -0.966031 0.258408 +vn -0.003297 -0.866056 0.499936 +vn -0.415509 -0.809135 0.415516 +vn -0.415509 -0.809135 0.415516 +vn -0.003297 -0.866056 0.499936 +vn -0.003298 -0.499940 0.866054 +vn -0.415516 -0.415522 0.809128 +vn -0.003298 -0.499940 0.866054 +vn -0.004374 -0.004374 0.999981 +vn -0.499942 -0.003298 0.866053 +vn -0.415516 -0.415522 0.809128 +vn -0.415516 -0.415522 0.809128 +vn -0.499942 -0.003298 0.866053 +vn -0.866046 -0.003298 0.499954 +vn -0.809126 -0.415518 0.415523 +vn -0.809126 -0.415518 0.415523 +vn -0.415509 -0.809135 0.415516 +vn -0.415516 -0.415522 0.809128 +vn 0.003297 -0.866056 0.499936 +vn 0.003179 -0.966031 0.258408 +vn 0.482306 -0.843383 0.236823 +vn 0.415506 -0.809135 0.415518 +vn 0.415506 -0.809135 0.415518 +vn 0.482306 -0.843383 0.236823 +vn 0.843387 -0.482295 0.236833 +vn 0.809133 -0.415515 0.415514 +vn 0.843387 -0.482295 0.236833 +vn 0.000001 -0.012300 0.999924 +vn 0.866059 -0.003298 0.499931 +vn 0.809133 -0.415515 0.415514 +vn 0.809133 -0.415515 0.415514 +vn 0.866059 -0.003298 0.499931 +vn 0.499942 -0.003298 0.866053 +vn 0.415511 -0.415521 0.809131 +vn 0.499942 -0.003298 0.866053 +vn 0.004374 -0.004374 0.999981 +vn 0.003297 -0.499940 0.866054 +vn 0.415511 -0.415521 0.809131 +vn 0.415511 -0.415521 0.809131 +vn 0.003297 -0.499940 0.866054 +vn 0.003297 -0.866056 0.499936 +vn 0.415506 -0.809135 0.415518 +vn 0.415506 -0.809135 0.415518 +vn 0.809133 -0.415515 0.415514 +vn 0.415511 -0.415521 0.809131 +vn -0.003298 0.866031 0.499980 +vn -0.012302 -0.000001 0.999924 +vn -0.482322 0.843364 0.236862 +vn -0.415514 0.809122 0.415536 +vn -0.415514 0.809122 0.415536 +vn -0.482322 0.843364 0.236862 +vn -0.843374 0.482301 0.236866 +vn -0.809121 0.415518 0.415533 +vn -0.843374 0.482301 0.236866 +vn -0.966003 0.003179 0.258513 +vn -0.866046 0.003298 0.499954 +vn -0.809121 0.415518 0.415533 +vn -0.809121 0.415518 0.415533 +vn -0.866046 0.003298 0.499954 +vn -0.499942 0.003298 0.866053 +vn -0.415510 0.415522 0.809131 +vn -0.499942 0.003298 0.866053 +vn -0.004374 0.004374 0.999981 +vn -0.003297 0.499940 0.866054 +vn -0.415510 0.415522 0.809131 +vn -0.415510 0.415522 0.809131 +vn -0.003297 0.499940 0.866054 +vn -0.003298 0.866031 0.499980 +vn -0.415514 0.809122 0.415536 +vn -0.415514 0.809122 0.415536 +vn -0.809121 0.415518 0.415533 +vn -0.415510 0.415522 0.809131 +vn 0.866059 0.003298 0.499931 +vn 0.000000 0.718456 0.695573 +vn 0.866048 0.499951 0.003192 +vn 0.809137 0.415515 0.415505 +vn 0.809137 0.415515 0.415505 +vn 0.866048 0.499951 0.003192 +vn 0.499981 0.866031 0.003193 +vn 0.415534 0.809117 0.415525 +vn 0.499981 0.866031 0.003193 +vn 0.718459 -0.000001 0.695570 +vn 0.003298 0.866028 0.499984 +vn 0.415534 0.809117 0.415525 +vn 0.415534 0.809117 0.415525 +vn 0.003298 0.866028 0.499984 +vn 0.003297 0.499940 0.866054 +vn 0.415517 0.415519 0.809129 +vn 0.003297 0.499940 0.866054 +vn 0.004374 0.004374 0.999981 +vn 0.499942 0.003298 0.866053 +vn 0.415517 0.415519 0.809129 +vn 0.415517 0.415519 0.809129 +vn 0.499942 0.003298 0.866053 +vn 0.866059 0.003298 0.499931 +vn 0.809137 0.415515 0.415505 +vn 0.809137 0.415515 0.415505 +vn 0.415534 0.809117 0.415525 +vn 0.415517 0.415519 0.809129 +vn -0.012302 -0.000001 0.999924 +vn -0.003298 0.866031 0.499980 +vn 0.003298 0.866028 0.499984 +vn 0.718459 -0.000001 0.695570 +vn -0.003298 0.866031 0.499980 +vn -0.003297 0.499940 0.866054 +vn 0.003297 0.499940 0.866054 +vn 0.003298 0.866028 0.499984 +vn -0.003297 0.499940 0.866054 +vn -0.004374 0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.003297 0.499940 0.866054 +vn -0.004374 -0.004374 0.999981 +vn -0.003298 -0.499940 0.866054 +vn 0.003297 -0.499940 0.866054 +vn 0.004374 -0.004374 0.999981 +vn -0.003298 -0.499940 0.866054 +vn -0.003297 -0.866056 0.499936 +vn 0.003297 -0.866056 0.499936 +vn 0.003297 -0.499940 0.866054 +vn -0.003297 -0.866056 0.499936 +vn -0.003179 -0.966031 0.258408 +vn 0.003179 -0.966031 0.258408 +vn 0.003297 -0.866056 0.499936 +vn -0.966003 0.003179 0.258513 +vn -0.966003 -0.003180 0.258513 +vn -0.866046 -0.003298 0.499954 +vn -0.866046 0.003298 0.499954 +vn -0.866046 -0.003298 0.499954 +vn -0.499942 -0.003298 0.866053 +vn -0.499942 0.003298 0.866053 +vn -0.866046 0.003298 0.499954 +vn -0.499942 -0.003298 0.866053 +vn -0.004374 -0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.499942 0.003298 0.866053 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.499942 -0.003298 0.866053 +vn 0.499942 0.003298 0.866053 +vn 0.004374 0.004374 0.999981 +vn 0.499942 -0.003298 0.866053 +vn 0.866059 -0.003298 0.499931 +vn 0.866059 0.003298 0.499931 +vn 0.499942 0.003298 0.866053 +vn 0.866059 -0.003298 0.499931 +vn 0.000001 -0.012300 0.999924 +vn 0.000000 0.718456 0.695573 +vn 0.866059 0.003298 0.499931 +vn 0.000000 1.000000 0.000000 +vn 0.866025 0.500001 0.000000 +vn 0.866048 0.499951 0.003192 +vn 0.000000 0.718456 0.695573 +vn 0.866025 0.500001 0.000000 +vn 0.500030 0.866008 0.000000 +vn 0.499981 0.866031 0.003193 +vn 0.866048 0.499951 0.003192 +vn 0.500030 0.866008 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.718459 -0.000001 0.695570 +vn 0.499981 0.866031 0.003193 +vn -0.866052 -0.003298 0.499943 +vn -0.966010 -0.003180 0.258486 +vn -0.843371 -0.482311 0.236859 +vn -0.809116 -0.415533 0.415528 +vn -0.809116 -0.415533 0.415528 +vn -0.843371 -0.482311 0.236859 +vn -0.482301 -0.843383 0.236834 +vn -0.415501 -0.809136 0.415521 +vn -0.482301 -0.843383 0.236834 +vn -0.012302 -0.000001 0.999924 +vn -0.003297 -0.866058 0.499933 +vn -0.415501 -0.809136 0.415521 +vn -0.415501 -0.809136 0.415521 +vn -0.003297 -0.866058 0.499933 +vn -0.003297 -0.499938 0.866055 +vn -0.415511 -0.415535 0.809124 +vn -0.003297 -0.499938 0.866055 +vn -0.004374 -0.004374 0.999981 +vn -0.499942 -0.003298 0.866053 +vn -0.415511 -0.415535 0.809124 +vn -0.415511 -0.415535 0.809124 +vn -0.499942 -0.003298 0.866053 +vn -0.866052 -0.003298 0.499943 +vn -0.809116 -0.415533 0.415528 +vn -0.809116 -0.415533 0.415528 +vn -0.415501 -0.809136 0.415521 +vn -0.415511 -0.415535 0.809124 +vn 0.003297 -0.866056 0.499937 +vn 0.718459 -0.000001 0.695570 +vn 0.499935 -0.866057 0.003192 +vn 0.415513 -0.809132 0.415516 +vn 0.415513 -0.809132 0.415516 +vn 0.499935 -0.866057 0.003192 +vn 0.866048 -0.499951 0.003192 +vn 0.809135 -0.415517 0.415507 +vn 0.866048 -0.499951 0.003192 +vn 0.999981 -0.004375 0.004235 +vn 0.866052 -0.003298 0.499943 +vn 0.809135 -0.415517 0.415507 +vn 0.809135 -0.415517 0.415507 +vn 0.866052 -0.003298 0.499943 +vn 0.499942 -0.003298 0.866053 +vn 0.415513 -0.415522 0.809130 +vn 0.499942 -0.003298 0.866053 +vn 0.004374 -0.004374 0.999981 +vn 0.003297 -0.499942 0.866053 +vn 0.415513 -0.415522 0.809130 +vn 0.415513 -0.415522 0.809130 +vn 0.003297 -0.499942 0.866053 +vn 0.003297 -0.866056 0.499937 +vn 0.415513 -0.809132 0.415516 +vn 0.415513 -0.809132 0.415516 +vn 0.809135 -0.415517 0.415507 +vn 0.415513 -0.415522 0.809130 +vn -0.003298 0.866030 0.499982 +vn -0.004375 0.999981 0.004236 +vn -0.499981 0.866031 0.003193 +vn -0.415522 0.809121 0.415530 +vn -0.415522 0.809121 0.415530 +vn -0.499981 0.866031 0.003193 +vn -0.866054 0.499940 0.003193 +vn -0.809127 0.415527 0.415513 +vn -0.866054 0.499940 0.003193 +vn -0.982333 0.134450 0.130175 +vn -0.866052 0.003298 0.499943 +vn -0.809127 0.415527 0.415513 +vn -0.809127 0.415527 0.415513 +vn -0.866052 0.003298 0.499943 +vn -0.499942 0.003298 0.866053 +vn -0.415511 0.415528 0.809128 +vn -0.499942 0.003298 0.866053 +vn -0.004374 0.004374 0.999981 +vn -0.003297 0.499941 0.866053 +vn -0.415511 0.415528 0.809128 +vn -0.415511 0.415528 0.809128 +vn -0.003297 0.499941 0.866053 +vn -0.003298 0.866030 0.499982 +vn -0.415522 0.809121 0.415530 +vn -0.415522 0.809121 0.415530 +vn -0.809127 0.415527 0.415513 +vn -0.415511 0.415528 0.809128 +vn 0.866052 0.003298 0.499943 +vn 0.999981 0.004375 0.004235 +vn 0.866048 0.499951 0.003193 +vn 0.809126 0.415528 0.415513 +vn 0.809126 0.415528 0.415513 +vn 0.866048 0.499951 0.003193 +vn 0.499981 0.866031 0.003193 +vn 0.415526 0.809117 0.415533 +vn 0.499981 0.866031 0.003193 +vn 0.004375 0.999981 0.004236 +vn 0.003298 0.866030 0.499982 +vn 0.415526 0.809117 0.415533 +vn 0.415526 0.809117 0.415533 +vn 0.003298 0.866030 0.499982 +vn 0.003298 0.499941 0.866053 +vn 0.415515 0.415531 0.809124 +vn 0.003298 0.499941 0.866053 +vn 0.004374 0.004374 0.999981 +vn 0.499942 0.003298 0.866053 +vn 0.415515 0.415531 0.809124 +vn 0.415515 0.415531 0.809124 +vn 0.499942 0.003298 0.866053 +vn 0.866052 0.003298 0.499943 +vn 0.809126 0.415528 0.415513 +vn 0.809126 0.415528 0.415513 +vn 0.415526 0.809117 0.415533 +vn 0.415515 0.415531 0.809124 +vn 0.000000 1.000000 0.000000 +vn -0.004392 0.999990 0.000000 +vn -0.004375 0.999981 0.004236 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.965931 0.258799 +vn 0.000000 0.965931 0.258799 +vn -0.004375 0.999981 0.004236 +vn -0.003298 0.866030 0.499982 +vn 0.000000 0.706961 0.707252 +vn 0.000000 0.706961 0.707252 +vn -0.003298 0.866030 0.499982 +vn -0.003297 0.499941 0.866053 +vn 0.000000 0.258855 0.965916 +vn 0.000000 0.258855 0.965916 +vn -0.003297 0.499941 0.866053 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003297 -0.499938 0.866055 +vn 0.003297 -0.499942 0.866053 +vn 0.004374 -0.004374 0.999981 +vn -0.003297 -0.499938 0.866055 +vn -0.003297 -0.866058 0.499933 +vn 0.003297 -0.866056 0.499937 +vn 0.003297 -0.499942 0.866053 +vn -0.003297 -0.866058 0.499933 +vn -0.012302 -0.000001 0.999924 +vn 0.718459 -0.000001 0.695570 +vn 0.003297 -0.866056 0.499937 +vn -0.965931 0.000000 0.258798 +vn -0.966010 -0.003180 0.258486 +vn -0.866052 -0.003298 0.499943 +vn -0.965931 0.000000 0.258798 +vn -0.866052 -0.003298 0.499943 +vn -0.499942 -0.003298 0.866053 +vn -0.707105 0.000000 0.707109 +vn -0.707105 0.000000 0.707109 +vn -0.499942 -0.003298 0.866053 +vn -0.004374 -0.004374 0.999981 +vn -0.258798 0.000000 0.965931 +vn -0.258798 0.000000 0.965931 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.499942 -0.003298 0.866053 +vn 0.499942 0.003298 0.866053 +vn 0.004374 0.004374 0.999981 +vn 0.499942 -0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.866052 0.003298 0.499943 +vn 0.499942 0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.999981 -0.004375 0.004235 +vn 0.999981 0.004375 0.004235 +vn 0.866052 0.003298 0.499943 +vn 1.000000 0.000000 0.000000 +vn 0.499984 -0.866035 0.000000 +vn 0.499935 -0.866057 0.003192 +vn 0.718459 -0.000001 0.695570 +vn 0.499984 -0.866035 0.000000 +vn 0.866025 -0.500001 0.000000 +vn 0.866048 -0.499951 0.003192 +vn 0.499935 -0.866057 0.003192 +vn 0.866025 -0.500001 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 -0.004375 0.004235 +vn 0.866048 -0.499951 0.003192 +vn 0.999981 -0.004375 0.004235 +vn 0.999990 -0.004392 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.999981 0.004375 0.004235 +vn 0.999990 0.004392 0.000000 +vn 0.866025 0.500001 0.000000 +vn 0.866048 0.499951 0.003193 +vn 0.999981 0.004375 0.004235 +vn 0.866025 0.500001 0.000000 +vn 0.500030 0.866008 0.000000 +vn 0.499981 0.866031 0.003193 +vn 0.866048 0.499951 0.003193 +vn 0.500030 0.866008 0.000000 +vn 0.004392 0.999990 0.000000 +vn 0.004375 0.999981 0.004236 +vn 0.499981 0.866031 0.003193 +vn -0.004392 0.999990 0.000000 +vn -0.500030 0.866008 0.000000 +vn -0.499981 0.866031 0.003193 +vn -0.004375 0.999981 0.004236 +vn -0.500030 0.866008 0.000000 +vn -0.866032 0.499989 0.000000 +vn -0.866054 0.499940 0.003193 +vn -0.499981 0.866031 0.003193 +vn -0.866032 0.499989 0.000000 +vn -0.965932 0.258797 0.000000 +vn -0.982333 0.134450 0.130175 +vn -0.866054 0.499940 0.003193 +vn -0.866046 -0.003298 0.499954 +vn 0.000001 -0.012300 0.999924 +vn -0.843379 -0.482303 0.236846 +vn -0.809125 -0.415521 0.415522 +vn -0.809125 -0.415521 0.415522 +vn -0.843379 -0.482303 0.236846 +vn -0.482306 -0.843384 0.236821 +vn -0.415510 -0.809134 0.415515 +vn -0.482306 -0.843384 0.236821 +vn -0.003179 -0.966031 0.258408 +vn -0.003297 -0.866056 0.499936 +vn -0.415510 -0.809134 0.415515 +vn -0.415510 -0.809134 0.415515 +vn -0.003297 -0.866056 0.499936 +vn -0.003297 -0.499940 0.866054 +vn -0.415517 -0.415519 0.809129 +vn -0.003297 -0.499940 0.866054 +vn -0.004374 -0.004374 0.999981 +vn -0.499942 -0.003298 0.866053 +vn -0.415517 -0.415519 0.809129 +vn -0.415517 -0.415519 0.809129 +vn -0.499942 -0.003298 0.866053 +vn -0.866046 -0.003298 0.499954 +vn -0.809125 -0.415521 0.415522 +vn -0.809125 -0.415521 0.415522 +vn -0.415510 -0.809134 0.415515 +vn -0.415517 -0.415519 0.809129 +vn 0.003297 -0.866056 0.499936 +vn 0.134416 -0.982343 0.130132 +vn 0.499935 -0.866057 0.003192 +vn 0.415508 -0.809135 0.415517 +vn 0.415508 -0.809135 0.415517 +vn 0.499935 -0.866057 0.003192 +vn 0.866054 -0.499940 0.003193 +vn 0.809130 -0.415514 0.415519 +vn 0.866054 -0.499940 0.003193 +vn 0.999981 -0.004374 0.004235 +vn 0.866052 -0.003298 0.499943 +vn 0.809130 -0.415514 0.415519 +vn 0.809130 -0.415514 0.415519 +vn 0.866052 -0.003298 0.499943 +vn 0.499942 -0.003298 0.866053 +vn 0.415512 -0.415520 0.809131 +vn 0.499942 -0.003298 0.866053 +vn 0.004374 -0.004374 0.999981 +vn 0.003297 -0.499940 0.866054 +vn 0.415512 -0.415520 0.809131 +vn 0.415512 -0.415520 0.809131 +vn 0.003297 -0.499940 0.866054 +vn 0.003297 -0.866056 0.499936 +vn 0.415508 -0.809135 0.415517 +vn 0.415508 -0.809135 0.415517 +vn 0.809130 -0.415514 0.415519 +vn 0.415512 -0.415520 0.809131 +vn -0.003298 0.866031 0.499980 +vn -0.004375 0.999981 0.004235 +vn -0.499981 0.866031 0.003193 +vn -0.415514 0.809122 0.415536 +vn -0.415514 0.809122 0.415536 +vn -0.499981 0.866031 0.003193 +vn -0.866054 0.499940 0.003193 +vn -0.809120 0.415521 0.415533 +vn -0.866054 0.499940 0.003193 +vn 0.000000 0.718456 0.695573 +vn -0.866046 0.003298 0.499954 +vn -0.809120 0.415521 0.415533 +vn -0.809120 0.415521 0.415533 +vn -0.866046 0.003298 0.499954 +vn -0.499942 0.003298 0.866053 +vn -0.415511 0.415521 0.809131 +vn -0.499942 0.003298 0.866053 +vn -0.004374 0.004374 0.999981 +vn -0.003297 0.499940 0.866054 +vn -0.415511 0.415521 0.809131 +vn -0.415511 0.415521 0.809131 +vn -0.003297 0.499940 0.866054 +vn -0.003298 0.866031 0.499980 +vn -0.415514 0.809122 0.415536 +vn -0.415514 0.809122 0.415536 +vn -0.809120 0.415521 0.415533 +vn -0.415511 0.415521 0.809131 +vn 0.866052 0.003298 0.499943 +vn 0.999981 0.004374 0.004235 +vn 0.866054 0.499940 0.003193 +vn 0.809131 0.415512 0.415520 +vn 0.809131 0.415512 0.415520 +vn 0.866054 0.499940 0.003193 +vn 0.499974 0.866035 0.003193 +vn 0.415527 0.809118 0.415531 +vn 0.499974 0.866035 0.003193 +vn 0.004375 0.999981 0.004236 +vn 0.003298 0.866028 0.499984 +vn 0.415527 0.809118 0.415531 +vn 0.415527 0.809118 0.415531 +vn 0.003298 0.866028 0.499984 +vn 0.003297 0.499940 0.866054 +vn 0.415517 0.415519 0.809129 +vn 0.003297 0.499940 0.866054 +vn 0.004374 0.004374 0.999981 +vn 0.499942 0.003298 0.866053 +vn 0.415517 0.415519 0.809129 +vn 0.415517 0.415519 0.809129 +vn 0.499942 0.003298 0.866053 +vn 0.866052 0.003298 0.499943 +vn 0.809131 0.415512 0.415520 +vn 0.809131 0.415512 0.415520 +vn 0.415527 0.809118 0.415531 +vn 0.415517 0.415519 0.809129 +vn 0.004392 0.999990 0.000000 +vn -0.004392 0.999990 0.000000 +vn -0.004375 0.999981 0.004235 +vn 0.004375 0.999981 0.004236 +vn 0.003298 0.866028 0.499984 +vn 0.004375 0.999981 0.004236 +vn -0.004375 0.999981 0.004235 +vn -0.003298 0.866031 0.499980 +vn 0.003297 0.499940 0.866054 +vn 0.003298 0.866028 0.499984 +vn -0.003298 0.866031 0.499980 +vn -0.003297 0.499940 0.866054 +vn 0.004374 0.004374 0.999981 +vn 0.003297 0.499940 0.866054 +vn -0.003297 0.499940 0.866054 +vn -0.004374 0.004374 0.999981 +vn 0.003297 -0.499940 0.866054 +vn 0.004374 -0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003297 -0.499940 0.866054 +vn 0.003297 -0.866056 0.499936 +vn 0.003297 -0.499940 0.866054 +vn -0.003297 -0.499940 0.866054 +vn -0.003297 -0.866056 0.499936 +vn -0.003179 -0.966031 0.258408 +vn 0.134416 -0.982343 0.130132 +vn 0.003297 -0.866056 0.499936 +vn -0.003297 -0.866056 0.499936 +vn 0.000001 -0.012300 0.999924 +vn -0.866046 -0.003298 0.499954 +vn -0.866046 0.003298 0.499954 +vn 0.000000 0.718456 0.695573 +vn -0.866046 -0.003298 0.499954 +vn -0.499942 -0.003298 0.866053 +vn -0.499942 0.003298 0.866053 +vn -0.866046 0.003298 0.499954 +vn -0.499942 -0.003298 0.866053 +vn -0.004374 -0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.499942 0.003298 0.866053 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.499942 -0.003298 0.866053 +vn 0.499942 0.003298 0.866053 +vn 0.004374 0.004374 0.999981 +vn 0.499942 -0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.866052 0.003298 0.499943 +vn 0.499942 0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.999981 -0.004374 0.004235 +vn 0.999981 0.004374 0.004235 +vn 0.866052 0.003298 0.499943 +vn 0.134416 -0.982343 0.130132 +vn 0.258728 -0.965950 0.000000 +vn 0.499984 -0.866035 0.000000 +vn 0.499935 -0.866057 0.003192 +vn 0.499984 -0.866035 0.000000 +vn 0.866032 -0.499989 0.000000 +vn 0.866054 -0.499940 0.003193 +vn 0.499935 -0.866057 0.003192 +vn 0.866032 -0.499989 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 -0.004374 0.004235 +vn 0.866054 -0.499940 0.003193 +vn 0.999990 -0.004392 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.999981 0.004374 0.004235 +vn 0.999981 -0.004374 0.004235 +vn 0.999990 0.004392 0.000000 +vn 0.866032 0.499989 0.000000 +vn 0.866054 0.499940 0.003193 +vn 0.999981 0.004374 0.004235 +vn 0.866032 0.499989 0.000000 +vn 0.500023 0.866012 0.000000 +vn 0.499974 0.866035 0.003193 +vn 0.866054 0.499940 0.003193 +vn 0.500023 0.866012 0.000000 +vn 0.004392 0.999990 0.000000 +vn 0.004375 0.999981 0.004236 +vn 0.499974 0.866035 0.003193 +vn -0.004392 0.999990 0.000000 +vn -0.500030 0.866008 0.000000 +vn -0.499981 0.866031 0.003193 +vn -0.004375 0.999981 0.004235 +vn -0.500030 0.866008 0.000000 +vn -0.866032 0.499989 0.000000 +vn -0.866054 0.499940 0.003193 +vn -0.499981 0.866031 0.003193 +vn -0.866032 0.499989 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.718456 0.695573 +vn -0.866054 0.499940 0.003193 +vn 0.982124 0.137502 0.128552 +vn 0.965947 0.258740 0.000000 +vn 0.866036 0.499981 0.000000 +vn 0.866073 0.499876 0.006507 +vn 0.866036 0.499981 0.000000 +vn 0.499993 0.866029 0.000000 +vn 0.499888 0.866066 0.006507 +vn 0.866073 0.499876 0.006507 +vn 0.499993 0.866029 0.000000 +vn 0.009238 0.999957 0.000000 +vn 0.009164 0.999921 0.008568 +vn 0.499888 0.866066 0.006507 +vn -0.009238 0.999957 0.000000 +vn -0.499986 0.866034 0.000000 +vn -0.499881 0.866070 0.006507 +vn -0.009164 0.999921 0.008568 +vn -0.499986 0.866034 0.000000 +vn -0.866008 0.500030 0.000000 +vn -0.866045 0.499924 0.006507 +vn -0.499881 0.866070 0.006507 +vn -0.866045 0.499924 0.006507 +vn -0.866008 0.500030 0.000000 +vn -0.999957 0.009239 0.000000 +vn -0.999921 0.009165 0.008569 +vn -0.999957 -0.009239 0.000000 +vn -0.866008 -0.500030 0.000000 +vn -0.866045 -0.499924 0.006507 +vn -0.999921 -0.009165 0.008569 +vn -0.866008 -0.500030 0.000000 +vn -0.499986 -0.866034 0.000000 +vn -0.499881 -0.866070 0.006507 +vn -0.866045 -0.499924 0.006507 +vn -0.499986 -0.866034 0.000000 +vn -0.258812 -0.965928 0.000000 +vn -0.137539 -0.982113 0.128593 +vn -0.499881 -0.866070 0.006507 +vn 0.006959 0.866064 0.499884 +vn 0.009164 0.999921 0.008568 +vn -0.009164 0.999921 0.008568 +vn -0.006959 0.866064 0.499884 +vn 0.006959 0.499884 0.866064 +vn 0.006959 0.866064 0.499884 +vn -0.006959 0.866064 0.499884 +vn -0.006959 0.499885 0.866064 +vn 0.009159 0.009159 0.999916 +vn 0.006959 0.499884 0.866064 +vn -0.006959 0.499885 0.866064 +vn -0.009159 0.009159 0.999916 +vn -0.499880 -0.006959 0.866067 +vn -0.009159 -0.009159 0.999916 +vn -0.009159 0.009159 0.999916 +vn -0.499880 0.006959 0.866067 +vn -0.866042 -0.006959 0.499924 +vn -0.499880 -0.006959 0.866067 +vn -0.499880 0.006959 0.866067 +vn -0.866042 0.006959 0.499924 +vn -0.999921 -0.009165 0.008569 +vn -0.866042 -0.006959 0.499924 +vn -0.866042 0.006959 0.499924 +vn -0.999921 0.009165 0.008569 +vn 0.006958 -0.499884 0.866064 +vn 0.009159 -0.009159 0.999916 +vn -0.009159 -0.009159 0.999916 +vn -0.006958 -0.499884 0.866064 +vn 0.006959 -0.866065 0.499884 +vn 0.006958 -0.499884 0.866064 +vn -0.006958 -0.499884 0.866064 +vn -0.006959 -0.866064 0.499884 +vn 0.006710 -0.966086 0.258133 +vn 0.006959 -0.866065 0.499884 +vn -0.006959 -0.866064 0.499884 +vn -0.137539 -0.982113 0.128593 +vn 0.866068 -0.006958 0.499878 +vn 0.966106 -0.006709 0.258058 +vn 0.982124 0.137502 0.128552 +vn 0.866068 0.006958 0.499878 +vn 0.499880 -0.006959 0.866067 +vn 0.866068 -0.006958 0.499878 +vn 0.866068 0.006958 0.499878 +vn 0.499880 0.006959 0.866067 +vn 0.009159 -0.009159 0.999916 +vn 0.499880 -0.006959 0.866067 +vn 0.499880 0.006959 0.866067 +vn 0.009159 0.009159 0.999916 +vn 0.009159 -0.009159 0.999916 +vn 0.009159 0.009159 0.999916 +vn -0.009159 0.009159 0.999916 +vn -0.009159 -0.009159 0.999916 +vn 0.009164 0.999921 0.008568 +vn 0.009238 0.999957 0.000000 +vn -0.009238 0.999957 0.000000 +vn -0.009164 0.999921 0.008568 +vn -0.499880 0.006959 0.866067 +vn -0.009159 0.009159 0.999916 +vn -0.006959 0.499885 0.866064 +vn -0.415510 0.415533 0.809125 +vn -0.415510 0.415533 0.809125 +vn -0.006959 0.499885 0.866064 +vn -0.006959 0.866064 0.499884 +vn -0.415521 0.809126 0.415520 +vn -0.006959 0.866064 0.499884 +vn -0.009164 0.999921 0.008568 +vn -0.499881 0.866070 0.006507 +vn -0.415521 0.809126 0.415520 +vn -0.415521 0.809126 0.415520 +vn -0.499881 0.866070 0.006507 +vn -0.866045 0.499924 0.006507 +vn -0.809114 0.415538 0.415528 +vn -0.866045 0.499924 0.006507 +vn -0.999921 0.009165 0.008569 +vn -0.866042 0.006959 0.499924 +vn -0.809114 0.415538 0.415528 +vn -0.809114 0.415538 0.415528 +vn -0.866042 0.006959 0.499924 +vn -0.499880 0.006959 0.866067 +vn -0.415510 0.415533 0.809125 +vn -0.415510 0.415533 0.809125 +vn -0.415521 0.809126 0.415520 +vn -0.809114 0.415538 0.415528 +vn -0.499881 -0.866070 0.006507 +vn -0.137539 -0.982113 0.128593 +vn -0.006959 -0.866064 0.499884 +vn -0.415521 -0.809127 0.415519 +vn -0.415521 -0.809127 0.415519 +vn -0.006959 -0.866064 0.499884 +vn -0.006958 -0.499884 0.866064 +vn -0.415509 -0.415533 0.809126 +vn -0.006958 -0.499884 0.866064 +vn -0.009159 -0.009159 0.999916 +vn -0.499880 -0.006959 0.866067 +vn -0.415509 -0.415533 0.809126 +vn -0.415509 -0.415533 0.809126 +vn -0.499880 -0.006959 0.866067 +vn -0.866042 -0.006959 0.499924 +vn -0.809114 -0.415538 0.415527 +vn -0.866042 -0.006959 0.499924 +vn -0.999921 -0.009165 0.008569 +vn -0.866045 -0.499924 0.006507 +vn -0.809114 -0.415538 0.415527 +vn -0.809114 -0.415538 0.415527 +vn -0.866045 -0.499924 0.006507 +vn -0.499881 -0.866070 0.006507 +vn -0.415521 -0.809127 0.415519 +vn -0.415521 -0.809127 0.415519 +vn -0.415509 -0.415533 0.809126 +vn -0.809114 -0.415538 0.415527 +vn 0.866068 0.006958 0.499878 +vn 0.982124 0.137502 0.128552 +vn 0.866073 0.499876 0.006507 +vn 0.809135 0.415510 0.415515 +vn 0.809135 0.415510 0.415515 +vn 0.866073 0.499876 0.006507 +vn 0.499888 0.866066 0.006507 +vn 0.415524 0.809122 0.415525 +vn 0.499888 0.866066 0.006507 +vn 0.009164 0.999921 0.008568 +vn 0.006959 0.866064 0.499884 +vn 0.415524 0.809122 0.415525 +vn 0.415524 0.809122 0.415525 +vn 0.006959 0.866064 0.499884 +vn 0.006959 0.499884 0.866064 +vn 0.415511 0.415516 0.809133 +vn 0.006959 0.499884 0.866064 +vn 0.009159 0.009159 0.999916 +vn 0.499880 0.006959 0.866067 +vn 0.415511 0.415516 0.809133 +vn 0.415511 0.415516 0.809133 +vn 0.499880 0.006959 0.866067 +vn 0.866068 0.006958 0.499878 +vn 0.809135 0.415510 0.415515 +vn 0.809135 0.415510 0.415515 +vn 0.415524 0.809122 0.415525 +vn 0.415511 0.415516 0.809133 +vn 0.006959 -0.866065 0.499884 +vn 0.006710 -0.966086 0.258133 +vn 0.482307 -0.843378 0.236841 +vn 0.415522 -0.809126 0.415519 +vn 0.415522 -0.809126 0.415519 +vn 0.482307 -0.843378 0.236841 +vn 0.843389 -0.482296 0.236825 +vn 0.809137 -0.415506 0.415515 +vn 0.843389 -0.482296 0.236825 +vn 0.966106 -0.006709 0.258058 +vn 0.866068 -0.006958 0.499878 +vn 0.809137 -0.415506 0.415515 +vn 0.809137 -0.415506 0.415515 +vn 0.866068 -0.006958 0.499878 +vn 0.499880 -0.006959 0.866067 +vn 0.415512 -0.415522 0.809130 +vn 0.499880 -0.006959 0.866067 +vn 0.009159 -0.009159 0.999916 +vn 0.006958 -0.499884 0.866064 +vn 0.415512 -0.415522 0.809130 +vn 0.415512 -0.415522 0.809130 +vn 0.006958 -0.499884 0.866064 +vn 0.006959 -0.866065 0.499884 +vn 0.415522 -0.809126 0.415519 +vn 0.415522 -0.809126 0.415519 +vn 0.809137 -0.415506 0.415515 +vn 0.415512 -0.415522 0.809130 +vn -0.999957 -0.009239 0.000000 +vn -0.999921 -0.009165 0.008569 +vn -0.999921 0.009165 0.008569 +vn -0.999957 0.009239 0.000000 +vn 0.009238 -0.999957 0.000000 +vn 0.500000 -0.866026 0.000000 +vn 0.499894 -0.866062 0.006507 +vn 0.009164 -0.999921 0.008568 +vn 0.500000 -0.866026 0.000000 +vn 0.866026 -0.500000 0.000000 +vn 0.866062 -0.499894 0.006507 +vn 0.499894 -0.866062 0.006507 +vn 0.866026 -0.500000 0.000000 +vn 0.999957 -0.009238 0.000000 +vn 0.999921 -0.009164 0.008568 +vn 0.866062 -0.499894 0.006507 +vn 0.999957 0.009238 0.000000 +vn 0.866026 0.500000 0.000000 +vn 0.866062 0.499894 0.006507 +vn 0.999921 0.009164 0.008568 +vn 0.866026 0.500000 0.000000 +vn 0.500000 0.866026 0.000000 +vn 0.499894 0.866062 0.006507 +vn 0.866062 0.499894 0.006507 +vn 0.500000 0.866026 0.000000 +vn 0.009238 0.999957 0.000000 +vn 0.009164 0.999921 0.008568 +vn 0.499894 0.866062 0.006507 +vn 0.009164 -0.999921 0.008568 +vn 0.006959 -0.866067 0.499880 +vn -0.006959 -0.866067 0.499880 +vn -0.009164 -0.999921 0.008568 +vn 0.006959 -0.866067 0.499880 +vn 0.006959 -0.499924 0.866042 +vn -0.006959 -0.499924 0.866041 +vn -0.006959 -0.866067 0.499880 +vn -0.006959 -0.499924 0.866041 +vn 0.006959 -0.499924 0.866042 +vn 0.009160 -0.009160 0.999916 +vn -0.009160 -0.009160 0.999916 +vn 0.499913 0.006959 0.866048 +vn 0.009160 0.009160 0.999916 +vn 0.009160 -0.009160 0.999916 +vn 0.499913 -0.006959 0.866048 +vn 0.866066 0.006959 0.499882 +vn 0.499913 0.006959 0.866048 +vn 0.499913 -0.006959 0.866048 +vn 0.866066 -0.006959 0.499882 +vn 0.999921 0.009164 0.008568 +vn 0.866066 0.006959 0.499882 +vn 0.866066 -0.006959 0.499882 +vn 0.999921 -0.009164 0.008568 +vn 0.009160 0.009160 0.999916 +vn 0.006959 0.499924 0.866041 +vn -0.006960 0.499924 0.866042 +vn -0.009160 0.009160 0.999916 +vn 0.006959 0.499924 0.866041 +vn 0.006959 0.866067 0.499880 +vn -0.006959 0.866067 0.499880 +vn -0.006960 0.499924 0.866042 +vn 0.006959 0.866067 0.499880 +vn 0.009164 0.999921 0.008568 +vn -0.009164 0.999921 0.008568 +vn -0.006959 0.866067 0.499880 +vn -0.500000 -0.866026 0.000000 +vn -0.009238 -0.999957 0.000000 +vn -0.009164 -0.999921 0.008568 +vn -0.499894 -0.866062 0.006507 +vn -0.866026 -0.500000 0.000000 +vn -0.500000 -0.866026 0.000000 +vn -0.499894 -0.866062 0.006507 +vn -0.866062 -0.499894 0.006507 +vn -0.999957 -0.009238 0.000000 +vn -0.866026 -0.500000 0.000000 +vn -0.866062 -0.499894 0.006507 +vn -0.999921 -0.009164 0.008568 +vn -0.866066 0.006959 0.499882 +vn -0.999921 0.009164 0.008568 +vn -0.999921 -0.009164 0.008568 +vn -0.866066 -0.006959 0.499881 +vn -0.499913 0.006959 0.866048 +vn -0.866066 0.006959 0.499882 +vn -0.866066 -0.006959 0.499881 +vn -0.499913 -0.006959 0.866048 +vn -0.009160 0.009160 0.999916 +vn -0.499913 0.006959 0.866048 +vn -0.499913 -0.006959 0.866048 +vn -0.009160 -0.009160 0.999916 +vn -0.866026 0.500000 0.000000 +vn -0.999957 0.009238 0.000000 +vn -0.999921 0.009164 0.008568 +vn -0.866062 0.499894 0.006507 +vn -0.500000 0.866026 0.000000 +vn -0.866026 0.500000 0.000000 +vn -0.866062 0.499894 0.006507 +vn -0.499894 0.866062 0.006507 +vn -0.009238 0.999957 0.000000 +vn -0.500000 0.866026 0.000000 +vn -0.499894 0.866062 0.006507 +vn -0.009164 0.999921 0.008568 +vn 0.999921 -0.009164 0.008568 +vn 0.999957 -0.009238 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.999921 0.009164 0.008568 +vn -0.999957 0.009238 0.000000 +vn -0.999957 -0.009238 0.000000 +vn -0.999921 -0.009164 0.008568 +vn -0.999921 0.009164 0.008568 +vn 0.009238 0.999957 0.000000 +vn -0.009238 0.999957 0.000000 +vn -0.009164 0.999921 0.008568 +vn 0.009164 0.999921 0.008568 +vn -0.009238 -0.999957 0.000000 +vn 0.009238 -0.999957 0.000000 +vn 0.009164 -0.999921 0.008568 +vn -0.009164 -0.999921 0.008568 +vn 0.499913 -0.006959 0.866048 +vn 0.009160 -0.009160 0.999916 +vn 0.006959 -0.499924 0.866042 +vn 0.415537 -0.415526 0.809115 +vn 0.415537 -0.415526 0.809115 +vn 0.006959 -0.499924 0.866042 +vn 0.006959 -0.866067 0.499880 +vn 0.415533 -0.809124 0.415513 +vn 0.006959 -0.866067 0.499880 +vn 0.009164 -0.999921 0.008568 +vn 0.499894 -0.866062 0.006507 +vn 0.415533 -0.809124 0.415513 +vn 0.415533 -0.809124 0.415513 +vn 0.499894 -0.866062 0.006507 +vn 0.866062 -0.499894 0.006507 +vn 0.809127 -0.415516 0.415525 +vn 0.866062 -0.499894 0.006507 +vn 0.999921 -0.009164 0.008568 +vn 0.866066 -0.006959 0.499882 +vn 0.809127 -0.415516 0.415525 +vn 0.809127 -0.415516 0.415525 +vn 0.866066 -0.006959 0.499882 +vn 0.499913 -0.006959 0.866048 +vn 0.415537 -0.415526 0.809115 +vn 0.415537 -0.415526 0.809115 +vn 0.415533 -0.809124 0.415513 +vn 0.809127 -0.415516 0.415525 +vn 0.499894 0.866062 0.006507 +vn 0.009164 0.999921 0.008568 +vn 0.006959 0.866067 0.499880 +vn 0.415534 0.809125 0.415510 +vn 0.415534 0.809125 0.415510 +vn 0.006959 0.866067 0.499880 +vn 0.006959 0.499924 0.866041 +vn 0.415538 0.415529 0.809113 +vn 0.006959 0.499924 0.866041 +vn 0.009160 0.009160 0.999916 +vn 0.499913 0.006959 0.866048 +vn 0.415538 0.415529 0.809113 +vn 0.415538 0.415529 0.809113 +vn 0.499913 0.006959 0.866048 +vn 0.866066 0.006959 0.499882 +vn 0.809126 0.415520 0.415521 +vn 0.866066 0.006959 0.499882 +vn 0.999921 0.009164 0.008568 +vn 0.866062 0.499894 0.006507 +vn 0.809126 0.415520 0.415521 +vn 0.809126 0.415520 0.415521 +vn 0.866062 0.499894 0.006507 +vn 0.499894 0.866062 0.006507 +vn 0.415534 0.809125 0.415510 +vn 0.415534 0.809125 0.415510 +vn 0.415538 0.415529 0.809113 +vn 0.809126 0.415520 0.415521 +vn -0.866066 -0.006959 0.499881 +vn -0.999921 -0.009164 0.008568 +vn -0.866062 -0.499894 0.006507 +vn -0.809129 -0.415516 0.415521 +vn -0.809129 -0.415516 0.415521 +vn -0.866062 -0.499894 0.006507 +vn -0.499894 -0.866062 0.006507 +vn -0.415533 -0.809124 0.415512 +vn -0.499894 -0.866062 0.006507 +vn -0.009164 -0.999921 0.008568 +vn -0.006959 -0.866067 0.499880 +vn -0.415533 -0.809124 0.415512 +vn -0.415533 -0.809124 0.415512 +vn -0.006959 -0.866067 0.499880 +vn -0.006959 -0.499924 0.866041 +vn -0.415539 -0.415526 0.809114 +vn -0.006959 -0.499924 0.866041 +vn -0.009160 -0.009160 0.999916 +vn -0.499913 -0.006959 0.866048 +vn -0.415539 -0.415526 0.809114 +vn -0.415539 -0.415526 0.809114 +vn -0.499913 -0.006959 0.866048 +vn -0.866066 -0.006959 0.499881 +vn -0.809129 -0.415516 0.415521 +vn -0.809129 -0.415516 0.415521 +vn -0.415533 -0.809124 0.415512 +vn -0.415539 -0.415526 0.809114 +vn -0.006959 0.866067 0.499880 +vn -0.009164 0.999921 0.008568 +vn -0.499894 0.866062 0.006507 +vn -0.415534 0.809125 0.415511 +vn -0.415534 0.809125 0.415511 +vn -0.499894 0.866062 0.006507 +vn -0.866062 0.499894 0.006507 +vn -0.809128 0.415516 0.415522 +vn -0.866062 0.499894 0.006507 +vn -0.999921 0.009164 0.008568 +vn -0.866066 0.006959 0.499882 +vn -0.809128 0.415516 0.415522 +vn -0.809128 0.415516 0.415522 +vn -0.866066 0.006959 0.499882 +vn -0.499913 0.006959 0.866048 +vn -0.415538 0.415527 0.809114 +vn -0.499913 0.006959 0.866048 +vn -0.009160 0.009160 0.999916 +vn -0.006960 0.499924 0.866042 +vn -0.415538 0.415527 0.809114 +vn -0.415538 0.415527 0.809114 +vn -0.006960 0.499924 0.866042 +vn -0.006959 0.866067 0.499880 +vn -0.415534 0.809125 0.415511 +vn -0.415534 0.809125 0.415511 +vn -0.809128 0.415516 0.415522 +vn -0.415538 0.415527 0.809114 +vn 0.009160 0.009160 0.999916 +vn -0.009160 0.009160 0.999916 +vn -0.009160 -0.009160 0.999916 +vn 0.009160 -0.009160 0.999916 +vn -0.003298 -0.499984 0.866029 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.415529 -0.415531 0.809117 +vn -0.415529 -0.415531 0.809117 +vn -0.499979 -0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.809127 -0.415516 0.415524 +vn -0.866056 -0.003298 0.499936 +vn -0.999981 -0.004375 0.004235 +vn -0.866049 -0.499950 0.003193 +vn -0.809127 -0.415516 0.415524 +vn -0.809127 -0.415516 0.415524 +vn -0.866049 -0.499950 0.003193 +vn -0.499950 -0.866049 0.003193 +vn -0.415520 -0.809123 0.415528 +vn -0.499950 -0.866049 0.003193 +vn -0.718457 0.000000 0.695572 +vn -0.003298 -0.866053 0.499942 +vn -0.415520 -0.809123 0.415528 +vn -0.415520 -0.809123 0.415528 +vn -0.003298 -0.866053 0.499942 +vn -0.003298 -0.499984 0.866029 +vn -0.415529 -0.415531 0.809117 +vn -0.415529 -0.415531 0.809117 +vn -0.809127 -0.415516 0.415524 +vn -0.415520 -0.809123 0.415528 +vn 0.866049 -0.499948 0.003193 +vn 0.999981 -0.004374 0.004235 +vn 0.866057 -0.003298 0.499935 +vn 0.809128 -0.415518 0.415519 +vn 0.809128 -0.415518 0.415519 +vn 0.866057 -0.003298 0.499935 +vn 0.499979 -0.003298 0.866031 +vn 0.415524 -0.415533 0.809118 +vn 0.499979 -0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.003298 -0.499984 0.866029 +vn 0.415524 -0.415533 0.809118 +vn 0.415524 -0.415533 0.809118 +vn 0.003298 -0.499984 0.866029 +vn 0.003297 -0.866053 0.499942 +vn 0.415516 -0.809126 0.415526 +vn 0.003297 -0.866053 0.499942 +vn 0.718457 0.000000 0.695572 +vn 0.499949 -0.866049 0.003193 +vn 0.415516 -0.809126 0.415526 +vn 0.415516 -0.809126 0.415526 +vn 0.499949 -0.866049 0.003193 +vn 0.866049 -0.499948 0.003193 +vn 0.809128 -0.415518 0.415519 +vn 0.809128 -0.415518 0.415519 +vn 0.415524 -0.415533 0.809118 +vn 0.415516 -0.809126 0.415526 +vn -0.003297 0.866053 0.499942 +vn -0.004375 0.999981 0.004235 +vn -0.499950 0.866049 0.003193 +vn -0.415517 0.809125 0.415526 +vn -0.415517 0.809125 0.415526 +vn -0.499950 0.866049 0.003193 +vn -0.866049 0.499950 0.003193 +vn -0.809127 0.415518 0.415521 +vn -0.866049 0.499950 0.003193 +vn -0.999981 0.004375 0.004235 +vn -0.866056 0.003298 0.499936 +vn -0.809127 0.415518 0.415521 +vn -0.809127 0.415518 0.415521 +vn -0.866056 0.003298 0.499936 +vn -0.499979 0.003298 0.866031 +vn -0.415524 0.415532 0.809119 +vn -0.499979 0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.003298 0.499984 0.866029 +vn -0.415524 0.415532 0.809119 +vn -0.415524 0.415532 0.809119 +vn -0.003298 0.499984 0.866029 +vn -0.003297 0.866053 0.499942 +vn -0.415517 0.809125 0.415526 +vn -0.415517 0.809125 0.415526 +vn -0.809127 0.415518 0.415521 +vn -0.415524 0.415532 0.809119 +vn 0.866056 0.003298 0.499936 +vn 0.999981 0.004374 0.004235 +vn 0.866049 0.499948 0.003193 +vn 0.809127 0.415518 0.415521 +vn 0.809127 0.415518 0.415521 +vn 0.866049 0.499948 0.003193 +vn 0.499949 0.866049 0.003193 +vn 0.415521 0.809124 0.415524 +vn 0.499949 0.866049 0.003193 +vn 0.004375 0.999981 0.004235 +vn 0.003298 0.866053 0.499942 +vn 0.415521 0.809124 0.415524 +vn 0.415521 0.809124 0.415524 +vn 0.003298 0.866053 0.499942 +vn 0.003298 0.499984 0.866029 +vn 0.415528 0.415531 0.809117 +vn 0.003298 0.499984 0.866029 +vn 0.004374 0.004374 0.999981 +vn 0.499979 0.003298 0.866031 +vn 0.415528 0.415531 0.809117 +vn 0.415528 0.415531 0.809117 +vn 0.499979 0.003298 0.866031 +vn 0.866056 0.003298 0.499936 +vn 0.809127 0.415518 0.415521 +vn 0.809127 0.415518 0.415521 +vn 0.415521 0.809124 0.415524 +vn 0.415528 0.415531 0.809117 +vn -0.004375 0.999981 0.004235 +vn -0.003297 0.866053 0.499942 +vn 0.003298 0.866053 0.499942 +vn 0.004375 0.999981 0.004235 +vn -0.003297 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn 0.003298 0.499984 0.866029 +vn 0.003298 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn -0.004374 0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.003298 0.499984 0.866029 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003298 -0.499984 0.866029 +vn 0.003298 -0.499984 0.866029 +vn 0.004374 -0.004374 0.999981 +vn -0.003298 -0.499984 0.866029 +vn -0.003298 -0.866053 0.499942 +vn 0.003297 -0.866053 0.499942 +vn 0.003298 -0.499984 0.866029 +vn -0.003298 -0.866053 0.499942 +vn -0.718457 0.000000 0.695572 +vn 0.718457 0.000000 0.695572 +vn 0.003297 -0.866053 0.499942 +vn -0.999990 -0.004392 0.000000 +vn -0.866026 -0.499999 0.000000 +vn -0.866049 -0.499950 0.003193 +vn -0.999981 -0.004375 0.004235 +vn -0.866026 -0.499999 0.000000 +vn -0.499999 -0.866026 0.000000 +vn -0.499950 -0.866049 0.003193 +vn -0.866049 -0.499950 0.003193 +vn -0.499999 -0.866026 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.718457 0.000000 0.695572 +vn -0.499950 -0.866049 0.003193 +vn 1.000000 0.000000 0.000000 +vn 0.499998 -0.866027 0.000000 +vn 0.499949 -0.866049 0.003193 +vn 0.718457 0.000000 0.695572 +vn 0.499998 -0.866027 0.000000 +vn 0.866027 -0.499997 0.000000 +vn 0.866049 -0.499948 0.003193 +vn 0.499949 -0.866049 0.003193 +vn 0.866027 -0.499997 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 -0.004374 0.004235 +vn 0.866049 -0.499948 0.003193 +vn 0.999990 0.004392 0.000000 +vn 0.866027 0.499997 0.000000 +vn 0.866049 0.499948 0.003193 +vn 0.999981 0.004374 0.004235 +vn 0.866027 0.499997 0.000000 +vn 0.499998 0.866027 0.000000 +vn 0.499949 0.866049 0.003193 +vn 0.866049 0.499948 0.003193 +vn 0.499998 0.866027 0.000000 +vn 0.004392 0.999990 0.000000 +vn 0.004375 0.999981 0.004235 +vn 0.499949 0.866049 0.003193 +vn 0.004392 0.999990 0.000000 +vn -0.004392 0.999990 0.000000 +vn -0.004375 0.999981 0.004235 +vn 0.004375 0.999981 0.004235 +vn -0.004392 0.999990 0.000000 +vn -0.499999 0.866026 0.000000 +vn -0.499950 0.866049 0.003193 +vn -0.004375 0.999981 0.004235 +vn -0.499999 0.866026 0.000000 +vn -0.866026 0.499999 0.000000 +vn -0.866049 0.499950 0.003193 +vn -0.499950 0.866049 0.003193 +vn -0.866026 0.499999 0.000000 +vn -0.999990 0.004392 0.000000 +vn -0.999981 0.004375 0.004235 +vn -0.866049 0.499950 0.003193 +vn -0.999990 0.004392 0.000000 +vn -0.999990 -0.004392 0.000000 +vn -0.999981 -0.004375 0.004235 +vn -0.999981 0.004375 0.004235 +vn 0.999981 -0.004374 0.004235 +vn 0.999990 -0.004392 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.999981 0.004374 0.004235 +vn 0.866057 -0.003298 0.499935 +vn 0.999981 -0.004374 0.004235 +vn 0.999981 0.004374 0.004235 +vn 0.866056 0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.866057 -0.003298 0.499935 +vn 0.866056 0.003298 0.499936 +vn 0.499979 0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.499979 -0.003298 0.866031 +vn 0.499979 0.003298 0.866031 +vn 0.004374 0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.499979 -0.003298 0.866031 +vn -0.499979 0.003298 0.866031 +vn -0.866056 0.003298 0.499936 +vn -0.999981 -0.004375 0.004235 +vn -0.866056 -0.003298 0.499936 +vn -0.866056 0.003298 0.499936 +vn -0.999981 0.004375 0.004235 +vn -0.003298 -0.499980 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.415530 -0.415531 0.809116 +vn -0.415530 -0.415531 0.809116 +vn -0.499979 -0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.809127 -0.415516 0.415524 +vn -0.866056 -0.003298 0.499936 +vn -0.999981 -0.004375 0.004235 +vn -0.866049 -0.499950 0.003193 +vn -0.809127 -0.415516 0.415524 +vn -0.809127 -0.415516 0.415524 +vn -0.866049 -0.499950 0.003193 +vn -0.499950 -0.866049 0.003193 +vn -0.415521 -0.809123 0.415527 +vn -0.499950 -0.866049 0.003193 +vn -0.004375 -0.999981 0.004235 +vn -0.003298 -0.866055 0.499939 +vn -0.415521 -0.809123 0.415527 +vn -0.415521 -0.809123 0.415527 +vn -0.003298 -0.866055 0.499939 +vn -0.003298 -0.499980 0.866031 +vn -0.415530 -0.415531 0.809116 +vn -0.415530 -0.415531 0.809116 +vn -0.809127 -0.415516 0.415524 +vn -0.415521 -0.809123 0.415527 +vn 0.866049 -0.499948 0.003193 +vn 0.000000 -0.718461 0.695568 +vn 0.866056 -0.003298 0.499936 +vn 0.809126 -0.415517 0.415524 +vn 0.809126 -0.415517 0.415524 +vn 0.866056 -0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.415525 -0.415534 0.809117 +vn 0.499979 -0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.003298 -0.499980 0.866031 +vn 0.415525 -0.415534 0.809117 +vn 0.415525 -0.415534 0.809117 +vn 0.003298 -0.499980 0.866031 +vn 0.003297 -0.866055 0.499939 +vn 0.415516 -0.809126 0.415526 +vn 0.003297 -0.866055 0.499939 +vn 0.004375 -0.999981 0.004235 +vn 0.499949 -0.866049 0.003193 +vn 0.415516 -0.809126 0.415526 +vn 0.415516 -0.809126 0.415526 +vn 0.499949 -0.866049 0.003193 +vn 0.866049 -0.499948 0.003193 +vn 0.809126 -0.415517 0.415524 +vn 0.809126 -0.415517 0.415524 +vn 0.415525 -0.415534 0.809117 +vn 0.415516 -0.809126 0.415526 +vn -0.003297 0.866053 0.499942 +vn -0.718457 0.000000 0.695572 +vn -0.499950 0.866049 0.003193 +vn -0.415517 0.809125 0.415526 +vn -0.415517 0.809125 0.415526 +vn -0.499950 0.866049 0.003193 +vn -0.866049 0.499950 0.003193 +vn -0.809128 0.415519 0.415519 +vn -0.866049 0.499950 0.003193 +vn -0.999981 0.004375 0.004235 +vn -0.866057 0.003298 0.499935 +vn -0.809128 0.415519 0.415519 +vn -0.809128 0.415519 0.415519 +vn -0.866057 0.003298 0.499935 +vn -0.499979 0.003298 0.866031 +vn -0.415525 0.415532 0.809118 +vn -0.499979 0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.003298 0.499984 0.866029 +vn -0.415525 0.415532 0.809118 +vn -0.415525 0.415532 0.809118 +vn -0.003298 0.499984 0.866029 +vn -0.003297 0.866053 0.499942 +vn -0.415517 0.809125 0.415526 +vn -0.415517 0.809125 0.415526 +vn -0.809128 0.415519 0.415519 +vn -0.415525 0.415532 0.809118 +vn 0.866056 0.003298 0.499936 +vn 0.000000 0.718461 0.695568 +vn 0.866049 0.499948 0.003193 +vn 0.809127 0.415517 0.415523 +vn 0.809127 0.415517 0.415523 +vn 0.866049 0.499948 0.003193 +vn 0.499949 0.866049 0.003193 +vn 0.415520 0.809123 0.415528 +vn 0.499949 0.866049 0.003193 +vn 0.718457 0.000000 0.695572 +vn 0.003298 0.866053 0.499942 +vn 0.415520 0.809123 0.415528 +vn 0.415520 0.809123 0.415528 +vn 0.003298 0.866053 0.499942 +vn 0.003298 0.499984 0.866029 +vn 0.415529 0.415532 0.809116 +vn 0.003298 0.499984 0.866029 +vn 0.004374 0.004374 0.999981 +vn 0.499979 0.003298 0.866031 +vn 0.415529 0.415532 0.809116 +vn 0.415529 0.415532 0.809116 +vn 0.499979 0.003298 0.866031 +vn 0.866056 0.003298 0.499936 +vn 0.809127 0.415517 0.415523 +vn 0.809127 0.415517 0.415523 +vn 0.415520 0.809123 0.415528 +vn 0.415529 0.415532 0.809116 +vn -0.718457 0.000000 0.695572 +vn -0.003297 0.866053 0.499942 +vn 0.003298 0.866053 0.499942 +vn 0.718457 0.000000 0.695572 +vn -0.003297 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn 0.003298 0.499984 0.866029 +vn 0.003298 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn -0.004374 0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.003298 0.499984 0.866029 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003298 -0.499980 0.866031 +vn 0.003298 -0.499980 0.866031 +vn 0.004374 -0.004374 0.999981 +vn -0.003298 -0.499980 0.866031 +vn -0.003298 -0.866055 0.499939 +vn 0.003297 -0.866055 0.499939 +vn 0.003298 -0.499980 0.866031 +vn -0.003298 -0.866055 0.499939 +vn -0.004375 -0.999981 0.004235 +vn 0.004375 -0.999981 0.004235 +vn 0.003297 -0.866055 0.499939 +vn -0.999990 -0.004392 0.000000 +vn -0.866026 -0.499999 0.000000 +vn -0.866049 -0.499950 0.003193 +vn -0.999981 -0.004375 0.004235 +vn -0.866026 -0.499999 0.000000 +vn -0.499999 -0.866026 0.000000 +vn -0.499950 -0.866049 0.003193 +vn -0.866049 -0.499950 0.003193 +vn -0.499999 -0.866026 0.000000 +vn -0.004392 -0.999990 0.000000 +vn -0.004375 -0.999981 0.004235 +vn -0.499950 -0.866049 0.003193 +vn -0.004375 -0.999981 0.004235 +vn -0.004392 -0.999990 0.000000 +vn 0.004392 -0.999990 0.000000 +vn 0.004375 -0.999981 0.004235 +vn 0.004392 -0.999990 0.000000 +vn 0.499998 -0.866027 0.000000 +vn 0.499949 -0.866049 0.003193 +vn 0.004375 -0.999981 0.004235 +vn 0.499998 -0.866027 0.000000 +vn 0.866027 -0.499997 0.000000 +vn 0.866049 -0.499948 0.003193 +vn 0.499949 -0.866049 0.003193 +vn 0.866027 -0.499997 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -0.718461 0.695568 +vn 0.866049 -0.499948 0.003193 +vn 0.000000 1.000000 0.000000 +vn 0.866027 0.499997 0.000000 +vn 0.866049 0.499948 0.003193 +vn 0.000000 0.718461 0.695568 +vn 0.866027 0.499997 0.000000 +vn 0.499998 0.866027 0.000000 +vn 0.499949 0.866049 0.003193 +vn 0.866049 0.499948 0.003193 +vn 0.499998 0.866027 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.718457 0.000000 0.695572 +vn 0.499949 0.866049 0.003193 +vn -1.000000 0.000000 0.000000 +vn -0.499999 0.866026 0.000000 +vn -0.499950 0.866049 0.003193 +vn -0.718457 0.000000 0.695572 +vn -0.499999 0.866026 0.000000 +vn -0.866026 0.499999 0.000000 +vn -0.866049 0.499950 0.003193 +vn -0.499950 0.866049 0.003193 +vn -0.866026 0.499999 0.000000 +vn -0.999990 0.004392 0.000000 +vn -0.999981 0.004375 0.004235 +vn -0.866049 0.499950 0.003193 +vn -0.999990 0.004392 0.000000 +vn -0.999990 -0.004392 0.000000 +vn -0.999981 -0.004375 0.004235 +vn -0.999981 0.004375 0.004235 +vn 0.866056 -0.003298 0.499936 +vn 0.000000 -0.718461 0.695568 +vn 0.000000 0.718461 0.695568 +vn 0.866056 0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.866056 -0.003298 0.499936 +vn 0.866056 0.003298 0.499936 +vn 0.499979 0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.499979 -0.003298 0.866031 +vn 0.499979 0.003298 0.866031 +vn 0.004374 0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.499979 -0.003298 0.866031 +vn -0.499979 0.003298 0.866031 +vn -0.866057 0.003298 0.499935 +vn -0.999981 -0.004375 0.004235 +vn -0.866056 -0.003298 0.499936 +vn -0.866057 0.003298 0.499935 +vn -0.999981 0.004375 0.004235 +vn -0.003298 -0.499980 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.415529 -0.415532 0.809116 +vn -0.415529 -0.415532 0.809116 +vn -0.499979 -0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.809126 -0.415518 0.415524 +vn -0.866056 -0.003298 0.499936 +vn 0.000000 -0.718463 0.695565 +vn -0.866049 -0.499948 0.003193 +vn -0.809126 -0.415518 0.415524 +vn -0.809126 -0.415518 0.415524 +vn -0.866049 -0.499948 0.003193 +vn -0.499949 -0.866049 0.003193 +vn -0.415520 -0.809124 0.415526 +vn -0.499949 -0.866049 0.003193 +vn -0.718467 0.000000 0.695561 +vn -0.003298 -0.866055 0.499939 +vn -0.415520 -0.809124 0.415526 +vn -0.415520 -0.809124 0.415526 +vn -0.003298 -0.866055 0.499939 +vn -0.003298 -0.499980 0.866031 +vn -0.415529 -0.415532 0.809116 +vn -0.415529 -0.415532 0.809116 +vn -0.809126 -0.415518 0.415524 +vn -0.415520 -0.809124 0.415526 +vn 0.866049 -0.499950 0.003193 +vn 0.999981 -0.004375 0.004235 +vn 0.866056 -0.003298 0.499936 +vn 0.809127 -0.415516 0.415524 +vn 0.809127 -0.415516 0.415524 +vn 0.866056 -0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.415525 -0.415532 0.809118 +vn 0.499979 -0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.003298 -0.499980 0.866031 +vn 0.415525 -0.415532 0.809118 +vn 0.415525 -0.415532 0.809118 +vn 0.003298 -0.499980 0.866031 +vn 0.003297 -0.866055 0.499939 +vn 0.415516 -0.809126 0.415526 +vn 0.003297 -0.866055 0.499939 +vn 0.718467 0.000000 0.695561 +vn 0.499950 -0.866049 0.003193 +vn 0.415516 -0.809126 0.415526 +vn 0.415516 -0.809126 0.415526 +vn 0.499950 -0.866049 0.003193 +vn 0.866049 -0.499950 0.003193 +vn 0.809127 -0.415516 0.415524 +vn 0.809127 -0.415516 0.415524 +vn 0.415525 -0.415532 0.809118 +vn 0.415516 -0.809126 0.415526 +vn -0.003297 0.866053 0.499942 +vn -0.004375 0.999981 0.004235 +vn -0.499949 0.866049 0.003193 +vn -0.415516 0.809126 0.415526 +vn -0.415516 0.809126 0.415526 +vn -0.499949 0.866049 0.003193 +vn -0.866049 0.499948 0.003193 +vn -0.809128 0.415519 0.415519 +vn -0.866049 0.499948 0.003193 +vn 0.000000 0.718463 0.695565 +vn -0.866057 0.003298 0.499935 +vn -0.809128 0.415519 0.415519 +vn -0.809128 0.415519 0.415519 +vn -0.866057 0.003298 0.499935 +vn -0.499979 0.003298 0.866031 +vn -0.415524 0.415533 0.809118 +vn -0.499979 0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.003298 0.499984 0.866029 +vn -0.415524 0.415533 0.809118 +vn -0.415524 0.415533 0.809118 +vn -0.003298 0.499984 0.866029 +vn -0.003297 0.866053 0.499942 +vn -0.415516 0.809126 0.415526 +vn -0.415516 0.809126 0.415526 +vn -0.809128 0.415519 0.415519 +vn -0.415524 0.415533 0.809118 +vn 0.866056 0.003298 0.499936 +vn 0.999981 0.004375 0.004235 +vn 0.866049 0.499950 0.003193 +vn 0.809127 0.415516 0.415523 +vn 0.809127 0.415516 0.415523 +vn 0.866049 0.499950 0.003193 +vn 0.499950 0.866049 0.003193 +vn 0.415520 0.809123 0.415528 +vn 0.499950 0.866049 0.003193 +vn 0.004375 0.999981 0.004235 +vn 0.003298 0.866053 0.499942 +vn 0.415520 0.809123 0.415528 +vn 0.415520 0.809123 0.415528 +vn 0.003298 0.866053 0.499942 +vn 0.003298 0.499984 0.866029 +vn 0.415529 0.415531 0.809117 +vn 0.003298 0.499984 0.866029 +vn 0.004374 0.004374 0.999981 +vn 0.499979 0.003298 0.866031 +vn 0.415529 0.415531 0.809117 +vn 0.415529 0.415531 0.809117 +vn 0.499979 0.003298 0.866031 +vn 0.866056 0.003298 0.499936 +vn 0.809127 0.415516 0.415523 +vn 0.809127 0.415516 0.415523 +vn 0.415520 0.809123 0.415528 +vn 0.415529 0.415531 0.809117 +vn -0.004375 0.999981 0.004235 +vn -0.003297 0.866053 0.499942 +vn 0.003298 0.866053 0.499942 +vn 0.004375 0.999981 0.004235 +vn -0.003297 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn 0.003298 0.499984 0.866029 +vn 0.003298 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn -0.004374 0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.003298 0.499984 0.866029 +vn 0.004374 0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003298 -0.499980 0.866031 +vn 0.003298 -0.499980 0.866031 +vn 0.004374 -0.004374 0.999981 +vn -0.003298 -0.499980 0.866031 +vn -0.003298 -0.866055 0.499939 +vn 0.003297 -0.866055 0.499939 +vn 0.003298 -0.499980 0.866031 +vn -0.003298 -0.866055 0.499939 +vn -0.718467 0.000000 0.695561 +vn 0.718467 0.000000 0.695561 +vn 0.003297 -0.866055 0.499939 +vn 0.000000 -1.000000 0.000000 +vn -0.866027 -0.499997 0.000000 +vn -0.866049 -0.499948 0.003193 +vn 0.000000 -0.718463 0.695565 +vn -0.866027 -0.499997 0.000000 +vn -0.499998 -0.866027 0.000000 +vn -0.499949 -0.866049 0.003193 +vn -0.866049 -0.499948 0.003193 +vn -0.499998 -0.866027 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.718467 0.000000 0.695561 +vn -0.499949 -0.866049 0.003193 +vn 1.000000 0.000000 0.000000 +vn 0.499999 -0.866026 0.000000 +vn 0.499950 -0.866049 0.003193 +vn 0.718467 0.000000 0.695561 +vn 0.499999 -0.866026 0.000000 +vn 0.866026 -0.499999 0.000000 +vn 0.866049 -0.499950 0.003193 +vn 0.499950 -0.866049 0.003193 +vn 0.866026 -0.499999 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 -0.004375 0.004235 +vn 0.866049 -0.499950 0.003193 +vn 0.999990 0.004392 0.000000 +vn 0.866026 0.499999 0.000000 +vn 0.866049 0.499950 0.003193 +vn 0.999981 0.004375 0.004235 +vn 0.866026 0.499999 0.000000 +vn 0.499999 0.866026 0.000000 +vn 0.499950 0.866049 0.003193 +vn 0.866049 0.499950 0.003193 +vn 0.499999 0.866026 0.000000 +vn 0.004392 0.999990 0.000000 +vn 0.004375 0.999981 0.004235 +vn 0.499950 0.866049 0.003193 +vn 0.004392 0.999990 0.000000 +vn -0.004392 0.999990 0.000000 +vn -0.004375 0.999981 0.004235 +vn 0.004375 0.999981 0.004235 +vn -0.004392 0.999990 0.000000 +vn -0.499998 0.866027 0.000000 +vn -0.499949 0.866049 0.003193 +vn -0.004375 0.999981 0.004235 +vn -0.499998 0.866027 0.000000 +vn -0.866027 0.499997 0.000000 +vn -0.866049 0.499948 0.003193 +vn -0.499949 0.866049 0.003193 +vn -0.866027 0.499997 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.718463 0.695565 +vn -0.866049 0.499948 0.003193 +vn 0.999981 -0.004375 0.004235 +vn 0.999990 -0.004392 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.999981 0.004375 0.004235 +vn 0.866056 -0.003298 0.499936 +vn 0.999981 -0.004375 0.004235 +vn 0.999981 0.004375 0.004235 +vn 0.866056 0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.866056 -0.003298 0.499936 +vn 0.866056 0.003298 0.499936 +vn 0.499979 0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.499979 -0.003298 0.866031 +vn 0.499979 0.003298 0.866031 +vn 0.004374 0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.499979 -0.003298 0.866031 +vn -0.499979 0.003298 0.866031 +vn -0.866057 0.003298 0.499935 +vn 0.000000 -0.718463 0.695565 +vn -0.866056 -0.003298 0.499936 +vn -0.866057 0.003298 0.499935 +vn 0.000000 0.718463 0.695565 +vn -0.003298 -0.499980 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.415529 -0.415532 0.809116 +vn -0.415529 -0.415532 0.809116 +vn -0.499979 -0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.809126 -0.415517 0.415524 +vn -0.866056 -0.003298 0.499936 +vn 0.000000 -0.718461 0.695568 +vn -0.866049 -0.499948 0.003193 +vn -0.809126 -0.415517 0.415524 +vn -0.809126 -0.415517 0.415524 +vn -0.866049 -0.499948 0.003193 +vn -0.499949 -0.866049 0.003193 +vn -0.415520 -0.809124 0.415526 +vn -0.499949 -0.866049 0.003193 +vn -0.004375 -0.999981 0.004235 +vn -0.003298 -0.866055 0.499939 +vn -0.415520 -0.809124 0.415526 +vn -0.415520 -0.809124 0.415526 +vn -0.003298 -0.866055 0.499939 +vn -0.003298 -0.499980 0.866031 +vn -0.415529 -0.415532 0.809116 +vn -0.415529 -0.415532 0.809116 +vn -0.809126 -0.415517 0.415524 +vn -0.415520 -0.809124 0.415526 +vn 0.866049 -0.499949 0.003193 +vn 0.000000 -0.718463 0.695565 +vn 0.866056 -0.003298 0.499936 +vn 0.809126 -0.415518 0.415524 +vn 0.809126 -0.415518 0.415524 +vn 0.866056 -0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.415525 -0.415533 0.809118 +vn 0.499979 -0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.003298 -0.499980 0.866031 +vn 0.415525 -0.415533 0.809118 +vn 0.415525 -0.415533 0.809118 +vn 0.003298 -0.499980 0.866031 +vn 0.003297 -0.866055 0.499939 +vn 0.415516 -0.809126 0.415527 +vn 0.003297 -0.866055 0.499939 +vn 0.004375 -0.999981 0.004235 +vn 0.499949 -0.866049 0.003193 +vn 0.415516 -0.809126 0.415527 +vn 0.415516 -0.809126 0.415527 +vn 0.499949 -0.866049 0.003193 +vn 0.866049 -0.499949 0.003193 +vn 0.809126 -0.415518 0.415524 +vn 0.809126 -0.415518 0.415524 +vn 0.415525 -0.415533 0.809118 +vn 0.415516 -0.809126 0.415527 +vn -0.003297 0.866053 0.499942 +vn -0.004375 0.999981 0.004235 +vn -0.499949 0.866049 0.003193 +vn -0.415516 0.809126 0.415526 +vn -0.415516 0.809126 0.415526 +vn -0.499949 0.866049 0.003193 +vn -0.866049 0.499948 0.003193 +vn -0.809128 0.415518 0.415519 +vn -0.866049 0.499948 0.003193 +vn 0.000000 0.718461 0.695568 +vn -0.866057 0.003298 0.499935 +vn -0.809128 0.415518 0.415519 +vn -0.809128 0.415518 0.415519 +vn -0.866057 0.003298 0.499935 +vn -0.499979 0.003298 0.866031 +vn -0.415524 0.415533 0.809118 +vn -0.499979 0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.003298 0.499984 0.866029 +vn -0.415524 0.415533 0.809118 +vn -0.415524 0.415533 0.809118 +vn -0.003298 0.499984 0.866029 +vn -0.003297 0.866053 0.499942 +vn -0.415516 0.809126 0.415526 +vn -0.415516 0.809126 0.415526 +vn -0.809128 0.415518 0.415519 +vn -0.415524 0.415533 0.809118 +vn 0.866056 0.003298 0.499936 +vn 0.000000 0.718463 0.695565 +vn 0.866049 0.499949 0.003193 +vn 0.809126 0.415518 0.415523 +vn 0.809126 0.415518 0.415523 +vn 0.866049 0.499949 0.003193 +vn 0.499949 0.866049 0.003193 +vn 0.415520 0.809123 0.415527 +vn 0.499949 0.866049 0.003193 +vn 0.004375 0.999981 0.004235 +vn 0.003298 0.866053 0.499942 +vn 0.415520 0.809123 0.415527 +vn 0.415520 0.809123 0.415527 +vn 0.003298 0.866053 0.499942 +vn 0.003298 0.499984 0.866029 +vn 0.415529 0.415532 0.809116 +vn 0.003298 0.499984 0.866029 +vn 0.004374 0.004374 0.999981 +vn 0.499979 0.003298 0.866031 +vn 0.415529 0.415532 0.809116 +vn 0.415529 0.415532 0.809116 +vn 0.499979 0.003298 0.866031 +vn 0.866056 0.003298 0.499936 +vn 0.809126 0.415518 0.415523 +vn 0.809126 0.415518 0.415523 +vn 0.415520 0.809123 0.415527 +vn 0.415529 0.415532 0.809116 +vn -0.004375 0.999981 0.004235 +vn -0.003297 0.866053 0.499942 +vn 0.003298 0.866053 0.499942 +vn 0.004375 0.999981 0.004235 +vn -0.003297 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn 0.003298 0.499984 0.866029 +vn 0.003298 0.866053 0.499942 +vn -0.003298 0.499984 0.866029 +vn -0.004374 0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.003298 0.499984 0.866029 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003298 -0.499980 0.866031 +vn 0.003298 -0.499980 0.866031 +vn 0.004374 -0.004374 0.999981 +vn -0.003298 -0.499980 0.866031 +vn -0.003298 -0.866055 0.499939 +vn 0.003297 -0.866055 0.499939 +vn 0.003298 -0.499980 0.866031 +vn -0.003298 -0.866055 0.499939 +vn -0.004375 -0.999981 0.004235 +vn 0.004375 -0.999981 0.004235 +vn 0.003297 -0.866055 0.499939 +vn 0.000000 -1.000000 0.000000 +vn -0.866027 -0.499997 0.000000 +vn -0.866049 -0.499948 0.003193 +vn 0.000000 -0.718461 0.695568 +vn -0.866027 -0.499997 0.000000 +vn -0.499998 -0.866027 0.000000 +vn -0.499949 -0.866049 0.003193 +vn -0.866049 -0.499948 0.003193 +vn -0.499998 -0.866027 0.000000 +vn -0.004392 -0.999990 0.000000 +vn -0.004375 -0.999981 0.004235 +vn -0.499949 -0.866049 0.003193 +vn 0.004392 -0.999990 0.000000 +vn 0.499998 -0.866027 0.000000 +vn 0.499949 -0.866049 0.003193 +vn 0.004375 -0.999981 0.004235 +vn 0.499998 -0.866027 0.000000 +vn 0.866027 -0.499998 0.000000 +vn 0.866049 -0.499949 0.003193 +vn 0.499949 -0.866049 0.003193 +vn 0.866027 -0.499998 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -0.718463 0.695565 +vn 0.866049 -0.499949 0.003193 +vn 0.000000 1.000000 0.000000 +vn 0.866027 0.499998 0.000000 +vn 0.866049 0.499949 0.003193 +vn 0.000000 0.718463 0.695565 +vn 0.866027 0.499998 0.000000 +vn 0.499998 0.866027 0.000000 +vn 0.499949 0.866049 0.003193 +vn 0.866049 0.499949 0.003193 +vn 0.499998 0.866027 0.000000 +vn 0.004392 0.999990 0.000000 +vn 0.004375 0.999981 0.004235 +vn 0.499949 0.866049 0.003193 +vn 0.004392 0.999990 0.000000 +vn -0.004392 0.999990 0.000000 +vn -0.004375 0.999981 0.004235 +vn 0.004375 0.999981 0.004235 +vn -0.004392 0.999990 0.000000 +vn -0.499998 0.866027 0.000000 +vn -0.499949 0.866049 0.003193 +vn -0.004375 0.999981 0.004235 +vn -0.499998 0.866027 0.000000 +vn -0.866027 0.499997 0.000000 +vn -0.866049 0.499948 0.003193 +vn -0.499949 0.866049 0.003193 +vn -0.866027 0.499997 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.718461 0.695568 +vn -0.866049 0.499948 0.003193 +vn 0.866056 -0.003298 0.499936 +vn 0.000000 -0.718463 0.695565 +vn 0.000000 0.718463 0.695565 +vn 0.866056 0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.866056 -0.003298 0.499936 +vn 0.866056 0.003298 0.499936 +vn 0.499979 0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.499979 -0.003298 0.866031 +vn 0.499979 0.003298 0.866031 +vn 0.004374 0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.499979 -0.003298 0.866031 +vn -0.499979 0.003298 0.866031 +vn -0.866057 0.003298 0.499935 +vn 0.000000 -0.718461 0.695568 +vn -0.866056 -0.003298 0.499936 +vn -0.866057 0.003298 0.499935 +vn 0.000000 0.718461 0.695568 +vn -0.003298 -0.499981 0.866030 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.415527 -0.415531 0.809117 +vn -0.415527 -0.415531 0.809117 +vn -0.499979 -0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.809126 -0.415519 0.415523 +vn -0.866056 -0.003298 0.499936 +vn -0.999981 -0.004375 0.004235 +vn -0.866049 -0.499948 0.003193 +vn -0.809126 -0.415519 0.415523 +vn -0.809126 -0.415519 0.415523 +vn -0.866049 -0.499948 0.003193 +vn -0.499949 -0.866049 0.003193 +vn -0.415521 -0.809125 0.415524 +vn -0.499949 -0.866049 0.003193 +vn -0.004375 -0.999981 0.004235 +vn -0.003298 -0.866054 0.499940 +vn -0.415521 -0.809125 0.415524 +vn -0.415521 -0.809125 0.415524 +vn -0.003298 -0.866054 0.499940 +vn -0.003298 -0.499981 0.866030 +vn -0.415527 -0.415531 0.809117 +vn -0.415527 -0.415531 0.809117 +vn -0.809126 -0.415519 0.415523 +vn -0.415521 -0.809125 0.415524 +vn 0.866050 -0.499948 0.003193 +vn 0.000000 -0.718456 0.695573 +vn 0.866056 -0.003298 0.499936 +vn 0.809127 -0.415516 0.415524 +vn 0.809127 -0.415516 0.415524 +vn 0.866056 -0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.415524 -0.415531 0.809119 +vn 0.499979 -0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.003298 -0.499981 0.866030 +vn 0.415524 -0.415531 0.809119 +vn 0.415524 -0.415531 0.809119 +vn 0.003298 -0.499981 0.866030 +vn 0.003297 -0.866054 0.499940 +vn 0.415516 -0.809126 0.415525 +vn 0.003297 -0.866054 0.499940 +vn 0.004375 -0.999981 0.004235 +vn 0.499948 -0.866050 0.003193 +vn 0.415516 -0.809126 0.415525 +vn 0.415516 -0.809126 0.415525 +vn 0.499948 -0.866050 0.003193 +vn 0.866050 -0.499948 0.003193 +vn 0.809127 -0.415516 0.415524 +vn 0.809127 -0.415516 0.415524 +vn 0.415524 -0.415531 0.809119 +vn 0.415516 -0.809126 0.415525 +vn -0.003297 0.866055 0.499939 +vn -0.718467 0.000000 0.695561 +vn -0.499949 0.866049 0.003193 +vn -0.415516 0.809126 0.415527 +vn -0.415516 0.809126 0.415527 +vn -0.499949 0.866049 0.003193 +vn -0.866049 0.499948 0.003193 +vn -0.809126 0.415518 0.415524 +vn -0.866049 0.499948 0.003193 +vn -0.999981 0.004375 0.004235 +vn -0.866057 0.003298 0.499935 +vn -0.809126 0.415518 0.415524 +vn -0.809126 0.415518 0.415524 +vn -0.866057 0.003298 0.499935 +vn -0.499979 0.003298 0.866031 +vn -0.415525 0.415533 0.809118 +vn -0.499979 0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.003298 0.499980 0.866031 +vn -0.415525 0.415533 0.809118 +vn -0.415525 0.415533 0.809118 +vn -0.003298 0.499980 0.866031 +vn -0.003297 0.866055 0.499939 +vn -0.415516 0.809126 0.415527 +vn -0.415516 0.809126 0.415527 +vn -0.809126 0.415518 0.415524 +vn -0.415525 0.415533 0.809118 +vn 0.866057 0.003298 0.499935 +vn 0.000000 0.718466 0.695562 +vn 0.866049 0.499950 0.003193 +vn 0.809127 0.415516 0.415524 +vn 0.809127 0.415516 0.415524 +vn 0.866049 0.499950 0.003193 +vn 0.499950 0.866049 0.003193 +vn 0.415521 0.809123 0.415527 +vn 0.499950 0.866049 0.003193 +vn 0.718467 0.000000 0.695561 +vn 0.003298 0.866055 0.499939 +vn 0.415521 0.809123 0.415527 +vn 0.415521 0.809123 0.415527 +vn 0.003298 0.866055 0.499939 +vn 0.003298 0.499980 0.866031 +vn 0.415529 0.415531 0.809116 +vn 0.003298 0.499980 0.866031 +vn 0.004374 0.004374 0.999981 +vn 0.499979 0.003298 0.866031 +vn 0.415529 0.415531 0.809116 +vn 0.415529 0.415531 0.809116 +vn 0.499979 0.003298 0.866031 +vn 0.866057 0.003298 0.499935 +vn 0.809127 0.415516 0.415524 +vn 0.809127 0.415516 0.415524 +vn 0.415521 0.809123 0.415527 +vn 0.415529 0.415531 0.809116 +vn -0.718467 0.000000 0.695561 +vn -0.003297 0.866055 0.499939 +vn 0.003298 0.866055 0.499939 +vn 0.718467 0.000000 0.695561 +vn -0.003297 0.866055 0.499939 +vn -0.003298 0.499980 0.866031 +vn 0.003298 0.499980 0.866031 +vn 0.003298 0.866055 0.499939 +vn -0.003298 0.499980 0.866031 +vn -0.004374 0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.003298 0.499980 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003298 -0.499981 0.866030 +vn 0.003298 -0.499981 0.866030 +vn 0.004374 -0.004374 0.999981 +vn -0.003298 -0.499981 0.866030 +vn -0.003298 -0.866054 0.499940 +vn 0.003297 -0.866054 0.499940 +vn 0.003298 -0.499981 0.866030 +vn -0.003298 -0.866054 0.499940 +vn -0.004375 -0.999981 0.004235 +vn 0.004375 -0.999981 0.004235 +vn 0.003297 -0.866054 0.499940 +vn -0.999990 -0.004392 0.000000 +vn -0.866027 -0.499997 0.000000 +vn -0.866049 -0.499948 0.003193 +vn -0.999981 -0.004375 0.004235 +vn -0.866027 -0.499997 0.000000 +vn -0.500020 -0.866014 0.000000 +vn -0.499949 -0.866049 0.003193 +vn -0.866049 -0.499948 0.003193 +vn -0.500020 -0.866014 0.000000 +vn -0.004393 -0.999990 0.000000 +vn -0.004375 -0.999981 0.004235 +vn -0.499949 -0.866049 0.003193 +vn 0.000000 1.000000 0.000000 +vn 0.866026 0.499999 0.000000 +vn 0.866049 0.499950 0.003193 +vn 0.000000 0.718466 0.695562 +vn 0.866026 0.499999 0.000000 +vn 0.499999 0.866026 0.000000 +vn 0.499950 0.866049 0.003193 +vn 0.866049 0.499950 0.003193 +vn 0.499999 0.866026 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.718467 0.000000 0.695561 +vn 0.499950 0.866049 0.003193 +vn -1.000000 0.000000 0.000000 +vn -0.499998 0.866027 0.000000 +vn -0.499949 0.866049 0.003193 +vn -0.718467 0.000000 0.695561 +vn -0.499998 0.866027 0.000000 +vn -0.866027 0.499997 0.000000 +vn -0.866049 0.499948 0.003193 +vn -0.499949 0.866049 0.003193 +vn -0.866027 0.499997 0.000000 +vn -0.999990 0.004392 0.000000 +vn -0.999981 0.004375 0.004235 +vn -0.866049 0.499948 0.003193 +vn -0.999981 0.004375 0.004235 +vn -0.999990 0.004392 0.000000 +vn -0.999990 -0.004392 0.000000 +vn -0.999981 -0.004375 0.004235 +vn 0.000000 0.718466 0.695562 +vn 0.866057 0.003298 0.499935 +vn 0.866056 -0.003298 0.499936 +vn 0.000000 -0.718456 0.695573 +vn 0.866057 0.003298 0.499935 +vn 0.499979 0.003298 0.866031 +vn 0.499979 -0.003298 0.866031 +vn 0.866056 -0.003298 0.499936 +vn 0.499979 0.003298 0.866031 +vn 0.004374 0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.499979 -0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.499979 -0.003298 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.866057 0.003298 0.499935 +vn -0.866056 -0.003298 0.499936 +vn -0.499979 -0.003298 0.866031 +vn -0.866057 0.003298 0.499935 +vn -0.999981 0.004375 0.004235 +vn -0.999981 -0.004375 0.004235 +vn -0.866056 -0.003298 0.499936 +vn -0.003298 -0.499981 0.866030 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 -0.003298 0.866031 +vn -0.415528 -0.415530 0.809118 +vn -0.415528 -0.415530 0.809118 +vn -0.499979 -0.003298 0.866031 +vn -0.866056 -0.003298 0.499936 +vn -0.809127 -0.415516 0.415523 +vn -0.866056 -0.003298 0.499936 +vn 0.000000 -0.718456 0.695573 +vn -0.866050 -0.499948 0.003193 +vn -0.809127 -0.415516 0.415523 +vn -0.809127 -0.415516 0.415523 +vn -0.866050 -0.499948 0.003193 +vn -0.499948 -0.866050 0.003193 +vn -0.415521 -0.809124 0.415524 +vn -0.499948 -0.866050 0.003193 +vn -0.004375 -0.999981 0.004235 +vn -0.003298 -0.866054 0.499940 +vn -0.415521 -0.809124 0.415524 +vn -0.415521 -0.809124 0.415524 +vn -0.003298 -0.866054 0.499940 +vn -0.003298 -0.499981 0.866030 +vn -0.415528 -0.415530 0.809118 +vn -0.415528 -0.415530 0.809118 +vn -0.809127 -0.415516 0.415523 +vn -0.415521 -0.809124 0.415524 +vn 0.866050 -0.499947 0.003193 +vn 0.999981 -0.004374 0.004235 +vn 0.866056 -0.003298 0.499936 +vn 0.809128 -0.415515 0.415524 +vn 0.809128 -0.415515 0.415524 +vn 0.866056 -0.003298 0.499936 +vn 0.499979 -0.003298 0.866031 +vn 0.415523 -0.415532 0.809119 +vn 0.499979 -0.003298 0.866031 +vn 0.004374 -0.004374 0.999981 +vn 0.003298 -0.499981 0.866030 +vn 0.415523 -0.415532 0.809119 +vn 0.415523 -0.415532 0.809119 +vn 0.003298 -0.499981 0.866030 +vn 0.003297 -0.866054 0.499940 +vn 0.415517 -0.809126 0.415526 +vn 0.003297 -0.866054 0.499940 +vn 0.004375 -0.999981 0.004235 +vn 0.499949 -0.866049 0.003193 +vn 0.415517 -0.809126 0.415526 +vn 0.415517 -0.809126 0.415526 +vn 0.499949 -0.866049 0.003193 +vn 0.866050 -0.499947 0.003193 +vn 0.809128 -0.415515 0.415524 +vn 0.809128 -0.415515 0.415524 +vn 0.415523 -0.415532 0.809119 +vn 0.415517 -0.809126 0.415526 +vn -0.003297 0.866055 0.499939 +vn -0.004375 0.999981 0.004235 +vn -0.499950 0.866049 0.003193 +vn -0.415516 0.809126 0.415526 +vn -0.415516 0.809126 0.415526 +vn -0.499950 0.866049 0.003193 +vn -0.866049 0.499950 0.003193 +vn -0.809127 0.415516 0.415525 +vn -0.866049 0.499950 0.003193 +vn 0.000000 0.718466 0.695562 +vn -0.866057 0.003298 0.499935 +vn -0.809127 0.415516 0.415525 +vn -0.809127 0.415516 0.415525 +vn -0.866057 0.003298 0.499935 +vn -0.499979 0.003298 0.866031 +vn -0.415525 0.415532 0.809118 +vn -0.499979 0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.003298 0.499980 0.866031 +vn -0.415525 0.415532 0.809118 +vn -0.415525 0.415532 0.809118 +vn -0.003298 0.499980 0.866031 +vn -0.003297 0.866055 0.499939 +vn -0.415516 0.809126 0.415526 +vn -0.415516 0.809126 0.415526 +vn -0.809127 0.415516 0.415525 +vn -0.415525 0.415532 0.809118 +vn 0.866057 0.003298 0.499935 +vn 0.999981 0.004374 0.004235 +vn 0.866050 0.499947 0.003193 +vn 0.809126 0.415518 0.415524 +vn 0.809126 0.415518 0.415524 +vn 0.866050 0.499947 0.003193 +vn 0.499946 0.866051 0.003193 +vn 0.415521 0.809123 0.415527 +vn 0.499946 0.866051 0.003193 +vn 0.004375 0.999981 0.004235 +vn 0.003298 0.866055 0.499939 +vn 0.415521 0.809123 0.415527 +vn 0.415521 0.809123 0.415527 +vn 0.003298 0.866055 0.499939 +vn 0.003298 0.499980 0.866031 +vn 0.415529 0.415534 0.809115 +vn 0.003298 0.499980 0.866031 +vn 0.004374 0.004374 0.999981 +vn 0.499979 0.003298 0.866031 +vn 0.415529 0.415534 0.809115 +vn 0.415529 0.415534 0.809115 +vn 0.499979 0.003298 0.866031 +vn 0.866057 0.003298 0.499935 +vn 0.809126 0.415518 0.415524 +vn 0.809126 0.415518 0.415524 +vn 0.415521 0.809123 0.415527 +vn 0.415529 0.415534 0.809115 +vn 0.003298 0.866055 0.499939 +vn 0.004375 0.999981 0.004235 +vn -0.004375 0.999981 0.004235 +vn -0.003297 0.866055 0.499939 +vn 0.003298 0.499980 0.866031 +vn 0.003298 0.866055 0.499939 +vn -0.003297 0.866055 0.499939 +vn -0.003298 0.499980 0.866031 +vn 0.004374 0.004374 0.999981 +vn 0.003298 0.499980 0.866031 +vn -0.003298 0.499980 0.866031 +vn -0.004374 0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn -0.004374 0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn 0.003298 -0.499981 0.866030 +vn 0.004374 -0.004374 0.999981 +vn -0.004374 -0.004374 0.999981 +vn -0.003298 -0.499981 0.866030 +vn 0.003297 -0.866054 0.499940 +vn 0.003298 -0.499981 0.866030 +vn -0.003298 -0.499981 0.866030 +vn -0.003298 -0.866054 0.499940 +vn 0.004375 -0.999981 0.004235 +vn 0.003297 -0.866054 0.499940 +vn -0.003298 -0.866054 0.499940 +vn -0.004375 -0.999981 0.004235 +vn 0.004393 -0.999990 0.000000 +vn 0.500020 -0.866014 0.000000 +vn 0.499949 -0.866049 0.003193 +vn 0.004375 -0.999981 0.004235 +vn 0.500020 -0.866014 0.000000 +vn 0.866028 -0.499996 0.000000 +vn 0.866050 -0.499947 0.003193 +vn 0.499949 -0.866049 0.003193 +vn 0.866028 -0.499996 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 -0.004374 0.004235 +vn 0.866050 -0.499947 0.003193 +vn 0.999990 0.004392 0.000000 +vn 0.866028 0.499996 0.000000 +vn 0.866050 0.499947 0.003193 +vn 0.999981 0.004374 0.004235 +vn 0.866028 0.499996 0.000000 +vn 0.499995 0.866028 0.000000 +vn 0.499946 0.866051 0.003193 +vn 0.866050 0.499947 0.003193 +vn 0.499995 0.866028 0.000000 +vn 0.004392 0.999990 0.000000 +vn 0.004375 0.999981 0.004235 +vn 0.499946 0.866051 0.003193 +vn 0.004375 0.999981 0.004235 +vn 0.004392 0.999990 0.000000 +vn -0.004392 0.999990 0.000000 +vn -0.004375 0.999981 0.004235 +vn -0.004392 0.999990 0.000000 +vn -0.499999 0.866026 0.000000 +vn -0.499950 0.866049 0.003193 +vn -0.004375 0.999981 0.004235 +vn -0.499999 0.866026 0.000000 +vn -0.866026 0.499999 0.000000 +vn -0.866049 0.499950 0.003193 +vn -0.499950 0.866049 0.003193 +vn -0.866026 0.499999 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.718466 0.695562 +vn -0.866049 0.499950 0.003193 +vn 0.999990 -0.004392 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.999981 0.004374 0.004235 +vn 0.999981 -0.004374 0.004235 +vn 0.999981 0.004374 0.004235 +vn 0.866057 0.003298 0.499935 +vn 0.866056 -0.003298 0.499936 +vn 0.999981 -0.004374 0.004235 +vn 0.866057 0.003298 0.499935 +vn 0.499979 0.003298 0.866031 +vn 0.499979 -0.003298 0.866031 +vn 0.866056 -0.003298 0.499936 +vn 0.499979 0.003298 0.866031 +vn 0.004374 0.004374 0.999981 +vn 0.004374 -0.004374 0.999981 +vn 0.499979 -0.003298 0.866031 +vn -0.004374 0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.499979 -0.003298 0.866031 +vn -0.004374 -0.004374 0.999981 +vn -0.499979 0.003298 0.866031 +vn -0.866057 0.003298 0.499935 +vn -0.866056 -0.003298 0.499936 +vn -0.499979 -0.003298 0.866031 +vn -0.866057 0.003298 0.499935 +vn 0.000000 0.718466 0.695562 +vn 0.000000 -0.718456 0.695573 +vn -0.866056 -0.003298 0.499936 +vn -0.004375 -0.999981 0.004235 +vn -0.004392 -0.999990 0.000000 +vn 0.004392 -0.999990 0.000000 +vn 0.004375 -0.999981 0.004235 +vn 0.000000 -0.718456 0.695573 +vn 0.866050 -0.499948 0.003193 +vn 0.866027 -0.499997 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.499948 -0.866050 0.003193 +vn 0.004375 -0.999981 0.004235 +vn 0.004392 -0.999990 0.000000 +vn 0.499997 -0.866027 0.000000 +vn 0.866050 -0.499948 0.003193 +vn 0.499948 -0.866050 0.003193 +vn 0.499997 -0.866027 0.000000 +vn 0.866027 -0.499997 0.000000 +vn -0.866050 -0.499948 0.003193 +vn 0.000000 -0.718456 0.695573 +vn 0.000000 -1.000000 0.000000 +vn -0.866027 -0.499997 0.000000 +vn -0.499948 -0.866050 0.003193 +vn -0.866050 -0.499948 0.003193 +vn -0.866027 -0.499997 0.000000 +vn -0.499997 -0.866027 0.000000 +vn -0.004375 -0.999981 0.004235 +vn -0.499948 -0.866050 0.003193 +vn -0.499997 -0.866027 0.000000 +vn -0.004392 -0.999990 0.000000 +vn -0.004393 -0.999990 0.000000 +vn 0.004392 -0.999990 0.000000 +vn 0.004375 -0.999981 0.004235 +vn -0.004375 -0.999981 0.004235 +vn -0.004392 -0.999990 0.000000 +vn 0.004393 -0.999990 0.000000 +vn 0.004375 -0.999981 0.004235 +vn -0.004375 -0.999981 0.004235 +vn -0.004374 0.004374 0.999981 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.258798 0.000000 0.965931 +vn -0.258798 0.000000 0.965931 +vn -0.004374 0.004374 0.999981 +vn -0.499942 0.003298 0.866053 +vn -0.707105 0.000000 0.707109 +vn -0.707105 0.000000 0.707109 +vn -0.499942 0.003298 0.866053 +vn -0.866052 0.003298 0.499943 +vn -0.982333 0.134450 0.130175 +vn -0.965931 0.000000 0.258798 +vn -0.965931 0.000000 0.258798 +vn -0.866052 0.003298 0.499943 +vn 0.000000 0.000000 1.000000 +vn 0.004374 -0.004374 0.999981 +vn 0.004374 0.004374 0.999981 +vn 0.000000 0.000000 1.000000 +vn 0.004374 0.004374 0.999981 +vn 0.003298 0.499941 0.866053 +vn 0.000000 0.258855 0.965916 +vn 0.000000 0.258855 0.965916 +vn 0.003298 0.499941 0.866053 +vn 0.003298 0.866030 0.499982 +vn 0.000000 0.706961 0.707252 +vn 0.000000 0.706961 0.707252 +vn 0.003298 0.866030 0.499982 +vn 0.004375 0.999981 0.004236 +vn 0.000000 0.965931 0.258799 +vn 0.000000 0.965931 0.258799 +vn 0.004392 0.999990 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.004375 0.999981 0.004236 +vn 0.000000 0.965921 0.258837 +vn 0.000000 0.965921 0.258837 +vn 0.000000 0.965921 0.258837 +vn 0.000000 0.965921 0.258837 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn 0.499807 0.866071 0.010655 +vn 0.499807 0.866071 -0.010655 +vn 0.007145 0.999876 -0.014006 +vn 0.499807 0.866071 0.010655 +vn 0.866050 0.499845 0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.866050 0.499845 0.010655 +vn 0.999806 0.013919 0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.866048 -0.010655 0.499848 +vn 0.866048 0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.499806 -0.010655 0.866072 +vn 0.499806 0.010655 0.866072 +vn 0.007145 0.014005 0.999876 +vn 0.999806 -0.013919 0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.499807 -0.866071 -0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 0.010655 +vn 0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.499807 -0.866071 -0.010655 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.007145 -0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.499806 -0.010654 -0.866072 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866048 -0.010655 -0.499848 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 0.013919 -0.013919 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.866048 0.010655 0.499848 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 0.010655 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.415516 0.809128 0.415522 +vn 0.499807 0.866071 0.010655 +vn 0.007145 0.999876 0.014006 +vn 0.005447 0.866061 0.499908 +vn 0.415516 0.809128 0.415522 +vn 0.415516 0.809128 0.415522 +vn 0.005447 0.866061 0.499908 +vn 0.005447 0.499911 0.866060 +vn 0.415519 0.415517 0.809129 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.499806 0.010655 0.866072 +vn 0.415519 0.415517 0.809129 +vn 0.415519 0.415517 0.809129 +vn 0.499806 0.010655 0.866072 +vn 0.866048 0.010655 0.499848 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.415516 0.809128 0.415522 +vn 0.415519 0.415517 0.809129 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 0.010655 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 0.010655 +vn 0.809118 -0.415526 0.415531 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.809118 -0.415526 0.415531 +vn 0.809118 -0.415526 0.415531 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 -0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.005447 -0.499911 0.866060 +vn 0.415519 -0.415518 0.809129 +vn 0.415519 -0.415518 0.809129 +vn 0.005447 -0.499911 0.866060 +vn 0.005447 -0.866061 0.499908 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.809118 -0.415526 0.415531 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 0.010655 -0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.005447 0.499911 -0.866060 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.415512 0.809131 -0.415519 +vn 0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.499807 0.866071 -0.010655 +vn 0.415512 0.809131 -0.415519 +vn 0.415512 0.809131 -0.415519 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.809117 0.415527 -0.415532 +vn 0.866050 0.499845 -0.010656 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 0.010655 -0.499848 +vn 0.809117 0.415527 -0.415532 +vn 0.809117 0.415527 -0.415532 +vn 0.866048 0.010655 -0.499848 +vn 0.499806 0.010655 -0.866072 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.415512 0.809131 -0.415519 +vn 0.809117 0.415527 -0.415532 +vn 0.499807 -0.866071 -0.010655 +vn 0.007145 -0.999876 -0.014006 +vn 0.005447 -0.866061 -0.499908 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.415521 -0.415511 -0.809131 +vn 0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.415521 -0.415511 -0.809131 +vn 0.415521 -0.415511 -0.809131 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.809119 -0.415522 -0.415533 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 -0.010656 +vn 0.809119 -0.415522 -0.415533 +vn 0.809119 -0.415522 -0.415533 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 -0.010655 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.415521 -0.415511 -0.809131 +vn 0.809119 -0.415522 -0.415533 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 0.010655 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.415516 0.809128 0.415522 +vn 0.499807 0.866071 0.010655 +vn 0.007145 0.999876 0.014006 +vn 0.005447 0.866061 0.499908 +vn 0.415516 0.809128 0.415522 +vn 0.415516 0.809128 0.415522 +vn 0.005447 0.866061 0.499908 +vn 0.005447 0.499911 0.866060 +vn 0.415519 0.415517 0.809129 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.499806 0.010655 0.866072 +vn 0.415519 0.415517 0.809129 +vn 0.415519 0.415517 0.809129 +vn 0.499806 0.010655 0.866072 +vn 0.866048 0.010655 0.499848 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.415516 0.809128 0.415522 +vn 0.415519 0.415517 0.809129 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 0.010655 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 0.010655 +vn 0.809118 -0.415526 0.415531 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.809118 -0.415526 0.415531 +vn 0.809118 -0.415526 0.415531 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 -0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.005447 -0.499911 0.866060 +vn 0.415519 -0.415518 0.809129 +vn 0.415519 -0.415518 0.809129 +vn 0.005447 -0.499911 0.866060 +vn 0.005447 -0.866061 0.499908 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.809118 -0.415526 0.415531 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 0.010655 -0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.005447 0.499911 -0.866060 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.415512 0.809131 -0.415519 +vn 0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.499807 0.866071 -0.010655 +vn 0.415512 0.809131 -0.415519 +vn 0.415512 0.809131 -0.415519 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.809117 0.415527 -0.415532 +vn 0.866050 0.499845 -0.010656 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 0.010655 -0.499848 +vn 0.809117 0.415527 -0.415532 +vn 0.809117 0.415527 -0.415532 +vn 0.866048 0.010655 -0.499848 +vn 0.499806 0.010655 -0.866072 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.415512 0.809131 -0.415519 +vn 0.809117 0.415527 -0.415532 +vn 0.499807 -0.866071 -0.010655 +vn 0.007145 -0.999876 -0.014006 +vn 0.005447 -0.866061 -0.499908 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.415521 -0.415511 -0.809131 +vn 0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.415521 -0.415511 -0.809131 +vn 0.415521 -0.415511 -0.809131 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.809119 -0.415522 -0.415533 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 -0.010656 +vn 0.809119 -0.415522 -0.415533 +vn 0.809119 -0.415522 -0.415533 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 -0.010655 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.415521 -0.415511 -0.809131 +vn 0.809119 -0.415522 -0.415533 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.499806 -0.010654 -0.866072 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.866048 -0.010655 -0.499848 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.866048 -0.010655 0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.499806 -0.010655 0.866072 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.007145 0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.499806 -0.010655 0.866072 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.866050 -0.499845 0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 -0.013919 0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 0.013919 -0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.866050 0.499845 0.010655 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.499807 0.866071 -0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 -0.010655 +vn 0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.499807 0.866071 0.010655 +vn 0.866048 0.010655 0.499848 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 0.010655 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.415516 0.809128 0.415522 +vn 0.499807 0.866071 0.010655 +vn 0.007145 0.999876 0.014006 +vn 0.005447 0.866061 0.499908 +vn 0.415516 0.809128 0.415522 +vn 0.415516 0.809128 0.415522 +vn 0.005447 0.866061 0.499908 +vn 0.005447 0.499911 0.866060 +vn 0.415519 0.415517 0.809129 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.499806 0.010655 0.866072 +vn 0.415519 0.415517 0.809129 +vn 0.415519 0.415517 0.809129 +vn 0.499806 0.010655 0.866072 +vn 0.866048 0.010655 0.499848 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.415516 0.809128 0.415522 +vn 0.415519 0.415517 0.809129 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 0.010655 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 0.010655 +vn 0.809118 -0.415526 0.415531 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.809118 -0.415526 0.415531 +vn 0.809118 -0.415526 0.415531 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 -0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.005447 -0.499911 0.866060 +vn 0.415519 -0.415518 0.809129 +vn 0.415519 -0.415518 0.809129 +vn 0.005447 -0.499911 0.866060 +vn 0.005447 -0.866061 0.499908 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.809118 -0.415526 0.415531 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 0.010655 -0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.005447 0.499911 -0.866060 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.415512 0.809131 -0.415519 +vn 0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.499807 0.866071 -0.010655 +vn 0.415512 0.809131 -0.415519 +vn 0.415512 0.809131 -0.415519 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.809117 0.415527 -0.415532 +vn 0.866050 0.499845 -0.010656 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 0.010655 -0.499848 +vn 0.809117 0.415527 -0.415532 +vn 0.809117 0.415527 -0.415532 +vn 0.866048 0.010655 -0.499848 +vn 0.499806 0.010655 -0.866072 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.415512 0.809131 -0.415519 +vn 0.809117 0.415527 -0.415532 +vn 0.499807 -0.866071 -0.010655 +vn 0.007145 -0.999876 -0.014006 +vn 0.005447 -0.866061 -0.499908 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.415521 -0.415511 -0.809131 +vn 0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.415521 -0.415511 -0.809131 +vn 0.415521 -0.415511 -0.809131 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.809119 -0.415522 -0.415533 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 -0.010656 +vn 0.809119 -0.415522 -0.415533 +vn 0.809119 -0.415522 -0.415533 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 -0.010655 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.415521 -0.415511 -0.809131 +vn 0.809119 -0.415522 -0.415533 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.499806 -0.010654 -0.866072 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.866048 -0.010655 -0.499848 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.866048 -0.010655 0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.499806 -0.010655 0.866072 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.007145 0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.499806 -0.010655 0.866072 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.866050 -0.499845 0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 -0.013919 0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 0.013919 -0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.866050 0.499845 0.010655 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.499807 0.866071 -0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 -0.010655 +vn 0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.499807 0.866071 0.010655 +vn 0.010654 -0.866074 0.499803 +vn 0.007145 0.999876 0.014006 +vn 0.499800 -0.866075 0.010654 +vn 0.415509 -0.809134 0.415517 +vn 0.415509 -0.809134 0.415517 +vn 0.499800 -0.866075 0.010654 +vn 0.866071 -0.499807 0.010655 +vn 0.809128 -0.415516 0.415522 +vn 0.866071 -0.499807 0.010655 +vn 0.999876 -0.007145 0.014006 +vn 0.866061 -0.005447 0.499908 +vn 0.809128 -0.415516 0.415522 +vn 0.809128 -0.415516 0.415522 +vn 0.866061 -0.005447 0.499908 +vn 0.499911 -0.005447 0.866060 +vn 0.415516 -0.415520 0.809129 +vn 0.499911 -0.005447 0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.010655 -0.499807 0.866071 +vn 0.415516 -0.415520 0.809129 +vn 0.415516 -0.415520 0.809129 +vn 0.010655 -0.499807 0.866071 +vn 0.010654 -0.866074 0.499803 +vn 0.415509 -0.809134 0.415517 +vn 0.415509 -0.809134 0.415517 +vn 0.809128 -0.415516 0.415522 +vn 0.415516 -0.415520 0.809129 +vn 0.866061 0.005447 0.499908 +vn 0.999876 0.007145 0.014006 +vn 0.866071 0.499807 0.010655 +vn 0.809129 0.415515 0.415522 +vn 0.809129 0.415515 0.415522 +vn 0.866071 0.499807 0.010655 +vn 0.499845 0.866050 0.010655 +vn 0.415526 0.809118 0.415531 +vn 0.499845 0.866050 0.010655 +vn 0.013919 0.999806 0.013919 +vn 0.010655 0.866048 0.499848 +vn 0.415526 0.809118 0.415531 +vn 0.415526 0.809118 0.415531 +vn 0.010655 0.866048 0.499848 +vn 0.010655 0.499806 0.866072 +vn 0.415518 0.415519 0.809129 +vn 0.010655 0.499806 0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.499911 0.005447 0.866060 +vn 0.415518 0.415519 0.809129 +vn 0.415518 0.415519 0.809129 +vn 0.499911 0.005447 0.866060 +vn 0.866061 0.005447 0.499908 +vn 0.809129 0.415515 0.415522 +vn 0.809129 0.415515 0.415522 +vn 0.415526 0.809118 0.415531 +vn 0.415518 0.415519 0.809129 +vn 0.866071 0.499807 -0.010655 +vn 0.999876 0.007145 -0.014006 +vn 0.866061 0.005447 -0.499908 +vn 0.809131 0.415514 -0.415519 +vn 0.809131 0.415514 -0.415519 +vn 0.866061 0.005447 -0.499908 +vn 0.499911 0.005447 -0.866060 +vn 0.415511 0.415521 -0.809131 +vn 0.499911 0.005447 -0.866060 +vn 0.014005 0.007145 -0.999876 +vn 0.010654 0.499806 -0.866072 +vn 0.415511 0.415521 -0.809131 +vn 0.415511 0.415521 -0.809131 +vn 0.010654 0.499806 -0.866072 +vn 0.010655 0.866048 -0.499848 +vn 0.415522 0.809119 -0.415533 +vn 0.010655 0.866048 -0.499848 +vn 0.013919 0.999806 -0.013919 +vn 0.499845 0.866050 -0.010656 +vn 0.415522 0.809119 -0.415533 +vn 0.415522 0.809119 -0.415533 +vn 0.499845 0.866050 -0.010656 +vn 0.866071 0.499807 -0.010655 +vn 0.809131 0.415514 -0.415519 +vn 0.809131 0.415514 -0.415519 +vn 0.415511 0.415521 -0.809131 +vn 0.415522 0.809119 -0.415533 +vn 0.866061 -0.005447 -0.499908 +vn 0.999876 -0.007145 -0.014006 +vn 0.866071 -0.499807 -0.010655 +vn 0.809131 -0.415512 -0.415519 +vn 0.809131 -0.415512 -0.415519 +vn 0.866071 -0.499807 -0.010655 +vn 0.499800 -0.866076 -0.010654 +vn 0.415510 -0.809134 -0.415515 +vn 0.499800 -0.866076 -0.010654 +vn 0.007145 0.999876 -0.014006 +vn 0.010654 -0.866074 -0.499803 +vn 0.415510 -0.809134 -0.415515 +vn 0.415510 -0.809134 -0.415515 +vn 0.010654 -0.866074 -0.499803 +vn 0.010655 -0.499807 -0.866071 +vn 0.415517 -0.415519 -0.809129 +vn 0.010655 -0.499807 -0.866071 +vn 0.014005 -0.007145 -0.999876 +vn 0.499911 -0.005447 -0.866060 +vn 0.415517 -0.415519 -0.809129 +vn 0.415517 -0.415519 -0.809129 +vn 0.499911 -0.005447 -0.866060 +vn 0.866061 -0.005447 -0.499908 +vn 0.809131 -0.415512 -0.415519 +vn 0.809131 -0.415512 -0.415519 +vn 0.415510 -0.809134 -0.415515 +vn 0.415517 -0.415519 -0.809129 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.010654 -0.866074 -0.499803 +vn 0.010654 -0.866074 -0.499803 +vn -0.010654 -0.866074 -0.499803 +vn -0.010654 -0.499807 -0.866071 +vn 0.010655 -0.499807 -0.866071 +vn 0.010654 -0.866074 -0.499803 +vn -0.010654 -0.499807 -0.866071 +vn -0.014005 -0.007145 -0.999876 +vn 0.014005 -0.007145 -0.999876 +vn 0.010655 -0.499807 -0.866071 +vn -0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn 0.010654 0.499806 -0.866072 +vn 0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn 0.010655 0.866048 -0.499848 +vn 0.010654 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn 0.013919 0.999806 -0.013919 +vn 0.010655 0.866048 -0.499848 +vn 0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn 0.013919 0.999806 0.013919 +vn -0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn 0.010655 0.866048 0.499848 +vn 0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn 0.010655 0.499806 0.866072 +vn 0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.010655 0.499806 0.866072 +vn -0.007145 -0.014005 -0.999876 +vn -0.010655 -0.499807 0.866071 +vn 0.010655 -0.499807 0.866071 +vn 0.007145 -0.014005 -0.999876 +vn -0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn 0.010654 -0.866074 0.499803 +vn 0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn -0.007145 0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.010654 -0.866074 0.499803 +vn 0.499911 0.005447 0.866060 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.499911 -0.005447 0.866060 +vn 0.866061 0.005447 0.499908 +vn 0.499911 0.005447 0.866060 +vn 0.499911 -0.005447 0.866060 +vn 0.866061 -0.005447 0.499908 +vn 0.999876 0.007145 0.014006 +vn 0.866061 0.005447 0.499908 +vn 0.866061 -0.005447 0.499908 +vn 0.999876 -0.007145 0.014006 +vn 0.866061 0.005447 -0.499908 +vn 0.999876 0.007145 -0.014006 +vn 0.999876 -0.007145 -0.014006 +vn 0.866061 -0.005447 -0.499908 +vn 0.499911 0.005447 -0.866060 +vn 0.866061 0.005447 -0.499908 +vn 0.866061 -0.005447 -0.499908 +vn 0.499911 -0.005447 -0.866060 +vn 0.014005 0.007145 -0.999876 +vn 0.499911 0.005447 -0.866060 +vn 0.499911 -0.005447 -0.866060 +vn 0.014005 -0.007145 -0.999876 +vn -0.014005 -0.007145 -0.999876 +vn -0.014005 0.007145 -0.999876 +vn 0.014005 0.007145 -0.999876 +vn 0.014005 -0.007145 -0.999876 +vn 0.007145 0.999876 -0.014006 +vn 0.499800 -0.866076 -0.010654 +vn 0.499800 -0.866075 0.010654 +vn 0.007145 0.999876 0.014006 +vn 0.499800 -0.866076 -0.010654 +vn 0.866071 -0.499807 -0.010655 +vn 0.866071 -0.499807 0.010655 +vn 0.499800 -0.866075 0.010654 +vn 0.866071 -0.499807 -0.010655 +vn 0.999876 -0.007145 -0.014006 +vn 0.999876 -0.007145 0.014006 +vn 0.866071 -0.499807 0.010655 +vn 0.999876 0.007145 -0.014006 +vn 0.999876 0.007145 0.014006 +vn 0.999876 -0.007145 0.014006 +vn 0.999876 -0.007145 -0.014006 +vn 0.999876 0.007145 -0.014006 +vn 0.866071 0.499807 -0.010655 +vn 0.866071 0.499807 0.010655 +vn 0.999876 0.007145 0.014006 +vn 0.866071 0.499807 -0.010655 +vn 0.499845 0.866050 -0.010656 +vn 0.499845 0.866050 0.010655 +vn 0.866071 0.499807 0.010655 +vn 0.499845 0.866050 -0.010656 +vn 0.013919 0.999806 -0.013919 +vn 0.013919 0.999806 0.013919 +vn 0.499845 0.866050 0.010655 +vn 0.010654 -0.866074 0.499803 +vn 0.013912 -0.999806 0.013912 +vn 0.499800 -0.866075 0.010654 +vn 0.415509 -0.809134 0.415517 +vn 0.415509 -0.809134 0.415517 +vn 0.499800 -0.866075 0.010654 +vn 0.866071 -0.499807 0.010655 +vn 0.809128 -0.415516 0.415522 +vn 0.866071 -0.499807 0.010655 +vn 0.999876 -0.007145 0.014006 +vn 0.866061 -0.005447 0.499908 +vn 0.809128 -0.415516 0.415522 +vn 0.809128 -0.415516 0.415522 +vn 0.866061 -0.005447 0.499908 +vn 0.499911 -0.005447 0.866060 +vn 0.415516 -0.415520 0.809129 +vn 0.499911 -0.005447 0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.010655 -0.499807 0.866071 +vn 0.415516 -0.415520 0.809129 +vn 0.415516 -0.415520 0.809129 +vn 0.010655 -0.499807 0.866071 +vn 0.010654 -0.866074 0.499803 +vn 0.415509 -0.809134 0.415517 +vn 0.415509 -0.809134 0.415517 +vn 0.809128 -0.415516 0.415522 +vn 0.415516 -0.415520 0.809129 +vn 0.866061 0.005447 0.499908 +vn 0.999876 0.007145 0.014006 +vn 0.866071 0.499807 0.010655 +vn 0.809129 0.415515 0.415522 +vn 0.809129 0.415515 0.415522 +vn 0.866071 0.499807 0.010655 +vn 0.499845 0.866050 0.010655 +vn 0.415526 0.809118 0.415531 +vn 0.499845 0.866050 0.010655 +vn 0.013919 0.999806 0.013919 +vn 0.010655 0.866048 0.499848 +vn 0.415526 0.809118 0.415531 +vn 0.415526 0.809118 0.415531 +vn 0.010655 0.866048 0.499848 +vn 0.010655 0.499806 0.866072 +vn 0.415518 0.415519 0.809129 +vn 0.010655 0.499806 0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.499911 0.005447 0.866060 +vn 0.415518 0.415519 0.809129 +vn 0.415518 0.415519 0.809129 +vn 0.499911 0.005447 0.866060 +vn 0.866061 0.005447 0.499908 +vn 0.809129 0.415515 0.415522 +vn 0.809129 0.415515 0.415522 +vn 0.415526 0.809118 0.415531 +vn 0.415518 0.415519 0.809129 +vn 0.866071 0.499807 -0.010655 +vn 0.999876 0.007145 -0.014006 +vn 0.866061 0.005447 -0.499908 +vn 0.809131 0.415514 -0.415519 +vn 0.809131 0.415514 -0.415519 +vn 0.866061 0.005447 -0.499908 +vn 0.499911 0.005447 -0.866060 +vn 0.415511 0.415521 -0.809131 +vn 0.499911 0.005447 -0.866060 +vn 0.014005 0.007145 -0.999876 +vn 0.010654 0.499806 -0.866072 +vn 0.415511 0.415521 -0.809131 +vn 0.415511 0.415521 -0.809131 +vn 0.010654 0.499806 -0.866072 +vn 0.010655 0.866048 -0.499848 +vn 0.415522 0.809119 -0.415533 +vn 0.010655 0.866048 -0.499848 +vn 0.013919 0.999806 -0.013919 +vn 0.499845 0.866050 -0.010656 +vn 0.415522 0.809119 -0.415533 +vn 0.415522 0.809119 -0.415533 +vn 0.499845 0.866050 -0.010656 +vn 0.866071 0.499807 -0.010655 +vn 0.809131 0.415514 -0.415519 +vn 0.809131 0.415514 -0.415519 +vn 0.415511 0.415521 -0.809131 +vn 0.415522 0.809119 -0.415533 +vn 0.866061 -0.005447 -0.499908 +vn 0.999876 -0.007145 -0.014006 +vn 0.866071 -0.499807 -0.010655 +vn 0.809131 -0.415512 -0.415519 +vn 0.809131 -0.415512 -0.415519 +vn 0.866071 -0.499807 -0.010655 +vn 0.499800 -0.866076 -0.010654 +vn 0.415510 -0.809134 -0.415515 +vn 0.499800 -0.866076 -0.010654 +vn 0.013912 -0.999806 -0.013912 +vn 0.010654 -0.866074 -0.499803 +vn 0.415510 -0.809134 -0.415515 +vn 0.415510 -0.809134 -0.415515 +vn 0.010654 -0.866074 -0.499803 +vn 0.010655 -0.499807 -0.866071 +vn 0.415517 -0.415519 -0.809129 +vn 0.010655 -0.499807 -0.866071 +vn 0.014005 -0.007145 -0.999876 +vn 0.499911 -0.005447 -0.866060 +vn 0.415517 -0.415519 -0.809129 +vn 0.415517 -0.415519 -0.809129 +vn 0.499911 -0.005447 -0.866060 +vn 0.866061 -0.005447 -0.499908 +vn 0.809131 -0.415512 -0.415519 +vn 0.809131 -0.415512 -0.415519 +vn 0.415510 -0.809134 -0.415515 +vn 0.415517 -0.415519 -0.809129 +vn 0.013912 -0.999806 -0.013912 +vn -0.013912 -0.999806 -0.013912 +vn -0.010654 -0.866074 -0.499803 +vn 0.010654 -0.866074 -0.499803 +vn -0.010654 -0.866074 -0.499803 +vn -0.010654 -0.499807 -0.866071 +vn 0.010655 -0.499807 -0.866071 +vn 0.010654 -0.866074 -0.499803 +vn -0.010654 -0.499807 -0.866071 +vn -0.014005 -0.007145 -0.999876 +vn 0.014005 -0.007145 -0.999876 +vn 0.010655 -0.499807 -0.866071 +vn -0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn 0.010654 0.499806 -0.866072 +vn 0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn 0.010655 0.866048 -0.499848 +vn 0.010654 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn 0.013919 0.999806 -0.013919 +vn 0.010655 0.866048 -0.499848 +vn 0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn 0.013919 0.999806 0.013919 +vn -0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn 0.010655 0.866048 0.499848 +vn 0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn 0.010655 0.499806 0.866072 +vn 0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.010655 0.499806 0.866072 +vn -0.007145 -0.014005 -0.999876 +vn -0.010655 -0.499807 0.866071 +vn 0.010655 -0.499807 0.866071 +vn 0.007145 -0.014005 -0.999876 +vn -0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn 0.010654 -0.866074 0.499803 +vn 0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn -0.013912 -0.999806 0.013912 +vn 0.013912 -0.999806 0.013912 +vn 0.010654 -0.866074 0.499803 +vn 0.499911 0.005447 0.866060 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.499911 -0.005447 0.866060 +vn 0.866061 0.005447 0.499908 +vn 0.499911 0.005447 0.866060 +vn 0.499911 -0.005447 0.866060 +vn 0.866061 -0.005447 0.499908 +vn 0.999876 0.007145 0.014006 +vn 0.866061 0.005447 0.499908 +vn 0.866061 -0.005447 0.499908 +vn 0.999876 -0.007145 0.014006 +vn 0.866061 0.005447 -0.499908 +vn 0.999876 0.007145 -0.014006 +vn 0.999876 -0.007145 -0.014006 +vn 0.866061 -0.005447 -0.499908 +vn 0.499911 0.005447 -0.866060 +vn 0.866061 0.005447 -0.499908 +vn 0.866061 -0.005447 -0.499908 +vn 0.499911 -0.005447 -0.866060 +vn 0.014005 0.007145 -0.999876 +vn 0.499911 0.005447 -0.866060 +vn 0.499911 -0.005447 -0.866060 +vn 0.014005 -0.007145 -0.999876 +vn -0.014005 -0.007145 -0.999876 +vn -0.014005 0.007145 -0.999876 +vn 0.014005 0.007145 -0.999876 +vn 0.014005 -0.007145 -0.999876 +vn 0.013912 -0.999806 -0.013912 +vn 0.499800 -0.866076 -0.010654 +vn 0.499800 -0.866075 0.010654 +vn 0.013912 -0.999806 0.013912 +vn 0.499800 -0.866076 -0.010654 +vn 0.866071 -0.499807 -0.010655 +vn 0.866071 -0.499807 0.010655 +vn 0.499800 -0.866075 0.010654 +vn 0.866071 -0.499807 -0.010655 +vn 0.999876 -0.007145 -0.014006 +vn 0.999876 -0.007145 0.014006 +vn 0.866071 -0.499807 0.010655 +vn 0.999876 -0.007145 0.014006 +vn 0.999876 -0.007145 -0.014006 +vn 0.999876 0.007145 -0.014006 +vn 0.999876 0.007145 0.014006 +vn 0.999876 0.007145 -0.014006 +vn 0.866071 0.499807 -0.010655 +vn 0.866071 0.499807 0.010655 +vn 0.999876 0.007145 0.014006 +vn 0.866071 0.499807 -0.010655 +vn 0.499845 0.866050 -0.010656 +vn 0.499845 0.866050 0.010655 +vn 0.866071 0.499807 0.010655 +vn 0.499845 0.866050 -0.010656 +vn 0.013919 0.999806 -0.013919 +vn 0.013919 0.999806 0.013919 +vn 0.499845 0.866050 0.010655 +vn 0.866048 0.010655 0.499848 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 0.010655 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.415516 0.809128 0.415522 +vn 0.499807 0.866071 0.010655 +vn 0.013912 -0.999806 0.013912 +vn 0.005447 0.866061 0.499908 +vn 0.415516 0.809128 0.415522 +vn 0.415516 0.809128 0.415522 +vn 0.005447 0.866061 0.499908 +vn 0.005447 0.499911 0.866060 +vn 0.415519 0.415517 0.809129 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.499806 0.010655 0.866072 +vn 0.415519 0.415517 0.809129 +vn 0.415519 0.415517 0.809129 +vn 0.499806 0.010655 0.866072 +vn 0.866048 0.010655 0.499848 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.415516 0.809128 0.415522 +vn 0.415519 0.415517 0.809129 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 0.010655 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 0.010655 +vn 0.809118 -0.415526 0.415531 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.809118 -0.415526 0.415531 +vn 0.809118 -0.415526 0.415531 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 -0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.005447 -0.499911 0.866060 +vn 0.415519 -0.415518 0.809129 +vn 0.415519 -0.415518 0.809129 +vn 0.005447 -0.499911 0.866060 +vn 0.005447 -0.866061 0.499908 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.809118 -0.415526 0.415531 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 0.010655 -0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.005447 0.499911 -0.866060 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.415512 0.809131 -0.415519 +vn 0.005447 0.866061 -0.499908 +vn 0.013912 -0.999806 -0.013912 +vn 0.499807 0.866071 -0.010655 +vn 0.415512 0.809131 -0.415519 +vn 0.415512 0.809131 -0.415519 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.809117 0.415527 -0.415532 +vn 0.866050 0.499845 -0.010656 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 0.010655 -0.499848 +vn 0.809117 0.415527 -0.415532 +vn 0.809117 0.415527 -0.415532 +vn 0.866048 0.010655 -0.499848 +vn 0.499806 0.010655 -0.866072 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.415512 0.809131 -0.415519 +vn 0.809117 0.415527 -0.415532 +vn 0.499807 -0.866071 -0.010655 +vn 0.007145 -0.999876 -0.014006 +vn 0.005447 -0.866061 -0.499908 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.415521 -0.415511 -0.809131 +vn 0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.415521 -0.415511 -0.809131 +vn 0.415521 -0.415511 -0.809131 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.809119 -0.415522 -0.415533 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 -0.010656 +vn 0.809119 -0.415522 -0.415533 +vn 0.809119 -0.415522 -0.415533 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 -0.010655 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.415521 -0.415511 -0.809131 +vn 0.809119 -0.415522 -0.415533 +vn 0.499806 -0.010654 -0.866072 +vn 0.007145 -0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.499806 -0.010654 -0.866072 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866048 -0.010655 -0.499848 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.866048 -0.010655 0.499848 +vn 0.866048 0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.499806 -0.010655 0.866072 +vn 0.499806 0.010655 0.866072 +vn 0.007145 0.014005 0.999876 +vn -0.013912 -0.999806 0.013912 +vn -0.005447 0.866061 0.499908 +vn 0.005447 0.866061 0.499908 +vn 0.013912 -0.999806 0.013912 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn -0.013912 -0.999806 -0.013912 +vn 0.013912 -0.999806 -0.013912 +vn 0.005447 0.866061 -0.499908 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.866050 -0.499845 0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 -0.013919 0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 0.013919 -0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.866050 0.499845 0.010655 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.499807 0.866071 -0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 -0.010655 +vn 0.013912 -0.999806 -0.013912 +vn 0.013912 -0.999806 0.013912 +vn 0.499807 0.866071 0.010655 +vn 0.866048 0.010655 0.499848 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 0.010655 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.415516 0.809128 0.415522 +vn 0.499807 0.866071 0.010655 +vn 0.007145 0.999876 0.014006 +vn 0.005447 0.866061 0.499908 +vn 0.415516 0.809128 0.415522 +vn 0.415516 0.809128 0.415522 +vn 0.005447 0.866061 0.499908 +vn 0.005447 0.499911 0.866060 +vn 0.415519 0.415517 0.809129 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.499806 0.010655 0.866072 +vn 0.415519 0.415517 0.809129 +vn 0.415519 0.415517 0.809129 +vn 0.499806 0.010655 0.866072 +vn 0.866048 0.010655 0.499848 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.415516 0.809128 0.415522 +vn 0.415519 0.415517 0.809129 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 0.010655 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 0.010655 +vn 0.809118 -0.415526 0.415531 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.809118 -0.415526 0.415531 +vn 0.809118 -0.415526 0.415531 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 -0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.005447 -0.499911 0.866060 +vn 0.415519 -0.415518 0.809129 +vn 0.415519 -0.415518 0.809129 +vn 0.005447 -0.499911 0.866060 +vn 0.005447 -0.866061 0.499908 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.809118 -0.415526 0.415531 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 0.010655 -0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.005447 0.499911 -0.866060 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.415512 0.809131 -0.415519 +vn 0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.499807 0.866071 -0.010655 +vn 0.415512 0.809131 -0.415519 +vn 0.415512 0.809131 -0.415519 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.809117 0.415527 -0.415532 +vn 0.866050 0.499845 -0.010656 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 0.010655 -0.499848 +vn 0.809117 0.415527 -0.415532 +vn 0.809117 0.415527 -0.415532 +vn 0.866048 0.010655 -0.499848 +vn 0.499806 0.010655 -0.866072 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.415512 0.809131 -0.415519 +vn 0.809117 0.415527 -0.415532 +vn 0.499807 -0.866071 -0.010655 +vn 0.007145 -0.999876 -0.014006 +vn 0.005447 -0.866061 -0.499908 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.415521 -0.415511 -0.809131 +vn 0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.415521 -0.415511 -0.809131 +vn 0.415521 -0.415511 -0.809131 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.809119 -0.415522 -0.415533 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 -0.010656 +vn 0.809119 -0.415522 -0.415533 +vn 0.809119 -0.415522 -0.415533 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 -0.010655 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.415521 -0.415511 -0.809131 +vn 0.809119 -0.415522 -0.415533 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.499806 -0.010654 -0.866072 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.866048 -0.010655 -0.499848 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.866048 -0.010655 0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.499806 -0.010655 0.866072 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.007145 0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.499806 -0.010655 0.866072 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 -0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.866050 -0.499845 0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 -0.013919 0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 0.013919 -0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.866050 0.499845 0.010655 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 -0.010656 +vn 0.499807 0.866071 -0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 -0.010655 +vn 0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn 0.499807 0.866071 0.010655 +vn 0.499807 0.866071 -0.010655 +vn 0.007145 0.999876 -0.014006 +vn 0.499807 0.866071 0.010655 +vn 0.866050 0.499845 0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.866050 0.499845 0.010655 +vn 0.999806 0.013919 0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 0.013919 0.013919 +vn 0.866048 0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.866048 -0.010655 0.499848 +vn 0.866048 0.010655 0.499848 +vn 0.499806 0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.499806 -0.010655 0.866072 +vn 0.499806 0.010655 0.866072 +vn 0.007145 0.014005 0.999876 +vn 0.999806 -0.013919 0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 0.010655 +vn 0.499807 -0.866071 0.010655 +vn 0.499807 -0.866071 -0.010655 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 0.010655 +vn 0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.499807 -0.866071 -0.010655 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.007145 -0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.499806 -0.010654 -0.866072 +vn 0.499806 0.010655 -0.866072 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866048 -0.010655 -0.499848 +vn 0.866048 0.010655 -0.499848 +vn 0.999806 0.013919 -0.013919 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.866048 0.010655 0.499848 +vn 0.999806 0.013919 0.013919 +vn 0.866050 0.499845 0.010655 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.866050 0.499845 0.010655 +vn 0.499807 0.866071 0.010655 +vn 0.415516 0.809128 0.415522 +vn 0.499807 0.866071 0.010655 +vn 0.007145 0.999876 0.014006 +vn 0.005447 0.866061 0.499908 +vn 0.415516 0.809128 0.415522 +vn 0.415516 0.809128 0.415522 +vn 0.005447 0.866061 0.499908 +vn 0.005447 0.499911 0.866060 +vn 0.415519 0.415517 0.809129 +vn 0.005447 0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.499806 0.010655 0.866072 +vn 0.415519 0.415517 0.809129 +vn 0.415519 0.415517 0.809129 +vn 0.499806 0.010655 0.866072 +vn 0.866048 0.010655 0.499848 +vn 0.809117 0.415527 0.415532 +vn 0.809117 0.415527 0.415532 +vn 0.415516 0.809128 0.415522 +vn 0.415519 0.415517 0.809129 +vn 0.005447 -0.866061 0.499908 +vn 0.007145 -0.999876 0.014006 +vn 0.499807 -0.866071 0.010655 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.499807 -0.866071 0.010655 +vn 0.866050 -0.499845 0.010655 +vn 0.809118 -0.415526 0.415531 +vn 0.866050 -0.499845 0.010655 +vn 0.999806 -0.013919 0.013919 +vn 0.866048 -0.010655 0.499848 +vn 0.809118 -0.415526 0.415531 +vn 0.809118 -0.415526 0.415531 +vn 0.866048 -0.010655 0.499848 +vn 0.499806 -0.010655 0.866072 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 -0.010655 0.866072 +vn 0.007145 -0.014005 0.999876 +vn 0.005447 -0.499911 0.866060 +vn 0.415519 -0.415518 0.809129 +vn 0.415519 -0.415518 0.809129 +vn 0.005447 -0.499911 0.866060 +vn 0.005447 -0.866061 0.499908 +vn 0.415515 -0.809129 0.415522 +vn 0.415515 -0.809129 0.415522 +vn 0.809118 -0.415526 0.415531 +vn 0.415519 -0.415518 0.809129 +vn 0.499806 0.010655 -0.866072 +vn 0.007145 0.014005 -0.999876 +vn 0.005447 0.499911 -0.866060 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.415512 0.809131 -0.415519 +vn 0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.499807 0.866071 -0.010655 +vn 0.415512 0.809131 -0.415519 +vn 0.415512 0.809131 -0.415519 +vn 0.499807 0.866071 -0.010655 +vn 0.866050 0.499845 -0.010656 +vn 0.809117 0.415527 -0.415532 +vn 0.866050 0.499845 -0.010656 +vn 0.999806 0.013919 -0.013919 +vn 0.866048 0.010655 -0.499848 +vn 0.809117 0.415527 -0.415532 +vn 0.809117 0.415527 -0.415532 +vn 0.866048 0.010655 -0.499848 +vn 0.499806 0.010655 -0.866072 +vn 0.415519 0.415517 -0.809129 +vn 0.415519 0.415517 -0.809129 +vn 0.415512 0.809131 -0.415519 +vn 0.809117 0.415527 -0.415532 +vn 0.499807 -0.866071 -0.010655 +vn 0.007145 -0.999876 -0.014006 +vn 0.005447 -0.866061 -0.499908 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.415521 -0.415511 -0.809131 +vn 0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.499806 -0.010654 -0.866072 +vn 0.415521 -0.415511 -0.809131 +vn 0.415521 -0.415511 -0.809131 +vn 0.499806 -0.010654 -0.866072 +vn 0.866048 -0.010655 -0.499848 +vn 0.809119 -0.415522 -0.415533 +vn 0.866048 -0.010655 -0.499848 +vn 0.999806 -0.013919 -0.013919 +vn 0.866050 -0.499845 -0.010656 +vn 0.809119 -0.415522 -0.415533 +vn 0.809119 -0.415522 -0.415533 +vn 0.866050 -0.499845 -0.010656 +vn 0.499807 -0.866071 -0.010655 +vn 0.415514 -0.809131 -0.415519 +vn 0.415514 -0.809131 -0.415519 +vn 0.415521 -0.415511 -0.809131 +vn 0.809119 -0.415522 -0.415533 +vn 0.999806 -0.013919 0.013919 +vn 0.999806 -0.013919 -0.013919 +vn 0.999806 0.013919 -0.013919 +vn 0.999806 0.013919 0.013919 +vn -0.228887 0.228897 -0.946159 +vn -0.228887 0.228897 -0.946159 +vn -0.228887 0.228897 -0.946159 +vn -0.228887 0.228897 -0.946159 +vn -0.415523 0.415523 -0.809124 +vn -0.499949 0.003298 -0.866049 +vn -0.866046 0.003298 -0.499954 +vn -0.809123 0.415526 -0.415522 +vn -0.866046 0.003298 -0.499954 +vn -0.999981 0.004375 -0.004236 +vn -0.866048 0.499951 -0.003193 +vn -0.809123 0.415526 -0.415522 +vn -0.809123 0.415526 -0.415522 +vn -0.866048 0.499951 -0.003193 +vn -0.499987 0.866027 -0.003193 +vn -0.415535 0.809115 -0.415529 +vn -0.499987 0.866027 -0.003193 +vn -0.004106 0.999983 -0.004237 +vn -0.003094 0.866029 -0.499984 +vn -0.415535 0.809115 -0.415529 +vn -0.415535 0.809115 -0.415529 +vn -0.003094 0.866029 -0.499984 +vn -0.003094 0.499944 -0.866052 +vn -0.415523 0.415523 -0.809124 +vn -0.415523 0.415523 -0.809124 +vn -0.809123 0.415526 -0.415522 +vn -0.415535 0.809115 -0.415529 +vn -0.379838 -0.843472 -0.379839 +vn -0.448014 -0.894020 -0.003348 +vn -0.866048 -0.499951 -0.003193 +vn -0.809123 -0.415527 -0.415521 +vn -0.866048 -0.499951 -0.003193 +vn -0.999981 -0.004375 -0.004236 +vn -0.866046 -0.003298 -0.499954 +vn -0.809123 -0.415527 -0.415521 +vn -0.809123 -0.415527 -0.415521 +vn -0.866046 -0.003298 -0.499954 +vn -0.499949 -0.003298 -0.866049 +vn -0.415518 -0.415526 -0.809125 +vn -0.499949 -0.003298 -0.866049 +vn -0.004105 -0.004375 -0.999982 +vn -0.003094 -0.499943 -0.866053 +vn -0.415518 -0.415526 -0.809125 +vn -0.415518 -0.415526 -0.809125 +vn -0.003094 -0.499943 -0.866053 +vn -0.003245 -0.894022 -0.448012 +vn -0.379838 -0.843472 -0.379839 +vn -0.379838 -0.843472 -0.379839 +vn -0.809123 -0.415527 -0.415521 +vn -0.415518 -0.415526 -0.809125 +vn -0.003245 -0.894022 -0.448012 +vn -0.003094 -0.499943 -0.866053 +vn 0.000000 -0.499991 -0.866031 +vn -0.001063 -0.893976 -0.448113 +vn -0.003094 -0.499943 -0.866053 +vn -0.004105 -0.004375 -0.999982 +vn 0.000000 -0.004393 -0.999990 +vn 0.000000 -0.499991 -0.866031 +vn -0.004105 0.004375 -0.999982 +vn -0.003094 0.499944 -0.866052 +vn 0.000000 0.500014 -0.866018 +vn 0.000000 0.004393 -0.999990 +vn -0.003094 0.499944 -0.866052 +vn -0.003094 0.866029 -0.499984 +vn 0.000000 0.865994 -0.500054 +vn 0.000000 0.500014 -0.866018 +vn -0.003094 0.866029 -0.499984 +vn -0.004106 0.999983 -0.004237 +vn 0.000000 0.999991 -0.004254 +vn 0.000000 0.865994 -0.500054 +vn -0.004122 0.999992 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.999991 -0.004254 +vn -0.004106 0.999983 -0.004237 +vn 0.000000 0.004393 -0.999990 +vn 0.000000 -0.004393 -0.999990 +vn -0.004105 -0.004375 -0.999982 +vn -0.004105 0.004375 -0.999982 +vn -0.004105 -0.004375 -0.999982 +vn -0.499949 -0.003298 -0.866049 +vn -0.499949 0.003298 -0.866049 +vn -0.004105 0.004375 -0.999982 +vn -0.499949 -0.003298 -0.866049 +vn -0.866046 -0.003298 -0.499954 +vn -0.866046 0.003298 -0.499954 +vn -0.499949 0.003298 -0.866049 +vn -0.866046 -0.003298 -0.499954 +vn -0.999981 -0.004375 -0.004236 +vn -0.999981 0.004375 -0.004236 +vn -0.866046 0.003298 -0.499954 +vn -0.999990 -0.004392 0.000000 +vn -0.999990 0.004392 0.000000 +vn -0.999981 0.004375 -0.004236 +vn -0.999981 -0.004375 -0.004236 +vn -0.500037 0.866004 0.000000 +vn -0.004122 0.999992 0.000000 +vn -0.004106 0.999983 -0.004237 +vn -0.499987 0.866027 -0.003193 +vn -0.866025 0.500001 0.000000 +vn -0.500037 0.866004 0.000000 +vn -0.499987 0.866027 -0.003193 +vn -0.866048 0.499951 -0.003193 +vn -0.999990 0.004392 0.000000 +vn -0.866025 0.500001 0.000000 +vn -0.866048 0.499951 -0.003193 +vn -0.999981 0.004375 -0.004236 +vn -0.866025 -0.500001 0.000000 +vn -0.999990 -0.004392 0.000000 +vn -0.999981 -0.004375 -0.004236 +vn -0.866048 -0.499951 -0.003193 +vn -0.448089 -0.893988 -0.001097 +vn -0.866025 -0.500001 0.000000 +vn -0.866048 -0.499951 -0.003193 +vn -0.448014 -0.894020 -0.003348 +vn -0.003245 -0.894022 -0.448012 +vn -0.003194 -0.990953 -0.134172 +vn -0.448014 -0.894020 -0.003348 +vn -0.379838 -0.843472 -0.379839 +vn -0.002041 -0.990874 -0.134776 +vn -0.003194 -0.990953 -0.134172 +vn -0.003245 -0.894022 -0.448012 +vn -0.001063 -0.893976 -0.448113 +vn -0.003194 -0.990953 -0.134172 +vn -0.134781 -0.990873 -0.002107 +vn -0.448089 -0.893988 -0.001097 +vn -0.448014 -0.894020 -0.003348 +vn -0.866068 -0.499884 -0.006507 +vn -0.866031 -0.499990 0.000000 +vn -0.999957 -0.009238 0.000000 +vn -0.999921 -0.009164 -0.008568 +vn -0.499880 -0.866070 -0.006507 +vn -0.499985 -0.866034 0.000000 +vn -0.866031 -0.499990 0.000000 +vn -0.866068 -0.499884 -0.006507 +vn -0.258726 -0.965951 0.000000 +vn -0.499985 -0.866034 0.000000 +vn -0.499880 -0.866070 -0.006507 +vn -0.137493 -0.982126 -0.128549 +vn -0.999921 -0.009164 -0.008568 +vn -0.999921 0.009164 -0.008568 +vn -0.866061 0.006959 -0.499890 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 0.006959 -0.499890 +vn -0.499888 0.006959 -0.866062 +vn -0.499887 -0.006959 -0.866063 +vn -0.499887 -0.006959 -0.866063 +vn -0.499888 0.006959 -0.866062 +vn -0.009159 0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.499925 0.866044 -0.006507 +vn -0.500031 0.866008 0.000000 +vn -0.009239 0.999957 0.000000 +vn -0.009165 0.999921 -0.008569 +vn -0.866068 0.499884 -0.006507 +vn -0.866031 0.499990 0.000000 +vn -0.500031 0.866008 0.000000 +vn -0.499925 0.866044 -0.006507 +vn -0.999921 0.009164 -0.008568 +vn -0.999957 0.009238 0.000000 +vn -0.866031 0.499990 0.000000 +vn -0.866068 0.499884 -0.006507 +vn -0.999957 0.009238 0.000000 +vn -0.999921 0.009164 -0.008568 +vn -0.999921 -0.009164 -0.008568 +vn -0.999957 -0.009238 0.000000 +vn -0.499880 -0.866070 -0.006507 +vn -0.415522 -0.809128 -0.415515 +vn -0.006958 -0.866072 -0.499871 +vn -0.137493 -0.982126 -0.128549 +vn -0.415522 -0.809128 -0.415515 +vn -0.415517 -0.415523 -0.809127 +vn -0.006959 -0.499877 -0.866069 +vn -0.006958 -0.866072 -0.499871 +vn -0.006959 -0.499877 -0.866069 +vn -0.415517 -0.415523 -0.809127 +vn -0.499887 -0.006959 -0.866063 +vn -0.009159 -0.009159 -0.999916 +vn -0.415517 -0.415523 -0.809127 +vn -0.809129 -0.415522 -0.415514 +vn -0.866061 -0.006959 -0.499890 +vn -0.499887 -0.006959 -0.866063 +vn -0.866061 -0.006959 -0.499890 +vn -0.809129 -0.415522 -0.415514 +vn -0.866068 -0.499884 -0.006507 +vn -0.999921 -0.009164 -0.008568 +vn -0.809129 -0.415522 -0.415514 +vn -0.415522 -0.809128 -0.415515 +vn -0.499880 -0.866070 -0.006507 +vn -0.866068 -0.499884 -0.006507 +vn -0.415522 -0.809128 -0.415515 +vn -0.809129 -0.415522 -0.415514 +vn -0.415517 -0.415523 -0.809127 +vn -0.499888 0.006959 -0.866062 +vn -0.415517 0.415525 -0.809126 +vn -0.006958 0.499878 -0.866068 +vn -0.009159 0.009159 -0.999916 +vn -0.415517 0.415525 -0.809126 +vn -0.415535 0.809112 -0.415533 +vn -0.006959 0.866044 -0.499920 +vn -0.006958 0.499878 -0.866068 +vn -0.006959 0.866044 -0.499920 +vn -0.415535 0.809112 -0.415533 +vn -0.499925 0.866044 -0.006507 +vn -0.009165 0.999921 -0.008569 +vn -0.415535 0.809112 -0.415533 +vn -0.809132 0.415518 -0.415512 +vn -0.866068 0.499884 -0.006507 +vn -0.499925 0.866044 -0.006507 +vn -0.866068 0.499884 -0.006507 +vn -0.809132 0.415518 -0.415512 +vn -0.866061 0.006959 -0.499890 +vn -0.999921 0.009164 -0.008568 +vn -0.809132 0.415518 -0.415512 +vn -0.415517 0.415525 -0.809126 +vn -0.499888 0.006959 -0.866062 +vn -0.866061 0.006959 -0.499890 +vn -0.415517 0.415525 -0.809126 +vn -0.809132 0.415518 -0.415512 +vn -0.415535 0.809112 -0.415533 +vn -0.009165 0.999921 -0.008569 +vn -0.009239 0.999957 0.000000 +vn 0.009239 0.999957 0.000000 +vn 0.009165 0.999921 -0.008569 +vn -0.006959 0.866044 -0.499920 +vn -0.009165 0.999921 -0.008569 +vn 0.009165 0.999921 -0.008569 +vn 0.006959 0.866044 -0.499920 +vn -0.006958 0.499878 -0.866068 +vn -0.006959 0.866044 -0.499920 +vn 0.006959 0.866044 -0.499920 +vn 0.006958 0.499878 -0.866068 +vn -0.009159 0.009159 -0.999916 +vn -0.006958 0.499878 -0.866068 +vn 0.006958 0.499878 -0.866068 +vn 0.009159 0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.009159 -0.009159 -0.999916 +vn -0.006959 -0.499877 -0.866069 +vn -0.009159 -0.009159 -0.999916 +vn 0.009159 -0.009159 -0.999916 +vn 0.006959 -0.499877 -0.866069 +vn -0.006958 -0.866072 -0.499871 +vn -0.006959 -0.499877 -0.866069 +vn 0.006959 -0.499877 -0.866069 +vn 0.006958 -0.866072 -0.499871 +vn -0.137493 -0.982126 -0.128549 +vn -0.006958 -0.866072 -0.499871 +vn 0.006958 -0.866072 -0.499871 +vn 0.137494 -0.982125 -0.128550 +vn 0.866066 -0.499887 -0.006507 +vn 0.982112 -0.137544 -0.128596 +vn 0.965925 -0.258821 0.000000 +vn 0.866030 -0.499993 0.000000 +vn 0.499884 -0.866068 -0.006507 +vn 0.866066 -0.499887 -0.006507 +vn 0.866030 -0.499993 0.000000 +vn 0.499989 -0.866032 0.000000 +vn 0.258730 -0.965950 0.000000 +vn 0.137494 -0.982125 -0.128550 +vn 0.499884 -0.866068 -0.006507 +vn 0.499989 -0.866032 0.000000 +vn 0.982112 -0.137544 -0.128596 +vn 0.866061 -0.006959 -0.499890 +vn 0.866061 0.006959 -0.499890 +vn 0.982112 0.137544 -0.128596 +vn 0.866061 -0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.499887 0.006959 -0.866063 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.009159 -0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.499887 0.006959 -0.866063 +vn 0.499929 0.866042 -0.006507 +vn 0.009165 0.999921 -0.008569 +vn 0.009239 0.999957 0.000000 +vn 0.500035 0.866005 0.000000 +vn 0.866066 0.499887 -0.006507 +vn 0.499929 0.866042 -0.006507 +vn 0.500035 0.866005 0.000000 +vn 0.866030 0.499993 0.000000 +vn 0.982112 0.137544 -0.128596 +vn 0.866066 0.499887 -0.006507 +vn 0.866030 0.499993 0.000000 +vn 0.965925 0.258821 0.000000 +vn 0.499884 -0.866068 -0.006507 +vn 0.137494 -0.982125 -0.128550 +vn 0.006958 -0.866072 -0.499871 +vn 0.415518 -0.809129 -0.415517 +vn 0.415518 -0.809129 -0.415517 +vn 0.006958 -0.866072 -0.499871 +vn 0.006959 -0.499877 -0.866069 +vn 0.415517 -0.415524 -0.809126 +vn 0.006959 -0.499877 -0.866069 +vn 0.009159 -0.009159 -0.999916 +vn 0.499887 -0.006959 -0.866063 +vn 0.415517 -0.415524 -0.809126 +vn 0.415517 -0.415524 -0.809126 +vn 0.499887 -0.006959 -0.866063 +vn 0.866061 -0.006959 -0.499890 +vn 0.809126 -0.415524 -0.415518 +vn 0.866061 -0.006959 -0.499890 +vn 0.982112 -0.137544 -0.128596 +vn 0.866066 -0.499887 -0.006507 +vn 0.809126 -0.415524 -0.415518 +vn 0.809126 -0.415524 -0.415518 +vn 0.866066 -0.499887 -0.006507 +vn 0.499884 -0.866068 -0.006507 +vn 0.415518 -0.809129 -0.415517 +vn 0.415518 -0.809129 -0.415517 +vn 0.415517 -0.415524 -0.809126 +vn 0.809126 -0.415524 -0.415518 +vn 0.499887 0.006959 -0.866063 +vn 0.009159 0.009159 -0.999916 +vn 0.006958 0.499878 -0.866068 +vn 0.415517 0.415526 -0.809125 +vn 0.415517 0.415526 -0.809125 +vn 0.006958 0.499878 -0.866068 +vn 0.006959 0.866044 -0.499920 +vn 0.415533 0.809113 -0.415534 +vn 0.006959 0.866044 -0.499920 +vn 0.009165 0.999921 -0.008569 +vn 0.499929 0.866042 -0.006507 +vn 0.415533 0.809113 -0.415534 +vn 0.415533 0.809113 -0.415534 +vn 0.499929 0.866042 -0.006507 +vn 0.866066 0.499887 -0.006507 +vn 0.809128 0.415524 -0.415513 +vn 0.866066 0.499887 -0.006507 +vn 0.982112 0.137544 -0.128596 +vn 0.866061 0.006959 -0.499890 +vn 0.809128 0.415524 -0.415513 +vn 0.809128 0.415524 -0.415513 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 0.006959 -0.866063 +vn 0.415517 0.415526 -0.809125 +vn 0.415517 0.415526 -0.809125 +vn 0.415533 0.809113 -0.415534 +vn 0.809128 0.415524 -0.415513 +vn 0.866066 -0.499887 -0.006507 +vn 0.999921 -0.009164 -0.008568 +vn 0.999957 -0.009238 0.000000 +vn 0.866030 -0.499993 0.000000 +vn 0.499884 -0.866068 -0.006507 +vn 0.866066 -0.499887 -0.006507 +vn 0.866030 -0.499993 0.000000 +vn 0.499989 -0.866032 0.000000 +vn 0.009235 -0.999957 0.000000 +vn 0.009161 -0.999921 -0.008565 +vn 0.499884 -0.866068 -0.006507 +vn 0.499989 -0.866032 0.000000 +vn 0.999921 -0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.866061 0.006959 -0.499890 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.499887 0.006959 -0.866063 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.009159 -0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.499887 0.006959 -0.866063 +vn 0.499929 0.866042 -0.006507 +vn 0.009165 0.999921 -0.008569 +vn 0.009239 0.999957 0.000000 +vn 0.500035 0.866005 0.000000 +vn 0.866066 0.499887 -0.006507 +vn 0.499929 0.866042 -0.006507 +vn 0.500035 0.866005 0.000000 +vn 0.866030 0.499993 0.000000 +vn 0.999921 0.009164 -0.008568 +vn 0.866066 0.499887 -0.006507 +vn 0.866030 0.499993 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.999957 -0.009238 0.000000 +vn 0.999921 -0.009164 -0.008568 +vn 0.999921 0.009164 -0.008568 +vn 0.499884 -0.866068 -0.006507 +vn 0.009161 -0.999921 -0.008565 +vn 0.006958 -0.866072 -0.499871 +vn 0.415517 -0.809130 -0.415516 +vn 0.415517 -0.809130 -0.415516 +vn 0.006958 -0.866072 -0.499871 +vn 0.006959 -0.499877 -0.866069 +vn 0.415516 -0.415524 -0.809127 +vn 0.006959 -0.499877 -0.866069 +vn 0.009159 -0.009159 -0.999916 +vn 0.499887 -0.006959 -0.866063 +vn 0.415516 -0.415524 -0.809127 +vn 0.415516 -0.415524 -0.809127 +vn 0.499887 -0.006959 -0.866063 +vn 0.866061 -0.006959 -0.499890 +vn 0.809126 -0.415524 -0.415518 +vn 0.866061 -0.006959 -0.499890 +vn 0.999921 -0.009164 -0.008568 +vn 0.866066 -0.499887 -0.006507 +vn 0.809126 -0.415524 -0.415518 +vn 0.809126 -0.415524 -0.415518 +vn 0.866066 -0.499887 -0.006507 +vn 0.499884 -0.866068 -0.006507 +vn 0.415517 -0.809130 -0.415516 +vn 0.415517 -0.809130 -0.415516 +vn 0.415516 -0.415524 -0.809127 +vn 0.809126 -0.415524 -0.415518 +vn 0.499887 0.006959 -0.866063 +vn 0.009159 0.009159 -0.999916 +vn 0.006959 0.499878 -0.866068 +vn 0.415518 0.415524 -0.809126 +vn 0.415518 0.415524 -0.809126 +vn 0.006959 0.499878 -0.866068 +vn 0.006959 0.866044 -0.499920 +vn 0.415532 0.809114 -0.415533 +vn 0.006959 0.866044 -0.499920 +vn 0.009165 0.999921 -0.008569 +vn 0.499929 0.866042 -0.006507 +vn 0.415532 0.809114 -0.415533 +vn 0.415532 0.809114 -0.415533 +vn 0.499929 0.866042 -0.006507 +vn 0.866066 0.499887 -0.006507 +vn 0.809128 0.415524 -0.415514 +vn 0.866066 0.499887 -0.006507 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 0.006959 -0.499890 +vn 0.809128 0.415524 -0.415514 +vn 0.809128 0.415524 -0.415514 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 0.006959 -0.866063 +vn 0.415518 0.415524 -0.809126 +vn 0.415518 0.415524 -0.809126 +vn 0.415532 0.809114 -0.415533 +vn 0.809128 0.415524 -0.415514 +vn 0.499888 0.866066 -0.006507 +vn 0.009164 0.999921 -0.008568 +vn 0.009238 0.999957 0.000000 +vn 0.499993 0.866029 0.000000 +vn 0.866073 0.499875 -0.006507 +vn 0.499888 0.866066 -0.006507 +vn 0.499993 0.866029 0.000000 +vn 0.866036 0.499981 0.000000 +vn 0.999957 0.009235 0.000000 +vn 0.999921 0.009161 -0.008565 +vn 0.866073 0.499875 -0.006507 +vn 0.866036 0.499981 0.000000 +vn 0.009159 0.009159 -0.999916 +vn 0.499880 0.006959 -0.866067 +vn 0.499880 -0.006959 -0.866067 +vn 0.009159 -0.009159 -0.999916 +vn 0.499880 0.006959 -0.866067 +vn 0.866068 0.006958 -0.499878 +vn 0.866068 -0.006958 -0.499878 +vn 0.499880 -0.006959 -0.866067 +vn 0.866068 0.006958 -0.499878 +vn 0.999921 0.009161 -0.008565 +vn 0.999921 -0.009161 -0.008565 +vn 0.866068 -0.006958 -0.499878 +vn 0.009164 0.999921 -0.008568 +vn 0.006959 0.866063 -0.499887 +vn -0.006959 0.866063 -0.499887 +vn -0.009164 0.999921 -0.008568 +vn 0.006959 0.866063 -0.499887 +vn 0.006959 0.499890 -0.866061 +vn -0.006958 0.499890 -0.866061 +vn -0.006959 0.866063 -0.499887 +vn 0.006959 0.499890 -0.866061 +vn 0.009159 0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn -0.006958 0.499890 -0.866061 +vn -0.866045 0.499924 -0.006507 +vn -0.999921 0.009165 -0.008569 +vn -0.999957 0.009239 0.000000 +vn -0.866008 0.500030 0.000000 +vn -0.499881 0.866070 -0.006507 +vn -0.866045 0.499924 -0.006507 +vn -0.866008 0.500030 0.000000 +vn -0.499986 0.866034 0.000000 +vn -0.009164 0.999921 -0.008568 +vn -0.499881 0.866070 -0.006507 +vn -0.499986 0.866034 0.000000 +vn -0.009238 0.999957 0.000000 +vn -0.999921 0.009165 -0.008569 +vn -0.866042 0.006959 -0.499923 +vn -0.866042 -0.006958 -0.499923 +vn -0.999921 -0.009165 -0.008569 +vn -0.866042 0.006959 -0.499923 +vn -0.499880 0.006959 -0.866067 +vn -0.499880 -0.006958 -0.866067 +vn -0.866042 -0.006958 -0.499923 +vn -0.499880 0.006959 -0.866067 +vn -0.009159 0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.499880 -0.006958 -0.866067 +vn -0.499881 -0.866070 -0.006507 +vn -0.009164 -0.999921 -0.008568 +vn -0.009238 -0.999957 0.000000 +vn -0.499986 -0.866034 0.000000 +vn -0.866045 -0.499924 -0.006508 +vn -0.499881 -0.866070 -0.006507 +vn -0.499986 -0.866034 0.000000 +vn -0.866008 -0.500030 0.000000 +vn -0.999921 -0.009165 -0.008569 +vn -0.866045 -0.499924 -0.006508 +vn -0.866008 -0.500030 0.000000 +vn -0.999957 -0.009239 0.000000 +vn 0.006959 -0.866063 -0.499887 +vn 0.009164 -0.999921 -0.008568 +vn -0.009164 -0.999921 -0.008568 +vn -0.006959 -0.866063 -0.499887 +vn 0.006958 -0.499890 -0.866061 +vn 0.006959 -0.866063 -0.499887 +vn -0.006959 -0.866063 -0.499887 +vn -0.006959 -0.499890 -0.866061 +vn 0.009159 -0.009159 -0.999916 +vn 0.006958 -0.499890 -0.866061 +vn -0.006959 -0.499890 -0.866061 +vn -0.009159 -0.009159 -0.999916 +vn 0.866073 -0.499876 -0.006507 +vn 0.999921 -0.009161 -0.008565 +vn 0.999957 -0.009235 0.000000 +vn 0.866036 -0.499981 0.000000 +vn 0.499888 -0.866066 -0.006507 +vn 0.866073 -0.499876 -0.006507 +vn 0.866036 -0.499981 0.000000 +vn 0.499993 -0.866029 0.000000 +vn 0.009164 -0.999921 -0.008568 +vn 0.499888 -0.866066 -0.006507 +vn 0.499993 -0.866029 0.000000 +vn 0.009238 -0.999957 0.000000 +vn -0.009238 0.999957 0.000000 +vn 0.009238 0.999957 0.000000 +vn 0.009164 0.999921 -0.008568 +vn -0.009164 0.999921 -0.008568 +vn 0.009164 -0.999921 -0.008568 +vn 0.009238 -0.999957 0.000000 +vn -0.009238 -0.999957 0.000000 +vn -0.009164 -0.999921 -0.008568 +vn 0.009159 0.009159 -0.999916 +vn 0.009159 -0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn 0.866073 0.499875 -0.006507 +vn 0.999921 0.009161 -0.008565 +vn 0.866068 0.006958 -0.499878 +vn 0.809136 0.415505 -0.415517 +vn 0.809136 0.415505 -0.415517 +vn 0.866068 0.006958 -0.499878 +vn 0.499880 0.006959 -0.866067 +vn 0.415511 0.415520 -0.809132 +vn 0.499880 0.006959 -0.866067 +vn 0.009159 0.009159 -0.999916 +vn 0.006959 0.499890 -0.866061 +vn 0.415511 0.415520 -0.809132 +vn 0.415511 0.415520 -0.809132 +vn 0.006959 0.499890 -0.866061 +vn 0.006959 0.866063 -0.499887 +vn 0.415523 0.809128 -0.415516 +vn 0.006959 0.866063 -0.499887 +vn 0.009164 0.999921 -0.008568 +vn 0.499888 0.866066 -0.006507 +vn 0.415523 0.809128 -0.415516 +vn 0.415523 0.809128 -0.415516 +vn 0.499888 0.866066 -0.006507 +vn 0.866073 0.499875 -0.006507 +vn 0.809136 0.415505 -0.415517 +vn 0.809136 0.415505 -0.415517 +vn 0.415511 0.415520 -0.809132 +vn 0.415523 0.809128 -0.415516 +vn -0.006958 0.499890 -0.866061 +vn -0.009159 0.009159 -0.999916 +vn -0.499880 0.006959 -0.866067 +vn -0.415510 0.415520 -0.809132 +vn -0.415510 0.415520 -0.809132 +vn -0.499880 0.006959 -0.866067 +vn -0.866042 0.006959 -0.499923 +vn -0.809117 0.415527 -0.415532 +vn -0.866042 0.006959 -0.499923 +vn -0.999921 0.009165 -0.008569 +vn -0.866045 0.499924 -0.006507 +vn -0.809117 0.415527 -0.415532 +vn -0.809117 0.415527 -0.415532 +vn -0.866045 0.499924 -0.006507 +vn -0.499881 0.866070 -0.006507 +vn -0.415520 0.809128 -0.415517 +vn -0.499881 0.866070 -0.006507 +vn -0.009164 0.999921 -0.008568 +vn -0.006959 0.866063 -0.499887 +vn -0.415520 0.809128 -0.415517 +vn -0.415520 0.809128 -0.415517 +vn -0.006959 0.866063 -0.499887 +vn -0.006958 0.499890 -0.866061 +vn -0.415510 0.415520 -0.809132 +vn -0.415510 0.415520 -0.809132 +vn -0.809117 0.415527 -0.415532 +vn -0.415520 0.809128 -0.415517 +vn -0.499880 -0.006958 -0.866067 +vn -0.009159 -0.009159 -0.999916 +vn -0.006959 -0.499890 -0.866061 +vn -0.415511 -0.415515 -0.809134 +vn -0.415511 -0.415515 -0.809134 +vn -0.006959 -0.499890 -0.866061 +vn -0.006959 -0.866063 -0.499887 +vn -0.415520 -0.809128 -0.415518 +vn -0.006959 -0.866063 -0.499887 +vn -0.009164 -0.999921 -0.008568 +vn -0.499881 -0.866070 -0.006507 +vn -0.415520 -0.809128 -0.415518 +vn -0.415520 -0.809128 -0.415518 +vn -0.499881 -0.866070 -0.006507 +vn -0.866045 -0.499924 -0.006508 +vn -0.809118 -0.415522 -0.415536 +vn -0.866045 -0.499924 -0.006508 +vn -0.999921 -0.009165 -0.008569 +vn -0.866042 -0.006958 -0.499923 +vn -0.809118 -0.415522 -0.415536 +vn -0.809118 -0.415522 -0.415536 +vn -0.866042 -0.006958 -0.499923 +vn -0.499880 -0.006958 -0.866067 +vn -0.415511 -0.415515 -0.809134 +vn -0.415511 -0.415515 -0.809134 +vn -0.415520 -0.809128 -0.415518 +vn -0.809118 -0.415522 -0.415536 +vn 0.006958 -0.499890 -0.866061 +vn 0.009159 -0.009159 -0.999916 +vn 0.499880 -0.006959 -0.866067 +vn 0.415511 -0.415517 -0.809133 +vn 0.415511 -0.415517 -0.809133 +vn 0.499880 -0.006959 -0.866067 +vn 0.866068 -0.006958 -0.499878 +vn 0.809135 -0.415509 -0.415516 +vn 0.866068 -0.006958 -0.499878 +vn 0.999921 -0.009161 -0.008565 +vn 0.866073 -0.499876 -0.006507 +vn 0.809135 -0.415509 -0.415516 +vn 0.809135 -0.415509 -0.415516 +vn 0.866073 -0.499876 -0.006507 +vn 0.499888 -0.866066 -0.006507 +vn 0.415523 -0.809124 -0.415523 +vn 0.499888 -0.866066 -0.006507 +vn 0.009164 -0.999921 -0.008568 +vn 0.006959 -0.866063 -0.499887 +vn 0.415523 -0.809124 -0.415523 +vn 0.415523 -0.809124 -0.415523 +vn 0.006959 -0.866063 -0.499887 +vn 0.006958 -0.499890 -0.866061 +vn 0.415511 -0.415517 -0.809133 +vn 0.415511 -0.415517 -0.809133 +vn 0.809135 -0.415509 -0.415516 +vn 0.415523 -0.809124 -0.415523 +vn -0.999921 0.009165 -0.008569 +vn -0.999921 -0.009165 -0.008569 +vn -0.999957 -0.009239 0.000000 +vn -0.999957 0.009239 0.000000 +vn -0.003298 0.499977 -0.866033 +vn -0.004374 0.004374 -0.999981 +vn -0.499979 0.003298 -0.866031 +vn -0.415528 0.415530 -0.809118 +vn -0.415528 0.415530 -0.809118 +vn -0.499979 0.003298 -0.866031 +vn -0.866057 0.003298 -0.499935 +vn -0.809129 0.415517 -0.415518 +vn -0.866057 0.003298 -0.499935 +vn -0.999981 0.004374 -0.004235 +vn -0.866050 0.499947 -0.003193 +vn -0.809129 0.415517 -0.415518 +vn -0.809129 0.415517 -0.415518 +vn -0.866050 0.499947 -0.003193 +vn -0.499946 0.866051 -0.003193 +vn -0.415524 0.809128 -0.415514 +vn -0.499946 0.866051 -0.003193 +vn -0.004375 0.999981 -0.004235 +vn -0.003298 0.866057 -0.499935 +vn -0.415524 0.809128 -0.415514 +vn -0.415524 0.809128 -0.415514 +vn -0.003298 0.866057 -0.499935 +vn -0.003298 0.499977 -0.866033 +vn -0.415528 0.415530 -0.809118 +vn -0.415528 0.415530 -0.809118 +vn -0.809129 0.415517 -0.415518 +vn -0.415524 0.809128 -0.415514 +vn 0.866050 0.499947 -0.003193 +vn 0.999981 0.004375 -0.004235 +vn 0.866057 0.003297 -0.499935 +vn 0.809132 0.415510 -0.415521 +vn 0.809132 0.415510 -0.415521 +vn 0.866057 0.003297 -0.499935 +vn 0.499979 0.003298 -0.866031 +vn 0.415526 0.415523 -0.809122 +vn 0.499979 0.003298 -0.866031 +vn 0.004374 0.004374 -0.999981 +vn 0.003298 0.499977 -0.866033 +vn 0.415526 0.415523 -0.809122 +vn 0.415526 0.415523 -0.809122 +vn 0.003298 0.499977 -0.866033 +vn 0.003298 0.866056 -0.499936 +vn 0.415516 0.809132 -0.415515 +vn 0.003298 0.866056 -0.499936 +vn 0.004375 0.999981 -0.004235 +vn 0.499953 0.866047 -0.003193 +vn 0.415516 0.809132 -0.415515 +vn 0.415516 0.809132 -0.415515 +vn 0.499953 0.866047 -0.003193 +vn 0.866050 0.499947 -0.003193 +vn 0.809132 0.415510 -0.415521 +vn 0.809132 0.415510 -0.415521 +vn 0.415526 0.415523 -0.809122 +vn 0.415516 0.809132 -0.415515 +vn -0.003297 -0.866053 -0.499941 +vn -0.004375 -0.999981 -0.004235 +vn -0.499946 -0.866051 -0.003193 +vn -0.415519 -0.809129 -0.415517 +vn -0.415519 -0.809129 -0.415517 +vn -0.499946 -0.866051 -0.003193 +vn -0.866050 -0.499947 -0.003193 +vn -0.809130 -0.415515 -0.415518 +vn -0.866050 -0.499947 -0.003193 +vn -0.999981 -0.004374 -0.004235 +vn -0.866057 -0.003298 -0.499935 +vn -0.809130 -0.415515 -0.415518 +vn -0.809130 -0.415515 -0.415518 +vn -0.866057 -0.003298 -0.499935 +vn -0.499979 -0.003298 -0.866031 +vn -0.415525 -0.415532 -0.809118 +vn -0.499979 -0.003298 -0.866031 +vn -0.004374 -0.004374 -0.999981 +vn -0.003298 -0.499984 -0.866029 +vn -0.415525 -0.415532 -0.809118 +vn -0.415525 -0.415532 -0.809118 +vn -0.003298 -0.499984 -0.866029 +vn -0.003297 -0.866053 -0.499941 +vn -0.415519 -0.809129 -0.415517 +vn -0.415519 -0.809129 -0.415517 +vn -0.809130 -0.415515 -0.415518 +vn -0.415525 -0.415532 -0.809118 +vn 0.866057 -0.003297 -0.499935 +vn 0.999981 -0.004375 -0.004235 +vn 0.866050 -0.499947 -0.003193 +vn 0.809130 -0.415516 -0.415518 +vn 0.809130 -0.415516 -0.415518 +vn 0.866050 -0.499947 -0.003193 +vn 0.499953 -0.866047 -0.003193 +vn 0.415521 -0.809131 -0.415512 +vn 0.499953 -0.866047 -0.003193 +vn 0.004375 -0.999981 -0.004235 +vn 0.003298 -0.866053 -0.499941 +vn 0.415521 -0.809131 -0.415512 +vn 0.415521 -0.809131 -0.415512 +vn 0.003298 -0.866053 -0.499941 +vn 0.003298 -0.499984 -0.866029 +vn 0.415529 -0.415527 -0.809118 +vn 0.003298 -0.499984 -0.866029 +vn 0.004374 -0.004374 -0.999981 +vn 0.499979 -0.003298 -0.866031 +vn 0.415529 -0.415527 -0.809118 +vn 0.415529 -0.415527 -0.809118 +vn 0.499979 -0.003298 -0.866031 +vn 0.866057 -0.003297 -0.499935 +vn 0.809130 -0.415516 -0.415518 +vn 0.809130 -0.415516 -0.415518 +vn 0.415521 -0.809131 -0.415512 +vn 0.415529 -0.415527 -0.809118 +vn -0.004375 -0.999981 -0.004235 +vn -0.003297 -0.866053 -0.499941 +vn 0.003298 -0.866053 -0.499941 +vn 0.004375 -0.999981 -0.004235 +vn -0.003297 -0.866053 -0.499941 +vn -0.003298 -0.499984 -0.866029 +vn 0.003298 -0.499984 -0.866029 +vn 0.003298 -0.866053 -0.499941 +vn -0.003298 -0.499984 -0.866029 +vn -0.004374 -0.004374 -0.999981 +vn 0.004374 -0.004374 -0.999981 +vn 0.003298 -0.499984 -0.866029 +vn -0.004374 0.004374 -0.999981 +vn 0.004374 0.004374 -0.999981 +vn 0.004374 -0.004374 -0.999981 +vn -0.004374 -0.004374 -0.999981 +vn -0.004374 0.004374 -0.999981 +vn -0.003298 0.499977 -0.866033 +vn 0.003298 0.499977 -0.866033 +vn 0.004374 0.004374 -0.999981 +vn -0.003298 0.499977 -0.866033 +vn -0.003298 0.866057 -0.499935 +vn 0.003298 0.866056 -0.499936 +vn 0.003298 0.499977 -0.866033 +vn -0.003298 0.866057 -0.499935 +vn -0.004375 0.999981 -0.004235 +vn 0.004375 0.999981 -0.004235 +vn 0.003298 0.866056 -0.499936 +vn -0.999990 0.004392 0.000000 +vn -0.866028 0.499996 0.000000 +vn -0.866050 0.499947 -0.003193 +vn -0.999981 0.004374 -0.004235 +vn -0.866028 0.499996 0.000000 +vn -0.499995 0.866028 0.000000 +vn -0.499946 0.866051 -0.003193 +vn -0.866050 0.499947 -0.003193 +vn -0.499995 0.866028 0.000000 +vn -0.004392 0.999990 0.000000 +vn -0.004375 0.999981 -0.004235 +vn -0.499946 0.866051 -0.003193 +vn -0.004375 0.999981 -0.004235 +vn -0.004392 0.999990 0.000000 +vn 0.004392 0.999990 0.000000 +vn 0.004375 0.999981 -0.004235 +vn 0.004392 0.999990 0.000000 +vn 0.500002 0.866024 0.000000 +vn 0.499953 0.866047 -0.003193 +vn 0.004375 0.999981 -0.004235 +vn 0.500002 0.866024 0.000000 +vn 0.866028 0.499996 0.000000 +vn 0.866050 0.499947 -0.003193 +vn 0.499953 0.866047 -0.003193 +vn 0.866028 0.499996 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.999981 0.004375 -0.004235 +vn 0.866050 0.499947 -0.003193 +vn 0.999990 -0.004392 0.000000 +vn 0.866028 -0.499996 0.000000 +vn 0.866050 -0.499947 -0.003193 +vn 0.999981 -0.004375 -0.004235 +vn 0.866028 -0.499996 0.000000 +vn 0.500002 -0.866024 0.000000 +vn 0.499953 -0.866047 -0.003193 +vn 0.866050 -0.499947 -0.003193 +vn 0.500002 -0.866024 0.000000 +vn 0.004392 -0.999990 0.000000 +vn 0.004375 -0.999981 -0.004235 +vn 0.499953 -0.866047 -0.003193 +vn 0.004392 -0.999990 0.000000 +vn -0.004392 -0.999990 0.000000 +vn -0.004375 -0.999981 -0.004235 +vn 0.004375 -0.999981 -0.004235 +vn -0.004392 -0.999990 0.000000 +vn -0.499995 -0.866028 0.000000 +vn -0.499946 -0.866051 -0.003193 +vn -0.004375 -0.999981 -0.004235 +vn -0.499995 -0.866028 0.000000 +vn -0.866028 -0.499996 0.000000 +vn -0.866050 -0.499947 -0.003193 +vn -0.499946 -0.866051 -0.003193 +vn -0.866028 -0.499996 0.000000 +vn -0.999990 -0.004392 0.000000 +vn -0.999981 -0.004374 -0.004235 +vn -0.866050 -0.499947 -0.003193 +vn -0.999990 -0.004392 0.000000 +vn -0.999990 0.004392 0.000000 +vn -0.999981 0.004374 -0.004235 +vn -0.999981 -0.004374 -0.004235 +vn 0.999981 0.004375 -0.004235 +vn 0.999990 0.004392 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 -0.004375 -0.004235 +vn 0.866057 0.003297 -0.499935 +vn 0.999981 0.004375 -0.004235 +vn 0.999981 -0.004375 -0.004235 +vn 0.866057 -0.003297 -0.499935 +vn 0.499979 0.003298 -0.866031 +vn 0.866057 0.003297 -0.499935 +vn 0.866057 -0.003297 -0.499935 +vn 0.499979 -0.003298 -0.866031 +vn 0.004374 0.004374 -0.999981 +vn 0.499979 0.003298 -0.866031 +vn 0.499979 -0.003298 -0.866031 +vn 0.004374 -0.004374 -0.999981 +vn -0.499979 0.003298 -0.866031 +vn -0.004374 0.004374 -0.999981 +vn -0.004374 -0.004374 -0.999981 +vn -0.499979 -0.003298 -0.866031 +vn -0.866057 0.003298 -0.499935 +vn -0.499979 0.003298 -0.866031 +vn -0.499979 -0.003298 -0.866031 +vn -0.866057 -0.003298 -0.499935 +vn -0.999981 0.004374 -0.004235 +vn -0.866057 0.003298 -0.499935 +vn -0.866057 -0.003298 -0.499935 +vn -0.999981 -0.004374 -0.004235 +vn 0.866066 -0.499887 -0.006507 +vn 0.999921 -0.009164 -0.008568 +vn 0.999957 -0.009238 0.000000 +vn 0.866030 -0.499993 0.000000 +vn 0.499884 -0.866068 -0.006507 +vn 0.866066 -0.499887 -0.006507 +vn 0.866030 -0.499993 0.000000 +vn 0.499989 -0.866032 0.000000 +vn 0.009235 -0.999957 0.000000 +vn 0.009161 -0.999921 -0.008565 +vn 0.499884 -0.866068 -0.006507 +vn 0.499989 -0.866032 0.000000 +vn 0.009159 -0.009159 -0.999916 +vn 0.006959 -0.499877 -0.866069 +vn -0.006959 -0.499877 -0.866069 +vn -0.009159 -0.009159 -0.999916 +vn 0.006959 -0.499877 -0.866069 +vn 0.006958 -0.866072 -0.499871 +vn -0.006958 -0.866072 -0.499871 +vn -0.006959 -0.499877 -0.866069 +vn 0.006958 -0.866072 -0.499871 +vn 0.009161 -0.999921 -0.008565 +vn -0.009161 -0.999921 -0.008565 +vn -0.006958 -0.866072 -0.499871 +vn 0.999921 -0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.866061 0.006959 -0.499890 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.499887 0.006959 -0.866063 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.009159 -0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.499887 0.006959 -0.866063 +vn 0.499929 0.866042 -0.006507 +vn 0.009165 0.999921 -0.008569 +vn 0.009239 0.999957 0.000000 +vn 0.500035 0.866005 0.000000 +vn 0.866066 0.499887 -0.006507 +vn 0.499929 0.866042 -0.006507 +vn 0.500035 0.866005 0.000000 +vn 0.866030 0.499993 0.000000 +vn 0.999921 0.009164 -0.008568 +vn 0.866066 0.499887 -0.006507 +vn 0.866030 0.499993 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.009165 0.999921 -0.008569 +vn 0.006959 0.866044 -0.499920 +vn -0.006959 0.866044 -0.499920 +vn -0.009165 0.999921 -0.008569 +vn 0.006959 0.866044 -0.499920 +vn 0.006958 0.499877 -0.866069 +vn -0.006959 0.499877 -0.866069 +vn -0.006959 0.866044 -0.499920 +vn 0.006958 0.499877 -0.866069 +vn 0.009159 0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn -0.006959 0.499877 -0.866069 +vn -0.866066 0.499887 -0.006507 +vn -0.999921 0.009164 -0.008568 +vn -0.999957 0.009238 0.000000 +vn -0.866030 0.499993 0.000000 +vn -0.499929 0.866042 -0.006507 +vn -0.866066 0.499887 -0.006507 +vn -0.866030 0.499993 0.000000 +vn -0.500035 0.866005 0.000000 +vn -0.009165 0.999921 -0.008569 +vn -0.499929 0.866042 -0.006507 +vn -0.500035 0.866005 0.000000 +vn -0.009239 0.999957 0.000000 +vn -0.866061 -0.006959 -0.499890 +vn -0.999921 -0.009164 -0.008568 +vn -0.999921 0.009164 -0.008568 +vn -0.866061 0.006959 -0.499890 +vn -0.499887 -0.006959 -0.866063 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 0.006959 -0.499890 +vn -0.499887 0.006959 -0.866063 +vn -0.009159 -0.009159 -0.999916 +vn -0.499887 -0.006959 -0.866063 +vn -0.499887 0.006959 -0.866063 +vn -0.009159 0.009159 -0.999916 +vn -0.499884 -0.866068 -0.006507 +vn -0.009161 -0.999921 -0.008565 +vn -0.009235 -0.999957 0.000000 +vn -0.499989 -0.866032 0.000000 +vn -0.866066 -0.499887 -0.006507 +vn -0.499884 -0.866068 -0.006507 +vn -0.499989 -0.866032 0.000000 +vn -0.866030 -0.499993 0.000000 +vn -0.999921 -0.009164 -0.008568 +vn -0.866066 -0.499887 -0.006507 +vn -0.866030 -0.499993 0.000000 +vn -0.999957 -0.009238 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.999957 -0.009238 0.000000 +vn 0.999921 -0.009164 -0.008568 +vn 0.999921 0.009164 -0.008568 +vn -0.999921 -0.009164 -0.008568 +vn -0.999957 -0.009238 0.000000 +vn -0.999957 0.009238 0.000000 +vn -0.999921 0.009164 -0.008568 +vn 0.009159 -0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.499884 -0.866068 -0.006507 +vn 0.009161 -0.999921 -0.008565 +vn 0.006958 -0.866072 -0.499871 +vn 0.415518 -0.809129 -0.415517 +vn 0.415518 -0.809129 -0.415517 +vn 0.006958 -0.866072 -0.499871 +vn 0.006959 -0.499877 -0.866069 +vn 0.415517 -0.415524 -0.809126 +vn 0.006959 -0.499877 -0.866069 +vn 0.009159 -0.009159 -0.999916 +vn 0.499887 -0.006959 -0.866063 +vn 0.415517 -0.415524 -0.809126 +vn 0.415517 -0.415524 -0.809126 +vn 0.499887 -0.006959 -0.866063 +vn 0.866061 -0.006959 -0.499890 +vn 0.809126 -0.415524 -0.415518 +vn 0.866061 -0.006959 -0.499890 +vn 0.999921 -0.009164 -0.008568 +vn 0.866066 -0.499887 -0.006507 +vn 0.809126 -0.415524 -0.415518 +vn 0.809126 -0.415524 -0.415518 +vn 0.866066 -0.499887 -0.006507 +vn 0.499884 -0.866068 -0.006507 +vn 0.415518 -0.809129 -0.415517 +vn 0.415518 -0.809129 -0.415517 +vn 0.415517 -0.415524 -0.809126 +vn 0.809126 -0.415524 -0.415518 +vn 0.499887 0.006959 -0.866063 +vn 0.009159 0.009159 -0.999916 +vn 0.006958 0.499877 -0.866069 +vn 0.415516 0.415525 -0.809126 +vn 0.415516 0.415525 -0.809126 +vn 0.006958 0.499877 -0.866069 +vn 0.006959 0.866044 -0.499920 +vn 0.415534 0.809114 -0.415531 +vn 0.006959 0.866044 -0.499920 +vn 0.009165 0.999921 -0.008569 +vn 0.499929 0.866042 -0.006507 +vn 0.415534 0.809114 -0.415531 +vn 0.415534 0.809114 -0.415531 +vn 0.499929 0.866042 -0.006507 +vn 0.866066 0.499887 -0.006507 +vn 0.809128 0.415525 -0.415513 +vn 0.866066 0.499887 -0.006507 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 0.006959 -0.499890 +vn 0.809128 0.415525 -0.415513 +vn 0.809128 0.415525 -0.415513 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 0.006959 -0.866063 +vn 0.415516 0.415525 -0.809126 +vn 0.415516 0.415525 -0.809126 +vn 0.415534 0.809114 -0.415531 +vn 0.809128 0.415525 -0.415513 +vn -0.006959 0.499877 -0.866069 +vn -0.009159 0.009159 -0.999916 +vn -0.499887 0.006959 -0.866063 +vn -0.415518 0.415525 -0.809126 +vn -0.415518 0.415525 -0.809126 +vn -0.499887 0.006959 -0.866063 +vn -0.866061 0.006959 -0.499890 +vn -0.809128 0.415525 -0.415512 +vn -0.866061 0.006959 -0.499890 +vn -0.999921 0.009164 -0.008568 +vn -0.866066 0.499887 -0.006507 +vn -0.809128 0.415525 -0.415512 +vn -0.809128 0.415525 -0.415512 +vn -0.866066 0.499887 -0.006507 +vn -0.499929 0.866042 -0.006507 +vn -0.415533 0.809115 -0.415530 +vn -0.499929 0.866042 -0.006507 +vn -0.009165 0.999921 -0.008569 +vn -0.006959 0.866044 -0.499920 +vn -0.415533 0.809115 -0.415530 +vn -0.415533 0.809115 -0.415530 +vn -0.006959 0.866044 -0.499920 +vn -0.006959 0.499877 -0.866069 +vn -0.415518 0.415525 -0.809126 +vn -0.415518 0.415525 -0.809126 +vn -0.809128 0.415525 -0.415512 +vn -0.415533 0.809115 -0.415530 +vn -0.499887 -0.006959 -0.866063 +vn -0.009159 -0.009159 -0.999916 +vn -0.006959 -0.499877 -0.866069 +vn -0.415516 -0.415523 -0.809128 +vn -0.415516 -0.415523 -0.809128 +vn -0.006959 -0.499877 -0.866069 +vn -0.006958 -0.866072 -0.499871 +vn -0.415517 -0.809130 -0.415518 +vn -0.006958 -0.866072 -0.499871 +vn -0.009161 -0.999921 -0.008565 +vn -0.499884 -0.866068 -0.006507 +vn -0.415517 -0.809130 -0.415518 +vn -0.415517 -0.809130 -0.415518 +vn -0.499884 -0.866068 -0.006507 +vn -0.866066 -0.499887 -0.006507 +vn -0.809126 -0.415523 -0.415519 +vn -0.866066 -0.499887 -0.006507 +vn -0.999921 -0.009164 -0.008568 +vn -0.866061 -0.006959 -0.499890 +vn -0.809126 -0.415523 -0.415519 +vn -0.809126 -0.415523 -0.415519 +vn -0.866061 -0.006959 -0.499890 +vn -0.499887 -0.006959 -0.866063 +vn -0.415516 -0.415523 -0.809128 +vn -0.415516 -0.415523 -0.809128 +vn -0.415517 -0.809130 -0.415518 +vn -0.809126 -0.415523 -0.415519 +vn 0.009165 0.999921 -0.008569 +vn -0.009165 0.999921 -0.008569 +vn -0.009239 0.999957 0.000000 +vn 0.009239 0.999957 0.000000 +vn 0.009161 -0.999921 -0.008565 +vn 0.009235 -0.999957 0.000000 +vn -0.009235 -0.999957 0.000000 +vn -0.009161 -0.999921 -0.008565 +vn 0.999921 0.009161 -0.008565 +vn 0.999957 0.009235 0.000000 +vn 0.999957 -0.009235 0.000000 +vn 0.999921 -0.009161 -0.008565 +vn 0.866070 -0.499881 -0.006507 +vn 0.999921 -0.009164 -0.008568 +vn 0.999957 -0.009238 0.000000 +vn 0.866033 -0.499987 0.000000 +vn 0.499877 -0.866072 -0.006507 +vn 0.866070 -0.499881 -0.006507 +vn 0.866033 -0.499987 0.000000 +vn 0.499982 -0.866036 0.000000 +vn 0.258722 -0.965952 0.000000 +vn 0.137492 -0.982126 -0.128549 +vn 0.499877 -0.866072 -0.006507 +vn 0.499982 -0.866036 0.000000 +vn 0.009159 -0.009159 -0.999916 +vn 0.006959 -0.499877 -0.866068 +vn -0.006959 -0.499877 -0.866068 +vn -0.009159 -0.009159 -0.999916 +vn 0.006959 -0.499877 -0.866068 +vn 0.006958 -0.866071 -0.499873 +vn -0.006958 -0.866071 -0.499873 +vn -0.006959 -0.499877 -0.866068 +vn 0.006958 -0.866071 -0.499873 +vn 0.137492 -0.982126 -0.128549 +vn -0.006709 -0.966108 -0.258052 +vn -0.006958 -0.866071 -0.499873 +vn 0.999921 -0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.866061 0.006959 -0.499890 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.499887 0.006959 -0.866063 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.009159 -0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.499887 0.006959 -0.866063 +vn 0.499922 0.866046 -0.006507 +vn 0.009165 0.999921 -0.008569 +vn 0.009239 0.999957 0.000000 +vn 0.500027 0.866010 0.000000 +vn 0.866070 0.499881 -0.006507 +vn 0.499922 0.866046 -0.006507 +vn 0.500027 0.866010 0.000000 +vn 0.866033 0.499987 0.000000 +vn 0.999921 0.009164 -0.008568 +vn 0.866070 0.499881 -0.006507 +vn 0.866033 0.499987 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.009165 0.999921 -0.008569 +vn 0.006959 0.866045 -0.499918 +vn -0.006959 0.866045 -0.499918 +vn -0.009165 0.999921 -0.008569 +vn 0.006959 0.866045 -0.499918 +vn 0.006959 0.499877 -0.866068 +vn -0.006959 0.499877 -0.866068 +vn -0.006959 0.866045 -0.499918 +vn 0.006959 0.499877 -0.866068 +vn 0.009159 0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn -0.006959 0.499877 -0.866068 +vn -0.866070 0.499881 -0.006507 +vn -0.982114 0.137536 -0.128596 +vn -0.965929 0.258806 0.000000 +vn -0.866033 0.499987 0.000000 +vn -0.499922 0.866046 -0.006507 +vn -0.866070 0.499881 -0.006507 +vn -0.866033 0.499987 0.000000 +vn -0.500027 0.866010 0.000000 +vn -0.009165 0.999921 -0.008569 +vn -0.499922 0.866046 -0.006507 +vn -0.500027 0.866010 0.000000 +vn -0.009239 0.999957 0.000000 +vn -0.866061 -0.006959 -0.499890 +vn -0.966085 -0.006709 -0.258139 +vn -0.982114 0.137536 -0.128596 +vn -0.866061 0.006959 -0.499890 +vn -0.499887 -0.006959 -0.866063 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 0.006959 -0.499890 +vn -0.499887 0.006959 -0.866063 +vn -0.009159 -0.009159 -0.999916 +vn -0.499887 -0.006959 -0.866063 +vn -0.499887 0.006959 -0.866063 +vn -0.009159 0.009159 -0.999916 +vn 0.999957 0.009238 0.000000 +vn 0.999957 -0.009238 0.000000 +vn 0.999921 -0.009164 -0.008568 +vn 0.999921 0.009164 -0.008568 +vn 0.009159 -0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.499877 -0.866072 -0.006507 +vn 0.137492 -0.982126 -0.128549 +vn 0.006958 -0.866071 -0.499873 +vn 0.415517 -0.809132 -0.415514 +vn 0.415517 -0.809132 -0.415514 +vn 0.006958 -0.866071 -0.499873 +vn 0.006959 -0.499877 -0.866068 +vn 0.415519 -0.415519 -0.809128 +vn 0.006959 -0.499877 -0.866068 +vn 0.009159 -0.009159 -0.999916 +vn 0.499887 -0.006959 -0.866063 +vn 0.415519 -0.415519 -0.809128 +vn 0.415519 -0.415519 -0.809128 +vn 0.499887 -0.006959 -0.866063 +vn 0.866061 -0.006959 -0.499890 +vn 0.809132 -0.415513 -0.415518 +vn 0.866061 -0.006959 -0.499890 +vn 0.999921 -0.009164 -0.008568 +vn 0.866070 -0.499881 -0.006507 +vn 0.809132 -0.415513 -0.415518 +vn 0.809132 -0.415513 -0.415518 +vn 0.866070 -0.499881 -0.006507 +vn 0.499877 -0.866072 -0.006507 +vn 0.415517 -0.809132 -0.415514 +vn 0.415517 -0.809132 -0.415514 +vn 0.415519 -0.415519 -0.809128 +vn 0.809132 -0.415513 -0.415518 +vn 0.499887 0.006959 -0.866063 +vn 0.009159 0.009159 -0.999916 +vn 0.006959 0.499877 -0.866068 +vn 0.415517 0.415520 -0.809129 +vn 0.415517 0.415520 -0.809129 +vn 0.006959 0.499877 -0.866068 +vn 0.006959 0.866045 -0.499918 +vn 0.415531 0.809115 -0.415531 +vn 0.006959 0.866045 -0.499918 +vn 0.009165 0.999921 -0.008569 +vn 0.499922 0.866046 -0.006507 +vn 0.415531 0.809115 -0.415531 +vn 0.415531 0.809115 -0.415531 +vn 0.499922 0.866046 -0.006507 +vn 0.866070 0.499881 -0.006507 +vn 0.809131 0.415513 -0.415519 +vn 0.866070 0.499881 -0.006507 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 0.006959 -0.499890 +vn 0.809131 0.415513 -0.415519 +vn 0.809131 0.415513 -0.415519 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 0.006959 -0.866063 +vn 0.415517 0.415520 -0.809129 +vn 0.415517 0.415520 -0.809129 +vn 0.415531 0.809115 -0.415531 +vn 0.809131 0.415513 -0.415519 +vn -0.006959 0.499877 -0.866068 +vn -0.009159 0.009159 -0.999916 +vn -0.499887 0.006959 -0.866063 +vn -0.415519 0.415519 -0.809128 +vn -0.415519 0.415519 -0.809128 +vn -0.499887 0.006959 -0.866063 +vn -0.866061 0.006959 -0.499890 +vn -0.809132 0.415513 -0.415518 +vn -0.866061 0.006959 -0.499890 +vn -0.982114 0.137536 -0.128596 +vn -0.866070 0.499881 -0.006507 +vn -0.809132 0.415513 -0.415518 +vn -0.809132 0.415513 -0.415518 +vn -0.866070 0.499881 -0.006507 +vn -0.499922 0.866046 -0.006507 +vn -0.415533 0.809116 -0.415528 +vn -0.499922 0.866046 -0.006507 +vn -0.009165 0.999921 -0.008569 +vn -0.006959 0.866045 -0.499918 +vn -0.415533 0.809116 -0.415528 +vn -0.415533 0.809116 -0.415528 +vn -0.006959 0.866045 -0.499918 +vn -0.006959 0.499877 -0.866068 +vn -0.415519 0.415519 -0.809128 +vn -0.415519 0.415519 -0.809128 +vn -0.809132 0.415513 -0.415518 +vn -0.415533 0.809116 -0.415528 +vn -0.499887 -0.006959 -0.866063 +vn -0.009159 -0.009159 -0.999916 +vn -0.006959 -0.499877 -0.866068 +vn -0.415517 -0.415520 -0.809129 +vn -0.415517 -0.415520 -0.809129 +vn -0.006959 -0.499877 -0.866068 +vn -0.006958 -0.866071 -0.499873 +vn -0.415516 -0.809132 -0.415515 +vn -0.006958 -0.866071 -0.499873 +vn -0.006709 -0.966108 -0.258052 +vn -0.482313 -0.843380 -0.236822 +vn -0.415516 -0.809132 -0.415515 +vn -0.415516 -0.809132 -0.415515 +vn -0.482313 -0.843380 -0.236822 +vn -0.843388 -0.482290 -0.236839 +vn -0.809131 -0.415513 -0.415518 +vn -0.843388 -0.482290 -0.236839 +vn -0.966085 -0.006709 -0.258139 +vn -0.866061 -0.006959 -0.499890 +vn -0.809131 -0.415513 -0.415518 +vn -0.809131 -0.415513 -0.415518 +vn -0.866061 -0.006959 -0.499890 +vn -0.499887 -0.006959 -0.866063 +vn -0.415517 -0.415520 -0.809129 +vn -0.415517 -0.415520 -0.809129 +vn -0.415516 -0.809132 -0.415515 +vn -0.809131 -0.415513 -0.415518 +vn 0.009165 0.999921 -0.008569 +vn -0.009165 0.999921 -0.008569 +vn -0.009239 0.999957 0.000000 +vn 0.009239 0.999957 0.000000 +vn -0.866066 -0.499887 -0.006507 +vn -0.866030 -0.499993 0.000000 +vn 0.965925 -0.258821 0.000000 +vn 0.982112 -0.137544 -0.128596 +vn -0.499884 -0.866068 -0.006507 +vn -0.499989 -0.866032 0.000000 +vn -0.866030 -0.499993 0.000000 +vn -0.866066 -0.499887 -0.006507 +vn -0.009235 -0.999957 0.000000 +vn -0.499989 -0.866032 0.000000 +vn -0.499884 -0.866068 -0.006507 +vn -0.009161 -0.999921 -0.008565 +vn 0.982112 -0.137544 -0.128596 +vn 0.982112 0.137544 -0.128596 +vn -0.866061 0.006959 -0.499890 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 0.006959 -0.499890 +vn -0.499888 0.006959 -0.866062 +vn -0.499887 -0.006959 -0.866063 +vn -0.499887 -0.006959 -0.866063 +vn -0.499888 0.006959 -0.866062 +vn -0.009159 0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.499929 0.866042 -0.006507 +vn -0.500035 0.866005 0.000000 +vn -0.009239 0.999957 0.000000 +vn -0.009165 0.999921 -0.008569 +vn -0.866066 0.499887 -0.006507 +vn -0.866030 0.499993 0.000000 +vn -0.500035 0.866005 0.000000 +vn -0.499929 0.866042 -0.006507 +vn 0.982112 0.137544 -0.128596 +vn 0.965925 0.258821 0.000000 +vn -0.866030 0.499993 0.000000 +vn -0.866066 0.499887 -0.006507 +vn -0.499884 -0.866068 -0.006507 +vn -0.415522 -0.809128 -0.415515 +vn -0.006958 -0.866072 -0.499871 +vn -0.009161 -0.999921 -0.008565 +vn -0.415522 -0.809128 -0.415515 +vn -0.415517 -0.415525 -0.809126 +vn -0.006959 -0.499876 -0.866069 +vn -0.006958 -0.866072 -0.499871 +vn -0.006959 -0.499876 -0.866069 +vn -0.415517 -0.415525 -0.809126 +vn -0.499887 -0.006959 -0.866063 +vn -0.009159 -0.009159 -0.999916 +vn -0.415517 -0.415525 -0.809126 +vn -0.809129 -0.415522 -0.415514 +vn -0.866061 -0.006959 -0.499890 +vn -0.499887 -0.006959 -0.866063 +vn -0.866061 -0.006959 -0.499890 +vn -0.809129 -0.415522 -0.415514 +vn -0.866066 -0.499887 -0.006507 +vn 0.982112 -0.137544 -0.128596 +vn -0.809129 -0.415522 -0.415514 +vn -0.415522 -0.809128 -0.415515 +vn -0.499884 -0.866068 -0.006507 +vn -0.866066 -0.499887 -0.006507 +vn -0.415522 -0.809128 -0.415515 +vn -0.809129 -0.415522 -0.415514 +vn -0.415517 -0.415525 -0.809126 +vn -0.499888 0.006959 -0.866062 +vn -0.415517 0.415526 -0.809125 +vn -0.006958 0.499879 -0.866068 +vn -0.009159 0.009159 -0.999916 +vn -0.415517 0.415526 -0.809125 +vn -0.415535 0.809112 -0.415533 +vn -0.006959 0.866044 -0.499920 +vn -0.006958 0.499879 -0.866068 +vn -0.006959 0.866044 -0.499920 +vn -0.415535 0.809112 -0.415533 +vn -0.499929 0.866042 -0.006507 +vn -0.009165 0.999921 -0.008569 +vn -0.415535 0.809112 -0.415533 +vn -0.809132 0.415519 -0.415512 +vn -0.866066 0.499887 -0.006507 +vn -0.499929 0.866042 -0.006507 +vn -0.866066 0.499887 -0.006507 +vn -0.809132 0.415519 -0.415512 +vn -0.866061 0.006959 -0.499890 +vn 0.982112 0.137544 -0.128596 +vn -0.809132 0.415519 -0.415512 +vn -0.415517 0.415526 -0.809125 +vn -0.499888 0.006959 -0.866062 +vn -0.866061 0.006959 -0.499890 +vn -0.415517 0.415526 -0.809125 +vn -0.809132 0.415519 -0.415512 +vn -0.415535 0.809112 -0.415533 +vn 0.009165 0.999921 -0.008569 +vn -0.009165 0.999921 -0.008569 +vn -0.009239 0.999957 0.000000 +vn 0.009239 0.999957 0.000000 +vn 0.006959 0.866044 -0.499920 +vn -0.006959 0.866044 -0.499920 +vn -0.009165 0.999921 -0.008569 +vn 0.009165 0.999921 -0.008569 +vn 0.006959 0.499878 -0.866068 +vn -0.006958 0.499879 -0.866068 +vn -0.006959 0.866044 -0.499920 +vn 0.006959 0.866044 -0.499920 +vn 0.009159 0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn -0.006958 0.499879 -0.866068 +vn 0.006959 0.499878 -0.866068 +vn 0.009159 -0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.006959 -0.499877 -0.866069 +vn -0.006959 -0.499876 -0.866069 +vn -0.009159 -0.009159 -0.999916 +vn 0.009159 -0.009159 -0.999916 +vn 0.006958 -0.866072 -0.499871 +vn -0.006958 -0.866072 -0.499871 +vn -0.006959 -0.499876 -0.866069 +vn 0.006959 -0.499877 -0.866069 +vn 0.009161 -0.999921 -0.008565 +vn -0.009161 -0.999921 -0.008565 +vn -0.006958 -0.866072 -0.499871 +vn 0.006958 -0.866072 -0.499871 +vn 0.009235 -0.999957 0.000000 +vn -0.009235 -0.999957 0.000000 +vn -0.009161 -0.999921 -0.008565 +vn 0.009161 -0.999921 -0.008565 +vn -0.866068 -0.499884 -0.006507 +vn -0.866031 -0.499990 0.000000 +vn -0.999957 -0.009238 0.000000 +vn -0.999921 -0.009164 -0.008568 +vn -0.499880 -0.866070 -0.006507 +vn -0.499985 -0.866034 0.000000 +vn -0.866031 -0.499990 0.000000 +vn -0.866068 -0.499884 -0.006507 +vn -0.009235 -0.999957 0.000000 +vn -0.499985 -0.866034 0.000000 +vn -0.499880 -0.866070 -0.006507 +vn -0.009161 -0.999921 -0.008565 +vn -0.999921 -0.009164 -0.008568 +vn -0.999921 0.009164 -0.008568 +vn -0.866061 0.006959 -0.499890 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 -0.006959 -0.499890 +vn -0.866061 0.006959 -0.499890 +vn -0.499887 0.006959 -0.866063 +vn -0.499887 -0.006959 -0.866063 +vn -0.499887 -0.006959 -0.866063 +vn -0.499887 0.006959 -0.866063 +vn -0.009159 0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.499925 0.866044 -0.006507 +vn -0.500031 0.866008 0.000000 +vn -0.258726 -0.965951 0.000000 +vn -0.137493 -0.982126 -0.128549 +vn -0.866068 0.499884 -0.006507 +vn -0.866031 0.499990 0.000000 +vn -0.500031 0.866008 0.000000 +vn -0.499925 0.866044 -0.006507 +vn -0.999921 0.009164 -0.008568 +vn -0.999957 0.009238 0.000000 +vn -0.866031 0.499990 0.000000 +vn -0.866068 0.499884 -0.006507 +vn -0.999957 0.009238 0.000000 +vn -0.999921 0.009164 -0.008568 +vn -0.999921 -0.009164 -0.008568 +vn -0.999957 -0.009238 0.000000 +vn -0.499880 -0.866070 -0.006507 +vn -0.415522 -0.809128 -0.415515 +vn -0.006958 -0.866072 -0.499871 +vn -0.009161 -0.999921 -0.008565 +vn -0.415522 -0.809128 -0.415515 +vn -0.415517 -0.415523 -0.809127 +vn -0.006959 -0.499877 -0.866069 +vn -0.006958 -0.866072 -0.499871 +vn -0.006959 -0.499877 -0.866069 +vn -0.415517 -0.415523 -0.809127 +vn -0.499887 -0.006959 -0.866063 +vn -0.009159 -0.009159 -0.999916 +vn -0.415517 -0.415523 -0.809127 +vn -0.809129 -0.415522 -0.415515 +vn -0.866061 -0.006959 -0.499890 +vn -0.499887 -0.006959 -0.866063 +vn -0.866061 -0.006959 -0.499890 +vn -0.809129 -0.415522 -0.415515 +vn -0.866068 -0.499884 -0.006507 +vn -0.999921 -0.009164 -0.008568 +vn -0.809129 -0.415522 -0.415515 +vn -0.415522 -0.809128 -0.415515 +vn -0.499880 -0.866070 -0.006507 +vn -0.866068 -0.499884 -0.006507 +vn -0.415522 -0.809128 -0.415515 +vn -0.809129 -0.415522 -0.415515 +vn -0.415517 -0.415523 -0.809127 +vn -0.499887 0.006959 -0.866063 +vn -0.415515 0.415524 -0.809127 +vn -0.006958 0.499877 -0.866069 +vn -0.009159 0.009159 -0.999916 +vn -0.415515 0.415524 -0.809127 +vn -0.415536 0.809113 -0.415531 +vn -0.006959 0.866044 -0.499920 +vn -0.006958 0.499877 -0.866069 +vn -0.006959 0.866044 -0.499920 +vn -0.415536 0.809113 -0.415531 +vn -0.499925 0.866044 -0.006507 +vn -0.137493 -0.982126 -0.128549 +vn -0.415536 0.809113 -0.415531 +vn -0.809132 0.415519 -0.415511 +vn -0.866068 0.499884 -0.006507 +vn -0.499925 0.866044 -0.006507 +vn -0.866068 0.499884 -0.006507 +vn -0.809132 0.415519 -0.415511 +vn -0.866061 0.006959 -0.499890 +vn -0.999921 0.009164 -0.008568 +vn -0.809132 0.415519 -0.415511 +vn -0.415515 0.415524 -0.809127 +vn -0.499887 0.006959 -0.866063 +vn -0.866061 0.006959 -0.499890 +vn -0.415515 0.415524 -0.809127 +vn -0.809132 0.415519 -0.415511 +vn -0.415536 0.809113 -0.415531 +vn -0.006959 0.866044 -0.499920 +vn -0.137493 -0.982126 -0.128549 +vn 0.137494 -0.982125 -0.128550 +vn 0.006959 0.866044 -0.499920 +vn -0.006958 0.499877 -0.866069 +vn -0.006959 0.866044 -0.499920 +vn 0.006959 0.866044 -0.499920 +vn 0.006958 0.499877 -0.866069 +vn -0.009159 0.009159 -0.999916 +vn -0.006958 0.499877 -0.866069 +vn 0.006958 0.499877 -0.866069 +vn 0.009159 0.009159 -0.999916 +vn -0.009159 -0.009159 -0.999916 +vn -0.009159 0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.009159 -0.009159 -0.999916 +vn -0.006959 -0.499877 -0.866069 +vn -0.009159 -0.009159 -0.999916 +vn 0.009159 -0.009159 -0.999916 +vn 0.006959 -0.499877 -0.866069 +vn -0.006958 -0.866072 -0.499871 +vn -0.006959 -0.499877 -0.866069 +vn 0.006959 -0.499877 -0.866069 +vn 0.006958 -0.866072 -0.499871 +vn -0.009161 -0.999921 -0.008565 +vn -0.006958 -0.866072 -0.499871 +vn 0.006958 -0.866072 -0.499871 +vn 0.009161 -0.999921 -0.008565 +vn 0.009235 -0.999957 0.000000 +vn -0.009235 -0.999957 0.000000 +vn -0.009161 -0.999921 -0.008565 +vn 0.009161 -0.999921 -0.008565 +vn 0.866066 -0.499887 -0.006507 +vn 0.999921 -0.009164 -0.008568 +vn 0.999957 -0.009238 0.000000 +vn 0.866030 -0.499993 0.000000 +vn 0.499884 -0.866068 -0.006507 +vn 0.866066 -0.499887 -0.006507 +vn 0.866030 -0.499993 0.000000 +vn 0.499989 -0.866032 0.000000 +vn 0.009235 -0.999957 0.000000 +vn 0.009161 -0.999921 -0.008565 +vn 0.499884 -0.866068 -0.006507 +vn 0.499989 -0.866032 0.000000 +vn 0.999921 -0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.866061 0.006959 -0.499890 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 -0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.499887 0.006959 -0.866063 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 -0.006959 -0.866063 +vn 0.009159 -0.009159 -0.999916 +vn 0.009159 0.009159 -0.999916 +vn 0.499887 0.006959 -0.866063 +vn 0.499929 0.866042 -0.006507 +vn 0.137494 -0.982125 -0.128550 +vn 0.258730 -0.965950 0.000000 +vn 0.500035 0.866005 0.000000 +vn 0.866066 0.499887 -0.006507 +vn 0.499929 0.866042 -0.006507 +vn 0.500035 0.866005 0.000000 +vn 0.866030 0.499993 0.000000 +vn 0.999921 0.009164 -0.008568 +vn 0.866066 0.499887 -0.006507 +vn 0.866030 0.499993 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.999957 0.009238 0.000000 +vn 0.999957 -0.009238 0.000000 +vn 0.999921 -0.009164 -0.008568 +vn 0.999921 0.009164 -0.008568 +vn 0.499884 -0.866068 -0.006507 +vn 0.009161 -0.999921 -0.008565 +vn 0.006958 -0.866072 -0.499871 +vn 0.415518 -0.809129 -0.415517 +vn 0.415518 -0.809129 -0.415517 +vn 0.006958 -0.866072 -0.499871 +vn 0.006959 -0.499877 -0.866069 +vn 0.415517 -0.415524 -0.809126 +vn 0.006959 -0.499877 -0.866069 +vn 0.009159 -0.009159 -0.999916 +vn 0.499887 -0.006959 -0.866063 +vn 0.415517 -0.415524 -0.809126 +vn 0.415517 -0.415524 -0.809126 +vn 0.499887 -0.006959 -0.866063 +vn 0.866061 -0.006959 -0.499890 +vn 0.809126 -0.415524 -0.415518 +vn 0.866061 -0.006959 -0.499890 +vn 0.999921 -0.009164 -0.008568 +vn 0.866066 -0.499887 -0.006507 +vn 0.809126 -0.415524 -0.415518 +vn 0.809126 -0.415524 -0.415518 +vn 0.866066 -0.499887 -0.006507 +vn 0.499884 -0.866068 -0.006507 +vn 0.415518 -0.809129 -0.415517 +vn 0.415518 -0.809129 -0.415517 +vn 0.415517 -0.415524 -0.809126 +vn 0.809126 -0.415524 -0.415518 +vn 0.499887 0.006959 -0.866063 +vn 0.009159 0.009159 -0.999916 +vn 0.006958 0.499877 -0.866069 +vn 0.415516 0.415525 -0.809126 +vn 0.415516 0.415525 -0.809126 +vn 0.006958 0.499877 -0.866069 +vn 0.006959 0.866044 -0.499920 +vn 0.415534 0.809114 -0.415531 +vn 0.006959 0.866044 -0.499920 +vn 0.137494 -0.982125 -0.128550 +vn 0.499929 0.866042 -0.006507 +vn 0.415534 0.809114 -0.415531 +vn 0.415534 0.809114 -0.415531 +vn 0.499929 0.866042 -0.006507 +vn 0.866066 0.499887 -0.006507 +vn 0.809128 0.415525 -0.415513 +vn 0.866066 0.499887 -0.006507 +vn 0.999921 0.009164 -0.008568 +vn 0.866061 0.006959 -0.499890 +vn 0.809128 0.415525 -0.415513 +vn 0.809128 0.415525 -0.415513 +vn 0.866061 0.006959 -0.499890 +vn 0.499887 0.006959 -0.866063 +vn 0.415516 0.415525 -0.809126 +vn 0.415516 0.415525 -0.809126 +vn 0.415534 0.809114 -0.415531 +vn 0.809128 0.415525 -0.415513 +vn 0.866054 0.499940 -0.003193 +vn 0.999981 0.004374 -0.004235 +vn 0.866052 0.003298 -0.499943 +vn 0.809132 0.415515 -0.415516 +vn 0.809132 0.415515 -0.415516 +vn 0.866052 0.003298 -0.499943 +vn 0.499942 0.003298 -0.866053 +vn 0.415511 0.415522 -0.809131 +vn 0.499942 0.003298 -0.866053 +vn 0.695549 0.718479 0.000000 +vn 0.003192 0.499943 -0.866053 +vn 0.415511 0.415522 -0.809131 +vn 0.415511 0.415522 -0.809131 +vn 0.003192 0.499943 -0.866053 +vn 0.003193 0.866030 -0.499982 +vn 0.415522 0.809119 -0.415533 +vn 0.003193 0.866030 -0.499982 +vn 0.707105 -0.000001 -0.707108 +vn 0.499981 0.866031 -0.003193 +vn 0.415522 0.809119 -0.415533 +vn 0.415522 0.809119 -0.415533 +vn 0.499981 0.866031 -0.003193 +vn 0.866054 0.499940 -0.003193 +vn 0.809132 0.415515 -0.415516 +vn 0.809132 0.415515 -0.415516 +vn 0.415511 0.415522 -0.809131 +vn 0.415522 0.809119 -0.415533 +vn 0.866052 -0.003298 -0.499943 +vn 0.999981 -0.004374 -0.004235 +vn 0.866054 -0.499940 -0.003193 +vn 0.809131 -0.415512 -0.415520 +vn 0.809131 -0.415512 -0.415520 +vn 0.866054 -0.499940 -0.003193 +vn 0.499935 -0.866057 -0.003192 +vn 0.415510 -0.809133 -0.415518 +vn 0.499935 -0.866057 -0.003192 +vn 0.999929 -0.000001 -0.011909 +vn 0.236817 -0.843379 -0.482318 +vn 0.415510 -0.809133 -0.415518 +vn 0.415510 -0.809133 -0.415518 +vn 0.236817 -0.843379 -0.482318 +vn 0.236829 -0.482297 -0.843387 +vn 0.415518 -0.415519 -0.809129 +vn 0.236829 -0.482297 -0.843387 +vn 0.999924 -0.012301 0.000000 +vn 0.499942 -0.003298 -0.866053 +vn 0.415518 -0.415519 -0.809129 +vn 0.415518 -0.415519 -0.809129 +vn 0.499942 -0.003298 -0.866053 +vn 0.866052 -0.003298 -0.499943 +vn 0.809131 -0.415512 -0.415520 +vn 0.809131 -0.415512 -0.415520 +vn 0.415510 -0.809133 -0.415518 +vn 0.415518 -0.415519 -0.809129 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.499992 -0.866030 +vn 0.003192 0.499943 -0.866053 +vn 0.695549 0.718479 0.000000 +vn 0.000000 0.499992 -0.866030 +vn 0.000000 0.866008 -0.500031 +vn 0.003193 0.866030 -0.499982 +vn 0.003192 0.499943 -0.866053 +vn 0.000000 0.866008 -0.500031 +vn 0.000000 0.000000 -1.000000 +vn 0.707105 -0.000001 -0.707108 +vn 0.003193 0.866030 -0.499982 +vn 0.999981 -0.004374 -0.004235 +vn 0.866052 -0.003298 -0.499943 +vn 0.866052 0.003298 -0.499943 +vn 0.999981 0.004374 -0.004235 +vn 0.866052 -0.003298 -0.499943 +vn 0.499942 -0.003298 -0.866053 +vn 0.499942 0.003298 -0.866053 +vn 0.866052 0.003298 -0.499943 +vn 0.499942 -0.003298 -0.866053 +vn 0.999924 -0.012301 0.000000 +vn 0.695549 0.718479 0.000000 +vn 0.499942 0.003298 -0.866053 +vn 0.999929 -0.000001 -0.011909 +vn 0.499935 -0.866057 -0.003192 +vn 0.499984 -0.866035 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.499935 -0.866057 -0.003192 +vn 0.866054 -0.499940 -0.003193 +vn 0.866032 -0.499989 0.000000 +vn 0.499984 -0.866035 0.000000 +vn 0.866054 -0.499940 -0.003193 +vn 0.999981 -0.004374 -0.004235 +vn 0.999990 -0.004392 0.000000 +vn 0.866032 -0.499989 0.000000 +vn 0.999981 -0.004374 -0.004235 +vn 0.999981 0.004374 -0.004235 +vn 0.999990 0.004392 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 0.004374 -0.004235 +vn 0.866054 0.499940 -0.003193 +vn 0.866032 0.499989 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.866054 0.499940 -0.003193 +vn 0.499981 0.866031 -0.003193 +vn 0.500030 0.866008 0.000000 +vn 0.866032 0.499989 0.000000 +vn 0.499981 0.866031 -0.003193 +vn 0.707105 -0.000001 -0.707108 +vn 1.000000 0.000000 0.000000 +vn 0.500030 0.866008 0.000000 +vn 0.866054 0.499940 -0.003193 +vn 0.999981 0.004374 -0.004235 +vn 0.866052 0.003298 -0.499943 +vn 0.809132 0.415514 -0.415516 +vn 0.809132 0.415514 -0.415516 +vn 0.866052 0.003298 -0.499943 +vn 0.499942 0.003298 -0.866053 +vn 0.415512 0.415522 -0.809130 +vn 0.499942 0.003298 -0.866053 +vn 0.004235 0.004375 -0.999981 +vn 0.003192 0.499940 -0.866054 +vn 0.415512 0.415522 -0.809130 +vn 0.415512 0.415522 -0.809130 +vn 0.003192 0.499940 -0.866054 +vn 0.003193 0.866030 -0.499982 +vn 0.415521 0.809119 -0.415535 +vn 0.003193 0.866030 -0.499982 +vn 0.004236 0.999982 -0.004236 +vn 0.499981 0.866031 -0.003193 +vn 0.415521 0.809119 -0.415535 +vn 0.415521 0.809119 -0.415535 +vn 0.499981 0.866031 -0.003193 +vn 0.866054 0.499940 -0.003193 +vn 0.809132 0.415514 -0.415516 +vn 0.809132 0.415514 -0.415516 +vn 0.415512 0.415522 -0.809130 +vn 0.415521 0.809119 -0.415535 +vn 0.866052 -0.003298 -0.499943 +vn 0.999981 -0.004374 -0.004235 +vn 0.866054 -0.499940 -0.003193 +vn 0.809130 -0.415512 -0.415522 +vn 0.809130 -0.415512 -0.415522 +vn 0.866054 -0.499940 -0.003193 +vn 0.499935 -0.866057 -0.003192 +vn 0.415510 -0.809134 -0.415517 +vn 0.499935 -0.866057 -0.003192 +vn 0.707105 -0.000001 -0.707108 +vn 0.003192 -0.866056 -0.499938 +vn 0.415510 -0.809134 -0.415517 +vn 0.415510 -0.809134 -0.415517 +vn 0.003192 -0.866056 -0.499938 +vn 0.003193 -0.499941 -0.866054 +vn 0.415516 -0.415518 -0.809130 +vn 0.003193 -0.499941 -0.866054 +vn 0.004235 -0.004375 -0.999981 +vn 0.499942 -0.003298 -0.866053 +vn 0.415516 -0.415518 -0.809130 +vn 0.415516 -0.415518 -0.809130 +vn 0.499942 -0.003298 -0.866053 +vn 0.866052 -0.003298 -0.499943 +vn 0.809130 -0.415512 -0.415522 +vn 0.809130 -0.415512 -0.415522 +vn 0.415510 -0.809134 -0.415517 +vn 0.415516 -0.415518 -0.809130 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.866033 -0.499987 +vn 0.003192 -0.866056 -0.499938 +vn 0.707105 -0.000001 -0.707108 +vn 0.000000 -0.866033 -0.499987 +vn 0.000000 -0.499990 -0.866031 +vn 0.003193 -0.499941 -0.866054 +vn 0.003192 -0.866056 -0.499938 +vn 0.000000 -0.499990 -0.866031 +vn 0.000000 -0.004392 -0.999990 +vn 0.004235 -0.004375 -0.999981 +vn 0.003193 -0.499941 -0.866054 +vn 0.000000 0.004392 -0.999990 +vn 0.000000 0.499989 -0.866032 +vn 0.003192 0.499940 -0.866054 +vn 0.004235 0.004375 -0.999981 +vn 0.000000 0.499989 -0.866032 +vn 0.000000 0.866008 -0.500031 +vn 0.003193 0.866030 -0.499982 +vn 0.003192 0.499940 -0.866054 +vn 0.000000 0.866008 -0.500031 +vn 0.000000 0.999991 -0.004253 +vn 0.004236 0.999982 -0.004236 +vn 0.003193 0.866030 -0.499982 +vn 0.004236 0.999982 -0.004236 +vn 0.000000 0.999991 -0.004253 +vn 0.000000 1.000000 0.000000 +vn 0.004253 0.999991 0.000000 +vn 0.866052 0.003298 -0.499943 +vn 0.999981 0.004374 -0.004235 +vn 0.999981 -0.004374 -0.004235 +vn 0.866052 -0.003298 -0.499943 +vn 0.499942 0.003298 -0.866053 +vn 0.866052 0.003298 -0.499943 +vn 0.866052 -0.003298 -0.499943 +vn 0.499942 -0.003298 -0.866053 +vn 0.004235 0.004375 -0.999981 +vn 0.499942 0.003298 -0.866053 +vn 0.499942 -0.003298 -0.866053 +vn 0.004235 -0.004375 -0.999981 +vn 0.000000 -0.004392 -0.999990 +vn 0.000000 0.004392 -0.999990 +vn 0.004235 0.004375 -0.999981 +vn 0.004235 -0.004375 -0.999981 +vn 0.707105 -0.000001 -0.707108 +vn 0.499935 -0.866057 -0.003192 +vn 0.499984 -0.866035 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.499935 -0.866057 -0.003192 +vn 0.866054 -0.499940 -0.003193 +vn 0.866032 -0.499989 0.000000 +vn 0.499984 -0.866035 0.000000 +vn 0.866054 -0.499940 -0.003193 +vn 0.999981 -0.004374 -0.004235 +vn 0.999990 -0.004392 0.000000 +vn 0.866032 -0.499989 0.000000 +vn 0.999981 -0.004374 -0.004235 +vn 0.999981 0.004374 -0.004235 +vn 0.999990 0.004392 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 0.004374 -0.004235 +vn 0.866054 0.499940 -0.003193 +vn 0.866032 0.499989 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.866054 0.499940 -0.003193 +vn 0.499981 0.866031 -0.003193 +vn 0.500030 0.866008 0.000000 +vn 0.866032 0.499989 0.000000 +vn 0.499981 0.866031 -0.003193 +vn 0.004236 0.999982 -0.004236 +vn 0.004253 0.999991 0.000000 +vn 0.500030 0.866008 0.000000 +vn 0.236811 -0.843380 0.482318 +vn 0.258403 -0.966032 0.003179 +vn 0.499931 -0.866059 0.003297 +vn 0.415506 -0.809135 0.415518 +vn 0.415506 -0.809135 0.415518 +vn 0.499931 -0.866059 0.003297 +vn 0.866056 -0.499936 0.003298 +vn 0.809130 -0.415514 0.415519 +vn 0.866056 -0.499936 0.003298 +vn 0.999981 -0.004374 0.004374 +vn 0.866052 -0.003298 0.499943 +vn 0.809130 -0.415514 0.415519 +vn 0.809130 -0.415514 0.415519 +vn 0.866052 -0.003298 0.499943 +vn 0.499942 -0.003298 0.866053 +vn 0.415511 -0.415521 0.809131 +vn 0.499942 -0.003298 0.866053 +vn 0.999924 -0.012301 0.000000 +vn 0.236818 -0.482300 0.843388 +vn 0.415511 -0.415521 0.809131 +vn 0.415511 -0.415521 0.809131 +vn 0.236818 -0.482300 0.843388 +vn 0.236811 -0.843380 0.482318 +vn 0.415506 -0.809135 0.415518 +vn 0.415506 -0.809135 0.415518 +vn 0.809130 -0.415514 0.415519 +vn 0.415511 -0.415521 0.809131 +vn 0.866052 0.003298 0.499943 +vn 0.999981 0.004374 0.004374 +vn 0.866057 0.499935 0.003298 +vn 0.809131 0.415512 0.415520 +vn 0.809131 0.415512 0.415520 +vn 0.866057 0.499935 0.003298 +vn 0.499977 0.866033 0.003298 +vn 0.415526 0.809119 0.415530 +vn 0.499977 0.866033 0.003298 +vn 0.999924 -0.000001 0.012301 +vn 0.236846 0.843361 0.482335 +vn 0.415526 0.809119 0.415530 +vn 0.415526 0.809119 0.415530 +vn 0.236846 0.843361 0.482335 +vn 0.236829 0.482298 0.843387 +vn 0.415517 0.415519 0.809129 +vn 0.236829 0.482298 0.843387 +vn 0.999924 0.012301 0.000000 +vn 0.499942 0.003298 0.866053 +vn 0.415517 0.415519 0.809129 +vn 0.415517 0.415519 0.809129 +vn 0.499942 0.003298 0.866053 +vn 0.866052 0.003298 0.499943 +vn 0.809131 0.415512 0.415520 +vn 0.809131 0.415512 0.415520 +vn 0.415526 0.809119 0.415530 +vn 0.415517 0.415519 0.809129 +vn 0.866056 0.499936 -0.003298 +vn 0.999981 0.004374 -0.004374 +vn 0.866050 0.003298 -0.499946 +vn 0.809128 0.415515 -0.415523 +vn 0.809128 0.415515 -0.415523 +vn 0.866050 0.003298 -0.499946 +vn 0.499948 0.003298 -0.866049 +vn 0.415516 0.415520 -0.809129 +vn 0.499948 0.003298 -0.866049 +vn 0.695571 0.718457 0.000000 +vn 0.003193 0.499942 -0.866053 +vn 0.415516 0.415520 -0.809129 +vn 0.415516 0.415520 -0.809129 +vn 0.003193 0.499942 -0.866053 +vn 0.003193 0.866029 -0.499983 +vn 0.415525 0.809118 -0.415532 +vn 0.003193 0.866029 -0.499983 +vn 0.695566 0.000000 -0.718462 +vn 0.499977 0.866033 -0.003298 +vn 0.415525 0.809118 -0.415532 +vn 0.415525 0.809118 -0.415532 +vn 0.499977 0.866033 -0.003298 +vn 0.866056 0.499936 -0.003298 +vn 0.809128 0.415515 -0.415523 +vn 0.809128 0.415515 -0.415523 +vn 0.415516 0.415520 -0.809129 +vn 0.415525 0.809118 -0.415532 +vn 0.866050 -0.003298 -0.499946 +vn 0.999981 -0.004374 -0.004374 +vn 0.866056 -0.499936 -0.003298 +vn 0.809129 -0.415515 -0.415522 +vn 0.809129 -0.415515 -0.415522 +vn 0.866056 -0.499936 -0.003298 +vn 0.499931 -0.866059 -0.003297 +vn 0.415510 -0.809134 -0.415515 +vn 0.499931 -0.866059 -0.003297 +vn 0.258403 -0.966032 -0.003179 +vn 0.236818 -0.843380 -0.482315 +vn 0.415510 -0.809134 -0.415515 +vn 0.415510 -0.809134 -0.415515 +vn 0.236818 -0.843380 -0.482315 +vn 0.236837 -0.482297 -0.843385 +vn 0.415518 -0.415519 -0.809129 +vn 0.236837 -0.482297 -0.843385 +vn 0.999924 -0.012300 0.000000 +vn 0.499948 -0.003298 -0.866049 +vn 0.415518 -0.415519 -0.809129 +vn 0.415518 -0.415519 -0.809129 +vn 0.499948 -0.003298 -0.866049 +vn 0.866050 -0.003298 -0.499946 +vn 0.809129 -0.415515 -0.415522 +vn 0.809129 -0.415515 -0.415522 +vn 0.415510 -0.809134 -0.415515 +vn 0.415518 -0.415519 -0.809129 +vn 0.695571 0.718457 0.000000 +vn 0.000000 0.258817 -0.965926 +vn 0.000000 0.499991 -0.866031 +vn 0.003193 0.499942 -0.866053 +vn 0.000000 0.499991 -0.866031 +vn 0.000000 0.866007 -0.500032 +vn 0.003193 0.866029 -0.499983 +vn 0.003193 0.499942 -0.866053 +vn 0.000000 0.866007 -0.500032 +vn 0.000000 0.000000 -1.000000 +vn 0.695566 0.000000 -0.718462 +vn 0.003193 0.866029 -0.499983 +vn 0.999924 -0.012301 0.000000 +vn 0.499942 -0.003298 0.866053 +vn 0.499942 0.003298 0.866053 +vn 0.999924 0.012301 0.000000 +vn 0.499942 -0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.866052 0.003298 0.499943 +vn 0.499942 0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.999981 -0.004374 0.004374 +vn 0.999981 0.004374 0.004374 +vn 0.866052 0.003298 0.499943 +vn 0.999981 -0.004374 -0.004374 +vn 0.866050 -0.003298 -0.499946 +vn 0.866050 0.003298 -0.499946 +vn 0.999981 0.004374 -0.004374 +vn 0.866050 -0.003298 -0.499946 +vn 0.499948 -0.003298 -0.866049 +vn 0.499948 0.003298 -0.866049 +vn 0.866050 0.003298 -0.499946 +vn 0.499948 -0.003298 -0.866049 +vn 0.999924 -0.012300 0.000000 +vn 0.695571 0.718457 0.000000 +vn 0.499948 0.003298 -0.866049 +vn 0.258403 -0.966032 0.003179 +vn 0.258403 -0.966032 -0.003179 +vn 0.499931 -0.866059 -0.003297 +vn 0.499931 -0.866059 0.003297 +vn 0.499931 -0.866059 -0.003297 +vn 0.866056 -0.499936 -0.003298 +vn 0.866056 -0.499936 0.003298 +vn 0.499931 -0.866059 0.003297 +vn 0.866056 -0.499936 -0.003298 +vn 0.999981 -0.004374 -0.004374 +vn 0.999981 -0.004374 0.004374 +vn 0.866056 -0.499936 0.003298 +vn 0.999981 -0.004374 0.004374 +vn 0.999981 -0.004374 -0.004374 +vn 0.999981 0.004374 -0.004374 +vn 0.999981 0.004374 0.004374 +vn 0.999981 0.004374 -0.004374 +vn 0.866056 0.499936 -0.003298 +vn 0.866057 0.499935 0.003298 +vn 0.999981 0.004374 0.004374 +vn 0.866056 0.499936 -0.003298 +vn 0.499977 0.866033 -0.003298 +vn 0.499977 0.866033 0.003298 +vn 0.866057 0.499935 0.003298 +vn 0.499977 0.866033 -0.003298 +vn 0.695566 0.000000 -0.718462 +vn 0.999924 -0.000001 0.012301 +vn 0.499977 0.866033 0.003298 +vn 0.236811 -0.843379 0.482321 +vn 0.999924 -0.000001 0.012301 +vn 0.499931 -0.866059 0.003297 +vn 0.415506 -0.809135 0.415519 +vn 0.415506 -0.809135 0.415519 +vn 0.499931 -0.866059 0.003297 +vn 0.866056 -0.499936 0.003298 +vn 0.809131 -0.415514 0.415519 +vn 0.866056 -0.499936 0.003298 +vn 0.999981 -0.004374 0.004374 +vn 0.866052 -0.003298 0.499943 +vn 0.809131 -0.415514 0.415519 +vn 0.809131 -0.415514 0.415519 +vn 0.866052 -0.003298 0.499943 +vn 0.499942 -0.003298 0.866053 +vn 0.415511 -0.415521 0.809131 +vn 0.499942 -0.003298 0.866053 +vn 0.999924 -0.012301 0.000000 +vn 0.236818 -0.482300 0.843388 +vn 0.415511 -0.415521 0.809131 +vn 0.415511 -0.415521 0.809131 +vn 0.236818 -0.482300 0.843388 +vn 0.236811 -0.843379 0.482321 +vn 0.415506 -0.809135 0.415519 +vn 0.415506 -0.809135 0.415519 +vn 0.809131 -0.415514 0.415519 +vn 0.415511 -0.415521 0.809131 +vn 0.866052 0.003298 0.499943 +vn 0.999981 0.004374 0.004374 +vn 0.866057 0.499935 0.003298 +vn 0.809133 0.415513 0.415516 +vn 0.809133 0.415513 0.415516 +vn 0.866057 0.499935 0.003298 +vn 0.499977 0.866033 0.003298 +vn 0.415526 0.809118 0.415531 +vn 0.499977 0.866033 0.003298 +vn 0.004236 0.999981 0.004375 +vn 0.003193 0.866030 0.499982 +vn 0.415526 0.809118 0.415531 +vn 0.415526 0.809118 0.415531 +vn 0.003193 0.866030 0.499982 +vn 0.003193 0.499943 0.866053 +vn 0.415518 0.415519 0.809129 +vn 0.003193 0.499943 0.866053 +vn 0.695549 0.718479 0.000000 +vn 0.499942 0.003298 0.866053 +vn 0.415518 0.415519 0.809129 +vn 0.415518 0.415519 0.809129 +vn 0.499942 0.003298 0.866053 +vn 0.866052 0.003298 0.499943 +vn 0.809133 0.415513 0.415516 +vn 0.809133 0.415513 0.415516 +vn 0.415526 0.809118 0.415531 +vn 0.415518 0.415519 0.809129 +vn 0.866056 0.499936 -0.003298 +vn 0.999981 0.004374 -0.004374 +vn 0.866050 0.003298 -0.499946 +vn 0.809129 0.415516 -0.415519 +vn 0.809129 0.415516 -0.415519 +vn 0.866050 0.003298 -0.499946 +vn 0.499948 0.003298 -0.866049 +vn 0.415516 0.415520 -0.809129 +vn 0.499948 0.003298 -0.866049 +vn 0.004235 0.004375 -0.999981 +vn 0.003193 0.499943 -0.866053 +vn 0.415516 0.415520 -0.809129 +vn 0.415516 0.415520 -0.809129 +vn 0.003193 0.499943 -0.866053 +vn 0.003193 0.866030 -0.499982 +vn 0.415525 0.809118 -0.415533 +vn 0.003193 0.866030 -0.499982 +vn 0.004236 0.999981 -0.004375 +vn 0.499977 0.866033 -0.003298 +vn 0.415525 0.809118 -0.415533 +vn 0.415525 0.809118 -0.415533 +vn 0.499977 0.866033 -0.003298 +vn 0.866056 0.499936 -0.003298 +vn 0.809129 0.415516 -0.415519 +vn 0.809129 0.415516 -0.415519 +vn 0.415516 0.415520 -0.809129 +vn 0.415525 0.809118 -0.415533 +vn 0.866050 -0.003298 -0.499946 +vn 0.999981 -0.004374 -0.004374 +vn 0.866056 -0.499936 -0.003298 +vn 0.809128 -0.415515 -0.415523 +vn 0.809128 -0.415515 -0.415523 +vn 0.866056 -0.499936 -0.003298 +vn 0.499931 -0.866059 -0.003297 +vn 0.415510 -0.809133 -0.415518 +vn 0.499931 -0.866059 -0.003297 +vn 0.695566 0.000000 -0.718462 +vn 0.003192 -0.866056 -0.499938 +vn 0.415510 -0.809133 -0.415518 +vn 0.415510 -0.809133 -0.415518 +vn 0.003192 -0.866056 -0.499938 +vn 0.003193 -0.499942 -0.866053 +vn 0.415518 -0.415519 -0.809128 +vn 0.003193 -0.499942 -0.866053 +vn 0.004235 -0.004375 -0.999981 +vn 0.499948 -0.003298 -0.866049 +vn 0.415518 -0.415519 -0.809128 +vn 0.415518 -0.415519 -0.809128 +vn 0.499948 -0.003298 -0.866049 +vn 0.866050 -0.003298 -0.499946 +vn 0.809128 -0.415515 -0.415523 +vn 0.809128 -0.415515 -0.415523 +vn 0.415510 -0.809133 -0.415518 +vn 0.415518 -0.415519 -0.809128 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -0.866033 -0.499987 +vn 0.003192 -0.866056 -0.499938 +vn 0.695566 0.000000 -0.718462 +vn 0.000000 -0.866033 -0.499987 +vn 0.000000 -0.499991 -0.866031 +vn 0.003193 -0.499942 -0.866053 +vn 0.003192 -0.866056 -0.499938 +vn 0.000000 -0.499991 -0.866031 +vn 0.000000 -0.004392 -0.999990 +vn 0.004235 -0.004375 -0.999981 +vn 0.003193 -0.499942 -0.866053 +vn 0.000000 0.004392 -0.999990 +vn 0.000000 0.499992 -0.866030 +vn 0.003193 0.499943 -0.866053 +vn 0.004235 0.004375 -0.999981 +vn 0.000000 0.499992 -0.866030 +vn 0.000000 0.866008 -0.500031 +vn 0.003193 0.866030 -0.499982 +vn 0.003193 0.499943 -0.866053 +vn 0.000000 0.866008 -0.500031 +vn 0.000000 0.999990 -0.004393 +vn 0.004236 0.999981 -0.004375 +vn 0.003193 0.866030 -0.499982 +vn 0.000000 0.999990 -0.004393 +vn 0.000000 0.999990 0.004393 +vn 0.004236 0.999981 0.004375 +vn 0.004236 0.999981 -0.004375 +vn 0.000000 0.999990 0.004393 +vn 0.000000 0.866008 0.500031 +vn 0.003193 0.866030 0.499982 +vn 0.004236 0.999981 0.004375 +vn 0.000000 0.866008 0.500031 +vn 0.000000 0.499992 0.866030 +vn 0.003193 0.499943 0.866053 +vn 0.003193 0.866030 0.499982 +vn 0.000000 0.499992 0.866030 +vn 0.000000 1.000000 0.000000 +vn 0.695549 0.718479 0.000000 +vn 0.003193 0.499943 0.866053 +vn 0.999924 -0.012301 0.000000 +vn 0.499942 -0.003298 0.866053 +vn 0.499942 0.003298 0.866053 +vn 0.695549 0.718479 0.000000 +vn 0.499942 -0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.866052 0.003298 0.499943 +vn 0.499942 0.003298 0.866053 +vn 0.866052 -0.003298 0.499943 +vn 0.999981 -0.004374 0.004374 +vn 0.999981 0.004374 0.004374 +vn 0.866052 0.003298 0.499943 +vn 0.999981 -0.004374 -0.004374 +vn 0.866050 -0.003298 -0.499946 +vn 0.866050 0.003298 -0.499946 +vn 0.999981 0.004374 -0.004374 +vn 0.866050 -0.003298 -0.499946 +vn 0.499948 -0.003298 -0.866049 +vn 0.499948 0.003298 -0.866049 +vn 0.866050 0.003298 -0.499946 +vn 0.499948 -0.003298 -0.866049 +vn 0.004235 -0.004375 -0.999981 +vn 0.004235 0.004375 -0.999981 +vn 0.499948 0.003298 -0.866049 +vn 0.000000 -0.004392 -0.999990 +vn 0.000000 0.004392 -0.999990 +vn 0.004235 0.004375 -0.999981 +vn 0.004235 -0.004375 -0.999981 +vn 0.695566 0.000000 -0.718462 +vn 0.499931 -0.866059 -0.003297 +vn 0.499931 -0.866059 0.003297 +vn 0.999924 -0.000001 0.012301 +vn 0.499931 -0.866059 -0.003297 +vn 0.866056 -0.499936 -0.003298 +vn 0.866056 -0.499936 0.003298 +vn 0.499931 -0.866059 0.003297 +vn 0.866056 -0.499936 -0.003298 +vn 0.999981 -0.004374 -0.004374 +vn 0.999981 -0.004374 0.004374 +vn 0.866056 -0.499936 0.003298 +vn 0.999981 0.004374 0.004374 +vn 0.999981 -0.004374 0.004374 +vn 0.999981 -0.004374 -0.004374 +vn 0.999981 0.004374 -0.004374 +vn 0.999981 0.004374 -0.004374 +vn 0.866056 0.499936 -0.003298 +vn 0.866057 0.499935 0.003298 +vn 0.999981 0.004374 0.004374 +vn 0.866056 0.499936 -0.003298 +vn 0.499977 0.866033 -0.003298 +vn 0.499977 0.866033 0.003298 +vn 0.866057 0.499935 0.003298 +vn 0.499977 0.866033 -0.003298 +vn 0.004236 0.999981 -0.004375 +vn 0.004236 0.999981 0.004375 +vn 0.499977 0.866033 0.003298 +vn 0.236819 -0.843379 0.482316 +vn 0.258404 -0.966032 0.003179 +vn 0.499931 -0.866059 0.003297 +vn 0.415509 -0.809134 0.415517 +vn 0.415509 -0.809134 0.415517 +vn 0.499931 -0.866059 0.003297 +vn 0.866057 -0.499935 0.003298 +vn 0.809128 -0.415516 0.415522 +vn 0.866057 -0.499935 0.003298 +vn 0.999981 -0.004374 0.004374 +vn 0.866048 -0.003298 0.499950 +vn 0.809128 -0.415516 0.415522 +vn 0.809128 -0.415516 0.415522 +vn 0.866048 -0.003298 0.499950 +vn 0.499948 -0.003298 0.866049 +vn 0.415516 -0.415520 0.809129 +vn 0.499948 -0.003298 0.866049 +vn 0.999924 -0.012300 0.000000 +vn 0.236835 -0.482298 0.843385 +vn 0.415516 -0.415520 0.809129 +vn 0.415516 -0.415520 0.809129 +vn 0.236835 -0.482298 0.843385 +vn 0.236819 -0.843379 0.482316 +vn 0.415509 -0.809134 0.415517 +vn 0.415509 -0.809134 0.415517 +vn 0.809128 -0.415516 0.415522 +vn 0.415516 -0.415520 0.809129 +vn 0.866048 0.003298 0.499950 +vn 0.999981 0.004374 0.004374 +vn 0.866056 0.499936 0.003298 +vn 0.809128 0.415515 0.415523 +vn 0.809128 0.415515 0.415523 +vn 0.866056 0.499936 0.003298 +vn 0.499977 0.866033 0.003298 +vn 0.415526 0.809119 0.415530 +vn 0.499977 0.866033 0.003298 +vn 0.004236 0.999981 0.004375 +vn 0.003193 0.866029 0.499983 +vn 0.415526 0.809119 0.415530 +vn 0.415526 0.809119 0.415530 +vn 0.003193 0.866029 0.499983 +vn 0.003193 0.499942 0.866053 +vn 0.415518 0.415519 0.809129 +vn 0.003193 0.499942 0.866053 +vn 0.695571 0.718457 0.000000 +vn 0.499948 0.003298 0.866049 +vn 0.415518 0.415519 0.809129 +vn 0.415518 0.415519 0.809129 +vn 0.499948 0.003298 0.866049 +vn 0.866048 0.003298 0.499950 +vn 0.809128 0.415515 0.415523 +vn 0.809128 0.415515 0.415523 +vn 0.415526 0.809119 0.415530 +vn 0.415518 0.415519 0.809129 +vn 0.866056 0.499936 -0.003298 +vn 0.999981 0.004374 -0.004374 +vn 0.866048 0.003298 -0.499950 +vn 0.809128 0.415516 -0.415523 +vn 0.809128 0.415516 -0.415523 +vn 0.866048 0.003298 -0.499950 +vn 0.499948 0.003298 -0.866049 +vn 0.415516 0.415520 -0.809129 +vn 0.499948 0.003298 -0.866049 +vn 0.004235 0.004375 -0.999981 +vn 0.003193 0.499942 -0.866053 +vn 0.415516 0.415520 -0.809129 +vn 0.415516 0.415520 -0.809129 +vn 0.003193 0.499942 -0.866053 +vn 0.003193 0.866029 -0.499983 +vn 0.415526 0.809118 -0.415531 +vn 0.003193 0.866029 -0.499983 +vn 0.004236 0.999981 -0.004375 +vn 0.499977 0.866033 -0.003298 +vn 0.415526 0.809118 -0.415531 +vn 0.415526 0.809118 -0.415531 +vn 0.499977 0.866033 -0.003298 +vn 0.866056 0.499936 -0.003298 +vn 0.809128 0.415516 -0.415523 +vn 0.809128 0.415516 -0.415523 +vn 0.415516 0.415520 -0.809129 +vn 0.415526 0.809118 -0.415531 +vn 0.866048 -0.003298 -0.499950 +vn 0.999981 -0.004374 -0.004374 +vn 0.866056 -0.499936 -0.003298 +vn 0.809128 -0.415515 -0.415522 +vn 0.809128 -0.415515 -0.415522 +vn 0.866056 -0.499936 -0.003298 +vn 0.499931 -0.866059 -0.003297 +vn 0.415512 -0.809134 -0.415515 +vn 0.499931 -0.866059 -0.003297 +vn 0.130130 -0.982344 -0.134414 +vn 0.003192 -0.866056 -0.499937 +vn 0.415512 -0.809134 -0.415515 +vn 0.415512 -0.809134 -0.415515 +vn 0.003192 -0.866056 -0.499937 +vn 0.003193 -0.499942 -0.866053 +vn 0.415518 -0.415519 -0.809129 +vn 0.003193 -0.499942 -0.866053 +vn 0.004235 -0.004375 -0.999981 +vn 0.499948 -0.003298 -0.866049 +vn 0.415518 -0.415519 -0.809129 +vn 0.415518 -0.415519 -0.809129 +vn 0.499948 -0.003298 -0.866049 +vn 0.866048 -0.003298 -0.499950 +vn 0.809128 -0.415515 -0.415522 +vn 0.809128 -0.415515 -0.415522 +vn 0.415512 -0.809134 -0.415515 +vn 0.415518 -0.415519 -0.809129 +vn 0.130130 -0.982344 -0.134414 +vn 0.000000 -0.965951 -0.258727 +vn 0.000000 -0.866033 -0.499986 +vn 0.003192 -0.866056 -0.499937 +vn 0.000000 -0.866033 -0.499986 +vn 0.000000 -0.499991 -0.866031 +vn 0.003193 -0.499942 -0.866053 +vn 0.003192 -0.866056 -0.499937 +vn 0.000000 -0.499991 -0.866031 +vn 0.000000 -0.004392 -0.999990 +vn 0.004235 -0.004375 -0.999981 +vn 0.003193 -0.499942 -0.866053 +vn 0.000000 0.004392 -0.999990 +vn 0.000000 0.499991 -0.866031 +vn 0.003193 0.499942 -0.866053 +vn 0.004235 0.004375 -0.999981 +vn 0.000000 0.499991 -0.866031 +vn 0.000000 0.866007 -0.500032 +vn 0.003193 0.866029 -0.499983 +vn 0.003193 0.499942 -0.866053 +vn 0.000000 0.866007 -0.500032 +vn 0.000000 0.999990 -0.004392 +vn 0.004236 0.999981 -0.004375 +vn 0.003193 0.866029 -0.499983 +vn 0.000000 0.999990 -0.004392 +vn 0.000000 0.999990 0.004392 +vn 0.004236 0.999981 0.004375 +vn 0.004236 0.999981 -0.004375 +vn 0.000000 0.999990 0.004392 +vn 0.000000 0.866007 0.500032 +vn 0.003193 0.866029 0.499983 +vn 0.004236 0.999981 0.004375 +vn 0.000000 0.866007 0.500032 +vn 0.000000 0.499991 0.866031 +vn 0.003193 0.499942 0.866053 +vn 0.003193 0.866029 0.499983 +vn 0.000000 0.499991 0.866031 +vn 0.000000 0.258817 0.965926 +vn 0.695571 0.718457 0.000000 +vn 0.003193 0.499942 0.866053 +vn 0.999924 -0.012300 0.000000 +vn 0.499948 -0.003298 0.866049 +vn 0.499948 0.003298 0.866049 +vn 0.695571 0.718457 0.000000 +vn 0.499948 -0.003298 0.866049 +vn 0.866048 -0.003298 0.499950 +vn 0.866048 0.003298 0.499950 +vn 0.499948 0.003298 0.866049 +vn 0.866048 -0.003298 0.499950 +vn 0.999981 -0.004374 0.004374 +vn 0.999981 0.004374 0.004374 +vn 0.866048 0.003298 0.499950 +vn 0.999981 -0.004374 -0.004374 +vn 0.866048 -0.003298 -0.499950 +vn 0.866048 0.003298 -0.499950 +vn 0.999981 0.004374 -0.004374 +vn 0.866048 -0.003298 -0.499950 +vn 0.499948 -0.003298 -0.866049 +vn 0.499948 0.003298 -0.866049 +vn 0.866048 0.003298 -0.499950 +vn 0.499948 -0.003298 -0.866049 +vn 0.004235 -0.004375 -0.999981 +vn 0.004235 0.004375 -0.999981 +vn 0.499948 0.003298 -0.866049 +vn 0.004235 -0.004375 -0.999981 +vn 0.000000 -0.004392 -0.999990 +vn 0.000000 0.004392 -0.999990 +vn 0.004235 0.004375 -0.999981 +vn 0.258404 -0.966032 0.003179 +vn 0.130130 -0.982344 -0.134414 +vn 0.499931 -0.866059 -0.003297 +vn 0.499931 -0.866059 0.003297 +vn 0.499931 -0.866059 -0.003297 +vn 0.866056 -0.499936 -0.003298 +vn 0.866057 -0.499935 0.003298 +vn 0.499931 -0.866059 0.003297 +vn 0.866056 -0.499936 -0.003298 +vn 0.999981 -0.004374 -0.004374 +vn 0.999981 -0.004374 0.004374 +vn 0.866057 -0.499935 0.003298 +vn 0.999981 -0.004374 0.004374 +vn 0.999981 -0.004374 -0.004374 +vn 0.999981 0.004374 -0.004374 +vn 0.999981 0.004374 0.004374 +vn 0.999981 0.004374 -0.004374 +vn 0.866056 0.499936 -0.003298 +vn 0.866056 0.499936 0.003298 +vn 0.999981 0.004374 0.004374 +vn 0.866056 0.499936 -0.003298 +vn 0.499977 0.866033 -0.003298 +vn 0.499977 0.866033 0.003298 +vn 0.866056 0.499936 0.003298 +vn 0.499977 0.866033 -0.003298 +vn 0.004236 0.999981 -0.004375 +vn 0.004236 0.999981 0.004375 +vn 0.499977 0.866033 0.003298 +vn 0.866054 0.499940 -0.003193 +vn 0.999981 0.004374 -0.004235 +vn 0.866052 0.003298 -0.499943 +vn 0.809130 0.415514 -0.415520 +vn 0.809130 0.415514 -0.415520 +vn 0.866052 0.003298 -0.499943 +vn 0.499942 0.003298 -0.866053 +vn 0.415511 0.415521 -0.809131 +vn 0.499942 0.003298 -0.866053 +vn 0.999924 0.012301 0.000000 +vn 0.236818 0.482300 -0.843388 +vn 0.415511 0.415521 -0.809131 +vn 0.415511 0.415521 -0.809131 +vn 0.236818 0.482300 -0.843388 +vn 0.236839 0.843361 -0.482338 +vn 0.415522 0.809120 -0.415532 +vn 0.236839 0.843361 -0.482338 +vn 0.999929 -0.000001 -0.011909 +vn 0.499981 0.866031 -0.003193 +vn 0.415522 0.809120 -0.415532 +vn 0.415522 0.809120 -0.415532 +vn 0.499981 0.866031 -0.003193 +vn 0.866054 0.499940 -0.003193 +vn 0.809130 0.415514 -0.415520 +vn 0.809130 0.415514 -0.415520 +vn 0.415511 0.415521 -0.809131 +vn 0.415522 0.809120 -0.415532 +vn 0.866052 -0.003298 -0.499943 +vn 0.999981 -0.004374 -0.004235 +vn 0.866054 -0.499940 -0.003193 +vn 0.809131 -0.415512 -0.415519 +vn 0.809131 -0.415512 -0.415519 +vn 0.866054 -0.499940 -0.003193 +vn 0.499935 -0.866057 -0.003192 +vn 0.415510 -0.809134 -0.415515 +vn 0.499935 -0.866057 -0.003192 +vn 0.258420 -0.966028 -0.003078 +vn 0.236818 -0.843380 -0.482315 +vn 0.415510 -0.809134 -0.415515 +vn 0.415510 -0.809134 -0.415515 +vn 0.236818 -0.843380 -0.482315 +vn 0.236829 -0.482298 -0.843387 +vn 0.415517 -0.415519 -0.809129 +vn 0.236829 -0.482298 -0.843387 +vn 0.999924 -0.012301 0.000000 +vn 0.499942 -0.003298 -0.866053 +vn 0.415517 -0.415519 -0.809129 +vn 0.415517 -0.415519 -0.809129 +vn 0.499942 -0.003298 -0.866053 +vn 0.866052 -0.003298 -0.499943 +vn 0.809131 -0.415512 -0.415519 +vn 0.809131 -0.415512 -0.415519 +vn 0.415510 -0.809134 -0.415515 +vn 0.415517 -0.415519 -0.809129 +vn 0.999981 -0.004374 -0.004235 +vn 0.866052 -0.003298 -0.499943 +vn 0.866052 0.003298 -0.499943 +vn 0.999981 0.004374 -0.004235 +vn 0.866052 -0.003298 -0.499943 +vn 0.499942 -0.003298 -0.866053 +vn 0.499942 0.003298 -0.866053 +vn 0.866052 0.003298 -0.499943 +vn 0.499942 -0.003298 -0.866053 +vn 0.999924 -0.012301 0.000000 +vn 0.999924 0.012301 0.000000 +vn 0.499942 0.003298 -0.866053 +vn 0.258691 -0.965960 0.000000 +vn 0.258420 -0.966028 -0.003078 +vn 0.499935 -0.866057 -0.003192 +vn 0.258691 -0.965960 0.000000 +vn 0.499935 -0.866057 -0.003192 +vn 0.866054 -0.499940 -0.003193 +vn 0.707228 -0.706986 0.000000 +vn 0.707228 -0.706986 0.000000 +vn 0.866054 -0.499940 -0.003193 +vn 0.999981 -0.004374 -0.004235 +vn 0.965920 -0.258840 0.000000 +vn 0.965920 -0.258840 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.999981 -0.004374 -0.004235 +vn 0.999981 0.004374 -0.004235 +vn 0.999981 0.004374 -0.004235 +vn 0.866054 0.499940 -0.003193 +vn 0.866032 0.499989 0.000000 +vn 0.999990 0.004392 0.000000 +vn 0.866054 0.499940 -0.003193 +vn 0.499981 0.866031 -0.003193 +vn 0.500030 0.866008 0.000000 +vn 0.866032 0.499989 0.000000 +vn 0.499981 0.866031 -0.003193 +vn 0.999929 -0.000001 -0.011909 +vn 1.000000 0.000000 0.000000 +vn 0.500030 0.866008 0.000000 +vn 0.236817 -0.843379 -0.482318 +vn 0.999929 -0.000001 -0.011909 +vn 1.000000 0.000000 0.000015 +vn 0.236829 -0.482297 -0.843387 +vn 0.236817 -0.843379 -0.482318 +vn 1.000000 0.000000 0.000015 +vn 0.999924 -0.012301 0.000000 +vn 0.236829 -0.482297 -0.843387 +vn 1.000000 0.000000 0.000015 +vn 0.236846 0.843361 0.482335 +vn 0.999924 -0.000001 0.012301 +vn 1.000000 0.000000 0.000015 +vn 0.236829 0.482298 0.843387 +vn 0.236846 0.843361 0.482335 +vn 1.000000 0.000000 0.000015 +vn 0.999924 0.012301 0.000000 +vn 0.236829 0.482298 0.843387 +vn 1.000000 0.000000 0.000015 +vn 0.236818 -0.482300 0.843388 +vn 0.999924 -0.012301 0.000000 +vn 1.000000 0.000000 0.000015 +vn 0.236811 -0.843379 0.482321 +vn 0.236818 -0.482300 0.843388 +vn 1.000000 0.000000 0.000015 +vn 0.999924 -0.000001 0.012301 +vn 0.236811 -0.843379 0.482321 +vn 1.000000 0.000000 0.000015 +vn 0.236818 0.482300 -0.843388 +vn 0.999924 0.012301 0.000000 +vn 1.000000 0.000000 0.000015 +vn 0.236839 0.843361 -0.482338 +vn 0.236818 0.482300 -0.843388 +vn 1.000000 0.000000 0.000015 +vn 0.999929 -0.000001 -0.011909 +vn 0.236839 0.843361 -0.482338 +vn 1.000000 0.000000 0.000015 +vn 0.867143 0.498048 -0.003271 +vn 0.999982 0.004306 -0.004236 +vn 0.866057 0.003297 -0.499935 +vn 0.809132 0.415510 -0.415520 +vn 0.809132 0.415510 -0.415520 +vn 0.866057 0.003297 -0.499935 +vn 0.499979 0.003298 -0.866031 +vn 0.415525 0.415523 -0.809123 +vn 0.499979 0.003298 -0.866031 +vn 0.004237 0.004306 -0.999982 +vn 0.003271 0.498083 -0.867123 +vn 0.415525 0.415523 -0.809123 +vn 0.415525 0.415523 -0.809123 +vn 0.003271 0.498083 -0.867123 +vn 0.003298 0.866056 -0.499936 +vn 0.415517 0.809133 -0.415512 +vn 0.003298 0.866056 -0.499936 +vn 0.004374 0.999981 -0.004374 +vn 0.499943 0.866052 -0.003298 +vn 0.415517 0.809133 -0.415512 +vn 0.415517 0.809133 -0.415512 +vn 0.499943 0.866052 -0.003298 +vn 0.867143 0.498048 -0.003271 +vn 0.809132 0.415510 -0.415520 +vn 0.809132 0.415510 -0.415520 +vn 0.415525 0.415523 -0.809123 +vn 0.415517 0.809133 -0.415512 +vn 0.866057 -0.003297 -0.499935 +vn 0.999981 -0.004375 -0.004235 +vn 0.866050 -0.499947 -0.003193 +vn 0.809129 -0.415515 -0.415521 +vn 0.809129 -0.415515 -0.415521 +vn 0.866050 -0.499947 -0.003193 +vn 0.499953 -0.866047 -0.003193 +vn 0.415521 -0.809132 -0.415509 +vn 0.499953 -0.866047 -0.003193 +vn 0.004236 -0.999982 -0.004236 +vn 0.003193 -0.866048 -0.499951 +vn 0.415521 -0.809132 -0.415509 +vn 0.415521 -0.809132 -0.415509 +vn 0.003193 -0.866048 -0.499951 +vn 0.003193 -0.499980 -0.866031 +vn 0.415529 -0.415525 -0.809120 +vn 0.003193 -0.499980 -0.866031 +vn 0.004235 -0.004375 -0.999981 +vn 0.499979 -0.003298 -0.866031 +vn 0.415529 -0.415525 -0.809120 +vn 0.415529 -0.415525 -0.809120 +vn 0.499979 -0.003298 -0.866031 +vn 0.866057 -0.003297 -0.499935 +vn 0.809129 -0.415515 -0.415521 +vn 0.809129 -0.415515 -0.415521 +vn 0.415521 -0.809132 -0.415509 +vn 0.415529 -0.415525 -0.809120 +vn 0.000000 -0.999991 -0.004253 +vn 0.000000 -0.866025 -0.500001 +vn 0.003193 -0.866048 -0.499951 +vn 0.004236 -0.999982 -0.004236 +vn 0.000000 -0.866025 -0.500001 +vn 0.000000 -0.500030 -0.866008 +vn 0.003193 -0.499980 -0.866031 +vn 0.003193 -0.866048 -0.499951 +vn 0.000000 -0.500030 -0.866008 +vn 0.000000 -0.004392 -0.999990 +vn 0.004235 -0.004375 -0.999981 +vn 0.003193 -0.499980 -0.866031 +vn 0.004235 -0.004375 -0.999981 +vn 0.000000 -0.004392 -0.999990 +vn 0.000000 0.001329 -0.999999 +vn 0.004237 0.004306 -0.999982 +vn 0.000000 0.001329 -0.999999 +vn 0.000000 0.437230 -0.899350 +vn 0.003271 0.498083 -0.867123 +vn 0.004237 0.004306 -0.999982 +vn 0.000000 0.437230 -0.899350 +vn 0.000000 0.866033 -0.499987 +vn 0.003298 0.866056 -0.499936 +vn 0.003271 0.498083 -0.867123 +vn 0.000000 0.866033 -0.499987 +vn 0.000000 0.999990 -0.004392 +vn 0.004374 0.999981 -0.004374 +vn 0.003298 0.866056 -0.499936 +vn 0.004392 0.999990 0.000000 +vn 0.499993 0.866029 0.000000 +vn 0.499943 0.866052 -0.003298 +vn 0.004374 0.999981 -0.004374 +vn 0.499993 0.866029 0.000000 +vn 0.899367 0.437194 0.000000 +vn 0.867143 0.498048 -0.003271 +vn 0.499943 0.866052 -0.003298 +vn 0.899367 0.437194 0.000000 +vn 0.999999 0.001329 0.000000 +vn 0.999982 0.004306 -0.004236 +vn 0.867143 0.498048 -0.003271 +vn 0.999990 -0.004392 0.000000 +vn 0.866028 -0.499996 0.000000 +vn 0.866050 -0.499947 -0.003193 +vn 0.999981 -0.004375 -0.004235 +vn 0.866028 -0.499996 0.000000 +vn 0.500002 -0.866024 0.000000 +vn 0.499953 -0.866047 -0.003193 +vn 0.866050 -0.499947 -0.003193 +vn 0.500002 -0.866024 0.000000 +vn 0.004253 -0.999991 0.000000 +vn 0.004236 -0.999982 -0.004236 +vn 0.499953 -0.866047 -0.003193 +vn 0.004253 -0.999991 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -0.999991 -0.004253 +vn 0.004236 -0.999982 -0.004236 +vn 0.999982 0.004306 -0.004236 +vn 0.999999 0.001329 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.999981 -0.004375 -0.004235 +vn 0.866057 0.003297 -0.499935 +vn 0.999982 0.004306 -0.004236 +vn 0.999981 -0.004375 -0.004235 +vn 0.866057 -0.003297 -0.499935 +vn 0.499979 0.003298 -0.866031 +vn 0.866057 0.003297 -0.499935 +vn 0.866057 -0.003297 -0.499935 +vn 0.499979 -0.003298 -0.866031 +vn 0.004237 0.004306 -0.999982 +vn 0.499979 0.003298 -0.866031 +vn 0.499979 -0.003298 -0.866031 +vn 0.004235 -0.004375 -0.999981 +vn -0.866042 -0.003298 0.499961 +vn -0.999981 -0.004374 0.004374 +vn -0.866049 -0.499948 0.003298 +vn -0.809120 -0.415529 0.415524 +vn -0.809120 -0.415529 0.415524 +vn -0.866049 -0.499948 0.003298 +vn -0.499938 -0.866055 0.003298 +vn -0.415520 -0.809129 0.415515 +vn -0.499938 -0.866055 0.003298 +vn -0.258411 -0.966030 0.003179 +vn -0.236828 -0.843376 0.482317 +vn -0.415520 -0.809129 0.415515 +vn -0.415520 -0.809129 0.415515 +vn -0.236828 -0.843376 0.482317 +vn -0.236844 -0.482300 0.843381 +vn -0.415524 -0.415524 0.809123 +vn -0.236844 -0.482300 0.843381 +vn -0.999924 -0.012300 0.000000 +vn -0.499955 -0.003298 0.866045 +vn -0.415524 -0.415524 0.809123 +vn -0.415524 -0.415524 0.809123 +vn -0.499955 -0.003298 0.866045 +vn -0.866042 -0.003298 0.499961 +vn -0.809120 -0.415529 0.415524 +vn -0.809120 -0.415529 0.415524 +vn -0.415520 -0.809129 0.415515 +vn -0.415524 -0.415524 0.809123 +vn -0.003193 0.866029 0.499983 +vn -0.004236 0.999981 0.004375 +vn -0.499984 0.866029 0.003298 +vn -0.415535 0.809114 0.415531 +vn -0.415535 0.809114 0.415531 +vn -0.499984 0.866029 0.003298 +vn -0.866049 0.499948 0.003298 +vn -0.809119 0.415533 0.415523 +vn -0.866049 0.499948 0.003298 +vn -0.999981 0.004374 0.004374 +vn -0.866042 0.003298 0.499961 +vn -0.809119 0.415533 0.415523 +vn -0.809119 0.415533 0.415523 +vn -0.866042 0.003298 0.499961 +vn -0.499955 0.003298 0.866045 +vn -0.415521 0.415528 0.809122 +vn -0.499955 0.003298 0.866045 +vn -0.695571 0.718457 0.000000 +vn -0.003193 0.499942 0.866053 +vn -0.415521 0.415528 0.809122 +vn -0.415521 0.415528 0.809122 +vn -0.003193 0.499942 0.866053 +vn -0.003193 0.866029 0.499983 +vn -0.415535 0.809114 0.415531 +vn -0.415535 0.809114 0.415531 +vn -0.809119 0.415533 0.415523 +vn -0.415521 0.415528 0.809122 +vn -0.003193 0.499942 -0.866053 +vn -0.004235 0.004375 -0.999981 +vn -0.499948 0.003298 -0.866049 +vn -0.415518 0.415519 -0.809129 +vn -0.415518 0.415519 -0.809129 +vn -0.499948 0.003298 -0.866049 +vn -0.866048 0.003298 -0.499950 +vn -0.809128 0.415515 -0.415523 +vn -0.866048 0.003298 -0.499950 +vn -0.999981 0.004374 -0.004374 +vn -0.866050 0.499947 -0.003297 +vn -0.809128 0.415515 -0.415523 +vn -0.809128 0.415515 -0.415523 +vn -0.866050 0.499947 -0.003297 +vn -0.499984 0.866029 -0.003298 +vn -0.415527 0.809118 -0.415530 +vn -0.499984 0.866029 -0.003298 +vn -0.004236 0.999981 -0.004375 +vn -0.003193 0.866029 -0.499983 +vn -0.415527 0.809118 -0.415530 +vn -0.415527 0.809118 -0.415530 +vn -0.003193 0.866029 -0.499983 +vn -0.003193 0.499942 -0.866053 +vn -0.415518 0.415519 -0.809129 +vn -0.415518 0.415519 -0.809129 +vn -0.809128 0.415515 -0.415523 +vn -0.415527 0.809118 -0.415530 +vn -0.003192 -0.866056 -0.499937 +vn -0.130133 -0.982343 -0.134416 +vn -0.499938 -0.866055 -0.003297 +vn -0.415511 -0.809133 -0.415517 +vn -0.415511 -0.809133 -0.415517 +vn -0.499938 -0.866055 -0.003297 +vn -0.866049 -0.499948 -0.003297 +vn -0.809128 -0.415516 -0.415522 +vn -0.866049 -0.499948 -0.003297 +vn -0.999981 -0.004374 -0.004374 +vn -0.866048 -0.003298 -0.499950 +vn -0.809128 -0.415516 -0.415522 +vn -0.809128 -0.415516 -0.415522 +vn -0.866048 -0.003298 -0.499950 +vn -0.499948 -0.003298 -0.866049 +vn -0.415516 -0.415520 -0.809129 +vn -0.499948 -0.003298 -0.866049 +vn -0.004235 -0.004375 -0.999981 +vn -0.003193 -0.499942 -0.866053 +vn -0.415516 -0.415520 -0.809129 +vn -0.415516 -0.415520 -0.809129 +vn -0.003193 -0.499942 -0.866053 +vn -0.003192 -0.866056 -0.499937 +vn -0.415511 -0.809133 -0.415517 +vn -0.415511 -0.809133 -0.415517 +vn -0.809128 -0.415516 -0.415522 +vn -0.415516 -0.415520 -0.809129 +vn 0.000000 -0.866033 -0.499986 +vn 0.000000 -0.965951 -0.258727 +vn -0.130133 -0.982343 -0.134416 +vn -0.003192 -0.866056 -0.499937 +vn 0.000000 -0.499991 -0.866031 +vn 0.000000 -0.866033 -0.499986 +vn -0.003192 -0.866056 -0.499937 +vn -0.003193 -0.499942 -0.866053 +vn 0.000000 -0.004392 -0.999990 +vn 0.000000 -0.499991 -0.866031 +vn -0.003193 -0.499942 -0.866053 +vn -0.004235 -0.004375 -0.999981 +vn 0.000000 0.499991 -0.866031 +vn 0.000000 0.004392 -0.999990 +vn -0.004235 0.004375 -0.999981 +vn -0.003193 0.499942 -0.866053 +vn 0.000000 0.866007 -0.500032 +vn 0.000000 0.499991 -0.866031 +vn -0.003193 0.499942 -0.866053 +vn -0.003193 0.866029 -0.499983 +vn 0.000000 0.999990 -0.004392 +vn 0.000000 0.866007 -0.500032 +vn -0.003193 0.866029 -0.499983 +vn -0.004236 0.999981 -0.004375 +vn 0.000000 0.999990 0.004392 +vn 0.000000 0.999990 -0.004392 +vn -0.004236 0.999981 -0.004375 +vn -0.004236 0.999981 0.004375 +vn 0.000000 0.866007 0.500032 +vn 0.000000 0.999990 0.004392 +vn -0.004236 0.999981 0.004375 +vn -0.003193 0.866029 0.499983 +vn 0.000000 0.499991 0.866031 +vn 0.000000 0.866007 0.500032 +vn -0.003193 0.866029 0.499983 +vn -0.003193 0.499942 0.866053 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.499991 0.866031 +vn -0.003193 0.499942 0.866053 +vn -0.695571 0.718457 0.000000 +vn -0.999981 -0.004374 0.004374 +vn -0.866042 -0.003298 0.499961 +vn -0.866042 0.003298 0.499961 +vn -0.999981 0.004374 0.004374 +vn -0.866042 -0.003298 0.499961 +vn -0.499955 -0.003298 0.866045 +vn -0.499955 0.003298 0.866045 +vn -0.866042 0.003298 0.499961 +vn -0.499955 -0.003298 0.866045 +vn -0.999924 -0.012300 0.000000 +vn -0.695571 0.718457 0.000000 +vn -0.499955 0.003298 0.866045 +vn -0.004235 0.004375 -0.999981 +vn 0.000000 0.004392 -0.999990 +vn 0.000000 -0.004392 -0.999990 +vn -0.004235 -0.004375 -0.999981 +vn -0.004235 -0.004375 -0.999981 +vn -0.499948 -0.003298 -0.866049 +vn -0.499948 0.003298 -0.866049 +vn -0.004235 0.004375 -0.999981 +vn -0.499948 -0.003298 -0.866049 +vn -0.866048 -0.003298 -0.499950 +vn -0.866048 0.003298 -0.499950 +vn -0.499948 0.003298 -0.866049 +vn -0.866048 -0.003298 -0.499950 +vn -0.999981 -0.004374 -0.004374 +vn -0.999981 0.004374 -0.004374 +vn -0.866048 0.003298 -0.499950 +vn -0.999981 -0.004374 0.004374 +vn -0.999981 0.004374 0.004374 +vn -0.999981 0.004374 -0.004374 +vn -0.999981 -0.004374 -0.004374 +vn -0.499984 0.866029 0.003298 +vn -0.004236 0.999981 0.004375 +vn -0.004236 0.999981 -0.004375 +vn -0.499984 0.866029 -0.003298 +vn -0.866049 0.499948 0.003298 +vn -0.499984 0.866029 0.003298 +vn -0.499984 0.866029 -0.003298 +vn -0.866050 0.499947 -0.003297 +vn -0.999981 0.004374 0.004374 +vn -0.866049 0.499948 0.003298 +vn -0.866050 0.499947 -0.003297 +vn -0.999981 0.004374 -0.004374 +vn -0.866049 -0.499948 0.003298 +vn -0.999981 -0.004374 0.004374 +vn -0.999981 -0.004374 -0.004374 +vn -0.866049 -0.499948 -0.003297 +vn -0.499938 -0.866055 0.003298 +vn -0.866049 -0.499948 0.003298 +vn -0.866049 -0.499948 -0.003297 +vn -0.499938 -0.866055 -0.003297 +vn -0.130133 -0.982343 -0.134416 +vn -0.258411 -0.966030 0.003179 +vn -0.499938 -0.866055 0.003298 +vn -0.499938 -0.866055 -0.003297 +vn -0.866046 -0.003298 0.499954 +vn -0.999981 -0.004374 0.004374 +vn -0.866049 -0.499948 0.003298 +vn -0.809123 -0.415526 0.415521 +vn -0.809123 -0.415526 0.415521 +vn -0.866049 -0.499948 0.003298 +vn -0.499938 -0.866055 0.003297 +vn -0.415520 -0.809129 0.415515 +vn -0.499938 -0.866055 0.003297 +vn -0.258411 -0.966030 0.003179 +vn -0.236828 -0.843376 0.482317 +vn -0.415520 -0.809129 0.415515 +vn -0.415520 -0.809129 0.415515 +vn -0.236828 -0.843376 0.482317 +vn -0.236819 -0.482243 0.843421 +vn -0.415504 -0.415504 0.809144 +vn -0.236819 -0.482243 0.843421 +vn -0.258414 -0.003178 0.966029 +vn -0.499883 -0.003297 0.866087 +vn -0.415504 -0.415504 0.809144 +vn -0.415504 -0.415504 0.809144 +vn -0.499883 -0.003297 0.866087 +vn -0.866046 -0.003298 0.499954 +vn -0.809123 -0.415526 0.415521 +vn -0.809123 -0.415526 0.415521 +vn -0.415520 -0.809129 0.415515 +vn -0.415504 -0.415504 0.809144 +vn -0.236846 0.843358 0.482340 +vn -0.999924 -0.000001 0.012301 +vn -0.499984 0.866029 0.003298 +vn -0.415531 0.809115 0.415532 +vn -0.415531 0.809115 0.415532 +vn -0.499984 0.866029 0.003298 +vn -0.866049 0.499948 0.003298 +vn -0.809121 0.415531 0.415520 +vn -0.866049 0.499948 0.003298 +vn -0.999981 0.004374 0.004374 +vn -0.866046 0.003298 0.499954 +vn -0.809121 0.415531 0.415520 +vn -0.809121 0.415531 0.415520 +vn -0.866046 0.003298 0.499954 +vn -0.499883 0.003298 0.866087 +vn -0.415496 0.415510 0.809145 +vn -0.499883 0.003298 0.866087 +vn -0.258414 0.003178 0.966029 +vn -0.236809 0.482245 0.843423 +vn -0.415496 0.415510 0.809145 +vn -0.415496 0.415510 0.809145 +vn -0.236809 0.482245 0.843423 +vn -0.236846 0.843358 0.482340 +vn -0.415531 0.809115 0.415532 +vn -0.415531 0.809115 0.415532 +vn -0.809121 0.415531 0.415520 +vn -0.415496 0.415510 0.809145 +vn -0.003193 0.499942 -0.866053 +vn -0.695571 0.718457 0.000000 +vn -0.499955 0.003298 -0.866045 +vn -0.415524 0.415523 -0.809123 +vn -0.415524 0.415523 -0.809123 +vn -0.499955 0.003298 -0.866045 +vn -0.866044 0.003298 -0.499958 +vn -0.809120 0.415529 -0.415524 +vn -0.866044 0.003298 -0.499958 +vn -0.999981 0.004374 -0.004374 +vn -0.866049 0.499948 -0.003298 +vn -0.809120 0.415529 -0.415524 +vn -0.809120 0.415529 -0.415524 +vn -0.866049 0.499948 -0.003298 +vn -0.499984 0.866029 -0.003298 +vn -0.415536 0.809114 -0.415530 +vn -0.499984 0.866029 -0.003298 +vn -0.695566 0.000000 -0.718462 +vn -0.003193 0.866029 -0.499983 +vn -0.415536 0.809114 -0.415530 +vn -0.415536 0.809114 -0.415530 +vn -0.003193 0.866029 -0.499983 +vn -0.003193 0.499942 -0.866053 +vn -0.415524 0.415523 -0.809123 +vn -0.415524 0.415523 -0.809123 +vn -0.809120 0.415529 -0.415524 +vn -0.415536 0.809114 -0.415530 +vn -0.236827 -0.843376 -0.482318 +vn -0.258411 -0.966030 -0.003179 +vn -0.499938 -0.866055 -0.003297 +vn -0.415519 -0.809130 -0.415516 +vn -0.415519 -0.809130 -0.415516 +vn -0.499938 -0.866055 -0.003297 +vn -0.866049 -0.499948 -0.003298 +vn -0.809119 -0.415533 -0.415523 +vn -0.866049 -0.499948 -0.003298 +vn -0.999981 -0.004374 -0.004374 +vn -0.866044 -0.003298 -0.499958 +vn -0.809119 -0.415533 -0.415523 +vn -0.809119 -0.415533 -0.415523 +vn -0.866044 -0.003298 -0.499958 +vn -0.499955 -0.003298 -0.866045 +vn -0.415522 -0.415529 -0.809121 +vn -0.499955 -0.003298 -0.866045 +vn -0.999924 -0.012300 0.000000 +vn -0.236842 -0.482300 -0.843382 +vn -0.415522 -0.415529 -0.809121 +vn -0.415522 -0.415529 -0.809121 +vn -0.236842 -0.482300 -0.843382 +vn -0.236827 -0.843376 -0.482318 +vn -0.415519 -0.809130 -0.415516 +vn -0.415519 -0.809130 -0.415516 +vn -0.809119 -0.415533 -0.415523 +vn -0.415522 -0.415529 -0.809121 +vn 0.000000 0.499991 -0.866031 +vn 0.000000 1.000000 0.000000 +vn -0.695571 0.718457 0.000000 +vn -0.003193 0.499942 -0.866053 +vn 0.000000 0.866007 -0.500032 +vn 0.000000 0.499991 -0.866031 +vn -0.003193 0.499942 -0.866053 +vn -0.003193 0.866029 -0.499983 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.866007 -0.500032 +vn -0.003193 0.866029 -0.499983 +vn -0.695566 0.000000 -0.718462 +vn -0.999981 -0.004374 0.004374 +vn -0.866046 -0.003298 0.499954 +vn -0.866046 0.003298 0.499954 +vn -0.999981 0.004374 0.004374 +vn -0.866046 -0.003298 0.499954 +vn -0.499883 -0.003297 0.866087 +vn -0.499883 0.003298 0.866087 +vn -0.866046 0.003298 0.499954 +vn -0.499883 -0.003297 0.866087 +vn -0.258414 -0.003178 0.966029 +vn -0.258414 0.003178 0.966029 +vn -0.499883 0.003298 0.866087 +vn -0.999924 -0.012300 0.000000 +vn -0.499955 -0.003298 -0.866045 +vn -0.499955 0.003298 -0.866045 +vn -0.695571 0.718457 0.000000 +vn -0.499955 -0.003298 -0.866045 +vn -0.866044 -0.003298 -0.499958 +vn -0.866044 0.003298 -0.499958 +vn -0.499955 0.003298 -0.866045 +vn -0.866044 -0.003298 -0.499958 +vn -0.999981 -0.004374 -0.004374 +vn -0.999981 0.004374 -0.004374 +vn -0.866044 0.003298 -0.499958 +vn -0.999981 0.004374 0.004374 +vn -0.999981 0.004374 -0.004374 +vn -0.999981 -0.004374 -0.004374 +vn -0.999981 -0.004374 0.004374 +vn -0.695566 0.000000 -0.718462 +vn -0.499984 0.866029 -0.003298 +vn -0.499984 0.866029 0.003298 +vn -0.999924 -0.000001 0.012301 +vn -0.499984 0.866029 -0.003298 +vn -0.866049 0.499948 -0.003298 +vn -0.866049 0.499948 0.003298 +vn -0.499984 0.866029 0.003298 +vn -0.866049 0.499948 -0.003298 +vn -0.999981 0.004374 -0.004374 +vn -0.999981 0.004374 0.004374 +vn -0.866049 0.499948 0.003298 +vn -0.999981 -0.004374 -0.004374 +vn -0.866049 -0.499948 -0.003298 +vn -0.866049 -0.499948 0.003298 +vn -0.999981 -0.004374 0.004374 +vn -0.866049 -0.499948 -0.003298 +vn -0.499938 -0.866055 -0.003297 +vn -0.499938 -0.866055 0.003297 +vn -0.866049 -0.499948 0.003298 +vn -0.499938 -0.866055 -0.003297 +vn -0.258411 -0.966030 -0.003179 +vn -0.258411 -0.966030 0.003179 +vn -0.499938 -0.866055 0.003297 +vn -0.866046 -0.003298 0.499954 +vn -0.999981 -0.004374 0.004374 +vn -0.866049 -0.499948 0.003298 +vn -0.809123 -0.415526 0.415522 +vn -0.809123 -0.415526 0.415522 +vn -0.866049 -0.499948 0.003298 +vn -0.499938 -0.866055 0.003297 +vn -0.415520 -0.809129 0.415515 +vn -0.499938 -0.866055 0.003297 +vn -0.999924 -0.000001 0.012301 +vn -0.236828 -0.843376 0.482316 +vn -0.415520 -0.809129 0.415515 +vn -0.415520 -0.809129 0.415515 +vn -0.236828 -0.843376 0.482316 +vn -0.236836 -0.482301 0.843383 +vn -0.415524 -0.415524 0.809123 +vn -0.236836 -0.482301 0.843383 +vn -0.999924 -0.012301 0.000000 +vn -0.499949 -0.003298 0.866049 +vn -0.415524 -0.415524 0.809123 +vn -0.415524 -0.415524 0.809123 +vn -0.499949 -0.003298 0.866049 +vn -0.866046 -0.003298 0.499954 +vn -0.809123 -0.415526 0.415522 +vn -0.809123 -0.415526 0.415522 +vn -0.415520 -0.809129 0.415515 +vn -0.415524 -0.415524 0.809123 +vn -0.003193 0.866030 0.499982 +vn -0.004236 0.999981 0.004375 +vn -0.499984 0.866029 0.003298 +vn -0.415531 0.809115 0.415531 +vn -0.415531 0.809115 0.415531 +vn -0.499984 0.866029 0.003298 +vn -0.866049 0.499948 0.003298 +vn -0.809123 0.415532 0.415516 +vn -0.866049 0.499948 0.003298 +vn -0.999981 0.004374 0.004374 +vn -0.866046 0.003298 0.499954 +vn -0.809123 0.415532 0.415516 +vn -0.809123 0.415532 0.415516 +vn -0.866046 0.003298 0.499954 +vn -0.499949 0.003298 0.866049 +vn -0.415517 0.415531 0.809123 +vn -0.499949 0.003298 0.866049 +vn -0.695549 0.718479 0.000000 +vn -0.003192 0.499943 0.866053 +vn -0.415517 0.415531 0.809123 +vn -0.415517 0.415531 0.809123 +vn -0.003192 0.499943 0.866053 +vn -0.003193 0.866030 0.499982 +vn -0.415531 0.809115 0.415531 +vn -0.415531 0.809115 0.415531 +vn -0.809123 0.415532 0.415516 +vn -0.415517 0.415531 0.809123 +vn -0.003193 0.499943 -0.866053 +vn -0.004235 0.004375 -0.999981 +vn -0.499955 0.003298 -0.866045 +vn -0.415525 0.415524 -0.809122 +vn -0.415525 0.415524 -0.809122 +vn -0.499955 0.003298 -0.866045 +vn -0.866044 0.003298 -0.499957 +vn -0.809121 0.415530 -0.415521 +vn -0.866044 0.003298 -0.499957 +vn -0.999981 0.004374 -0.004374 +vn -0.866049 0.499948 -0.003298 +vn -0.809121 0.415530 -0.415521 +vn -0.809121 0.415530 -0.415521 +vn -0.866049 0.499948 -0.003298 +vn -0.499984 0.866029 -0.003298 +vn -0.415536 0.809114 -0.415530 +vn -0.499984 0.866029 -0.003298 +vn -0.004236 0.999981 -0.004375 +vn -0.003193 0.866030 -0.499982 +vn -0.415536 0.809114 -0.415530 +vn -0.415536 0.809114 -0.415530 +vn -0.003193 0.866030 -0.499982 +vn -0.003193 0.499943 -0.866053 +vn -0.415525 0.415524 -0.809122 +vn -0.415525 0.415524 -0.809122 +vn -0.809121 0.415530 -0.415521 +vn -0.415536 0.809114 -0.415530 +vn -0.003192 -0.866056 -0.499938 +vn -0.695566 0.000000 -0.718462 +vn -0.499938 -0.866055 -0.003297 +vn -0.415519 -0.809130 -0.415516 +vn -0.415519 -0.809130 -0.415516 +vn -0.499938 -0.866055 -0.003297 +vn -0.866049 -0.499948 -0.003298 +vn -0.809119 -0.415533 -0.415522 +vn -0.866049 -0.499948 -0.003298 +vn -0.999981 -0.004374 -0.004374 +vn -0.866044 -0.003298 -0.499958 +vn -0.809119 -0.415533 -0.415522 +vn -0.809119 -0.415533 -0.415522 +vn -0.866044 -0.003298 -0.499958 +vn -0.499955 -0.003298 -0.866045 +vn -0.415522 -0.415529 -0.809121 +vn -0.499955 -0.003298 -0.866045 +vn -0.004235 -0.004375 -0.999981 +vn -0.003193 -0.499942 -0.866053 +vn -0.415522 -0.415529 -0.809121 +vn -0.415522 -0.415529 -0.809121 +vn -0.003193 -0.499942 -0.866053 +vn -0.003192 -0.866056 -0.499938 +vn -0.415519 -0.809130 -0.415516 +vn -0.415519 -0.809130 -0.415516 +vn -0.809119 -0.415533 -0.415522 +vn -0.415522 -0.415529 -0.809121 +vn 0.000000 -0.866033 -0.499987 +vn 0.000000 0.000000 -1.000000 +vn -0.695566 0.000000 -0.718462 +vn -0.003192 -0.866056 -0.499938 +vn 0.000000 -0.499991 -0.866031 +vn 0.000000 -0.866033 -0.499987 +vn -0.003192 -0.866056 -0.499938 +vn -0.003193 -0.499942 -0.866053 +vn 0.000000 -0.004392 -0.999990 +vn 0.000000 -0.499991 -0.866031 +vn -0.003193 -0.499942 -0.866053 +vn -0.004235 -0.004375 -0.999981 +vn 0.000000 0.499992 -0.866030 +vn 0.000000 0.004392 -0.999990 +vn -0.004235 0.004375 -0.999981 +vn -0.003193 0.499943 -0.866053 +vn 0.000000 0.866008 -0.500031 +vn 0.000000 0.499992 -0.866030 +vn -0.003193 0.499943 -0.866053 +vn -0.003193 0.866030 -0.499982 +vn 0.000000 0.999990 -0.004393 +vn 0.000000 0.866008 -0.500031 +vn -0.003193 0.866030 -0.499982 +vn -0.004236 0.999981 -0.004375 +vn -0.004236 0.999981 0.004375 +vn 0.000000 0.999990 0.004393 +vn 0.000000 0.999990 -0.004393 +vn -0.004236 0.999981 -0.004375 +vn 0.000000 0.866008 0.500031 +vn 0.000000 0.999990 0.004393 +vn -0.004236 0.999981 0.004375 +vn -0.003193 0.866030 0.499982 +vn 0.000000 0.499992 0.866030 +vn 0.000000 0.866008 0.500031 +vn -0.003193 0.866030 0.499982 +vn -0.003192 0.499943 0.866053 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.499992 0.866030 +vn -0.003192 0.499943 0.866053 +vn -0.695549 0.718479 0.000000 +vn -0.866046 0.003298 0.499954 +vn -0.999981 0.004374 0.004374 +vn -0.999981 -0.004374 0.004374 +vn -0.866046 -0.003298 0.499954 +vn -0.499949 0.003298 0.866049 +vn -0.866046 0.003298 0.499954 +vn -0.866046 -0.003298 0.499954 +vn -0.499949 -0.003298 0.866049 +vn -0.695549 0.718479 0.000000 +vn -0.499949 0.003298 0.866049 +vn -0.499949 -0.003298 0.866049 +vn -0.999924 -0.012301 0.000000 +vn -0.004235 0.004375 -0.999981 +vn 0.000000 0.004392 -0.999990 +vn 0.000000 -0.004392 -0.999990 +vn -0.004235 -0.004375 -0.999981 +vn -0.499955 0.003298 -0.866045 +vn -0.004235 0.004375 -0.999981 +vn -0.004235 -0.004375 -0.999981 +vn -0.499955 -0.003298 -0.866045 +vn -0.866044 0.003298 -0.499957 +vn -0.499955 0.003298 -0.866045 +vn -0.499955 -0.003298 -0.866045 +vn -0.866044 -0.003298 -0.499958 +vn -0.999981 0.004374 -0.004374 +vn -0.866044 0.003298 -0.499957 +vn -0.866044 -0.003298 -0.499958 +vn -0.999981 -0.004374 -0.004374 +vn -0.999981 0.004374 0.004374 +vn -0.999981 0.004374 -0.004374 +vn -0.999981 -0.004374 -0.004374 +vn -0.999981 -0.004374 0.004374 +vn -0.004236 0.999981 -0.004375 +vn -0.499984 0.866029 -0.003298 +vn -0.499984 0.866029 0.003298 +vn -0.004236 0.999981 0.004375 +vn -0.499984 0.866029 -0.003298 +vn -0.866049 0.499948 -0.003298 +vn -0.866049 0.499948 0.003298 +vn -0.499984 0.866029 0.003298 +vn -0.866049 0.499948 -0.003298 +vn -0.999981 0.004374 -0.004374 +vn -0.999981 0.004374 0.004374 +vn -0.866049 0.499948 0.003298 +vn -0.999981 -0.004374 -0.004374 +vn -0.866049 -0.499948 -0.003298 +vn -0.866049 -0.499948 0.003298 +vn -0.999981 -0.004374 0.004374 +vn -0.866049 -0.499948 -0.003298 +vn -0.499938 -0.866055 -0.003297 +vn -0.499938 -0.866055 0.003297 +vn -0.866049 -0.499948 0.003298 +vn -0.499938 -0.866055 -0.003297 +vn -0.695566 0.000000 -0.718462 +vn -0.999924 -0.000001 0.012301 +vn -0.499938 -0.866055 0.003297 +vn -0.003193 0.499940 -0.866054 +vn -0.004235 0.004375 -0.999981 +vn -0.499946 0.003298 -0.866050 +vn -0.415516 0.415519 -0.809130 +vn -0.415516 0.415519 -0.809130 +vn -0.499946 0.003298 -0.866050 +vn -0.866049 0.003297 -0.499948 +vn -0.809131 0.415512 -0.415520 +vn -0.866049 0.003297 -0.499948 +vn -0.999981 0.004374 -0.004235 +vn -0.866054 0.499940 -0.003193 +vn -0.809131 0.415512 -0.415520 +vn -0.809131 0.415512 -0.415520 +vn -0.866054 0.499940 -0.003193 +vn -0.499981 0.866031 -0.003193 +vn -0.415525 0.809117 -0.415533 +vn -0.499981 0.866031 -0.003193 +vn -0.004236 0.999982 -0.004236 +vn -0.003193 0.866030 -0.499982 +vn -0.415525 0.809117 -0.415533 +vn -0.415525 0.809117 -0.415533 +vn -0.003193 0.866030 -0.499982 +vn -0.003193 0.499940 -0.866054 +vn -0.415516 0.415519 -0.809130 +vn -0.415516 0.415519 -0.809130 +vn -0.809131 0.415512 -0.415520 +vn -0.415525 0.809117 -0.415533 +vn -0.003192 -0.866056 -0.499938 +vn -0.707105 0.000000 -0.707108 +vn -0.499942 -0.866053 -0.003192 +vn -0.415515 -0.809130 -0.415518 +vn -0.415515 -0.809130 -0.415518 +vn -0.499942 -0.866053 -0.003192 +vn -0.866048 -0.499951 -0.003193 +vn -0.809120 -0.415531 -0.415522 +vn -0.866048 -0.499951 -0.003193 +vn -0.999981 -0.004375 -0.004235 +vn -0.866049 -0.003298 -0.499948 +vn -0.809120 -0.415531 -0.415522 +vn -0.809120 -0.415531 -0.415522 +vn -0.866049 -0.003298 -0.499948 +vn -0.499946 -0.003298 -0.866050 +vn -0.415516 -0.415530 -0.809124 +vn -0.499946 -0.003298 -0.866050 +vn -0.004235 -0.004375 -0.999981 +vn -0.003192 -0.499941 -0.866054 +vn -0.415516 -0.415530 -0.809124 +vn -0.415516 -0.415530 -0.809124 +vn -0.003192 -0.499941 -0.866054 +vn -0.003192 -0.866056 -0.499938 +vn -0.415515 -0.809130 -0.415518 +vn -0.415515 -0.809130 -0.415518 +vn -0.809120 -0.415531 -0.415522 +vn -0.415516 -0.415530 -0.809124 +vn 0.000000 -0.866033 -0.499987 +vn 0.000000 0.000000 -1.000000 +vn -0.707105 0.000000 -0.707108 +vn -0.003192 -0.866056 -0.499938 +vn 0.000000 -0.499990 -0.866031 +vn 0.000000 -0.866033 -0.499987 +vn -0.003192 -0.866056 -0.499938 +vn -0.003192 -0.499941 -0.866054 +vn 0.000000 -0.004392 -0.999990 +vn 0.000000 -0.499990 -0.866031 +vn -0.003192 -0.499941 -0.866054 +vn -0.004235 -0.004375 -0.999981 +vn 0.000000 0.499989 -0.866032 +vn 0.000000 0.004392 -0.999990 +vn -0.004235 0.004375 -0.999981 +vn -0.003193 0.499940 -0.866054 +vn 0.000000 0.866008 -0.500031 +vn 0.000000 0.499989 -0.866032 +vn -0.003193 0.499940 -0.866054 +vn -0.003193 0.866030 -0.499982 +vn 0.000000 0.999991 -0.004253 +vn 0.000000 0.866008 -0.500031 +vn -0.003193 0.866030 -0.499982 +vn -0.004236 0.999982 -0.004236 +vn -0.004253 0.999991 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.999991 -0.004253 +vn -0.004236 0.999982 -0.004236 +vn 0.000000 0.004392 -0.999990 +vn 0.000000 -0.004392 -0.999990 +vn -0.004235 -0.004375 -0.999981 +vn -0.004235 0.004375 -0.999981 +vn -0.004235 -0.004375 -0.999981 +vn -0.499946 -0.003298 -0.866050 +vn -0.499946 0.003298 -0.866050 +vn -0.004235 0.004375 -0.999981 +vn -0.499946 -0.003298 -0.866050 +vn -0.866049 -0.003298 -0.499948 +vn -0.866049 0.003297 -0.499948 +vn -0.499946 0.003298 -0.866050 +vn -0.866049 -0.003298 -0.499948 +vn -0.999981 -0.004375 -0.004235 +vn -0.999981 0.004374 -0.004235 +vn -0.866049 0.003297 -0.499948 +vn -0.999981 -0.004375 -0.004235 +vn -0.999990 -0.004392 0.000000 +vn -0.999990 0.004392 0.000000 +vn -0.999981 0.004374 -0.004235 +vn -0.500030 0.866008 0.000000 +vn -0.004253 0.999991 0.000000 +vn -0.004236 0.999982 -0.004236 +vn -0.499981 0.866031 -0.003193 +vn -0.866032 0.499989 0.000000 +vn -0.500030 0.866008 0.000000 +vn -0.499981 0.866031 -0.003193 +vn -0.866054 0.499940 -0.003193 +vn -0.999990 0.004392 0.000000 +vn -0.866032 0.499989 0.000000 +vn -0.866054 0.499940 -0.003193 +vn -0.999981 0.004374 -0.004235 +vn -0.866025 -0.500001 0.000000 +vn -0.999990 -0.004392 0.000000 +vn -0.999981 -0.004375 -0.004235 +vn -0.866048 -0.499951 -0.003193 +vn -0.499991 -0.866031 0.000000 +vn -0.866025 -0.500001 0.000000 +vn -0.866048 -0.499951 -0.003193 +vn -0.499942 -0.866053 -0.003192 +vn -1.000000 0.000000 0.000000 +vn -0.499991 -0.866031 0.000000 +vn -0.499942 -0.866053 -0.003192 +vn -0.707105 0.000000 -0.707108 +vn -0.003193 0.499943 -0.866053 +vn -0.695549 0.718479 0.000000 +vn -0.499949 0.003298 -0.866049 +vn -0.415524 0.415524 -0.809123 +vn -0.415524 0.415524 -0.809123 +vn -0.499949 0.003298 -0.866049 +vn -0.866046 0.003298 -0.499954 +vn -0.809124 0.415527 -0.415518 +vn -0.866046 0.003298 -0.499954 +vn -0.999981 0.004375 -0.004236 +vn -0.866048 0.499951 -0.003193 +vn -0.809124 0.415527 -0.415518 +vn -0.809124 0.415527 -0.415518 +vn -0.866048 0.499951 -0.003193 +vn -0.499987 0.866027 -0.003193 +vn -0.415536 0.809114 -0.415530 +vn -0.499987 0.866027 -0.003193 +vn -0.707105 0.000000 -0.707108 +vn -0.003193 0.866030 -0.499982 +vn -0.415536 0.809114 -0.415530 +vn -0.415536 0.809114 -0.415530 +vn -0.003193 0.866030 -0.499982 +vn -0.003193 0.499943 -0.866053 +vn -0.415524 0.415524 -0.809123 +vn -0.415524 0.415524 -0.809123 +vn -0.809124 0.415527 -0.415518 +vn -0.415536 0.809114 -0.415530 +vn -0.236802 -0.843415 -0.482262 +vn -0.258352 -0.966046 -0.003077 +vn -0.499874 -0.866092 -0.003192 +vn -0.415496 -0.809151 -0.415496 +vn -0.415496 -0.809151 -0.415496 +vn -0.499874 -0.866092 -0.003192 +vn -0.866048 -0.499951 -0.003193 +vn -0.809121 -0.415532 -0.415519 +vn -0.866048 -0.499951 -0.003193 +vn -0.999981 -0.004375 -0.004236 +vn -0.866046 -0.003298 -0.499954 +vn -0.809121 -0.415532 -0.415519 +vn -0.809121 -0.415532 -0.415519 +vn -0.866046 -0.003298 -0.499954 +vn -0.499949 -0.003298 -0.866049 +vn -0.415517 -0.415530 -0.809123 +vn -0.499949 -0.003298 -0.866049 +vn -0.999924 -0.012301 0.000000 +vn -0.236826 -0.482303 -0.843384 +vn -0.415517 -0.415530 -0.809123 +vn -0.415517 -0.415530 -0.809123 +vn -0.236826 -0.482303 -0.843384 +vn -0.236802 -0.843415 -0.482262 +vn -0.415496 -0.809151 -0.415496 +vn -0.415496 -0.809151 -0.415496 +vn -0.809121 -0.415532 -0.415519 +vn -0.415517 -0.415530 -0.809123 +vn 0.000000 0.499992 -0.866030 +vn 0.000000 1.000000 0.000000 +vn -0.695549 0.718479 0.000000 +vn -0.003193 0.499943 -0.866053 +vn 0.000000 0.866008 -0.500031 +vn 0.000000 0.499992 -0.866030 +vn -0.003193 0.499943 -0.866053 +vn -0.003193 0.866030 -0.499982 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.866008 -0.500031 +vn -0.003193 0.866030 -0.499982 +vn -0.707105 0.000000 -0.707108 +vn -0.499949 0.003298 -0.866049 +vn -0.695549 0.718479 0.000000 +vn -0.999924 -0.012301 0.000000 +vn -0.499949 -0.003298 -0.866049 +vn -0.866046 0.003298 -0.499954 +vn -0.499949 0.003298 -0.866049 +vn -0.499949 -0.003298 -0.866049 +vn -0.866046 -0.003298 -0.499954 +vn -0.999981 0.004375 -0.004236 +vn -0.866046 0.003298 -0.499954 +vn -0.866046 -0.003298 -0.499954 +vn -0.999981 -0.004375 -0.004236 +vn -0.999981 -0.004375 -0.004236 +vn -0.999990 -0.004392 0.000000 +vn -0.999990 0.004392 0.000000 +vn -0.999981 0.004375 -0.004236 +vn -0.500037 0.866004 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.707105 0.000000 -0.707108 +vn -0.499987 0.866027 -0.003193 +vn -0.866025 0.500001 0.000000 +vn -0.500037 0.866004 0.000000 +vn -0.499987 0.866027 -0.003193 +vn -0.866048 0.499951 -0.003193 +vn -0.999990 0.004392 0.000000 +vn -0.866025 0.500001 0.000000 +vn -0.866048 0.499951 -0.003193 +vn -0.999981 0.004375 -0.004236 +vn -0.866025 -0.500001 0.000000 +vn -0.999990 -0.004392 0.000000 +vn -0.999981 -0.004375 -0.004236 +vn -0.866048 -0.499951 -0.003193 +vn -0.499923 -0.866070 0.000000 +vn -0.866025 -0.500001 0.000000 +vn -0.866048 -0.499951 -0.003193 +vn -0.499874 -0.866092 -0.003192 +vn -0.258352 -0.966046 -0.003077 +vn -0.258660 -0.965968 0.000000 +vn -0.499923 -0.866070 0.000000 +vn -0.499874 -0.866092 -0.003192 +vn -0.999924 -0.000001 0.012301 +vn -0.236846 0.843358 0.482340 +vn -1.000000 0.000228 0.000092 +vn -0.236809 0.482245 0.843423 +vn -0.258414 0.003178 0.966029 +vn -1.000000 0.000228 0.000092 +vn -0.236846 0.843358 0.482340 +vn -0.236809 0.482245 0.843423 +vn -1.000000 0.000228 0.000092 +vn -0.236828 -0.843376 0.482316 +vn -0.999924 -0.000001 0.012301 +vn -1.000000 0.000228 0.000092 +vn -0.236836 -0.482301 0.843383 +vn -0.236828 -0.843376 0.482316 +vn -1.000000 0.000228 0.000092 +vn -0.999924 -0.012301 0.000000 +vn -0.236836 -0.482301 0.843383 +vn -1.000000 0.000228 0.000092 +vn -0.258352 -0.966046 -0.003077 +vn -0.236802 -0.843415 -0.482262 +vn -1.000000 0.000228 0.000092 +vn -0.236826 -0.482303 -0.843384 +vn -0.999924 -0.012301 0.000000 +vn -1.000000 0.000228 0.000092 +vn -0.236802 -0.843415 -0.482262 +vn -0.236826 -0.482303 -0.843384 +vn -1.000000 0.000228 0.000092 +vn -0.258414 0.003178 0.966029 +vn -0.999999 -0.000057 0.001367 +vn -1.000000 0.000228 0.000092 +vn -0.999999 -0.000057 0.001367 +vn -1.000000 -0.000329 0.000337 +vn -1.000000 0.000228 0.000092 +vn -1.000000 -0.000329 0.000337 +vn -0.258352 -0.966046 -0.003077 +vn -1.000000 0.000228 0.000092 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.965920 -0.258840 0.000000 +vn 0.965920 -0.258840 0.000000 +vn 0.999990 -0.004392 0.000000 +vn 0.866032 -0.499989 0.000000 +vn 0.707228 -0.706986 0.000000 +vn 0.707228 -0.706986 0.000000 +vn 0.866032 -0.499989 0.000000 +vn 0.499984 -0.866035 0.000000 +vn 0.258728 -0.965950 0.000000 +vn 0.258691 -0.965960 0.000000 +vn 0.258691 -0.965960 0.000000 +vn 0.499984 -0.866035 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.999981 0.004374 -0.004235 +vn 0.999990 0.004392 0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.946159 -0.228895 0.228889 +vn -0.946159 -0.228895 0.228889 +vn -0.946159 -0.228895 0.228889 +vn -0.946159 -0.228895 0.228889 +vn -0.809129 -0.415515 0.415522 +vn -0.866071 -0.499807 0.010655 +vn -0.499800 -0.866075 0.010654 +vn -0.415511 -0.809133 0.415516 +vn -0.499800 -0.866075 0.010654 +vn -0.013912 -0.999806 0.013912 +vn -0.010654 -0.866074 0.499803 +vn -0.415511 -0.809133 0.415516 +vn -0.415511 -0.809133 0.415516 +vn -0.010654 -0.866074 0.499803 +vn -0.010655 -0.499807 0.866071 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 -0.499807 0.866071 +vn -0.014005 -0.007145 0.999876 +vn -0.499911 -0.005447 0.866060 +vn -0.415518 -0.415519 0.809129 +vn -0.415518 -0.415519 0.809129 +vn -0.499911 -0.005447 0.866060 +vn -0.866061 -0.005447 0.499908 +vn -0.809129 -0.415515 0.415522 +vn -0.809129 -0.415515 0.415522 +vn -0.415511 -0.809133 0.415516 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 0.866048 0.499848 +vn -0.013919 0.999806 0.013919 +vn -0.499845 0.866050 0.010655 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.499845 0.866050 0.010655 +vn -0.866071 0.499807 0.010655 +vn -0.809128 0.415516 0.415522 +vn -0.866071 0.499807 0.010655 +vn -0.999876 0.007145 0.014006 +vn -0.866061 0.005447 0.499908 +vn -0.809128 0.415516 0.415522 +vn -0.809128 0.415516 0.415522 +vn -0.866061 0.005447 0.499908 +vn -0.499911 0.005447 0.866060 +vn -0.415517 0.415519 0.809129 +vn -0.499911 0.005447 0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.010655 0.499806 0.866072 +vn -0.415517 0.415519 0.809129 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 0.866072 +vn -0.010655 0.866048 0.499848 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.809128 0.415516 0.415522 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 -0.866072 +vn -0.014005 0.007145 -0.999876 +vn -0.499911 0.005447 -0.866060 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.499911 0.005447 -0.866060 +vn -0.866061 0.005447 -0.499908 +vn -0.809131 0.415512 -0.415519 +vn -0.866061 0.005447 -0.499908 +vn -0.999876 0.007145 -0.014006 +vn -0.866071 0.499807 -0.010655 +vn -0.809131 0.415512 -0.415519 +vn -0.809131 0.415512 -0.415519 +vn -0.866071 0.499807 -0.010655 +vn -0.499845 0.866050 -0.010656 +vn -0.415527 0.809117 -0.415532 +vn -0.499845 0.866050 -0.010656 +vn -0.013919 0.999806 -0.013919 +vn -0.010655 0.866048 -0.499848 +vn -0.415527 0.809117 -0.415532 +vn -0.415527 0.809117 -0.415532 +vn -0.010655 0.866048 -0.499848 +vn -0.010655 0.499806 -0.866072 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.809131 0.415512 -0.415519 +vn -0.415527 0.809117 -0.415532 +vn -0.010654 -0.866074 -0.499803 +vn -0.013912 -0.999806 -0.013912 +vn -0.499800 -0.866075 -0.010654 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.499800 -0.866075 -0.010654 +vn -0.866071 -0.499807 -0.010655 +vn -0.809131 -0.415514 -0.415519 +vn -0.866071 -0.499807 -0.010655 +vn -0.999876 -0.007145 -0.014006 +vn -0.866061 -0.005447 -0.499908 +vn -0.809131 -0.415514 -0.415519 +vn -0.809131 -0.415514 -0.415519 +vn -0.866061 -0.005447 -0.499908 +vn -0.499911 -0.005447 -0.866060 +vn -0.415512 -0.415520 -0.809131 +vn -0.499911 -0.005447 -0.866060 +vn -0.014005 -0.007145 -0.999876 +vn -0.010654 -0.499807 -0.866071 +vn -0.415512 -0.415520 -0.809131 +vn -0.415512 -0.415520 -0.809131 +vn -0.010654 -0.499807 -0.866071 +vn -0.010654 -0.866074 -0.499803 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.809131 -0.415514 -0.415519 +vn -0.415512 -0.415520 -0.809131 +vn -0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn 0.010654 0.499806 -0.866072 +vn 0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn 0.010655 0.866048 -0.499848 +vn 0.010654 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn 0.013919 0.999806 -0.013919 +vn 0.010655 0.866048 -0.499848 +vn -0.999876 -0.007145 0.014006 +vn -0.866061 -0.005447 0.499908 +vn -0.866061 0.005447 0.499908 +vn -0.999876 0.007145 0.014006 +vn -0.866061 -0.005447 0.499908 +vn -0.499911 -0.005447 0.866060 +vn -0.499911 0.005447 0.866060 +vn -0.866061 0.005447 0.499908 +vn -0.499911 -0.005447 0.866060 +vn -0.014005 -0.007145 0.999876 +vn -0.014005 0.007145 0.999876 +vn -0.499911 0.005447 0.866060 +vn -0.014005 -0.007145 -0.999876 +vn -0.499911 -0.005447 -0.866060 +vn -0.499911 0.005447 -0.866060 +vn -0.014005 0.007145 -0.999876 +vn -0.499911 -0.005447 -0.866060 +vn -0.866061 -0.005447 -0.499908 +vn -0.866061 0.005447 -0.499908 +vn -0.499911 0.005447 -0.866060 +vn -0.866061 -0.005447 -0.499908 +vn -0.999876 -0.007145 -0.014006 +vn -0.999876 0.007145 -0.014006 +vn -0.866061 0.005447 -0.499908 +vn -0.999876 -0.007145 -0.014006 +vn -0.999876 -0.007145 0.014006 +vn -0.999876 0.007145 0.014006 +vn -0.999876 0.007145 -0.014006 +vn -0.013919 0.999806 -0.013919 +vn -0.499845 0.866050 -0.010656 +vn -0.499845 0.866050 0.010655 +vn -0.013919 0.999806 0.013919 +vn -0.499845 0.866050 -0.010656 +vn -0.866071 0.499807 -0.010655 +vn -0.866071 0.499807 0.010655 +vn -0.499845 0.866050 0.010655 +vn -0.866071 0.499807 -0.010655 +vn -0.999876 0.007145 -0.014006 +vn -0.999876 0.007145 0.014006 +vn -0.866071 0.499807 0.010655 +vn -0.999876 -0.007145 -0.014006 +vn -0.866071 -0.499807 -0.010655 +vn -0.866071 -0.499807 0.010655 +vn -0.999876 -0.007145 0.014006 +vn -0.866071 -0.499807 -0.010655 +vn -0.499800 -0.866075 -0.010654 +vn -0.499800 -0.866075 0.010654 +vn -0.866071 -0.499807 0.010655 +vn -0.499800 -0.866075 -0.010654 +vn -0.013912 -0.999806 -0.013912 +vn -0.013912 -0.999806 0.013912 +vn -0.499800 -0.866075 0.010654 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.499807 -0.866071 -0.010655 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.866050 -0.499845 0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.866050 -0.499845 0.010655 +vn -0.999806 -0.013919 0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.866048 0.010655 0.499848 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010655 0.866072 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.999806 0.013919 0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 -0.010655 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.007145 0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.499806 0.010654 -0.866072 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866048 0.010655 -0.499848 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 -0.013919 -0.013919 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn -0.866048 -0.010655 0.499848 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.415516 -0.809128 0.415522 +vn -0.499807 -0.866071 0.010655 +vn -0.007145 -0.999876 0.014006 +vn -0.005447 -0.866061 0.499908 +vn -0.415516 -0.809128 0.415522 +vn -0.415516 -0.809128 0.415522 +vn -0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 0.866072 +vn -0.415519 -0.415517 0.809129 +vn -0.415519 -0.415517 0.809129 +vn -0.499806 -0.010655 0.866072 +vn -0.866048 -0.010655 0.499848 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.415516 -0.809128 0.415522 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.809118 0.415526 0.415531 +vn -0.866050 0.499845 0.010655 +vn -0.999806 0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.809118 0.415526 0.415531 +vn -0.809118 0.415526 0.415531 +vn -0.866048 0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.415519 0.415518 0.809129 +vn -0.499806 0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.415519 0.415518 0.809129 +vn -0.415519 0.415518 0.809129 +vn -0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.809118 0.415526 0.415531 +vn -0.415519 0.415518 0.809129 +vn -0.499806 -0.010655 -0.866072 +vn -0.007145 -0.014005 -0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.415512 -0.809131 -0.415519 +vn -0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 -0.010655 +vn -0.415512 -0.809131 -0.415519 +vn -0.415512 -0.809131 -0.415519 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.809117 -0.415527 -0.415532 +vn -0.866050 -0.499845 -0.010656 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 -0.010655 -0.499848 +vn -0.809117 -0.415527 -0.415532 +vn -0.809117 -0.415527 -0.415532 +vn -0.866048 -0.010655 -0.499848 +vn -0.499806 -0.010655 -0.866072 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.415512 -0.809131 -0.415519 +vn -0.809117 -0.415527 -0.415532 +vn -0.499807 0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.415521 0.415511 -0.809131 +vn -0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.415521 0.415511 -0.809131 +vn -0.415521 0.415511 -0.809131 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.809119 0.415522 -0.415533 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 -0.010656 +vn -0.809119 0.415522 -0.415533 +vn -0.809119 0.415522 -0.415533 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 -0.010655 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.415521 0.415511 -0.809131 +vn -0.809119 0.415522 -0.415533 +vn -0.999806 0.013919 0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866061 -0.005447 0.499908 +vn -0.999876 -0.007145 0.014006 +vn -0.866071 -0.499807 0.010655 +vn -0.809129 -0.415515 0.415522 +vn -0.809129 -0.415515 0.415522 +vn -0.866071 -0.499807 0.010655 +vn -0.499800 -0.866075 0.010654 +vn -0.415511 -0.809133 0.415516 +vn -0.499800 -0.866075 0.010654 +vn -0.013912 -0.999806 0.013912 +vn -0.010654 -0.866074 0.499803 +vn -0.415511 -0.809133 0.415516 +vn -0.415511 -0.809133 0.415516 +vn -0.010654 -0.866074 0.499803 +vn -0.010655 -0.499807 0.866071 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 -0.499807 0.866071 +vn -0.014005 -0.007145 0.999876 +vn -0.499911 -0.005447 0.866060 +vn -0.415518 -0.415519 0.809129 +vn -0.415518 -0.415519 0.809129 +vn -0.499911 -0.005447 0.866060 +vn -0.866061 -0.005447 0.499908 +vn -0.809129 -0.415515 0.415522 +vn -0.809129 -0.415515 0.415522 +vn -0.415511 -0.809133 0.415516 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 0.866048 0.499848 +vn -0.013919 0.999806 0.013919 +vn -0.499845 0.866050 0.010655 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.499845 0.866050 0.010655 +vn -0.866071 0.499807 0.010655 +vn -0.809128 0.415516 0.415522 +vn -0.866071 0.499807 0.010655 +vn -0.999876 0.007145 0.014006 +vn -0.866061 0.005447 0.499908 +vn -0.809128 0.415516 0.415522 +vn -0.809128 0.415516 0.415522 +vn -0.866061 0.005447 0.499908 +vn -0.499911 0.005447 0.866060 +vn -0.415517 0.415519 0.809129 +vn -0.499911 0.005447 0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.010655 0.499806 0.866072 +vn -0.415517 0.415519 0.809129 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 0.866072 +vn -0.010655 0.866048 0.499848 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.809128 0.415516 0.415522 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 -0.866072 +vn -0.014005 0.007145 0.999876 +vn -0.499911 0.005447 -0.866060 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.499911 0.005447 -0.866060 +vn -0.866061 0.005447 -0.499908 +vn -0.809131 0.415512 -0.415519 +vn -0.866061 0.005447 -0.499908 +vn -0.999876 0.007145 -0.014006 +vn -0.866071 0.499807 -0.010655 +vn -0.809131 0.415512 -0.415519 +vn -0.809131 0.415512 -0.415519 +vn -0.866071 0.499807 -0.010655 +vn -0.499845 0.866050 -0.010656 +vn -0.415527 0.809117 -0.415532 +vn -0.499845 0.866050 -0.010656 +vn -0.013919 0.999806 -0.013919 +vn -0.010655 0.866048 -0.499848 +vn -0.415527 0.809117 -0.415532 +vn -0.415527 0.809117 -0.415532 +vn -0.010655 0.866048 -0.499848 +vn -0.010655 0.499806 -0.866072 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.809131 0.415512 -0.415519 +vn -0.415527 0.809117 -0.415532 +vn -0.010654 -0.866074 -0.499803 +vn -0.013912 -0.999806 -0.013912 +vn -0.499800 -0.866075 -0.010654 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.499800 -0.866075 -0.010654 +vn -0.866071 -0.499807 -0.010655 +vn -0.809131 -0.415514 -0.415519 +vn -0.866071 -0.499807 -0.010655 +vn -0.999876 -0.007145 -0.014006 +vn -0.866061 -0.005447 -0.499908 +vn -0.809131 -0.415514 -0.415519 +vn -0.809131 -0.415514 -0.415519 +vn -0.866061 -0.005447 -0.499908 +vn -0.499911 -0.005447 -0.866060 +vn -0.415512 -0.415520 -0.809131 +vn -0.499911 -0.005447 -0.866060 +vn -0.014005 -0.007145 0.999876 +vn -0.010654 -0.499807 -0.866071 +vn -0.415512 -0.415520 -0.809131 +vn -0.415512 -0.415520 -0.809131 +vn -0.010654 -0.499807 -0.866071 +vn -0.010654 -0.866074 -0.499803 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.809131 -0.415514 -0.415519 +vn -0.415512 -0.415520 -0.809131 +vn -0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn 0.010655 0.866048 0.499848 +vn 0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn 0.010655 0.499806 0.866072 +vn 0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn -0.014005 0.007145 0.999876 +vn 0.014005 0.007145 0.999876 +vn 0.010655 0.499806 0.866072 +vn -0.014005 -0.007145 0.999876 +vn -0.010655 -0.499807 0.866071 +vn 0.010655 -0.499807 0.866071 +vn 0.014005 -0.007145 0.999876 +vn -0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn 0.010654 -0.866074 0.499803 +vn 0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn -0.013912 -0.999806 0.013912 +vn 0.013912 -0.999806 0.013912 +vn 0.010654 -0.866074 0.499803 +vn -0.999876 -0.007145 0.014006 +vn -0.866061 -0.005447 0.499908 +vn -0.866061 0.005447 0.499908 +vn -0.999876 0.007145 0.014006 +vn -0.866061 -0.005447 0.499908 +vn -0.499911 -0.005447 0.866060 +vn -0.499911 0.005447 0.866060 +vn -0.866061 0.005447 0.499908 +vn -0.499911 -0.005447 0.866060 +vn -0.014005 -0.007145 0.999876 +vn -0.014005 0.007145 0.999876 +vn -0.499911 0.005447 0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.014005 -0.007145 0.999876 +vn 0.014005 -0.007145 0.999876 +vn 0.014005 0.007145 0.999876 +vn -0.014005 -0.007145 0.999876 +vn -0.499911 -0.005447 -0.866060 +vn -0.499911 0.005447 -0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.499911 -0.005447 -0.866060 +vn -0.866061 -0.005447 -0.499908 +vn -0.866061 0.005447 -0.499908 +vn -0.499911 0.005447 -0.866060 +vn -0.866061 -0.005447 -0.499908 +vn -0.999876 -0.007145 -0.014006 +vn -0.999876 0.007145 -0.014006 +vn -0.866061 0.005447 -0.499908 +vn -0.999876 -0.007145 -0.014006 +vn -0.999876 -0.007145 0.014006 +vn -0.999876 0.007145 0.014006 +vn -0.999876 0.007145 -0.014006 +vn -0.013919 0.999806 -0.013919 +vn -0.499845 0.866050 -0.010656 +vn -0.499845 0.866050 0.010655 +vn -0.013919 0.999806 0.013919 +vn -0.499845 0.866050 -0.010656 +vn -0.866071 0.499807 -0.010655 +vn -0.866071 0.499807 0.010655 +vn -0.499845 0.866050 0.010655 +vn -0.866071 0.499807 -0.010655 +vn -0.999876 0.007145 -0.014006 +vn -0.999876 0.007145 0.014006 +vn -0.866071 0.499807 0.010655 +vn -0.999876 -0.007145 -0.014006 +vn -0.866071 -0.499807 -0.010655 +vn -0.866071 -0.499807 0.010655 +vn -0.999876 -0.007145 0.014006 +vn -0.866071 -0.499807 -0.010655 +vn -0.499800 -0.866075 -0.010654 +vn -0.499800 -0.866075 0.010654 +vn -0.866071 -0.499807 0.010655 +vn -0.499800 -0.866075 -0.010654 +vn -0.013912 -0.999806 -0.013912 +vn -0.013912 -0.999806 0.013912 +vn -0.499800 -0.866075 0.010654 +vn -0.866061 -0.005447 0.499908 +vn -0.999876 -0.007145 0.014006 +vn -0.866071 -0.499807 0.010655 +vn -0.809129 -0.415515 0.415522 +vn -0.809129 -0.415515 0.415522 +vn -0.866071 -0.499807 0.010655 +vn -0.499800 -0.866075 0.010654 +vn -0.415511 -0.809133 0.415516 +vn -0.499800 -0.866075 0.010654 +vn -0.013912 -0.999806 0.013912 +vn -0.010654 -0.866074 0.499803 +vn -0.415511 -0.809133 0.415516 +vn -0.415511 -0.809133 0.415516 +vn -0.010654 -0.866074 0.499803 +vn -0.010655 -0.499807 0.866071 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 -0.499807 0.866071 +vn -0.014005 -0.007145 -0.999876 +vn -0.499911 -0.005447 0.866060 +vn -0.415518 -0.415519 0.809129 +vn -0.415518 -0.415519 0.809129 +vn -0.499911 -0.005447 0.866060 +vn -0.866061 -0.005447 0.499908 +vn -0.809129 -0.415515 0.415522 +vn -0.809129 -0.415515 0.415522 +vn -0.415511 -0.809133 0.415516 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 0.866048 0.499848 +vn -0.013919 0.999806 0.013919 +vn -0.499845 0.866050 0.010655 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.499845 0.866050 0.010655 +vn -0.866071 0.499807 0.010655 +vn -0.809128 0.415516 0.415522 +vn -0.866071 0.499807 0.010655 +vn -0.999876 0.007145 0.014006 +vn -0.866061 0.005447 0.499908 +vn -0.809128 0.415516 0.415522 +vn -0.809128 0.415516 0.415522 +vn -0.866061 0.005447 0.499908 +vn -0.499911 0.005447 0.866060 +vn -0.415517 0.415519 0.809129 +vn -0.499911 0.005447 0.866060 +vn -0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 0.866072 +vn -0.415517 0.415519 0.809129 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 0.866072 +vn -0.010655 0.866048 0.499848 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.809128 0.415516 0.415522 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 -0.866072 +vn -0.014005 0.007145 -0.999876 +vn -0.499911 0.005447 -0.866060 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.499911 0.005447 -0.866060 +vn -0.866061 0.005447 -0.499908 +vn -0.809131 0.415512 -0.415519 +vn -0.866061 0.005447 -0.499908 +vn -0.999876 0.007145 -0.014006 +vn -0.866071 0.499807 -0.010655 +vn -0.809131 0.415512 -0.415519 +vn -0.809131 0.415512 -0.415519 +vn -0.866071 0.499807 -0.010655 +vn -0.499845 0.866050 -0.010656 +vn -0.415527 0.809117 -0.415532 +vn -0.499845 0.866050 -0.010656 +vn -0.013919 0.999806 -0.013919 +vn -0.010655 0.866048 -0.499848 +vn -0.415527 0.809117 -0.415532 +vn -0.415527 0.809117 -0.415532 +vn -0.010655 0.866048 -0.499848 +vn -0.010655 0.499806 -0.866072 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.809131 0.415512 -0.415519 +vn -0.415527 0.809117 -0.415532 +vn -0.010654 -0.866074 -0.499803 +vn -0.013912 -0.999806 -0.013912 +vn -0.499800 -0.866075 -0.010654 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.499800 -0.866075 -0.010654 +vn -0.866071 -0.499807 -0.010655 +vn -0.809131 -0.415514 -0.415519 +vn -0.866071 -0.499807 -0.010655 +vn -0.999876 -0.007145 -0.014006 +vn -0.866061 -0.005447 -0.499908 +vn -0.809131 -0.415514 -0.415519 +vn -0.809131 -0.415514 -0.415519 +vn -0.866061 -0.005447 -0.499908 +vn -0.499911 -0.005447 -0.866060 +vn -0.415512 -0.415520 -0.809131 +vn -0.499911 -0.005447 -0.866060 +vn -0.014005 -0.007145 -0.999876 +vn -0.010654 -0.499807 -0.866071 +vn -0.415512 -0.415520 -0.809131 +vn -0.415512 -0.415520 -0.809131 +vn -0.010654 -0.499807 -0.866071 +vn -0.010654 -0.866074 -0.499803 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.809131 -0.415514 -0.415519 +vn -0.415512 -0.415520 -0.809131 +vn 0.013912 -0.999806 -0.013912 +vn -0.013912 -0.999806 -0.013912 +vn -0.010654 -0.866074 -0.499803 +vn 0.010654 -0.866074 -0.499803 +vn -0.010654 -0.866074 -0.499803 +vn -0.010654 -0.499807 -0.866071 +vn 0.010655 -0.499807 -0.866071 +vn 0.010654 -0.866074 -0.499803 +vn -0.010654 -0.499807 -0.866071 +vn -0.014005 -0.007145 -0.999876 +vn 0.014005 -0.007145 -0.999876 +vn 0.010655 -0.499807 -0.866071 +vn -0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn 0.010654 0.499806 -0.866072 +vn 0.014005 0.007145 -0.999876 +vn -0.010655 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn 0.010655 0.866048 -0.499848 +vn 0.010654 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn 0.013919 0.999806 -0.013919 +vn 0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn 0.013919 0.999806 0.013919 +vn 0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn 0.010655 0.866048 0.499848 +vn 0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn 0.010655 0.499806 0.866072 +vn 0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn -0.014005 0.007145 -0.999876 +vn 0.014005 0.007145 -0.999876 +vn 0.010655 0.499806 0.866072 +vn -0.999876 -0.007145 0.014006 +vn -0.866061 -0.005447 0.499908 +vn -0.866061 0.005447 0.499908 +vn -0.999876 0.007145 0.014006 +vn -0.866061 -0.005447 0.499908 +vn -0.499911 -0.005447 0.866060 +vn -0.499911 0.005447 0.866060 +vn -0.866061 0.005447 0.499908 +vn -0.499911 -0.005447 0.866060 +vn -0.014005 -0.007145 -0.999876 +vn -0.014005 0.007145 -0.999876 +vn -0.499911 0.005447 0.866060 +vn -0.014005 -0.007145 -0.999876 +vn -0.014005 0.007145 -0.999876 +vn 0.014005 0.007145 -0.999876 +vn 0.014005 -0.007145 -0.999876 +vn -0.014005 -0.007145 -0.999876 +vn -0.499911 -0.005447 -0.866060 +vn -0.499911 0.005447 -0.866060 +vn -0.014005 0.007145 -0.999876 +vn -0.499911 -0.005447 -0.866060 +vn -0.866061 -0.005447 -0.499908 +vn -0.866061 0.005447 -0.499908 +vn -0.499911 0.005447 -0.866060 +vn -0.866061 -0.005447 -0.499908 +vn -0.999876 -0.007145 -0.014006 +vn -0.999876 0.007145 -0.014006 +vn -0.866061 0.005447 -0.499908 +vn -0.999876 -0.007145 0.014006 +vn -0.999876 0.007145 0.014006 +vn -0.999876 0.007145 -0.014006 +vn -0.999876 -0.007145 -0.014006 +vn -0.499845 0.866050 0.010655 +vn -0.013919 0.999806 0.013919 +vn -0.013919 0.999806 -0.013919 +vn -0.499845 0.866050 -0.010656 +vn -0.866071 0.499807 0.010655 +vn -0.499845 0.866050 0.010655 +vn -0.499845 0.866050 -0.010656 +vn -0.866071 0.499807 -0.010655 +vn -0.999876 0.007145 0.014006 +vn -0.866071 0.499807 0.010655 +vn -0.866071 0.499807 -0.010655 +vn -0.999876 0.007145 -0.014006 +vn -0.866071 -0.499807 0.010655 +vn -0.999876 -0.007145 0.014006 +vn -0.999876 -0.007145 -0.014006 +vn -0.866071 -0.499807 -0.010655 +vn -0.499800 -0.866075 0.010654 +vn -0.866071 -0.499807 0.010655 +vn -0.866071 -0.499807 -0.010655 +vn -0.499800 -0.866075 -0.010654 +vn -0.013912 -0.999806 -0.013912 +vn -0.013912 -0.999806 0.013912 +vn -0.499800 -0.866075 0.010654 +vn -0.499800 -0.866075 -0.010654 +vn -0.866048 -0.010655 0.499848 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.415516 -0.809128 0.415522 +vn -0.499807 -0.866071 0.010655 +vn -0.013919 0.999806 0.013919 +vn -0.005447 -0.866061 0.499908 +vn -0.415516 -0.809128 0.415522 +vn -0.415516 -0.809128 0.415522 +vn -0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 0.866072 +vn -0.415519 -0.415517 0.809129 +vn -0.415519 -0.415517 0.809129 +vn -0.499806 -0.010655 0.866072 +vn -0.866048 -0.010655 0.499848 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.415516 -0.809128 0.415522 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.809118 0.415526 0.415531 +vn -0.866050 0.499845 0.010655 +vn -0.999806 0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.809118 0.415526 0.415531 +vn -0.809118 0.415526 0.415531 +vn -0.866048 0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.415519 0.415518 0.809129 +vn -0.499806 0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.415519 0.415518 0.809129 +vn -0.415519 0.415518 0.809129 +vn -0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.809118 0.415526 0.415531 +vn -0.415519 0.415518 0.809129 +vn -0.499806 -0.010655 -0.866072 +vn -0.007145 -0.014005 -0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.415512 -0.809131 -0.415519 +vn -0.005447 -0.866061 -0.499908 +vn -0.013919 0.999806 -0.013919 +vn -0.499807 -0.866071 -0.010655 +vn -0.415512 -0.809131 -0.415519 +vn -0.415512 -0.809131 -0.415519 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.809117 -0.415527 -0.415532 +vn -0.866050 -0.499845 -0.010656 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 -0.010655 -0.499848 +vn -0.809117 -0.415527 -0.415532 +vn -0.809117 -0.415527 -0.415532 +vn -0.866048 -0.010655 -0.499848 +vn -0.499806 -0.010655 -0.866072 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.415512 -0.809131 -0.415519 +vn -0.809117 -0.415527 -0.415532 +vn -0.499807 0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.415521 0.415511 -0.809131 +vn -0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.415521 0.415511 -0.809131 +vn -0.415521 0.415511 -0.809131 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.809119 0.415522 -0.415533 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 -0.010656 +vn -0.809119 0.415522 -0.415533 +vn -0.809119 0.415522 -0.415533 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 -0.010655 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.415521 0.415511 -0.809131 +vn -0.809119 0.415522 -0.415533 +vn -0.499806 0.010654 -0.866072 +vn -0.007145 0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.499806 0.010654 -0.866072 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866048 0.010655 -0.499848 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 0.013919 0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.866048 0.010655 0.499848 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010655 0.866072 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.013919 0.999806 -0.013919 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.013919 0.999806 -0.013919 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 -0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.866050 0.499845 0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 0.013919 0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.999806 -0.013919 -0.013919 +vn -0.866050 -0.499845 -0.010656 +vn -0.866050 -0.499845 0.010655 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 -0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 -0.010655 +vn -0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn -0.499807 -0.866071 0.010655 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.499807 -0.866071 -0.010655 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.866050 -0.499845 0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.866050 -0.499845 0.010655 +vn -0.999806 -0.013919 0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.866048 0.010655 0.499848 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010655 0.866072 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.999806 0.013919 0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 -0.010655 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.007145 0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.499806 0.010654 -0.866072 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866048 0.010655 -0.499848 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 -0.013919 -0.013919 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn -0.866048 -0.010655 0.499848 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.415516 -0.809128 0.415522 +vn -0.499807 -0.866071 0.010655 +vn -0.007145 -0.999876 0.014006 +vn -0.005447 -0.866061 0.499908 +vn -0.415516 -0.809128 0.415522 +vn -0.415516 -0.809128 0.415522 +vn -0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 0.866072 +vn -0.415519 -0.415517 0.809129 +vn -0.415519 -0.415517 0.809129 +vn -0.499806 -0.010655 0.866072 +vn -0.866048 -0.010655 0.499848 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.415516 -0.809128 0.415522 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.809118 0.415526 0.415531 +vn -0.866050 0.499845 0.010655 +vn -0.999806 0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.809118 0.415526 0.415531 +vn -0.809118 0.415526 0.415531 +vn -0.866048 0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.415519 0.415518 0.809129 +vn -0.499806 0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.415519 0.415518 0.809129 +vn -0.415519 0.415518 0.809129 +vn -0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.809118 0.415526 0.415531 +vn -0.415519 0.415518 0.809129 +vn -0.499806 -0.010655 -0.866072 +vn -0.007145 -0.014005 -0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.415512 -0.809131 -0.415519 +vn -0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 -0.010655 +vn -0.415512 -0.809131 -0.415519 +vn -0.415512 -0.809131 -0.415519 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.809117 -0.415527 -0.415532 +vn -0.866050 -0.499845 -0.010656 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 -0.010655 -0.499848 +vn -0.809117 -0.415527 -0.415532 +vn -0.809117 -0.415527 -0.415532 +vn -0.866048 -0.010655 -0.499848 +vn -0.499806 -0.010655 -0.866072 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.415512 -0.809131 -0.415519 +vn -0.809117 -0.415527 -0.415532 +vn -0.499807 0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.415521 0.415511 -0.809131 +vn -0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.415521 0.415511 -0.809131 +vn -0.415521 0.415511 -0.809131 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.809119 0.415522 -0.415533 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 -0.010656 +vn -0.809119 0.415522 -0.415533 +vn -0.809119 0.415522 -0.415533 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 -0.010655 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.415521 0.415511 -0.809131 +vn -0.809119 0.415522 -0.415533 +vn -0.999806 0.013919 0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 -0.013919 0.013919 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.499807 -0.866071 -0.010655 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.866050 -0.499845 0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.866050 -0.499845 0.010655 +vn -0.999806 -0.013919 0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.866048 0.010655 0.499848 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010655 0.866072 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.999806 0.013919 0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 -0.010655 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.499806 0.010654 -0.866072 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866048 0.010655 -0.499848 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 -0.013919 -0.013919 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn -0.866048 -0.010655 0.499848 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.415516 -0.809128 0.415522 +vn -0.499807 -0.866071 0.010655 +vn -0.007145 -0.999876 0.014006 +vn -0.005447 -0.866061 0.499908 +vn -0.415516 -0.809128 0.415522 +vn -0.415516 -0.809128 0.415522 +vn -0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 0.866072 +vn -0.415519 -0.415517 0.809129 +vn -0.415519 -0.415517 0.809129 +vn -0.499806 -0.010655 0.866072 +vn -0.866048 -0.010655 0.499848 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.415516 -0.809128 0.415522 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.809118 0.415526 0.415531 +vn -0.866050 0.499845 0.010655 +vn -0.999806 0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.809118 0.415526 0.415531 +vn -0.809118 0.415526 0.415531 +vn -0.866048 0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.415519 0.415518 0.809129 +vn -0.499806 0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.415519 0.415518 0.809129 +vn -0.415519 0.415518 0.809129 +vn -0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.809118 0.415526 0.415531 +vn -0.415519 0.415518 0.809129 +vn -0.499806 -0.010655 -0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.415512 -0.809131 -0.415519 +vn -0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 -0.010655 +vn -0.415512 -0.809131 -0.415519 +vn -0.415512 -0.809131 -0.415519 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.809117 -0.415527 -0.415532 +vn -0.866050 -0.499845 -0.010656 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 -0.010655 -0.499848 +vn -0.809117 -0.415527 -0.415532 +vn -0.809117 -0.415527 -0.415532 +vn -0.866048 -0.010655 -0.499848 +vn -0.499806 -0.010655 -0.866072 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.415512 -0.809131 -0.415519 +vn -0.809117 -0.415527 -0.415532 +vn -0.499807 0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.415521 0.415511 -0.809131 +vn -0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.415521 0.415511 -0.809131 +vn -0.415521 0.415511 -0.809131 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.809119 0.415522 -0.415533 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 -0.010656 +vn -0.809119 0.415522 -0.415533 +vn -0.809119 0.415522 -0.415533 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 -0.010655 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.415521 0.415511 -0.809131 +vn -0.809119 0.415522 -0.415533 +vn -0.999806 0.013919 0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.415516 -0.809128 0.415522 +vn -0.499807 -0.866071 0.010655 +vn -0.007145 -0.999876 0.014006 +vn -0.005447 -0.866061 0.499908 +vn -0.415516 -0.809128 0.415522 +vn -0.415516 -0.809128 0.415522 +vn -0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 0.866072 +vn -0.415519 -0.415517 0.809129 +vn -0.415519 -0.415517 0.809129 +vn -0.499806 -0.010655 0.866072 +vn -0.866048 -0.010655 0.499848 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.415516 -0.809128 0.415522 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.809118 0.415526 0.415531 +vn -0.866050 0.499845 0.010655 +vn -0.999806 0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.809118 0.415526 0.415531 +vn -0.809118 0.415526 0.415531 +vn -0.866048 0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.415519 0.415518 0.809129 +vn -0.499806 0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.415519 0.415518 0.809129 +vn -0.415519 0.415518 0.809129 +vn -0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.809118 0.415526 0.415531 +vn -0.415519 0.415518 0.809129 +vn -0.499806 -0.010655 -0.866072 +vn -0.007145 -0.014005 -0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.415512 -0.809131 -0.415519 +vn -0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 -0.010655 +vn -0.415512 -0.809131 -0.415519 +vn -0.415512 -0.809131 -0.415519 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.809117 -0.415527 -0.415532 +vn -0.866050 -0.499845 -0.010656 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 -0.010655 -0.499848 +vn -0.809117 -0.415527 -0.415532 +vn -0.809117 -0.415527 -0.415532 +vn -0.866048 -0.010655 -0.499848 +vn -0.499806 -0.010655 -0.866072 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.415512 -0.809131 -0.415519 +vn -0.809117 -0.415527 -0.415532 +vn -0.499807 0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.415521 0.415511 -0.809131 +vn -0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.415521 0.415511 -0.809131 +vn -0.415521 0.415511 -0.809131 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.809119 0.415522 -0.415533 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 -0.010656 +vn -0.809119 0.415522 -0.415533 +vn -0.809119 0.415522 -0.415533 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 -0.010655 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.415521 0.415511 -0.809131 +vn -0.809119 0.415522 -0.415533 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.499806 0.010654 -0.866072 +vn -0.007145 0.014005 -0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.866048 0.010655 -0.499848 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.866048 0.010655 0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.499806 0.010655 0.866072 +vn -0.866048 0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010655 0.866072 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 -0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.866050 0.499845 0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 0.013919 0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.999806 -0.013919 -0.013919 +vn -0.866050 -0.499845 -0.010656 +vn -0.866050 -0.499845 0.010655 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 -0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 -0.010655 +vn -0.007145 -0.999876 -0.014006 +vn -0.007145 -0.999876 0.014006 +vn -0.499807 -0.866071 0.010655 +vn 0.007145 0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.499807 -0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.866050 -0.499845 0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.866050 -0.499845 0.010655 +vn -0.999806 -0.013919 0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.866048 0.010655 0.499848 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010655 0.866072 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.999806 0.013919 0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 -0.010655 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.007145 -0.014005 -0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.499911 -0.866060 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.007145 0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.499806 0.010654 -0.866072 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866048 0.010655 -0.499848 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 -0.013919 -0.013919 +vn 0.005447 0.499911 -0.866060 +vn 0.007145 0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 -0.999876 +vn 0.007145 -0.014005 -0.999876 +vn -0.007145 -0.014005 -0.999876 +vn -0.007145 0.014005 -0.999876 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn -0.866048 -0.010655 0.499848 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.415516 -0.809128 0.415522 +vn -0.499807 -0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.005447 -0.866061 0.499908 +vn -0.415516 -0.809128 0.415522 +vn -0.415516 -0.809128 0.415522 +vn -0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 0.866072 +vn -0.415519 -0.415517 0.809129 +vn -0.415519 -0.415517 0.809129 +vn -0.499806 -0.010655 0.866072 +vn -0.866048 -0.010655 0.499848 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.415516 -0.809128 0.415522 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.809118 0.415526 0.415531 +vn -0.866050 0.499845 0.010655 +vn -0.999806 0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.809118 0.415526 0.415531 +vn -0.809118 0.415526 0.415531 +vn -0.866048 0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.415519 0.415518 0.809129 +vn -0.499806 0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.415519 0.415518 0.809129 +vn -0.415519 0.415518 0.809129 +vn -0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.809118 0.415526 0.415531 +vn -0.415519 0.415518 0.809129 +vn -0.499806 -0.010655 -0.866072 +vn -0.007145 -0.014005 -0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.415512 -0.809131 -0.415519 +vn -0.005447 -0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 -0.866071 -0.010655 +vn -0.415512 -0.809131 -0.415519 +vn -0.415512 -0.809131 -0.415519 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.809117 -0.415527 -0.415532 +vn -0.866050 -0.499845 -0.010656 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 -0.010655 -0.499848 +vn -0.809117 -0.415527 -0.415532 +vn -0.809117 -0.415527 -0.415532 +vn -0.866048 -0.010655 -0.499848 +vn -0.499806 -0.010655 -0.866072 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.415512 -0.809131 -0.415519 +vn -0.809117 -0.415527 -0.415532 +vn -0.499807 0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.415521 0.415511 -0.809131 +vn -0.005447 0.499911 -0.866060 +vn -0.007145 0.014005 -0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.415521 0.415511 -0.809131 +vn -0.415521 0.415511 -0.809131 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.809119 0.415522 -0.415533 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 -0.010656 +vn -0.809119 0.415522 -0.415533 +vn -0.809119 0.415522 -0.415533 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 -0.010655 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.415521 0.415511 -0.809131 +vn -0.809119 0.415522 -0.415533 +vn -0.999806 0.013919 0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866061 -0.005447 0.499908 +vn -0.999876 -0.007145 0.014006 +vn -0.866071 -0.499807 0.010655 +vn -0.809129 -0.415515 0.415522 +vn -0.809129 -0.415515 0.415522 +vn -0.866071 -0.499807 0.010655 +vn -0.499800 -0.866075 0.010654 +vn -0.415511 -0.809133 0.415516 +vn -0.499800 -0.866075 0.010654 +vn -0.013919 0.999806 0.013919 +vn -0.010654 -0.866074 0.499803 +vn -0.415511 -0.809133 0.415516 +vn -0.415511 -0.809133 0.415516 +vn -0.010654 -0.866074 0.499803 +vn -0.010655 -0.499807 0.866071 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 -0.499807 0.866071 +vn -0.014005 -0.007145 0.999876 +vn -0.499911 -0.005447 0.866060 +vn -0.415518 -0.415519 0.809129 +vn -0.415518 -0.415519 0.809129 +vn -0.499911 -0.005447 0.866060 +vn -0.866061 -0.005447 0.499908 +vn -0.809129 -0.415515 0.415522 +vn -0.809129 -0.415515 0.415522 +vn -0.415511 -0.809133 0.415516 +vn -0.415518 -0.415519 0.809129 +vn -0.010655 0.866048 0.499848 +vn -0.013919 0.999806 0.013919 +vn -0.499845 0.866050 0.010655 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.499845 0.866050 0.010655 +vn -0.866071 0.499807 0.010655 +vn -0.809128 0.415516 0.415522 +vn -0.866071 0.499807 0.010655 +vn -0.999876 0.007145 0.014006 +vn -0.866061 0.005447 0.499908 +vn -0.809128 0.415516 0.415522 +vn -0.809128 0.415516 0.415522 +vn -0.866061 0.005447 0.499908 +vn -0.499911 0.005447 0.866060 +vn -0.415517 0.415519 0.809129 +vn -0.499911 0.005447 0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.010655 0.499806 0.866072 +vn -0.415517 0.415519 0.809129 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 0.866072 +vn -0.010655 0.866048 0.499848 +vn -0.415527 0.809117 0.415532 +vn -0.415527 0.809117 0.415532 +vn -0.809128 0.415516 0.415522 +vn -0.415517 0.415519 0.809129 +vn -0.010655 0.499806 -0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.499911 0.005447 -0.866060 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.499911 0.005447 -0.866060 +vn -0.866061 0.005447 -0.499908 +vn -0.809131 0.415512 -0.415519 +vn -0.866061 0.005447 -0.499908 +vn -0.999876 0.007145 -0.014006 +vn -0.866071 0.499807 -0.010655 +vn -0.809131 0.415512 -0.415519 +vn -0.809131 0.415512 -0.415519 +vn -0.866071 0.499807 -0.010655 +vn -0.499845 0.866050 -0.010656 +vn -0.415527 0.809117 -0.415532 +vn -0.499845 0.866050 -0.010656 +vn -0.013919 0.999806 -0.013919 +vn -0.010655 0.866048 -0.499848 +vn -0.415527 0.809117 -0.415532 +vn -0.415527 0.809117 -0.415532 +vn -0.010655 0.866048 -0.499848 +vn -0.010655 0.499806 -0.866072 +vn -0.415517 0.415519 -0.809129 +vn -0.415517 0.415519 -0.809129 +vn -0.809131 0.415512 -0.415519 +vn -0.415527 0.809117 -0.415532 +vn -0.010654 -0.866074 -0.499803 +vn -0.013919 0.999806 -0.013919 +vn -0.499800 -0.866075 -0.010654 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.499800 -0.866075 -0.010654 +vn -0.866071 -0.499807 -0.010655 +vn -0.809131 -0.415514 -0.415519 +vn -0.866071 -0.499807 -0.010655 +vn -0.999876 -0.007145 -0.014006 +vn -0.866061 -0.005447 -0.499908 +vn -0.809131 -0.415514 -0.415519 +vn -0.809131 -0.415514 -0.415519 +vn -0.866061 -0.005447 -0.499908 +vn -0.499911 -0.005447 -0.866060 +vn -0.415512 -0.415520 -0.809131 +vn -0.499911 -0.005447 -0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.010654 -0.499807 -0.866071 +vn -0.415512 -0.415520 -0.809131 +vn -0.415512 -0.415520 -0.809131 +vn -0.010654 -0.499807 -0.866071 +vn -0.010654 -0.866074 -0.499803 +vn -0.415508 -0.809135 -0.415517 +vn -0.415508 -0.809135 -0.415517 +vn -0.809131 -0.415514 -0.415519 +vn -0.415512 -0.415520 -0.809131 +vn -0.007145 0.014005 0.999876 +vn -0.010655 0.499806 -0.866072 +vn 0.010654 0.499806 -0.866072 +vn 0.007145 0.014005 0.999876 +vn -0.010655 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn 0.010655 0.866048 -0.499848 +vn 0.010654 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn 0.013919 0.999806 -0.013919 +vn 0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn 0.013919 0.999806 0.013919 +vn 0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn 0.010655 0.866048 0.499848 +vn 0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn 0.010655 0.499806 0.866072 +vn 0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn -0.014005 0.007145 0.999876 +vn 0.014005 0.007145 0.999876 +vn 0.010655 0.499806 0.866072 +vn -0.014005 -0.007145 0.999876 +vn -0.010655 -0.499807 0.866071 +vn 0.010655 -0.499807 0.866071 +vn 0.014005 -0.007145 0.999876 +vn -0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn 0.010654 -0.866074 0.499803 +vn 0.010655 -0.499807 0.866071 +vn -0.010654 -0.866074 0.499803 +vn -0.013919 0.999806 0.013919 +vn 0.013919 0.999806 0.013919 +vn 0.010654 -0.866074 0.499803 +vn -0.866061 0.005447 0.499908 +vn -0.999876 0.007145 0.014006 +vn -0.999876 -0.007145 0.014006 +vn -0.866061 -0.005447 0.499908 +vn -0.499911 0.005447 0.866060 +vn -0.866061 0.005447 0.499908 +vn -0.866061 -0.005447 0.499908 +vn -0.499911 -0.005447 0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.499911 0.005447 0.866060 +vn -0.499911 -0.005447 0.866060 +vn -0.014005 -0.007145 0.999876 +vn -0.499911 0.005447 -0.866060 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn -0.499911 -0.005447 -0.866060 +vn -0.866061 0.005447 -0.499908 +vn -0.499911 0.005447 -0.866060 +vn -0.499911 -0.005447 -0.866060 +vn -0.866061 -0.005447 -0.499908 +vn -0.999876 0.007145 -0.014006 +vn -0.866061 0.005447 -0.499908 +vn -0.866061 -0.005447 -0.499908 +vn -0.999876 -0.007145 -0.014006 +vn -0.999876 0.007145 0.014006 +vn -0.999876 0.007145 -0.014006 +vn -0.999876 -0.007145 -0.014006 +vn -0.999876 -0.007145 0.014006 +vn -0.013919 0.999806 -0.013919 +vn -0.499845 0.866050 -0.010656 +vn -0.499845 0.866050 0.010655 +vn -0.013919 0.999806 0.013919 +vn -0.499845 0.866050 -0.010656 +vn -0.866071 0.499807 -0.010655 +vn -0.866071 0.499807 0.010655 +vn -0.499845 0.866050 0.010655 +vn -0.866071 0.499807 -0.010655 +vn -0.999876 0.007145 -0.014006 +vn -0.999876 0.007145 0.014006 +vn -0.866071 0.499807 0.010655 +vn -0.999876 -0.007145 -0.014006 +vn -0.866071 -0.499807 -0.010655 +vn -0.866071 -0.499807 0.010655 +vn -0.999876 -0.007145 0.014006 +vn -0.866071 -0.499807 -0.010655 +vn -0.499800 -0.866075 -0.010654 +vn -0.499800 -0.866075 0.010654 +vn -0.866071 -0.499807 0.010655 +vn -0.499800 -0.866075 -0.010654 +vn -0.013919 0.999806 -0.013919 +vn -0.013919 0.999806 0.013919 +vn -0.499800 -0.866075 0.010654 +vn -0.866048 -0.010655 0.499848 +vn -0.999806 -0.013919 0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.866050 -0.499845 0.010655 +vn -0.499807 -0.866071 0.010655 +vn -0.415516 -0.809128 0.415522 +vn -0.499807 -0.866071 0.010655 +vn -0.007145 -0.999876 0.014006 +vn -0.005447 -0.866061 0.499908 +vn -0.415516 -0.809128 0.415522 +vn -0.415516 -0.809128 0.415522 +vn -0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.499806 -0.010655 0.866072 +vn -0.415519 -0.415517 0.809129 +vn -0.415519 -0.415517 0.809129 +vn -0.499806 -0.010655 0.866072 +vn -0.866048 -0.010655 0.499848 +vn -0.809117 -0.415527 0.415532 +vn -0.809117 -0.415527 0.415532 +vn -0.415516 -0.809128 0.415522 +vn -0.415519 -0.415517 0.809129 +vn -0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.499807 0.866071 0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.809118 0.415526 0.415531 +vn -0.866050 0.499845 0.010655 +vn -0.999806 0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.809118 0.415526 0.415531 +vn -0.809118 0.415526 0.415531 +vn -0.866048 0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.415519 0.415518 0.809129 +vn -0.499806 0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.415519 0.415518 0.809129 +vn -0.415519 0.415518 0.809129 +vn -0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.415515 0.809129 0.415522 +vn -0.415515 0.809129 0.415522 +vn -0.809118 0.415526 0.415531 +vn -0.415519 0.415518 0.809129 +vn -0.499806 -0.010655 -0.866072 +vn -0.014005 -0.007145 0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.415512 -0.809131 -0.415519 +vn -0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.499807 -0.866071 -0.010655 +vn -0.415512 -0.809131 -0.415519 +vn -0.415512 -0.809131 -0.415519 +vn -0.499807 -0.866071 -0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.809117 -0.415527 -0.415532 +vn -0.866050 -0.499845 -0.010656 +vn -0.999806 -0.013919 -0.013919 +vn -0.866048 -0.010655 -0.499848 +vn -0.809117 -0.415527 -0.415532 +vn -0.809117 -0.415527 -0.415532 +vn -0.866048 -0.010655 -0.499848 +vn -0.499806 -0.010655 -0.866072 +vn -0.415519 -0.415517 -0.809129 +vn -0.415519 -0.415517 -0.809129 +vn -0.415512 -0.809131 -0.415519 +vn -0.809117 -0.415527 -0.415532 +vn -0.499807 0.866071 -0.010655 +vn -0.007145 0.999876 -0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.415521 0.415511 -0.809131 +vn -0.005447 0.499911 -0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.499806 0.010654 -0.866072 +vn -0.415521 0.415511 -0.809131 +vn -0.415521 0.415511 -0.809131 +vn -0.499806 0.010654 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.809119 0.415522 -0.415533 +vn -0.866048 0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 0.499845 -0.010656 +vn -0.809119 0.415522 -0.415533 +vn -0.809119 0.415522 -0.415533 +vn -0.866050 0.499845 -0.010656 +vn -0.499807 0.866071 -0.010655 +vn -0.415514 0.809131 -0.415519 +vn -0.415514 0.809131 -0.415519 +vn -0.415521 0.415511 -0.809131 +vn -0.809119 0.415522 -0.415533 +vn -0.499806 0.010654 -0.866072 +vn -0.014005 0.007145 0.999876 +vn -0.014005 -0.007145 0.999876 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 0.010655 -0.499848 +vn -0.499806 0.010654 -0.866072 +vn -0.499806 -0.010655 -0.866072 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 0.013919 -0.013919 +vn -0.866048 0.010655 -0.499848 +vn -0.866048 -0.010655 -0.499848 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 0.013919 0.013919 +vn -0.999806 0.013919 -0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 0.010655 0.499848 +vn -0.999806 0.013919 0.013919 +vn -0.999806 -0.013919 0.013919 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 0.010655 0.866072 +vn -0.866048 0.010655 0.499848 +vn -0.866048 -0.010655 0.499848 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 0.014005 0.999876 +vn -0.499806 0.010655 0.866072 +vn -0.499806 -0.010655 0.866072 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.866061 0.499908 +vn -0.007145 -0.999876 0.014006 +vn 0.007145 -0.999876 0.014006 +vn 0.005447 -0.866061 0.499908 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn 0.005447 -0.866061 0.499908 +vn 0.005447 -0.499911 0.866060 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn 0.005447 -0.499911 0.866060 +vn 0.007145 -0.014005 0.999876 +vn -0.007145 0.014005 0.999876 +vn -0.007145 -0.014005 0.999876 +vn 0.007145 -0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn -0.005447 0.499911 0.866060 +vn -0.007145 0.014005 0.999876 +vn 0.007145 0.014005 0.999876 +vn 0.005447 0.499911 0.866060 +vn -0.005447 0.866061 0.499908 +vn -0.005447 0.499911 0.866060 +vn 0.005447 0.499911 0.866060 +vn 0.005447 0.866061 0.499908 +vn -0.007145 0.999876 0.014006 +vn -0.005447 0.866061 0.499908 +vn 0.005447 0.866061 0.499908 +vn 0.007145 0.999876 0.014006 +vn -0.005447 0.866061 -0.499908 +vn -0.007145 0.999876 -0.014006 +vn 0.007145 0.999876 -0.014006 +vn 0.005447 0.866061 -0.499908 +vn -0.005447 0.499911 -0.866060 +vn -0.005447 0.866061 -0.499908 +vn 0.005447 0.866061 -0.499908 +vn 0.005447 0.499911 -0.866060 +vn -0.014005 0.007145 0.999876 +vn -0.005447 0.499911 -0.866060 +vn 0.005447 0.499911 -0.866060 +vn 0.014005 0.007145 0.999876 +vn -0.005447 -0.499911 -0.866060 +vn -0.014005 -0.007145 0.999876 +vn 0.014005 -0.007145 0.999876 +vn 0.005447 -0.499911 -0.866060 +vn -0.005447 -0.866061 -0.499908 +vn -0.005447 -0.499911 -0.866060 +vn 0.005447 -0.499911 -0.866060 +vn 0.005447 -0.866061 -0.499908 +vn -0.007145 -0.999876 -0.014006 +vn -0.005447 -0.866061 -0.499908 +vn 0.005447 -0.866061 -0.499908 +vn 0.007145 -0.999876 -0.014006 +vn -0.007145 -0.999876 0.014006 +vn -0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 -0.014006 +vn 0.007145 -0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.007145 0.999876 0.014006 +vn 0.007145 0.999876 0.014006 +vn 0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 0.010655 +vn -0.007145 0.999876 0.014006 +vn -0.007145 0.999876 -0.014006 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 0.010655 +vn -0.499807 0.866071 0.010655 +vn -0.499807 0.866071 -0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 0.013919 +vn -0.866050 0.499845 0.010655 +vn -0.866050 0.499845 -0.010656 +vn -0.999806 0.013919 -0.013919 +vn -0.866050 -0.499845 0.010655 +vn -0.999806 -0.013919 0.013919 +vn -0.999806 -0.013919 -0.013919 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 0.010655 +vn -0.866050 -0.499845 0.010655 +vn -0.866050 -0.499845 -0.010656 +vn -0.499807 -0.866071 -0.010655 +vn -0.007145 -0.999876 0.014006 +vn -0.499807 -0.866071 0.010655 +vn -0.499807 -0.866071 -0.010655 +vn -0.007145 -0.999876 -0.014006 +vn -0.013919 0.999806 0.013919 +vn -0.010655 0.866048 0.499848 +vn -1.000000 0.000000 -0.000031 +vn -0.010655 0.499806 0.866072 +vn -0.014005 0.007145 0.999876 +vn -1.000000 0.000000 -0.000031 +vn -0.010655 0.866048 0.499848 +vn -0.010655 0.499806 0.866072 +vn -1.000000 0.000000 -0.000031 +vn -0.014005 0.007145 0.999876 +vn -0.010655 0.499806 -0.866072 +vn -1.000000 0.000000 -0.000031 +vn -0.010655 0.866048 -0.499848 +vn -0.013919 0.999806 -0.013919 +vn -1.000000 0.000000 -0.000031 +vn -0.010655 0.499806 -0.866072 +vn -0.010655 0.866048 -0.499848 +vn -1.000000 0.000000 -0.000031 +vn -0.005447 -0.866061 0.499908 +vn -0.013919 0.999806 0.013919 +vn -1.000000 0.000000 -0.000031 +vn -0.005447 -0.499911 0.866060 +vn -0.005447 -0.866061 0.499908 +vn -1.000000 0.000000 -0.000031 +vn -0.007145 -0.014005 0.999876 +vn -0.005447 -0.499911 0.866060 +vn -1.000000 0.000000 -0.000031 +vn -0.013919 0.999806 -0.013919 +vn -0.010654 -0.866074 -0.499803 +vn -1.000000 0.000000 -0.000031 +vn -0.010654 -0.499807 -0.866071 +vn -0.007145 -0.014005 0.999876 +vn -1.000000 0.000000 -0.000031 +vn -0.010654 -0.866074 -0.499803 +vn -0.010654 -0.499807 -0.866071 +vn -1.000000 0.000000 -0.000031 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.327634 0.755397 0.567478 +vn 0.327634 0.755397 0.567478 +vn 0.327634 0.755397 0.567478 +vn 0.327634 0.755397 0.567478 +vn -0.327634 0.755397 0.567478 +vn -0.327634 0.755397 0.567478 +vn -0.327634 0.755397 0.567478 +vn -0.327634 0.755397 0.567478 +vn -0.406086 0.583416 0.703363 +vn -0.406086 0.583416 0.703363 +vn -0.406086 0.583416 0.703363 +vn -0.406086 0.583416 0.703363 +vn 0.406086 0.583416 0.703363 +vn 0.406086 0.583416 0.703363 +vn 0.406086 0.583416 0.703363 +vn 0.406086 0.583416 0.703363 +vn 0.812173 0.583417 0.000005 +vn 0.812173 0.583417 0.000005 +vn 0.812173 0.583417 0.000005 +vn 0.812173 0.583417 0.000005 +vn 0.406086 0.583416 -0.703363 +vn 0.406086 0.583416 -0.703363 +vn 0.406086 0.583416 -0.703363 +vn 0.406086 0.583416 -0.703363 +vn -0.406086 0.583416 -0.703363 +vn -0.406086 0.583416 -0.703363 +vn -0.406086 0.583416 -0.703363 +vn -0.406086 0.583416 -0.703363 +vn -0.812173 0.583416 -0.000005 +vn -0.812173 0.583416 -0.000005 +vn -0.812173 0.583416 -0.000005 +vn -0.812173 0.583416 -0.000005 +vn -0.500000 0.000000 0.866026 +vn -0.500000 0.000000 0.866026 +vn -0.500000 0.000000 0.866026 +vn -0.500000 0.000000 0.866026 +vn 0.500000 0.000000 0.866026 +vn 0.500000 0.000000 0.866026 +vn 0.500000 0.000000 0.866026 +vn 0.500000 0.000000 0.866026 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.500000 0.000000 -0.866026 +vn 0.500000 0.000000 -0.866026 +vn 0.500000 0.000000 -0.866026 +vn 0.500000 0.000000 -0.866026 +vn -0.500000 0.000000 -0.866026 +vn -0.500000 0.000000 -0.866026 +vn -0.500000 0.000000 -0.866026 +vn -0.500000 0.000000 -0.866026 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.796354 -0.392972 0.459775 +vn -0.645612 -0.268799 0.714795 +vn -0.866028 0.000005 0.499996 +vn -0.645612 -0.268799 0.714795 +vn -0.581325 -0.153937 0.798977 +vn -0.866028 0.000005 0.499996 +vn -0.982600 -0.153936 0.103926 +vn -0.941839 -0.268801 0.201708 +vn -0.866028 0.000005 0.499996 +vn -0.941839 -0.268801 0.201708 +vn -0.796354 -0.392972 0.459775 +vn -0.866028 0.000005 0.499996 +vn 0.941832 -0.268862 -0.201660 +vn 0.796312 -0.393076 -0.459759 +vn 0.866027 0.000003 -0.499998 +vn 0.982602 -0.153967 -0.103864 +vn 0.941832 -0.268862 -0.201660 +vn 0.866027 0.000003 -0.499998 +vn 0.645531 -0.268881 -0.714837 +vn 0.581228 -0.153967 -0.799042 +vn 0.866027 0.000003 -0.499998 +vn 0.796312 -0.393076 -0.459759 +vn 0.645531 -0.268881 -0.714837 +vn 0.866027 0.000003 -0.499998 +vn 0.002896 -0.999994 -0.001659 +vn 0.370064 -0.678634 0.634436 +vn 0.364405 -0.678634 0.637702 +vn -0.002894 -0.999994 0.001681 +vn 0.370064 -0.678634 0.634436 +vn 0.469559 -0.357416 0.807321 +vn 0.464391 -0.357416 0.810305 +vn 0.364405 -0.678634 0.637702 +vn -0.464391 -0.357416 -0.810306 +vn -0.364405 -0.678641 -0.637695 +vn -0.370065 -0.678640 -0.634429 +vn -0.469559 -0.357416 -0.807322 +vn -0.364405 -0.678641 -0.637695 +vn 0.002896 -0.999994 -0.001659 +vn -0.002894 -0.999994 0.001681 +vn -0.370065 -0.678640 -0.634429 +vn -0.002894 -0.999994 0.001681 +vn 0.364405 -0.678634 0.637702 +vn -0.645612 -0.268799 0.714795 +vn -0.796354 -0.392972 0.459775 +vn 0.364405 -0.678634 0.637702 +vn 0.464391 -0.357416 0.810305 +vn -0.581325 -0.153937 0.798977 +vn -0.645612 -0.268799 0.714795 +vn -0.469559 -0.357416 -0.807322 +vn -0.370065 -0.678640 -0.634429 +vn -0.941839 -0.268801 0.201708 +vn -0.982600 -0.153936 0.103926 +vn -0.370065 -0.678640 -0.634429 +vn -0.002894 -0.999994 0.001681 +vn -0.796354 -0.392972 0.459775 +vn -0.941839 -0.268801 0.201708 +vn 0.370064 -0.678634 0.634436 +vn 0.002896 -0.999994 -0.001659 +vn 0.796312 -0.393076 -0.459759 +vn 0.941832 -0.268862 -0.201660 +vn 0.469559 -0.357416 0.807321 +vn 0.370064 -0.678634 0.634436 +vn 0.941832 -0.268862 -0.201660 +vn 0.982602 -0.153967 -0.103864 +vn -0.364405 -0.678641 -0.637695 +vn -0.464391 -0.357416 -0.810306 +vn 0.581228 -0.153967 -0.799042 +vn 0.645531 -0.268881 -0.714837 +vn 0.002896 -0.999994 -0.001659 +vn -0.364405 -0.678641 -0.637695 +vn 0.645531 -0.268881 -0.714837 +vn 0.796312 -0.393076 -0.459759 +vn -0.488045 -0.845336 -0.217301 +vn -0.397012 -0.845337 -0.357473 +vn -0.397012 -0.845337 -0.357473 +vn -0.488045 -0.845336 -0.217301 +vn -0.531307 -0.845337 -0.055851 +vn -0.488045 -0.845336 -0.217301 +vn -0.488045 -0.845336 -0.217301 +vn -0.531307 -0.845337 -0.055851 +vn -0.522559 -0.845337 0.111077 +vn -0.531307 -0.845337 -0.055851 +vn -0.531307 -0.845337 -0.055851 +vn -0.522559 -0.845337 0.111077 +vn -0.462659 -0.845336 0.267121 +vn -0.522559 -0.845337 0.111077 +vn -0.522559 -0.845337 0.111077 +vn -0.462659 -0.845336 0.267121 +vn -0.357471 -0.845333 0.397022 +vn -0.462659 -0.845336 0.267121 +vn -0.462659 -0.845336 0.267121 +vn -0.357471 -0.845333 0.397022 +vn -0.217293 -0.845335 0.488050 +vn -0.357471 -0.845333 0.397022 +vn -0.357471 -0.845333 0.397022 +vn -0.217293 -0.845335 0.488050 +vn -0.055842 -0.845334 0.531312 +vn -0.217293 -0.845335 0.488050 +vn -0.217293 -0.845335 0.488050 +vn -0.055842 -0.845334 0.531312 +vn 0.111073 -0.845333 0.522566 +vn -0.055842 -0.845334 0.531312 +vn -0.055842 -0.845334 0.531312 +vn 0.111073 -0.845333 0.522566 +vn 0.267116 -0.845333 0.462668 +vn 0.111073 -0.845333 0.522566 +vn 0.111073 -0.845333 0.522566 +vn 0.267116 -0.845333 0.462668 +vn 0.397013 -0.845336 0.357474 +vn 0.267116 -0.845333 0.462668 +vn 0.267116 -0.845333 0.462668 +vn 0.397013 -0.845336 0.357474 +vn 0.488046 -0.845335 0.217302 +vn 0.397013 -0.845336 0.357474 +vn 0.397013 -0.845336 0.357474 +vn 0.488046 -0.845335 0.217302 +vn 0.531307 -0.845337 0.055851 +vn 0.488046 -0.845335 0.217302 +vn 0.488046 -0.845335 0.217302 +vn 0.531307 -0.845337 0.055851 +vn 0.522559 -0.845337 -0.111077 +vn 0.531307 -0.845337 0.055851 +vn 0.531307 -0.845337 0.055851 +vn 0.522559 -0.845337 -0.111077 +vn 0.462661 -0.845340 -0.267105 +vn 0.522559 -0.845337 -0.111077 +vn 0.522559 -0.845337 -0.111077 +vn 0.462661 -0.845340 -0.267105 +vn 0.357472 -0.845338 -0.397012 +vn 0.462661 -0.845340 -0.267105 +vn 0.462661 -0.845340 -0.267105 +vn 0.357472 -0.845338 -0.397011 +vn 0.217291 -0.845332 -0.488056 +vn 0.357472 -0.845338 -0.397012 +vn 0.357472 -0.845338 -0.397011 +vn 0.217291 -0.845332 -0.488056 +vn 0.055842 -0.845337 -0.531307 +vn 0.217291 -0.845332 -0.488056 +vn 0.217291 -0.845332 -0.488056 +vn 0.055843 -0.845337 -0.531307 +vn -0.111073 -0.845337 -0.522560 +vn 0.055842 -0.845337 -0.531307 +vn 0.055843 -0.845337 -0.531307 +vn -0.111073 -0.845337 -0.522560 +vn -0.267115 -0.845333 -0.462667 +vn -0.111073 -0.845337 -0.522560 +vn -0.111073 -0.845337 -0.522560 +vn -0.267115 -0.845334 -0.462667 +vn -0.397012 -0.845337 -0.357473 +vn -0.267115 -0.845333 -0.462667 +vn -0.267115 -0.845334 -0.462667 +vn -0.397012 -0.845337 -0.357473 +vn 0.000000 -1.000000 -0.000064 +vn 0.000000 -1.000000 0.000064 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 -0.000064 +vn 0.000000 -1.000000 -0.000064 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 -0.000064 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 -0.000024 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000008 +vn 0.000000 -1.000000 -0.000024 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 -0.000032 +vn 0.000000 -1.000000 0.000008 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 -0.000032 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000064 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000064 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 -0.000008 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000008 +vn 0.000000 -1.000000 -0.000008 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 -0.000048 +vn 0.000000 -1.000000 0.000008 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 -0.000048 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 0.000064 +vn 0.000000 -1.000000 0.000032 +vn 0.000000 -1.000000 0.000002 +vn 0.000000 -1.000000 -0.000009 +vn 0.000000 -1.000000 -0.000009 +vn 0.000000 -1.000000 -0.000009 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000015 +vn 0.000000 -1.000000 0.000015 +vn 0.000000 -1.000000 0.000015 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.000052 -1.000000 -0.000076 +vn -0.000052 -1.000000 -0.000076 +vn -0.000031 -1.000000 -0.000039 +vn -0.000025 -1.000000 -0.000043 +vn 0.000066 -1.000000 0.000108 +vn 0.000067 -1.000000 0.000107 +vn 0.000049 -1.000000 0.000073 +vn 0.000043 -1.000000 0.000077 +vn 0.000048 -1.000000 -0.000025 +vn -0.000052 -1.000000 -0.000076 +vn -0.000025 -1.000000 -0.000043 +vn 0.000067 -1.000000 0.000107 +vn 0.000087 -1.000000 -0.000011 +vn 0.000049 -1.000000 0.000073 +vn -0.000031 -1.000000 -0.000039 +vn -0.000052 -1.000000 -0.000076 +vn -0.000034 -1.000000 0.000037 +vn 0.000066 -1.000000 0.000108 +vn 0.000043 -1.000000 0.000077 +vn -0.000053 -1.000000 0.000070 +vn -0.000042 -1.000000 0.000053 +vn -0.000009 -1.000000 0.000011 +vn -0.000031 -1.000000 -0.000039 +vn -0.000034 -1.000000 0.000037 +vn 0.000049 -1.000000 0.000073 +vn 0.000014 -1.000000 -0.000004 +vn -0.000005 -1.000000 -0.000013 +vn -0.000093 -1.000000 -0.000004 +vn 0.000049 -1.000000 0.000073 +vn 0.000087 -1.000000 -0.000011 +vn 0.000067 -1.000000 -0.000013 +vn 0.000014 -1.000000 -0.000004 +vn 0.000014 -1.000000 -0.000004 +vn 0.000067 -1.000000 -0.000013 +vn 0.000048 -1.000000 -0.000025 +vn -0.000025 -1.000000 -0.000043 +vn 0.000014 -1.000000 -0.000004 +vn -0.000025 -1.000000 -0.000043 +vn 0.000055 -1.000000 -0.000003 +vn -0.000005 -1.000000 -0.000013 +vn -0.000053 -1.000000 0.000070 +vn 0.000043 -1.000000 0.000077 +vn -0.000009 -1.000000 0.000011 +vn -0.000042 -1.000000 0.000053 +vn 0.999579 0.000000 -0.029007 +vn -0.474668 0.000000 -0.880165 +vn -0.474668 0.000000 -0.880165 +vn 0.999579 0.000000 -0.029007 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.866023 0.000000 0.500005 +vn -0.866023 0.000000 0.500005 +vn -0.866023 0.000000 0.500005 +vn -0.866023 0.000000 0.500005 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.866023 0.000000 -0.500005 +vn 0.866023 0.000000 -0.500005 +vn 0.866023 0.000000 -0.500005 +vn 0.866023 0.000000 -0.500005 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.866023 0.000000 0.500005 +vn 0.866023 0.000000 0.500005 +vn 0.866023 0.000000 0.500005 +vn 0.866023 0.000000 0.500005 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.866023 0.000000 -0.500005 +vn -0.866023 0.000000 -0.500005 +vn -0.866023 0.000000 -0.500005 +vn -0.866023 0.000000 -0.500005 +vn 0.327634 0.755396 -0.567479 +vn 0.327634 0.755396 -0.567479 +vn 0.327634 0.755396 -0.567479 +vn 0.327634 0.755396 -0.567479 +vn 0.655268 0.755397 0.000000 +vn 0.655268 0.755397 0.000000 +vn 0.655268 0.755397 0.000000 +vn 0.655268 0.755396 0.000000 +vn 0.796351 -0.392972 0.459780 +vn 0.941837 -0.268797 0.201722 +vn 0.866026 0.000007 0.500000 +vn 0.941837 -0.268797 0.201722 +vn 0.982599 -0.153934 0.103940 +vn 0.866026 0.000007 0.500000 +vn 0.581301 -0.153932 0.798996 +vn 0.645604 -0.268799 0.714802 +vn 0.866026 0.000007 0.500000 +vn 0.645604 -0.268799 0.714802 +vn 0.796351 -0.392972 0.459780 +vn 0.866026 0.000007 0.500000 +vn -0.645557 -0.268861 -0.714822 +vn -0.796312 -0.393073 -0.459762 +vn -0.866029 0.000003 -0.499994 +vn -0.581252 -0.153965 -0.799025 +vn -0.645557 -0.268861 -0.714822 +vn -0.866029 0.000003 -0.499994 +vn -0.941831 -0.268879 -0.201638 +vn -0.982605 -0.153966 -0.103837 +vn -0.866029 0.000003 -0.499994 +vn -0.796312 -0.393073 -0.459762 +vn -0.941831 -0.268879 -0.201638 +vn -0.866029 0.000003 -0.499994 +vn -0.002892 -0.999994 -0.001675 +vn 0.364407 -0.678638 -0.637697 +vn 0.370066 -0.678639 -0.634429 +vn 0.002896 -0.999994 0.001668 +vn 0.364407 -0.678638 -0.637697 +vn 0.464386 -0.357410 -0.810311 +vn 0.469554 -0.357410 -0.807327 +vn 0.370066 -0.678639 -0.634429 +vn -0.469548 -0.357408 0.807332 +vn -0.370062 -0.678638 0.634433 +vn -0.364403 -0.678637 0.637700 +vn -0.464380 -0.357408 0.810315 +vn -0.370062 -0.678638 0.634433 +vn -0.002892 -0.999994 -0.001675 +vn 0.002896 -0.999994 0.001668 +vn -0.364403 -0.678637 0.637700 +vn 0.002896 -0.999994 0.001668 +vn 0.370066 -0.678639 -0.634429 +vn 0.941837 -0.268797 0.201722 +vn 0.796351 -0.392972 0.459780 +vn 0.370066 -0.678639 -0.634429 +vn 0.469554 -0.357410 -0.807327 +vn 0.982599 -0.153934 0.103940 +vn 0.941837 -0.268797 0.201722 +vn -0.464380 -0.357408 0.810315 +vn -0.364403 -0.678637 0.637700 +vn 0.645604 -0.268799 0.714802 +vn 0.581301 -0.153932 0.798996 +vn -0.364403 -0.678637 0.637700 +vn 0.002896 -0.999994 0.001668 +vn 0.796351 -0.392972 0.459780 +vn 0.645604 -0.268799 0.714802 +vn 0.364407 -0.678638 -0.637697 +vn -0.002892 -0.999994 -0.001675 +vn -0.796312 -0.393073 -0.459762 +vn -0.645557 -0.268861 -0.714822 +vn 0.464386 -0.357410 -0.810311 +vn 0.364407 -0.678638 -0.637697 +vn -0.645557 -0.268861 -0.714822 +vn -0.581252 -0.153965 -0.799025 +vn -0.370062 -0.678638 0.634433 +vn -0.469548 -0.357408 0.807332 +vn -0.982605 -0.153966 -0.103837 +vn -0.941831 -0.268879 -0.201638 +vn -0.002892 -0.999994 -0.001675 +vn -0.370062 -0.678638 0.634433 +vn -0.941831 -0.268879 -0.201638 +vn -0.796312 -0.393073 -0.459762 +vn -0.000052 -1.000000 0.000077 +vn -0.000052 -1.000000 0.000077 +vn -0.000025 -1.000000 0.000042 +vn -0.000031 -1.000000 0.000040 +vn 0.000067 -1.000000 -0.000122 +vn 0.000066 -1.000000 -0.000122 +vn 0.000043 -1.000000 -0.000087 +vn 0.000049 -1.000000 -0.000083 +vn -0.000034 -1.000000 -0.000037 +vn -0.000052 -1.000000 0.000077 +vn -0.000031 -1.000000 0.000040 +vn 0.000066 -1.000000 -0.000122 +vn -0.000053 -1.000000 -0.000068 +vn 0.000043 -1.000000 -0.000087 +vn -0.000025 -1.000000 0.000042 +vn -0.000052 -1.000000 0.000077 +vn 0.000048 -1.000000 0.000013 +vn 0.000067 -1.000000 -0.000122 +vn 0.000049 -1.000000 -0.000083 +vn 0.000087 -1.000000 0.000014 +vn 0.000067 -1.000000 0.000007 +vn 0.000014 -1.000000 0.000001 +vn -0.000025 -1.000000 0.000042 +vn 0.000048 -1.000000 0.000013 +vn 0.000043 -1.000000 0.000077 +vn 0.000043 -1.000000 -0.000087 +vn -0.000009 -1.000000 -0.000011 +vn -0.000009 -1.000000 0.000011 +vn 0.000043 -1.000000 -0.000087 +vn -0.000053 -1.000000 -0.000068 +vn -0.000042 -1.000000 -0.000053 +vn -0.000009 -1.000000 -0.000011 +vn -0.000009 -1.000000 -0.000011 +vn -0.000042 -1.000000 -0.000053 +vn -0.000034 -1.000000 -0.000037 +vn -0.000031 -1.000000 0.000040 +vn -0.000009 -1.000000 0.000011 +vn -0.000009 -1.000000 -0.000011 +vn -0.000031 -1.000000 0.000040 +vn -0.000031 -1.000000 -0.000039 +vn 0.000087 -1.000000 0.000014 +vn 0.000049 -1.000000 -0.000083 +vn 0.000014 -1.000000 0.000001 +vn 0.000067 -1.000000 0.000007 +vn -0.474668 0.000000 0.880165 +vn -0.524910 0.000000 0.851158 +vn -0.524910 0.000000 0.851158 +vn -0.474668 0.000000 0.880165 +vn -0.524909 0.000000 -0.851158 +vn -0.524910 0.000000 0.851158 +vn -0.524910 0.000000 0.851158 +vn -0.524909 0.000000 -0.851158 +vn -0.655269 0.755396 0.000000 +vn -0.655269 0.755396 0.000000 +vn -0.655269 0.755396 0.000000 +vn -0.655269 0.755396 0.000000 +vn -0.327634 0.755397 -0.567479 +vn -0.327634 0.755397 -0.567479 +vn -0.327634 0.755397 -0.567479 +vn -0.327634 0.755396 -0.567479 +vn 0.000006 -0.392969 -0.919552 +vn -0.296223 -0.268796 -0.916515 +vn 0.000003 0.000005 -1.000000 +vn -0.296223 -0.268796 -0.916515 +vn -0.401274 -0.153934 -0.902930 +vn 0.000003 0.000005 -1.000000 +vn 0.401281 -0.153934 -0.902927 +vn 0.296228 -0.268798 -0.916513 +vn 0.000003 0.000005 -1.000000 +vn 0.296228 -0.268798 -0.916513 +vn 0.000006 -0.392969 -0.919552 +vn 0.000003 0.000005 -1.000000 +vn -0.296271 -0.268857 0.916482 +vn 0.000003 -0.393067 0.919510 +vn 0.000004 0.000002 1.000000 +vn -0.401349 -0.153966 0.902892 +vn -0.296271 -0.268857 0.916482 +vn 0.000004 0.000002 1.000000 +vn 0.296304 -0.268876 0.916466 +vn 0.401385 -0.153967 0.902875 +vn 0.000004 0.000002 1.000000 +vn 0.000003 -0.393067 0.919510 +vn 0.296304 -0.268876 0.916466 +vn 0.000004 0.000002 1.000000 +vn -0.000004 -0.999994 0.003342 +vn -0.734469 -0.678634 0.003267 +vn -0.734469 -0.678635 -0.003268 +vn -0.000002 -0.999994 -0.003342 +vn -0.734469 -0.678634 0.003267 +vn -0.933942 -0.357412 0.002984 +vn -0.933942 -0.357412 -0.002984 +vn -0.734469 -0.678635 -0.003268 +vn 0.933941 -0.357414 0.002984 +vn 0.734465 -0.678639 0.003267 +vn 0.734465 -0.678638 -0.003267 +vn 0.933941 -0.357414 -0.002984 +vn 0.734465 -0.678639 0.003267 +vn -0.000004 -0.999994 0.003342 +vn -0.000002 -0.999994 -0.003342 +vn 0.734465 -0.678638 -0.003267 +vn -0.000002 -0.999994 -0.003342 +vn -0.734469 -0.678635 -0.003268 +vn -0.296223 -0.268796 -0.916515 +vn 0.000006 -0.392969 -0.919552 +vn -0.734469 -0.678635 -0.003268 +vn -0.933942 -0.357412 -0.002984 +vn -0.401274 -0.153934 -0.902930 +vn -0.296223 -0.268796 -0.916515 +vn 0.933941 -0.357414 -0.002984 +vn 0.734465 -0.678638 -0.003267 +vn 0.296228 -0.268798 -0.916513 +vn 0.401281 -0.153934 -0.902927 +vn 0.734465 -0.678638 -0.003267 +vn -0.000002 -0.999994 -0.003342 +vn 0.000006 -0.392969 -0.919552 +vn 0.296228 -0.268798 -0.916513 +vn -0.734469 -0.678634 0.003267 +vn -0.000004 -0.999994 0.003342 +vn 0.000003 -0.393067 0.919510 +vn -0.296271 -0.268857 0.916482 +vn -0.933942 -0.357412 0.002984 +vn -0.734469 -0.678634 0.003267 +vn -0.296271 -0.268857 0.916482 +vn -0.401349 -0.153966 0.902892 +vn 0.734465 -0.678639 0.003267 +vn 0.933941 -0.357414 0.002984 +vn 0.401385 -0.153967 0.902875 +vn 0.296304 -0.268876 0.916466 +vn -0.000004 -0.999994 0.003342 +vn 0.734465 -0.678639 0.003267 +vn 0.296304 -0.268876 0.916466 +vn 0.000003 -0.393067 0.919510 +vn 0.000103 -1.000000 0.000000 +vn 0.000103 -1.000000 0.000000 +vn 0.000055 -1.000000 -0.000003 +vn 0.000055 -1.000000 0.000003 +vn -0.000133 -1.000000 0.000000 +vn -0.000133 -1.000000 0.000000 +vn -0.000093 -1.000000 0.000004 +vn -0.000093 -1.000000 -0.000004 +vn -0.000014 -1.000000 0.000044 +vn 0.000103 -1.000000 0.000000 +vn 0.000055 -1.000000 0.000003 +vn -0.000133 -1.000000 0.000000 +vn -0.000033 -1.000000 0.000087 +vn -0.000093 -1.000000 0.000004 +vn 0.000055 -1.000000 -0.000003 +vn 0.000103 -1.000000 0.000000 +vn -0.000014 -1.000000 -0.000050 +vn -0.000133 -1.000000 0.000000 +vn -0.000093 -1.000000 -0.000004 +vn -0.000033 -1.000000 -0.000065 +vn -0.000025 -1.000000 -0.000057 +vn -0.000005 -1.000000 -0.000013 +vn 0.000055 -1.000000 -0.000003 +vn -0.000014 -1.000000 -0.000050 +vn 0.000049 -1.000000 -0.000083 +vn -0.000093 -1.000000 0.000004 +vn -0.000005 -1.000000 0.000012 +vn 0.000014 -1.000000 0.000001 +vn -0.000093 -1.000000 0.000004 +vn -0.000033 -1.000000 0.000087 +vn -0.000025 -1.000000 0.000062 +vn -0.000005 -1.000000 0.000012 +vn -0.000005 -1.000000 0.000012 +vn -0.000025 -1.000000 0.000062 +vn -0.000014 -1.000000 0.000044 +vn 0.000055 -1.000000 0.000003 +vn 0.000014 -1.000000 0.000001 +vn -0.000005 -1.000000 0.000012 +vn 0.000055 -1.000000 0.000003 +vn -0.000025 -1.000000 0.000042 +vn -0.000033 -1.000000 -0.000065 +vn -0.000093 -1.000000 -0.000004 +vn -0.000005 -1.000000 -0.000013 +vn -0.000025 -1.000000 -0.000057 +vn 0.999579 0.000000 -0.029007 +vn 0.999579 0.000000 0.029007 +vn 0.999579 0.000000 0.029007 +vn 0.999579 0.000000 -0.029007 +vn -0.474668 0.000000 0.880165 +vn 0.999579 0.000000 0.029007 +vn 0.999579 0.000000 0.029007 +vn -0.474668 0.000000 0.880165 +vn -0.382232 -0.644646 0.662066 +vn -0.382232 -0.644646 0.662066 +vn -0.382232 -0.644646 0.662066 +vn -0.382232 -0.644646 0.662066 +vn 0.382237 -0.644654 0.662054 +vn 0.382237 -0.644654 0.662054 +vn 0.382237 -0.644654 0.662054 +vn 0.382237 -0.644654 0.662054 +vn 0.764474 -0.644655 0.000000 +vn 0.764474 -0.644655 0.000000 +vn 0.764474 -0.644655 0.000000 +vn 0.764474 -0.644655 0.000000 +vn 0.382232 -0.644646 -0.662066 +vn 0.382232 -0.644646 -0.662066 +vn 0.382232 -0.644646 -0.662066 +vn 0.382232 -0.644646 -0.662066 +vn -0.382228 -0.644639 -0.662074 +vn -0.382228 -0.644639 -0.662074 +vn -0.382228 -0.644639 -0.662074 +vn -0.382228 -0.644639 -0.662074 +vn -0.764474 -0.644655 0.000000 +vn -0.764474 -0.644655 0.000000 +vn -0.764474 -0.644655 0.000000 +vn -0.764474 -0.644655 0.000000 +vn -0.500007 0.000000 0.866022 +vn -0.500007 0.000000 0.866022 +vn -0.500007 0.000000 0.866022 +vn -0.500007 0.000000 0.866022 +vn 0.499998 0.000000 0.866026 +vn 0.499998 0.000000 0.866026 +vn 0.499998 0.000000 0.866026 +vn 0.499998 0.000000 0.866026 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.500001 0.000000 -0.866025 +vn 0.500001 0.000000 -0.866025 +vn 0.500001 0.000000 -0.866025 +vn 0.500001 0.000000 -0.866025 +vn -0.500001 0.000000 -0.866025 +vn -0.500001 0.000000 -0.866025 +vn -0.500001 0.000000 -0.866025 +vn -0.500001 0.000000 -0.866025 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.500000 0.000000 -0.866025 +vn -0.500000 0.000000 -0.866025 +vn -0.500000 0.000000 -0.866025 +vn -0.500000 0.000000 -0.866025 +s off +g CubeRoom_GEO +f 4/1/1 3/2/2 12/3/3 11/4/4 +f 3/2/5 2/5/6 13/6/7 12/3/8 +f 2/5/9 1/7/10 14/8/11 13/6/12 +f 8/9/13 7/10/14 24/11/15 23/12/16 +f 7/10/17 6/13/18 25/14/19 24/11/20 +f 6/13/21 5/15/22 26/16/23 25/14/24 +f 11/4/25 10/17/26 30/18/27 29/19/28 +f 10/17/29 9/20/30 31/21/31 30/18/32 +f 31/21/33 9/20/34 17/22/35 32/23/36 +f 21/24/37 20/25/38 17/22/39 16/26/40 +f 22/27/41 21/24/42 16/26/43 15/28/44 +f 23/12/45 22/27/46 15/28/47 14/8/48 +f 20/25/49 19/29/50 42/30/51 41/31/52 +f 19/29/53 18/32/54 43/33/55 42/30/56 +f 18/32/57 26/16/58 44/34/59 43/33/60 +f 46/35/61 45/36/62 29/19/63 28/37/64 +f 47/38/65 46/35/66 28/37/67 27/39/68 +f 48/40/69 47/38/70 27/39/71 35/41/72 +f 39/42/73 38/43/74 35/41/75 34/44/76 +f 40/45/77 39/42/78 34/44/79 33/46/80 +f 41/31/81 40/45/82 33/46/83 32/23/84 +f 50/47/85 49/48/86 38/43/87 37/49/88 +f 51/50/89 50/47/90 37/49/91 36/51/92 +f 52/52/93 51/50/94 36/51/95 44/34/96 +f 14/8/97 1/7/98 8/9/99 23/12/100 +f 5/15/101 52/52/102 44/34/103 26/16/104 +f 45/36/105 4/1/106 11/4/107 29/19/108 +f 16/26/109 17/22/110 9/20/111 53/53/112 +f 53/53/113 9/20/114 10/17/115 54/54/116 +f 10/17/117 11/4/118 12/3/119 54/54/120 +f 54/54/121 12/3/122 13/6/123 55/55/124 +f 13/6/125 14/8/126 15/28/127 55/55/128 +f 55/55/129 15/28/130 16/26/131 53/53/132 +f 53/53/133 54/54/134 55/55/135 +f 25/14/136 26/16/137 18/32/138 56/56/139 +f 56/56/140 18/32/141 19/29/142 57/57/143 +f 19/29/144 20/25/145 21/24/146 57/57/147 +f 57/57/148 21/24/149 22/27/150 58/58/151 +f 22/27/152 23/12/153 24/11/154 58/58/155 +f 58/58/156 24/11/157 25/14/158 56/56/159 +f 56/56/160 57/57/161 58/58/162 +f 34/44/163 35/41/164 27/39/165 59/59/166 +f 59/59/167 27/39/168 28/37/169 60/60/170 +f 28/37/171 29/19/172 30/18/173 60/60/174 +f 60/60/175 30/18/176 31/21/177 61/61/178 +f 31/21/179 32/23/180 33/46/181 61/61/182 +f 61/61/183 33/46/184 34/44/185 59/59/186 +f 59/59/187 60/60/188 61/61/189 +f 43/33/190 44/34/191 36/51/192 62/62/193 +f 62/62/194 36/51/195 37/49/196 63/63/197 +f 37/49/198 38/43/199 39/42/200 63/63/201 +f 63/63/202 39/42/203 40/45/204 64/64/205 +f 40/45/206 41/31/207 42/30/208 64/64/209 +f 64/64/210 42/30/211 43/33/212 62/62/213 +f 62/62/214 63/63/215 64/64/216 +f 20/25/217 41/31/218 32/23/219 17/22/220 +f 72/65/221 73/66/222 65/67/223 105/68/224 +f 105/68/225 65/67/226 66/69/227 106/70/228 +f 66/69/229 67/71/230 68/72/231 106/70/232 +f 106/70/233 68/72/234 69/73/235 107/74/236 +f 69/73/237 70/75/238 71/76/239 107/74/240 +f 107/74/241 71/76/242 72/65/243 105/68/244 +f 105/68/245 106/70/246 107/74/247 +f 81/77/248 82/78/249 74/79/250 108/80/251 +f 108/80/252 74/79/253 75/81/254 109/82/255 +f 75/81/256 76/83/257 77/84/258 109/82/259 +f 109/82/260 77/84/261 78/85/262 110/86/263 +f 78/85/264 79/87/265 80/88/266 110/86/267 +f 110/86/268 80/88/269 81/77/270 108/80/271 +f 108/80/272 109/82/273 110/86/274 +f 90/89/275 91/90/276 83/91/277 111/92/278 +f 111/92/279 83/91/280 84/93/281 112/94/282 +f 84/93/283 85/95/284 86/96/285 112/94/286 +f 112/94/287 86/96/288 87/97/289 113/98/290 +f 87/97/291 88/99/292 89/100/293 113/98/294 +f 113/98/295 89/100/296 90/89/297 111/92/298 +f 111/92/299 112/94/300 113/98/301 +f 99/101/302 100/102/303 92/103/304 114/104/305 +f 114/104/306 92/103/307 93/105/308 115/106/309 +f 93/105/310 94/107/311 95/108/312 115/106/313 +f 115/106/314 95/108/315 96/109/316 116/110/317 +f 96/109/318 97/111/319 98/112/320 116/110/321 +f 116/110/322 98/112/323 99/101/324 114/104/325 +f 114/104/326 115/106/327 116/110/328 +f 91/90/329 90/89/330 95/108/331 94/107/332 +f 90/89/333 89/100/334 96/109/335 95/108/336 +f 89/100/337 88/99/338 97/111/339 96/109/340 +f 70/75/341 69/73/342 80/88/343 79/87/344 +f 69/73/345 68/72/346 81/77/347 80/88/348 +f 68/72/349 67/71/350 82/78/351 81/77/352 +f 85/95/353 73/66/354 72/65/355 86/96/356 +f 72/65/357 71/76/358 87/97/359 86/96/360 +f 71/76/361 70/75/362 88/99/363 87/97/364 +f 88/99/365 70/75/366 79/87/367 97/111/368 +f 79/87/369 78/85/370 98/112/371 97/111/372 +f 78/85/373 77/84/374 99/101/375 98/112/376 +f 77/84/377 76/83/378 100/102/379 99/101/380 +f 104/113/381 103/114/382 92/103/383 100/102/384 +f 103/114/385 102/115/386 93/105/387 92/103/388 +f 102/115/389 101/116/390 94/107/391 93/105/392 +f 123/117/393 124/118/394 117/119/395 162/120/396 +f 162/120/397 117/119/398 118/121/399 163/122/400 +f 118/121/401 91/90/402 119/123/403 163/122/404 +f 163/122/405 119/123/406 120/124/407 164/125/408 +f 120/124/409 121/126/410 122/127/411 164/125/412 +f 164/125/413 122/127/414 123/117/415 162/120/416 +f 162/120/417 163/122/418 164/125/419 +f 132/128/420 94/107/421 125/129/422 165/130/423 +f 165/130/424 125/129/425 126/131/426 166/132/427 +f 126/131/428 127/133/429 128/134/430 166/132/431 +f 166/132/432 128/134/433 129/135/434 167/136/435 +f 129/135/436 130/137/437 131/138/438 167/136/439 +f 167/136/440 131/138/441 132/128/442 165/130/443 +f 165/130/444 166/132/445 167/136/446 +f 140/139/447 141/140/448 133/141/449 168/142/450 +f 168/142/451 133/141/452 134/143/453 169/144/454 +f 134/143/455 135/145/456 136/146/457 169/144/458 +f 169/144/459 136/146/460 137/147/461 170/148/462 +f 137/147/463 138/149/464 139/150/465 170/148/466 +f 170/148/467 139/150/468 140/139/469 168/142/470 +f 168/142/471 169/144/472 170/148/473 +f 149/151/474 150/152/475 142/153/476 171/154/477 +f 171/154/478 142/153/479 143/155/480 172/156/481 +f 143/155/482 144/157/483 145/158/484 172/156/485 +f 172/156/486 145/158/487 146/159/488 173/160/489 +f 146/159/490 147/161/491 148/162/492 173/160/493 +f 173/160/494 148/162/495 149/151/496 171/154/497 +f 171/154/498 172/156/499 173/160/500 +f 728/163/501 154/164/502 141/140/503 727/165/504 +f 726/166/505 727/165/506 141/140/507 140/139/508 +f 725/167/509 726/166/510 140/139/511 139/150/512 +f 724/168/513 725/167/514 139/150/515 138/149/516 +f 121/126/517 120/124/518 131/138/519 130/137/520 +f 120/124/521 119/123/522 132/128/523 131/138/524 +f 119/123/525 91/90/526 94/107/527 132/128/528 +f 722/169/529 124/118/530 123/117/531 721/170/532 +f 123/117/533 122/127/534 720/171/535 721/170/536 +f 122/127/537 121/126/538 719/172/539 720/171/540 +f 723/173/541 719/172/542 121/126/543 130/137/544 +f 130/137/545 129/135/546 148/162/547 147/161/548 +f 129/135/549 128/134/550 149/151/551 148/162/552 +f 128/134/553 127/133/554 150/152/555 149/151/556 +f 101/116/557 160/174/558 125/129/559 94/107/560 +f 160/174/561 159/175/562 126/131/563 125/129/564 +f 159/175/565 161/176/566 127/133/567 126/131/568 +f 127/133/569 161/176/570 158/177/571 150/152/572 +f 158/177/573 157/178/574 142/153/575 150/152/576 +f 157/178/577 156/179/578 143/155/579 142/153/580 +f 156/179/581 155/180/582 144/157/583 143/155/584 +f 154/164/585 153/181/586 133/141/587 141/140/588 +f 153/181/589 152/182/590 134/143/591 133/141/592 +f 152/182/593 151/183/594 135/145/595 134/143/596 +f 181/184/597 76/83/598 174/185/599 219/186/600 +f 219/186/601 174/185/602 175/187/603 220/188/604 +f 175/187/605 176/189/606 177/190/607 220/188/608 +f 220/188/609 177/190/610 178/191/611 221/192/612 +f 178/191/613 179/193/614 180/194/615 221/192/616 +f 221/192/617 180/194/618 181/184/619 219/186/620 +f 219/186/621 220/188/622 221/192/623 +f 189/195/624 190/196/625 182/197/626 222/198/627 +f 222/198/628 182/197/629 183/199/630 223/200/631 +f 183/199/632 184/201/633 185/202/634 223/200/635 +f 223/200/636 185/202/637 186/203/638 224/204/639 +f 186/203/640 187/205/641 188/206/642 224/204/643 +f 224/204/644 188/206/645 189/195/646 222/198/647 +f 222/198/648 223/200/649 224/204/650 +f 197/207/651 198/208/652 191/209/653 225/210/654 +f 225/210/655 191/209/656 192/211/657 226/212/658 +f 192/211/659 100/102/660 193/213/661 226/212/662 +f 226/212/663 193/213/664 194/214/665 227/215/666 +f 194/214/667 195/216/668 196/217/669 227/215/670 +f 227/215/671 196/217/672 197/207/673 225/210/674 +f 225/210/675 226/212/676 227/215/677 +f 206/218/678 207/219/679 199/220/680 228/221/681 +f 228/221/682 199/220/683 200/222/684 229/223/685 +f 200/222/686 201/224/687 202/225/688 229/223/689 +f 229/223/690 202/225/691 203/226/692 230/227/693 +f 203/226/694 204/228/695 205/229/696 230/227/697 +f 230/227/698 205/229/699 206/218/700 228/221/701 +f 228/221/702 229/223/703 230/227/704 +f 211/230/705 210/231/706 198/208/707 201/224/708 +f 202/225/709 201/224/710 198/208/711 197/207/712 +f 203/226/713 202/225/714 197/207/715 196/217/716 +f 204/228/717 203/226/718 196/217/719 195/216/720 +f 188/206/721 187/205/722 179/193/723 178/191/724 +f 189/195/725 188/206/726 178/191/727 177/190/728 +f 176/189/729 190/196/730 189/195/731 177/190/732 +f 76/83/733 181/184/734 193/213/735 100/102/736 +f 181/184/737 180/194/738 194/214/739 193/213/740 +f 180/194/741 179/193/742 195/216/743 194/214/744 +f 187/205/745 204/228/746 195/216/747 179/193/748 +f 187/205/749 186/203/750 205/229/751 204/228/752 +f 186/203/753 185/202/754 206/218/755 205/229/756 +f 185/202/757 184/201/758 207/219/759 206/218/760 +f 190/196/761 217/232/762 216/233/763 182/197/764 +f 216/233/765 215/234/766 183/199/767 182/197/768 +f 215/234/769 218/235/770 184/201/771 183/199/772 +f 218/235/773 214/236/774 207/219/775 184/201/776 +f 214/236/777 213/237/778 199/220/779 207/219/780 +f 213/237/781 212/238/782 200/222/783 199/220/784 +f 212/238/785 211/230/786 201/224/787 200/222/788 +f 210/231/789 209/239/790 191/209/791 198/208/792 +f 209/239/793 208/240/794 192/211/795 191/209/796 +f 208/240/797 104/113/798 100/102/799 192/211/800 +f 269/241/801 233/242/802 232/243/803 261/244/804 +f 232/243/805 231/245/806 262/246/807 261/244/808 +f 231/245/809 234/247/810 263/248/811 262/246/812 +f 237/249/813 236/250/814 246/251/815 245/252/816 +f 236/250/817 235/253/818 247/254/819 246/251/820 +f 247/254/821 235/253/822 238/255/823 248/256/824 +f 241/257/825 240/258/826 258/259/827 257/260/828 +f 240/258/829 239/261/830 259/262/831 258/259/832 +f 239/261/833 242/263/834 260/264/835 259/262/836 +f 264/265/837 263/248/838 245/252/839 244/266/840 +f 265/267/841 264/265/842 244/266/843 243/268/844 +f 266/269/845 265/267/846 243/268/847 251/270/848 +f 255/271/849 254/272/850 251/270/851 250/273/852 +f 256/274/853 255/271/854 250/273/855 249/275/856 +f 257/260/857 256/274/858 249/275/859 248/256/860 +f 276/276/861 275/277/862 254/272/863 253/278/864 +f 277/279/865 276/276/866 253/278/867 252/280/868 +f 278/281/869 277/279/870 252/280/871 260/264/872 +f 273/282/873 272/283/874 269/241/875 268/284/876 +f 274/285/877 273/282/878 268/284/879 267/286/880 +f 275/277/881 274/285/882 267/286/883 266/269/884 +f 275/277/885 266/269/886 251/270/887 254/272/888 +f 263/248/889 234/247/890 237/249/891 245/252/892 +f 250/273/893 251/270/894 243/268/895 279/287/896 +f 279/287/897 243/268/898 244/266/899 280/288/900 +f 244/266/901 245/252/902 246/251/903 280/288/904 +f 280/288/905 246/251/906 247/254/907 281/289/908 +f 247/254/909 248/256/910 249/275/911 281/289/912 +f 281/289/913 249/275/914 250/273/915 279/287/916 +f 279/287/917 280/288/918 281/289/919 +f 259/262/920 260/264/921 252/280/922 282/290/923 +f 282/290/924 252/280/925 253/278/926 283/291/927 +f 253/278/928 254/272/929 255/271/930 283/291/931 +f 283/291/932 255/271/933 256/274/934 284/292/935 +f 256/274/936 257/260/937 258/259/938 284/292/939 +f 284/292/940 258/259/941 259/262/942 282/290/943 +f 282/290/944 283/291/945 284/292/946 +f 268/284/947 269/241/948 261/244/949 285/293/950 +f 285/293/951 261/244/952 262/246/953 286/294/954 +f 262/246/955 263/248/956 264/265/957 286/294/958 +f 286/294/959 264/265/960 265/267/961 287/295/962 +f 265/267/963 266/269/964 267/286/965 287/295/966 +f 287/295/967 267/286/968 268/284/969 285/293/970 +f 285/293/971 286/294/972 287/295/973 +f 277/279/974 278/281/975 270/296/976 288/297/977 +f 288/297/978 270/296/979 271/298/980 289/299/981 +f 271/298/982 272/283/983 273/282/984 289/299/985 +f 289/299/986 273/282/987 274/285/988 290/300/989 +f 274/285/990 275/277/991 276/276/992 290/300/993 +f 290/300/994 276/276/995 277/279/996 288/297/997 +f 288/297/998 289/299/999 290/300/1000 +f 241/257/1001 257/260/1002 248/256/1003 238/255/1004 +f 294/301/1005 293/302/1006 302/303/1007 301/304/1008 +f 293/302/1009 292/305/1010 303/306/1011 302/303/1012 +f 292/305/1013 291/307/1014 304/308/1015 303/306/1016 +f 298/309/1017 297/310/1018 314/311/1019 313/312/1020 +f 297/310/1021 296/313/1022 315/314/1023 314/311/1024 +f 296/313/1025 295/315/1026 316/316/1027 315/314/1028 +f 301/304/1029 300/317/1030 320/318/1031 319/319/1032 +f 300/317/1033 299/320/1034 321/321/1035 320/318/1036 +f 321/321/1037 299/320/1038 307/322/1039 322/323/1040 +f 311/324/1041 310/325/1042 307/322/1043 306/326/1044 +f 312/327/1045 311/324/1046 306/326/1047 305/328/1048 +f 313/312/1049 312/327/1050 305/328/1051 304/308/1052 +f 310/325/1053 309/329/1054 332/330/1055 331/331/1056 +f 309/329/1057 308/332/1058 333/333/1059 332/330/1060 +f 308/332/1061 316/316/1062 334/334/1063 333/333/1064 +f 336/335/1065 335/336/1066 319/319/1067 318/337/1068 +f 337/338/1069 336/335/1070 318/337/1071 317/339/1072 +f 338/340/1073 337/338/1074 317/339/1075 325/341/1076 +f 329/342/1077 328/343/1078 325/341/1079 324/344/1080 +f 330/345/1081 329/342/1082 324/344/1083 323/346/1084 +f 331/331/1085 330/345/1086 323/346/1087 322/323/1088 +f 340/347/1089 339/348/1090 328/343/1091 327/349/1092 +f 341/350/1093 340/347/1094 327/349/1095 326/351/1096 +f 342/352/1097 341/350/1098 326/351/1099 334/334/1100 +f 304/308/1101 291/307/1102 298/309/1103 313/312/1104 +f 339/348/1105 338/340/1106 325/341/1107 328/343/1108 +f 295/315/1109 342/352/1110 334/334/1111 316/316/1112 +f 335/336/1113 294/301/1114 301/304/1115 319/319/1116 +f 306/326/1117 307/322/1118 299/320/1119 343/353/1120 +f 343/353/1121 299/320/1122 300/317/1123 344/354/1124 +f 300/317/1125 301/304/1126 302/303/1127 344/354/1128 +f 344/354/1129 302/303/1130 303/306/1131 345/355/1132 +f 303/306/1133 304/308/1134 305/328/1135 345/355/1136 +f 345/355/1137 305/328/1138 306/326/1139 343/353/1140 +f 343/353/1141 344/354/1142 345/355/1143 +f 315/314/1144 316/316/1145 308/332/1146 346/356/1147 +f 346/356/1148 308/332/1149 309/329/1150 347/357/1151 +f 309/329/1152 310/325/1153 311/324/1154 347/357/1155 +f 347/357/1156 311/324/1157 312/327/1158 348/358/1159 +f 312/327/1160 313/312/1161 314/311/1162 348/358/1163 +f 348/358/1164 314/311/1165 315/314/1166 346/356/1167 +f 346/356/1168 347/357/1169 348/358/1170 +f 324/344/1171 325/341/1172 317/339/1173 349/359/1174 +f 349/359/1175 317/339/1176 318/337/1177 350/360/1178 +f 318/337/1179 319/319/1180 320/318/1181 350/360/1182 +f 350/360/1183 320/318/1184 321/321/1185 351/361/1186 +f 321/321/1187 322/323/1188 323/346/1189 351/361/1190 +f 351/361/1191 323/346/1192 324/344/1193 349/359/1194 +f 349/359/1195 350/360/1196 351/361/1197 +f 333/333/1198 334/334/1199 326/351/1200 352/362/1201 +f 352/362/1202 326/351/1203 327/349/1204 353/363/1205 +f 327/349/1206 328/343/1207 329/342/1208 353/363/1209 +f 353/363/1210 329/342/1211 330/345/1212 354/364/1213 +f 330/345/1214 331/331/1215 332/330/1216 354/364/1217 +f 354/364/1218 332/330/1219 333/333/1220 352/362/1221 +f 352/362/1222 353/363/1223 354/364/1224 +f 310/325/1225 331/331/1226 322/323/1227 307/322/1228 +f 370/365/1229 371/366/1230 363/367/1231 407/368/1232 +f 407/368/1233 363/367/1234 364/369/1235 408/370/1236 +f 364/369/1237 365/371/1238 366/372/1239 408/370/1240 +f 408/370/1241 366/372/1242 367/373/1243 409/374/1244 +f 367/373/1245 368/375/1246 369/376/1247 409/374/1248 +f 409/374/1249 369/376/1250 370/365/1251 407/368/1252 +f 407/368/1253 408/370/1254 409/374/1255 +f 379/377/1256 380/378/1257 372/379/1258 410/380/1259 +f 410/380/1260 372/379/1261 373/381/1262 411/382/1263 +f 373/381/1264 374/383/1265 375/384/1266 411/382/1267 +f 411/382/1268 375/384/1269 376/385/1270 412/386/1271 +f 376/385/1272 377/387/1273 378/388/1274 412/386/1275 +f 412/386/1276 378/388/1277 379/377/1278 410/380/1279 +f 410/380/1280 411/382/1281 412/386/1282 +f 388/389/1283 389/390/1284 381/391/1285 413/392/1286 +f 413/392/1287 381/391/1288 382/393/1289 414/394/1290 +f 382/393/1291 383/395/1292 384/396/1293 414/394/1294 +f 414/394/1295 384/396/1296 385/397/1297 415/398/1298 +f 385/397/1299 386/399/1300 387/400/1301 415/398/1302 +f 415/398/1303 387/400/1304 388/389/1305 413/392/1306 +f 413/392/1307 414/394/1308 415/398/1309 +f 397/401/1310 398/402/1311 390/403/1312 416/404/1313 +f 416/404/1314 390/403/1315 391/405/1316 417/406/1317 +f 391/405/1318 392/407/1319 393/408/1320 417/406/1321 +f 417/406/1322 393/408/1323 394/409/1324 418/410/1325 +f 394/409/1326 395/411/1327 396/412/1328 418/410/1329 +f 418/410/1330 396/412/1331 397/401/1332 416/404/1333 +f 416/404/1334 417/406/1335 418/410/1336 +f 389/390/1337 388/389/1338 393/408/1339 392/407/1340 +f 388/389/1341 387/400/1342 394/409/1343 393/408/1344 +f 387/400/1345 386/399/1346 395/411/1347 394/409/1348 +f 371/366/1349 374/383/1350 395/411/1351 386/399/1352 +f 371/366/1353 370/365/1354 375/384/1355 374/383/1356 +f 370/365/1357 369/376/1358 376/385/1359 375/384/1360 +f 369/376/1361 368/375/1362 377/387/1363 376/385/1364 +f 358/413/1365 357/414/1366 366/372/1367 365/371/1368 +f 357/414/1369 356/415/1370 367/373/1371 366/372/1372 +f 356/415/1373 355/416/1374 368/375/1375 367/373/1376 +f 362/417/1377 361/418/1378 378/388/1379 377/387/1380 +f 361/418/1381 360/419/1382 379/377/1383 378/388/1384 +f 360/419/1385 359/420/1386 380/378/1387 379/377/1388 +f 406/421/1389 405/422/1390 390/403/1391 398/402/1392 +f 405/422/1393 404/423/1394 391/405/1395 390/403/1396 +f 404/423/1397 403/424/1398 392/407/1399 391/405/1400 +f 403/424/1401 402/425/1402 389/390/1403 392/407/1404 +f 402/425/1405 401/426/1406 381/391/1407 389/390/1408 +f 401/426/1409 400/427/1410 382/393/1411 381/391/1412 +f 400/427/1413 399/428/1414 383/395/1415 382/393/1416 +f 399/428/1417 358/413/1418 365/371/1419 383/395/1420 +f 380/378/1421 359/420/1422 406/421/1423 398/402/1424 +f 372/379/1425 380/378/1426 398/402/1427 397/401/1428 +f 373/381/1429 372/379/1430 397/401/1431 396/412/1432 +f 374/383/1433 373/381/1434 396/412/1435 395/411/1436 +f 363/367/1437 371/366/1438 386/399/1439 385/397/1440 +f 364/369/1441 363/367/1442 385/397/1443 384/396/1444 +f 365/371/1445 364/369/1446 384/396/1447 383/395/1448 +f 434/429/1449 435/430/1450 427/431/1451 467/432/1452 +f 467/432/1453 427/431/1454 428/433/1455 468/434/1456 +f 428/433/1457 429/435/1458 430/436/1459 468/434/1460 +f 468/434/1461 430/436/1462 431/437/1463 469/438/1464 +f 431/437/1465 432/439/1466 433/440/1467 469/438/1468 +f 469/438/1469 433/440/1470 434/429/1471 467/432/1472 +f 467/432/1473 468/434/1474 469/438/1475 +f 443/441/1476 444/442/1477 436/443/1478 470/444/1479 +f 470/444/1480 436/443/1481 437/445/1482 471/446/1483 +f 437/445/1484 438/447/1485 439/448/1486 471/446/1487 +f 471/446/1488 439/448/1489 440/449/1490 472/450/1491 +f 440/449/1492 441/451/1493 442/452/1494 472/450/1495 +f 472/450/1496 442/452/1497 443/441/1498 470/444/1499 +f 470/444/1500 471/446/1501 472/450/1502 +f 452/453/1503 368/375/1504 445/454/1505 473/455/1506 +f 473/455/1507 445/454/1508 446/456/1509 474/457/1510 +f 446/456/1511 447/458/1512 448/459/1513 474/457/1514 +f 474/457/1515 448/459/1516 449/460/1517 475/461/1518 +f 449/460/1519 450/462/1520 451/463/1521 475/461/1522 +f 475/461/1523 451/463/1524 452/453/1525 473/455/1526 +f 473/455/1527 474/457/1528 475/461/1529 +f 459/464/1530 460/465/1531 453/466/1532 476/467/1533 +f 476/467/1534 453/466/1535 454/468/1536 477/469/1537 +f 454/468/1538 377/387/1539 455/470/1540 477/469/1541 +f 477/469/1542 455/470/1543 456/471/1544 478/472/1545 +f 456/471/1546 457/473/1547 458/474/1548 478/472/1549 +f 478/472/1550 458/474/1551 459/464/1552 476/467/1553 +f 476/467/1554 477/469/1555 478/472/1556 +f 368/375/1557 452/453/1558 455/470/1559 377/387/1560 +f 452/453/1561 451/463/1562 456/471/1563 455/470/1564 +f 451/463/1565 450/462/1566 457/473/1567 456/471/1568 +f 435/430/1569 438/447/1570 457/473/1571 450/462/1572 +f 435/430/1573 434/429/1574 439/448/1575 438/447/1576 +f 434/429/1577 433/440/1578 440/449/1579 439/448/1580 +f 433/440/1581 432/439/1582 441/451/1583 440/449/1584 +f 422/475/1585 421/476/1586 430/436/1587 429/435/1588 +f 421/476/1589 420/477/1590 431/437/1591 430/436/1592 +f 420/477/1593 419/478/1594 432/439/1595 431/437/1596 +f 432/439/1597 419/478/1598 426/479/1599 441/451/1600 +f 426/479/1601 425/480/1602 442/452/1603 441/451/1604 +f 425/480/1605 424/481/1606 443/441/1607 442/452/1608 +f 424/481/1609 423/482/1610 444/442/1611 443/441/1612 +f 466/483/1613 465/484/1614 453/466/1615 460/465/1616 +f 465/484/1617 464/485/1618 454/468/1619 453/466/1620 +f 464/485/1621 362/417/1622 377/387/1623 454/468/1624 +f 355/416/1625 463/486/1626 445/454/1627 368/375/1628 +f 463/486/1629 462/487/1630 446/456/1631 445/454/1632 +f 462/487/1633 461/488/1634 447/458/1635 446/456/1636 +f 461/488/1637 422/475/1638 429/435/1639 447/458/1640 +f 436/443/1641 444/442/1642 460/465/1643 459/464/1644 +f 437/445/1645 436/443/1646 459/464/1647 458/474/1648 +f 438/447/1649 437/445/1650 458/474/1651 457/473/1652 +f 427/431/1653 435/430/1654 450/462/1655 449/460/1656 +f 428/433/1657 427/431/1658 449/460/1659 448/459/1660 +f 429/435/1661 428/433/1662 448/459/1663 447/458/1664 +f 494/489/1665 495/490/1666 487/491/1667 531/492/1668 +f 531/492/1669 487/491/1670 488/493/1671 532/494/1672 +f 488/493/1673 489/495/1674 490/496/1675 532/494/1676 +f 532/494/1677 490/496/1678 491/497/1679 533/498/1680 +f 491/497/1681 492/499/1682 493/500/1683 533/498/1684 +f 533/498/1685 493/500/1686 494/489/1687 531/492/1688 +f 531/492/1689 532/494/1690 533/498/1691 +f 503/501/1692 504/502/1693 496/503/1694 534/504/1695 +f 534/504/1696 496/503/1697 497/505/1698 535/506/1699 +f 497/505/1700 498/507/1701 499/508/1702 535/506/1703 +f 535/506/1704 499/508/1705 500/509/1706 536/510/1707 +f 500/509/1708 501/511/1709 502/512/1710 536/510/1711 +f 536/510/1712 502/512/1713 503/501/1714 534/504/1715 +f 534/504/1716 535/506/1717 536/510/1718 +f 512/513/1719 513/514/1720 505/515/1721 537/516/1722 +f 537/516/1723 505/515/1724 506/517/1725 538/518/1726 +f 506/517/1727 507/519/1728 508/520/1729 538/518/1730 +f 538/518/1731 508/520/1732 509/521/1733 539/522/1734 +f 509/521/1735 510/523/1736 511/524/1737 539/522/1738 +f 539/522/1739 511/524/1740 512/513/1741 537/516/1742 +f 537/516/1743 538/518/1744 539/522/1745 +f 521/525/1746 522/526/1747 514/527/1748 540/528/1749 +f 540/528/1750 514/527/1751 515/529/1752 541/530/1753 +f 515/529/1754 516/531/1755 517/532/1756 541/530/1757 +f 541/530/1758 517/532/1759 518/533/1760 542/534/1761 +f 518/533/1762 519/535/1763 520/536/1764 542/534/1765 +f 542/534/1766 520/536/1767 521/525/1768 540/528/1769 +f 540/528/1770 541/530/1771 542/534/1772 +f 513/514/1773 512/513/1774 517/532/1775 516/531/1776 +f 512/513/1777 511/524/1778 518/533/1779 517/532/1780 +f 511/524/1781 510/523/1782 519/535/1783 518/533/1784 +f 519/535/1785 510/523/1786 495/490/1787 498/507/1788 +f 495/490/1789 494/489/1790 499/508/1791 498/507/1792 +f 494/489/1793 493/500/1794 500/509/1795 499/508/1796 +f 493/500/1797 492/499/1798 501/511/1799 500/509/1800 +f 482/537/1801 481/538/1802 490/496/1803 489/495/1804 +f 481/538/1805 480/539/1806 491/497/1807 490/496/1808 +f 480/539/1809 479/540/1810 492/499/1811 491/497/1812 +f 486/541/1813 485/542/1814 502/512/1815 501/511/1816 +f 485/542/1817 484/543/1818 503/501/1819 502/512/1820 +f 484/543/1821 483/544/1822 504/502/1823 503/501/1824 +f 530/545/1825 529/546/1826 514/527/1827 522/526/1828 +f 529/546/1829 528/547/1830 515/529/1831 514/527/1832 +f 528/547/1833 527/548/1834 516/531/1835 515/529/1836 +f 527/548/1837 526/549/1838 513/514/1839 516/531/1840 +f 526/549/1841 525/550/1842 505/515/1843 513/514/1844 +f 525/550/1845 524/551/1846 506/517/1847 505/515/1848 +f 524/551/1849 523/552/1850 507/519/1851 506/517/1852 +f 504/502/1853 483/544/1854 530/545/1855 522/526/1856 +f 496/503/1857 504/502/1858 522/526/1859 521/525/1860 +f 497/505/1861 496/503/1862 521/525/1863 520/536/1864 +f 498/507/1865 497/505/1866 520/536/1867 519/535/1868 +f 487/491/1869 495/490/1870 510/523/1871 509/521/1872 +f 488/493/1873 487/491/1874 509/521/1875 508/520/1876 +f 489/495/1877 488/493/1878 508/520/1879 507/519/1880 +f 555/553/1881 556/554/1882 549/555/1883 587/556/1884 +f 587/556/1885 549/555/1886 550/557/1887 588/558/1888 +f 550/557/1889 444/442/1890 551/559/1891 588/558/1892 +f 588/558/1893 551/559/1894 552/560/1895 589/561/1896 +f 552/560/1897 553/562/1898 554/563/1899 589/561/1900 +f 589/561/1901 554/563/1902 555/553/1903 587/556/1904 +f 587/556/1905 588/558/1906 589/561/1907 +f 564/564/1908 489/495/1909 557/565/1910 590/566/1911 +f 590/566/1912 557/565/1913 558/567/1914 591/568/1915 +f 558/567/1916 559/569/1917 560/570/1918 591/568/1919 +f 591/568/1920 560/570/1921 561/571/1922 592/572/1923 +f 561/571/1924 562/573/1925 563/574/1926 592/572/1927 +f 592/572/1928 563/574/1929 564/564/1930 590/566/1931 +f 590/566/1932 591/568/1933 592/572/1934 +f 571/575/1935 572/576/1936 565/577/1937 593/578/1938 +f 593/578/1939 565/577/1940 566/579/1941 594/580/1942 +f 566/579/1943 460/465/1944 567/581/1945 594/580/1946 +f 594/580/1947 567/581/1948 568/582/1949 595/583/1950 +f 568/582/1951 569/584/1952 570/585/1953 595/583/1954 +f 595/583/1955 570/585/1956 571/575/1957 593/578/1958 +f 593/578/1959 594/580/1960 595/583/1961 +f 580/586/1962 507/519/1963 573/587/1964 596/588/1965 +f 596/588/1966 573/587/1967 574/589/1968 597/590/1969 +f 574/589/1970 575/591/1971 576/592/1972 597/590/1973 +f 597/590/1974 576/592/1975 577/593/1976 598/594/1977 +f 577/593/1978 578/595/1979 579/596/1980 598/594/1981 +f 598/594/1982 579/596/1983 580/586/1984 596/588/1985 +f 596/588/1986 597/590/1987 598/594/1988 +f 572/576/1989 571/575/1990 576/592/1991 575/591/1992 +f 571/575/1993 570/585/1994 577/593/1995 576/592/1996 +f 570/585/1997 569/584/1998 578/595/1999 577/593/2000 +f 569/584/2001 556/554/2002 559/569/2003 578/595/2004 +f 556/554/2005 555/553/2006 560/570/2007 559/569/2008 +f 555/553/2009 554/563/2010 561/571/2011 560/570/2012 +f 554/563/2013 553/562/2014 562/573/2015 561/571/2016 +f 423/482/2017 545/597/2018 551/559/2019 444/442/2020 +f 545/597/2021 544/598/2022 552/560/2023 551/559/2024 +f 544/598/2025 543/599/2026 553/562/2027 552/560/2028 +f 548/600/2029 547/601/2030 563/574/2031 562/573/2032 +f 547/601/2033 546/602/2034 564/564/2035 563/574/2036 +f 546/602/2037 482/537/2038 489/495/2039 564/564/2040 +f 523/552/2041 586/603/2042 573/587/2043 507/519/2044 +f 586/603/2045 585/604/2046 574/589/2047 573/587/2048 +f 585/604/2049 584/605/2050 575/591/2051 574/589/2052 +f 584/605/2053 583/606/2054 572/576/2055 575/591/2056 +f 583/606/2057 582/607/2058 565/577/2059 572/576/2060 +f 582/607/2061 581/608/2062 566/579/2063 565/577/2064 +f 581/608/2065 466/483/2066 460/465/2067 566/579/2068 +f 557/565/2069 489/495/2070 507/519/2071 580/586/2072 +f 558/567/2073 557/565/2074 580/586/2075 579/596/2076 +f 559/569/2077 558/567/2078 579/596/2079 578/595/2080 +f 549/555/2081 556/554/2082 569/584/2083 568/582/2084 +f 550/557/2085 549/555/2086 568/582/2087 567/581/2088 +f 444/442/2089 550/557/2090 567/581/2091 460/465/2092 +f 610/609/2093 611/610/2094 603/611/2095 643/612/2096 +f 643/612/2097 603/611/2098 604/613/2099 644/614/2100 +f 604/613/2101 605/615/2102 606/616/2103 644/614/2104 +f 644/614/2105 606/616/2106 607/617/2107 645/618/2108 +f 607/617/2109 608/619/2110 609/620/2111 645/618/2112 +f 645/618/2113 609/620/2114 610/609/2115 643/612/2116 +f 643/612/2117 644/614/2118 645/618/2119 +f 619/621/2120 620/622/2121 612/623/2122 646/624/2123 +f 646/624/2124 612/623/2125 613/625/2126 647/626/2127 +f 613/625/2128 614/627/2129 615/628/2130 647/626/2131 +f 647/626/2132 615/628/2133 616/629/2134 648/630/2135 +f 616/629/2136 617/631/2137 618/632/2138 648/630/2139 +f 648/630/2140 618/632/2141 619/621/2142 646/624/2143 +f 646/624/2144 647/626/2145 648/630/2146 +f 628/633/2147 492/499/2148 621/634/2149 649/635/2150 +f 649/635/2151 621/634/2152 622/636/2153 650/637/2154 +f 622/636/2155 623/638/2156 624/639/2157 650/637/2158 +f 650/637/2159 624/639/2160 625/640/2161 651/641/2162 +f 625/640/2163 626/642/2164 627/643/2165 651/641/2166 +f 651/641/2167 627/643/2168 628/633/2169 649/635/2170 +f 649/635/2171 650/637/2172 651/641/2173 +f 635/644/2174 636/645/2175 629/646/2176 652/647/2177 +f 652/647/2178 629/646/2179 630/648/2180 653/649/2181 +f 630/648/2182 501/511/2183 631/650/2184 653/649/2185 +f 653/649/2186 631/650/2187 632/651/2188 654/652/2189 +f 632/651/2190 633/653/2191 634/654/2192 654/652/2193 +f 654/652/2194 634/654/2195 635/644/2196 652/647/2197 +f 652/647/2198 653/649/2199 654/652/2200 +f 492/499/2201 628/633/2202 631/650/2203 501/511/2204 +f 628/633/2205 627/643/2206 632/651/2207 631/650/2208 +f 627/643/2209 626/642/2210 633/653/2211 632/651/2212 +f 626/642/2213 611/610/2214 614/627/2215 633/653/2216 +f 611/610/2217 610/609/2218 615/628/2219 614/627/2220 +f 610/609/2221 609/620/2222 616/629/2223 615/628/2224 +f 609/620/2225 608/619/2226 617/631/2227 616/629/2228 +f 602/655/2229 601/656/2230 606/616/2231 605/615/2232 +f 601/656/2233 600/657/2234 607/617/2235 606/616/2236 +f 600/657/2237 599/658/2238 608/619/2239 607/617/2240 +f 642/659/2241 641/660/2242 629/646/2243 636/645/2244 +f 641/660/2245 640/661/2246 630/648/2247 629/646/2248 +f 640/661/2249 486/541/2250 501/511/2251 630/648/2252 +f 479/540/2253 639/662/2254 621/634/2255 492/499/2256 +f 639/662/2257 638/663/2258 622/636/2259 621/634/2260 +f 638/663/2261 637/664/2262 623/638/2263 622/636/2264 +f 623/638/2265 637/664/2266 602/655/2267 605/615/2268 +f 636/645/2269 635/644/2270 612/623/2271 620/622/2272 +f 635/644/2273 634/654/2274 613/625/2275 612/623/2276 +f 634/654/2277 633/653/2278 614/627/2279 613/625/2280 +f 626/642/2281 625/640/2282 603/611/2283 611/610/2284 +f 625/640/2285 624/639/2286 604/613/2287 603/611/2288 +f 624/639/2289 623/638/2290 605/615/2291 604/613/2292 +f 665/665/2293 666/666/2294 659/667/2295 700/668/2296 +f 700/668/2297 659/667/2298 660/669/2299 701/670/2300 +f 660/669/2301 620/622/2302 661/671/2303 701/670/2304 +f 701/670/2305 661/671/2306 662/672/2307 702/673/2308 +f 662/672/2309 663/674/2310 664/675/2311 702/673/2312 +f 702/673/2313 664/675/2314 665/665/2315 700/668/2316 +f 700/668/2317 701/670/2318 702/673/2319 +f 674/676/2320 675/677/2321 667/678/2322 703/679/2323 +f 703/679/2324 667/678/2325 668/680/2326 704/681/2327 +f 668/680/2328 669/682/2329 670/683/2330 704/681/2331 +f 704/681/2332 670/683/2333 671/684/2334 705/685/2335 +f 671/684/2336 672/686/2337 673/687/2338 705/685/2339 +f 705/685/2340 673/687/2341 674/676/2342 703/679/2343 +f 703/679/2344 704/681/2345 705/685/2346 +f 682/688/2347 683/689/2348 676/690/2349 706/691/2350 +f 706/691/2351 676/690/2352 677/692/2353 707/693/2354 +f 677/692/2355 636/645/2356 678/694/2357 707/693/2358 +f 707/693/2359 678/694/2360 679/695/2361 708/696/2362 +f 679/695/2363 680/697/2364 681/698/2365 708/696/2366 +f 708/696/2367 681/698/2368 682/688/2369 706/691/2370 +f 706/691/2371 707/693/2372 708/696/2373 +f 691/699/2374 692/700/2375 684/701/2376 709/702/2377 +f 709/702/2378 684/701/2379 685/703/2380 710/704/2381 +f 685/703/2382 686/705/2383 687/706/2384 710/704/2385 +f 710/704/2386 687/706/2387 688/707/2388 711/708/2389 +f 688/707/2390 689/709/2391 690/710/2392 711/708/2393 +f 711/708/2394 690/710/2395 691/699/2396 709/702/2397 +f 709/702/2398 710/704/2399 711/708/2400 +f 687/706/2401 686/705/2402 683/689/2403 682/688/2404 +f 688/707/2405 687/706/2406 682/688/2407 681/698/2408 +f 689/709/2409 688/707/2410 681/698/2411 680/697/2412 +f 669/682/2413 689/709/2414 680/697/2415 666/666/2416 +f 670/683/2417 669/682/2418 666/666/2419 665/665/2420 +f 671/684/2421 670/683/2422 665/665/2423 664/675/2424 +f 672/686/2425 671/684/2426 664/675/2427 663/674/2428 +f 658/711/2429 657/712/2430 673/687/2431 672/686/2432 +f 657/712/2433 656/713/2434 674/676/2435 673/687/2436 +f 656/713/2437 655/714/2438 675/677/2439 674/676/2440 +f 699/715/2441 698/716/2442 684/701/2443 692/700/2444 +f 698/716/2445 697/717/2446 685/703/2447 684/701/2448 +f 697/717/2449 696/718/2450 686/705/2451 685/703/2452 +f 686/705/2453 696/718/2454 695/719/2455 683/689/2456 +f 695/719/2457 694/720/2458 676/690/2459 683/689/2460 +f 694/720/2461 693/721/2462 677/692/2463 676/690/2464 +f 693/721/2465 642/659/2466 636/645/2467 677/692/2468 +f 655/714/2469 699/715/2470 692/700/2471 675/677/2472 +f 692/700/2473 691/699/2474 667/678/2475 675/677/2476 +f 691/699/2477 690/710/2478 668/680/2479 667/678/2480 +f 690/710/2481 689/709/2482 669/682/2483 668/680/2484 +f 680/697/2485 679/695/2486 659/667/2487 666/666/2488 +f 679/695/2489 678/694/2490 660/669/2491 659/667/2492 +f 678/694/2493 636/645/2494 620/622/2495 660/669/2496 +f 553/562/2497 543/599/2498 548/600/2499 562/573/2500 +f 620/622/2501 619/621/2502 712/722/2503 713/723/2504 +f 618/632/2505 617/631/2506 714/724/2507 715/725/2508 +f 619/621/2509 618/632/2510 715/725/2511 712/722/2512 +f 661/671/2513 620/622/2514 713/723/2515 716/726/2516 +f 662/672/2517 661/671/2518 716/726/2519 717/727/2520 +f 663/674/2521 662/672/2522 717/727/2523 718/728/2524 +f 599/658/2525 714/724/2526 617/631/2527 608/619/2528 +f 718/728/2529 658/711/2530 672/686/2531 663/674/2532 +f 138/149/2533 719/172/2534 723/173/2535 724/168/2536 +f 720/171/2537 719/172/2538 138/149/2539 137/147/2540 +f 721/170/2541 720/171/2542 137/147/2543 136/146/2544 +f 135/145/2545 722/169/2546 721/170/2547 136/146/2548 +f 723/173/2549 130/137/2550 147/161/2551 724/168/2552 +f 147/161/2553 146/159/2554 725/167/2555 724/168/2556 +f 146/159/2557 145/158/2558 726/166/2559 725/167/2560 +f 145/158/2561 144/157/2562 727/165/2563 726/166/2564 +f 155/180/2565 728/163/2566 727/165/2567 144/157/2568 +f 732/729/2569 731/730/2570 740/731/2571 739/732/2572 +f 731/730/2573 730/733/2574 741/734/2575 740/731/2576 +f 730/733/2577 729/735/2578 742/736/2579 741/734/2580 +f 736/737/2581 735/738/2582 752/739/2583 751/740/2584 +f 735/738/2585 734/741/2586 753/742/2587 752/739/2588 +f 734/741/2589 733/743/2590 754/744/2591 753/742/2592 +f 739/732/2593 738/745/2594 758/746/2595 757/747/2596 +f 738/745/2597 737/748/2598 759/749/2599 758/746/2600 +f 759/749/2601 737/748/2602 745/750/2603 760/751/2604 +f 749/752/2605 748/753/2606 745/750/2607 744/754/2608 +f 750/755/2609 749/752/2610 744/754/2611 743/756/2612 +f 751/740/2613 750/755/2614 743/756/2615 742/736/2616 +f 748/753/2617 747/757/2618 770/758/2619 769/759/2620 +f 747/757/2621 746/760/2622 771/761/2623 770/758/2624 +f 746/760/2625 754/744/2626 772/762/2627 771/761/2628 +f 774/763/2629 773/764/2630 757/747/2631 756/765/2632 +f 775/766/2633 774/763/2634 756/765/2635 755/767/2636 +f 776/768/2637 775/766/2638 755/767/2639 763/769/2640 +f 767/770/2641 766/771/2642 763/769/2643 762/772/2644 +f 768/773/2645 767/770/2646 762/772/2647 761/774/2648 +f 769/759/2649 768/773/2650 761/774/2651 760/751/2652 +f 778/775/2653 777/776/2654 766/771/2655 765/777/2656 +f 779/778/2657 778/775/2658 765/777/2659 764/779/2660 +f 780/780/2661 779/778/2662 764/779/2663 772/762/2664 +f 742/736/2665 729/735/2666 736/737/2667 751/740/2668 +f 777/776/2669 776/768/2670 763/769/2671 766/771/2672 +f 733/743/2673 780/780/2674 772/762/2675 754/744/2676 +f 773/764/2677 732/729/2678 739/732/2679 757/747/2680 +f 744/754/2681 745/750/2682 737/748/2683 781/781/2684 +f 781/781/2685 737/748/2686 738/745/2687 782/782/2688 +f 738/745/2689 739/732/2690 740/731/2691 782/782/2692 +f 782/782/2693 740/731/2694 741/734/2695 783/783/2696 +f 741/734/2697 742/736/2698 743/756/2699 783/783/2700 +f 783/783/2701 743/756/2702 744/754/2703 781/781/2704 +f 781/781/2705 782/782/2706 783/783/2707 +f 753/742/2708 754/744/2709 746/760/2710 784/784/2711 +f 784/784/2712 746/760/2713 747/757/2714 785/785/2715 +f 747/757/2716 748/753/2717 749/752/2718 785/785/2719 +f 785/785/2720 749/752/2721 750/755/2722 786/786/2723 +f 750/755/2724 751/740/2725 752/739/2726 786/786/2727 +f 786/786/2728 752/739/2729 753/742/2730 784/784/2731 +f 784/784/2732 785/785/2733 786/786/2734 +f 762/772/2735 763/769/2736 755/767/2737 787/787/2738 +f 787/787/2739 755/767/2740 756/765/2741 788/788/2742 +f 756/765/2743 757/747/2744 758/746/2745 788/788/2746 +f 788/788/2747 758/746/2748 759/749/2749 789/789/2750 +f 759/749/2751 760/751/2752 761/774/2753 789/789/2754 +f 789/789/2755 761/774/2756 762/772/2757 787/787/2758 +f 787/787/2759 788/788/2760 789/789/2761 +f 771/761/2762 772/762/2763 764/779/2764 790/790/2765 +f 790/790/2766 764/779/2767 765/777/2768 791/791/2769 +f 765/777/2770 766/771/2771 767/770/2772 791/791/2773 +f 791/791/2774 767/770/2775 768/773/2776 792/792/2777 +f 768/773/2778 769/759/2779 770/758/2780 792/792/2781 +f 792/792/2782 770/758/2783 771/761/2784 790/790/2785 +f 790/790/2786 791/791/2787 792/792/2788 +f 748/753/2789 769/759/2790 760/751/2791 745/750/2792 +f 808/793/2793 809/794/2794 801/795/2795 845/796/2796 +f 845/796/2797 801/795/2798 802/797/2799 846/798/2800 +f 802/797/2801 803/799/2802 804/800/2803 846/798/2804 +f 846/798/2805 804/800/2806 805/801/2807 847/802/2808 +f 805/801/2809 806/803/2810 807/804/2811 847/802/2812 +f 847/802/2813 807/804/2814 808/793/2815 845/796/2816 +f 845/796/2817 846/798/2818 847/802/2819 +f 817/805/2820 818/806/2821 810/807/2822 848/808/2823 +f 848/808/2824 810/807/2825 811/809/2826 849/810/2827 +f 811/809/2828 812/811/2829 813/812/2830 849/810/2831 +f 849/810/2832 813/812/2833 814/813/2834 850/814/2835 +f 814/813/2836 815/815/2837 816/816/2838 850/814/2839 +f 850/814/2840 816/816/2841 817/805/2842 848/808/2843 +f 848/808/2844 849/810/2845 850/814/2846 +f 826/817/2847 827/818/2848 819/819/2849 851/820/2850 +f 851/820/2851 819/819/2852 820/821/2853 852/822/2854 +f 820/821/2855 821/823/2856 822/824/2857 852/822/2858 +f 852/822/2859 822/824/2860 823/825/2861 853/826/2862 +f 823/825/2863 824/827/2864 825/828/2865 853/826/2866 +f 853/826/2867 825/828/2868 826/817/2869 851/820/2870 +f 851/820/2871 852/822/2872 853/826/2873 +f 835/829/2874 836/830/2875 828/831/2876 854/832/2877 +f 854/832/2878 828/831/2879 829/833/2880 855/834/2881 +f 829/833/2882 830/835/2883 831/836/2884 855/834/2885 +f 855/834/2886 831/836/2887 832/837/2888 856/838/2889 +f 832/837/2890 833/839/2891 834/840/2892 856/838/2893 +f 856/838/2894 834/840/2895 835/829/2896 854/832/2897 +f 854/832/2898 855/834/2899 856/838/2900 +f 827/818/2901 826/817/2902 831/836/2903 830/835/2904 +f 826/817/2905 825/828/2906 832/837/2907 831/836/2908 +f 825/828/2909 824/827/2910 833/839/2911 832/837/2912 +f 812/811/2913 833/839/2914 824/827/2915 809/794/2916 +f 809/794/2917 808/793/2918 813/812/2919 812/811/2920 +f 808/793/2921 807/804/2922 814/813/2923 813/812/2924 +f 807/804/2925 806/803/2926 815/815/2927 814/813/2928 +f 796/841/2929 795/842/2930 804/800/2931 803/799/2932 +f 795/842/2933 794/843/2934 805/801/2935 804/800/2936 +f 794/843/2937 793/844/2938 806/803/2939 805/801/2940 +f 806/803/2941 793/844/2942 800/845/2943 815/815/2944 +f 800/845/2945 799/846/2946 816/816/2947 815/815/2948 +f 799/846/2949 798/847/2950 817/805/2951 816/816/2952 +f 798/847/2953 797/848/2954 818/806/2955 817/805/2956 +f 844/849/2957 843/850/2958 828/831/2959 836/830/2960 +f 843/850/2961 842/851/2962 829/833/2963 828/831/2964 +f 842/851/2965 841/852/2966 830/835/2967 829/833/2968 +f 840/853/2969 839/854/2970 819/819/2971 827/818/2972 +f 839/854/2973 838/855/2974 820/821/2975 819/819/2976 +f 838/855/2977 837/856/2978 821/823/2979 820/821/2980 +f 821/823/2981 837/856/2982 796/841/2983 803/799/2984 +f 797/848/2985 844/849/2986 836/830/2987 818/806/2988 +f 836/830/2989 835/829/2990 810/807/2991 818/806/2992 +f 835/829/2993 834/840/2994 811/809/2995 810/807/2996 +f 834/840/2997 833/839/2998 812/811/2999 811/809/3000 +f 824/827/3001 823/825/3002 801/795/3003 809/794/3004 +f 823/825/3005 822/824/3006 802/797/3007 801/795/3008 +f 822/824/3009 821/823/3010 803/799/3011 802/797/3012 +f 872/857/3013 873/858/3014 865/859/3015 909/860/3016 +f 909/860/3017 865/859/3018 866/861/3019 910/862/3020 +f 866/861/3021 867/863/3022 868/864/3023 910/862/3024 +f 910/862/3025 868/864/3026 869/865/3027 911/866/3028 +f 869/865/3029 870/867/3030 871/868/3031 911/866/3032 +f 911/866/3033 871/868/3034 872/857/3035 909/860/3036 +f 909/860/3037 910/862/3038 911/866/3039 +f 881/869/3040 882/870/3041 874/871/3042 912/872/3043 +f 912/872/3044 874/871/3045 875/873/3046 913/874/3047 +f 875/873/3048 876/875/3049 877/876/3050 913/874/3051 +f 913/874/3052 877/876/3053 878/877/3054 914/878/3055 +f 878/877/3056 879/879/3057 880/880/3058 914/878/3059 +f 914/878/3060 880/880/3061 881/869/3062 912/872/3063 +f 912/872/3064 913/874/3065 914/878/3066 +f 890/881/3067 891/882/3068 883/883/3069 915/884/3070 +f 915/884/3071 883/883/3072 884/885/3073 916/886/3074 +f 884/885/3075 885/887/3076 886/888/3077 916/886/3078 +f 916/886/3079 886/888/3080 887/889/3081 917/890/3082 +f 887/889/3083 888/891/3084 889/892/3085 917/890/3086 +f 917/890/3087 889/892/3088 890/881/3089 915/884/3090 +f 915/884/3091 916/886/3092 917/890/3093 +f 899/893/3094 900/894/3095 892/895/3096 918/896/3097 +f 918/896/3098 892/895/3099 893/897/3100 919/898/3101 +f 893/897/3102 894/899/3103 895/900/3104 919/898/3105 +f 919/898/3106 895/900/3107 896/901/3108 920/902/3109 +f 896/901/3110 897/903/3111 898/904/3112 920/902/3113 +f 920/902/3114 898/904/3115 899/893/3116 918/896/3117 +f 918/896/3118 919/898/3119 920/902/3120 +f 891/882/3121 890/881/3122 895/900/3123 894/899/3124 +f 890/881/3125 889/892/3126 896/901/3127 895/900/3128 +f 889/892/3129 888/891/3130 897/903/3131 896/901/3132 +f 876/875/3133 897/903/3134 888/891/3135 873/858/3136 +f 873/858/3137 872/857/3138 877/876/3139 876/875/3140 +f 872/857/3141 871/868/3142 878/877/3143 877/876/3144 +f 871/868/3145 870/867/3146 879/879/3147 878/877/3148 +f 860/905/3149 859/906/3150 868/864/3151 867/863/3152 +f 859/906/3153 858/907/3154 869/865/3155 868/864/3156 +f 858/907/3157 857/908/3158 870/867/3159 869/865/3160 +f 870/867/3161 857/908/3162 864/909/3163 879/879/3164 +f 864/909/3165 863/910/3166 880/880/3167 879/879/3168 +f 863/910/3169 862/911/3170 881/869/3171 880/880/3172 +f 862/911/3173 861/912/3174 882/870/3175 881/869/3176 +f 908/913/3177 907/914/3178 892/895/3179 900/894/3180 +f 907/914/3181 906/915/3182 893/897/3183 892/895/3184 +f 906/915/3185 905/916/3186 894/899/3187 893/897/3188 +f 904/917/3189 903/918/3190 883/883/3191 891/882/3192 +f 903/918/3193 902/919/3194 884/885/3195 883/883/3196 +f 902/919/3197 901/920/3198 885/887/3199 884/885/3200 +f 861/912/3201 908/913/3202 900/894/3203 882/870/3204 +f 900/894/3205 899/893/3206 874/871/3207 882/870/3208 +f 899/893/3209 898/904/3210 875/873/3211 874/871/3212 +f 898/904/3213 897/903/3214 876/875/3215 875/873/3216 +f 888/891/3217 887/889/3218 865/859/3219 873/858/3220 +f 887/889/3221 886/888/3222 866/861/3223 865/859/3224 +f 886/888/3225 885/887/3226 867/863/3227 866/861/3228 +f 929/921/3229 867/863/3230 923/922/3231 965/923/3232 +f 965/923/3233 923/922/3234 924/924/3235 966/925/3236 +f 924/924/3237 925/926/3238 926/927/3239 966/925/3240 +f 966/925/3241 926/927/3242 927/928/3243 967/929/3244 +f 927/928/3245 830/835/3246 928/930/3247 967/929/3248 +f 967/929/3249 928/930/3250 929/921/3251 965/923/3252 +f 965/923/3253 966/925/3254 967/929/3255 +f 939/931/3256 940/932/3257 933/933/3258 968/934/3259 +f 968/934/3260 933/933/3261 934/935/3262 969/936/3263 +f 934/935/3264 935/937/3265 936/938/3266 969/936/3267 +f 969/936/3268 936/938/3269 937/939/3270 970/940/3271 +f 937/939/3272 827/818/3273 938/941/3274 970/940/3275 +f 970/940/3276 938/941/3277 939/931/3278 968/934/3279 +f 968/934/3280 969/936/3281 970/940/3282 +f 952/942/3283 953/943/3284 945/944/3285 971/945/3286 +f 971/945/3287 945/944/3288 946/946/3289 972/947/3290 +f 946/946/3291 947/948/3292 948/949/3293 972/947/3294 +f 972/947/3295 948/949/3296 949/950/3297 973/951/3298 +f 949/950/3299 950/952/3300 951/953/3301 973/951/3302 +f 973/951/3303 951/953/3304 952/942/3305 971/945/3306 +f 971/945/3307 972/947/3308 973/951/3309 +f 963/954/3310 964/955/3311 957/956/3312 974/957/3313 +f 974/957/3314 957/956/3315 958/958/3316 975/959/3317 +f 958/958/3318 885/887/3319 959/960/3320 975/959/3321 +f 975/959/3322 959/960/3323 960/961/3324 976/962/3325 +f 960/961/3326 961/963/3327 962/964/3328 976/962/3329 +f 976/962/3330 962/964/3331 963/954/3332 974/957/3333 +f 974/957/3334 975/959/3335 976/962/3336 +f 885/887/3337 901/920/3338 956/965/3339 959/960/3340 +f 956/965/3341 955/966/3342 960/961/3343 959/960/3344 +f 955/966/3345 954/967/3346 961/963/3347 960/961/3348 +f 944/968/3349 943/969/3350 948/949/3351 947/948/3352 +f 943/969/3353 942/970/3354 949/950/3355 948/949/3356 +f 942/970/3357 941/971/3358 950/952/3359 949/950/3360 +f 950/952/3361 941/971/3362 932/972/3363 935/937/3364 +f 932/972/3365 931/973/3366 936/938/3367 935/937/3368 +f 931/973/3369 930/974/3370 937/939/3371 936/938/3372 +f 930/974/3373 840/853/3374 827/818/3375 937/939/3376 +f 841/852/3377 922/975/3378 928/930/3379 830/835/3380 +f 922/975/3381 921/976/3382 929/921/3383 928/930/3384 +f 921/976/3385 860/905/3386 867/863/3387 929/921/3388 +f 938/941/3389 827/818/3390 830/835/3391 927/928/3392 +f 939/931/3393 938/941/3394 927/928/3395 926/927/3396 +f 940/932/3397 939/931/3398 926/927/3399 925/926/3400 +f 945/944/3401 953/943/3402 964/955/3403 963/954/3404 +f 946/946/3405 945/944/3406 963/954/3407 962/964/3408 +f 947/948/3409 946/946/3410 962/964/3411 961/963/3412 +f 954/967/3413 944/968/3414 947/948/3415 961/963/3416 +f 885/887/3417 958/958/3418 923/922/3419 867/863/3420 +f 958/958/3421 957/956/3422 924/924/3423 923/922/3424 +f 957/956/3425 964/955/3426 925/926/3427 924/924/3428 +f 953/943/3429 940/932/3430 925/926/3431 964/955/3432 +f 953/943/3433 952/942/3434 933/933/3435 940/932/3436 +f 952/942/3437 951/953/3438 934/935/3439 933/933/3440 +f 951/953/3441 950/952/3442 935/937/3443 934/935/3444 +f 986/977/3445 987/978/3446 980/979/3447 1025/980/3448 +f 1025/980/3449 980/979/3450 981/981/3451 1026/982/3452 +f 981/981/3453 982/983/3454 983/984/3455 1026/982/3456 +f 1026/982/3457 983/984/3458 984/985/3459 1027/986/3460 +f 984/985/3461 894/899/3462 985/987/3463 1027/986/3464 +f 1027/986/3465 985/987/3466 986/977/3467 1025/980/3468 +f 1025/980/3469 1026/982/3470 1027/986/3471 +f 997/988/3472 998/989/3473 991/990/3474 1028/991/3475 +f 1028/991/3476 991/990/3477 992/992/3478 1029/993/3479 +f 992/992/3480 993/994/3481 994/995/3482 1029/993/3483 +f 1029/993/3484 994/995/3485 995/996/3486 1030/997/3487 +f 995/996/3488 891/882/3489 996/998/3490 1030/997/3491 +f 1030/997/3492 996/998/3493 997/988/3494 1028/991/3495 +f 1028/991/3496 1029/993/3497 1030/997/3498 +f 1010/999/3499 1011/1000/3500 1003/1001/3501 1031/1002/3502 +f 1031/1002/3503 1003/1001/3504 1004/1003/3505 1032/1004/3506 +f 1004/1003/3507 1005/1005/3508 1006/1006/3509 1032/1004/3510 +f 1032/1004/3511 1006/1006/3512 1007/1007/3513 1033/1008/3514 +f 1007/1007/3515 1008/1009/3516 1009/1010/3517 1033/1008/3518 +f 1033/1008/3519 1009/1010/3520 1010/999/3521 1031/1002/3522 +f 1031/1002/3523 1032/1004/3524 1033/1008/3525 +f 1023/1011/3526 1024/1012/3527 1016/1013/3528 1034/1014/3529 +f 1034/1014/3530 1016/1013/3531 1017/1015/3532 1035/1016/3533 +f 1017/1015/3534 1018/1017/3535 1019/1018/3536 1035/1016/3537 +f 1035/1016/3538 1019/1018/3539 1020/1019/3540 1036/1020/3541 +f 1020/1019/3542 1021/1021/3543 1022/1022/3544 1036/1020/3545 +f 1036/1020/3546 1022/1022/3547 1023/1011/3548 1034/1014/3549 +f 1034/1014/3550 1035/1016/3551 1036/1020/3552 +f 1018/1017/3553 1015/1023/3554 1014/1024/3555 1019/1018/3556 +f 1014/1024/3557 1013/1025/3558 1020/1019/3559 1019/1018/3560 +f 1013/1025/3561 1012/1026/3562 1021/1021/3563 1020/1019/3564 +f 1002/1027/3565 1001/1028/3566 1006/1006/3567 1005/1005/3568 +f 1001/1028/3569 1000/1029/3570 1007/1007/3571 1006/1006/3572 +f 1000/1029/3573 999/1030/3574 1008/1009/3575 1007/1007/3576 +f 1008/1009/3577 999/1030/3578 990/1031/3579 993/994/3580 +f 990/1031/3581 989/1032/3582 994/995/3583 993/994/3584 +f 989/1032/3585 988/1033/3586 995/996/3587 994/995/3588 +f 988/1033/3589 904/917/3590 891/882/3591 995/996/3592 +f 905/916/3593 979/1034/3594 985/987/3595 894/899/3596 +f 979/1034/3597 978/1035/3598 986/977/3599 985/987/3600 +f 978/1035/3601 977/1036/3602 987/978/3603 986/977/3604 +f 996/998/3605 891/882/3606 894/899/3607 984/985/3608 +f 997/988/3609 996/998/3610 984/985/3611 983/984/3612 +f 998/989/3613 997/988/3614 983/984/3615 982/983/3616 +f 1003/1001/3617 1011/1000/3618 1024/1012/3619 1023/1011/3620 +f 1004/1003/3621 1003/1001/3622 1023/1011/3623 1022/1022/3624 +f 1005/1005/3625 1004/1003/3626 1022/1022/3627 1021/1021/3628 +f 1012/1026/3629 1002/1027/3630 1005/1005/3631 1021/1021/3632 +f 1018/1017/3633 1017/1015/3634 980/979/3635 987/978/3636 +f 1017/1015/3637 1016/1013/3638 981/981/3639 980/979/3640 +f 1016/1013/3641 1024/1012/3642 982/983/3643 981/981/3644 +f 982/983/3645 1024/1012/3646 1011/1000/3647 998/989/3648 +f 1011/1000/3649 1010/999/3650 991/990/3651 998/989/3652 +f 1010/999/3653 1009/1010/3654 992/992/3655 991/990/3656 +f 1009/1010/3657 1008/1009/3658 993/994/3659 992/992/3660 +f 1050/1037/3661 1051/1038/3662 1044/1039/3663 1085/1040/3664 +f 1085/1040/3665 1044/1039/3666 1045/1041/3667 1086/1042/3668 +f 1045/1041/3669 987/978/3670 1046/1043/3671 1086/1042/3672 +f 1086/1042/3673 1046/1043/3674 1047/1044/3675 1087/1045/3676 +f 1047/1044/3677 1048/1046/3678 1049/1047/3679 1087/1045/3680 +f 1087/1045/3681 1049/1047/3682 1050/1037/3683 1085/1040/3684 +f 1085/1040/3685 1086/1042/3686 1087/1045/3687 +f 1059/1048/3688 1060/1049/3689 1052/1050/3690 1088/1051/3691 +f 1088/1051/3692 1052/1050/3693 1053/1052/3694 1089/1053/3695 +f 1053/1052/3696 1054/1054/3697 1055/1055/3698 1089/1053/3699 +f 1089/1053/3700 1055/1055/3701 1056/1056/3702 1090/1057/3703 +f 1056/1056/3704 1057/1058/3705 1058/1059/3706 1090/1057/3707 +f 1090/1057/3708 1058/1059/3709 1059/1048/3710 1088/1051/3711 +f 1088/1051/3712 1089/1053/3713 1090/1057/3714 +f 1067/1060/3715 1068/1061/3716 1061/1062/3717 1091/1063/3718 +f 1091/1063/3719 1061/1062/3720 1062/1064/3721 1092/1065/3722 +f 1062/1064/3723 1018/1017/3724 1063/1066/3725 1092/1065/3726 +f 1092/1065/3727 1063/1066/3728 1064/1067/3729 1093/1068/3730 +f 1064/1067/3731 1065/1069/3732 1066/1070/3733 1093/1068/3734 +f 1093/1068/3735 1066/1070/3736 1067/1060/3737 1091/1063/3738 +f 1091/1063/3739 1092/1065/3740 1093/1068/3741 +f 1076/1071/3742 1077/1072/3743 1069/1073/3744 1094/1074/3745 +f 1094/1074/3746 1069/1073/3747 1070/1075/3748 1095/1076/3749 +f 1070/1075/3750 1071/1077/3751 1072/1078/3752 1095/1076/3753 +f 1095/1076/3754 1072/1078/3755 1073/1079/3756 1096/1080/3757 +f 1073/1079/3758 1074/1081/3759 1075/1082/3760 1096/1080/3761 +f 1096/1080/3762 1075/1082/3763 1076/1071/3764 1094/1074/3765 +f 1094/1074/3766 1095/1076/3767 1096/1080/3768 +f 1072/1078/3769 1071/1077/3770 1068/1061/3771 1067/1060/3772 +f 1073/1079/3773 1072/1078/3774 1067/1060/3775 1066/1070/3776 +f 1074/1081/3777 1073/1079/3778 1066/1070/3779 1065/1069/3780 +f 1074/1081/3781 1065/1069/3782 1051/1038/3783 1054/1054/3784 +f 1055/1055/3785 1054/1054/3786 1051/1038/3787 1050/1037/3788 +f 1056/1056/3789 1055/1055/3790 1050/1037/3791 1049/1047/3792 +f 1057/1058/3793 1056/1056/3794 1049/1047/3795 1048/1046/3796 +f 977/1036/3797 1039/1083/3798 1046/1043/3799 987/978/3800 +f 1039/1083/3801 1038/1084/3802 1047/1044/3803 1046/1043/3804 +f 1038/1084/3805 1037/1085/3806 1048/1046/3807 1047/1044/3808 +f 1037/1085/3809 1043/1086/3810 1057/1058/3811 1048/1046/3812 +f 1043/1086/3813 1042/1087/3814 1058/1059/3815 1057/1058/3816 +f 1042/1087/3817 1041/1088/3818 1059/1048/3819 1058/1059/3820 +f 1041/1088/3821 1040/1089/3822 1060/1049/3823 1059/1048/3824 +f 1084/1090/3825 1083/1091/3826 1069/1073/3827 1077/1072/3828 +f 1083/1091/3829 1082/1092/3830 1070/1075/3831 1069/1073/3832 +f 1082/1092/3833 1081/1093/3834 1071/1077/3835 1070/1075/3836 +f 1071/1077/3837 1081/1093/3838 1080/1094/3839 1068/1061/3840 +f 1080/1094/3841 1079/1095/3842 1061/1062/3843 1068/1061/3844 +f 1079/1095/3845 1078/1096/3846 1062/1064/3847 1061/1062/3848 +f 1078/1096/3849 1015/1023/3850 1018/1017/3851 1062/1064/3852 +f 1040/1089/3853 1084/1090/3854 1077/1072/3855 1060/1049/3856 +f 1077/1072/3857 1076/1071/3858 1052/1050/3859 1060/1049/3860 +f 1076/1071/3861 1075/1082/3862 1053/1052/3863 1052/1050/3864 +f 1075/1082/3865 1074/1081/3866 1054/1054/3867 1053/1052/3868 +f 1065/1069/3869 1064/1067/3870 1044/1039/3871 1051/1038/3872 +f 1064/1067/3873 1063/1066/3874 1045/1041/3875 1044/1039/3876 +f 1063/1066/3877 1018/1017/3878 987/978/3879 1045/1041/3880 +f 1112/1097/3881 1113/1098/3882 1105/1099/3883 1149/1100/3884 +f 1149/1100/3885 1105/1099/3886 1106/1101/3887 1150/1102/3888 +f 1106/1101/3889 1107/1103/3890 1108/1104/3891 1150/1102/3892 +f 1150/1102/3893 1108/1104/3894 1109/1105/3895 1151/1106/3896 +f 1109/1105/3897 1110/1107/3898 1111/1108/3899 1151/1106/3900 +f 1151/1106/3901 1111/1108/3902 1112/1097/3903 1149/1100/3904 +f 1149/1100/3905 1150/1102/3906 1151/1106/3907 +f 1121/1109/3908 1122/1110/3909 1114/1111/3910 1152/1112/3911 +f 1152/1112/3912 1114/1111/3913 1115/1113/3914 1153/1114/3915 +f 1115/1113/3916 1116/1115/3917 1117/1116/3918 1153/1114/3919 +f 1153/1114/3920 1117/1116/3921 1118/1117/3922 1154/1118/3923 +f 1118/1117/3924 1119/1119/3925 1120/1120/3926 1154/1118/3927 +f 1154/1118/3928 1120/1120/3929 1121/1109/3930 1152/1112/3931 +f 1152/1112/3932 1153/1114/3933 1154/1118/3934 +f 1130/1121/3935 1131/1122/3936 1123/1123/3937 1155/1124/3938 +f 1155/1124/3939 1123/1123/3940 1124/1125/3941 1156/1126/3942 +f 1124/1125/3943 1125/1127/3944 1126/1128/3945 1156/1126/3946 +f 1156/1126/3947 1126/1128/3948 1127/1129/3949 1157/1130/3950 +f 1127/1129/3951 1128/1131/3952 1129/1132/3953 1157/1130/3954 +f 1157/1130/3955 1129/1132/3956 1130/1121/3957 1155/1124/3958 +f 1155/1124/3959 1156/1126/3960 1157/1130/3961 +f 1139/1133/3962 1140/1134/3963 1132/1135/3964 1158/1136/3965 +f 1158/1136/3966 1132/1135/3967 1133/1137/3968 1159/1138/3969 +f 1133/1137/3970 1134/1139/3971 1135/1140/3972 1159/1138/3973 +f 1159/1138/3974 1135/1140/3975 1136/1141/3976 1160/1142/3977 +f 1136/1141/3978 1137/1143/3979 1138/1144/3980 1160/1142/3981 +f 1160/1142/3982 1138/1144/3983 1139/1133/3984 1158/1136/3985 +f 1158/1136/3986 1159/1138/3987 1160/1142/3988 +f 1131/1122/3989 1130/1121/3990 1135/1140/3991 1134/1139/3992 +f 1130/1121/3993 1129/1132/3994 1136/1141/3995 1135/1140/3996 +f 1129/1132/3997 1128/1131/3998 1137/1143/3999 1136/1141/4000 +f 1116/1115/4001 1137/1143/4002 1128/1131/4003 1113/1098/4004 +f 1113/1098/4005 1112/1097/4006 1117/1116/4007 1116/1115/4008 +f 1112/1097/4009 1111/1108/4010 1118/1117/4011 1117/1116/4012 +f 1111/1108/4013 1110/1107/4014 1119/1119/4015 1118/1117/4016 +f 1100/1145/4017 1099/1146/4018 1108/1104/4019 1107/1103/4020 +f 1099/1146/4021 1098/1147/4022 1109/1105/4023 1108/1104/4024 +f 1098/1147/4025 1097/1148/4026 1110/1107/4027 1109/1105/4028 +f 1110/1107/4029 1097/1148/4030 1104/1149/4031 1119/1119/4032 +f 1104/1149/4033 1103/1150/4034 1120/1120/4035 1119/1119/4036 +f 1103/1150/4037 1102/1151/4038 1121/1109/4039 1120/1120/4040 +f 1102/1151/4041 1101/1152/4042 1122/1110/4043 1121/1109/4044 +f 1148/1153/4045 1147/1154/4046 1132/1135/4047 1140/1134/4048 +f 1147/1154/4049 1146/1155/4050 1133/1137/4051 1132/1135/4052 +f 1146/1155/4053 1145/1156/4054 1134/1139/4055 1133/1137/4056 +f 1145/1156/4057 1144/1157/4058 1131/1122/4059 1134/1139/4060 +f 1144/1157/4061 1143/1158/4062 1123/1123/4063 1131/1122/4064 +f 1143/1158/4065 1142/1159/4066 1124/1125/4067 1123/1123/4068 +f 1142/1159/4069 1141/1160/4070 1125/1127/4071 1124/1125/4072 +f 1125/1127/4073 1141/1160/4074 1100/1145/4075 1107/1103/4076 +f 1101/1152/4077 1148/1153/4078 1140/1134/4079 1122/1110/4080 +f 1140/1134/4081 1139/1133/4082 1114/1111/4083 1122/1110/4084 +f 1139/1133/4085 1138/1144/4086 1115/1113/4087 1114/1111/4088 +f 1138/1144/4089 1137/1143/4090 1116/1115/4091 1115/1113/4092 +f 1128/1131/4093 1127/1129/4094 1105/1099/4095 1113/1098/4096 +f 1127/1129/4097 1126/1128/4098 1106/1101/4099 1105/1099/4100 +f 1126/1128/4101 1125/1127/4102 1107/1103/4103 1106/1101/4104 +f 1164/1161/4105 1163/1162/4106 1172/1163/4107 1171/1164/4108 +f 1163/1162/4109 1162/1165/4110 1173/1166/4111 1172/1163/4112 +f 1162/1165/4113 1161/1167/4114 1174/1168/4115 1173/1166/4116 +f 1168/1169/4117 1167/1170/4118 1184/1171/4119 1183/1172/4120 +f 1167/1170/4121 1166/1173/4122 1185/1174/4123 1184/1171/4124 +f 1166/1173/4125 1165/1175/4126 1186/1176/4127 1185/1174/4128 +f 1171/1164/4129 1170/1177/4130 1190/1178/4131 1189/1179/4132 +f 1170/1177/4133 1169/1180/4134 1191/1181/4135 1190/1178/4136 +f 1191/1181/4137 1169/1180/4138 1177/1182/4139 1192/1183/4140 +f 1181/1184/4141 1180/1185/4142 1177/1182/4143 1176/1186/4144 +f 1182/1187/4145 1181/1184/4146 1176/1186/4147 1175/1188/4148 +f 1183/1172/4149 1182/1187/4150 1175/1188/4151 1174/1168/4152 +f 1180/1185/4153 1179/1189/4154 1202/1190/4155 1201/1191/4156 +f 1179/1189/4157 1178/1192/4158 1203/1193/4159 1202/1190/4160 +f 1178/1192/4161 1186/1176/4162 1204/1194/4163 1203/1193/4164 +f 1206/1195/4165 1205/1196/4166 1189/1179/4167 1188/1197/4168 +f 1207/1198/4169 1206/1195/4170 1188/1197/4171 1187/1199/4172 +f 1208/1200/4173 1207/1198/4174 1187/1199/4175 1195/1201/4176 +f 1199/1202/4177 1198/1203/4178 1195/1201/4179 1194/1204/4180 +f 1200/1205/4181 1199/1202/4182 1194/1204/4183 1193/1206/4184 +f 1201/1191/4185 1200/1205/4186 1193/1206/4187 1192/1183/4188 +f 1210/1207/4189 1209/1208/4190 1198/1203/4191 1197/1209/4192 +f 1211/1210/4193 1210/1207/4194 1197/1209/4195 1196/1211/4196 +f 1212/1212/4197 1211/1210/4198 1196/1211/4199 1204/1194/4200 +f 1174/1168/4201 1161/1167/4202 1168/1169/4203 1183/1172/4204 +f 1209/1208/4205 1208/1200/4206 1195/1201/4207 1198/1203/4208 +f 1165/1175/4209 1212/1212/4210 1204/1194/4211 1186/1176/4212 +f 1205/1196/4213 1164/1161/4214 1171/1164/4215 1189/1179/4216 +f 1176/1186/4217 1177/1182/4218 1169/1180/4219 1213/1213/4220 +f 1213/1213/4221 1169/1180/4222 1170/1177/4223 1214/1214/4224 +f 1170/1177/4225 1171/1164/4226 1172/1163/4227 1214/1214/4228 +f 1214/1214/4229 1172/1163/4230 1173/1166/4231 1215/1215/4232 +f 1173/1166/4233 1174/1168/4234 1175/1188/4235 1215/1215/4236 +f 1215/1215/4237 1175/1188/4238 1176/1186/4239 1213/1213/4240 +f 1213/1213/4241 1214/1214/4242 1215/1215/4243 +f 1185/1174/4244 1186/1176/4245 1178/1192/4246 1216/1216/4247 +f 1216/1216/4248 1178/1192/4249 1179/1189/4250 1217/1217/4251 +f 1179/1189/4252 1180/1185/4253 1181/1184/4254 1217/1217/4255 +f 1217/1217/4256 1181/1184/4257 1182/1187/4258 1218/1218/4259 +f 1182/1187/4260 1183/1172/4261 1184/1171/4262 1218/1218/4263 +f 1218/1218/4264 1184/1171/4265 1185/1174/4266 1216/1216/4267 +f 1216/1216/4268 1217/1217/4269 1218/1218/4270 +f 1194/1204/4271 1195/1201/4272 1187/1199/4273 1219/1219/4274 +f 1219/1219/4275 1187/1199/4276 1188/1197/4277 1220/1220/4278 +f 1188/1197/4279 1189/1179/4280 1190/1178/4281 1220/1220/4282 +f 1220/1220/4283 1190/1178/4284 1191/1181/4285 1221/1221/4286 +f 1191/1181/4287 1192/1183/4288 1193/1206/4289 1221/1221/4290 +f 1221/1221/4291 1193/1206/4292 1194/1204/4293 1219/1219/4294 +f 1219/1219/4295 1220/1220/4296 1221/1221/4297 +f 1203/1193/4298 1204/1194/4299 1196/1211/4300 1222/1222/4301 +f 1222/1222/4302 1196/1211/4303 1197/1209/4304 1223/1223/4305 +f 1197/1209/4306 1198/1203/4307 1199/1202/4308 1223/1223/4309 +f 1223/1223/4310 1199/1202/4311 1200/1205/4312 1224/1224/4313 +f 1200/1205/4314 1201/1191/4315 1202/1190/4316 1224/1224/4317 +f 1224/1224/4318 1202/1190/4319 1203/1193/4320 1222/1222/4321 +f 1222/1222/4322 1223/1223/4323 1224/1224/4324 +f 1180/1185/4325 1201/1191/4326 1192/1183/4327 1177/1182/4328 +f 1240/1225/4329 1241/1226/4330 1233/1227/4331 1250/1228/4332 +f 1250/1228/4333 1233/1227/4334 1234/1229/4335 1251/1230/4336 +f 1234/1229/4337 1235/1231/4338 1236/1232/4339 1251/1230/4340 +f 1251/1230/4341 1236/1232/4342 1237/1233/4343 1252/1234/4344 +f 1237/1233/4345 1238/1235/4346 1239/1236/4347 1252/1234/4348 +f 1252/1234/4349 1239/1236/4350 1240/1225/4351 1250/1228/4352 +f 1250/1228/4353 1251/1230/4354 1252/1234/4355 +f 1253/1237/4356 1242/1238/4357 1243/1239/4358 1254/1240/4359 +f 1243/1239/4360 1244/1241/4361 1245/1242/4362 1254/1240/4363 +f 1254/1240/4364 1245/1242/4365 1246/1243/4366 1255/1244/4367 +f 1246/1243/4368 1247/1245/4369 1248/1246/4370 1255/1244/4371 +f 1255/1244/4372 1248/1246/4373 1256/1247/4374 1253/1237/4375 +f 1253/1237/4376 1254/1240/4377 1255/1244/4378 +f 1256/1247/4379 1248/1246/4380 1249/1248/4381 1258/1249/4382 +f 1248/1246/4383 1247/1245/4384 1265/1250/4385 1249/1248/4386 +f 1241/1226/4387 1240/1225/4388 1260/1251/4389 1261/1252/4390 +f 1240/1225/4391 1239/1236/4392 1262/1253/4393 1260/1251/4394 +f 1239/1236/4395 1238/1235/4396 1263/1254/4397 1262/1253/4398 +f 1232/1255/4399 1264/1256/4400 1263/1254/4401 1238/1235/4402 +f 1261/1252/4403 1265/1250/4404 1247/1245/4405 1241/1226/4406 +f 1247/1245/4407 1246/1243/4408 1233/1227/4409 1241/1226/4410 +f 1246/1243/4411 1245/1242/4412 1234/1229/4413 1233/1227/4414 +f 1245/1242/4415 1244/1241/4416 1235/1231/4417 1234/1229/4418 +f 1228/1257/4419 1231/1258/4420 1235/1231/4421 1244/1241/4422 +f 1229/1259/4423 1232/1255/4424 1238/1235/4425 1237/1233/4426 +f 1230/1260/4427 1229/1259/4428 1237/1233/4429 1236/1232/4430 +f 1231/1258/4431 1230/1260/4432 1236/1232/4433 1235/1231/4434 +f 1225/1261/4435 1228/1257/4436 1244/1241/4437 1243/1239/4438 +f 1226/1262/4439 1225/1261/4440 1243/1239/4441 1242/1238/4442 +f 1256/1247/4443 1259/1263/4444 1242/1238/4445 1253/1237/4446 +f 1257/1264/4447 1259/1263/4448 1256/1247/4449 1258/1249/4450 +f 1259/1263/4451 1227/1265/4452 1226/1262/4453 1242/1238/4454 +f 1276/1266/4455 1268/1267/4456 1269/1268/4457 1275/1269/4458 +f 1277/1270/4459 1267/1271/4460 1268/1267/4461 1276/1266/4462 +f 1266/1272/4463 1267/1271/4464 1277/1270/4465 1278/1273/4466 +f 1275/1269/4467 1288/1274/4468 1289/1275/4469 1274/1276/4470 +f 1274/1276/4471 1289/1275/4472 1290/1277/4473 1273/1278/4474 +f 1273/1278/4475 1290/1277/4476 1291/1279/4477 1272/1280/4478 +f 1286/1281/4479 1281/1282/4480 1282/1283/4481 1285/1284/4482 +f 1287/1285/4483 1280/1286/4484 1281/1282/4485 1286/1281/4486 +f 1288/1274/4487 1279/1287/4488 1280/1286/4489 1287/1285/4490 +f 1279/1287/4491 1288/1274/4492 1275/1269/4493 1269/1268/4494 +f 1277/1270/4495 1292/1288/4496 1270/1289/4497 1278/1273/4498 +f 1292/1288/4499 1293/1290/4500 1271/1291/4501 1270/1289/4502 +f 1271/1291/4503 1293/1290/4504 1273/1278/4505 1272/1280/4506 +f 1293/1290/4507 1294/1292/4508 1274/1276/4509 1273/1278/4510 +f 1274/1276/4511 1294/1292/4512 1276/1266/4513 1275/1269/4514 +f 1294/1292/4515 1292/1288/4516 1277/1270/4517 1276/1266/4518 +f 1292/1288/4519 1294/1292/4520 1293/1290/4521 +f 1290/1277/4522 1295/1293/4523 1283/1294/4524 1291/1279/4525 +f 1295/1293/4526 1296/1295/4527 1284/1296/4528 1283/1294/4529 +f 1284/1296/4530 1296/1295/4531 1286/1281/4532 1285/1284/4533 +f 1296/1295/4534 1297/1297/4535 1287/1285/4536 1286/1281/4537 +f 1287/1285/4538 1297/1297/4539 1289/1275/4540 1288/1274/4541 +f 1297/1297/4542 1295/1293/4543 1290/1277/4544 1289/1275/4545 +f 1295/1293/4546 1297/1297/4547 1296/1295/4548 +f 1285/1284/4549 1282/1283/4550 1314/1298/4551 1317/1299/4552 +f 1284/1296/4553 1285/1284/4554 1317/1299/4555 1316/1300/4556 +f 1283/1294/4557 1284/1296/4558 1316/1300/4559 1315/1301/4560 +f 1291/1279/4561 1283/1294/4562 1315/1301/4563 1323/1302/4564 +f 1272/1280/4565 1291/1279/4566 1323/1302/4567 1304/1303/4568 +f 1271/1291/4569 1272/1280/4570 1304/1303/4571 1303/1304/4572 +f 1270/1289/4573 1271/1291/4574 1303/1304/4575 1302/1305/4576 +f 1278/1273/4577 1270/1289/4578 1302/1305/4579 1310/1306/4580 +f 1308/1307/4581 1307/1308/4582 1301/1309/4583 1300/1310/4584 +f 1309/1311/4585 1308/1307/4586 1300/1310/4587 1299/1312/4588 +f 1298/1313/4589 1310/1306/4590 1309/1311/4591 1299/1312/4592 +f 1307/1308/4593 1306/1314/4594 1321/1315/4595 1320/1316/4596 +f 1306/1314/4597 1305/1317/4598 1322/1318/4599 1321/1315/4600 +f 1305/1317/4601 1304/1303/4602 1323/1302/4603 1322/1318/4604 +f 1318/1319/4605 1317/1299/4606 1314/1298/4607 1313/1320/4608 +f 1319/1321/4609 1318/1319/4610 1313/1320/4611 1312/1322/4612 +f 1320/1316/4613 1319/1321/4614 1312/1322/4615 1311/1323/4616 +f 1309/1311/4617 1310/1306/4618 1302/1305/4619 1324/1324/4620 +f 1324/1324/4621 1302/1305/4622 1303/1304/4623 1325/1325/4624 +f 1303/1304/4625 1304/1303/4626 1305/1317/4627 1325/1325/4628 +f 1325/1325/4629 1305/1317/4630 1306/1314/4631 1326/1326/4632 +f 1306/1314/4633 1307/1308/4634 1308/1307/4635 1326/1326/4636 +f 1326/1326/4637 1308/1307/4638 1309/1311/4639 1324/1324/4640 +f 1324/1324/4641 1325/1325/4642 1326/1326/4643 +f 1322/1318/4644 1323/1302/4645 1315/1301/4646 1327/1327/4647 +f 1327/1327/4648 1315/1301/4649 1316/1300/4650 1328/1328/4651 +f 1316/1300/4652 1317/1299/4653 1318/1319/4654 1328/1328/4655 +f 1328/1328/4656 1318/1319/4657 1319/1321/4658 1329/1329/4659 +f 1319/1321/4660 1320/1316/4661 1321/1315/4662 1329/1329/4663 +f 1329/1329/4664 1321/1315/4665 1322/1318/4666 1327/1327/4667 +f 1327/1327/4668 1328/1328/4669 1329/1329/4670 +f 1340/1330/4671 1339/1331/4672 1333/1332/4673 1332/1333/4674 +f 1341/1334/4675 1340/1330/4676 1332/1333/4677 1331/1335/4678 +f 1330/1336/4679 1342/1337/4680 1341/1334/4681 1331/1335/4682 +f 1339/1331/4683 1338/1338/4684 1353/1339/4685 1352/1340/4686 +f 1338/1338/4687 1337/1341/4688 1354/1342/4689 1353/1339/4690 +f 1337/1341/4691 1336/1343/4692 1355/1344/4693 1354/1342/4694 +f 1350/1345/4695 1349/1346/4696 1346/1347/4697 1345/1348/4698 +f 1351/1349/4699 1350/1345/4700 1345/1348/4701 1344/1350/4702 +f 1352/1340/4703 1351/1349/4704 1344/1350/4705 1343/1351/4706 +f 1343/1351/4707 1333/1332/4708 1339/1331/4709 1352/1340/4710 +f 1341/1334/4711 1342/1337/4712 1334/1352/4713 1356/1353/4714 +f 1356/1353/4715 1334/1352/4716 1335/1354/4717 1357/1355/4718 +f 1335/1354/4719 1336/1343/4720 1337/1341/4721 1357/1355/4722 +f 1357/1355/4723 1337/1341/4724 1338/1338/4725 1358/1356/4726 +f 1338/1338/4727 1339/1331/4728 1340/1330/4729 1358/1356/4730 +f 1358/1356/4731 1340/1330/4732 1341/1334/4733 1356/1353/4734 +f 1356/1353/4735 1357/1355/4736 1358/1356/4737 +f 1354/1342/4738 1355/1344/4739 1347/1357/4740 1359/1358/4741 +f 1359/1358/4742 1347/1357/4743 1348/1359/4744 1360/1360/4745 +f 1348/1359/4746 1349/1346/4747 1350/1345/4748 1360/1360/4749 +f 1360/1360/4750 1350/1345/4751 1351/1349/4752 1361/1361/4753 +f 1351/1349/4754 1352/1340/4755 1353/1339/4756 1361/1361/4757 +f 1361/1361/4758 1353/1339/4759 1354/1342/4760 1359/1358/4761 +f 1359/1358/4762 1360/1360/4763 1361/1361/4764 +f 1372/1362/4765 1371/1363/4766 1365/1364/4767 1364/1365/4768 +f 1373/1366/4769 1372/1362/4770 1364/1365/4771 1363/1367/4772 +f 1362/1368/4773 1374/1369/4774 1373/1366/4775 1363/1367/4776 +f 1368/1370/4777 1367/1371/4778 1405/1372/4779 1413/1373/4780 +f 1367/1371/4781 1366/1374/4782 1406/1375/4783 1405/1372/4784 +f 1366/1374/4785 1374/1369/4786 1407/1376/4787 1406/1375/4788 +f 1371/1363/4789 1370/1377/4790 1385/1378/4791 1384/1379/4792 +f 1370/1377/4793 1369/1380/4794 1386/1381/4795 1385/1378/4796 +f 1369/1380/4797 1368/1370/4798 1387/1382/4799 1386/1381/4800 +f 1382/1383/4801 1381/1384/4802 1378/1385/4803 1377/1386/4804 +f 1383/1387/4805 1382/1383/4806 1377/1386/4807 1376/1388/4808 +f 1384/1379/4809 1383/1387/4810 1376/1388/4811 1375/1389/4812 +f 1381/1384/4813 1380/1390/4814 1398/1391/4815 1397/1392/4816 +f 1380/1390/4817 1379/1393/4818 1399/1394/4819 1398/1391/4820 +f 1379/1393/4821 1387/1382/4822 1400/1395/4823 1399/1394/4824 +f 1395/1396/4825 1394/1397/4826 1391/1398/4827 1390/1399/4828 +f 1396/1400/4829 1395/1396/4830 1390/1399/4831 1389/1401/4832 +f 1397/1392/4833 1396/1400/4834 1389/1401/4835 1388/1402/4836 +f 1411/1403/4837 1410/1404/4838 1394/1397/4839 1393/1405/4840 +f 1412/1406/4841 1411/1403/4842 1393/1405/4843 1392/1407/4844 +f 1413/1373/4845 1412/1406/4846 1392/1407/4847 1400/1395/4848 +f 1408/1408/4849 1407/1376/4850 1404/1409/4851 1403/1410/4852 +f 1409/1411/4853 1408/1408/4854 1403/1410/4855 1402/1412/4856 +f 1410/1404/4857 1409/1411/4858 1402/1412/4859 1401/1413/4860 +f 1375/1389/4861 1365/1364/4862 1371/1363/4863 1384/1379/4864 +f 1410/1404/4865 1401/1413/4866 1391/1398/4867 1394/1397/4868 +f 1368/1370/4869 1413/1373/4870 1400/1395/4871 1387/1382/4872 +f 1373/1366/4873 1374/1369/4874 1366/1374/4875 1414/1414/4876 +f 1414/1414/4877 1366/1374/4878 1367/1371/4879 1415/1415/4880 +f 1367/1371/4881 1368/1370/4882 1369/1380/4883 1415/1415/4884 +f 1415/1415/4885 1369/1380/4886 1370/1377/4887 1416/1416/4888 +f 1370/1377/4889 1371/1363/4890 1372/1362/4891 1416/1416/4892 +f 1416/1416/4893 1372/1362/4894 1373/1366/4895 1414/1414/4896 +f 1414/1414/4897 1415/1415/4898 1416/1416/4899 +f 1386/1381/4900 1387/1382/4901 1379/1393/4902 1417/1417/4903 +f 1417/1417/4904 1379/1393/4905 1380/1390/4906 1418/1418/4907 +f 1380/1390/4908 1381/1384/4909 1382/1383/4910 1418/1418/4911 +f 1418/1418/4912 1382/1383/4913 1383/1387/4914 1419/1419/4915 +f 1383/1387/4916 1384/1379/4917 1385/1378/4918 1419/1419/4919 +f 1419/1419/4920 1385/1378/4921 1386/1381/4922 1417/1417/4923 +f 1417/1417/4924 1418/1418/4925 1419/1419/4926 +f 1399/1394/4927 1400/1395/4928 1392/1407/4929 1420/1420/4930 +f 1420/1420/4931 1392/1407/4932 1393/1405/4933 1421/1421/4934 +f 1393/1405/4935 1394/1397/4936 1395/1396/4937 1421/1421/4938 +f 1421/1421/4939 1395/1396/4940 1396/1400/4941 1422/1422/4942 +f 1396/1400/4943 1397/1392/4944 1398/1391/4945 1422/1422/4946 +f 1422/1422/4947 1398/1391/4948 1399/1394/4949 1420/1420/4950 +f 1420/1420/4951 1421/1421/4952 1422/1422/4953 +f 1412/1406/4954 1413/1373/4955 1405/1372/4956 1423/1423/4957 +f 1423/1423/4958 1405/1372/4959 1406/1375/4960 1424/1424/4961 +f 1406/1375/4962 1407/1376/4963 1408/1408/4964 1424/1424/4965 +f 1424/1424/4966 1408/1408/4967 1409/1411/4968 1425/1425/4969 +f 1409/1411/4970 1410/1404/4971 1411/1403/4972 1425/1425/4973 +f 1425/1425/4974 1411/1403/4975 1412/1406/4976 1423/1423/4977 +f 1423/1423/4978 1424/1424/4979 1425/1425/4980 +f 1381/1384/4981 1397/1392/4982 1388/1402/4983 1378/1385/4984 +f 1441/1426/4985 1442/1427/4986 1434/1428/4987 1478/1429/4988 +f 1478/1429/4989 1434/1428/4990 1435/1430/4991 1479/1431/4992 +f 1435/1430/4993 1436/1432/4994 1437/1433/4995 1479/1431/4996 +f 1479/1431/4997 1437/1433/4998 1438/1434/4999 1480/1435/5000 +f 1438/1434/5001 1439/1436/5002 1440/1437/5003 1480/1435/5004 +f 1480/1435/5005 1440/1437/5006 1441/1426/5007 1478/1429/5008 +f 1478/1429/5009 1479/1431/5010 1480/1435/5011 +f 1450/1438/5012 1451/1439/5013 1443/1440/5014 1481/1441/5015 +f 1481/1441/5016 1443/1440/5017 1444/1442/5018 1482/1443/5019 +f 1444/1442/5020 1445/1444/5021 1446/1445/5022 1482/1443/5023 +f 1482/1443/5024 1446/1445/5025 1447/1446/5026 1483/1447/5027 +f 1447/1446/5028 1448/1448/5029 1449/1449/5030 1483/1447/5031 +f 1483/1447/5032 1449/1449/5033 1450/1438/5034 1481/1441/5035 +f 1481/1441/5036 1482/1443/5037 1483/1447/5038 +f 1459/1450/5039 1460/1451/5040 1452/1452/5041 1484/1453/5042 +f 1484/1453/5043 1452/1452/5044 1453/1454/5045 1485/1455/5046 +f 1453/1454/5047 1454/1456/5048 1455/1457/5049 1485/1455/5050 +f 1485/1455/5051 1455/1457/5052 1456/1458/5053 1486/1459/5054 +f 1456/1458/5055 1457/1460/5056 1458/1461/5057 1486/1459/5058 +f 1486/1459/5059 1458/1461/5060 1459/1450/5061 1484/1453/5062 +f 1484/1453/5063 1485/1455/5064 1486/1459/5065 +f 1468/1462/5066 1469/1463/5067 1461/1464/5068 1487/1465/5069 +f 1487/1465/5070 1461/1464/5071 1462/1466/5072 1488/1467/5073 +f 1462/1466/5074 1463/1468/5075 1464/1469/5076 1488/1467/5077 +f 1488/1467/5078 1464/1469/5079 1465/1470/5080 1489/1471/5081 +f 1465/1470/5082 1466/1472/5083 1467/1473/5084 1489/1471/5085 +f 1489/1471/5086 1467/1473/5087 1468/1462/5088 1487/1465/5089 +f 1487/1465/5090 1488/1467/5091 1489/1471/5092 +f 1460/1451/5093 1459/1450/5094 1464/1469/5095 1463/1468/5096 +f 1459/1450/5097 1458/1461/5098 1465/1470/5099 1464/1469/5100 +f 1458/1461/5101 1457/1460/5102 1466/1472/5103 1465/1470/5104 +f 1442/1427/5105 1445/1444/5106 1466/1472/5107 1457/1460/5108 +f 1442/1427/5109 1441/1426/5110 1446/1445/5111 1445/1444/5112 +f 1441/1426/5113 1440/1437/5114 1447/1446/5115 1446/1445/5116 +f 1440/1437/5117 1439/1436/5118 1448/1448/5119 1447/1446/5120 +f 1429/1474/5121 1428/1475/5122 1437/1433/5123 1436/1432/5124 +f 1428/1475/5125 1427/1476/5126 1438/1434/5127 1437/1433/5128 +f 1427/1476/5129 1426/1477/5130 1439/1436/5131 1438/1434/5132 +f 1439/1436/5133 1426/1477/5134 1433/1478/5135 1448/1448/5136 +f 1433/1478/5137 1432/1479/5138 1449/1449/5139 1448/1448/5140 +f 1432/1479/5141 1431/1480/5142 1450/1438/5143 1449/1449/5144 +f 1431/1480/5145 1430/1481/5146 1451/1439/5147 1450/1438/5148 +f 1477/1482/5149 1476/1483/5150 1461/1464/5151 1469/1463/5152 +f 1476/1483/5153 1475/1484/5154 1462/1466/5155 1461/1464/5156 +f 1475/1484/5157 1474/1485/5158 1463/1468/5159 1462/1466/5160 +f 1474/1485/5161 1473/1486/5162 1460/1451/5163 1463/1468/5164 +f 1473/1486/5165 1472/1487/5166 1452/1452/5167 1460/1451/5168 +f 1472/1487/5169 1471/1488/5170 1453/1454/5171 1452/1452/5172 +f 1471/1488/5173 1470/1489/5174 1454/1456/5175 1453/1454/5176 +f 1470/1489/5177 1429/1474/5178 1436/1432/5179 1454/1456/5180 +f 1451/1439/5181 1430/1481/5182 1477/1482/5183 1469/1463/5184 +f 1443/1440/5185 1451/1439/5186 1469/1463/5187 1468/1462/5188 +f 1444/1442/5189 1443/1440/5190 1468/1462/5191 1467/1473/5192 +f 1445/1444/5193 1444/1442/5194 1467/1473/5195 1466/1472/5196 +f 1434/1428/5197 1442/1427/5198 1457/1460/5199 1456/1458/5200 +f 1435/1430/5201 1434/1428/5202 1456/1458/5203 1455/1457/5204 +f 1436/1432/5205 1435/1430/5206 1455/1457/5207 1454/1456/5208 +f 1500/1490/5209 1499/1491/5210 1493/1492/5211 1492/1493/5212 +f 1501/1494/5213 1500/1490/5214 1492/1493/5215 1491/1495/5216 +f 1490/1496/5217 1502/1497/5218 1501/1494/5219 1491/1495/5220 +f 1496/1498/5221 1495/1499/5222 1533/1500/5223 1541/1501/5224 +f 1495/1499/5225 1494/1502/5226 1534/1503/5227 1533/1500/5228 +f 1494/1502/5229 1502/1497/5230 1535/1504/5231 1534/1503/5232 +f 1499/1491/5233 1498/1505/5234 1513/1506/5235 1512/1507/5236 +f 1498/1505/5237 1497/1508/5238 1514/1509/5239 1513/1506/5240 +f 1497/1508/5241 1496/1498/5242 1515/1510/5243 1514/1509/5244 +f 1510/1511/5245 1509/1512/5246 1506/1513/5247 1505/1514/5248 +f 1511/1515/5249 1510/1511/5250 1505/1514/5251 1504/1516/5252 +f 1512/1507/5253 1511/1515/5254 1504/1516/5255 1503/1517/5256 +f 1509/1512/5257 1508/1518/5258 1526/1519/5259 1525/1520/5260 +f 1508/1518/5261 1507/1521/5262 1527/1522/5263 1526/1519/5264 +f 1507/1521/5265 1515/1510/5266 1528/1523/5267 1527/1522/5268 +f 1523/1524/5269 1522/1525/5270 1519/1526/5271 1518/1527/5272 +f 1524/1528/5273 1523/1524/5274 1518/1527/5275 1517/1529/5276 +f 1525/1520/5277 1524/1528/5278 1517/1529/5279 1516/1530/5280 +f 1539/1531/5281 1538/1532/5282 1522/1525/5283 1521/1533/5284 +f 1540/1534/5285 1539/1531/5286 1521/1533/5287 1520/1535/5288 +f 1541/1501/5289 1540/1534/5290 1520/1535/5291 1528/1523/5292 +f 1536/1536/5293 1535/1504/5294 1532/1537/5295 1531/1538/5296 +f 1537/1539/5297 1536/1536/5298 1531/1538/5299 1530/1540/5300 +f 1538/1532/5301 1537/1539/5302 1530/1540/5303 1529/1541/5304 +f 1503/1517/5305 1493/1492/5306 1499/1491/5307 1512/1507/5308 +f 1538/1532/5309 1529/1541/5310 1519/1526/5311 1522/1525/5312 +f 1496/1498/5313 1541/1501/5314 1528/1523/5315 1515/1510/5316 +f 1501/1494/5317 1502/1497/5318 1494/1502/5319 1542/1542/5320 +f 1542/1542/5321 1494/1502/5322 1495/1499/5323 1543/1543/5324 +f 1495/1499/5325 1496/1498/5326 1497/1508/5327 1543/1543/5328 +f 1543/1543/5329 1497/1508/5330 1498/1505/5331 1544/1544/5332 +f 1498/1505/5333 1499/1491/5334 1500/1490/5335 1544/1544/5336 +f 1544/1544/5337 1500/1490/5338 1501/1494/5339 1542/1542/5340 +f 1542/1542/5341 1543/1543/5342 1544/1544/5343 +f 1514/1509/5344 1515/1510/5345 1507/1521/5346 1545/1545/5347 +f 1545/1545/5348 1507/1521/5349 1508/1518/5350 1546/1546/5351 +f 1508/1518/5352 1509/1512/5353 1510/1511/5354 1546/1546/5355 +f 1546/1546/5356 1510/1511/5357 1511/1515/5358 1547/1547/5359 +f 1511/1515/5360 1512/1507/5361 1513/1506/5362 1547/1547/5363 +f 1547/1547/5364 1513/1506/5365 1514/1509/5366 1545/1545/5367 +f 1545/1545/5368 1546/1546/5369 1547/1547/5370 +f 1527/1522/5371 1528/1523/5372 1520/1535/5373 1548/1548/5374 +f 1548/1548/5375 1520/1535/5376 1521/1533/5377 1549/1549/5378 +f 1521/1533/5379 1522/1525/5380 1523/1524/5381 1549/1549/5382 +f 1549/1549/5383 1523/1524/5384 1524/1528/5385 1550/1550/5386 +f 1524/1528/5387 1525/1520/5388 1526/1519/5389 1550/1550/5390 +f 1550/1550/5391 1526/1519/5392 1527/1522/5393 1548/1548/5394 +f 1548/1548/5395 1549/1549/5396 1550/1550/5397 +f 1540/1534/5398 1541/1501/5399 1533/1500/5400 1551/1551/5401 +f 1551/1551/5402 1533/1500/5403 1534/1503/5404 1552/1552/5405 +f 1534/1503/5406 1535/1504/5407 1536/1536/5408 1552/1552/5409 +f 1552/1552/5410 1536/1536/5411 1537/1539/5412 1553/1553/5413 +f 1537/1539/5414 1538/1532/5415 1539/1531/5416 1553/1553/5417 +f 1553/1553/5418 1539/1531/5419 1540/1534/5420 1551/1551/5421 +f 1551/1551/5422 1552/1552/5423 1553/1553/5424 +f 1509/1512/5425 1525/1520/5426 1516/1530/5427 1506/1513/5428 +f 1502/1497/5429 1490/1496/5430 1532/1537/5431 1535/1504/5432 +f 1374/1369/5433 1362/1368/5434 1404/1409/5435 1407/1376/5436 +f 1564/1554/5437 1563/1555/5438 1557/1556/5439 1556/1557/5440 +f 1565/1558/5441 1564/1554/5442 1556/1557/5443 1555/1559/5444 +f 1554/1560/5445 1566/1561/5446 1565/1558/5447 1555/1559/5448 +f 1560/1562/5449 1559/1563/5450 1593/1564/5451 1601/1565/5452 +f 1559/1563/5453 1558/1566/5454 1594/1567/5455 1593/1564/5456 +f 1558/1566/5457 1566/1561/5458 1595/1568/5459 1594/1567/5460 +f 1563/1555/5461 1562/1569/5462 1577/1570/5463 1576/1571/5464 +f 1562/1569/5465 1561/1572/5466 1578/1573/5467 1577/1570/5468 +f 1561/1572/5469 1560/1562/5470 1579/1574/5471 1578/1573/5472 +f 1574/1575/5473 1573/1576/5474 1570/1577/5475 1569/1578/5476 +f 1575/1579/5477 1574/1575/5478 1569/1578/5479 1568/1580/5480 +f 1576/1571/5481 1575/1579/5482 1568/1580/5483 1567/1581/5484 +f 1573/1576/5485 1572/1582/5486 1590/1583/5487 1589/1584/5488 +f 1572/1582/5489 1571/1585/5490 1591/1586/5491 1590/1583/5492 +f 1571/1585/5493 1579/1574/5494 1592/1587/5495 1591/1586/5496 +f 1587/1588/5497 1586/1589/5498 1583/1590/5499 1582/1591/5500 +f 1588/1592/5501 1587/1588/5502 1582/1591/5503 1581/1593/5504 +f 1589/1584/5505 1588/1592/5506 1581/1593/5507 1580/1594/5508 +f 1599/1595/5509 1598/1596/5510 1586/1589/5511 1585/1597/5512 +f 1600/1598/5513 1599/1595/5514 1585/1597/5515 1584/1599/5516 +f 1601/1565/5517 1600/1598/5518 1584/1599/5519 1592/1587/5520 +f 1567/1581/5521 1557/1556/5522 1563/1555/5523 1576/1571/5524 +f 1560/1562/5525 1601/1565/5526 1592/1587/5527 1579/1574/5528 +f 1565/1558/5529 1566/1561/5530 1558/1566/5531 1602/1600/5532 +f 1602/1600/5533 1558/1566/5534 1559/1563/5535 1603/1601/5536 +f 1559/1563/5537 1560/1562/5538 1561/1572/5539 1603/1601/5540 +f 1603/1601/5541 1561/1572/5542 1562/1569/5543 1604/1602/5544 +f 1562/1569/5545 1563/1555/5546 1564/1554/5547 1604/1602/5548 +f 1604/1602/5549 1564/1554/5550 1565/1558/5551 1602/1600/5552 +f 1602/1600/5553 1603/1601/5554 1604/1602/5555 +f 1578/1573/5556 1579/1574/5557 1571/1585/5558 1605/1603/5559 +f 1605/1603/5560 1571/1585/5561 1572/1582/5562 1606/1604/5563 +f 1572/1582/5564 1573/1576/5565 1574/1575/5566 1606/1604/5567 +f 1606/1604/5568 1574/1575/5569 1575/1579/5570 1607/1605/5571 +f 1575/1579/5572 1576/1571/5573 1577/1570/5574 1607/1605/5575 +f 1607/1605/5576 1577/1570/5577 1578/1573/5578 1605/1603/5579 +f 1605/1603/5580 1606/1604/5581 1607/1605/5582 +f 1591/1586/5583 1592/1587/5584 1584/1599/5585 1608/1606/5586 +f 1608/1606/5587 1584/1599/5588 1585/1597/5589 1609/1607/5590 +f 1585/1597/5591 1586/1589/5592 1587/1588/5593 1609/1607/5594 +f 1609/1607/5595 1587/1588/5596 1588/1592/5597 1610/1608/5598 +f 1588/1592/5599 1589/1584/5600 1590/1583/5601 1610/1608/5602 +f 1610/1608/5603 1590/1583/5604 1591/1586/5605 1608/1606/5606 +f 1608/1606/5607 1609/1607/5608 1610/1608/5609 +f 1600/1598/5610 1601/1565/5611 1593/1564/5612 1611/1609/5613 +f 1611/1609/5614 1593/1564/5615 1594/1567/5616 1612/1610/5617 +f 1594/1567/5618 1595/1568/5619 1596/1611/5620 1612/1610/5621 +f 1612/1610/5622 1596/1611/5623 1597/1612/5624 1613/1613/5625 +f 1597/1612/5626 1598/1596/5627 1599/1595/5628 1613/1613/5629 +f 1613/1613/5630 1599/1595/5631 1600/1598/5632 1611/1609/5633 +f 1611/1609/5634 1612/1610/5635 1613/1613/5636 +f 1573/1576/5637 1589/1584/5638 1580/1594/5639 1570/1577/5640 +f 1622/1614/5641 1616/1615/5642 1301/1309/5643 1307/1308/5644 +f 1623/1616/5645 1615/1617/5646 1616/1615/5647 1622/1614/5648 +f 1614/1618/5649 1615/1617/5650 1623/1616/5651 1624/1619/5652 +f 1307/1308/5653 1320/1316/5654 1633/1620/5655 1621/1621/5656 +f 1621/1621/5657 1633/1620/5658 1634/1622/5659 1620/1623/5660 +f 1620/1623/5661 1634/1622/5662 1635/1624/5663 1619/1625/5664 +f 1631/1626/5665 1626/1627/5666 1627/1628/5667 1630/1629/5668 +f 1632/1630/5669 1625/1631/5670 1626/1627/5671 1631/1626/5672 +f 1320/1316/5673 1311/1323/5674 1625/1631/5675 1632/1630/5676 +f 1623/1616/5677 1636/1632/5678 1617/1633/5679 1624/1619/5680 +f 1636/1632/5681 1637/1634/5682 1618/1635/5683 1617/1633/5684 +f 1618/1635/5685 1637/1634/5686 1620/1623/5687 1619/1625/5688 +f 1637/1634/5689 1638/1636/5690 1621/1621/5691 1620/1623/5692 +f 1621/1621/5693 1638/1636/5694 1622/1614/5695 1307/1308/5696 +f 1638/1636/5697 1636/1632/5698 1623/1616/5699 1622/1614/5700 +f 1636/1632/5701 1638/1636/5702 1637/1634/5703 +f 1634/1622/5704 1639/1637/5705 1628/1638/5706 1635/1624/5707 +f 1639/1637/5708 1640/1639/5709 1629/1640/5710 1628/1638/5711 +f 1629/1640/5712 1640/1639/5713 1631/1626/5714 1630/1629/5715 +f 1640/1639/5716 1641/1641/5717 1632/1630/5718 1631/1626/5719 +f 1632/1630/5720 1641/1641/5721 1633/1620/5722 1320/1316/5723 +f 1641/1641/5724 1639/1637/5725 1634/1622/5726 1633/1620/5727 +f 1639/1637/5728 1641/1641/5729 1640/1639/5730 +f 1349/1346/5731 1630/1629/5732 1627/1628/5733 1346/1347/5734 +f 1348/1359/5735 1629/1640/5736 1630/1629/5737 1349/1346/5738 +f 1347/1357/5739 1628/1638/5740 1629/1640/5741 1348/1359/5742 +f 1355/1344/5743 1635/1624/5744 1628/1638/5745 1347/1357/5746 +f 1336/1343/5747 1619/1625/5748 1635/1624/5749 1355/1344/5750 +f 1335/1354/5751 1618/1635/5752 1619/1625/5753 1336/1343/5754 +f 1334/1352/5755 1617/1633/5756 1618/1635/5757 1335/1354/5758 +f 1342/1337/5759 1624/1619/5760 1617/1633/5761 1334/1352/5762 +f 1330/1336/5763 1614/1618/5764 1624/1619/5765 1342/1337/5766 +f 1652/1642/5767 1644/1643/5768 1645/1644/5769 1651/1645/5770 +f 1653/1646/5771 1643/1647/5772 1644/1643/5773 1652/1642/5774 +f 1642/1648/5775 1643/1647/5776 1653/1646/5777 1654/1649/5778 +f 1651/1645/5779 1662/1650/5780 1663/1651/5781 1650/1652/5782 +f 1650/1652/5783 1663/1651/5784 1664/1653/5785 1649/1654/5786 +f 1649/1654/5787 1664/1653/5788 1665/1655/5789 1648/1656/5790 +f 1660/1657/5791 1657/1658/5792 1266/1272/5793 1278/1273/5794 +f 1661/1659/5795 1656/1660/5796 1657/1658/5797 1660/1657/5798 +f 1662/1650/5799 1655/1661/5800 1656/1660/5801 1661/1659/5802 +f 1655/1661/5803 1662/1650/5804 1651/1645/5805 1645/1644/5806 +f 1653/1646/5807 1666/1662/5808 1646/1663/5809 1654/1649/5810 +f 1666/1662/5811 1667/1664/5812 1647/1665/5813 1646/1663/5814 +f 1647/1665/5815 1667/1664/5816 1649/1654/5817 1648/1656/5818 +f 1667/1664/5819 1668/1666/5820 1650/1652/5821 1649/1654/5822 +f 1650/1652/5823 1668/1666/5824 1652/1642/5825 1651/1645/5826 +f 1668/1666/5827 1666/1662/5828 1653/1646/5829 1652/1642/5830 +f 1666/1662/5831 1668/1666/5832 1667/1664/5833 +f 1664/1653/5834 1669/1667/5835 1658/1668/5836 1665/1655/5837 +f 1669/1667/5838 1670/1669/5839 1659/1670/5840 1658/1668/5841 +f 1659/1670/5842 1670/1669/5843 1660/1657/5844 1278/1273/5845 +f 1670/1669/5846 1671/1671/5847 1661/1659/5848 1660/1657/5849 +f 1661/1659/5850 1671/1671/5851 1663/1651/5852 1662/1650/5853 +f 1671/1671/5854 1669/1667/5855 1664/1653/5856 1663/1651/5857 +f 1669/1667/5858 1671/1671/5859 1670/1669/5860 +f 1659/1670/5861 1278/1273/5862 1310/1306/5863 1689/1672/5864 +f 1658/1668/5865 1659/1670/5866 1689/1672/5867 1688/1673/5868 +f 1665/1655/5869 1658/1668/5870 1688/1673/5871 1695/1674/5872 +f 1648/1656/5873 1665/1655/5874 1695/1674/5875 1678/1675/5876 +f 1647/1665/5877 1648/1656/5878 1678/1675/5879 1677/1676/5880 +f 1646/1663/5881 1647/1665/5882 1677/1676/5883 1676/1677/5884 +f 1654/1649/5885 1646/1663/5886 1676/1677/5887 1684/1678/5888 +f 1672/1679/5889 1642/1648/5890 1654/1649/5891 1684/1678/5892 +f 1682/1680/5893 1681/1681/5894 1675/1682/5895 1674/1683/5896 +f 1683/1684/5897 1682/1680/5898 1674/1683/5899 1673/1685/5900 +f 1672/1679/5901 1684/1678/5902 1683/1684/5903 1673/1685/5904 +f 1681/1681/5905 1680/1686/5906 1693/1687/5907 1692/1688/5908 +f 1680/1686/5909 1679/1689/5910 1694/1690/5911 1693/1687/5912 +f 1679/1689/5913 1678/1675/5914 1695/1674/5915 1694/1690/5916 +f 1690/1691/5917 1310/1306/5918 1298/1313/5919 1687/1692/5920 +f 1691/1693/5921 1690/1691/5922 1687/1692/5923 1686/1694/5924 +f 1692/1688/5925 1691/1693/5926 1686/1694/5927 1685/1695/5928 +f 1685/1695/5929 1675/1682/5930 1681/1681/5931 1692/1688/5932 +f 1683/1684/5933 1684/1678/5934 1676/1677/5935 1696/1696/5936 +f 1696/1696/5937 1676/1677/5938 1677/1676/5939 1697/1697/5940 +f 1677/1676/5941 1678/1675/5942 1679/1689/5943 1697/1697/5944 +f 1697/1697/5945 1679/1689/5946 1680/1686/5947 1698/1698/5948 +f 1680/1686/5949 1681/1681/5950 1682/1680/5951 1698/1698/5952 +f 1698/1698/5953 1682/1680/5954 1683/1684/5955 1696/1696/5956 +f 1696/1696/5957 1697/1697/5958 1698/1698/5959 +f 1694/1690/5960 1695/1674/5961 1688/1673/5962 1699/1699/5963 +f 1699/1699/5964 1688/1673/5965 1689/1672/5966 1700/1700/5967 +f 1689/1672/5968 1310/1306/5969 1690/1691/5970 1700/1700/5971 +f 1700/1700/5972 1690/1691/5973 1691/1693/5974 1701/1701/5975 +f 1691/1693/5976 1692/1688/5977 1693/1687/5978 1701/1701/5979 +f 1701/1701/5980 1693/1687/5981 1694/1690/5982 1699/1699/5983 +f 1699/1699/5984 1700/1700/5985 1701/1701/5986 +f 1721/1702/5987 1722/1703/5988 1714/1704/5989 1732/1705/5990 +f 1732/1705/5991 1714/1704/5992 1715/1706/5993 1733/1707/5994 +f 1715/1706/5995 1716/1708/5996 1717/1709/5997 1733/1707/5998 +f 1733/1707/5999 1717/1709/6000 1718/1710/6001 1734/1711/6002 +f 1718/1710/6003 1719/1712/6004 1720/1713/6005 1734/1711/6006 +f 1734/1711/6007 1720/1713/6008 1721/1702/6009 1732/1705/6010 +f 1732/1705/6011 1733/1707/6012 1734/1711/6013 +f 1730/1714/6014 1731/1715/6015 1723/1716/6016 1735/1717/6017 +f 1735/1717/6018 1723/1716/6019 1724/1718/6020 1736/1719/6021 +f 1724/1718/6022 1725/1720/6023 1726/1721/6024 1736/1719/6025 +f 1736/1719/6026 1726/1721/6027 1727/1722/6028 1737/1723/6029 +f 1727/1722/6030 1728/1724/6031 1729/1725/6032 1737/1723/6033 +f 1737/1723/6034 1729/1725/6035 1730/1714/6036 1735/1717/6037 +f 1735/1717/6038 1736/1719/6039 1737/1723/6040 +f 1713/1726/6041 1712/1727/6042 1717/1709/6043 1716/1708/6044 +f 1712/1727/6045 1711/1728/6046 1718/1710/6047 1717/1709/6048 +f 1711/1728/6049 1710/1729/6050 1719/1712/6051 1718/1710/6052 +f 1731/1715/6053 1730/1714/6054 1714/1704/6055 1722/1703/6056 +f 1730/1714/6057 1729/1725/6058 1715/1706/6059 1714/1704/6060 +f 1729/1725/6061 1728/1724/6062 1716/1708/6063 1715/1706/6064 +f 1725/1720/6065 1724/1718/6066 1702/1730/6067 1705/1731/6068 +f 1724/1718/6069 1723/1716/6070 1703/1732/6071 1702/1730/6072 +f 1723/1716/6073 1731/1715/6074 1704/1733/6075 1703/1732/6076 +f 1731/1715/6077 1722/1703/6078 1709/1734/6079 1704/1733/6080 +f 1722/1703/6081 1721/1702/6082 1706/1735/6083 1709/1734/6084 +f 1721/1702/6085 1720/1713/6086 1707/1736/6087 1706/1735/6088 +f 1720/1713/6089 1719/1712/6090 1708/1737/6091 1707/1736/6092 +f 1757/1738/6093 1758/1739/6094 1750/1740/6095 1770/1741/6096 +f 1770/1741/6097 1750/1740/6098 1751/1742/6099 1771/1743/6100 +f 1751/1742/6101 1752/1744/6102 1753/1745/6103 1771/1743/6104 +f 1771/1743/6105 1753/1745/6106 1754/1746/6107 1772/1747/6108 +f 1754/1746/6109 1755/1748/6110 1756/1749/6111 1772/1747/6112 +f 1772/1747/6113 1756/1749/6114 1757/1738/6115 1770/1741/6116 +f 1770/1741/6117 1771/1743/6118 1772/1747/6119 +f 1768/1750/6120 1769/1751/6121 1762/1752/6122 1773/1753/6123 +f 1773/1753/6124 1762/1752/6125 1763/1754/6126 1774/1755/6127 +f 1763/1754/6128 1719/1712/6129 1764/1756/6130 1774/1755/6131 +f 1774/1755/6132 1764/1756/6133 1765/1757/6134 1775/1758/6135 +f 1765/1757/6136 1766/1759/6137 1767/1760/6138 1775/1758/6139 +f 1775/1758/6140 1767/1760/6141 1768/1750/6142 1773/1753/6143 +f 1773/1753/6144 1774/1755/6145 1775/1758/6146 +f 1710/1729/6147 1761/1761/6148 1764/1756/6149 1719/1712/6150 +f 1761/1761/6151 1760/1762/6152 1765/1757/6153 1764/1756/6154 +f 1760/1762/6155 1759/1763/6156 1766/1759/6157 1765/1757/6158 +f 1749/1764/6159 1748/1765/6160 1753/1745/6161 1752/1744/6162 +f 1748/1765/6163 1747/1766/6164 1754/1746/6165 1753/1745/6166 +f 1747/1766/6167 1746/1767/6168 1755/1748/6169 1754/1746/6170 +f 1755/1748/6171 1746/1767/6172 1741/1768/6173 1744/1769/6174 +f 1750/1740/6175 1758/1739/6176 1769/1751/6177 1768/1750/6178 +f 1751/1742/6179 1750/1740/6180 1768/1750/6181 1767/1760/6182 +f 1752/1744/6183 1751/1742/6184 1767/1760/6185 1766/1759/6186 +f 1759/1763/6187 1749/1764/6188 1752/1744/6189 1766/1759/6190 +f 1719/1712/6191 1763/1754/6192 1738/1770/6193 1708/1737/6194 +f 1763/1754/6195 1762/1752/6196 1739/1771/6197 1738/1770/6198 +f 1762/1752/6199 1769/1751/6200 1740/1772/6201 1739/1771/6202 +f 1769/1751/6203 1758/1739/6204 1745/1773/6205 1740/1772/6206 +f 1758/1739/6207 1757/1738/6208 1742/1774/6209 1745/1773/6210 +f 1757/1738/6211 1756/1749/6212 1743/1775/6213 1742/1774/6214 +f 1756/1749/6215 1755/1748/6216 1744/1769/6217 1743/1775/6218 +f 1783/1776/6219 1784/1777/6220 1776/1778/6221 1816/1779/6222 +f 1816/1779/6223 1776/1778/6224 1777/1780/6225 1817/1781/6226 +f 1777/1780/6227 1778/1782/6228 1779/1783/6229 1817/1781/6230 +f 1817/1781/6231 1779/1783/6232 1780/1784/6233 1818/1785/6234 +f 1780/1784/6235 1781/1786/6236 1782/1787/6237 1818/1785/6238 +f 1818/1785/6239 1782/1787/6240 1783/1776/6241 1816/1779/6242 +f 1816/1779/6243 1817/1781/6244 1818/1785/6245 +f 1792/1788/6246 1793/1789/6247 1785/1790/6248 1819/1791/6249 +f 1819/1791/6250 1785/1790/6251 1786/1792/6252 1820/1793/6253 +f 1786/1792/6254 1787/1794/6255 1788/1795/6256 1820/1793/6257 +f 1820/1793/6258 1788/1795/6259 1789/1796/6260 1821/1797/6261 +f 1789/1796/6262 1790/1798/6263 1791/1799/6264 1821/1797/6265 +f 1821/1797/6266 1791/1799/6267 1792/1788/6268 1819/1791/6269 +f 1819/1791/6270 1820/1793/6271 1821/1797/6272 +f 1805/1800/6273 1806/1801/6274 1798/1802/6275 1822/1803/6276 +f 1822/1803/6277 1798/1802/6278 1799/1804/6279 1823/1805/6280 +f 1799/1804/6281 1800/1806/6282 1801/1807/6283 1823/1805/6284 +f 1823/1805/6285 1801/1807/6286 1802/1808/6287 1824/1809/6288 +f 1802/1808/6289 1803/1810/6290 1804/1811/6291 1824/1809/6292 +f 1824/1809/6293 1804/1811/6294 1805/1800/6295 1822/1803/6296 +f 1822/1803/6297 1823/1805/6298 1824/1809/6299 +f 1814/1812/6300 1815/1813/6301 1807/1814/6302 1825/1815/6303 +f 1825/1815/6304 1807/1814/6305 1808/1816/6306 1826/1817/6307 +f 1808/1816/6308 1809/1818/6309 1810/1819/6310 1826/1817/6311 +f 1826/1817/6312 1810/1819/6313 1811/1820/6314 1827/1821/6315 +f 1811/1820/6316 1812/1822/6317 1813/1823/6318 1827/1821/6319 +f 1827/1821/6320 1813/1823/6321 1814/1812/6322 1825/1815/6323 +f 1825/1815/6324 1826/1817/6325 1827/1821/6326 +f 1800/1806/6327 1797/1824/6328 1796/1825/6329 1801/1807/6330 +f 1796/1825/6331 1795/1826/6332 1802/1808/6333 1801/1807/6334 +f 1795/1826/6335 1794/1827/6336 1803/1810/6337 1802/1808/6338 +f 1781/1786/6339 1780/1784/6340 1791/1799/6341 1790/1798/6342 +f 1780/1784/6343 1779/1783/6344 1792/1788/6345 1791/1799/6346 +f 1779/1783/6347 1778/1782/6348 1793/1789/6349 1792/1788/6350 +f 1815/1813/6351 1814/1812/6352 1798/1802/6353 1806/1801/6354 +f 1814/1812/6355 1813/1823/6356 1799/1804/6357 1798/1802/6358 +f 1813/1823/6359 1812/1822/6360 1800/1806/6361 1799/1804/6362 +f 1784/1777/6363 1809/1818/6364 1808/1816/6365 1776/1778/6366 +f 1808/1816/6367 1807/1814/6368 1777/1780/6369 1776/1778/6370 +f 1807/1814/6371 1815/1813/6372 1778/1782/6373 1777/1780/6374 +f 1778/1782/6375 1815/1813/6376 1806/1801/6377 1793/1789/6378 +f 1806/1801/6379 1805/1800/6380 1785/1790/6381 1793/1789/6382 +f 1805/1800/6383 1804/1811/6384 1786/1792/6385 1785/1790/6386 +f 1804/1811/6387 1803/1810/6388 1787/1794/6389 1786/1792/6390 +f 1834/1828/6391 1787/1794/6392 1828/1829/6393 1870/1830/6394 +f 1870/1830/6395 1828/1829/6396 1829/1831/6397 1871/1832/6398 +f 1829/1831/6399 1830/1833/6400 1831/1834/6401 1871/1832/6402 +f 1871/1832/6403 1831/1834/6404 1832/1835/6405 1872/1836/6406 +f 1832/1835/6407 1728/1724/6408 1833/1837/6409 1872/1836/6410 +f 1872/1836/6411 1833/1837/6412 1834/1828/6413 1870/1830/6414 +f 1870/1830/6415 1871/1832/6416 1872/1836/6417 +f 1844/1838/6418 1845/1839/6419 1838/1840/6420 1873/1841/6421 +f 1873/1841/6422 1838/1840/6423 1839/1842/6424 1874/1843/6425 +f 1839/1842/6426 1840/1844/6427 1841/1845/6428 1874/1843/6429 +f 1874/1843/6430 1841/1845/6431 1842/1846/6432 1875/1847/6433 +f 1842/1846/6434 1716/1708/6435 1843/1848/6436 1875/1847/6437 +f 1875/1847/6438 1843/1848/6439 1844/1838/6440 1873/1841/6441 +f 1873/1841/6442 1874/1843/6443 1875/1847/6444 +f 1857/1849/6445 1858/1850/6446 1850/1851/6447 1876/1852/6448 +f 1876/1852/6449 1850/1851/6450 1851/1853/6451 1877/1854/6452 +f 1851/1853/6453 1852/1855/6454 1853/1856/6455 1877/1854/6456 +f 1877/1854/6457 1853/1856/6458 1854/1857/6459 1878/1858/6460 +f 1854/1857/6461 1855/1859/6462 1856/1860/6463 1878/1858/6464 +f 1878/1858/6465 1856/1860/6466 1857/1849/6467 1876/1852/6468 +f 1876/1852/6469 1877/1854/6470 1878/1858/6471 +f 1868/1861/6472 1869/1862/6473 1862/1863/6474 1879/1864/6475 +f 1879/1864/6476 1862/1863/6477 1863/1865/6478 1880/1866/6479 +f 1863/1865/6480 1803/1810/6481 1864/1867/6482 1880/1866/6483 +f 1880/1866/6484 1864/1867/6485 1865/1868/6486 1881/1869/6487 +f 1865/1868/6488 1866/1870/6489 1867/1871/6490 1881/1869/6491 +f 1881/1869/6492 1867/1871/6493 1868/1861/6494 1879/1864/6495 +f 1879/1864/6496 1880/1866/6497 1881/1869/6498 +f 1794/1827/6499 1861/1872/6500 1864/1867/6501 1803/1810/6502 +f 1861/1872/6503 1860/1873/6504 1865/1868/6505 1864/1867/6506 +f 1860/1873/6507 1859/1874/6508 1866/1870/6509 1865/1868/6510 +f 1849/1875/6511 1848/1876/6512 1853/1856/6513 1852/1855/6514 +f 1848/1876/6515 1847/1877/6516 1854/1857/6517 1853/1856/6518 +f 1847/1877/6519 1846/1878/6520 1855/1859/6521 1854/1857/6522 +f 1846/1878/6523 1837/1879/6524 1840/1844/6525 1855/1859/6526 +f 1837/1879/6527 1836/1880/6528 1841/1845/6529 1840/1844/6530 +f 1836/1880/6531 1835/1881/6532 1842/1846/6533 1841/1845/6534 +f 1835/1881/6535 1713/1726/6536 1716/1708/6537 1842/1846/6538 +f 1728/1724/6539 1832/1835/6540 1843/1848/6541 1716/1708/6542 +f 1832/1835/6543 1831/1834/6544 1844/1838/6545 1843/1848/6546 +f 1831/1834/6547 1830/1833/6548 1845/1839/6549 1844/1838/6550 +f 1869/1862/6551 1868/1861/6552 1850/1851/6553 1858/1850/6554 +f 1868/1861/6555 1867/1871/6556 1851/1853/6557 1850/1851/6558 +f 1867/1871/6559 1866/1870/6560 1852/1855/6561 1851/1853/6562 +f 1859/1874/6563 1849/1875/6564 1852/1855/6565 1866/1870/6566 +f 1803/1810/6567 1863/1865/6568 1828/1829/6569 1787/1794/6570 +f 1863/1865/6571 1862/1863/6572 1829/1831/6573 1828/1829/6574 +f 1862/1863/6575 1869/1862/6576 1830/1833/6577 1829/1831/6578 +f 1845/1839/6579 1830/1833/6580 1869/1862/6581 1858/1850/6582 +f 1858/1850/6583 1857/1849/6584 1838/1840/6585 1845/1839/6586 +f 1857/1849/6587 1856/1860/6588 1839/1842/6589 1838/1840/6590 +f 1856/1860/6591 1855/1859/6592 1840/1844/6593 1839/1842/6594 +f 1888/1882/6595 1889/1883/6596 1882/1884/6597 1928/1885/6598 +f 1928/1885/6599 1882/1884/6600 1883/1886/6601 1929/1887/6602 +f 1883/1886/6603 1884/1888/6604 1885/1889/6605 1929/1887/6606 +f 1929/1887/6607 1885/1889/6608 1886/1890/6609 1930/1891/6610 +f 1886/1890/6611 1812/1822/6612 1887/1892/6613 1930/1891/6614 +f 1930/1891/6615 1887/1892/6616 1888/1882/6617 1928/1885/6618 +f 1928/1885/6619 1929/1887/6620 1930/1891/6621 +f 1900/1893/6622 1901/1894/6623 1894/1895/6624 1931/1896/6625 +f 1931/1896/6626 1894/1895/6627 1895/1897/6628 1932/1898/6629 +f 1895/1897/6630 1896/1899/6631 1897/1900/6632 1932/1898/6633 +f 1932/1898/6634 1897/1900/6635 1898/1901/6636 1933/1902/6637 +f 1898/1901/6638 1800/1806/6639 1899/1903/6640 1933/1902/6641 +f 1933/1902/6642 1899/1903/6643 1900/1893/6644 1931/1896/6645 +f 1931/1896/6646 1932/1898/6647 1933/1902/6648 +f 1913/1904/6649 1914/1905/6650 1906/1906/6651 1934/1907/6652 +f 1934/1907/6653 1906/1906/6654 1907/1908/6655 1935/1909/6656 +f 1907/1908/6657 1908/1910/6658 1909/1911/6659 1935/1909/6660 +f 1935/1909/6661 1909/1911/6662 1910/1912/6663 1936/1913/6664 +f 1910/1912/6665 1911/1914/6666 1912/1915/6667 1936/1913/6668 +f 1936/1913/6669 1912/1915/6670 1913/1904/6671 1934/1907/6672 +f 1934/1907/6673 1935/1909/6674 1936/1913/6675 +f 1926/1916/6676 1927/1917/6677 1919/1918/6678 1937/1919/6679 +f 1937/1919/6680 1919/1918/6681 1920/1920/6682 1938/1921/6683 +f 1920/1920/6684 1921/1922/6685 1922/1923/6686 1938/1921/6687 +f 1938/1921/6688 1922/1923/6689 1923/1924/6690 1939/1925/6691 +f 1923/1924/6692 1924/1926/6693 1925/1927/6694 1939/1925/6695 +f 1939/1925/6696 1925/1927/6697 1926/1916/6698 1937/1919/6699 +f 1937/1919/6700 1938/1921/6701 1939/1925/6702 +f 1921/1922/6703 1918/1928/6704 1917/1929/6705 1922/1923/6706 +f 1917/1929/6707 1916/1930/6708 1923/1924/6709 1922/1923/6710 +f 1916/1930/6711 1915/1931/6712 1924/1926/6713 1923/1924/6714 +f 1905/1932/6715 1904/1933/6716 1909/1911/6717 1908/1910/6718 +f 1904/1933/6719 1903/1934/6720 1910/1912/6721 1909/1911/6722 +f 1903/1934/6723 1902/1935/6724 1911/1914/6725 1910/1912/6726 +f 1902/1935/6727 1893/1936/6728 1896/1899/6729 1911/1914/6730 +f 1893/1936/6731 1892/1937/6732 1897/1900/6733 1896/1899/6734 +f 1892/1937/6735 1891/1938/6736 1898/1901/6737 1897/1900/6738 +f 1891/1938/6739 1890/1939/6740 1800/1806/6741 1898/1901/6742 +f 1812/1822/6743 1886/1890/6744 1899/1903/6745 1800/1806/6746 +f 1886/1890/6747 1885/1889/6748 1900/1893/6749 1899/1903/6750 +f 1885/1889/6751 1884/1888/6752 1901/1894/6753 1900/1893/6754 +f 1927/1917/6755 1926/1916/6756 1906/1906/6757 1914/1905/6758 +f 1926/1916/6759 1925/1927/6760 1907/1908/6761 1906/1906/6762 +f 1925/1927/6763 1924/1926/6764 1908/1910/6765 1907/1908/6766 +f 1924/1926/6767 1915/1931/6768 1905/1932/6769 1908/1910/6770 +f 1889/1883/6771 1921/1922/6772 1920/1920/6773 1882/1884/6774 +f 1920/1920/6775 1919/1918/6776 1883/1886/6777 1882/1884/6778 +f 1919/1918/6779 1927/1917/6780 1884/1888/6781 1883/1886/6782 +f 1884/1888/6783 1927/1917/6784 1914/1905/6785 1901/1894/6786 +f 1914/1905/6787 1913/1904/6788 1894/1895/6789 1901/1894/6790 +f 1913/1904/6791 1912/1915/6792 1895/1897/6793 1894/1895/6794 +f 1912/1915/6795 1911/1914/6796 1896/1899/6797 1895/1897/6798 +f 1952/1940/6799 1953/1941/6800 1947/1942/6801 1962/1943/6802 +f 1962/1943/6803 1947/1942/6804 1948/1944/6805 1963/1945/6806 +f 1948/1944/6807 1790/1798/6808 1949/1946/6809 1963/1945/6810 +f 1963/1945/6811 1949/1946/6812 1950/1947/6813 1964/1948/6814 +f 1950/1947/6815 1725/1720/6816 1951/1949/6817 1964/1948/6818 +f 1964/1948/6819 1951/1949/6820 1952/1940/6821 1962/1943/6822 +f 1962/1943/6823 1963/1945/6824 1964/1948/6825 +f 1960/1950/6826 1961/1951/6827 1954/1952/6828 1965/1953/6829 +f 1965/1953/6830 1954/1952/6831 1955/1954/6832 1966/1955/6833 +f 1955/1954/6834 1956/1956/6835 1957/1957/6836 1966/1955/6837 +f 1966/1955/6838 1957/1957/6839 1958/1958/6840 1967/1959/6841 +f 1958/1958/6842 1781/1786/6843 1959/1960/6844 1967/1959/6845 +f 1967/1959/6846 1959/1960/6847 1960/1950/6848 1965/1953/6849 +f 1965/1953/6850 1966/1955/6851 1967/1959/6852 +f 1961/1951/6853 1960/1950/6854 1947/1942/6855 1953/1941/6856 +f 1960/1950/6857 1959/1960/6858 1948/1944/6859 1947/1942/6860 +f 1959/1960/6861 1781/1786/6862 1790/1798/6863 1948/1944/6864 +f 2253/1961/6865 1956/1956/6866 1955/1954/6867 2252/1962/6868 +f 1955/1954/6869 1954/1952/6870 2251/1963/6871 2252/1962/6872 +f 1954/1952/6873 1961/1951/6874 2250/1964/6875 2251/1963/6876 +f 2254/1965/6877 2250/1964/6878 1961/1951/6879 1953/1941/6880 +f 1953/1941/6881 1952/1940/6882 1944/1966/6883 1946/1967/6884 +f 1952/1940/6885 1951/1949/6886 1945/1968/6887 1944/1966/6888 +f 1951/1949/6889 1725/1720/6890 1705/1731/6891 1945/1968/6892 +f 1726/1721/6893 1725/1720/6894 1968/1969/6895 +f 1727/1722/6896 1726/1721/6897 1968/1969/6898 +f 1728/1724/6899 1727/1722/6900 1968/1969/6901 +f 1788/1795/6902 1787/1794/6903 1968/1969/6904 +f 1789/1796/6905 1788/1795/6906 1968/1969/6907 +f 1790/1798/6908 1789/1796/6909 1968/1969/6910 +f 1833/1837/6911 1728/1724/6912 1968/1969/6913 +f 1834/1828/6914 1833/1837/6915 1968/1969/6916 +f 1787/1794/6917 1834/1828/6918 1968/1969/6919 +f 1949/1946/6920 1790/1798/6921 1968/1969/6922 +f 1950/1947/6923 1949/1946/6924 1968/1969/6925 +f 1725/1720/6926 1950/1947/6927 1968/1969/6928 +f 1984/1970/6929 1985/1971/6930 1977/1972/6931 2004/1973/6932 +f 2004/1973/6933 1977/1972/6934 1978/1974/6935 2005/1975/6936 +f 1978/1974/6937 1979/1976/6938 1980/1977/6939 2005/1975/6940 +f 2005/1975/6941 1980/1977/6942 1981/1978/6943 2006/1979/6944 +f 1981/1978/6945 1982/1980/6946 1983/1981/6947 2006/1979/6948 +f 2006/1979/6949 1983/1981/6950 1984/1970/6951 2004/1973/6952 +f 2004/1973/6953 2005/1975/6954 2006/1979/6955 +f 1997/1982/6956 1998/1983/6957 1990/1984/6958 2007/1985/6959 +f 2007/1985/6960 1990/1984/6961 1991/1986/6962 2008/1987/6963 +f 1991/1986/6964 1992/1988/6965 1993/1989/6966 2008/1987/6967 +f 2008/1987/6968 1993/1989/6969 1994/1990/6970 2009/1991/6971 +f 1994/1990/6972 1995/1992/6973 1996/1993/6974 2009/1991/6975 +f 2009/1991/6976 1996/1993/6977 1997/1982/6978 2007/1985/6979 +f 2007/1985/6980 2008/1987/6981 2009/1991/6982 +f 1989/1994/6983 1988/1995/6984 1993/1989/6985 1992/1988/6986 +f 1988/1995/6987 1987/1996/6988 1994/1990/6989 1993/1989/6990 +f 1987/1996/6991 1986/1997/6992 1995/1992/6993 1994/1990/6994 +f 1995/1992/6995 1986/1997/6996 1976/1998/6997 1979/1976/6998 +f 1976/1998/6999 1975/1999/7000 1980/1977/7001 1979/1976/7002 +f 1975/1999/7003 1974/2000/7004 1981/1978/7005 1980/1977/7006 +f 1974/2000/7007 1973/2001/7008 1982/1980/7009 1981/1978/7010 +f 1972/2002/7011 1971/2003/7012 1983/1981/7013 1982/1980/7014 +f 1971/2003/7015 1970/2004/7016 1984/1970/7017 1983/1981/7018 +f 1970/2004/7019 1969/2005/7020 1985/1971/7021 1984/1970/7022 +f 2003/2006/7023 2002/2007/7024 1990/1984/7025 1998/1983/7026 +f 2002/2007/7027 2001/2008/7028 1991/1986/7029 1990/1984/7030 +f 2001/2008/7031 2000/2009/7032 1992/1988/7033 1991/1986/7034 +f 2000/2009/7035 1999/2010/7036 1989/1994/7037 1992/1988/7038 +f 1985/1971/7039 1969/2005/7040 2003/2006/7041 1998/1983/7042 +f 1977/1972/7043 1985/1971/7044 1998/1983/7045 1997/1982/7046 +f 1978/1974/7047 1977/1972/7048 1997/1982/7049 1996/1993/7050 +f 1979/1976/7051 1978/1974/7052 1996/1993/7053 1995/1992/7054 +f 2017/2011/7055 2018/2012/7056 2010/2013/7057 2058/2014/7058 +f 2058/2014/7059 2010/2013/7060 2011/2015/7061 2059/2016/7062 +f 2011/2015/7063 2012/2017/7064 2013/2018/7065 2059/2016/7066 +f 2059/2016/7067 2013/2018/7068 2014/2019/7069 2060/2020/7070 +f 2014/2019/7071 2015/2021/7072 2016/2022/7073 2060/2020/7074 +f 2060/2020/7075 2016/2022/7076 2017/2011/7077 2058/2014/7078 +f 2058/2014/7079 2059/2016/7080 2060/2020/7081 +f 2026/2023/7082 2027/2024/7083 2019/2025/7084 2061/2026/7085 +f 2061/2026/7086 2019/2025/7087 2020/2027/7088 2062/2028/7089 +f 2020/2027/7090 2021/2029/7091 2022/2030/7092 2062/2028/7093 +f 2062/2028/7094 2022/2030/7095 2023/2031/7096 2063/2032/7097 +f 2023/2031/7098 2024/2033/7099 2025/2034/7100 2063/2032/7101 +f 2063/2032/7102 2025/2034/7103 2026/2023/7104 2061/2026/7105 +f 2061/2026/7106 2062/2028/7107 2063/2032/7108 +f 2039/2035/7109 2040/2036/7110 2032/2037/7111 2064/2038/7112 +f 2064/2038/7113 2032/2037/7114 2033/2039/7115 2065/2040/7116 +f 2033/2039/7117 2034/2041/7118 2035/2042/7119 2065/2040/7120 +f 2065/2040/7121 2035/2042/7122 2036/2043/7123 2066/2044/7124 +f 2036/2043/7125 2037/2045/7126 2038/2046/7127 2066/2044/7128 +f 2066/2044/7129 2038/2046/7130 2039/2035/7131 2064/2038/7132 +f 2064/2038/7133 2065/2040/7134 2066/2044/7135 +f 2052/2047/7136 2053/2048/7137 2045/2049/7138 2067/2050/7139 +f 2067/2050/7140 2045/2049/7141 2046/2051/7142 2068/2052/7143 +f 2046/2051/7144 2047/2053/7145 2048/2054/7146 2068/2052/7147 +f 2068/2052/7148 2048/2054/7149 2049/2055/7150 2069/2056/7151 +f 2049/2055/7152 2050/2057/7153 2051/2058/7154 2069/2056/7155 +f 2069/2056/7156 2051/2058/7157 2052/2047/7158 2067/2050/7159 +f 2067/2050/7160 2068/2052/7161 2069/2056/7162 +f 2055/2059/7163 2054/2060/7164 2053/2048/7165 2052/2047/7166 +f 2056/2061/7167 2055/2059/7168 2052/2047/7169 2051/2058/7170 +f 2057/2062/7171 2056/2061/7172 2051/2058/7173 2050/2057/7174 +f 2042/2063/7175 2041/2064/7176 2040/2036/7177 2039/2035/7178 +f 2043/2065/7179 2042/2063/7180 2039/2035/7181 2038/2046/7182 +f 2044/2066/7183 2043/2065/7184 2038/2046/7185 2037/2045/7186 +f 2028/2067/7187 2044/2066/7188 2037/2045/7189 2027/2024/7190 +f 2029/2068/7191 2028/2067/7192 2027/2024/7193 2026/2023/7194 +f 2030/2069/7195 2029/2068/7196 2026/2023/7197 2025/2034/7198 +f 2031/2070/7199 2030/2069/7200 2025/2034/7201 2024/2033/7202 +f 2018/2012/7203 2017/2011/7204 2022/2030/7205 2021/2029/7206 +f 2017/2011/7207 2016/2022/7208 2023/2031/7209 2022/2030/7210 +f 2016/2022/7211 2015/2021/7212 2024/2033/7213 2023/2031/7214 +f 2040/2036/7215 2041/2064/7216 2057/2062/7217 2050/2057/7218 +f 2050/2057/7219 2049/2055/7220 2032/2037/7221 2040/2036/7222 +f 2049/2055/7223 2048/2054/7224 2033/2039/7225 2032/2037/7226 +f 2048/2054/7227 2047/2053/7228 2034/2041/7229 2033/2039/7230 +f 2018/2012/7231 2021/2029/7232 2034/2041/7233 2047/2053/7234 +f 2019/2025/7235 2027/2024/7236 2037/2045/7237 2036/2043/7238 +f 2020/2027/7239 2019/2025/7240 2036/2043/7241 2035/2042/7242 +f 2021/2029/7243 2020/2027/7244 2035/2042/7245 2034/2041/7246 +f 2010/2013/7247 2018/2012/7248 2047/2053/7249 2046/2051/7250 +f 2011/2015/7251 2010/2013/7252 2046/2051/7253 2045/2049/7254 +f 2053/2048/7255 2012/2017/7256 2011/2015/7257 2045/2049/7258 +f 2077/2071/7259 2078/2072/7260 2070/2073/7261 2107/2074/7262 +f 2107/2074/7263 2070/2073/7264 2071/2075/7265 2108/2076/7266 +f 2071/2075/7267 2072/2077/7268 2073/2078/7269 2108/2076/7270 +f 2108/2076/7271 2073/2078/7272 2074/2079/7273 2109/2080/7274 +f 2074/2079/7275 2075/2081/7276 2076/2082/7277 2109/2080/7278 +f 2109/2080/7279 2076/2082/7280 2077/2071/7281 2107/2074/7282 +f 2107/2074/7283 2108/2076/7284 2109/2080/7285 +f 2086/2083/7286 2087/2084/7287 2079/2085/7288 2110/2086/7289 +f 2110/2086/7290 2079/2085/7291 2080/2087/7292 2111/2088/7293 +f 2080/2087/7294 2081/2089/7295 2082/2090/7296 2111/2088/7297 +f 2111/2088/7298 2082/2090/7299 2083/2091/7300 2112/2092/7301 +f 2083/2091/7302 2084/2093/7303 2085/2094/7304 2112/2092/7305 +f 2112/2092/7306 2085/2094/7307 2086/2083/7308 2110/2086/7309 +f 2110/2086/7310 2111/2088/7311 2112/2092/7312 +f 2095/2095/7313 2024/2033/7314 2088/2096/7315 2113/2097/7316 +f 2113/2097/7317 2088/2096/7318 2089/2098/7319 2114/2099/7320 +f 2089/2098/7321 2090/2100/7322 2091/2101/7323 2114/2099/7324 +f 2114/2099/7325 2091/2101/7326 2092/2102/7327 2115/2103/7328 +f 2092/2102/7329 2093/2104/7330 2094/2105/7331 2115/2103/7332 +f 2115/2103/7333 2094/2105/7334 2095/2095/7335 2113/2097/7336 +f 2113/2097/7337 2114/2099/7338 2115/2103/7339 +f 2105/2106/7340 2106/2107/7341 2099/2108/7342 2116/2109/7343 +f 2116/2109/7344 2099/2108/7345 2100/2110/7346 2117/2111/7347 +f 2100/2110/7348 2101/2112/7349 2102/2113/7350 2117/2111/7351 +f 2117/2111/7352 2102/2113/7353 2103/2114/7354 2118/2115/7355 +f 2103/2114/7356 2015/2021/7357 2104/2116/7358 2118/2115/7359 +f 2118/2115/7360 2104/2116/7361 2105/2106/7362 2116/2109/7363 +f 2116/2109/7364 2117/2111/7365 2118/2115/7366 +f 2096/2117/7367 2031/2070/7368 2024/2033/7369 2095/2095/7370 +f 2097/2118/7371 2096/2117/7372 2095/2095/7373 2094/2105/7374 +f 2098/2119/7375 2097/2118/7376 2094/2105/7377 2093/2104/7378 +f 2078/2072/7379 2077/2071/7380 2082/2090/7381 2081/2089/7382 +f 2077/2071/7383 2076/2082/7384 2083/2091/7385 2082/2090/7386 +f 2076/2082/7387 2075/2081/7388 2084/2093/7389 2083/2091/7390 +f 2015/2021/7391 2103/2114/7392 2088/2096/7393 2024/2033/7394 +f 2103/2114/7395 2102/2113/7396 2089/2098/7397 2088/2096/7398 +f 2102/2113/7399 2101/2112/7400 2090/2100/7401 2089/2098/7402 +f 2081/2089/7403 2090/2100/7404 2101/2112/7405 2078/2072/7406 +f 2093/2104/7407 2092/2102/7408 2079/2085/7409 2087/2084/7410 +f 2092/2102/7411 2091/2101/7412 2080/2087/7413 2079/2085/7414 +f 2091/2101/7415 2090/2100/7416 2081/2089/7417 2080/2087/7418 +f 2101/2112/7419 2100/2110/7420 2070/2073/7421 2078/2072/7422 +f 2100/2110/7423 2099/2108/7424 2071/2075/7425 2070/2073/7426 +f 2099/2108/7427 2106/2107/7428 2072/2077/7429 2071/2075/7430 +f 2127/2120/7431 2128/2121/7432 2121/2122/7433 2166/2123/7434 +f 2166/2123/7435 2121/2122/7436 2122/2124/7437 2167/2125/7438 +f 2122/2124/7439 2087/2084/7440 2123/2126/7441 2167/2125/7442 +f 2167/2125/7443 2123/2126/7444 2124/2127/7445 2168/2128/7446 +f 2124/2127/7447 2125/2129/7448 2126/2130/7449 2168/2128/7450 +f 2168/2128/7451 2126/2130/7452 2127/2120/7453 2166/2123/7454 +f 2166/2123/7455 2167/2125/7456 2168/2128/7457 +f 2136/2131/7458 2137/2132/7459 2129/2133/7460 2169/2134/7461 +f 2169/2134/7462 2129/2133/7463 2130/2135/7464 2170/2136/7465 +f 2130/2135/7466 2131/2137/7467 2132/2138/7468 2170/2136/7469 +f 2170/2136/7470 2132/2138/7471 2133/2139/7472 2171/2140/7473 +f 2133/2139/7474 2134/2141/7475 2135/2142/7476 2171/2140/7477 +f 2171/2140/7478 2135/2142/7479 2136/2131/7480 2169/2134/7481 +f 2169/2134/7482 2170/2136/7483 2171/2140/7484 +f 2149/2143/7485 2150/2144/7486 2142/2145/7487 2172/2146/7488 +f 2172/2146/7489 2142/2145/7490 2143/2147/7491 2173/2148/7492 +f 2143/2147/7493 2144/2149/7494 2145/2150/7495 2173/2148/7496 +f 2173/2148/7497 2145/2150/7498 2146/2151/7499 2174/2152/7500 +f 2146/2151/7501 2147/2153/7502 2148/2154/7503 2174/2152/7504 +f 2174/2152/7505 2148/2154/7506 2149/2143/7507 2172/2146/7508 +f 2172/2146/7509 2173/2148/7510 2174/2152/7511 +f 2162/2155/7512 2093/2104/7513 2155/2156/7514 2175/2157/7515 +f 2175/2157/7516 2155/2156/7517 2156/2158/7518 2176/2159/7519 +f 2156/2158/7520 2157/2160/7521 2158/2161/7522 2176/2159/7523 +f 2176/2159/7524 2158/2161/7525 2159/2162/7526 2177/2163/7527 +f 2159/2162/7528 2160/2164/7529 2161/2165/7530 2177/2163/7531 +f 2177/2163/7532 2161/2165/7533 2162/2155/7534 2175/2157/7535 +f 2175/2157/7536 2176/2159/7537 2177/2163/7538 +f 2163/2166/7539 2098/2119/7540 2093/2104/7541 2162/2155/7542 +f 2164/2167/7543 2163/2166/7544 2162/2155/7545 2161/2165/7546 +f 2165/2168/7547 2164/2167/7548 2161/2165/7549 2160/2164/7550 +f 2152/2169/7551 2151/2170/7552 2150/2144/7553 2149/2143/7554 +f 2153/2171/7555 2152/2169/7556 2149/2143/7557 2148/2154/7558 +f 2154/2172/7559 2153/2171/7560 2148/2154/7561 2147/2153/7562 +f 2137/2132/7563 2138/2173/7564 2154/2172/7565 2147/2153/7566 +f 2139/2174/7567 2138/2173/7568 2137/2132/7569 2136/2131/7570 +f 2140/2175/7571 2139/2174/7572 2136/2131/7573 2135/2142/7574 +f 2141/2176/7575 2140/2175/7576 2135/2142/7577 2134/2141/7578 +f 2132/2138/7579 2131/2137/7580 2128/2121/7581 2127/2120/7582 +f 2133/2139/7583 2132/2138/7584 2127/2120/7585 2126/2130/7586 +f 2134/2141/7587 2133/2139/7588 2126/2130/7589 2125/2129/7590 +f 2150/2144/7591 2151/2170/7592 2165/2168/7593 2160/2164/7594 +f 2142/2145/7595 2150/2144/7596 2160/2164/7597 2159/2162/7598 +f 2143/2147/7599 2142/2145/7600 2159/2162/7601 2158/2161/7602 +f 2144/2149/7603 2143/2147/7604 2158/2161/7605 2157/2160/7606 +f 2131/2137/7607 2144/2149/7608 2157/2160/7609 2128/2121/7610 +f 2147/2153/7611 2146/2151/7612 2129/2133/7613 2137/2132/7614 +f 2146/2151/7615 2145/2150/7616 2130/2135/7617 2129/2133/7618 +f 2145/2150/7619 2144/2149/7620 2131/2137/7621 2130/2135/7622 +f 2157/2160/7623 2156/2158/7624 2121/2122/7625 2128/2121/7626 +f 2156/2158/7627 2155/2156/7628 2122/2124/7629 2121/2122/7630 +f 2155/2156/7631 2093/2104/7632 2087/2084/7633 2122/2124/7634 +f 2194/2177/7635 2195/2178/7636 2187/2179/7637 2213/2180/7638 +f 2213/2180/7639 2187/2179/7640 2188/2181/7641 2214/2182/7642 +f 2188/2181/7643 2189/2183/7644 2190/2184/7645 2214/2182/7646 +f 2214/2182/7647 2190/2184/7648 2191/2185/7649 2215/2186/7650 +f 2191/2185/7651 2192/2187/7652 2193/2188/7653 2215/2186/7654 +f 2215/2186/7655 2193/2188/7656 2194/2177/7657 2213/2180/7658 +f 2213/2180/7659 2214/2182/7660 2215/2186/7661 +f 2207/2189/7662 2208/2190/7663 2200/2191/7664 2216/2192/7665 +f 2216/2192/7666 2200/2191/7667 2201/2193/7668 2217/2194/7669 +f 2201/2193/7670 2202/2195/7671 2203/2196/7672 2217/2194/7673 +f 2217/2194/7674 2203/2196/7675 2204/2197/7676 2218/2198/7677 +f 2204/2197/7678 2205/2199/7679 2206/2200/7680 2218/2198/7681 +f 2218/2198/7682 2206/2200/7683 2207/2189/7684 2216/2192/7685 +f 2216/2192/7686 2217/2194/7687 2218/2198/7688 +f 2210/2201/7689 2209/2202/7690 2208/2190/7691 2207/2189/7692 +f 2211/2203/7693 2210/2201/7694 2207/2189/7695 2206/2200/7696 +f 2212/2204/7697 2211/2203/7698 2206/2200/7699 2205/2199/7700 +f 2197/2205/7701 2196/2206/7702 2195/2178/7703 2194/2177/7704 +f 2198/2207/7705 2197/2205/7706 2194/2177/7707 2193/2188/7708 +f 2199/2208/7709 2198/2207/7710 2193/2188/7711 2192/2187/7712 +f 2185/2209/7713 2186/2210/7714 2199/2208/7715 2192/2187/7716 +f 2196/2206/7717 2212/2204/7718 2205/2199/7719 2195/2178/7720 +f 2205/2199/7721 2204/2197/7722 2187/2179/7723 2195/2178/7724 +f 2204/2197/7725 2203/2196/7726 2188/2181/7727 2187/2179/7728 +f 2203/2196/7729 2202/2195/7730 2189/2183/7731 2188/2181/7732 +f 2202/2195/7733 2181/2211/7734 2184/2212/7735 2189/2183/7736 +f 2182/2213/7737 2185/2209/7738 2192/2187/7739 2191/2185/7740 +f 2183/2214/7741 2182/2213/7742 2191/2185/7743 2190/2184/7744 +f 2184/2212/7745 2183/2214/7746 2190/2184/7747 2189/2183/7748 +f 2178/2215/7749 2181/2211/7750 2202/2195/7751 2201/2193/7752 +f 2179/2216/7753 2178/2215/7754 2201/2193/7755 2200/2191/7756 +f 2180/2217/7757 2179/2216/7758 2200/2191/7759 2208/2190/7760 +f 2231/2218/7761 2134/2141/7762 2225/2219/7763 2241/2220/7764 +f 2241/2220/7765 2225/2219/7766 2226/2221/7767 2242/2222/7768 +f 2226/2221/7769 2227/2223/7770 2228/2224/7771 2242/2222/7772 +f 2242/2222/7773 2228/2224/7774 2229/2225/7775 2243/2226/7776 +f 2229/2225/7777 2208/2190/7778 2230/2227/7779 2243/2226/7780 +f 2243/2226/7781 2230/2227/7782 2231/2218/7783 2241/2220/7784 +f 2241/2220/7785 2242/2222/7786 2243/2226/7787 +f 2240/2228/7788 2120/2229/7789 2234/2230/7790 2244/2231/7791 +f 2244/2231/7792 2234/2230/7793 2235/2232/7794 2245/2233/7795 +f 2235/2232/7796 2236/2234/7797 2237/2235/7798 2245/2233/7799 +f 2245/2233/7800 2237/2235/7801 2238/2236/7802 2246/2237/7803 +f 2238/2236/7804 2125/2129/7805 2239/2238/7806 2246/2237/7807 +f 2246/2237/7808 2239/2238/7809 2240/2228/7810 2244/2231/7811 +f 2244/2231/7812 2245/2233/7813 2246/2237/7814 +f 2232/2239/7815 2141/2176/7816 2134/2141/7817 2231/2218/7818 +f 2233/2240/7819 2232/2239/7820 2231/2218/7821 2230/2227/7822 +f 2209/2202/7823 2233/2240/7824 2230/2227/7825 2208/2190/7826 +f 2225/2219/7827 2134/2141/7828 2125/2129/7829 2238/2236/7830 +f 2226/2221/7831 2225/2219/7832 2238/2236/7833 2237/2235/7834 +f 2227/2223/7835 2226/2221/7836 2237/2235/7837 2236/2234/7838 +f 2236/2234/7839 2221/2241/7840 2224/2242/7841 2227/2223/7842 +f 2222/2243/7843 2180/2217/7844 2208/2190/7845 2229/2225/7846 +f 2223/2244/7847 2222/2243/7848 2229/2225/7849 2228/2224/7850 +f 2224/2242/7851 2223/2244/7852 2228/2224/7853 2227/2223/7854 +f 2219/2245/7855 2221/2241/7856 2236/2234/7857 2235/2232/7858 +f 2220/2246/7859 2219/2245/7860 2235/2232/7861 2234/2230/7862 +f 2120/2229/7863 2119/2247/7864 2220/2246/7865 2234/2230/7866 +f 2087/2084/7867 2086/2083/7868 2249/2248/7869 +f 2085/2094/7870 2084/2093/7871 2249/2248/7872 +f 2086/2083/7873 2085/2094/7874 2249/2248/7875 +f 2123/2126/7876 2087/2084/7877 2249/2248/7878 +f 2124/2127/7879 2123/2126/7880 2249/2248/7881 +f 2125/2129/7882 2124/2127/7883 2249/2248/7884 +f 2120/2229/7885 2240/2228/7886 2249/2248/7887 +f 2239/2238/7888 2125/2129/7889 2249/2248/7890 +f 2240/2228/7891 2239/2238/7892 2249/2248/7893 +f 2084/2093/7894 2247/2249/7895 2249/2248/7896 +f 2247/2249/7897 2248/2250/7898 2249/2248/7899 +f 2248/2250/7900 2120/2229/7901 2249/2248/7902 +f 2250/1964/7903 2254/1965/7904 2255/2251/7905 1942/2252/7906 +f 2251/1963/7907 2250/1964/7908 1942/2252/7909 1941/2253/7910 +f 2252/1962/7911 2251/1963/7912 1941/2253/7913 1940/2254/7914 +f 1943/2255/7915 2253/1961/7916 2252/1962/7917 1940/2254/7918 +f 2254/1965/7919 1953/1941/7920 1946/1967/7921 2255/2251/7922 +f 2263/2256/7923 2264/2257/7924 2256/2258/7925 2296/2259/7926 +f 2296/2259/7927 2256/2258/7928 2257/2260/7929 2297/2261/7930 +f 2257/2260/7931 2258/2262/7932 2259/2263/7933 2297/2261/7934 +f 2297/2261/7935 2259/2263/7936 2260/2264/7937 2298/2265/7938 +f 2260/2264/7939 2261/2266/7940 2262/2267/7941 2298/2265/7942 +f 2298/2265/7943 2262/2267/7944 2263/2256/7945 2296/2259/7946 +f 2296/2259/7947 2297/2261/7948 2298/2265/7949 +f 2272/2268/7950 2273/2269/7951 2265/2270/7952 2299/2271/7953 +f 2299/2271/7954 2265/2270/7955 2266/2272/7956 2300/2273/7957 +f 2266/2272/7958 2267/2274/7959 2268/2275/7960 2300/2273/7961 +f 2300/2273/7962 2268/2275/7963 2269/2276/7964 2301/2277/7965 +f 2269/2276/7966 2270/2278/7967 2271/2279/7968 2301/2277/7969 +f 2301/2277/7970 2271/2279/7971 2272/2268/7972 2299/2271/7973 +f 2299/2271/7974 2300/2273/7975 2301/2277/7976 +f 2281/2280/7977 2282/2281/7978 2274/2282/7979 2302/2283/7980 +f 2302/2283/7981 2274/2282/7982 2275/2284/7983 2303/2285/7984 +f 2275/2284/7985 2276/2286/7986 2277/2287/7987 2303/2285/7988 +f 2303/2285/7989 2277/2287/7990 2278/2288/7991 2304/2289/7992 +f 2278/2288/7993 2279/2290/7994 2280/2291/7995 2304/2289/7996 +f 2304/2289/7997 2280/2291/7998 2281/2280/7999 2302/2283/8000 +f 2302/2283/8001 2303/2285/8002 2304/2289/8003 +f 2294/2292/8004 2295/2293/8005 2287/2294/8006 2305/2295/8007 +f 2305/2295/8008 2287/2294/8009 2288/2296/8010 2306/2297/8011 +f 2288/2296/8012 2289/2298/8013 2290/2299/8014 2306/2297/8015 +f 2306/2297/8016 2290/2299/8017 2291/2300/8018 2307/2301/8019 +f 2291/2300/8020 2292/2302/8021 2293/2303/8022 2307/2301/8023 +f 2307/2301/8024 2293/2303/8025 2294/2292/8026 2305/2295/8027 +f 2305/2295/8028 2306/2297/8029 2307/2301/8030 +f 2282/2281/8031 2281/2280/8032 2284/2304/8033 2283/2305/8034 +f 2281/2280/8035 2280/2291/8036 2285/2306/8037 2284/2304/8038 +f 2280/2291/8039 2279/2290/8040 2286/2307/8041 2285/2306/8042 +f 2264/2257/8043 2263/2256/8044 2268/2275/8045 2267/2274/8046 +f 2263/2256/8047 2262/2267/8048 2269/2276/8049 2268/2275/8050 +f 2262/2267/8051 2261/2266/8052 2270/2278/8053 2269/2276/8054 +f 2292/2302/8055 2291/2300/8056 2274/2282/8057 2282/2281/8058 +f 2291/2300/8059 2290/2299/8060 2275/2284/8061 2274/2282/8062 +f 2290/2299/8063 2289/2298/8064 2276/2286/8065 2275/2284/8066 +f 2289/2298/8067 2264/2257/8068 2267/2274/8069 2276/2286/8070 +f 2279/2290/8071 2278/2288/8072 2265/2270/8073 2273/2269/8074 +f 2278/2288/8075 2277/2287/8076 2266/2272/8077 2265/2270/8078 +f 2277/2287/8079 2276/2286/8080 2267/2274/8081 2266/2272/8082 +f 2289/2298/8083 2288/2296/8084 2256/2258/8085 2264/2257/8086 +f 2288/2296/8087 2287/2294/8088 2257/2260/8089 2256/2258/8090 +f 2287/2294/8091 2295/2293/8092 2258/2262/8093 2257/2260/8094 +f 2311/2308/8095 2310/2309/8096 2319/2310/8097 2318/2311/8098 +f 2310/2309/8099 2309/2312/8100 2320/2313/8101 2319/2310/8102 +f 2309/2312/8103 2308/2314/8104 2321/2315/8105 2320/2313/8106 +f 2315/2316/8107 2314/2317/8108 2331/2318/8109 2330/2319/8110 +f 2314/2317/8111 2313/2320/8112 2332/2321/8113 2331/2318/8114 +f 2313/2320/8115 2312/2322/8116 2333/2323/8117 2332/2321/8118 +f 2318/2311/8119 2317/2324/8120 2337/2325/8121 2336/2326/8122 +f 2317/2324/8123 2316/2327/8124 2338/2328/8125 2337/2325/8126 +f 2338/2328/8127 2316/2327/8128 2324/2329/8129 2339/2330/8130 +f 2328/2331/8131 2327/2332/8132 2324/2329/8133 2323/2333/8134 +f 2329/2334/8135 2328/2331/8136 2323/2333/8137 2322/2335/8138 +f 2330/2319/8139 2329/2334/8140 2322/2335/8141 2321/2315/8142 +f 2327/2332/8143 2326/2336/8144 2349/2337/8145 2348/2338/8146 +f 2326/2336/8147 2325/2339/8148 2350/2340/8149 2349/2337/8150 +f 2325/2339/8151 2333/2323/8152 2351/2341/8153 2350/2340/8154 +f 2353/2342/8155 2352/2343/8156 2336/2326/8157 2335/2344/8158 +f 2354/2345/8159 2353/2342/8160 2335/2344/8161 2334/2346/8162 +f 2355/2347/8163 2354/2345/8164 2334/2346/8165 2342/2348/8166 +f 2346/2349/8167 2345/2350/8168 2342/2348/8169 2341/2351/8170 +f 2347/2352/8171 2346/2349/8172 2341/2351/8173 2340/2353/8174 +f 2348/2338/8175 2347/2352/8176 2340/2353/8177 2339/2330/8178 +f 2357/2354/8179 2356/2355/8180 2345/2350/8181 2344/2356/8182 +f 2358/2357/8183 2357/2354/8184 2344/2356/8185 2343/2358/8186 +f 2359/2359/8187 2358/2357/8188 2343/2358/8189 2351/2341/8190 +f 2321/2315/8191 2308/2314/8192 2315/2316/8193 2330/2319/8194 +f 2356/2355/8195 2355/2347/8196 2342/2348/8197 2345/2350/8198 +f 2312/2322/8199 2359/2359/8200 2351/2341/8201 2333/2323/8202 +f 2352/2343/8203 2311/2308/8204 2318/2311/8205 2336/2326/8206 +f 2323/2333/8207 2324/2329/8208 2316/2327/8209 2360/2360/8210 +f 2360/2360/8211 2316/2327/8212 2317/2324/8213 2361/2361/8214 +f 2317/2324/8215 2318/2311/8216 2319/2310/8217 2361/2361/8218 +f 2361/2361/8219 2319/2310/8220 2320/2313/8221 2362/2362/8222 +f 2320/2313/8223 2321/2315/8224 2322/2335/8225 2362/2362/8226 +f 2362/2362/8227 2322/2335/8228 2323/2333/8229 2360/2360/8230 +f 2360/2360/8231 2361/2361/8232 2362/2362/8233 +f 2332/2321/8234 2333/2323/8235 2325/2339/8236 2363/2363/8237 +f 2363/2363/8238 2325/2339/8239 2326/2336/8240 2364/2364/8241 +f 2326/2336/8242 2327/2332/8243 2328/2331/8244 2364/2364/8245 +f 2364/2364/8246 2328/2331/8247 2329/2334/8248 2365/2365/8249 +f 2329/2334/8250 2330/2319/8251 2331/2318/8252 2365/2365/8253 +f 2365/2365/8254 2331/2318/8255 2332/2321/8256 2363/2363/8257 +f 2363/2363/8258 2364/2364/8259 2365/2365/8260 +f 2341/2351/8261 2342/2348/8262 2334/2346/8263 2366/2366/8264 +f 2366/2366/8265 2334/2346/8266 2335/2344/8267 2367/2367/8268 +f 2335/2344/8269 2336/2326/8270 2337/2325/8271 2367/2367/8272 +f 2367/2367/8273 2337/2325/8274 2338/2328/8275 2368/2368/8276 +f 2338/2328/8277 2339/2330/8278 2340/2353/8279 2368/2368/8280 +f 2368/2368/8281 2340/2353/8282 2341/2351/8283 2366/2366/8284 +f 2366/2366/8285 2367/2367/8286 2368/2368/8287 +f 2350/2340/8288 2351/2341/8289 2343/2358/8290 2369/2369/8291 +f 2369/2369/8292 2343/2358/8293 2344/2356/8294 2370/2370/8295 +f 2344/2356/8296 2345/2350/8297 2346/2349/8298 2370/2370/8299 +f 2370/2370/8300 2346/2349/8301 2347/2352/8302 2371/2371/8303 +f 2347/2352/8304 2348/2338/8305 2349/2337/8306 2371/2371/8307 +f 2371/2371/8308 2349/2337/8309 2350/2340/8310 2369/2369/8311 +f 2369/2369/8312 2370/2370/8313 2371/2371/8314 +f 2327/2332/8315 2348/2338/8316 2339/2330/8317 2324/2329/8318 +f 2379/2372/8319 2380/2373/8320 2372/2374/8321 2414/2375/8322 +f 2414/2375/8323 2372/2374/8324 2373/2376/8325 2415/2377/8326 +f 2373/2376/8327 2374/2378/8328 2375/2379/8329 2415/2377/8330 +f 2415/2377/8331 2375/2379/8332 2376/2380/8333 2416/2381/8334 +f 2376/2380/8335 2377/2382/8336 2378/2383/8337 2416/2381/8338 +f 2416/2381/8339 2378/2383/8340 2379/2372/8341 2414/2375/8342 +f 2414/2375/8343 2415/2377/8344 2416/2381/8345 +f 2392/2384/8346 2393/2385/8347 2385/2386/8348 2417/2387/8349 +f 2417/2387/8350 2385/2386/8351 2386/2388/8352 2418/2389/8353 +f 2386/2388/8354 2387/2390/8355 2388/2391/8356 2418/2389/8357 +f 2418/2389/8358 2388/2391/8359 2389/2392/8360 2419/2393/8361 +f 2389/2392/8362 2390/2394/8363 2391/2395/8364 2419/2393/8365 +f 2419/2393/8366 2391/2395/8367 2392/2384/8368 2417/2387/8369 +f 2417/2387/8370 2418/2389/8371 2419/2393/8372 +f 2405/2396/8373 2270/2278/8374 2398/2397/8375 2420/2398/8376 +f 2420/2398/8377 2398/2397/8378 2399/2399/8379 2421/2400/8380 +f 2399/2399/8381 2400/2401/8382 2401/2402/8383 2421/2400/8384 +f 2421/2400/8385 2401/2402/8386 2402/2403/8387 2422/2404/8388 +f 2402/2403/8389 2403/2405/8390 2404/2406/8391 2422/2404/8392 +f 2422/2404/8393 2404/2406/8394 2405/2396/8395 2420/2398/8396 +f 2420/2398/8397 2421/2400/8398 2422/2404/8399 +f 2412/2407/8400 2413/2408/8401 2406/2409/8402 2423/2410/8403 +f 2423/2410/8404 2406/2409/8405 2407/2411/8406 2424/2412/8407 +f 2407/2411/8408 2408/2413/8409 2409/2414/8410 2424/2412/8411 +f 2424/2412/8412 2409/2414/8413 2410/2415/8414 2425/2416/8415 +f 2410/2415/8416 2261/2266/8417 2411/2417/8418 2425/2416/8419 +f 2425/2416/8420 2411/2417/8421 2412/2407/8422 2423/2410/8423 +f 2423/2410/8424 2424/2412/8425 2425/2416/8426 +f 2393/2385/8427 2392/2384/8428 2395/2418/8429 2394/2419/8430 +f 2392/2384/8431 2391/2395/8432 2396/2420/8433 2395/2418/8434 +f 2391/2395/8435 2390/2394/8436 2397/2421/8437 2396/2420/8438 +f 2377/2382/8439 2376/2380/8440 2382/2422/8441 2381/2423/8442 +f 2376/2380/8443 2375/2379/8444 2383/2424/8445 2382/2422/8446 +f 2375/2379/8447 2374/2378/8448 2384/2425/8449 2383/2424/8450 +f 2380/2373/8451 2379/2372/8452 2388/2391/8453 2387/2390/8454 +f 2379/2372/8455 2378/2383/8456 2389/2392/8457 2388/2391/8458 +f 2378/2383/8459 2377/2382/8460 2390/2394/8461 2389/2392/8462 +f 2390/2394/8463 2377/2382/8464 2381/2423/8465 2397/2421/8466 +f 2261/2266/8467 2410/2415/8468 2398/2397/8469 2270/2278/8470 +f 2410/2415/8471 2409/2414/8472 2399/2399/8473 2398/2397/8474 +f 2409/2414/8475 2408/2413/8476 2400/2401/8477 2399/2399/8478 +f 2408/2413/8479 2380/2373/8480 2387/2390/8481 2400/2401/8482 +f 2403/2405/8483 2402/2403/8484 2385/2386/8485 2393/2385/8486 +f 2402/2403/8487 2401/2402/8488 2386/2388/8489 2385/2386/8490 +f 2401/2402/8491 2400/2401/8492 2387/2390/8493 2386/2388/8494 +f 2408/2413/8495 2407/2411/8496 2372/2374/8497 2380/2373/8498 +f 2407/2411/8499 2406/2409/8500 2373/2376/8501 2372/2374/8502 +f 2406/2409/8503 2413/2408/8504 2374/2378/8505 2373/2376/8506 +f 2432/2426/8507 2433/2427/8508 2426/2428/8509 2471/2429/8510 +f 2471/2429/8511 2426/2428/8512 2427/2430/8513 2472/2431/8514 +f 2427/2430/8515 2428/2432/8516 2429/2433/8517 2472/2431/8518 +f 2472/2431/8519 2429/2433/8520 2430/2434/8521 2473/2435/8522 +f 2430/2434/8523 2292/2302/8524 2431/2436/8525 2473/2435/8526 +f 2473/2435/8527 2431/2436/8528 2432/2426/8529 2471/2429/8530 +f 2471/2429/8531 2472/2431/8532 2473/2435/8533 +f 2440/2437/8534 2441/2438/8535 2434/2439/8536 2474/2440/8537 +f 2474/2440/8538 2434/2439/8539 2435/2441/8540 2475/2442/8541 +f 2435/2441/8542 2436/2443/8543 2437/2444/8544 2475/2442/8545 +f 2475/2442/8546 2437/2444/8547 2438/2445/8548 2476/2446/8549 +f 2438/2445/8550 2282/2281/8551 2439/2447/8552 2476/2446/8553 +f 2476/2446/8554 2439/2447/8555 2440/2437/8556 2474/2440/8557 +f 2474/2440/8558 2475/2442/8559 2476/2446/8560 +f 2452/2448/8561 2453/2449/8562 2445/2450/8563 2477/2451/8564 +f 2477/2451/8565 2445/2450/8566 2446/2452/8567 2478/2453/8568 +f 2446/2452/8569 2447/2454/8570 2448/2455/8571 2478/2453/8572 +f 2478/2453/8573 2448/2455/8574 2449/2456/8575 2479/2457/8576 +f 2449/2456/8577 2450/2458/8578 2451/2459/8579 2479/2457/8580 +f 2479/2457/8581 2451/2459/8582 2452/2448/8583 2477/2451/8584 +f 2477/2451/8585 2478/2453/8586 2479/2457/8587 +f 2465/2460/8588 2466/2461/8589 2458/2462/8590 2480/2463/8591 +f 2480/2463/8592 2458/2462/8593 2459/2464/8594 2481/2465/8595 +f 2459/2464/8596 2460/2466/8597 2461/2467/8598 2481/2465/8599 +f 2481/2465/8600 2461/2467/8601 2462/2468/8602 2482/2469/8603 +f 2462/2468/8604 2463/2470/8605 2464/2471/8606 2482/2469/8607 +f 2482/2469/8608 2464/2471/8609 2465/2460/8610 2480/2463/8611 +f 2480/2463/8612 2481/2465/8613 2482/2469/8614 +f 2467/2472/8615 2466/2461/8616 2465/2460/8617 2468/2473/8618 +f 2465/2460/8619 2464/2471/8620 2469/2474/8621 2468/2473/8622 +f 2464/2471/8623 2463/2470/8624 2470/2475/8625 2469/2474/8626 +f 2453/2449/8627 2452/2448/8628 2455/2476/8629 2454/2477/8630 +f 2452/2448/8631 2451/2459/8632 2456/2478/8633 2455/2476/8634 +f 2451/2459/8635 2450/2458/8636 2457/2479/8637 2456/2478/8638 +f 2450/2458/8639 2441/2438/8640 2442/2480/8641 2457/2479/8642 +f 2441/2438/8643 2440/2437/8644 2443/2481/8645 2442/2480/8646 +f 2440/2437/8647 2439/2447/8648 2444/2482/8649 2443/2481/8650 +f 2439/2447/8651 2282/2281/8652 2283/2305/8653 2444/2482/8654 +f 2433/2427/8655 2432/2426/8656 2437/2444/8657 2436/2443/8658 +f 2432/2426/8659 2431/2436/8660 2438/2445/8661 2437/2444/8662 +f 2431/2436/8663 2292/2302/8664 2282/2281/8665 2438/2445/8666 +f 2463/2470/8667 2453/2449/8668 2454/2477/8669 2470/2475/8670 +f 2463/2470/8671 2462/2468/8672 2445/2450/8673 2453/2449/8674 +f 2462/2468/8675 2461/2467/8676 2446/2452/8677 2445/2450/8678 +f 2461/2467/8679 2460/2466/8680 2447/2454/8681 2446/2452/8682 +f 2433/2427/8683 2436/2443/8684 2447/2454/8685 2460/2466/8686 +f 2434/2439/8687 2441/2438/8688 2450/2458/8689 2449/2456/8690 +f 2435/2441/8691 2434/2439/8692 2449/2456/8693 2448/2455/8694 +f 2436/2443/8695 2435/2441/8696 2448/2455/8697 2447/2454/8698 +f 2426/2428/8699 2433/2427/8700 2460/2466/8701 2459/2464/8702 +f 2427/2430/8703 2426/2428/8704 2459/2464/8705 2458/2462/8706 +f 2466/2461/8707 2428/2432/8708 2427/2430/8709 2458/2462/8710 +f 2493/2483/8711 2494/2484/8712 2487/2485/8713 2528/2486/8714 +f 2528/2486/8715 2487/2485/8716 2488/2487/8717 2529/2488/8718 +f 2488/2487/8719 2273/2269/8720 2489/2489/8721 2529/2488/8722 +f 2529/2488/8723 2489/2489/8724 2490/2490/8725 2530/2491/8726 +f 2490/2490/8727 2491/2492/8728 2492/2493/8729 2530/2491/8730 +f 2530/2491/8731 2492/2493/8732 2493/2483/8733 2528/2486/8734 +f 2528/2486/8735 2529/2488/8736 2530/2491/8737 +f 2502/2494/8738 2503/2495/8739 2495/2496/8740 2531/2497/8741 +f 2531/2497/8742 2495/2496/8743 2496/2498/8744 2532/2499/8745 +f 2496/2498/8746 2497/2500/8747 2498/2501/8748 2532/2499/8749 +f 2532/2499/8750 2498/2501/8751 2499/2502/8752 2533/2503/8753 +f 2499/2502/8754 2500/2504/8755 2501/2505/8756 2533/2503/8757 +f 2533/2503/8758 2501/2505/8759 2502/2494/8760 2531/2497/8761 +f 2531/2497/8762 2532/2499/8763 2533/2503/8764 +f 2510/2506/8765 2511/2507/8766 2504/2508/8767 2534/2509/8768 +f 2534/2509/8769 2504/2508/8770 2505/2510/8771 2535/2511/8772 +f 2505/2510/8773 2279/2290/8774 2506/2512/8775 2535/2511/8776 +f 2535/2511/8777 2506/2512/8778 2507/2513/8779 2536/2514/8780 +f 2507/2513/8781 2508/2515/8782 2509/2516/8783 2536/2514/8784 +f 2536/2514/8785 2509/2516/8786 2510/2506/8787 2534/2509/8788 +f 2534/2509/8789 2535/2511/8790 2536/2514/8791 +f 2519/2517/8792 2520/2518/8793 2512/2519/8794 2537/2520/8795 +f 2537/2520/8796 2512/2519/8797 2513/2521/8798 2538/2522/8799 +f 2513/2521/8800 2514/2523/8801 2515/2524/8802 2538/2522/8803 +f 2538/2522/8804 2515/2524/8805 2516/2525/8806 2539/2526/8807 +f 2516/2525/8808 2517/2527/8809 2518/2528/8810 2539/2526/8811 +f 2539/2526/8812 2518/2528/8813 2519/2517/8814 2537/2520/8815 +f 2537/2520/8816 2538/2522/8817 2539/2526/8818 +f 2515/2524/8819 2514/2523/8820 2511/2507/8821 2510/2506/8822 +f 2516/2525/8823 2515/2524/8824 2510/2506/8825 2509/2516/8826 +f 2517/2527/8827 2516/2525/8828 2509/2516/8829 2508/2515/8830 +f 2497/2500/8831 2517/2527/8832 2508/2515/8833 2494/2484/8834 +f 2498/2501/8835 2497/2500/8836 2494/2484/8837 2493/2483/8838 +f 2499/2502/8839 2498/2501/8840 2493/2483/8841 2492/2493/8842 +f 2500/2504/8843 2499/2502/8844 2492/2493/8845 2491/2492/8846 +f 2501/2505/8847 2500/2504/8848 2486/2529/8849 2485/2530/8850 +f 2502/2494/8851 2501/2505/8852 2485/2530/8853 2484/2531/8854 +f 2503/2495/8855 2502/2494/8856 2484/2531/8857 2483/2532/8858 +f 2512/2519/8859 2520/2518/8860 2527/2533/8861 2526/2534/8862 +f 2513/2521/8863 2512/2519/8864 2526/2534/8865 2525/2535/8866 +f 2514/2523/8867 2513/2521/8868 2525/2535/8869 2524/2536/8870 +f 2511/2507/8871 2514/2523/8872 2524/2536/8873 2523/2537/8874 +f 2504/2508/8875 2511/2507/8876 2523/2537/8877 2522/2538/8878 +f 2505/2510/8879 2504/2508/8880 2522/2538/8881 2521/2539/8882 +f 2279/2290/8883 2505/2510/8884 2521/2539/8885 2286/2307/8886 +f 2520/2518/8887 2503/2495/8888 2483/2532/8889 2527/2533/8890 +f 2520/2518/8891 2519/2517/8892 2495/2496/8893 2503/2495/8894 +f 2519/2517/8895 2518/2528/8896 2496/2498/8897 2495/2496/8898 +f 2518/2528/8899 2517/2527/8900 2497/2500/8901 2496/2498/8902 +f 2508/2515/8903 2507/2513/8904 2487/2485/8905 2494/2484/8906 +f 2507/2513/8907 2506/2512/8908 2488/2487/8909 2487/2485/8910 +f 2506/2512/8911 2279/2290/8912 2273/2269/8913 2488/2487/8914 +f 2543/2540/8915 2542/2541/8916 2551/2542/8917 2550/2543/8918 +f 2542/2541/8919 2541/2544/8920 2552/2545/8921 2551/2542/8922 +f 2541/2544/8923 2540/2546/8924 2553/2547/8925 2552/2545/8926 +f 2547/2548/8927 2546/2549/8928 2563/2550/8929 2562/2551/8930 +f 2546/2549/8931 2545/2552/8932 2564/2553/8933 2563/2550/8934 +f 2545/2552/8935 2544/2554/8936 2565/2555/8937 2564/2553/8938 +f 2550/2543/8939 2549/2556/8940 2569/2557/8941 2568/2558/8942 +f 2549/2556/8943 2548/2559/8944 2570/2560/8945 2569/2557/8946 +f 2570/2560/8947 2548/2559/8948 2556/2561/8949 2571/2562/8950 +f 2560/2563/8951 2559/2564/8952 2556/2561/8953 2555/2565/8954 +f 2561/2566/8955 2560/2563/8956 2555/2565/8957 2554/2567/8958 +f 2562/2551/8959 2561/2566/8960 2554/2567/8961 2553/2547/8962 +f 2559/2564/8963 2558/2568/8964 2581/2569/8965 2580/2570/8966 +f 2558/2568/8967 2557/2571/8968 2582/2572/8969 2581/2569/8970 +f 2557/2571/8971 2565/2555/8972 2583/2573/8973 2582/2572/8974 +f 2585/2574/8975 2584/2575/8976 2568/2558/8977 2567/2576/8978 +f 2586/2577/8979 2585/2574/8980 2567/2576/8981 2566/2578/8982 +f 2587/2579/8983 2586/2577/8984 2566/2578/8985 2574/2580/8986 +f 2578/2581/8987 2577/2582/8988 2574/2580/8989 2573/2583/8990 +f 2579/2584/8991 2578/2581/8992 2573/2583/8993 2572/2585/8994 +f 2580/2570/8995 2579/2584/8996 2572/2585/8997 2571/2562/8998 +f 2589/2586/8999 2588/2587/9000 2577/2582/9001 2576/2588/9002 +f 2590/2589/9003 2589/2586/9004 2576/2588/9005 2575/2590/9006 +f 2591/2591/9007 2590/2589/9008 2575/2590/9009 2583/2573/9010 +f 2588/2587/9011 2587/2579/9012 2574/2580/9013 2577/2582/9014 +f 2544/2554/9015 2591/2591/9016 2583/2573/9017 2565/2555/9018 +f 2584/2575/9019 2543/2540/9020 2550/2543/9021 2568/2558/9022 +f 2555/2565/9023 2556/2561/9024 2548/2559/9025 2592/2592/9026 +f 2592/2592/9027 2548/2559/9028 2549/2556/9029 2593/2593/9030 +f 2549/2556/9031 2550/2543/9032 2551/2542/9033 2593/2593/9034 +f 2593/2593/9035 2551/2542/9036 2552/2545/9037 2594/2594/9038 +f 2552/2545/9039 2553/2547/9040 2554/2567/9041 2594/2594/9042 +f 2594/2594/9043 2554/2567/9044 2555/2565/9045 2592/2592/9046 +f 2592/2592/9047 2593/2593/9048 2594/2594/9049 +f 2564/2553/9050 2565/2555/9051 2557/2571/9052 2595/2595/9053 +f 2595/2595/9054 2557/2571/9055 2558/2568/9056 2596/2596/9057 +f 2558/2568/9058 2559/2564/9059 2560/2563/9060 2596/2596/9061 +f 2596/2596/9062 2560/2563/9063 2561/2566/9064 2597/2597/9065 +f 2561/2566/9066 2562/2551/9067 2563/2550/9068 2597/2597/9069 +f 2597/2597/9070 2563/2550/9071 2564/2553/9072 2595/2595/9073 +f 2595/2595/9074 2596/2596/9075 2597/2597/9076 +f 2573/2583/9077 2574/2580/9078 2566/2578/9079 2598/2598/9080 +f 2598/2598/9081 2566/2578/9082 2567/2576/9083 2599/2599/9084 +f 2567/2576/9085 2568/2558/9086 2569/2557/9087 2599/2599/9088 +f 2599/2599/9089 2569/2557/9090 2570/2560/9091 2600/2600/9092 +f 2570/2560/9093 2571/2562/9094 2572/2585/9095 2600/2600/9096 +f 2600/2600/9097 2572/2585/9098 2573/2583/9099 2598/2598/9100 +f 2598/2598/9101 2599/2599/9102 2600/2600/9103 +f 2582/2572/9104 2583/2573/9105 2575/2590/9106 2601/2601/9107 +f 2601/2601/9108 2575/2590/9109 2576/2588/9110 2602/2602/9111 +f 2576/2588/9112 2577/2582/9113 2578/2581/9114 2602/2602/9115 +f 2602/2602/9116 2578/2581/9117 2579/2584/9118 2603/2603/9119 +f 2579/2584/9120 2580/2570/9121 2581/2569/9122 2603/2603/9123 +f 2603/2603/9124 2581/2569/9125 2582/2572/9126 2601/2601/9127 +f 2601/2601/9128 2602/2602/9129 2603/2603/9130 +f 2559/2564/9131 2580/2570/9132 2571/2562/9133 2556/2561/9134 +f 2607/2604/9135 2606/2605/9136 2615/2606/9137 2614/2607/9138 +f 2606/2605/9139 2605/2608/9140 2616/2609/9141 2615/2606/9142 +f 2605/2608/9143 2604/2610/9144 2617/2611/9145 2616/2609/9146 +f 2611/2612/9147 2610/2613/9148 2627/2614/9149 2626/2615/9150 +f 2610/2613/9151 2609/2616/9152 2628/2617/9153 2627/2614/9154 +f 2609/2616/9155 2608/2618/9156 2629/2619/9157 2628/2617/9158 +f 2614/2607/9159 2613/2620/9160 2633/2621/9161 2632/2622/9162 +f 2613/2620/9163 2612/2623/9164 2634/2624/9165 2633/2621/9166 +f 2634/2624/9167 2612/2623/9168 2620/2625/9169 2635/2626/9170 +f 2624/2627/9171 2623/2628/9172 2620/2625/9173 2619/2629/9174 +f 2625/2630/9175 2624/2627/9176 2619/2629/9177 2618/2631/9178 +f 2626/2615/9179 2625/2630/9180 2618/2631/9181 2617/2611/9182 +f 2623/2628/9183 2622/2632/9184 2643/2633/9185 2642/2634/9186 +f 2622/2632/9187 2621/2635/9188 2644/2636/9189 2643/2633/9190 +f 2621/2635/9191 2629/2619/9192 2645/2637/9193 2644/2636/9194 +f 2647/2638/9195 2646/2639/9196 2632/2622/9197 2631/2640/9198 +f 2648/2641/9199 2647/2638/9200 2631/2640/9201 2630/2642/9202 +f 2540/2546/9203 2648/2641/9204 2630/2642/9205 2553/2547/9206 +f 2640/2643/9207 2562/2551/9208 2553/2547/9209 2637/2644/9210 +f 2641/2645/9211 2640/2643/9212 2637/2644/9213 2636/2646/9214 +f 2642/2634/9215 2641/2645/9216 2636/2646/9217 2635/2626/9218 +f 2649/2647/9219 2547/2548/9220 2562/2551/9221 2639/2648/9222 +f 2650/2649/9223 2649/2647/9224 2639/2648/9225 2638/2650/9226 +f 2651/2651/9227 2650/2649/9228 2638/2650/9229 2645/2637/9230 +f 2617/2611/9231 2604/2610/9232 2611/2612/9233 2626/2615/9234 +f 2646/2639/9235 2607/2604/9236 2614/2607/9237 2632/2622/9238 +f 2619/2629/9239 2620/2625/9240 2612/2623/9241 2652/2652/9242 +f 2652/2652/9243 2612/2623/9244 2613/2620/9245 2653/2653/9246 +f 2613/2620/9247 2614/2607/9248 2615/2606/9249 2653/2653/9250 +f 2653/2653/9251 2615/2606/9252 2616/2609/9253 2654/2654/9254 +f 2616/2609/9255 2617/2611/9256 2618/2631/9257 2654/2654/9258 +f 2654/2654/9259 2618/2631/9260 2619/2629/9261 2652/2652/9262 +f 2652/2652/9263 2653/2653/9264 2654/2654/9265 +f 2628/2617/9266 2629/2619/9267 2621/2635/9268 2655/2655/9269 +f 2655/2655/9270 2621/2635/9271 2622/2632/9272 2656/2656/9273 +f 2622/2632/9274 2623/2628/9275 2624/2627/9276 2656/2656/9277 +f 2656/2656/9278 2624/2627/9279 2625/2630/9280 2657/2657/9281 +f 2625/2630/9282 2626/2615/9283 2627/2614/9284 2657/2657/9285 +f 2657/2657/9286 2627/2614/9287 2628/2617/9288 2655/2655/9289 +f 2655/2655/9290 2656/2656/9291 2657/2657/9292 +f 2637/2644/9293 2553/2547/9294 2630/2642/9295 2658/2658/9296 +f 2658/2658/9297 2630/2642/9298 2631/2640/9299 2659/2659/9300 +f 2631/2640/9301 2632/2622/9302 2633/2621/9303 2659/2659/9304 +f 2659/2659/9305 2633/2621/9306 2634/2624/9307 2660/2660/9308 +f 2634/2624/9309 2635/2626/9310 2636/2646/9311 2660/2660/9312 +f 2660/2660/9313 2636/2646/9314 2637/2644/9315 2658/2658/9316 +f 2658/2658/9317 2659/2659/9318 2660/2660/9319 +f 2644/2636/9320 2645/2637/9321 2638/2650/9322 2661/2661/9323 +f 2661/2661/9324 2638/2650/9325 2639/2648/9326 2662/2662/9327 +f 2639/2648/9328 2562/2551/9329 2640/2643/9330 2662/2662/9331 +f 2662/2662/9332 2640/2643/9333 2641/2645/9334 2663/2663/9335 +f 2641/2645/9336 2642/2634/9337 2643/2633/9338 2663/2663/9339 +f 2663/2663/9340 2643/2633/9341 2644/2636/9342 2661/2661/9343 +f 2661/2661/9344 2662/2662/9345 2663/2663/9346 +f 2623/2628/9347 2642/2634/9348 2635/2626/9349 2620/2625/9350 +f 2679/2664/9351 2680/2665/9352 2672/2666/9353 2716/2667/9354 +f 2716/2667/9355 2672/2666/9356 2673/2668/9357 2717/2669/9358 +f 2673/2668/9359 2674/2670/9360 2675/2671/9361 2717/2669/9362 +f 2717/2669/9363 2675/2671/9364 2676/2672/9365 2718/2673/9366 +f 2676/2672/9367 2677/2674/9368 2678/2675/9369 2718/2673/9370 +f 2718/2673/9371 2678/2675/9372 2679/2664/9373 2716/2667/9374 +f 2716/2667/9375 2717/2669/9376 2718/2673/9377 +f 2688/2676/9378 2689/2677/9379 2681/2678/9380 2719/2679/9381 +f 2719/2679/9382 2681/2678/9383 2682/2680/9384 2720/2681/9385 +f 2682/2680/9386 2683/2682/9387 2684/2683/9388 2720/2681/9389 +f 2720/2681/9390 2684/2683/9391 2685/2684/9392 2721/2685/9393 +f 2685/2684/9394 2686/2686/9395 2687/2687/9396 2721/2685/9397 +f 2721/2685/9398 2687/2687/9399 2688/2676/9400 2719/2679/9401 +f 2719/2679/9402 2720/2681/9403 2721/2685/9404 +f 2697/2688/9405 2698/2689/9406 2690/2690/9407 2722/2691/9408 +f 2722/2691/9409 2690/2690/9410 2691/2692/9411 2723/2693/9412 +f 2691/2692/9413 2692/2694/9414 2693/2695/9415 2723/2693/9416 +f 2723/2693/9417 2693/2695/9418 2694/2696/9419 2724/2697/9420 +f 2694/2696/9421 2695/2698/9422 2696/2699/9423 2724/2697/9424 +f 2724/2697/9425 2696/2699/9426 2697/2688/9427 2722/2691/9428 +f 2722/2691/9429 2723/2693/9430 2724/2697/9431 +f 2706/2700/9432 2707/2701/9433 2699/2702/9434 2725/2703/9435 +f 2725/2703/9436 2699/2702/9437 2700/2704/9438 2726/2705/9439 +f 2700/2704/9440 2701/2706/9441 2702/2707/9442 2726/2705/9443 +f 2726/2705/9444 2702/2707/9445 2703/2708/9446 2727/2709/9447 +f 2703/2708/9448 2704/2710/9449 2705/2711/9450 2727/2709/9451 +f 2727/2709/9452 2705/2711/9453 2706/2700/9454 2725/2703/9455 +f 2725/2703/9456 2726/2705/9457 2727/2709/9458 +f 2698/2689/9459 2697/2688/9460 2702/2707/9461 2701/2706/9462 +f 2697/2688/9463 2696/2699/9464 2703/2708/9465 2702/2707/9466 +f 2696/2699/9467 2695/2698/9468 2704/2710/9469 2703/2708/9470 +f 2683/2682/9471 2704/2710/9472 2695/2698/9473 2680/2665/9474 +f 2680/2665/9475 2679/2664/9476 2684/2683/9477 2683/2682/9478 +f 2679/2664/9479 2678/2675/9480 2685/2684/9481 2684/2683/9482 +f 2678/2675/9483 2677/2674/9484 2686/2686/9485 2685/2684/9486 +f 2667/2712/9487 2666/2713/9488 2675/2671/9489 2674/2670/9490 +f 2666/2713/9491 2665/2714/9492 2676/2672/9493 2675/2671/9494 +f 2665/2714/9495 2664/2715/9496 2677/2674/9497 2676/2672/9498 +f 2677/2674/9499 2664/2715/9500 2671/2716/9501 2686/2686/9502 +f 2671/2716/9503 2670/2717/9504 2687/2687/9505 2686/2686/9506 +f 2670/2717/9507 2669/2718/9508 2688/2676/9509 2687/2687/9510 +f 2669/2718/9511 2668/2719/9512 2689/2677/9513 2688/2676/9514 +f 2715/2720/9515 2714/2721/9516 2699/2702/9517 2707/2701/9518 +f 2714/2721/9519 2713/2722/9520 2700/2704/9521 2699/2702/9522 +f 2713/2722/9523 2712/2723/9524 2701/2706/9525 2700/2704/9526 +f 2712/2723/9527 2711/2724/9528 2698/2689/9529 2701/2706/9530 +f 2711/2724/9531 2710/2725/9532 2690/2690/9533 2698/2689/9534 +f 2710/2725/9535 2709/2726/9536 2691/2692/9537 2690/2690/9538 +f 2709/2726/9539 2708/2727/9540 2692/2694/9541 2691/2692/9542 +f 2692/2694/9543 2708/2727/9544 2667/2712/9545 2674/2670/9546 +f 2668/2719/9547 2715/2720/9548 2707/2701/9549 2689/2677/9550 +f 2707/2701/9551 2706/2700/9552 2681/2678/9553 2689/2677/9554 +f 2706/2700/9555 2705/2711/9556 2682/2680/9557 2681/2678/9558 +f 2705/2711/9559 2704/2710/9560 2683/2682/9561 2682/2680/9562 +f 2695/2698/9563 2694/2696/9564 2672/2666/9565 2680/2665/9566 +f 2694/2696/9567 2693/2695/9568 2673/2668/9569 2672/2666/9570 +f 2693/2695/9571 2692/2694/9572 2674/2670/9573 2673/2668/9574 +f 2608/2618/9575 2730/2728/9576 2737/2729/9577 2629/2619/9578 +f 2730/2728/9579 2729/2730/9580 2738/2731/9581 2737/2729/9582 +f 2729/2730/9583 2728/2732/9584 2739/2733/9585 2738/2731/9586 +f 2734/2734/9587 2733/2735/9588 2749/2736/9589 2748/2737/9590 +f 2733/2735/9591 2732/2738/9592 2750/2739/9593 2749/2736/9594 +f 2732/2738/9595 2731/2740/9596 2751/2741/9597 2750/2739/9598 +f 2629/2619/9599 2736/2742/9600 2754/2743/9601 2645/2637/9602 +f 2736/2742/9603 2735/2744/9604 2755/2745/9605 2754/2743/9606 +f 2755/2745/9607 2735/2744/9608 2742/2746/9609 2756/2747/9610 +f 2746/2748/9611 2745/2749/9612 2742/2746/9613 2741/2750/9614 +f 2747/2751/9615 2746/2748/9616 2741/2750/9617 2740/2752/9618 +f 2748/2737/9619 2747/2751/9620 2740/2752/9621 2739/2733/9622 +f 2745/2749/9623 2744/2753/9624 2766/2754/9625 2765/2755/9626 +f 2744/2753/9627 2743/2756/9628 2767/2757/9629 2766/2754/9630 +f 2743/2756/9631 2751/2741/9632 2768/2758/9633 2767/2757/9634 +f 2769/2759/9635 2651/2651/9636 2645/2637/9637 2753/2760/9638 +f 2770/2761/9639 2769/2759/9640 2753/2760/9641 2752/2762/9642 +f 2771/2763/9643 2770/2761/9644 2752/2762/9645 2759/2764/9646 +f 2763/2765/9647 2762/2766/9648 2759/2764/9649 2758/2767/9650 +f 2764/2768/9651 2763/2765/9652 2758/2767/9653 2757/2769/9654 +f 2765/2755/9655 2764/2768/9656 2757/2769/9657 2756/2747/9658 +f 2773/2770/9659 2772/2771/9660 2762/2766/9661 2761/2772/9662 +f 2774/2773/9663 2773/2770/9664 2761/2772/9665 2760/2774/9666 +f 2775/2775/9667 2774/2773/9668 2760/2774/9669 2768/2758/9670 +f 2739/2733/9671 2728/2732/9672 2734/2734/9673 2748/2737/9674 +f 2772/2771/9675 2771/2763/9676 2759/2764/9677 2762/2766/9678 +f 2731/2740/9679 2775/2775/9680 2768/2758/9681 2751/2741/9682 +f 2741/2750/9683 2742/2746/9684 2735/2744/9685 2776/2776/9686 +f 2776/2776/9687 2735/2744/9688 2736/2742/9689 2777/2777/9690 +f 2736/2742/9691 2629/2619/9692 2737/2729/9693 2777/2777/9694 +f 2777/2777/9695 2737/2729/9696 2738/2731/9697 2778/2778/9698 +f 2738/2731/9699 2739/2733/9700 2740/2752/9701 2778/2778/9702 +f 2778/2778/9703 2740/2752/9704 2741/2750/9705 2776/2776/9706 +f 2776/2776/9707 2777/2777/9708 2778/2778/9709 +f 2750/2739/9710 2751/2741/9711 2743/2756/9712 2779/2779/9713 +f 2779/2779/9714 2743/2756/9715 2744/2753/9716 2780/2780/9717 +f 2744/2753/9718 2745/2749/9719 2746/2748/9720 2780/2780/9721 +f 2780/2780/9722 2746/2748/9723 2747/2751/9724 2781/2781/9725 +f 2747/2751/9726 2748/2737/9727 2749/2736/9728 2781/2781/9729 +f 2781/2781/9730 2749/2736/9731 2750/2739/9732 2779/2779/9733 +f 2779/2779/9734 2780/2780/9735 2781/2781/9736 +f 2758/2767/9737 2759/2764/9738 2752/2762/9739 2782/2782/9740 +f 2782/2782/9741 2752/2762/9742 2753/2760/9743 2783/2783/9744 +f 2753/2760/9745 2645/2637/9746 2754/2743/9747 2783/2783/9748 +f 2783/2783/9749 2754/2743/9750 2755/2745/9751 2784/2784/9752 +f 2755/2745/9753 2756/2747/9754 2757/2769/9755 2784/2784/9756 +f 2784/2784/9757 2757/2769/9758 2758/2767/9759 2782/2782/9760 +f 2782/2782/9761 2783/2783/9762 2784/2784/9763 +f 2767/2757/9764 2768/2758/9765 2760/2774/9766 2785/2785/9767 +f 2785/2785/9768 2760/2774/9769 2761/2772/9770 2786/2786/9771 +f 2761/2772/9772 2762/2766/9773 2763/2765/9774 2786/2786/9775 +f 2786/2786/9776 2763/2765/9777 2764/2768/9778 2787/2787/9779 +f 2764/2768/9780 2765/2755/9781 2766/2754/9782 2787/2787/9783 +f 2787/2787/9784 2766/2754/9785 2767/2757/9786 2785/2785/9787 +f 2785/2785/9788 2786/2786/9789 2787/2787/9790 +f 2745/2749/9791 2765/2755/9792 2756/2747/9793 2742/2746/9794 +f 2794/2788/9795 2795/2789/9796 2788/2790/9797 2830/2791/9798 +f 2830/2791/9799 2788/2790/9800 2789/2792/9801 2831/2793/9802 +f 2789/2792/9803 2393/2385/9804 2790/2794/9805 2831/2793/9806 +f 2831/2793/9807 2790/2794/9808 2791/2795/9809 2832/2796/9810 +f 2791/2795/9811 2792/2797/9812 2793/2798/9813 2832/2796/9814 +f 2832/2796/9815 2793/2798/9816 2794/2788/9817 2830/2791/9818 +f 2830/2791/9819 2831/2793/9820 2832/2796/9821 +f 2806/2799/9822 2807/2800/9823 2799/2801/9824 2833/2802/9825 +f 2833/2802/9826 2799/2801/9827 2800/2803/9828 2834/2804/9829 +f 2800/2803/9830 2801/2805/9831 2802/2806/9832 2834/2804/9833 +f 2834/2804/9834 2802/2806/9835 2803/2807/9836 2835/2808/9837 +f 2803/2807/9838 2804/2809/9839 2805/2810/9840 2835/2808/9841 +f 2835/2808/9842 2805/2810/9843 2806/2799/9844 2833/2802/9845 +f 2833/2802/9846 2834/2804/9847 2835/2808/9848 +f 2819/2811/9849 2500/2504/9850 2812/2812/9851 2836/2813/9852 +f 2836/2813/9853 2812/2812/9854 2813/2814/9855 2837/2815/9856 +f 2813/2814/9857 2814/2816/9858 2815/2817/9859 2837/2815/9860 +f 2837/2815/9861 2815/2817/9862 2816/2818/9863 2838/2819/9864 +f 2816/2818/9865 2817/2820/9866 2818/2821/9867 2838/2819/9868 +f 2838/2819/9869 2818/2821/9870 2819/2811/9871 2836/2813/9872 +f 2836/2813/9873 2837/2815/9874 2838/2819/9875 +f 2829/2822/9876 2403/2405/9877 2823/2823/9878 2839/2824/9879 +f 2839/2824/9880 2823/2823/9881 2824/2825/9882 2840/2826/9883 +f 2824/2825/9884 2825/2827/9885 2826/2828/9886 2840/2826/9887 +f 2840/2826/9888 2826/2828/9889 2827/2829/9890 2841/2830/9891 +f 2827/2829/9892 2491/2492/9893 2828/2831/9894 2841/2830/9895 +f 2841/2830/9896 2828/2831/9897 2829/2822/9898 2839/2824/9899 +f 2839/2824/9900 2840/2826/9901 2841/2830/9902 +f 2500/2504/9903 2819/2811/9904 2820/2832/9905 2486/2529/9906 +f 2819/2811/9907 2818/2821/9908 2821/2833/9909 2820/2832/9910 +f 2818/2821/9911 2817/2820/9912 2822/2834/9913 2821/2833/9914 +f 2817/2820/9915 2807/2800/9916 2808/2835/9917 2822/2834/9918 +f 2807/2800/9919 2806/2799/9920 2809/2836/9921 2808/2835/9922 +f 2806/2799/9923 2805/2810/9924 2810/2837/9925 2809/2836/9926 +f 2805/2810/9927 2804/2809/9928 2811/2838/9929 2810/2837/9930 +f 2792/2797/9931 2791/2795/9932 2797/2839/9933 2796/2840/9934 +f 2791/2795/9935 2790/2794/9936 2798/2841/9937 2797/2839/9938 +f 2790/2794/9939 2393/2385/9940 2394/2419/9941 2798/2841/9942 +f 2802/2806/9943 2801/2805/9944 2795/2789/9945 2794/2788/9946 +f 2803/2807/9947 2802/2806/9948 2794/2788/9949 2793/2798/9950 +f 2804/2809/9951 2803/2807/9952 2793/2798/9953 2792/2797/9954 +f 2812/2812/9955 2500/2504/9956 2491/2492/9957 2827/2829/9958 +f 2813/2814/9959 2812/2812/9960 2827/2829/9961 2826/2828/9962 +f 2814/2816/9963 2813/2814/9964 2826/2828/9965 2825/2827/9966 +f 2801/2805/9967 2814/2816/9968 2825/2827/9969 2795/2789/9970 +f 2817/2820/9971 2816/2818/9972 2799/2801/9973 2807/2800/9974 +f 2816/2818/9975 2815/2817/9976 2800/2803/9977 2799/2801/9978 +f 2815/2817/9979 2814/2816/9980 2801/2805/9981 2800/2803/9982 +f 2825/2827/9983 2824/2825/9984 2788/2790/9985 2795/2789/9986 +f 2824/2825/9987 2823/2823/9988 2789/2792/9989 2788/2790/9990 +f 2823/2823/9991 2403/2405/9992 2393/2385/9993 2789/2792/9994 +f 2857/2842/9995 2858/2843/9996 2850/2844/9997 2890/2845/9998 +f 2890/2845/9999 2850/2844/10000 2851/2846/10001 2891/2847/10002 +f 2851/2846/10003 2852/2848/10004 2853/2849/10005 2891/2847/10006 +f 2891/2847/10007 2853/2849/10008 2854/2850/10009 2892/2851/10010 +f 2854/2850/10011 2855/2852/10012 2856/2853/10013 2892/2851/10014 +f 2892/2851/10015 2856/2853/10016 2857/2842/10017 2890/2845/10018 +f 2890/2845/10019 2891/2847/10020 2892/2851/10021 +f 2866/2854/10022 2867/2855/10023 2859/2856/10024 2893/2857/10025 +f 2893/2857/10026 2859/2856/10027 2860/2858/10028 2894/2859/10029 +f 2860/2858/10030 2861/2860/10031 2862/2861/10032 2894/2859/10033 +f 2894/2859/10034 2862/2861/10035 2863/2862/10036 2895/2863/10037 +f 2863/2862/10038 2864/2864/10039 2865/2865/10040 2895/2863/10041 +f 2895/2863/10042 2865/2865/10043 2866/2854/10044 2893/2857/10045 +f 2893/2857/10046 2894/2859/10047 2895/2863/10048 +f 2875/2866/10049 2792/2797/10050 2868/2867/10051 2896/2868/10052 +f 2896/2868/10053 2868/2867/10054 2869/2869/10055 2897/2870/10056 +f 2869/2869/10057 2870/2871/10058 2871/2872/10059 2897/2870/10060 +f 2897/2870/10061 2871/2872/10062 2872/2873/10063 2898/2874/10064 +f 2872/2873/10065 2873/2875/10066 2874/2876/10067 2898/2874/10068 +f 2898/2874/10069 2874/2876/10070 2875/2866/10071 2896/2868/10072 +f 2896/2868/10073 2897/2870/10074 2898/2874/10075 +f 2882/2877/10076 2883/2878/10077 2876/2879/10078 2899/2880/10079 +f 2899/2880/10080 2876/2879/10081 2877/2881/10082 2900/2882/10083 +f 2877/2881/10084 2804/2809/10085 2878/2883/10086 2900/2882/10087 +f 2900/2882/10088 2878/2883/10089 2879/2884/10090 2901/2885/10091 +f 2879/2884/10092 2880/2886/10093 2881/2887/10094 2901/2885/10095 +f 2901/2885/10096 2881/2887/10097 2882/2877/10098 2899/2880/10099 +f 2899/2880/10100 2900/2882/10101 2901/2885/10102 +f 2878/2883/10103 2804/2809/10104 2792/2797/10105 2875/2866/10106 +f 2879/2884/10107 2878/2883/10108 2875/2866/10109 2874/2876/10110 +f 2880/2886/10111 2879/2884/10112 2874/2876/10113 2873/2875/10114 +f 2861/2860/10115 2880/2886/10116 2873/2875/10117 2858/2843/10118 +f 2862/2861/10119 2861/2860/10120 2858/2843/10121 2857/2842/10122 +f 2863/2862/10123 2862/2861/10124 2857/2842/10125 2856/2853/10126 +f 2864/2864/10127 2863/2862/10128 2856/2853/10129 2855/2852/10130 +f 2853/2849/10131 2852/2848/10132 2845/2888/10133 2844/2889/10134 +f 2854/2850/10135 2853/2849/10136 2844/2889/10137 2843/2890/10138 +f 2855/2852/10139 2854/2850/10140 2843/2890/10141 2842/2891/10142 +f 2864/2864/10143 2855/2852/10144 2842/2891/10145 2849/2892/10146 +f 2865/2865/10147 2864/2864/10148 2849/2892/10149 2848/2893/10150 +f 2866/2854/10151 2865/2865/10152 2848/2893/10153 2847/2894/10154 +f 2867/2855/10155 2866/2854/10156 2847/2894/10157 2846/2895/10158 +f 2876/2879/10159 2883/2878/10160 2889/2896/10161 2888/2897/10162 +f 2877/2881/10163 2876/2879/10164 2888/2897/10165 2887/2898/10166 +f 2804/2809/10167 2877/2881/10168 2887/2898/10169 2811/2838/10170 +f 2868/2867/10171 2792/2797/10172 2796/2840/10173 2886/2899/10174 +f 2869/2869/10175 2868/2867/10176 2886/2899/10177 2885/2900/10178 +f 2870/2871/10179 2869/2869/10180 2885/2900/10181 2884/2901/10182 +f 2852/2848/10183 2870/2871/10184 2884/2901/10185 2845/2888/10186 +f 2883/2878/10187 2867/2855/10188 2846/2895/10189 2889/2896/10190 +f 2859/2856/10191 2867/2855/10192 2883/2878/10193 2882/2877/10194 +f 2860/2858/10195 2859/2856/10196 2882/2877/10197 2881/2887/10198 +f 2861/2860/10199 2860/2858/10200 2881/2887/10201 2880/2886/10202 +f 2850/2844/10203 2858/2843/10204 2873/2875/10205 2872/2873/10206 +f 2851/2846/10207 2850/2844/10208 2872/2873/10209 2871/2872/10210 +f 2852/2848/10211 2851/2846/10212 2871/2872/10213 2870/2871/10214 +f 2273/2269/10215 2272/2268/10216 2902/2902/10217 +f 2271/2279/10218 2270/2278/10219 2902/2902/10220 +f 2272/2268/10221 2271/2279/10222 2902/2902/10223 +f 2270/2278/10224 2405/2396/10225 2902/2902/10226 +f 2404/2406/10227 2403/2405/10228 2902/2902/10229 +f 2405/2396/10230 2404/2406/10231 2902/2902/10232 +f 2489/2489/10233 2273/2269/10234 2902/2902/10235 +f 2490/2490/10236 2489/2489/10237 2902/2902/10238 +f 2491/2492/10239 2490/2490/10240 2902/2902/10241 +f 2403/2405/10242 2829/2822/10243 2902/2902/10244 +f 2828/2831/10245 2491/2492/10246 2902/2902/10247 +f 2829/2822/10248 2828/2831/10249 2902/2902/10250 +f 2906/2903/10251 2904/2904/10252 2903/2905/10253 2905/2906/10254 +f 2908/2907/10255 2907/2908/10256 2904/2909/10257 2906/2910/10258 +f 2910/2911/10259 2909/2912/10260 2907/2913/10261 2908/2914/10262 +f 2905/2915/10263 2903/2916/10264 2909/2917/10265 2910/2918/10266 +f 2911/2919/10267 2910/2920/10268 2908/2921/10269 2913/2922/10270 +f 2917/2923/10271 2918/2924/10272 2916/2925/10273 2915/2926/10274 +f 2913/2922/10275 2908/2921/10276 2906/2927/10277 2914/2928/10278 +f 2911/2929/10279 2915/2930/10280 2916/2931/10281 2912/2932/10282 +f 2913/2933/10283 2917/2934/10284 2915/2935/10285 2911/2936/10286 +f 2918/2937/10287 2917/2938/10288 2913/2939/10289 2914/2940/10290 +f 2918/2941/10291 2914/2942/10292 2912/2943/10293 2916/2944/10294 +f 2905/2945/10295 2910/2920/10296 2911/2919/10297 2912/2946/10298 +f 2906/2927/10299 2905/2945/10300 2912/2946/10301 2914/2928/10302 +f 2909/2947/10303 2903/2948/10304 2904/2949/10305 2907/2950/10306 +f 2919/2951/10307 2920/2952/10308 3026/2953/10309 3025/2954/10310 +f 3070/2955/10311 2919/2951/10312 3025/2956/10313 3098/2957/10314 +f 2924/2958/10315 2930/2959/10316 2929/2960/10317 2923/2961/10318 +f 2925/2962/10319 2931/2963/10320 2930/2959/10321 2924/2958/10322 +f 2926/2964/10323 2932/2965/10324 2931/2963/10325 2925/2962/10326 +f 2927/2966/10327 2933/2967/10328 2932/2965/10329 2926/2964/10330 +f 2928/2968/10331 2934/2969/10332 2933/2967/10333 2927/2966/10334 +f 2923/2961/10335 2929/2960/10336 2934/2969/10337 2928/2968/10338 +f 2930/2970/10339 2936/2971/10340 2935/2972/10341 2929/2973/10342 +f 2931/2974/10343 2937/2975/10344 2936/2976/10345 2930/2977/10346 +f 2932/2978/10347 2938/2979/10348 2937/2975/10349 2931/2974/10350 +f 2933/2980/10351 2939/2981/10352 2938/2979/10353 2932/2978/10354 +f 2934/2982/10355 2940/2983/10356 2939/2981/10357 2933/2980/10358 +f 2929/2973/10359 2935/2972/10360 2940/2983/10361 2934/2982/10362 +f 2951/2984/10363 2952/2985/10364 2953/2986/10365 +f 2952/2985/10366 2954/2987/10367 2953/2986/10368 +f 2955/2988/10369 2956/2989/10370 2953/2986/10371 +f 2956/2989/10372 2951/2984/10373 2953/2986/10374 +f 2958/2990/10375 2957/2991/10376 2959/2992/10377 +f 2960/2993/10378 2958/2990/10379 2959/2992/10380 +f 2962/2994/10381 2961/2995/10382 2959/2992/10383 +f 2957/2991/10384 2962/2994/10385 2959/2992/10386 +f 2946/2996/10387 2947/2997/10388 2942/2998/10389 2941/2999/10390 +f 2947/2997/10391 2948/3000/10392 2943/3001/10393 2942/2998/10394 +f 2949/3002/10395 2950/3003/10396 2945/3004/10397 2944/3005/10398 +f 2950/3003/10399 2946/2996/10400 2941/2999/10401 2945/3004/10402 +f 2941/2999/10403 2942/2998/10404 2952/2985/10405 2951/2984/10406 +f 2942/2998/10407 2943/3001/10408 2954/2987/10409 2952/2985/10410 +f 2944/3005/10411 2945/3004/10412 2956/2989/10413 2955/2988/10414 +f 2945/3004/10415 2941/2999/10416 2951/2984/10417 2956/2989/10418 +f 2947/2997/10419 2946/2996/10420 2957/2991/10421 2958/2990/10422 +f 2948/3000/10423 2947/2997/10424 2958/2990/10425 2960/2993/10426 +f 2950/3003/10427 2949/3002/10428 2961/2995/10429 2962/2994/10430 +f 2946/2996/10431 2950/3003/10432 2962/2994/10433 2957/2991/10434 +f 2964/3006/10435 2963/3007/10436 2983/3008/10437 2984/3009/10438 +f 2965/3010/10439 2964/3006/10440 2984/3009/10441 2986/3011/10442 +f 2966/3012/10443 2965/3010/10444 2986/3011/10445 2987/3013/10446 +f 2967/3014/10447 2966/3012/10448 2987/3013/10449 2988/3015/10450 +f 2968/3016/10451 2967/3014/10452 2988/3015/10453 2989/3017/10454 +f 2969/3018/10455 2968/3016/10456 2989/3017/10457 2990/3019/10458 +f 2970/3020/10459 2969/3018/10460 2990/3019/10461 2991/3021/10462 +f 2971/3022/10463 2970/3020/10464 2991/3021/10465 2992/3023/10466 +f 2972/3024/10467 2971/3022/10468 2992/3023/10469 2993/3025/10470 +f 2973/3026/10471 2972/3024/10472 2993/3025/10473 2994/3027/10474 +f 2974/3028/10475 2973/3026/10476 2994/3027/10477 2995/3029/10478 +f 2975/3030/10479 2974/3028/10480 2995/3029/10481 2996/3031/10482 +f 2976/3032/10483 2975/3030/10484 2996/3031/10485 2997/3033/10486 +f 2977/3034/10487 2976/3032/10488 2997/3033/10489 2998/3035/10490 +f 2978/3036/10491 2977/3034/10492 2998/3035/10493 2999/3037/10494 +f 2979/3038/10495 2978/3036/10496 2999/3037/10497 3000/3039/10498 +f 2980/3040/10499 2979/3038/10500 3000/3039/10501 3001/3041/10502 +f 2981/3042/10503 2980/3040/10504 3001/3041/10505 3002/3043/10506 +f 2982/3044/10507 2981/3042/10508 3002/3043/10509 3003/3045/10510 +f 2963/3007/10511 2982/3044/10512 3003/3045/10513 2983/3008/10514 +f 2984/3009/10515 2983/3008/10516 2985/3046/10517 +f 2986/3011/10518 2984/3009/10519 2985/3046/10520 +f 2987/3013/10521 2986/3011/10522 2985/3046/10523 +f 2988/3015/10524 2987/3013/10525 2985/3046/10526 +f 2989/3017/10527 2988/3015/10528 2985/3046/10529 +f 2990/3019/10530 2989/3017/10531 2985/3046/10532 +f 2991/3021/10533 2990/3019/10534 2985/3046/10535 +f 2992/3023/10536 2991/3021/10537 2985/3046/10538 +f 2993/3025/10539 2992/3023/10540 2985/3046/10541 +f 2994/3027/10542 2993/3025/10543 2985/3046/10544 +f 2995/3029/10545 2994/3027/10546 2985/3046/10547 +f 2996/3031/10548 2995/3029/10549 2985/3046/10550 +f 2997/3033/10551 2996/3031/10552 2985/3046/10553 +f 2998/3035/10554 2997/3033/10555 2985/3046/10556 +f 2999/3037/10557 2998/3035/10558 2985/3046/10559 +f 3000/3039/10560 2999/3037/10561 2985/3046/10562 +f 3001/3041/10563 3000/3039/10564 2985/3046/10565 +f 3002/3043/10566 3001/3041/10567 2985/3046/10568 +f 3003/3045/10569 3002/3043/10570 2985/3046/10571 +f 2983/3008/10572 3003/3045/10573 2985/3046/10574 +f 3005/3047/10575 3004/3048/10576 3010/3049/10577 +f 3006/3050/10578 3005/3047/10579 3010/3049/10580 +f 3007/3051/10581 3006/3050/10582 3010/3049/10583 +f 3008/3052/10584 3007/3051/10585 3010/3049/10586 +f 3009/3053/10587 3008/3052/10588 3010/3049/10589 +f 3004/3048/10590 3009/3053/10591 3010/3049/10592 +f 2943/3001/10593 2948/3000/10594 2920/2952/10595 2919/2951/10596 +f 2949/3002/10597 2944/3005/10598 2921/3054/10599 2922/3055/10600 +f 2954/2987/10601 2943/3001/10602 2919/2951/10603 +f 2944/3005/10604 2955/2988/10605 2921/3054/10606 +f 2920/2952/10607 2948/3000/10608 2960/2993/10609 +f 2949/3002/10610 2922/3055/10611 2961/2995/10612 +f 2959/2992/10613 3012/3056/10614 2920/2952/10615 2960/2993/10616 +f 2921/3054/10617 3011/3057/10618 3096/3058/10619 3072/3059/10620 +f 2921/3054/10621 2955/2988/10622 2953/2986/10623 3011/3057/10624 +f 3011/3057/10625 2953/2986/10626 2954/2987/10627 2919/2951/10628 +f 3011/3057/10629 2919/2951/10630 3070/2955/10631 3096/3058/10632 +f 2961/2995/10633 2922/3055/10634 3012/3056/10635 2959/2992/10636 +f 3098/3060/10637 3025/3061/10638 2921/3054/10639 3072/3059/10640 +f 3015/3062/10641 3107/3063/10642 3108/3064/10643 3028/3065/10644 +f 3014/3066/10645 3020/3067/10646 3029/3068/10647 3027/3069/10648 +f 3020/3067/10649 3021/3070/10650 3030/3071/10651 3029/3068/10652 +f 3021/3070/10653 3015/3062/10654 3028/3065/10655 3030/3071/10656 +f 3013/3072/10657 3105/3073/10658 3106/3074/10659 3032/3075/10660 +f 3018/3076/10661 3024/3077/10662 3033/3078/10663 3031/3079/10664 +f 3024/3077/10665 3019/3080/10666 3034/3081/10667 3033/3078/10668 +f 3019/3080/10669 3013/3072/10670 3032/3075/10671 3034/3081/10672 +f 3017/3082/10673 3109/3083/10674 3110/3084/10675 3036/3085/10676 +f 3016/3086/10677 3022/3087/10678 3037/3088/10679 3035/3089/10680 +f 3022/3087/10681 3023/3090/10682 3038/3091/10683 3037/3088/10684 +f 3023/3090/10685 3017/3082/10686 3036/3085/10687 3038/3091/10688 +f 3039/3092/10689 3040/3093/10690 3068/3094/10691 3067/3095/10692 +f 2920/2952/10693 3039/3092/10694 3067/3096/10695 3026/3097/10696 +f 3053/3098/10697 3054/3099/10698 3055/3100/10699 +f 3054/3099/10700 3056/3101/10701 3055/3100/10702 +f 3057/3102/10703 3058/3103/10704 3055/3100/10705 +f 3058/3103/10706 3053/3098/10707 3055/3100/10708 +f 3060/3104/10709 3059/3105/10710 3061/3106/10711 +f 3062/3107/10712 3060/3104/10713 3061/3106/10714 +f 3064/3108/10715 3063/3109/10716 3061/3106/10717 +f 3059/3105/10718 3064/3108/10719 3061/3106/10720 +f 3048/3110/10721 3049/3111/10722 3044/3112/10723 3043/3113/10724 +f 3049/3111/10725 3050/3114/10726 3045/3115/10727 3044/3112/10728 +f 3051/3116/10729 3052/3117/10730 3047/3118/10731 3046/3119/10732 +f 3052/3117/10733 3048/3110/10734 3043/3113/10735 3047/3118/10736 +f 3043/3113/10737 3044/3112/10738 3054/3099/10739 3053/3098/10740 +f 3044/3112/10741 3045/3115/10742 3056/3101/10743 3054/3099/10744 +f 3046/3119/10745 3047/3118/10746 3058/3103/10747 3057/3102/10748 +f 3047/3118/10749 3043/3113/10750 3053/3098/10751 3058/3103/10752 +f 3049/3111/10753 3048/3110/10754 3059/3105/10755 3060/3104/10756 +f 3050/3114/10757 3049/3111/10758 3060/3104/10759 3062/3107/10760 +f 3052/3117/10761 3051/3116/10762 3063/3109/10763 3064/3108/10764 +f 3048/3110/10765 3052/3117/10766 3064/3108/10767 3059/3105/10768 +f 3045/3115/10769 3050/3114/10770 3040/3093/10771 3039/3092/10772 +f 3051/3116/10773 3046/3119/10774 3041/3120/10775 3042/3121/10776 +f 3056/3101/10777 3045/3115/10778 3039/3092/10779 +f 3046/3119/10780 3057/3102/10781 3041/3120/10782 +f 3040/3093/10783 3050/3114/10784 3062/3107/10785 +f 3051/3116/10786 3042/3121/10787 3063/3109/10788 +f 3061/3106/10789 3066/3122/10790 3040/3093/10791 3062/3107/10792 +f 2922/3055/10793 3041/3120/10794 3065/3123/10795 3012/3056/10796 +f 3041/3120/10797 3057/3102/10798 3055/3100/10799 3065/3123/10800 +f 3065/3123/10801 3055/3100/10802 3056/3101/10803 3039/3092/10804 +f 3012/3056/10805 3065/3123/10806 3039/3092/10807 2920/2952/10808 +f 3063/3109/10809 3042/3121/10810 3066/3122/10811 3061/3106/10812 +f 3042/3121/10813 3041/3120/10814 3067/3124/10815 3068/3125/10816 +f 3026/3126/10817 3067/3124/10818 3041/3120/10819 2922/3055/10820 +f 3069/3127/10821 3070/2955/10822 3098/3128/10823 3097/3129/10824 +f 3040/3093/10825 3069/3127/10826 3097/3130/10827 3068/3131/10828 +f 3083/3132/10829 3084/3133/10830 3085/3134/10831 +f 3084/3133/10832 3086/3135/10833 3085/3134/10834 +f 3087/3136/10835 3088/3137/10836 3085/3134/10837 +f 3088/3137/10838 3083/3132/10839 3085/3134/10840 +f 3090/3138/10841 3089/3139/10842 3091/3140/10843 +f 3092/3141/10844 3090/3138/10845 3091/3140/10846 +f 3094/3142/10847 3093/3143/10848 3091/3140/10849 +f 3089/3139/10850 3094/3142/10851 3091/3140/10852 +f 3078/3144/10853 3079/3145/10854 3074/3146/10855 3073/3147/10856 +f 3079/3145/10857 3080/3148/10858 3075/3149/10859 3074/3146/10860 +f 3081/3150/10861 3082/3151/10862 3077/3152/10863 3076/3153/10864 +f 3082/3151/10865 3078/3144/10866 3073/3147/10867 3077/3152/10868 +f 3073/3147/10869 3074/3146/10870 3084/3133/10871 3083/3132/10872 +f 3074/3146/10873 3075/3149/10874 3086/3135/10875 3084/3133/10876 +f 3076/3153/10877 3077/3152/10878 3088/3137/10879 3087/3136/10880 +f 3077/3152/10881 3073/3147/10882 3083/3132/10883 3088/3137/10884 +f 3079/3145/10885 3078/3144/10886 3089/3139/10887 3090/3138/10888 +f 3080/3148/10889 3079/3145/10890 3090/3138/10891 3092/3141/10892 +f 3082/3151/10893 3081/3150/10894 3093/3143/10895 3094/3142/10896 +f 3078/3144/10897 3082/3151/10898 3094/3142/10899 3089/3139/10900 +f 3075/3149/10901 3080/3148/10902 3070/2955/10903 3069/3127/10904 +f 3081/3150/10905 3076/3153/10906 3071/3154/10907 3072/3059/10908 +f 3086/3135/10909 3075/3149/10910 3069/3127/10911 +f 3076/3153/10912 3087/3136/10913 3071/3154/10914 +f 3070/2955/10915 3080/3148/10916 3092/3141/10917 +f 3081/3150/10918 3072/3059/10919 3093/3143/10920 +f 3091/3140/10921 3096/3058/10922 3070/2955/10923 3092/3141/10924 +f 3042/3121/10925 3071/3154/10926 3095/3155/10927 3066/3122/10928 +f 3071/3154/10929 3087/3136/10930 3085/3134/10931 3095/3155/10932 +f 3095/3155/10933 3085/3134/10934 3086/3135/10935 3069/3127/10936 +f 3066/3122/10937 3095/3155/10938 3069/3127/10939 3040/3093/10940 +f 3093/3143/10941 3072/3059/10942 3096/3058/10943 3091/3140/10944 +f 3072/3059/10945 3071/3154/10946 3097/3156/10947 3098/3060/10948 +f 3068/3125/10949 3097/3156/10950 3071/3154/10951 3042/3121/10952 +f 3004/3048/10953 3005/3047/10954 3100/3157/10955 3099/3158/10956 +f 3005/3047/10957 3006/3050/10958 3101/3159/10959 3100/3157/10960 +f 3006/3050/10961 3007/3051/10962 3102/3160/10963 3101/3159/10964 +f 3007/3051/10965 3008/3052/10966 3103/3161/10967 3102/3160/10968 +f 3008/3052/10969 3009/3053/10970 3104/3162/10971 3103/3161/10972 +f 3009/3053/10973 3004/3048/10974 3099/3158/10975 3104/3162/10976 +f 3099/3158/10977 3100/3157/10978 2924/2958/10979 2923/2961/10980 +f 3100/3157/10981 3101/3159/10982 2925/2962/10983 2924/2958/10984 +f 3101/3159/10985 3102/3160/10986 2926/2964/10987 2925/2962/10988 +f 3102/3160/10989 3103/3161/10990 2927/2966/10991 2926/2964/10992 +f 3103/3161/10993 3104/3162/10994 2928/2968/10995 2927/2966/10996 +f 3104/3162/10997 3099/3158/10998 2923/2961/10999 2928/2968/11000 +f 3105/3163/11001 3018/3076/11002 3031/3079/11003 3106/3164/11004 +f 3107/3165/11005 3014/3066/11006 3027/3069/11007 3108/3166/11008 +f 3109/3167/11009 3016/3086/11010 3035/3089/11011 3110/3168/11012 +f 3025/3061/11013 3026/3126/11014 2922/3055/11015 2921/3054/11016 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.obj.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.obj.meta new file mode 100644 index 0000000..e2acc18 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.obj.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 0d17106c40ecd4920976ddf8d6effd9b +timeCreated: 1509059845 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 100002: CubeRoom_GEO + 400000: //RootNode + 400002: CubeRoom_GEO + 2300000: CubeRoom_GEO + 3300000: CubeRoom_GEO + 4300000: CubeRoom_GEO + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.prefab new file mode 100644 index 0000000..030e60f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.prefab @@ -0,0 +1,203 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1000011959013568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000010083050526} + - component: {fileID: 33000012572763690} + - component: {fileID: 23000013708927898} + - component: {fileID: 64000011095866406} + m_Layer: 0 + m_Name: CubeRoomEnv + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010083050526 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011959013568} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000014274899290} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33000012572763690 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011959013568} + m_Mesh: {fileID: 4300000, guid: 0d17106c40ecd4920976ddf8d6effd9b, type: 3} +--- !u!23 &23000013708927898 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011959013568} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 7ac05d4c78dbc4bd792428649b027747, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 +--- !u!64 &64000011095866406 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000011959013568} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 14 + m_Mesh: {fileID: 4300000, guid: 0d17106c40ecd4920976ddf8d6effd9b, type: 3} +--- !u!1 &1000013165000468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000014274899290} + m_Layer: 0 + m_Name: CubeRoom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000014274899290 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1000013165000468} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: -2.7} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 4000010083050526} + - {fileID: 4841717847689300} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1251124450334416 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4841717847689300} + - component: {fileID: 33924111022362422} + - component: {fileID: 23808971310746206} + m_Layer: 0 + m_Name: SafetyRing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &4841717847689300 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1251124450334416} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.01, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000014274899290} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &33924111022362422 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1251124450334416} + m_Mesh: {fileID: 4300000, guid: e49edac1fa42d4e8290c88dfb8cb4acf, type: 3} +--- !u!23 &23808971310746206 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1251124450334416} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9118f68ba7df646b495e4208d2233d85, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.prefab.meta new file mode 100644 index 0000000..f352c27 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c12db6ac95da443448d6aa9e4cfc66c0 +timeCreated: 1499380585 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom_BakedDiffuse.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom_BakedDiffuse.png new file mode 100644 index 0000000..398bce6 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom_BakedDiffuse.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom_BakedDiffuse.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom_BakedDiffuse.png.meta new file mode 100644 index 0000000..84aff70 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/CubeRoom_BakedDiffuse.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 2b8cd4cf3f22749a9b8e8371a42883c2 +timeCreated: 1509059828 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials.meta new file mode 100644 index 0000000..be2eed2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5ae1329e0a56a4c869e34ee960a5b00f +folderAsset: yes +timeCreated: 1479502985 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials/CubeRoomEnvMat.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials/CubeRoomEnvMat.mat new file mode 100644 index 0000000..414c61a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials/CubeRoomEnvMat.mat @@ -0,0 +1,26 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: CubeRoomEnvMat + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: 2b8cd4cf3f22749a9b8e8371a42883c2, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: [] + m_Colors: [] diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials/CubeRoomEnvMat.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials/CubeRoomEnvMat.mat.meta new file mode 100644 index 0000000..3be4c03 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Environment/Materials/CubeRoomEnvMat.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7ac05d4c78dbc4bd792428649b027747 +timeCreated: 1479502985 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images.meta new file mode 100644 index 0000000..d98581c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 25dee7b2d68744fe6a3288c0e097cbca +folderAsset: yes +timeCreated: 1479426907 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_bg.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_bg.png new file mode 100644 index 0000000..94d964c Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_bg.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_bg.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_bg.png.meta new file mode 100644 index 0000000..6faf233 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_bg.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 288db1a85cba3455c9a11b25773781e2 +timeCreated: 1510962851 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_front.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_front.png new file mode 100644 index 0000000..0e50fe1 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_front.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_front.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_front.png.meta new file mode 100644 index 0000000..e222376 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_AppTile_front.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: c4ae70383ca474f52a620a85650f58e3 +timeCreated: 1510962852 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_Splash.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_Splash.png new file mode 100644 index 0000000..e6e6a57 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_Splash.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_Splash.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_Splash.png.meta new file mode 100644 index 0000000..109f898 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/HelloVR_Splash.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 2dcc47444163a4a20982a545ebfb41c3 +timeCreated: 1510962238 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo.meta new file mode 100644 index 0000000..8c5fe85 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d4a1ce4df416e4812985618226bf8749 +folderAsset: yes +timeCreated: 1471620462 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/circle.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/circle.png new file mode 100644 index 0000000..4b5bc2c Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/circle.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/circle.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/circle.png.meta new file mode 100644 index 0000000..f95041c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/circle.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 2d89a5f92f03449f2bd6c28c914115fc +timeCreated: 1471989503 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 96 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/hollowknob.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/hollowknob.png new file mode 100644 index 0000000..47107ac Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/hollowknob.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/hollowknob.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/hollowknob.png.meta new file mode 100644 index 0000000..a0e1d71 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/hollowknob.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: fe4fc8c33a7454cbf8504991c47a12a8 +timeCreated: 1471908435 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 64 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 40 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_pause_white_72.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_pause_white_72.png new file mode 100644 index 0000000..7192ad4 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_pause_white_72.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_pause_white_72.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_pause_white_72.png.meta new file mode 100644 index 0000000..8f0843e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_pause_white_72.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 33fe2a867f53b4dd7b47d13503efb4de +timeCreated: 1472499550 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 64 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_play_arrow_white_72.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_play_arrow_white_72.png new file mode 100644 index 0000000..5131eea Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_play_arrow_white_72.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_play_arrow_white_72.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_play_arrow_white_72.png.meta new file mode 100644 index 0000000..09a25c8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_play_arrow_white_72.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 36597cf9c1ebe400c99c9affa94cfd24 +timeCreated: 1471990838 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 64 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_volume_up_white_48.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_volume_up_white_48.png new file mode 100644 index 0000000..2ed0034 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_volume_up_white_48.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_volume_up_white_48.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_volume_up_white_48.png.meta new file mode 100644 index 0000000..d92fb5b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/ic_volume_up_white_48.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 738cb298280e345f4908ffe19a6cd591 +timeCreated: 1471991238 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 64 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/loading_bg.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/loading_bg.png new file mode 100644 index 0000000..2d6548a Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/loading_bg.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/loading_bg.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/loading_bg.png.meta new file mode 100644 index 0000000..2eaaec2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/VideoDemo/loading_bg.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: e4ecb698048ab455babea358c846d5f8 +timeCreated: 1478904110 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/ic_launcher_hello_vr_round.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/ic_launcher_hello_vr_round.png new file mode 100644 index 0000000..8c9903c Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/ic_launcher_hello_vr_round.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/ic_launcher_hello_vr_round.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/ic_launcher_hello_vr_round.png.meta new file mode 100644 index 0000000..04a6cae --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/ic_launcher_hello_vr_round.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: bd22a15a4cbd649caa948484771a6738 +timeCreated: 1510962220 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/logo_hello_vr_108px.svg b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/logo_hello_vr_108px.svg new file mode 100644 index 0000000..8055f80 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/logo_hello_vr_108px.svg @@ -0,0 +1,34 @@ + + + + logo_hello_vr_108px + Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/logo_hello_vr_108px.svg.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/logo_hello_vr_108px.svg.meta new file mode 100644 index 0000000..b12f726 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Images/logo_hello_vr_108px.svg.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d2e49b9842c8f44d79bac6ce9dc1baf1 +timeCreated: 1510962199 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials.meta new file mode 100644 index 0000000..32d096c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c302b52124e174ebc9c49aed885323c3 +folderAsset: yes +timeCreated: 1479418357 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR.meta new file mode 100644 index 0000000..4fff07c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ea16135a611c24e6a8827ada2c93b9ce +folderAsset: yes +timeCreated: 1479426475 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronBlue.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronBlue.mat new file mode 100644 index 0000000..d97b8c9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronBlue.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: IcosahedronBlue + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + 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: c5c9dbd1aff224a22a1567c3cb9b1c06, 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_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.1665225, g: 0.54763764, b: 0.64705884, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HighlightColor: {r: 0.63, g: 0.52, b: 0.38, a: 0.66} + - _ShadowColor: {r: 0.96, g: 1, b: 1, a: 0.85} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronBlue.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronBlue.mat.meta new file mode 100644 index 0000000..b52ab20 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronBlue.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: daad62324deb0cf448e5c805c8459bff +timeCreated: 1478804663 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronPink.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronPink.mat new file mode 100644 index 0000000..f91cfcf --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronPink.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: IcosahedronPink + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + 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: 08c2be6a5c9e8427e9ea097dabf7fe60, 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_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.6764706, g: 0.35315743, b: 0.35315743, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HighlightColor: {r: 0.63, g: 0.52, b: 0.38, a: 0.66} + - _ShadowColor: {r: 0.96, g: 1, b: 1, a: 0.85} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronPink.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronPink.mat.meta new file mode 100644 index 0000000..4781275 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/IcosahedronPink.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0edec395166a3244592f3532c7ce794c +timeCreated: 1478804663 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSphereBlue.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSphereBlue.mat new file mode 100644 index 0000000..271d88b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSphereBlue.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: QuadSphereBlue + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + 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: 4d7eb7cd5562b4ed4ae74151e7f631c3, 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_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.1665225, g: 0.54763764, b: 0.64705884, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HighlightColor: {r: 0.63, g: 0.52, b: 0.38, a: 0.66} + - _ShadowColor: {r: 0.96, g: 1, b: 1, a: 0.85} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSphereBlue.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSphereBlue.mat.meta new file mode 100644 index 0000000..bb80f86 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSphereBlue.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 07e4eb2033080474d8aa55e5a35d49ca +timeCreated: 1509062502 +licenseType: Pro +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSpherePink.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSpherePink.mat new file mode 100644 index 0000000..fe8d93b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSpherePink.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: QuadSpherePink + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + 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: a507f76d80c44438a8197935a65af23a, 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_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.1665225, g: 0.54763764, b: 0.64705884, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HighlightColor: {r: 0.63, g: 0.52, b: 0.38, a: 0.66} + - _ShadowColor: {r: 0.96, g: 1, b: 1, a: 0.85} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSpherePink.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSpherePink.mat.meta new file mode 100644 index 0000000..f0c7e46 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/QuadSpherePink.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c5f8095b20dc2423cad63ce7379784d7 +timeCreated: 1509062502 +licenseType: Pro +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/SafetyRing.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/SafetyRing.mat new file mode 100644 index 0000000..cfb1d7b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/SafetyRing.mat @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SafetyRing + m_Shader: {fileID: 10750, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + 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: 7142fd4da3acd494cbabed95d75673b9, 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_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} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/SafetyRing.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/SafetyRing.mat.meta new file mode 100644 index 0000000..3d726c0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/SafetyRing.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9118f68ba7df646b495e4208d2233d85 +timeCreated: 1510963272 +licenseType: Pro +NativeFormatImporter: + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSphereBlue.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSphereBlue.mat new file mode 100644 index 0000000..587f9d0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSphereBlue.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TriSphereBlue + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + 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: 57118c062b1274e43b9260e14b00da11, 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_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.1665225, g: 0.54763764, b: 0.64705884, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HighlightColor: {r: 0.63, g: 0.52, b: 0.38, a: 0.66} + - _ShadowColor: {r: 0.96, g: 1, b: 1, a: 0.85} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSphereBlue.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSphereBlue.mat.meta new file mode 100644 index 0000000..e137a7f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSphereBlue.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a5801e27da69043b69f7f194b62c2716 +timeCreated: 1509062502 +licenseType: Pro +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSpherePink.mat b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSpherePink.mat new file mode 100644 index 0000000..8eb2369 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSpherePink.mat @@ -0,0 +1,78 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TriSpherePink + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + 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: 4960285264c024fc1906a7496f9e6c77, 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_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.1665225, g: 0.54763764, b: 0.64705884, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _HighlightColor: {r: 0.63, g: 0.52, b: 0.38, a: 0.66} + - _ShadowColor: {r: 0.96, g: 1, b: 1, a: 0.85} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSpherePink.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSpherePink.mat.meta new file mode 100644 index 0000000..564f28c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Materials/HelloVR/TriSpherePink.mat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c63bdfc3c6f1447c8bcb58360dd31d6a +timeCreated: 1509062502 +licenseType: Pro +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models.meta new file mode 100644 index 0000000..ec60aec --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d04c9d69d2f9b423d9ca860cd588729b +folderAsset: yes +timeCreated: 1509061425 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR.meta new file mode 100644 index 0000000..d355b24 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 979468c9efd0140aeac227a3fb26f52a +folderAsset: yes +timeCreated: 1509061446 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/Icosahedron.obj b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/Icosahedron.obj new file mode 100644 index 0000000..735194e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/Icosahedron.obj @@ -0,0 +1,573 @@ +# This file uses centimeters as units for non-parametric coordinates. + +g default +v -0.382717 0.194657 0.301855 +v -0.354477 0.204657 0.315934 +v -0.359936 0.234114 0.301855 +v -0.345857 0.258500 0.284452 +v -0.372626 0.257698 0.264995 +v -0.382850 0.257391 0.233513 +v -0.403248 0.232816 0.242215 +v -0.414332 0.202862 0.233513 +v -0.409485 0.193855 0.264995 +v -0.396796 0.170271 0.284452 +v 0.023052 0.524356 0.000000 +v 0.027898 0.515348 -0.031482 +v -0.003717 0.523553 -0.036860 +v -0.031957 0.513553 -0.050939 +v -0.047028 0.522255 -0.022781 +v -0.068950 0.512444 -0.000000 +v -0.047028 0.522255 0.022781 +v -0.031957 0.513553 0.050939 +v -0.003717 0.523553 0.036860 +v 0.027898 0.515348 0.031482 +v -0.382717 0.194657 -0.301855 +v -0.396796 0.170271 -0.284452 +v -0.409485 0.193855 -0.264995 +v -0.414332 0.202862 -0.233513 +v -0.403248 0.232816 -0.242215 +v -0.382850 0.257391 -0.233513 +v -0.372626 0.257698 -0.264995 +v -0.345857 0.258500 -0.284452 +v -0.359937 0.234114 -0.301855 +v -0.354477 0.204657 -0.315934 +v -0.442580 -0.282141 0.000000 +v -0.432355 -0.281835 0.031482 +v -0.455269 -0.258558 0.036860 +v -0.460729 -0.229101 0.050939 +v -0.475800 -0.220399 0.022781 +v -0.478264 -0.196510 0.000000 +v -0.475800 -0.220399 -0.022781 +v -0.460729 -0.229101 -0.050939 +v -0.455269 -0.258558 -0.036860 +v -0.432355 -0.281835 -0.031482 +v 0.170656 0.250024 -0.428771 +v 0.186341 0.220873 -0.428771 +v 0.164419 0.211063 -0.451552 +v 0.144021 0.186487 -0.460253 +v 0.121107 0.209764 -0.465631 +v 0.089492 0.217969 -0.460253 +v 0.100576 0.247923 -0.451552 +v 0.098112 0.271812 -0.428771 +v 0.131199 0.272805 -0.428771 +v 0.157967 0.273607 -0.409314 +v -0.131199 -0.272804 -0.428771 +v -0.157967 -0.273607 -0.409314 +v -0.170656 -0.250024 -0.428771 +v -0.186340 -0.220873 -0.428771 +v -0.164419 -0.211063 -0.451552 +v -0.144021 -0.186487 -0.460253 +v -0.121107 -0.209764 -0.465631 +v -0.089492 -0.217969 -0.460253 +v -0.100576 -0.247922 -0.451552 +v -0.098111 -0.271812 -0.428771 +v 0.170656 0.250024 0.428771 +v 0.157967 0.273607 0.409314 +v 0.131199 0.272805 0.428771 +v 0.098112 0.271812 0.428771 +v 0.100576 0.247923 0.451552 +v 0.089492 0.217969 0.460253 +v 0.121107 0.209764 0.465631 +v 0.144021 0.186487 0.460253 +v 0.164419 0.211063 0.451552 +v 0.186341 0.220873 0.428771 +v -0.131199 -0.272804 0.428771 +v -0.098111 -0.271812 0.428771 +v -0.100576 -0.247922 0.451552 +v -0.089492 -0.217969 0.460254 +v -0.121107 -0.209764 0.465631 +v -0.144021 -0.186487 0.460253 +v -0.164419 -0.211063 0.451552 +v -0.186340 -0.220873 0.428771 +v -0.170656 -0.250024 0.428771 +v -0.157967 -0.273607 0.409314 +v 0.359937 -0.234114 -0.301855 +v 0.354477 -0.204657 -0.315934 +v 0.382717 -0.194657 -0.301855 +v 0.396796 -0.170271 -0.284452 +v 0.409486 -0.193854 -0.264995 +v 0.414332 -0.202862 -0.233513 +v 0.403248 -0.232816 -0.242215 +v 0.382850 -0.257391 -0.233513 +v 0.372626 -0.257697 -0.264995 +v 0.345857 -0.258500 -0.284452 +v 0.442580 0.282141 -0.000000 +v 0.432355 0.281835 0.031482 +v 0.455269 0.258558 0.036860 +v 0.460729 0.229101 0.050939 +v 0.475800 0.220399 0.022781 +v 0.478264 0.196509 -0.000000 +v 0.475800 0.220399 -0.022781 +v 0.460729 0.229101 -0.050939 +v 0.455269 0.258558 -0.036860 +v 0.432355 0.281835 -0.031482 +v 0.382717 -0.194657 0.301855 +v 0.354477 -0.204657 0.315934 +v 0.359937 -0.234114 0.301855 +v 0.345857 -0.258500 0.284452 +v 0.372626 -0.257697 0.264995 +v 0.382850 -0.257391 0.233513 +v 0.403248 -0.232816 0.242215 +v 0.414332 -0.202862 0.233513 +v 0.409486 -0.193854 0.264995 +v 0.396796 -0.170271 0.284452 +v -0.023052 -0.524356 -0.000000 +v -0.027898 -0.515348 -0.031482 +v 0.003717 -0.523553 -0.036860 +v 0.031957 -0.513553 -0.050939 +v 0.047028 -0.522255 -0.022781 +v 0.068950 -0.512444 0.000000 +v 0.047028 -0.522255 0.022781 +v 0.031957 -0.513553 0.050939 +v 0.003717 -0.523553 0.036860 +v -0.027898 -0.515348 0.031482 +v -0.393674 0.227288 0.280943 +v -0.016016 0.534146 0.000000 +v -0.393674 0.227288 -0.280943 +v -0.470592 -0.253202 -0.000000 +v 0.140472 0.243304 -0.454576 +v -0.140471 -0.243304 -0.454576 +v 0.140472 0.243304 0.454576 +v -0.140471 -0.243304 0.454576 +v 0.393674 -0.227288 -0.280943 +v 0.470592 0.253202 0.000000 +v 0.393674 -0.227288 0.280943 +v 0.016016 -0.534146 -0.000000 +vt 0.036903 0.569417 +vt 0.036903 0.590773 +vt 0.875721 0.590773 +vt 0.875721 0.569417 +vt 0.456312 0.718929 +vt 0.735915 0.590773 +vt 0.631065 0.718929 +vt 0.106806 0.718929 +vt 0.176709 0.590773 +vt 0.805818 0.441261 +vt 0.718441 0.558739 +vt 0.700968 0.590773 +vt 0.561162 0.590773 +vt 0.963097 0.430583 +vt 0.823291 0.409227 +vt 0.788344 0.430583 +vt 0.648538 0.430583 +vt 0.526215 0.590773 +vt 0.386409 0.590773 +vt 0.526215 0.569417 +vt 0.631065 0.441261 +vt 0.543688 0.558739 +vt 0.718441 0.281071 +vt 0.613591 0.430583 +vt 0.473785 0.430583 +vt 0.351462 0.590773 +vt 0.176709 0.569417 +vt 0.106806 0.441261 +vt 0.194182 0.558739 +vt 0.963097 0.409227 +vt 0.893194 0.281071 +vt 0.264085 0.430583 +vt 0.124279 0.409227 +vt 0.456312 0.441261 +vt 0.386409 0.569417 +vt 0.438838 0.430583 +vt 0.543688 0.281071 +vt 0.438838 0.409227 +vt 0.299032 0.430583 +vt 0.351462 0.569417 +vt 0.281559 0.441261 +vt 0.368935 0.281071 +vt 0.264085 0.409227 +vt 0.194182 0.281071 +vt 0.805818 0.718929 +vt 0.735915 0.569417 +vt 0.700968 0.569417 +vt 0.561162 0.569417 +vt 0.893194 0.558739 +vt 0.823291 0.430583 +vt 0.368935 0.558739 +vt 0.299032 0.409227 +vt 0.124279 0.430583 +vt 0.211656 0.569417 +vt 0.473785 0.409227 +vt 0.613591 0.409227 +vt 0.211656 0.590773 +vt 0.281559 0.718929 +vt 0.648538 0.409227 +vt 0.788344 0.409227 +vt 0.025658 0.568676 +vt 0.899423 0.568676 +vt 0.034162 0.580095 +vt 0.886966 0.591515 +vt 0.025658 0.591515 +vt 0.878461 0.580095 +vt 0.885828 0.566590 +vt 0.450083 0.728866 +vt 0.287788 0.728866 +vt 0.624836 0.728866 +vt 0.462541 0.728866 +vt 0.799589 0.728866 +vt 0.637294 0.728866 +vt 0.100577 0.728866 +vt 0.812047 0.728866 +vt 0.275330 0.728866 +vt 0.113035 0.728866 +vt 0.711075 0.566590 +vt 0.725808 0.566590 +vt 0.733175 0.580095 +vt 0.712213 0.591515 +vt 0.724670 0.591515 +vt 0.703708 0.580095 +vt 0.812047 0.408485 +vt 0.799589 0.408485 +vt 0.820551 0.419905 +vt 0.813184 0.433410 +vt 0.798451 0.433410 +vt 0.791084 0.419905 +vt 0.528955 0.580095 +vt 0.536322 0.566590 +vt 0.551055 0.566590 +vt 0.558422 0.580095 +vt 0.537459 0.591515 +vt 0.549917 0.591515 +vt 0.637294 0.408485 +vt 0.624836 0.408485 +vt 0.645798 0.419905 +vt 0.638431 0.433410 +vt 0.623698 0.433410 +vt 0.616331 0.419905 +vt 0.208916 0.580095 +vt 0.187954 0.591515 +vt 0.200411 0.591515 +vt 0.179449 0.580095 +vt 0.186816 0.566590 +vt 0.201549 0.566590 +vt 0.113035 0.408485 +vt 0.974342 0.408485 +vt 0.121539 0.419905 +vt 0.114172 0.433410 +vt 0.974342 0.431324 +vt 0.100577 0.431324 +vt 0.965837 0.419905 +vt 0.471045 0.419905 +vt 0.463678 0.433410 +vt 0.448945 0.433410 +vt 0.441578 0.419905 +vt 0.462541 0.408486 +vt 0.450083 0.408486 +vt 0.362706 0.591515 +vt 0.375164 0.591515 +vt 0.354202 0.580095 +vt 0.361569 0.566590 +vt 0.376302 0.566590 +vt 0.383669 0.580095 +vt 0.274192 0.433410 +vt 0.266825 0.419905 +vt 0.287788 0.408486 +vt 0.275330 0.408486 +vt 0.296292 0.419905 +vt 0.288925 0.433410 +vt 0.724670 0.271134 +vt 0.886965 0.271134 +vt 0.549917 0.271134 +vt 0.712212 0.271134 +vt 0.375164 0.271134 +vt 0.537459 0.271134 +vt 0.200411 0.271134 +vt 0.362706 0.271134 +vt 0.899423 0.271134 +vt 0.187953 0.271134 +vt 0.893194 0.580095 +vt 0.019429 0.580095 +vt 0.805818 0.740285 +vt 0.106806 0.740285 +vt 0.281559 0.740285 +vt 0.456312 0.740285 +vt 0.631065 0.740285 +vt 0.718441 0.580095 +vt 0.805818 0.419905 +vt 0.543688 0.580095 +vt 0.631065 0.419905 +vt 0.194182 0.580095 +vt 0.106806 0.419905 +vt 0.980571 0.419905 +vt 0.456312 0.419905 +vt 0.368935 0.580095 +vt 0.281559 0.419905 +vt 0.368935 0.259715 +vt 0.194182 0.259715 +vt 0.893194 0.259715 +vt 0.718441 0.259715 +vt 0.543688 0.259715 +vn -0.339961 0.196276 0.919729 +vn -0.599351 0.004764 0.800473 +vn -0.575273 -0.039985 0.816983 +vn -0.309886 0.140381 0.940353 +vn -0.795069 -0.173513 0.581170 +vn -0.764994 -0.229408 0.601794 +vn -0.247268 0.775306 0.581170 +vn -0.303801 0.516670 0.800473 +vn -0.253009 0.518193 0.816984 +vn -0.183825 0.777208 0.601794 +vn -0.276516 0.198179 0.940353 +vn -0.645090 0.763378 0.033369 +vn -0.468425 0.822632 0.322264 +vn -0.432513 0.851812 0.295549 +vn -0.600233 0.799825 0.000000 +vn -0.202412 0.811754 0.547801 +vn -0.983650 0.176975 0.033370 +vn -0.865717 0.499820 0.026715 +vn -0.865717 0.499820 -0.026715 +vn -0.983649 0.176975 -0.033370 +vn -0.645090 0.763378 -0.033369 +vn -0.946633 -0.005650 0.322266 +vn -0.953947 -0.051340 0.295550 +vn -0.804205 -0.230584 0.547801 +vn -0.992786 0.119904 0.000000 +vn 0.441278 0.831054 -0.338559 +vn 0.476685 0.879074 0.000000 +vn 0.522958 0.852358 0.000000 +vn 0.499075 0.797685 -0.338560 +vn 0.441278 0.831054 0.338559 +vn 0.499075 0.797685 0.338560 +vn -0.202411 0.811754 -0.547801 +vn 0.129404 0.868661 -0.478208 +vn 0.144285 0.841005 -0.521434 +vn -0.183824 0.777208 -0.601794 +vn 0.459866 0.796509 -0.392552 +vn -0.432513 0.851812 -0.295548 +vn -0.468426 0.822632 -0.322264 +vn -0.247268 0.775306 -0.581170 +vn 0.129405 0.868661 0.478208 +vn 0.144285 0.841005 0.521434 +vn 0.459866 0.796509 0.392552 +vn -0.795069 -0.173512 -0.581170 +vn -0.599351 0.004764 -0.800472 +vn -0.575273 -0.039985 -0.816983 +vn -0.764994 -0.229408 -0.601794 +vn -0.339960 0.196276 -0.919730 +vn -0.309886 0.140381 -0.940353 +vn -0.946633 -0.005649 -0.322265 +vn -0.953947 -0.051339 -0.295550 +vn -0.804205 -0.230584 -0.547801 +vn -0.303801 0.516670 -0.800473 +vn -0.253008 0.518193 -0.816984 +vn -0.276516 0.198178 -0.940353 +vn -0.499076 -0.797684 0.338560 +vn -0.522958 -0.852359 0.000000 +vn -0.476685 -0.879074 0.000000 +vn -0.441277 -0.831055 0.338560 +vn -0.499076 -0.797684 -0.338560 +vn -0.441277 -0.831054 -0.338560 +vn -0.687580 -0.546397 0.478209 +vn -0.656189 -0.545456 0.521435 +vn -0.459865 -0.796509 0.392554 +vn -0.687581 -0.546397 -0.478209 +vn -0.656189 -0.545455 -0.521435 +vn -0.459865 -0.796509 -0.392553 +vn 0.764994 0.229407 -0.601794 +vn 0.656190 0.545455 -0.521435 +vn 0.687581 0.546397 -0.478208 +vn 0.804205 0.230584 -0.547801 +vn 0.309886 -0.140381 -0.940353 +vn 0.575273 0.039985 -0.816984 +vn 0.599350 -0.004765 -0.800473 +vn 0.339961 -0.196276 -0.919729 +vn 0.795069 0.173512 -0.581171 +vn 0.013357 0.023136 -0.999643 +vn -0.013358 -0.023136 -0.999643 +vn 0.276516 -0.198179 -0.940353 +vn -0.144284 -0.841004 -0.521435 +vn -0.129404 -0.868661 -0.478209 +vn 0.183823 -0.777209 -0.601794 +vn 0.202411 -0.811754 -0.547801 +vn 0.253008 -0.518194 -0.816983 +vn 0.303801 -0.516671 -0.800472 +vn 0.247268 -0.775306 -0.581170 +vn 0.656189 0.545455 0.521435 +vn 0.687581 0.546397 0.478208 +vn 0.764995 0.229408 0.601793 +vn 0.804205 0.230584 0.547801 +vn 0.309886 -0.140381 0.940353 +vn 0.013357 0.023137 0.999643 +vn -0.013358 -0.023136 0.999643 +vn 0.276516 -0.198178 0.940353 +vn 0.575273 0.039985 0.816984 +vn 0.599351 -0.004764 0.800472 +vn 0.795069 0.173513 0.581170 +vn 0.339961 -0.196276 0.919730 +vn 0.183823 -0.777209 0.601794 +vn -0.144284 -0.841004 0.521435 +vn -0.129404 -0.868661 0.478209 +vn 0.202411 -0.811754 0.547801 +vn 0.253008 -0.518194 0.816983 +vn 0.303801 -0.516671 0.800472 +vn 0.247268 -0.775306 0.581170 +vn 0.983649 -0.176976 -0.033369 +vn 0.946632 0.005650 -0.322266 +vn 0.953947 0.051341 -0.295551 +vn 0.992786 -0.119904 -0.000000 +vn 0.645090 -0.763377 -0.033370 +vn 0.865717 -0.499821 -0.026715 +vn 0.865717 -0.499821 0.026716 +vn 0.645090 -0.763377 0.033370 +vn 0.983649 -0.176976 0.033370 +vn 0.468424 -0.822632 -0.322266 +vn 0.432511 -0.851812 -0.295550 +vn 0.600233 -0.799825 -0.000000 +vn 0.953947 0.051340 0.295549 +vn 0.946633 0.005649 0.322265 +vn 0.468424 -0.822632 0.322266 +vn 0.432511 -0.851812 0.295550 +vn -0.736685 0.425324 0.525732 +vn -0.029970 0.999551 0.000000 +vn -0.736686 0.425324 -0.525731 +vn -0.880621 -0.473821 0.000000 +vn 0.262866 0.455297 -0.850650 +vn -0.262866 -0.455298 -0.850650 +vn 0.262866 0.455297 0.850651 +vn -0.262866 -0.455298 0.850650 +vn 0.736685 -0.425324 -0.525732 +vn 0.880622 0.473820 0.000000 +vn 0.736685 -0.425325 0.525731 +vn 0.029969 -0.999551 0.000000 +s 1 +g Icosahedron_GEO +f 2/1/1 1/61/2 77/113/3 76/28/4 +f 1/62/2 10/49/5 78/14/6 77/112/3 +f 4/2/7 3/63/8 65/105/9 64/9/10 +f 3/63/8 2/1/1 66/27/11 65/105/9 +f 6/3/12 5/64/13 17/75/14 16/45/15 +f 5/65/13 4/2/7 18/8/16 17/74/14 +f 8/4/17 7/66/18 25/80/19 24/46/20 +f 7/66/18 6/3/12 26/6/21 25/80/19 +f 10/49/5 9/67/22 35/87/23 34/50/24 +f 9/67/22 8/4/17 36/10/25 35/87/23 +f 12/5/26 11/68/27 91/122/28 100/19/29 +f 11/69/27 20/58/30 92/26/31 91/121/28 +f 14/7/32 13/70/33 49/95/34 48/13/35 +f 13/71/33 12/5/26 50/18/36 49/94/34 +f 16/45/15 15/72/37 27/82/38 26/6/21 +f 15/73/37 14/7/32 28/12/39 27/81/38 +f 20/58/30 19/76/40 63/104/41 62/57/42 +f 19/77/40 18/8/16 64/9/10 63/103/41 +f 22/11/43 21/78/44 55/99/45 54/17/46 +f 21/78/44 30/47/47 56/21/48 55/99/45 +f 24/46/20 23/79/49 37/88/50 36/10/25 +f 23/79/49 22/11/43 38/16/51 37/88/50 +f 30/47/47 29/83/52 47/93/53 46/48/54 +f 29/83/52 28/12/39 48/13/35 47/93/53 +f 32/15/55 31/84/56 111/134/57 120/31/58 +f 31/85/56 40/60/59 112/23/60 111/133/57 +f 34/50/24 33/86/61 79/114/62 78/14/6 +f 33/86/61 32/15/55 80/30/63 79/114/62 +f 40/60/59 39/89/64 53/98/65 52/59/66 +f 39/89/64 38/16/51 54/17/46 53/98/65 +f 42/20/67 41/90/68 99/126/69 98/35/70 +f 41/90/68 50/18/36 100/19/29 99/126/69 +f 44/22/71 43/91/72 83/116/73 82/25/74 +f 43/91/72 42/20/67 84/34/75 83/116/73 +f 46/48/54 45/92/76 57/100/77 56/21/48 +f 45/92/76 44/22/71 58/24/78 57/100/77 +f 52/59/66 51/96/79 113/136/80 112/23/60 +f 51/97/79 60/56/81 114/37/82 113/135/80 +f 60/56/81 59/101/83 81/115/84 90/55/85 +f 59/101/83 58/24/78 82/25/74 81/115/84 +f 62/57/42 61/102/86 93/123/87 92/26/31 +f 61/102/86 70/54/88 94/40/89 93/123/87 +f 68/29/90 67/106/91 75/111/92 74/53/93 +f 67/106/91 66/27/11 76/28/4 75/111/92 +f 70/54/88 69/107/94 101/127/95 110/41/96 +f 69/107/94 68/29/90 102/32/97 101/127/95 +f 72/33/98 71/108/99 119/142/100 118/44/101 +f 71/109/99 80/30/63 120/31/58 119/141/100 +f 74/53/93 73/110/102 103/128/103 102/32/97 +f 73/110/102 72/33/98 104/43/104 103/128/103 +f 86/36/105 85/117/106 97/125/107 96/51/108 +f 85/117/106 84/34/75 98/35/70 97/125/107 +f 88/38/109 87/118/110 107/131/111 106/52/112 +f 87/118/110 86/36/105 108/39/113 107/131/111 +f 90/55/85 89/119/114 115/138/115 114/37/82 +f 89/120/114 88/38/109 116/42/116 115/137/115 +f 96/51/108 95/124/117 109/132/118 108/39/113 +f 95/124/117 94/40/89 110/41/96 109/132/118 +f 106/52/112 105/129/119 117/140/120 116/42/116 +f 105/130/119 104/43/104 118/44/101 117/139/120 +f 6/3/12 16/45/15 26/6/21 +f 24/46/20 36/10/25 8/4/17 +f 30/47/47 46/48/54 56/21/48 +f 22/11/43 54/17/46 38/16/51 +f 28/12/39 14/7/32 48/13/35 +f 66/27/11 2/1/1 76/28/4 +f 18/8/16 4/2/7 64/9/10 +f 10/49/5 34/50/24 78/14/6 +f 86/36/105 96/51/108 108/39/113 +f 106/52/112 116/42/116 88/38/109 +f 68/29/90 74/53/93 102/32/97 +f 110/41/96 94/40/89 70/54/88 +f 72/33/98 118/44/101 104/43/104 +f 58/24/78 44/22/71 82/25/74 +f 90/55/85 114/37/82 60/56/81 +f 84/34/75 42/20/67 98/35/70 +f 62/57/42 92/26/31 20/58/30 +f 80/30/63 32/15/55 120/31/58 +f 52/59/66 112/23/60 40/60/59 +f 50/18/36 12/5/26 100/19/29 +f 9/67/22 10/49/5 1/62/2 121/143/121 +f 1/61/2 2/1/1 3/63/8 121/144/121 +f 3/63/8 4/2/7 5/65/13 121/144/121 +f 5/64/13 6/3/12 7/66/18 121/143/121 +f 7/66/18 8/4/17 9/67/22 121/143/121 +f 19/76/40 20/58/30 11/69/27 122/147/122 +f 11/68/27 12/5/26 13/71/33 122/148/122 +f 13/70/33 14/7/32 15/73/37 122/149/122 +f 15/72/37 16/45/15 17/75/14 122/145/122 +f 17/74/14 18/8/16 19/77/40 122/146/122 +f 29/83/52 30/47/47 21/78/44 123/150/123 +f 21/78/44 22/11/43 23/79/49 123/150/123 +f 23/79/49 24/46/20 25/80/19 123/150/123 +f 25/80/19 26/6/21 27/82/38 123/150/123 +f 27/81/38 28/12/39 29/83/52 123/150/123 +f 39/89/64 40/60/59 31/85/56 124/151/124 +f 31/84/56 32/15/55 33/86/61 124/151/124 +f 33/86/61 34/50/24 35/87/23 124/151/124 +f 35/87/23 36/10/25 37/88/50 124/151/124 +f 37/88/50 38/16/51 39/89/64 124/151/124 +f 49/94/34 50/18/36 41/90/68 125/152/125 +f 41/90/68 42/20/67 43/91/72 125/152/125 +f 43/91/72 44/22/71 45/92/76 125/152/125 +f 45/92/76 46/48/54 47/93/53 125/152/125 +f 47/93/53 48/13/35 49/95/34 125/152/125 +f 59/101/83 60/56/81 51/97/79 126/153/126 +f 51/96/79 52/59/66 53/98/65 126/153/126 +f 53/98/65 54/17/46 55/99/45 126/153/126 +f 55/99/45 56/21/48 57/100/77 126/153/126 +f 57/100/77 58/24/78 59/101/83 126/153/126 +f 69/107/94 70/54/88 61/102/86 127/154/127 +f 61/102/86 62/57/42 63/104/41 127/154/127 +f 63/103/41 64/9/10 65/105/9 127/154/127 +f 65/105/9 66/27/11 67/106/91 127/154/127 +f 67/106/91 68/29/90 69/107/94 127/154/127 +f 79/114/62 80/30/63 71/109/99 128/156/128 +f 71/108/99 72/33/98 73/110/102 128/155/128 +f 73/110/102 74/53/93 75/111/92 128/155/128 +f 75/111/92 76/28/4 77/113/3 128/155/128 +f 77/112/3 78/14/6 79/114/62 128/156/128 +f 89/119/114 90/55/85 81/115/84 129/157/129 +f 81/115/84 82/25/74 83/116/73 129/157/129 +f 83/116/73 84/34/75 85/117/106 129/157/129 +f 85/117/106 86/36/105 87/118/110 129/157/129 +f 87/118/110 88/38/109 89/120/114 129/157/129 +f 99/126/69 100/19/29 91/122/28 130/158/130 +f 91/121/28 92/26/31 93/123/87 130/158/130 +f 93/123/87 94/40/89 95/124/117 130/158/130 +f 95/124/117 96/51/108 97/125/107 130/158/130 +f 97/125/107 98/35/70 99/126/69 130/158/130 +f 109/132/118 110/41/96 101/127/95 131/159/131 +f 101/127/95 102/32/97 103/128/103 131/159/131 +f 103/128/103 104/43/104 105/130/119 131/159/131 +f 105/129/119 106/52/112 107/131/111 131/159/131 +f 107/131/111 108/39/113 109/132/118 131/159/131 +f 119/141/100 120/31/58 111/134/57 132/162/132 +f 111/133/57 112/23/60 113/136/80 132/163/132 +f 113/135/80 114/37/82 115/138/115 132/164/132 +f 115/137/115 116/42/116 117/140/120 132/160/132 +f 117/139/120 118/44/101 119/142/100 132/161/132 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/Icosahedron.obj.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/Icosahedron.obj.meta new file mode 100644 index 0000000..0be8a44 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/Icosahedron.obj.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 5c39ec134a75d4a87a4a69a1be8dc5de +timeCreated: 1509061457 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 100002: Icosahedron_GEO + 400000: //RootNode + 400002: Icosahedron_GEO + 2300000: Icosahedron_GEO + 3300000: Icosahedron_GEO + 4300000: Icosahedron_GEO + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/QuadSphere.obj b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/QuadSphere.obj new file mode 100644 index 0000000..ed55da9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/QuadSphere.obj @@ -0,0 +1,1602 @@ +# This file uses centimeters as units for non-parametric coordinates. + +g default +v -0.288664 -0.288671 0.288673 +v 0.288673 -0.288672 0.288664 +v -0.288664 0.288671 0.288673 +v 0.288673 0.288672 0.288664 +v -0.288673 0.288671 -0.288664 +v 0.288663 0.288671 -0.288672 +v -0.288672 -0.288671 -0.288664 +v 0.288672 -0.288671 -0.288663 +v -0.000000 -0.353553 0.353553 +v -0.000000 0.353553 0.353553 +v 0.000000 0.353553 -0.353552 +v 0.000000 -0.353553 -0.353552 +v -0.353553 0.000000 0.353553 +v 0.353553 0.000000 0.353553 +v -0.353552 0.353553 -0.000000 +v 0.353553 0.353553 0.000000 +v -0.353552 0.000000 -0.353552 +v 0.353552 0.000000 -0.353551 +v -0.353552 -0.353553 -0.000000 +v 0.353553 -0.353553 0.000000 +v 0.000184 0.000092 0.499996 +v 0.000092 0.499999 -0.000001 +v -0.000184 0.000092 -0.499994 +v 0.000088 -0.499999 0.000027 +v 0.499996 -0.000093 -0.000186 +v -0.499995 0.000092 0.000184 +v -0.170624 -0.332306 0.332318 +v 0.170624 -0.332306 0.332318 +v -0.170624 0.332306 0.332318 +v 0.170624 0.332306 0.332318 +v -0.170624 0.332305 -0.332317 +v 0.170624 0.332305 -0.332317 +v -0.170624 -0.332305 -0.332317 +v 0.170624 -0.332305 -0.332317 +v -0.332321 -0.170633 0.332321 +v -0.332321 0.170633 0.332321 +v 0.332321 -0.170633 0.332322 +v 0.332322 0.170633 0.332322 +v -0.332318 0.332305 0.170624 +v -0.332318 0.332305 -0.170624 +v 0.332318 0.332306 0.170624 +v 0.332317 0.332305 -0.170624 +v -0.332321 0.170633 -0.332321 +v -0.332321 -0.170633 -0.332321 +v 0.332321 0.170633 -0.332320 +v 0.332321 -0.170632 -0.332320 +v -0.332318 -0.332305 -0.170624 +v -0.332318 -0.332306 0.170624 +v 0.332317 -0.332305 -0.170624 +v 0.332318 -0.332306 0.170624 +v 0.000078 -0.196164 0.459896 +v 0.196117 0.000042 0.459894 +v 0.000078 0.196164 0.459896 +v -0.196117 0.000042 0.459894 +v 0.000033 0.459897 0.196164 +v 0.196164 0.459897 0.000033 +v -0.000033 0.459897 -0.196164 +v -0.196164 0.459897 0.000033 +v 0.000078 0.196163 -0.459895 +v 0.196116 -0.000042 -0.459892 +v 0.000078 -0.196163 -0.459895 +v -0.196116 0.000042 -0.459893 +v -0.000033 -0.459897 -0.196164 +v 0.196164 -0.459897 0.000033 +v 0.000033 -0.459897 0.196164 +v -0.196164 -0.459897 0.000033 +v 0.459897 -0.196164 -0.000079 +v 0.459892 -0.000042 -0.196116 +v 0.459897 0.196164 0.000078 +v 0.459894 0.000042 0.196117 +v -0.459896 -0.196163 0.000078 +v -0.459894 0.000042 0.196117 +v -0.459896 0.196163 0.000078 +v -0.459893 -0.000042 -0.196116 +v 0.184441 -0.184502 0.426538 +v 0.184441 0.184502 0.426538 +v -0.184441 0.184502 0.426538 +v -0.184441 -0.184502 0.426538 +v 0.184454 0.426541 0.184488 +v 0.184454 0.426540 -0.184488 +v -0.184488 0.426541 -0.184454 +v -0.184488 0.426541 0.184454 +v 0.184441 0.184501 -0.426537 +v 0.184441 -0.184501 -0.426537 +v -0.184441 -0.184502 -0.426537 +v -0.184441 0.184501 -0.426537 +v 0.184454 -0.426541 -0.184488 +v 0.184488 -0.426541 0.184454 +v -0.184488 -0.426541 0.184454 +v -0.184488 -0.426541 -0.184454 +v 0.426536 -0.184501 -0.184440 +v 0.426537 0.184501 -0.184440 +v 0.426538 0.184502 0.184441 +v 0.426538 -0.184502 0.184441 +v -0.426538 -0.184502 0.184441 +v -0.426538 0.184502 0.184441 +v -0.426537 0.184502 -0.184441 +v -0.426537 -0.184501 -0.184441 +v -0.240881 -0.309799 0.309806 +v -0.088334 -0.347978 0.347991 +v 0.088334 -0.347978 0.347991 +v 0.240881 -0.309799 0.309806 +v -0.240881 0.309799 0.309806 +v -0.088334 0.347978 0.347991 +v 0.088334 0.347978 0.347991 +v 0.240881 0.309799 0.309806 +v -0.240881 0.309799 -0.309806 +v -0.088334 0.347977 -0.347991 +v 0.088334 0.347977 -0.347991 +v 0.240881 0.309798 -0.309805 +v -0.240881 -0.309798 -0.309806 +v -0.088334 -0.347977 -0.347991 +v 0.088334 -0.347977 -0.347991 +v 0.240881 -0.309798 -0.309805 +v -0.309814 -0.240894 0.309814 +v -0.347985 -0.088313 0.347985 +v -0.347985 0.088313 0.347985 +v -0.309814 0.240894 0.309814 +v 0.309814 -0.240894 0.309814 +v 0.347985 -0.088313 0.347985 +v 0.347985 0.088313 0.347985 +v 0.309814 0.240894 0.309814 +v -0.309806 0.309799 0.240881 +v -0.347991 0.347978 0.088334 +v -0.347991 0.347978 -0.088334 +v -0.309806 0.309799 -0.240881 +v 0.309806 0.309799 0.240881 +v 0.347991 0.347978 0.088334 +v 0.347990 0.347977 -0.088334 +v 0.309805 0.309798 -0.240881 +v -0.309813 0.240894 -0.309814 +v -0.347984 0.088313 -0.347984 +v -0.347984 -0.088313 -0.347984 +v -0.309813 -0.240893 -0.309814 +v 0.309813 0.240893 -0.309813 +v 0.347984 0.088313 -0.347983 +v 0.347984 -0.088313 -0.347983 +v 0.309813 -0.240893 -0.309813 +v -0.309806 -0.309799 -0.240881 +v -0.347991 -0.347978 -0.088334 +v -0.347991 -0.347978 0.088334 +v -0.309806 -0.309799 0.240881 +v 0.309805 -0.309798 -0.240881 +v 0.347990 -0.347977 -0.088334 +v 0.347991 -0.347978 0.088334 +v 0.309806 -0.309799 0.240881 +v 0.000153 -0.101020 0.489683 +v 0.000004 -0.280982 0.413580 +v 0.101086 0.000078 0.489611 +v 0.280980 -0.000002 0.413581 +v 0.000153 0.101021 0.489683 +v 0.000004 0.280982 0.413580 +v -0.101086 0.000078 0.489611 +v -0.280979 -0.000002 0.413580 +v -0.000031 0.489685 0.101021 +v 0.000002 0.413580 0.280982 +v 0.101021 0.489685 0.000031 +v 0.280982 0.413580 0.000002 +v -0.000031 0.489685 -0.101021 +v -0.000002 0.413580 -0.280982 +v -0.101021 0.489685 -0.000031 +v -0.280982 0.413580 -0.000002 +v -0.000153 0.101020 -0.489681 +v -0.000004 0.280981 -0.413579 +v 0.101085 0.000078 -0.489609 +v 0.280979 -0.000002 -0.413579 +v -0.000153 -0.101020 -0.489681 +v -0.000004 -0.280981 -0.413579 +v -0.101085 0.000078 -0.489610 +v -0.280979 -0.000002 -0.413579 +v -0.000031 -0.489685 -0.101021 +v -0.000002 -0.413580 -0.280982 +v 0.101021 -0.489685 0.000031 +v 0.280982 -0.413580 0.000002 +v -0.000031 -0.489685 0.101021 +v -0.000002 -0.413580 0.280982 +v -0.101021 -0.489685 -0.000031 +v -0.280982 -0.413580 0.000002 +v 0.489683 -0.101021 -0.000155 +v 0.413580 -0.280982 0.000004 +v 0.489609 0.000078 -0.101085 +v 0.413579 0.000002 -0.280978 +v 0.489683 0.101021 -0.000155 +v 0.413580 0.280982 -0.000004 +v 0.489611 0.000078 0.101086 +v 0.413581 0.000002 0.280980 +v -0.489682 -0.101020 0.000153 +v -0.413579 -0.280981 0.000004 +v -0.489610 0.000078 0.101085 +v -0.413580 0.000002 0.280979 +v -0.489682 0.101020 0.000153 +v -0.413579 0.280982 0.000004 +v -0.489610 0.000078 -0.101085 +v -0.413579 -0.000002 -0.280979 +v 0.175373 -0.264454 0.386327 +v 0.264471 -0.175383 0.386349 +v 0.192502 -0.094806 0.451567 +v 0.094761 -0.192567 0.451529 +v 0.264471 0.175383 0.386349 +v 0.175373 0.264454 0.386327 +v 0.094761 0.192567 0.451529 +v 0.192502 0.094806 0.451567 +v -0.175373 0.264454 0.386327 +v -0.264470 0.175383 0.386349 +v -0.192501 0.094806 0.451567 +v -0.094761 0.192567 0.451529 +v -0.264470 -0.175383 0.386349 +v -0.175373 -0.264454 0.386327 +v -0.094761 -0.192567 0.451529 +v -0.192501 -0.094806 0.451567 +v 0.175382 0.386348 0.264467 +v 0.264467 0.386348 0.175382 +v 0.192576 0.451561 0.094786 +v 0.094786 0.451561 0.192576 +v 0.264467 0.386347 -0.175382 +v 0.175382 0.386347 -0.264467 +v 0.094786 0.451561 -0.192575 +v 0.192575 0.451561 -0.094786 +v -0.175382 0.386347 -0.264467 +v -0.264467 0.386347 -0.175382 +v -0.192576 0.451561 -0.094786 +v -0.094786 0.451561 -0.192576 +v -0.264467 0.386347 0.175382 +v -0.175382 0.386347 0.264467 +v -0.094786 0.451561 0.192576 +v -0.192576 0.451561 0.094786 +v 0.175373 0.264453 -0.386326 +v 0.264470 0.175382 -0.386348 +v 0.192501 0.094805 -0.451565 +v 0.094761 0.192566 -0.451528 +v 0.264470 -0.175382 -0.386348 +v 0.175373 -0.264453 -0.386326 +v 0.094761 -0.192566 -0.451527 +v 0.192501 -0.094805 -0.451565 +v -0.175373 -0.264454 -0.386327 +v -0.264470 -0.175383 -0.386348 +v -0.192501 -0.094805 -0.451566 +v -0.094761 -0.192566 -0.451528 +v -0.264470 0.175383 -0.386348 +v -0.175373 0.264454 -0.386327 +v -0.094761 0.192566 -0.451528 +v -0.192501 0.094805 -0.451566 +v 0.175382 -0.386347 -0.264467 +v 0.264467 -0.386347 -0.175382 +v 0.192575 -0.451561 -0.094786 +v 0.094786 -0.451561 -0.192575 +v 0.264467 -0.386348 0.175382 +v 0.175382 -0.386348 0.264467 +v 0.094786 -0.451561 0.192576 +v 0.192576 -0.451561 0.094786 +v -0.175382 -0.386347 0.264467 +v -0.264467 -0.386347 0.175382 +v -0.192576 -0.451561 0.094786 +v -0.094786 -0.451561 0.192576 +v -0.264467 -0.386347 -0.175382 +v -0.175382 -0.386347 -0.264467 +v -0.094786 -0.451561 -0.192576 +v -0.192576 -0.451561 -0.094786 +v 0.386326 -0.264453 -0.175373 +v 0.386348 -0.175382 -0.264470 +v 0.451565 -0.094805 -0.192501 +v 0.451527 -0.192566 -0.094761 +v 0.386348 0.175383 -0.264470 +v 0.386326 0.264453 -0.175373 +v 0.451527 0.192566 -0.094761 +v 0.451565 0.094805 -0.192501 +v 0.386327 0.264454 0.175373 +v 0.386349 0.175383 0.264471 +v 0.451567 0.094806 0.192502 +v 0.451529 0.192567 0.094761 +v 0.386349 -0.175383 0.264471 +v 0.386328 -0.264454 0.175373 +v 0.451529 -0.192567 0.094761 +v 0.451567 -0.094806 0.192502 +v -0.386327 -0.264454 0.175373 +v -0.386349 -0.175383 0.264470 +v -0.451567 -0.094805 0.192501 +v -0.451528 -0.192566 0.094761 +v -0.386349 0.175383 0.264470 +v -0.386327 0.264454 0.175373 +v -0.451528 0.192566 0.094761 +v -0.451567 0.094806 0.192501 +v -0.386327 0.264454 -0.175373 +v -0.386348 0.175383 -0.264470 +v -0.451566 0.094806 -0.192501 +v -0.451528 0.192566 -0.094761 +v -0.386348 -0.175383 -0.264470 +v -0.386327 -0.264453 -0.175373 +v -0.451528 -0.192566 -0.094761 +v -0.451566 -0.094806 -0.192501 +v 0.249210 -0.249205 0.354590 +v 0.276290 -0.090474 0.406769 +v 0.099036 -0.099003 0.479914 +v 0.090466 -0.276300 0.406763 +v 0.249210 0.249205 0.354590 +v 0.090466 0.276300 0.406763 +v 0.099036 0.099003 0.479914 +v 0.276290 0.090474 0.406769 +v -0.249209 0.249205 0.354590 +v -0.276289 0.090474 0.406769 +v -0.099036 0.099003 0.479914 +v -0.090466 0.276300 0.406762 +v -0.249209 -0.249205 0.354590 +v -0.090466 -0.276300 0.406762 +v -0.099036 -0.099003 0.479914 +v -0.276289 -0.090474 0.406769 +v 0.249234 0.354619 0.249234 +v 0.276295 0.406760 0.090480 +v 0.099109 0.479959 0.099054 +v 0.090480 0.406760 0.276295 +v 0.249234 0.354619 -0.249233 +v 0.090480 0.406759 -0.276294 +v 0.099054 0.479959 -0.099109 +v 0.276294 0.406759 -0.090480 +v -0.249234 0.354619 -0.249234 +v -0.276295 0.406759 -0.090480 +v -0.099054 0.479959 -0.099109 +v -0.090480 0.406759 -0.276294 +v -0.249234 0.354619 0.249234 +v -0.090480 0.406760 0.276295 +v -0.099109 0.479959 0.099054 +v -0.276295 0.406759 0.090480 +v 0.249209 0.249204 -0.354589 +v 0.276289 0.090474 -0.406768 +v 0.099036 0.099003 -0.479912 +v 0.090466 0.276300 -0.406762 +v 0.249209 -0.249204 -0.354589 +v 0.090466 -0.276300 -0.406762 +v 0.099036 -0.099003 -0.479912 +v 0.276289 -0.090474 -0.406768 +v -0.249209 -0.249205 -0.354589 +v -0.276289 -0.090474 -0.406768 +v -0.099036 -0.099003 -0.479913 +v -0.090466 -0.276300 -0.406762 +v -0.249209 0.249205 -0.354589 +v -0.090466 0.276300 -0.406762 +v -0.099036 0.099003 -0.479913 +v -0.276289 0.090474 -0.406768 +v 0.249234 -0.354619 -0.249233 +v 0.276294 -0.406759 -0.090480 +v 0.099054 -0.479959 -0.099109 +v 0.090480 -0.406759 -0.276294 +v 0.249234 -0.354619 0.249234 +v 0.090480 -0.406760 0.276295 +v 0.099109 -0.479959 0.099054 +v 0.276295 -0.406760 0.090480 +v -0.249234 -0.354619 0.249234 +v -0.276295 -0.406759 0.090480 +v -0.099109 -0.479959 0.099054 +v -0.090480 -0.406760 0.276295 +v -0.249234 -0.354619 -0.249234 +v -0.090480 -0.406759 -0.276294 +v -0.099109 -0.479959 -0.099054 +v -0.276295 -0.406759 -0.090480 +v 0.354589 -0.249204 -0.249209 +v 0.406767 -0.090474 -0.276289 +v 0.479912 -0.099003 -0.099036 +v 0.406761 -0.276300 -0.090466 +v 0.354589 0.249204 -0.249209 +v 0.406761 0.276300 -0.090466 +v 0.479912 0.099003 -0.099036 +v 0.406767 0.090474 -0.276289 +v 0.354590 0.249205 0.249210 +v 0.406769 0.090474 0.276290 +v 0.479914 0.099003 0.099036 +v 0.406763 0.276300 0.090466 +v 0.354590 -0.249205 0.249210 +v 0.406763 -0.276301 0.090466 +v 0.479914 -0.099003 0.099036 +v 0.406769 -0.090474 0.276290 +v -0.354590 -0.249205 0.249209 +v -0.406769 -0.090474 0.276289 +v -0.479913 -0.099003 0.099036 +v -0.406762 -0.276300 0.090466 +v -0.354590 0.249205 0.249209 +v -0.406762 0.276300 0.090466 +v -0.479913 0.099003 0.099036 +v -0.406769 0.090474 0.276289 +v -0.354589 0.249205 -0.249209 +v -0.406768 0.090474 -0.276289 +v -0.479913 0.099003 -0.099036 +v -0.406762 0.276300 -0.090466 +v -0.354589 -0.249205 -0.249209 +v -0.406762 -0.276300 -0.090466 +v -0.479913 -0.099003 -0.099036 +v -0.406768 -0.090474 -0.276289 +vt 0.382233 0.028933 +vt 0.617767 0.028933 +vt 0.382233 0.264467 +vt 0.617767 0.264467 +vt 0.382233 0.500000 +vt 0.617767 0.500000 +vt 0.382233 0.735533 +vt 0.617767 0.735533 +vt 0.382233 0.971067 +vt 0.617767 0.971067 +vt 0.853300 0.028933 +vt 0.853300 0.264467 +vt 0.146700 0.028933 +vt 0.146700 0.264467 +vt 0.500000 0.146700 +vt 0.500000 0.382233 +vt 0.500000 0.617767 +vt 0.500000 0.853300 +vt 0.735533 0.146700 +vt 0.264467 0.146700 +vt 0.500000 0.028933 +vt 0.617767 0.146700 +vt 0.500000 0.264467 +vt 0.382233 0.146700 +vt 0.617767 0.382233 +vt 0.500000 0.500000 +vt 0.382233 0.382233 +vt 0.617767 0.617767 +vt 0.500000 0.735533 +vt 0.382233 0.617767 +vt 0.617767 0.853300 +vt 0.500000 0.971067 +vt 0.382233 0.853300 +vt 0.735533 0.028933 +vt 0.853300 0.146700 +vt 0.735533 0.264467 +vt 0.264467 0.028933 +vt 0.264467 0.264467 +vt 0.146700 0.146700 +vt 0.558883 0.087816 +vt 0.558883 0.205583 +vt 0.441117 0.205583 +vt 0.441117 0.087816 +vt 0.558883 0.323350 +vt 0.558883 0.441117 +vt 0.441117 0.441117 +vt 0.441117 0.323350 +vt 0.558883 0.558883 +vt 0.558883 0.676650 +vt 0.441117 0.676650 +vt 0.441117 0.558883 +vt 0.558883 0.794417 +vt 0.558883 0.912184 +vt 0.441117 0.912184 +vt 0.441117 0.794417 +vt 0.794417 0.087816 +vt 0.794417 0.205583 +vt 0.676650 0.205583 +vt 0.676650 0.087816 +vt 0.323350 0.087816 +vt 0.323350 0.205583 +vt 0.205583 0.205583 +vt 0.205583 0.087816 +vt 0.558883 0.028933 +vt 0.617767 0.087816 +vt 0.558883 0.146700 +vt 0.500000 0.087816 +vt 0.617767 0.205583 +vt 0.558883 0.264467 +vt 0.500000 0.205583 +vt 0.441117 0.264467 +vt 0.382233 0.205583 +vt 0.441117 0.146700 +vt 0.382233 0.087816 +vt 0.441117 0.028933 +vt 0.617767 0.323350 +vt 0.558883 0.382233 +vt 0.500000 0.323350 +vt 0.617767 0.441117 +vt 0.558883 0.500000 +vt 0.500000 0.441117 +vt 0.441117 0.500000 +vt 0.382233 0.441117 +vt 0.441117 0.382233 +vt 0.382233 0.323350 +vt 0.617767 0.558883 +vt 0.558883 0.617767 +vt 0.500000 0.558883 +vt 0.617767 0.676650 +vt 0.558883 0.735533 +vt 0.500000 0.676650 +vt 0.441117 0.735533 +vt 0.382233 0.676650 +vt 0.441117 0.617767 +vt 0.382233 0.558883 +vt 0.617767 0.794417 +vt 0.558883 0.853300 +vt 0.500000 0.794417 +vt 0.617767 0.912184 +vt 0.558883 0.971067 +vt 0.500000 0.912184 +vt 0.441117 0.971067 +vt 0.382233 0.912184 +vt 0.441117 0.853300 +vt 0.382233 0.794417 +vt 0.794417 0.028933 +vt 0.853300 0.087816 +vt 0.794417 0.146700 +vt 0.735533 0.087816 +vt 0.853300 0.205583 +vt 0.794417 0.264467 +vt 0.735533 0.205583 +vt 0.676650 0.264467 +vt 0.676650 0.146700 +vt 0.676650 0.028933 +vt 0.323350 0.028933 +vt 0.323350 0.146700 +vt 0.264467 0.087816 +vt 0.323350 0.264467 +vt 0.264467 0.205583 +vt 0.205583 0.264467 +vt 0.146700 0.205583 +vt 0.205583 0.146700 +vt 0.146700 0.087816 +vt 0.205583 0.028933 +vt 0.588325 0.058375 +vt 0.588325 0.117258 +vt 0.529442 0.117258 +vt 0.529442 0.058375 +vt 0.588325 0.235025 +vt 0.529442 0.235025 +vt 0.529442 0.176142 +vt 0.588325 0.176142 +vt 0.411675 0.235025 +vt 0.411675 0.176142 +vt 0.470558 0.176142 +vt 0.470558 0.235025 +vt 0.411675 0.058375 +vt 0.470558 0.058375 +vt 0.470558 0.117258 +vt 0.411675 0.117258 +vt 0.588325 0.293908 +vt 0.588325 0.352792 +vt 0.529442 0.352792 +vt 0.529442 0.293908 +vt 0.588325 0.470558 +vt 0.529442 0.470558 +vt 0.529442 0.411675 +vt 0.588325 0.411675 +vt 0.411675 0.470558 +vt 0.411675 0.411675 +vt 0.470558 0.411675 +vt 0.470558 0.470558 +vt 0.411675 0.293908 +vt 0.470558 0.293908 +vt 0.470558 0.352792 +vt 0.411675 0.352792 +vt 0.588325 0.529442 +vt 0.588325 0.588325 +vt 0.529442 0.588325 +vt 0.529442 0.529442 +vt 0.588325 0.706092 +vt 0.529442 0.706092 +vt 0.529442 0.647208 +vt 0.588325 0.647208 +vt 0.411675 0.706092 +vt 0.411675 0.647208 +vt 0.470558 0.647208 +vt 0.470558 0.706092 +vt 0.411675 0.529442 +vt 0.470558 0.529442 +vt 0.470558 0.588325 +vt 0.411675 0.588325 +vt 0.588325 0.764975 +vt 0.588325 0.823858 +vt 0.529442 0.823858 +vt 0.529442 0.764975 +vt 0.588325 0.941625 +vt 0.529442 0.941625 +vt 0.529442 0.882742 +vt 0.588325 0.882742 +vt 0.411675 0.941625 +vt 0.411675 0.882742 +vt 0.470558 0.882742 +vt 0.470558 0.941625 +vt 0.411675 0.764975 +vt 0.470558 0.764975 +vt 0.470558 0.823858 +vt 0.411675 0.823858 +vt 0.823858 0.058375 +vt 0.823858 0.117258 +vt 0.764975 0.117258 +vt 0.764975 0.058375 +vt 0.823858 0.235025 +vt 0.764975 0.235025 +vt 0.764975 0.176142 +vt 0.823858 0.176142 +vt 0.647208 0.235025 +vt 0.647208 0.176142 +vt 0.706092 0.176142 +vt 0.706092 0.235025 +vt 0.647208 0.058375 +vt 0.706092 0.058375 +vt 0.706092 0.117258 +vt 0.647208 0.117258 +vt 0.352792 0.058375 +vt 0.352792 0.117258 +vt 0.293908 0.117258 +vt 0.293908 0.058375 +vt 0.352792 0.235025 +vt 0.293908 0.235025 +vt 0.293908 0.176142 +vt 0.352792 0.176142 +vt 0.176142 0.235025 +vt 0.176142 0.176142 +vt 0.235025 0.176142 +vt 0.235025 0.235025 +vt 0.176142 0.058375 +vt 0.235025 0.058375 +vt 0.235025 0.117258 +vt 0.176142 0.117258 +vt 0.588325 0.028933 +vt 0.617767 0.058375 +vt 0.588325 0.087816 +vt 0.558883 0.058375 +vt 0.617767 0.117258 +vt 0.588325 0.146700 +vt 0.558883 0.117258 +vt 0.529442 0.146700 +vt 0.500000 0.117258 +vt 0.529442 0.087816 +vt 0.500000 0.058375 +vt 0.529442 0.028933 +vt 0.617767 0.235025 +vt 0.588325 0.264467 +vt 0.558883 0.235025 +vt 0.588325 0.205583 +vt 0.529442 0.264467 +vt 0.500000 0.235025 +vt 0.529442 0.205583 +vt 0.500000 0.176142 +vt 0.558883 0.176142 +vt 0.617767 0.176142 +vt 0.411675 0.264467 +vt 0.382233 0.235025 +vt 0.411675 0.205583 +vt 0.441117 0.235025 +vt 0.382233 0.176142 +vt 0.411675 0.146700 +vt 0.441117 0.176142 +vt 0.470558 0.146700 +vt 0.470558 0.205583 +vt 0.470558 0.264467 +vt 0.382233 0.058375 +vt 0.411675 0.028933 +vt 0.441117 0.058375 +vt 0.411675 0.087816 +vt 0.470558 0.028933 +vt 0.470558 0.087816 +vt 0.441117 0.117258 +vt 0.382233 0.117258 +vt 0.617767 0.293908 +vt 0.588325 0.323350 +vt 0.558883 0.293908 +vt 0.617767 0.352792 +vt 0.588325 0.382233 +vt 0.558883 0.352792 +vt 0.529442 0.382233 +vt 0.500000 0.352792 +vt 0.529442 0.323350 +vt 0.500000 0.293908 +vt 0.617767 0.470558 +vt 0.588325 0.500000 +vt 0.558883 0.470558 +vt 0.588325 0.441117 +vt 0.529442 0.500000 +vt 0.500000 0.470558 +vt 0.529442 0.441117 +vt 0.500000 0.411675 +vt 0.558883 0.411675 +vt 0.617767 0.411675 +vt 0.411675 0.500000 +vt 0.382233 0.470558 +vt 0.411675 0.441117 +vt 0.441117 0.470558 +vt 0.382233 0.411675 +vt 0.411675 0.382233 +vt 0.441117 0.411675 +vt 0.470558 0.382233 +vt 0.470558 0.441117 +vt 0.470558 0.500000 +vt 0.382233 0.293908 +vt 0.441117 0.293908 +vt 0.411675 0.323350 +vt 0.470558 0.323350 +vt 0.441117 0.352792 +vt 0.382233 0.352792 +vt 0.617767 0.529442 +vt 0.588325 0.558883 +vt 0.558883 0.529442 +vt 0.617767 0.588325 +vt 0.588325 0.617767 +vt 0.558883 0.588325 +vt 0.529442 0.617767 +vt 0.500000 0.588325 +vt 0.529442 0.558883 +vt 0.500000 0.529442 +vt 0.617767 0.706092 +vt 0.588325 0.735533 +vt 0.558883 0.706092 +vt 0.588325 0.676650 +vt 0.529442 0.735533 +vt 0.500000 0.706092 +vt 0.529442 0.676650 +vt 0.500000 0.647208 +vt 0.558883 0.647208 +vt 0.617767 0.647208 +vt 0.411675 0.735533 +vt 0.382233 0.706092 +vt 0.411675 0.676650 +vt 0.441117 0.706092 +vt 0.382233 0.647208 +vt 0.411675 0.617767 +vt 0.441117 0.647208 +vt 0.470558 0.617767 +vt 0.470558 0.676650 +vt 0.470558 0.735533 +vt 0.382233 0.529442 +vt 0.441117 0.529442 +vt 0.411675 0.558883 +vt 0.470558 0.558883 +vt 0.441117 0.588325 +vt 0.382233 0.588325 +vt 0.617767 0.764975 +vt 0.588325 0.794417 +vt 0.558883 0.764975 +vt 0.617767 0.823858 +vt 0.588325 0.853300 +vt 0.558883 0.823858 +vt 0.529442 0.853300 +vt 0.500000 0.823858 +vt 0.529442 0.794417 +vt 0.500000 0.764975 +vt 0.617767 0.941625 +vt 0.588325 0.971067 +vt 0.558883 0.941625 +vt 0.588325 0.912184 +vt 0.529442 0.971067 +vt 0.500000 0.941625 +vt 0.529442 0.912184 +vt 0.500000 0.882742 +vt 0.558883 0.882742 +vt 0.617767 0.882742 +vt 0.411675 0.971067 +vt 0.382233 0.941625 +vt 0.411675 0.912184 +vt 0.441117 0.941625 +vt 0.382233 0.882742 +vt 0.411675 0.853300 +vt 0.441117 0.882742 +vt 0.470558 0.853300 +vt 0.470558 0.912184 +vt 0.470558 0.971067 +vt 0.382233 0.764975 +vt 0.441117 0.764975 +vt 0.411675 0.794417 +vt 0.470558 0.794417 +vt 0.441117 0.823858 +vt 0.382233 0.823858 +vt 0.823858 0.028933 +vt 0.853300 0.058375 +vt 0.823858 0.087816 +vt 0.794417 0.058375 +vt 0.853300 0.117258 +vt 0.823858 0.146700 +vt 0.794417 0.117258 +vt 0.764975 0.146700 +vt 0.735533 0.117258 +vt 0.764975 0.087816 +vt 0.735533 0.058375 +vt 0.764975 0.028933 +vt 0.853300 0.235025 +vt 0.823858 0.264467 +vt 0.794417 0.235025 +vt 0.823858 0.205583 +vt 0.764975 0.264467 +vt 0.735533 0.235025 +vt 0.764975 0.205583 +vt 0.735533 0.176142 +vt 0.794417 0.176142 +vt 0.853300 0.176142 +vt 0.647208 0.264467 +vt 0.647208 0.205583 +vt 0.676650 0.235025 +vt 0.647208 0.146700 +vt 0.676650 0.176142 +vt 0.706092 0.146700 +vt 0.706092 0.205583 +vt 0.706092 0.264467 +vt 0.647208 0.028933 +vt 0.676650 0.058375 +vt 0.647208 0.087816 +vt 0.706092 0.028933 +vt 0.706092 0.087816 +vt 0.676650 0.117258 +vt 0.352792 0.028933 +vt 0.352792 0.087816 +vt 0.323350 0.058375 +vt 0.352792 0.146700 +vt 0.323350 0.117258 +vt 0.293908 0.146700 +vt 0.264467 0.117258 +vt 0.293908 0.087816 +vt 0.264467 0.058375 +vt 0.293908 0.028933 +vt 0.352792 0.264467 +vt 0.323350 0.235025 +vt 0.352792 0.205583 +vt 0.293908 0.264467 +vt 0.264467 0.235025 +vt 0.293908 0.205583 +vt 0.264467 0.176142 +vt 0.323350 0.176142 +vt 0.176142 0.264467 +vt 0.146700 0.235025 +vt 0.176142 0.205583 +vt 0.205583 0.235025 +vt 0.146700 0.176142 +vt 0.176142 0.146700 +vt 0.205583 0.176142 +vt 0.235025 0.146700 +vt 0.235025 0.205583 +vt 0.235025 0.264467 +vt 0.146700 0.058375 +vt 0.176142 0.028933 +vt 0.205583 0.058375 +vt 0.176142 0.087816 +vt 0.235025 0.028933 +vt 0.235025 0.087816 +vt 0.205583 0.117258 +vt 0.146700 0.117258 +vn 0.461074 -0.627315 0.627604 +vn 0.577376 -0.577304 0.577371 +vn 0.627390 -0.461258 0.627394 +vn 0.486979 -0.487173 0.724924 +vn 0.667625 -0.329472 0.667626 +vn 0.523820 -0.340373 0.780871 +vn 0.361222 -0.361392 0.859601 +vn 0.340368 -0.523901 0.780819 +vn 0.329492 -0.667531 0.667710 +vn 0.696628 -0.171524 0.696627 +vn 0.707106 0.000000 0.707107 +vn 0.557022 -0.000015 0.830498 +vn 0.547918 -0.176012 0.817805 +vn 0.385344 0.000002 0.922773 +vn 0.378370 -0.185157 0.906947 +vn 0.197472 0.000006 0.980309 +vn 0.000017 0.000008 1.000000 +vn 0.000011 -0.197054 0.980393 +vn 0.193746 -0.193455 0.961789 +vn -0.000004 -0.385402 0.922749 +vn 0.185310 -0.378552 0.906840 +vn -0.000023 -0.557089 0.830453 +vn -0.000001 -0.707123 0.707091 +vn 0.171623 -0.696599 0.696631 +vn 0.176145 -0.547999 0.817722 +vn 0.627390 0.461258 0.627394 +vn 0.577376 0.577304 0.577371 +vn 0.461074 0.627315 0.627604 +vn 0.486979 0.487173 0.724924 +vn 0.329493 0.667531 0.667711 +vn 0.340368 0.523900 0.780819 +vn 0.361222 0.361392 0.859601 +vn 0.523820 0.340373 0.780871 +vn 0.667625 0.329472 0.667626 +vn 0.171624 0.696598 0.696632 +vn -0.000003 0.707123 0.707091 +vn -0.000024 0.557088 0.830453 +vn 0.176145 0.547999 0.817723 +vn -0.000004 0.385402 0.922749 +vn 0.185311 0.378552 0.906840 +vn 0.000011 0.197222 0.980359 +vn 0.193767 0.193599 0.961756 +vn 0.378403 0.185238 0.906917 +vn 0.696626 0.171525 0.696629 +vn 0.547936 0.176031 0.817789 +vn -0.461073 0.627316 0.627604 +vn -0.577372 0.577302 0.577377 +vn -0.627394 0.461257 0.627390 +vn -0.486978 0.487170 0.724926 +vn -0.667626 0.329471 0.667625 +vn -0.523821 0.340373 0.780870 +vn -0.361223 0.361392 0.859601 +vn -0.340370 0.523900 0.780818 +vn -0.329494 0.667530 0.667711 +vn -0.696627 0.171524 0.696628 +vn -0.707107 -0.000000 0.707106 +vn -0.557024 -0.000015 0.830497 +vn -0.547937 0.176030 0.817788 +vn -0.385346 0.000002 0.922772 +vn -0.378405 0.185238 0.906916 +vn -0.197140 0.000006 0.980375 +vn -0.193485 0.193554 0.961821 +vn -0.185153 0.378489 0.906898 +vn -0.171623 0.696598 0.696633 +vn -0.176103 0.547967 0.817753 +vn -0.627394 -0.461257 0.627390 +vn -0.577372 -0.577302 0.577377 +vn -0.461073 -0.627316 0.627604 +vn -0.486978 -0.487170 0.724926 +vn -0.329494 -0.667530 0.667711 +vn -0.340370 -0.523899 0.780818 +vn -0.361223 -0.361392 0.859601 +vn -0.523821 -0.340373 0.780870 +vn -0.667626 -0.329471 0.667625 +vn -0.171624 -0.696597 0.696634 +vn -0.176103 -0.547967 0.817753 +vn -0.185153 -0.378489 0.906898 +vn -0.193465 -0.193409 0.961855 +vn -0.378371 -0.185157 0.906947 +vn -0.696629 -0.171524 0.696626 +vn -0.547920 -0.176011 0.817804 +vn 0.627603 0.627317 0.461072 +vn 0.487121 0.724862 0.487122 +vn 0.667710 0.667531 0.329494 +vn 0.523945 0.780817 0.340304 +vn 0.361385 0.859527 0.361407 +vn 0.340310 0.780804 0.523961 +vn 0.696633 0.696598 0.171624 +vn 0.707091 0.707123 -0.000007 +vn 0.557171 0.830398 -0.000013 +vn 0.548068 0.817688 0.176092 +vn 0.385587 0.922671 -0.000021 +vn 0.378728 0.906782 0.185231 +vn 0.197220 0.980359 -0.000017 +vn 0.000077 1.000000 -0.000001 +vn -0.000075 0.980362 0.197206 +vn 0.193649 0.961770 0.193647 +vn 0.000029 0.922682 0.385561 +vn 0.185185 0.906813 0.378679 +vn -0.000010 0.830398 0.557171 +vn 0.176074 0.817682 0.548083 +vn 0.627606 0.627311 -0.461076 +vn 0.577373 0.577300 -0.577378 +vn 0.461074 0.627314 -0.627605 +vn 0.487124 0.724859 -0.487123 +vn 0.329495 0.667528 -0.667712 +vn 0.340312 0.780801 -0.523963 +vn 0.361387 0.859525 -0.361409 +vn 0.523948 0.780815 -0.340305 +vn 0.667713 0.667527 -0.329494 +vn 0.171623 0.696595 -0.696635 +vn 0.000003 0.707121 -0.707093 +vn 0.000010 0.830397 -0.557173 +vn 0.176057 0.817693 -0.548071 +vn -0.000009 0.922660 -0.385614 +vn 0.185168 0.906802 -0.378712 +vn -0.000023 0.980369 -0.197174 +vn 0.193619 0.961774 -0.193655 +vn 0.378694 0.906810 -0.185168 +vn 0.696632 0.696596 -0.171632 +vn 0.548057 0.817698 -0.176078 +vn -0.461075 0.627312 -0.627606 +vn -0.577377 0.577301 -0.577372 +vn -0.627604 0.627315 -0.461074 +vn -0.487123 0.724860 -0.487123 +vn -0.667711 0.667529 -0.329495 +vn -0.523962 0.780802 -0.340312 +vn -0.361408 0.859526 -0.361387 +vn -0.340304 0.780816 -0.523947 +vn -0.329493 0.667529 -0.667712 +vn -0.696635 0.696595 -0.171624 +vn -0.707092 0.707122 -0.000001 +vn -0.557172 0.830397 -0.000012 +vn -0.548070 0.817693 -0.176059 +vn -0.385588 0.922671 0.000002 +vn -0.378697 0.906808 -0.185169 +vn -0.197159 0.980372 -0.000055 +vn -0.193617 0.961782 -0.193619 +vn -0.185231 0.906781 -0.378731 +vn -0.171624 0.696596 -0.696634 +vn -0.176092 0.817686 -0.548070 +vn -0.627605 0.627314 0.461075 +vn -0.487123 0.724861 0.487122 +vn -0.340304 0.780816 0.523946 +vn -0.361408 0.859526 0.361386 +vn -0.523961 0.780803 0.340310 +vn -0.667711 0.667530 0.329493 +vn -0.176073 0.817700 0.548055 +vn -0.185181 0.906801 0.378707 +vn -0.193620 0.961788 0.193585 +vn -0.378708 0.906797 0.185199 +vn -0.696632 0.696598 0.171623 +vn -0.548084 0.817681 0.176072 +vn 0.627395 0.461255 -0.627391 +vn 0.486979 0.487168 -0.724927 +vn 0.667627 0.329469 -0.667626 +vn 0.523822 0.340371 -0.780870 +vn 0.361224 0.361390 -0.859602 +vn 0.340370 0.523897 -0.780820 +vn 0.696627 0.171523 -0.696628 +vn 0.707107 0.000000 -0.707106 +vn 0.557024 0.000012 -0.830497 +vn 0.547920 0.176008 -0.817805 +vn 0.385346 -0.000051 -0.922772 +vn 0.378409 0.185195 -0.906923 +vn 0.197141 0.000031 -0.980375 +vn -0.000017 0.000008 -1.000000 +vn -0.000059 0.197221 -0.980359 +vn 0.193545 0.193492 -0.961822 +vn 0.000101 0.385400 -0.922750 +vn 0.185232 0.378479 -0.906886 +vn -0.000026 0.557087 -0.830454 +vn 0.176143 0.547997 -0.817725 +vn 0.627392 -0.461254 -0.627394 +vn 0.577379 -0.577300 -0.577372 +vn 0.461077 -0.627311 -0.627605 +vn 0.486981 -0.487169 -0.724925 +vn 0.329495 -0.667528 -0.667712 +vn 0.340371 -0.523897 -0.780820 +vn 0.361224 -0.361390 -0.859602 +vn 0.523822 -0.340371 -0.780871 +vn 0.667627 -0.329470 -0.667626 +vn 0.171623 -0.696595 -0.696635 +vn 0.000003 -0.707121 -0.707093 +vn -0.000026 -0.557087 -0.830454 +vn 0.176143 -0.547997 -0.817725 +vn 0.000101 -0.385400 -0.922750 +vn 0.185232 -0.378479 -0.906886 +vn -0.000059 -0.197053 -0.980393 +vn 0.193481 -0.193388 -0.961856 +vn 0.378367 -0.185198 -0.906940 +vn 0.696629 -0.171523 -0.696626 +vn 0.547937 -0.176032 -0.817788 +vn -0.461075 -0.627312 -0.627606 +vn -0.577377 -0.577301 -0.577372 +vn -0.627391 -0.461255 -0.627395 +vn -0.486980 -0.487171 -0.724925 +vn -0.667626 -0.329470 -0.667627 +vn -0.523820 -0.340372 -0.780871 +vn -0.361222 -0.361391 -0.859602 +vn -0.340369 -0.523898 -0.780820 +vn -0.329493 -0.667529 -0.667712 +vn -0.696627 -0.171525 -0.696628 +vn -0.707106 0.000001 -0.707107 +vn -0.557022 -0.000015 -0.830498 +vn -0.547918 -0.176011 -0.817805 +vn -0.385344 0.000002 -0.922773 +vn -0.378369 -0.185156 -0.906948 +vn -0.197471 0.000006 -0.980309 +vn -0.193709 -0.193493 -0.961789 +vn -0.185232 -0.378558 -0.906853 +vn -0.171624 -0.696596 -0.696634 +vn -0.176104 -0.547965 -0.817754 +vn -0.627391 0.461256 -0.627394 +vn -0.486979 0.487171 -0.724925 +vn -0.340369 0.523898 -0.780820 +vn -0.361222 0.361390 -0.859602 +vn -0.523820 0.340371 -0.780871 +vn -0.667626 0.329470 -0.667626 +vn -0.176104 0.547965 -0.817754 +vn -0.185232 0.378558 -0.906853 +vn -0.193730 0.193638 -0.961755 +vn -0.378403 0.185237 -0.906917 +vn -0.696627 0.171522 -0.696628 +vn -0.547936 0.176030 -0.817789 +vn 0.627606 -0.627313 -0.461073 +vn 0.487125 -0.724859 -0.487123 +vn 0.667713 -0.667528 -0.329494 +vn 0.523948 -0.780814 -0.340305 +vn 0.361388 -0.859525 -0.361409 +vn 0.340313 -0.780801 -0.523963 +vn 0.696634 -0.696595 -0.171630 +vn 0.707091 -0.707123 -0.000009 +vn 0.557171 -0.830398 -0.000014 +vn 0.548057 -0.817698 -0.176078 +vn 0.385587 -0.922672 -0.000021 +vn 0.378694 -0.906810 -0.185168 +vn 0.197218 -0.980360 -0.000027 +vn 0.000075 -1.000000 0.000016 +vn -0.000047 -0.980368 -0.197177 +vn 0.193611 -0.961778 -0.193646 +vn -0.000038 -0.922671 -0.385588 +vn 0.185168 -0.906802 -0.378712 +vn 0.000009 -0.830397 -0.557173 +vn 0.176057 -0.817693 -0.548072 +vn 0.627603 -0.627317 0.461072 +vn 0.487122 -0.724862 0.487122 +vn 0.340303 -0.780817 0.523946 +vn 0.361407 -0.859526 0.361386 +vn 0.523960 -0.780804 0.340311 +vn 0.667710 -0.667531 0.329494 +vn -0.000012 -0.830398 0.557171 +vn 0.176089 -0.817687 0.548069 +vn 0.000030 -0.922682 0.385562 +vn 0.185198 -0.906805 0.378690 +vn -0.000074 -0.980359 0.197220 +vn 0.193655 -0.961767 0.193653 +vn 0.378720 -0.906789 0.185216 +vn 0.696631 -0.696599 0.171626 +vn 0.548082 -0.817682 0.176075 +vn -0.627605 -0.627313 0.461075 +vn -0.487122 -0.724861 0.487122 +vn -0.667712 -0.667530 0.329493 +vn -0.523961 -0.780803 0.340310 +vn -0.361408 -0.859526 0.361386 +vn -0.340304 -0.780817 0.523945 +vn -0.696633 -0.696597 0.171624 +vn -0.707092 -0.707122 -0.000002 +vn -0.557172 -0.830397 -0.000009 +vn -0.548084 -0.817681 0.176075 +vn -0.385613 -0.922661 0.000029 +vn -0.378707 -0.906798 0.185201 +vn -0.197143 -0.980375 -0.000038 +vn -0.193628 -0.961785 0.193594 +vn -0.185183 -0.906802 0.378706 +vn -0.176076 -0.817700 0.548055 +vn -0.627604 -0.627315 -0.461073 +vn -0.487123 -0.724860 -0.487123 +vn -0.340304 -0.780816 -0.523947 +vn -0.361408 -0.859526 -0.361387 +vn -0.523962 -0.780802 -0.340312 +vn -0.667711 -0.667529 -0.329495 +vn -0.176093 -0.817686 -0.548070 +vn -0.185216 -0.906796 -0.378704 +vn -0.193645 -0.961784 -0.193578 +vn -0.378725 -0.906794 -0.185183 +vn -0.696634 -0.696596 -0.171623 +vn -0.548070 -0.817694 -0.176057 +vn 0.724928 -0.487168 -0.486978 +vn 0.780871 -0.340371 -0.523820 +vn 0.859602 -0.361390 -0.361222 +vn 0.780820 -0.523897 -0.340369 +vn 0.830498 0.000015 -0.557022 +vn 0.817790 -0.176030 -0.547936 +vn 0.922773 -0.000052 -0.385344 +vn 0.906940 -0.185197 -0.378367 +vn 0.980306 0.000092 -0.197487 +vn 1.000000 -0.000108 -0.000031 +vn 0.980374 -0.197146 -0.000024 +vn 0.961768 -0.193520 -0.193786 +vn 0.922749 -0.385402 -0.000011 +vn 0.906838 -0.378552 -0.185322 +vn 0.830453 -0.557088 0.000018 +vn 0.817723 -0.547996 -0.176152 +vn 0.724925 0.487170 -0.486979 +vn 0.780820 0.523897 -0.340369 +vn 0.859602 0.361390 -0.361222 +vn 0.780871 0.340371 -0.523820 +vn 0.830453 0.557089 -0.000037 +vn 0.817752 0.547964 -0.176116 +vn 0.922749 0.385402 0.000089 +vn 0.906851 0.378558 -0.185245 +vn 0.980377 0.197130 -0.000073 +vn 0.961771 0.193571 -0.193719 +vn 0.906924 0.185195 -0.378406 +vn 0.817806 0.176010 -0.547918 +vn 0.724926 0.487171 0.486977 +vn 0.780870 0.340373 0.523821 +vn 0.859601 0.361393 0.361223 +vn 0.780818 0.523901 0.340370 +vn 0.830497 -0.000012 0.557023 +vn 0.817788 0.176033 0.547937 +vn 0.922772 0.000000 0.385346 +vn 0.906916 0.185240 0.378404 +vn 0.980376 0.000066 0.197138 +vn 0.961841 0.193467 0.193475 +vn 0.906886 0.378482 0.185231 +vn 0.817723 0.548000 0.176143 +vn 0.724926 -0.487171 0.486977 +vn 0.780818 -0.523901 0.340370 +vn 0.859601 -0.361392 0.361223 +vn 0.780870 -0.340373 0.523821 +vn 0.817752 -0.547967 0.176106 +vn 0.906899 -0.378487 0.185154 +vn 0.961836 -0.193456 0.193510 +vn 0.906946 -0.185156 0.378372 +vn 0.817805 -0.176009 0.547920 +vn -0.724924 -0.487172 0.486979 +vn -0.780871 -0.340372 0.523820 +vn -0.859602 -0.361392 0.361222 +vn -0.780819 -0.523899 0.340369 +vn -0.830498 -0.000012 0.557022 +vn -0.817806 -0.176009 0.547919 +vn -0.922773 0.000000 0.385344 +vn -0.906947 -0.185155 0.378371 +vn -0.980309 0.000006 0.197472 +vn -1.000000 0.000008 0.000017 +vn -0.980393 -0.197053 0.000011 +vn -0.961789 -0.193454 0.193746 +vn -0.922749 -0.385401 -0.000004 +vn -0.906840 -0.378551 0.185311 +vn -0.830454 -0.557088 -0.000023 +vn -0.817723 -0.547998 0.176145 +vn -0.724924 0.487172 0.486979 +vn -0.780819 0.523899 0.340369 +vn -0.859602 0.361392 0.361222 +vn -0.780871 0.340372 0.523820 +vn -0.830454 0.557088 -0.000024 +vn -0.817723 0.547998 0.176145 +vn -0.922749 0.385401 -0.000004 +vn -0.906840 0.378551 0.185311 +vn -0.980359 0.197221 0.000011 +vn -0.961756 0.193598 0.193767 +vn -0.906917 0.185239 0.378402 +vn -0.817789 0.176033 0.547936 +vn -0.724926 0.487169 -0.486979 +vn -0.780870 0.340372 -0.523822 +vn -0.859601 0.361391 -0.361224 +vn -0.780819 0.523898 -0.340371 +vn -0.830496 0.000012 -0.557024 +vn -0.817805 0.176008 -0.547920 +vn -0.922772 -0.000051 -0.385346 +vn -0.906923 0.185195 -0.378409 +vn -0.980375 0.000031 -0.197140 +vn -0.961821 0.193533 -0.193507 +vn -0.906899 0.378488 -0.185154 +vn -0.817754 0.547965 -0.176103 +vn -0.724926 -0.487169 -0.486979 +vn -0.780819 -0.523898 -0.340371 +vn -0.859601 -0.361391 -0.361223 +vn -0.780870 -0.340372 -0.523822 +vn -0.817754 -0.547966 -0.176103 +vn -0.906899 -0.378488 -0.185154 +vn -0.961855 -0.193429 -0.193443 +vn -0.906940 -0.185199 -0.378367 +vn -0.817788 -0.176033 -0.547937 +s 1 +g QuadSphere_GEO +f 102/222/1 2/2/2 119/223/3 291/126/4 +f 119/223/3 37/65/5 196/224/6 291/126/4 +f 196/224/6 75/40/7 195/225/8 291/126/4 +f 195/225/8 28/64/9 102/222/1 291/126/4 +f 120/226/10 14/22/11 150/227/12 292/127/13 +f 150/227/12 52/66/14 197/228/15 292/127/13 +f 197/228/15 75/40/7 196/224/6 292/127/13 +f 196/224/6 37/65/5 120/226/10 292/127/13 +f 149/229/16 21/15/17 147/230/18 293/128/19 +f 147/230/18 51/67/20 198/231/21 293/128/19 +f 198/231/21 75/40/7 197/228/15 293/128/19 +f 197/228/15 52/66/14 149/229/16 293/128/19 +f 148/232/22 9/21/23 101/233/24 294/129/25 +f 101/233/24 28/64/9 195/225/8 294/129/25 +f 195/225/8 75/40/7 198/231/21 294/129/25 +f 198/231/21 51/67/20 148/232/22 294/129/25 +f 122/234/26 4/4/27 106/235/28 295/130/29 +f 106/235/28 30/69/30 200/236/31 295/130/29 +f 200/236/31 76/41/32 199/237/33 295/130/29 +f 199/237/33 38/68/34 122/234/26 295/130/29 +f 105/238/35 10/23/36 152/239/37 296/131/38 +f 152/239/37 53/70/39 201/240/40 296/131/38 +f 201/240/40 76/41/32 200/236/31 296/131/38 +f 200/236/31 30/69/30 105/238/35 296/131/38 +f 151/241/41 21/15/17 149/229/16 297/132/42 +f 149/229/16 52/66/14 202/242/43 297/132/42 +f 202/242/43 76/41/32 201/240/40 297/132/42 +f 201/240/40 53/70/39 151/241/41 297/132/42 +f 150/227/12 14/22/11 121/243/44 298/133/45 +f 121/243/44 38/68/34 199/237/33 298/133/45 +f 199/237/33 76/41/32 202/242/43 298/133/45 +f 202/242/43 52/66/14 150/227/12 298/133/45 +f 103/244/46 3/3/47 118/245/48 299/134/49 +f 118/245/48 36/72/50 204/246/51 299/134/49 +f 204/246/51 77/42/52 203/247/53 299/134/49 +f 203/247/53 29/71/54 103/244/46 299/134/49 +f 117/248/55 13/24/56 154/249/57 300/135/58 +f 154/249/57 54/73/59 205/250/60 300/135/58 +f 205/250/60 77/42/52 204/246/51 300/135/58 +f 204/246/51 36/72/50 117/248/55 300/135/58 +f 153/251/61 21/15/17 151/241/41 301/136/62 +f 151/241/41 53/70/39 206/252/63 301/136/62 +f 206/252/63 77/42/52 205/250/60 301/136/62 +f 205/250/60 54/73/59 153/251/61 301/136/62 +f 152/239/37 10/23/36 104/253/64 302/137/65 +f 104/253/64 29/71/54 203/247/53 302/137/65 +f 203/247/53 77/42/52 206/252/63 302/137/65 +f 206/252/63 53/70/39 152/239/37 302/137/65 +f 115/254/66 1/1/67 99/255/68 303/138/69 +f 99/255/68 27/75/70 208/256/71 303/138/69 +f 208/256/71 78/43/72 207/257/73 303/138/69 +f 207/257/73 35/74/74 115/254/66 303/138/69 +f 100/258/75 9/21/23 148/232/22 304/139/76 +f 148/232/22 51/67/20 209/259/77 304/139/76 +f 209/259/77 78/43/72 208/256/71 304/139/76 +f 208/256/71 27/75/70 100/258/75 304/139/76 +f 147/230/18 21/15/17 153/251/61 305/140/78 +f 153/251/61 54/73/59 210/260/79 305/140/78 +f 210/260/79 78/43/72 209/259/77 305/140/78 +f 209/259/77 51/67/20 147/230/18 305/140/78 +f 154/249/57 13/24/56 116/261/80 306/141/81 +f 116/261/80 35/74/74 207/257/73 306/141/81 +f 207/257/73 78/43/72 210/260/79 306/141/81 +f 210/260/79 54/73/59 154/249/57 306/141/81 +f 106/235/28 4/4/27 127/262/82 307/142/83 +f 127/262/82 41/76/84 212/263/85 307/142/83 +f 212/263/85 79/44/86 211/264/87 307/142/83 +f 211/264/87 30/69/30 106/235/28 307/142/83 +f 128/265/88 16/25/89 158/266/90 308/143/91 +f 158/266/90 56/77/92 213/267/93 308/143/91 +f 213/267/93 79/44/86 212/263/85 308/143/91 +f 212/263/85 41/76/84 128/265/88 308/143/91 +f 157/268/94 22/16/95 155/269/96 309/144/97 +f 155/269/96 55/78/98 214/270/99 309/144/97 +f 214/270/99 79/44/86 213/267/93 309/144/97 +f 213/267/93 56/77/92 157/268/94 309/144/97 +f 156/271/100 10/23/36 105/238/35 310/145/101 +f 105/238/35 30/69/30 211/264/87 310/145/101 +f 211/264/87 79/44/86 214/270/99 310/145/101 +f 214/270/99 55/78/98 156/271/100 310/145/101 +f 130/272/102 6/6/103 110/273/104 311/146/105 +f 110/273/104 32/80/106 216/274/107 311/146/105 +f 216/274/107 80/45/108 215/275/109 311/146/105 +f 215/275/109 42/79/110 130/272/102 311/146/105 +f 109/276/111 11/26/112 160/277/113 312/147/114 +f 160/277/113 57/81/115 217/278/116 312/147/114 +f 217/278/116 80/45/108 216/274/107 312/147/114 +f 216/274/107 32/80/106 109/276/111 312/147/114 +f 159/279/117 22/16/95 157/268/94 313/148/118 +f 157/268/94 56/77/92 218/280/119 313/148/118 +f 218/280/119 80/45/108 217/278/116 313/148/118 +f 217/278/116 57/81/115 159/279/117 313/148/118 +f 158/266/90 16/25/89 129/281/120 314/149/121 +f 129/281/120 42/79/110 215/275/109 314/149/121 +f 215/275/109 80/45/108 218/280/119 314/149/121 +f 218/280/119 56/77/92 158/266/90 314/149/121 +f 107/282/122 5/5/123 126/283/124 315/150/125 +f 126/283/124 40/83/126 220/284/127 315/150/125 +f 220/284/127 81/46/128 219/285/129 315/150/125 +f 219/285/129 31/82/130 107/282/122 315/150/125 +f 125/286/131 15/27/132 162/287/133 316/151/134 +f 162/287/133 58/84/135 221/288/136 316/151/134 +f 221/288/136 81/46/128 220/284/127 316/151/134 +f 220/284/127 40/83/126 125/286/131 316/151/134 +f 161/289/137 22/16/95 159/279/117 317/152/138 +f 159/279/117 57/81/115 222/290/139 317/152/138 +f 222/290/139 81/46/128 221/288/136 317/152/138 +f 221/288/136 58/84/135 161/289/137 317/152/138 +f 160/277/113 11/26/112 108/291/140 318/153/141 +f 108/291/140 31/82/130 219/285/129 318/153/141 +f 219/285/129 81/46/128 222/290/139 318/153/141 +f 222/290/139 57/81/115 160/277/113 318/153/141 +f 123/292/142 3/3/47 103/244/46 319/154/143 +f 103/244/46 29/71/54 224/293/144 319/154/143 +f 224/293/144 82/47/145 223/294/146 319/154/143 +f 223/294/146 39/85/147 123/292/142 319/154/143 +f 104/253/64 10/23/36 156/271/100 320/155/148 +f 156/271/100 55/78/98 225/295/149 320/155/148 +f 225/295/149 82/47/145 224/293/144 320/155/148 +f 224/293/144 29/71/54 104/253/64 320/155/148 +f 155/269/96 22/16/95 161/289/137 321/156/150 +f 161/289/137 58/84/135 226/296/151 321/156/150 +f 226/296/151 82/47/145 225/295/149 321/156/150 +f 225/295/149 55/78/98 155/269/96 321/156/150 +f 162/287/133 15/27/132 124/297/152 322/157/153 +f 124/297/152 39/85/147 223/294/146 322/157/153 +f 223/294/146 82/47/145 226/296/151 322/157/153 +f 226/296/151 58/84/135 162/287/133 322/157/153 +f 110/273/104 6/6/103 135/298/154 323/158/155 +f 135/298/154 45/86/156 228/299/157 323/158/155 +f 228/299/157 83/48/158 227/300/159 323/158/155 +f 227/300/159 32/80/106 110/273/104 323/158/155 +f 136/301/160 18/28/161 166/302/162 324/159/163 +f 166/302/162 60/87/164 229/303/165 324/159/163 +f 229/303/165 83/48/158 228/299/157 324/159/163 +f 228/299/157 45/86/156 136/301/160 324/159/163 +f 165/304/166 23/17/167 163/305/168 325/160/169 +f 163/305/168 59/88/170 230/306/171 325/160/169 +f 230/306/171 83/48/158 229/303/165 325/160/169 +f 229/303/165 60/87/164 165/304/166 325/160/169 +f 164/307/172 11/26/112 109/276/111 326/161/173 +f 109/276/111 32/80/106 227/300/159 326/161/173 +f 227/300/159 83/48/158 230/306/171 326/161/173 +f 230/306/171 59/88/170 164/307/172 326/161/173 +f 138/308/174 8/8/175 114/309/176 327/162/177 +f 114/309/176 34/90/178 232/310/179 327/162/177 +f 232/310/179 84/49/180 231/311/181 327/162/177 +f 231/311/181 46/89/182 138/308/174 327/162/177 +f 113/312/183 12/29/184 168/313/185 328/163/186 +f 168/313/185 61/91/187 233/314/188 328/163/186 +f 233/314/188 84/49/180 232/310/179 328/163/186 +f 232/310/179 34/90/178 113/312/183 328/163/186 +f 167/315/189 23/17/167 165/304/166 329/164/190 +f 165/304/166 60/87/164 234/316/191 329/164/190 +f 234/316/191 84/49/180 233/314/188 329/164/190 +f 233/314/188 61/91/187 167/315/189 329/164/190 +f 166/302/162 18/28/161 137/317/192 330/165/193 +f 137/317/192 46/89/182 231/311/181 330/165/193 +f 231/311/181 84/49/180 234/316/191 330/165/193 +f 234/316/191 60/87/164 166/302/162 330/165/193 +f 111/318/194 7/7/195 134/319/196 331/166/197 +f 134/319/196 44/93/198 236/320/199 331/166/197 +f 236/320/199 85/50/200 235/321/201 331/166/197 +f 235/321/201 33/92/202 111/318/194 331/166/197 +f 133/322/203 17/30/204 170/323/205 332/167/206 +f 170/323/205 62/94/207 237/324/208 332/167/206 +f 237/324/208 85/50/200 236/320/199 332/167/206 +f 236/320/199 44/93/198 133/322/203 332/167/206 +f 169/325/209 23/17/167 167/315/189 333/168/210 +f 167/315/189 61/91/187 238/326/211 333/168/210 +f 238/326/211 85/50/200 237/324/208 333/168/210 +f 237/324/208 62/94/207 169/325/209 333/168/210 +f 168/313/185 12/29/184 112/327/212 334/169/213 +f 112/327/212 33/92/202 235/321/201 334/169/213 +f 235/321/201 85/50/200 238/326/211 334/169/213 +f 238/326/211 61/91/187 168/313/185 334/169/213 +f 131/328/214 5/5/123 107/282/122 335/170/215 +f 107/282/122 31/82/130 240/329/216 335/170/215 +f 240/329/216 86/51/217 239/330/218 335/170/215 +f 239/330/218 43/95/219 131/328/214 335/170/215 +f 108/291/140 11/26/112 164/307/172 336/171/220 +f 164/307/172 59/88/170 241/331/221 336/171/220 +f 241/331/221 86/51/217 240/329/216 336/171/220 +f 240/329/216 31/82/130 108/291/140 336/171/220 +f 163/305/168 23/17/167 169/325/209 337/172/222 +f 169/325/209 62/94/207 242/332/223 337/172/222 +f 242/332/223 86/51/217 241/331/221 337/172/222 +f 241/331/221 59/88/170 163/305/168 337/172/222 +f 170/323/205 17/30/204 132/333/224 338/173/225 +f 132/333/224 43/95/219 239/330/218 338/173/225 +f 239/330/218 86/51/217 242/332/223 338/173/225 +f 242/332/223 62/94/207 170/323/205 338/173/225 +f 114/309/176 8/8/175 143/334/226 339/174/227 +f 143/334/226 49/96/228 244/335/229 339/174/227 +f 244/335/229 87/52/230 243/336/231 339/174/227 +f 243/336/231 34/90/178 114/309/176 339/174/227 +f 144/337/232 20/31/233 174/338/234 340/175/235 +f 174/338/234 64/97/236 245/339/237 340/175/235 +f 245/339/237 87/52/230 244/335/229 340/175/235 +f 244/335/229 49/96/228 144/337/232 340/175/235 +f 173/340/238 24/18/239 171/341/240 341/176/241 +f 171/341/240 63/98/242 246/342/243 341/176/241 +f 246/342/243 87/52/230 245/339/237 341/176/241 +f 245/339/237 64/97/236 173/340/238 341/176/241 +f 172/343/244 12/29/184 113/312/183 342/177/245 +f 113/312/183 34/90/178 243/336/231 342/177/245 +f 243/336/231 87/52/230 246/342/243 342/177/245 +f 246/342/243 63/98/242 172/343/244 342/177/245 +f 146/344/246 2/10/2 102/345/1 343/178/247 +f 102/345/1 28/100/9 248/346/248 343/178/247 +f 248/346/248 88/53/249 247/347/250 343/178/247 +f 247/347/250 50/99/251 146/344/246 343/178/247 +f 101/348/24 9/32/23 176/349/252 344/179/253 +f 176/349/252 65/101/254 249/350/255 344/179/253 +f 249/350/255 88/53/249 248/346/248 344/179/253 +f 248/346/248 28/100/9 101/348/24 344/179/253 +f 175/351/256 24/18/239 173/340/238 345/180/257 +f 173/340/238 64/97/236 250/352/258 345/180/257 +f 250/352/258 88/53/249 249/350/255 345/180/257 +f 249/350/255 65/101/254 175/351/256 345/180/257 +f 174/338/234 20/31/233 145/353/259 346/181/260 +f 145/353/259 50/99/251 247/347/250 346/181/260 +f 247/347/250 88/53/249 250/352/258 346/181/260 +f 250/352/258 64/97/236 174/338/234 346/181/260 +f 99/354/68 1/9/67 142/355/261 347/182/262 +f 142/355/261 48/103/263 252/356/264 347/182/262 +f 252/356/264 89/54/265 251/357/266 347/182/262 +f 251/357/266 27/102/70 99/354/68 347/182/262 +f 141/358/267 19/33/268 178/359/269 348/183/270 +f 178/359/269 66/104/271 253/360/272 348/183/270 +f 253/360/272 89/54/265 252/356/264 348/183/270 +f 252/356/264 48/103/263 141/358/267 348/183/270 +f 177/361/273 24/18/239 175/351/256 349/184/274 +f 175/351/256 65/101/254 254/362/275 349/184/274 +f 254/362/275 89/54/265 253/360/272 349/184/274 +f 253/360/272 66/104/271 177/361/273 349/184/274 +f 176/349/252 9/32/23 100/363/75 350/185/276 +f 100/363/75 27/102/70 251/357/266 350/185/276 +f 251/357/266 89/54/265 254/362/275 350/185/276 +f 254/362/275 65/101/254 176/349/252 350/185/276 +f 139/364/277 7/7/195 111/318/194 351/186/278 +f 111/318/194 33/92/202 256/365/279 351/186/278 +f 256/365/279 90/55/280 255/366/281 351/186/278 +f 255/366/281 47/105/282 139/364/277 351/186/278 +f 112/327/212 12/29/184 172/343/244 352/187/283 +f 172/343/244 63/98/242 257/367/284 352/187/283 +f 257/367/284 90/55/280 256/365/279 352/187/283 +f 256/365/279 33/92/202 112/327/212 352/187/283 +f 171/341/240 24/18/239 177/361/273 353/188/285 +f 177/361/273 66/104/271 258/368/286 353/188/285 +f 258/368/286 90/55/280 257/367/284 353/188/285 +f 257/367/284 63/98/242 171/341/240 353/188/285 +f 178/359/269 19/33/268 140/369/287 354/189/288 +f 140/369/287 47/105/282 255/366/281 354/189/288 +f 255/366/281 90/55/280 258/368/286 354/189/288 +f 258/368/286 66/104/271 178/359/269 354/189/288 +f 143/370/226 8/11/175 138/371/174 355/190/289 +f 138/371/174 46/107/182 260/372/290 355/190/289 +f 260/372/290 91/56/291 259/373/292 355/190/289 +f 259/373/292 49/106/228 143/370/226 355/190/289 +f 137/374/192 18/35/161 182/375/293 356/191/294 +f 182/375/293 68/108/295 261/376/296 356/191/294 +f 261/376/296 91/56/291 260/372/290 356/191/294 +f 260/372/290 46/107/182 137/374/192 356/191/294 +f 181/377/297 25/19/298 179/378/299 357/192/300 +f 179/378/299 67/109/301 262/379/302 357/192/300 +f 262/379/302 91/56/291 261/376/296 357/192/300 +f 261/376/296 68/108/295 181/377/297 357/192/300 +f 180/380/303 20/34/233 144/381/232 358/193/304 +f 144/381/232 49/106/228 259/373/292 358/193/304 +f 259/373/292 91/56/291 262/379/302 358/193/304 +f 262/379/302 67/109/301 180/380/303 358/193/304 +f 135/382/154 6/12/103 130/383/102 359/194/305 +f 130/383/102 42/111/110 264/384/306 359/194/305 +f 264/384/306 92/57/307 263/385/308 359/194/305 +f 263/385/308 45/110/156 135/382/154 359/194/305 +f 129/386/120 16/36/89 184/387/309 360/195/310 +f 184/387/309 69/112/311 265/388/312 360/195/310 +f 265/388/312 92/57/307 264/384/306 360/195/310 +f 264/384/306 42/111/110 129/386/120 360/195/310 +f 183/389/313 25/19/298 181/377/297 361/196/314 +f 181/377/297 68/108/295 266/390/315 361/196/314 +f 266/390/315 92/57/307 265/388/312 361/196/314 +f 265/388/312 69/112/311 183/389/313 361/196/314 +f 182/375/293 18/35/161 136/391/160 362/197/316 +f 136/391/160 45/110/156 263/385/308 362/197/316 +f 263/385/308 92/57/307 266/390/315 362/197/316 +f 266/390/315 68/108/295 182/375/293 362/197/316 +f 127/392/82 4/4/27 122/234/26 363/198/317 +f 122/234/26 38/68/34 268/393/318 363/198/317 +f 268/393/318 93/58/319 267/394/320 363/198/317 +f 267/394/320 41/113/84 127/392/82 363/198/317 +f 121/243/44 14/22/11 186/395/321 364/199/322 +f 186/395/321 70/114/323 269/396/324 364/199/322 +f 269/396/324 93/58/319 268/393/318 364/199/322 +f 268/393/318 38/68/34 121/243/44 364/199/322 +f 185/397/325 25/19/298 183/389/313 365/200/326 +f 183/389/313 69/112/311 270/398/327 365/200/326 +f 270/398/327 93/58/319 269/396/324 365/200/326 +f 269/396/324 70/114/323 185/397/325 365/200/326 +f 184/387/309 16/36/89 128/399/88 366/201/328 +f 128/399/88 41/113/84 267/394/320 366/201/328 +f 267/394/320 93/58/319 270/398/327 366/201/328 +f 270/398/327 69/112/311 184/387/309 366/201/328 +f 119/223/3 2/2/2 146/400/246 367/202/329 +f 146/400/246 50/115/251 272/401/330 367/202/329 +f 272/401/330 94/59/331 271/402/332 367/202/329 +f 271/402/332 37/65/5 119/223/3 367/202/329 +f 145/403/259 20/34/233 180/380/303 368/203/333 +f 180/380/303 67/109/301 273/404/334 368/203/333 +f 273/404/334 94/59/331 272/401/330 368/203/333 +f 272/401/330 50/115/251 145/403/259 368/203/333 +f 179/378/299 25/19/298 185/397/325 369/204/335 +f 185/397/325 70/114/323 274/405/336 369/204/335 +f 274/405/336 94/59/331 273/404/334 369/204/335 +f 273/404/334 67/109/301 179/378/299 369/204/335 +f 186/395/321 14/22/11 120/226/10 370/205/337 +f 120/226/10 37/65/5 271/402/332 370/205/337 +f 271/402/332 94/59/331 274/405/336 370/205/337 +f 274/405/336 70/114/323 186/395/321 370/205/337 +f 142/406/261 1/1/67 115/254/66 371/206/338 +f 115/254/66 35/74/74 276/407/339 371/206/338 +f 276/407/339 95/60/340 275/408/341 371/206/338 +f 275/408/341 48/116/263 142/406/261 371/206/338 +f 116/261/80 13/24/56 190/409/342 372/207/343 +f 190/409/342 72/117/344 277/410/345 372/207/343 +f 277/410/345 95/60/340 276/407/339 372/207/343 +f 276/407/339 35/74/74 116/261/80 372/207/343 +f 189/411/346 26/20/347 187/412/348 373/208/349 +f 187/412/348 71/118/350 278/413/351 373/208/349 +f 278/413/351 95/60/340 277/410/345 373/208/349 +f 277/410/345 72/117/344 189/411/346 373/208/349 +f 188/414/352 19/37/268 141/415/267 374/209/353 +f 141/415/267 48/116/263 275/408/341 374/209/353 +f 275/408/341 95/60/340 278/413/351 374/209/353 +f 278/413/351 71/118/350 188/414/352 374/209/353 +f 118/245/48 3/3/47 123/416/142 375/210/354 +f 123/416/142 39/119/147 280/417/355 375/210/354 +f 280/417/355 96/61/356 279/418/357 375/210/354 +f 279/418/357 36/72/50 118/245/48 375/210/354 +f 124/419/152 15/38/132 192/420/358 376/211/359 +f 192/420/358 73/120/360 281/421/361 376/211/359 +f 281/421/361 96/61/356 280/417/355 376/211/359 +f 280/417/355 39/119/147 124/419/152 376/211/359 +f 191/422/362 26/20/347 189/411/346 377/212/363 +f 189/411/346 72/117/344 282/423/364 377/212/363 +f 282/423/364 96/61/356 281/421/361 377/212/363 +f 281/421/361 73/120/360 191/422/362 377/212/363 +f 190/409/342 13/24/56 117/248/55 378/213/365 +f 117/248/55 36/72/50 279/418/357 378/213/365 +f 279/418/357 96/61/356 282/423/364 378/213/365 +f 282/423/364 72/117/344 190/409/342 378/213/365 +f 126/424/124 5/14/123 131/425/214 379/214/366 +f 131/425/214 43/122/219 284/426/367 379/214/366 +f 284/426/367 97/62/368 283/427/369 379/214/366 +f 283/427/369 40/121/126 126/424/124 379/214/366 +f 132/428/224 17/39/204 194/429/370 380/215/371 +f 194/429/370 74/123/372 285/430/373 380/215/371 +f 285/430/373 97/62/368 284/426/367 380/215/371 +f 284/426/367 43/122/219 132/428/224 380/215/371 +f 193/431/374 26/20/347 191/422/362 381/216/375 +f 191/422/362 73/120/360 286/432/376 381/216/375 +f 286/432/376 97/62/368 285/430/373 381/216/375 +f 285/430/373 74/123/372 193/431/374 381/216/375 +f 192/420/358 15/38/132 125/433/131 382/217/377 +f 125/433/131 40/121/126 283/427/369 382/217/377 +f 283/427/369 97/62/368 286/432/376 382/217/377 +f 286/432/376 73/120/360 192/420/358 382/217/377 +f 134/434/196 7/13/195 139/435/277 383/218/378 +f 139/435/277 47/125/282 288/436/379 383/218/378 +f 288/436/379 98/63/380 287/437/381 383/218/378 +f 287/437/381 44/124/198 134/434/196 383/218/378 +f 140/438/287 19/37/268 188/414/352 384/219/382 +f 188/414/352 71/118/350 289/439/383 384/219/382 +f 289/439/383 98/63/380 288/436/379 384/219/382 +f 288/436/379 47/125/282 140/438/287 384/219/382 +f 187/412/348 26/20/347 193/431/374 385/220/384 +f 193/431/374 74/123/372 290/440/385 385/220/384 +f 290/440/385 98/63/380 289/439/383 385/220/384 +f 289/439/383 71/118/350 187/412/348 385/220/384 +f 194/429/370 17/39/204 133/441/203 386/221/386 +f 133/441/203 44/124/198 287/437/381 386/221/386 +f 287/437/381 98/63/380 290/440/385 386/221/386 +f 290/440/385 74/123/372 194/429/370 386/221/386 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/QuadSphere.obj.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/QuadSphere.obj.meta new file mode 100644 index 0000000..e6f931f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/QuadSphere.obj.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 137df3466902d424983627567b86735e +timeCreated: 1509062117 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 100002: QuadSphere_GEO + 400000: //RootNode + 400002: QuadSphere_GEO + 2300000: QuadSphere_GEO + 3300000: QuadSphere_GEO + 4300000: QuadSphere_GEO + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/SafetyRing_1m.obj b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/SafetyRing_1m.obj new file mode 100644 index 0000000..f2f51ff --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/SafetyRing_1m.obj @@ -0,0 +1,903 @@ +# This file uses centimeters as units for non-parametric coordinates. + +g default +v 1.048733 0.000000 -0.051529 +v 1.044942 0.000000 -0.102926 +v 1.038634 0.000000 -0.154075 +v 1.029823 0.000000 -0.204853 +v 1.018531 0.000000 -0.255137 +v 1.004786 0.000000 -0.304807 +v 0.988620 0.000000 -0.353743 +v 0.970072 0.000000 -0.401826 +v 0.949187 0.000000 -0.448941 +v 0.926016 0.000000 -0.494975 +v 0.900614 0.000000 -0.539816 +v 0.873042 0.000000 -0.583357 +v 0.843367 0.000000 -0.625492 +v 0.811660 0.000000 -0.666121 +v 0.777998 0.000000 -0.705145 +v 0.742461 0.000000 -0.742470 +v 0.705136 0.000000 -0.778006 +v 0.666112 0.000000 -0.811669 +v 0.625483 0.000000 -0.843376 +v 0.583348 0.000000 -0.873051 +v 0.539807 0.000000 -0.900623 +v 0.494966 0.000000 -0.926025 +v 0.448932 0.000000 -0.949196 +v 0.401817 0.000000 -0.970081 +v 0.353734 0.000000 -0.988629 +v 0.304798 0.000000 -1.004795 +v 0.255129 0.000000 -1.018541 +v 0.204845 0.000000 -1.029832 +v 0.154067 0.000000 -1.038643 +v 0.102918 0.000000 -1.044952 +v 0.051521 0.000000 -1.048743 +v -0.000000 0.000000 -1.050008 +v -0.051521 0.000000 -1.048743 +v -0.102918 0.000000 -1.044952 +v -0.154067 0.000000 -1.038643 +v -0.204845 0.000000 -1.029832 +v -0.255129 0.000000 -1.018540 +v -0.304799 0.000000 -1.004795 +v -0.353734 0.000000 -0.988629 +v -0.401817 0.000000 -0.970081 +v -0.448933 0.000000 -0.949196 +v -0.494966 0.000000 -0.926025 +v -0.539808 0.000000 -0.900623 +v -0.583349 0.000000 -0.873051 +v -0.625484 0.000000 -0.843376 +v -0.666113 0.000000 -0.811669 +v -0.705137 0.000000 -0.778006 +v -0.742462 0.000000 -0.742470 +v -0.777998 0.000000 -0.705145 +v -0.811661 0.000000 -0.666121 +v -0.843368 0.000000 -0.625492 +v -0.873043 0.000000 -0.583356 +v -0.900615 0.000000 -0.539815 +v -0.926017 0.000000 -0.494974 +v -0.949189 0.000000 -0.448940 +v -0.970073 0.000000 -0.401825 +v -0.988621 0.000000 -0.353742 +v -1.004787 0.000000 -0.304807 +v -1.018533 0.000000 -0.255137 +v -1.029824 0.000000 -0.204852 +v -1.038635 0.000000 -0.154075 +v -1.044944 0.000000 -0.102926 +v -1.048735 0.000000 -0.051529 +v -1.050000 0.000000 -0.000008 +v -1.048735 0.000000 0.051513 +v -1.044944 0.000000 0.102910 +v -1.038635 0.000000 0.154059 +v -1.029825 0.000000 0.204837 +v -1.018533 0.000000 0.255122 +v -1.004787 0.000000 0.304791 +v -0.988621 0.000000 0.353727 +v -0.970074 0.000000 0.401810 +v -0.949189 0.000000 0.448925 +v -0.926018 0.000000 0.494959 +v -0.900615 0.000000 0.539800 +v -0.873043 0.000000 0.583341 +v -0.843368 0.000000 0.625477 +v -0.811661 0.000000 0.666105 +v -0.777999 0.000000 0.705129 +v -0.742463 0.000000 0.742454 +v -0.705137 0.000000 0.777991 +v -0.666113 0.000000 0.811653 +v -0.625485 0.000000 0.843360 +v -0.583349 0.000000 0.873035 +v -0.539808 0.000000 0.900607 +v -0.494967 0.000000 0.926010 +v -0.448933 0.000000 0.949181 +v -0.401818 0.000000 0.970066 +v -0.353735 0.000000 0.988614 +v -0.304799 0.000000 1.004780 +v -0.255130 0.000000 1.018525 +v -0.204845 0.000000 1.029817 +v -0.154068 0.000000 1.038628 +v -0.102919 0.000000 1.044936 +v -0.051522 0.000000 1.048728 +v -0.000001 0.000000 1.049992 +v 0.051520 0.000000 1.048728 +v 0.102917 0.000000 1.044936 +v 0.154066 0.000000 1.038628 +v 0.204844 0.000000 1.029817 +v 0.255129 0.000000 1.018525 +v 0.304798 0.000000 1.004780 +v 0.353734 0.000000 0.988613 +v 0.401817 0.000000 0.970066 +v 0.448932 0.000000 0.949181 +v 0.494966 0.000000 0.926009 +v 0.539807 0.000000 0.900607 +v 0.583348 0.000000 0.873035 +v 0.625484 0.000000 0.843360 +v 0.666113 0.000000 0.811653 +v 0.705137 0.000000 0.777991 +v 0.742462 0.000000 0.742454 +v 0.777998 0.000000 0.705129 +v 0.811661 0.000000 0.666105 +v 0.843368 0.000000 0.625476 +v 0.873043 0.000000 0.583340 +v 0.900615 0.000000 0.539800 +v 0.926017 0.000000 0.494958 +v 0.949189 0.000000 0.448924 +v 0.970073 0.000000 0.401809 +v 0.988621 0.000000 0.353726 +v 1.004787 0.000000 0.304790 +v 1.018533 0.000000 0.255121 +v 1.029824 0.000000 0.204836 +v 1.038635 0.000000 0.154058 +v 1.044944 0.000000 0.102909 +v 1.048735 0.000000 0.051512 +v 1.050000 0.000000 -0.000009 +v -0.931746 0.000000 -0.185337 +v -0.939718 0.000000 -0.139395 +v -0.945425 0.000000 -0.093117 +v -0.948856 0.000000 -0.046615 +v -0.950000 0.000000 -0.000001 +v -0.948856 0.000000 0.046613 +v -0.945426 0.000000 0.093115 +v -0.939718 0.000000 0.139393 +v -0.931746 0.000000 0.185335 +v -0.921530 0.000000 0.230830 +v -0.909093 0.000000 0.275769 +v -0.894467 0.000000 0.320044 +v -0.877686 0.000000 0.363548 +v -0.858790 0.000000 0.406176 +v -0.837826 0.000000 0.447826 +v -0.814842 0.000000 0.488397 +v -0.789896 0.000000 0.527791 +v -0.763047 0.000000 0.565913 +v -0.734360 0.000000 0.602673 +v -0.703904 0.000000 0.637980 +v -0.671752 0.000000 0.671751 +v -0.637981 0.000000 0.703903 +v -0.602674 0.000000 0.734359 +v -0.565915 0.000000 0.763047 +v -0.527792 0.000000 0.789896 +v -0.488398 0.000000 0.814842 +v -0.447827 0.000000 0.837825 +v -0.406178 0.000000 0.858789 +v -0.363550 0.000000 0.877685 +v -0.320046 0.000000 0.894467 +v -0.275771 0.000000 0.909093 +v -0.230832 0.000000 0.921529 +v -0.185336 0.000000 0.931746 +v -0.139394 0.000000 0.939718 +v -0.093117 0.000000 0.945425 +v -0.046615 0.000000 0.948856 +v -0.000001 0.000000 0.950000 +v 0.046614 0.000000 0.948856 +v 0.093116 0.000000 0.945426 +v 0.139393 0.000000 0.939718 +v 0.185335 0.000000 0.931746 +v 0.230831 0.000000 0.921530 +v 0.275770 0.000000 0.909094 +v 0.320045 0.000000 0.894467 +v 0.363549 0.000000 0.877686 +v 0.406177 0.000000 0.858790 +v 0.447826 0.000000 0.837826 +v 0.488397 0.000000 0.814843 +v 0.527791 0.000000 0.789897 +v 0.565914 0.000000 0.763048 +v 0.602673 0.000000 0.734360 +v 0.637981 0.000000 0.703904 +v 0.671751 0.000000 0.671752 +v 0.703903 0.000000 0.637982 +v 0.734360 0.000000 0.602674 +v 0.763047 0.000000 0.565915 +v 0.789896 0.000000 0.527792 +v 0.814842 0.000000 0.488398 +v 0.837825 0.000000 0.447827 +v 0.858790 0.000000 0.406178 +v 0.877685 0.000000 0.363550 +v 0.894467 0.000000 0.320046 +v 0.909093 0.000000 0.275771 +v 0.921530 0.000000 0.230832 +v 0.931746 0.000000 0.185336 +v 0.939718 0.000000 0.139394 +v 0.945425 0.000000 0.093117 +v 0.948856 0.000000 0.046615 +v 0.950000 0.000000 0.000000 +v 0.948854 0.000000 -0.046614 +v 0.945424 0.000000 -0.093116 +v 0.939716 0.000000 -0.139393 +v 0.931745 0.000000 -0.185335 +v 0.921528 0.000000 -0.230830 +v 0.909092 0.000000 -0.275770 +v 0.894466 0.000000 -0.320045 +v 0.877684 0.000000 -0.363549 +v 0.858789 0.000000 -0.406177 +v 0.837824 0.000000 -0.447826 +v 0.814841 0.000000 -0.488397 +v 0.789895 0.000000 -0.527791 +v 0.763046 0.000000 -0.565914 +v 0.734359 0.000000 -0.602673 +v 0.703903 0.000000 -0.637980 +v 0.671751 0.000000 -0.671751 +v 0.637980 0.000000 -0.703903 +v 0.602673 0.000000 -0.734359 +v 0.565914 0.000000 -0.763047 +v 0.527791 0.000000 -0.789895 +v 0.488397 0.000000 -0.814842 +v 0.447826 0.000000 -0.837825 +v 0.406177 0.000000 -0.858789 +v 0.363549 0.000000 -0.877685 +v 0.320045 0.000000 -0.894466 +v 0.275770 0.000000 -0.909093 +v 0.230831 0.000000 -0.921529 +v 0.185336 0.000000 -0.931746 +v 0.139394 0.000000 -0.939717 +v 0.093116 0.000000 -0.945425 +v 0.046614 0.000000 -0.948856 +v -0.000000 0.000000 -0.950000 +v -0.046614 0.000000 -0.948856 +v -0.093116 0.000000 -0.945426 +v -0.139394 0.000000 -0.939718 +v -0.185336 0.000000 -0.931746 +v -0.230831 0.000000 -0.921530 +v -0.275770 0.000000 -0.909094 +v -0.320045 0.000000 -0.894467 +v -0.363549 0.000000 -0.877686 +v -0.406177 0.000000 -0.858790 +v -0.447827 0.000000 -0.837826 +v -0.488397 0.000000 -0.814843 +v -0.527792 0.000000 -0.789897 +v -0.565914 0.000000 -0.763048 +v -0.602673 0.000000 -0.734361 +v -0.637981 0.000000 -0.703905 +v -0.671751 0.000000 -0.671752 +v -0.703903 0.000000 -0.637982 +v -0.734360 0.000000 -0.602675 +v -0.763047 0.000000 -0.565915 +v -0.789896 0.000000 -0.527793 +v -0.814842 0.000000 -0.488399 +v -0.837825 0.000000 -0.447828 +v -0.858790 0.000000 -0.406178 +v -0.877685 0.000000 -0.363550 +v -0.894467 0.000000 -0.320046 +v -0.909093 0.000000 -0.275772 +v -0.921530 0.000000 -0.230832 +vt 0.242188 1.000000 +vt 0.234375 1.000000 +vt 0.226562 1.000000 +vt 0.218750 1.000000 +vt 0.210938 1.000000 +vt 0.203125 1.000000 +vt 0.195313 1.000000 +vt 0.187500 1.000000 +vt 0.179688 1.000000 +vt 0.171875 1.000000 +vt 0.164062 1.000000 +vt 0.156250 1.000000 +vt 0.148438 1.000000 +vt 0.140625 1.000000 +vt 0.132813 1.000000 +vt 0.125000 1.000000 +vt 0.117188 1.000000 +vt 0.109375 1.000000 +vt 0.101563 1.000000 +vt 0.093750 1.000000 +vt 0.085938 1.000000 +vt 0.078125 1.000000 +vt 0.070312 1.000000 +vt 0.062500 1.000000 +vt 0.054688 1.000000 +vt 0.046875 1.000000 +vt 0.039063 1.000000 +vt 0.031250 1.000000 +vt 0.023438 1.000000 +vt 0.015625 1.000000 +vt 0.007813 1.000000 +vt 0.000000 1.000000 +vt 0.992188 1.000000 +vt 0.984375 1.000000 +vt 0.976562 1.000000 +vt 0.968750 1.000000 +vt 0.960937 1.000000 +vt 0.953125 1.000000 +vt 0.945312 1.000000 +vt 0.937500 1.000000 +vt 0.929688 1.000000 +vt 0.921875 1.000000 +vt 0.914063 1.000000 +vt 0.906250 1.000000 +vt 0.898438 1.000000 +vt 0.890625 1.000000 +vt 0.882813 1.000000 +vt 0.875000 1.000000 +vt 0.867187 1.000000 +vt 0.859375 1.000000 +vt 0.851562 1.000000 +vt 0.843750 1.000000 +vt 0.835938 1.000000 +vt 0.828125 1.000000 +vt 0.820312 1.000000 +vt 0.812500 1.000000 +vt 0.804688 1.000000 +vt 0.796875 1.000000 +vt 0.789063 1.000000 +vt 0.781250 1.000000 +vt 0.773438 1.000000 +vt 0.765625 1.000000 +vt 0.757812 1.000000 +vt 0.750000 1.000000 +vt 0.742187 1.000000 +vt 0.734375 1.000000 +vt 0.726563 1.000000 +vt 0.718750 1.000000 +vt 0.710938 1.000000 +vt 0.703125 1.000000 +vt 0.695313 1.000000 +vt 0.687500 1.000000 +vt 0.679688 1.000000 +vt 0.671875 1.000000 +vt 0.664063 1.000000 +vt 0.656250 1.000000 +vt 0.648438 1.000000 +vt 0.640625 1.000000 +vt 0.632813 1.000000 +vt 0.625000 1.000000 +vt 0.617188 1.000000 +vt 0.609375 1.000000 +vt 0.601563 1.000000 +vt 0.593750 1.000000 +vt 0.585938 1.000000 +vt 0.578125 1.000000 +vt 0.570313 1.000000 +vt 0.562500 1.000000 +vt 0.554688 1.000000 +vt 0.546875 1.000000 +vt 0.539063 1.000000 +vt 0.531250 1.000000 +vt 0.523438 1.000000 +vt 0.515625 1.000000 +vt 0.507813 1.000000 +vt 0.500000 1.000000 +vt 0.492188 1.000000 +vt 0.484375 1.000000 +vt 0.476563 1.000000 +vt 0.468750 1.000000 +vt 0.460938 1.000000 +vt 0.453125 1.000000 +vt 0.445313 1.000000 +vt 0.437500 1.000000 +vt 0.429688 1.000000 +vt 0.421875 1.000000 +vt 0.414063 1.000000 +vt 0.406250 1.000000 +vt 0.398438 1.000000 +vt 0.390625 1.000000 +vt 0.382812 1.000000 +vt 0.375000 1.000000 +vt 0.367188 1.000000 +vt 0.359375 1.000000 +vt 0.351563 1.000000 +vt 0.343750 1.000000 +vt 0.335938 1.000000 +vt 0.328125 1.000000 +vt 0.320313 1.000000 +vt 0.312500 1.000000 +vt 0.304688 1.000000 +vt 0.296875 1.000000 +vt 0.289063 1.000000 +vt 0.281250 1.000000 +vt 0.273438 1.000000 +vt 0.265625 1.000000 +vt 0.257813 1.000000 +vt 0.250000 1.000000 +vt 0.781250 0.000000 +vt 0.773438 0.000000 +vt 0.765625 0.000000 +vt 0.757813 0.000000 +vt 0.750000 0.000000 +vt 0.742188 0.000000 +vt 0.734375 0.000000 +vt 0.726563 0.000000 +vt 0.718750 0.000000 +vt 0.710938 0.000000 +vt 0.703125 0.000000 +vt 0.695313 0.000000 +vt 0.687500 0.000000 +vt 0.679687 0.000000 +vt 0.671875 0.000000 +vt 0.664063 0.000000 +vt 0.656250 0.000000 +vt 0.648438 0.000000 +vt 0.640625 0.000000 +vt 0.632813 -0.000000 +vt 0.625000 0.000000 +vt 0.617188 0.000000 +vt 0.609375 0.000000 +vt 0.601563 0.000000 +vt 0.593750 0.000000 +vt 0.585938 0.000000 +vt 0.578125 0.000000 +vt 0.570313 0.000000 +vt 0.562500 0.000000 +vt 0.554688 0.000000 +vt 0.546875 0.000000 +vt 0.539063 0.000000 +vt 0.531250 0.000000 +vt 0.523438 0.000000 +vt 0.515625 0.000000 +vt 0.507813 0.000000 +vt 0.500000 0.000000 +vt 0.492188 0.000000 +vt 0.484375 0.000000 +vt 0.476563 0.000000 +vt 0.468750 0.000000 +vt 0.460938 0.000000 +vt 0.453125 0.000000 +vt 0.445313 0.000000 +vt 0.437500 0.000000 +vt 0.429688 0.000000 +vt 0.421875 0.000000 +vt 0.414063 0.000000 +vt 0.406250 0.000000 +vt 0.398438 0.000000 +vt 0.390625 0.000000 +vt 0.382813 0.000000 +vt 0.375000 0.000000 +vt 0.367188 0.000000 +vt 0.359375 0.000000 +vt 0.351563 0.000000 +vt 0.343750 0.000000 +vt 0.335938 0.000000 +vt 0.328125 0.000000 +vt 0.320313 0.000000 +vt 0.312500 0.000000 +vt 0.304688 0.000000 +vt 0.296875 0.000000 +vt 0.289062 0.000000 +vt 0.281250 0.000000 +vt 0.273438 0.000000 +vt 0.265625 0.000000 +vt 0.257813 0.000000 +vt 0.250000 0.000000 +vt 0.242188 0.000000 +vt 0.234375 0.000000 +vt 0.226562 0.000000 +vt 0.218750 0.000000 +vt 0.210938 0.000000 +vt 0.203125 0.000000 +vt 0.195313 0.000000 +vt 0.187500 0.000000 +vt 0.179688 0.000000 +vt 0.171875 0.000000 +vt 0.164063 0.000000 +vt 0.156250 0.000000 +vt 0.148437 0.000000 +vt 0.140625 0.000000 +vt 0.132813 0.000000 +vt 0.125000 0.000000 +vt 0.117188 0.000000 +vt 0.109375 0.000000 +vt 0.101563 0.000000 +vt 0.093750 0.000000 +vt 0.085938 0.000000 +vt 0.078125 0.000000 +vt 0.070312 0.000000 +vt 0.062500 0.000000 +vt 0.054688 0.000000 +vt 0.046875 0.000000 +vt 0.039063 0.000000 +vt 0.031250 0.000000 +vt 0.023438 0.000000 +vt 0.015625 0.000000 +vt 0.007813 0.000000 +vt 1.000000 0.000000 +vt 0.992188 0.000000 +vt 0.984375 0.000000 +vt 0.976563 0.000000 +vt 0.968750 -0.000000 +vt 0.960938 -0.000000 +vt 0.953125 -0.000000 +vt 0.945313 -0.000000 +vt 0.937500 0.000000 +vt 0.929688 -0.000000 +vt 0.921875 0.000000 +vt 0.914063 0.000000 +vt 0.906250 0.000000 +vt 0.898438 0.000000 +vt 0.890625 0.000000 +vt 0.882813 0.000000 +vt 0.875000 0.000000 +vt 0.867187 0.000000 +vt 0.859375 0.000000 +vt 0.851563 0.000000 +vt 0.843750 0.000000 +vt 0.835937 0.000000 +vt 0.828125 0.000000 +vt 0.820312 0.000000 +vt 0.812500 0.000000 +vt 0.804688 -0.000000 +vt 0.796875 0.000000 +vt 0.789063 0.000000 +vt 0.000000 0.000000 +vt 1.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +s 1 +g SafetyRing_1m_GEO +f 130/130/1 129/129/2 60/60/3 61/61/4 +f 131/131/5 130/130/1 61/61/4 62/62/6 +f 132/132/7 131/131/5 62/62/6 63/63/8 +f 133/133/9 132/132/7 63/63/8 64/64/10 +f 134/134/11 133/133/9 64/64/10 65/65/12 +f 135/135/13 134/134/11 65/65/12 66/66/14 +f 136/136/15 135/135/13 66/66/14 67/67/16 +f 137/137/17 136/136/15 67/67/16 68/68/18 +f 138/138/19 137/137/17 68/68/18 69/69/20 +f 139/139/21 138/138/19 69/69/20 70/70/22 +f 140/140/23 139/139/21 70/70/22 71/71/24 +f 141/141/25 140/140/23 71/71/24 72/72/26 +f 142/142/27 141/141/25 72/72/26 73/73/28 +f 143/143/29 142/142/27 73/73/28 74/74/30 +f 144/144/31 143/143/29 74/74/30 75/75/32 +f 145/145/33 144/144/31 75/75/32 76/76/34 +f 146/146/35 145/145/33 76/76/34 77/77/36 +f 147/147/37 146/146/35 77/77/36 78/78/38 +f 148/148/39 147/147/37 78/78/38 79/79/40 +f 149/149/41 148/148/39 79/79/40 80/80/42 +f 150/150/43 149/149/41 80/80/42 81/81/44 +f 151/151/45 150/150/43 81/81/44 82/82/46 +f 152/152/47 151/151/45 82/82/46 83/83/48 +f 153/153/49 152/152/47 83/83/48 84/84/50 +f 154/154/51 153/153/49 84/84/50 85/85/52 +f 155/155/53 154/154/51 85/85/52 86/86/54 +f 156/156/55 155/155/53 86/86/54 87/87/56 +f 157/157/57 156/156/55 87/87/56 88/88/58 +f 158/158/59 157/157/57 88/88/58 89/89/60 +f 159/159/61 158/158/59 89/89/60 90/90/62 +f 160/160/63 159/159/61 90/90/62 91/91/64 +f 161/161/65 160/160/63 91/91/64 92/92/66 +f 162/162/67 161/161/65 92/92/66 93/93/68 +f 163/163/69 162/162/67 93/93/68 94/94/70 +f 164/164/71 163/163/69 94/94/70 95/95/72 +f 165/165/73 164/164/71 95/95/72 96/96/74 +f 166/166/75 165/165/73 96/96/74 97/97/76 +f 167/167/77 166/166/75 97/97/76 98/98/78 +f 168/168/79 167/167/77 98/98/78 99/99/80 +f 169/169/81 168/168/79 99/99/80 100/100/82 +f 170/170/83 169/169/81 100/100/82 101/101/84 +f 171/171/85 170/170/83 101/101/84 102/102/86 +f 172/172/87 171/171/85 102/102/86 103/103/88 +f 173/173/89 172/172/87 103/103/88 104/104/90 +f 174/174/91 173/173/89 104/104/90 105/105/92 +f 175/175/93 174/174/91 105/105/92 106/106/94 +f 176/176/95 175/175/93 106/106/94 107/107/96 +f 177/177/97 176/176/95 107/107/96 108/108/98 +f 178/178/99 177/177/97 108/108/98 109/109/100 +f 179/179/101 178/178/99 109/109/100 110/110/102 +f 180/180/103 179/179/101 110/110/102 111/111/104 +f 181/181/105 180/180/103 111/111/104 112/112/106 +f 182/182/107 181/181/105 112/112/106 113/113/108 +f 183/183/109 182/182/107 113/113/108 114/114/110 +f 184/184/111 183/183/109 114/114/110 115/115/112 +f 185/185/113 184/184/111 115/115/112 116/116/114 +f 186/186/115 185/185/113 116/116/114 117/117/116 +f 187/187/117 186/186/115 117/117/116 118/118/118 +f 188/188/119 187/187/117 118/118/118 119/119/120 +f 189/189/121 188/188/119 119/119/120 120/120/122 +f 190/190/123 189/189/121 120/120/122 121/121/124 +f 191/191/125 190/190/123 121/121/124 122/122/126 +f 192/192/127 191/191/125 122/122/126 123/123/128 +f 193/193/129 192/192/127 123/123/128 124/124/130 +f 194/194/131 193/193/129 124/124/130 125/125/132 +f 195/195/133 194/194/131 125/125/132 126/126/134 +f 196/196/135 195/195/133 126/126/134 127/127/136 +f 197/197/137 196/196/135 127/127/136 128/128/138 +f 198/198/139 197/197/137 128/128/138 1/1/140 +f 199/199/141 198/198/139 1/1/140 2/2/142 +f 200/200/143 199/199/141 2/2/142 3/3/144 +f 201/201/145 200/200/143 3/3/144 4/4/146 +f 202/202/147 201/201/145 4/4/146 5/5/148 +f 203/203/149 202/202/147 5/5/148 6/6/150 +f 204/204/151 203/203/149 6/6/150 7/7/152 +f 205/205/153 204/204/151 7/7/152 8/8/154 +f 206/206/155 205/205/153 8/8/154 9/9/156 +f 207/207/157 206/206/155 9/9/156 10/10/158 +f 208/208/159 207/207/157 10/10/158 11/11/160 +f 209/209/161 208/208/159 11/11/160 12/12/162 +f 210/210/163 209/209/161 12/12/162 13/13/164 +f 211/211/165 210/210/163 13/13/164 14/14/166 +f 212/212/167 211/211/165 14/14/166 15/15/168 +f 213/213/169 212/212/167 15/15/168 16/16/170 +f 214/214/171 213/213/169 16/16/170 17/17/172 +f 215/215/173 214/214/171 17/17/172 18/18/174 +f 216/216/175 215/215/173 18/18/174 19/19/176 +f 217/217/177 216/216/175 19/19/176 20/20/178 +f 218/218/179 217/217/177 20/20/178 21/21/180 +f 219/219/181 218/218/179 21/21/180 22/22/182 +f 220/220/183 219/219/181 22/22/182 23/23/184 +f 221/221/185 220/220/183 23/23/184 24/24/186 +f 222/222/187 221/221/185 24/24/186 25/25/188 +f 223/223/189 222/222/187 25/25/188 26/26/190 +f 224/224/191 223/223/189 26/26/190 27/27/192 +f 225/225/193 224/224/191 27/27/192 28/28/194 +f 226/226/195 225/225/193 28/28/194 29/29/196 +f 227/227/197 226/226/195 29/29/196 30/30/198 +f 228/228/199 227/227/197 30/30/198 31/31/200 +f 229/257/201 228/228/199 31/31/200 32/32/202 +f 230/230/203 229/229/201 32/258/202 33/33/204 +f 231/231/205 230/230/203 33/33/204 34/34/206 +f 232/232/207 231/231/205 34/34/206 35/35/208 +f 233/233/209 232/232/207 35/35/208 36/36/210 +f 234/234/211 233/233/209 36/36/210 37/37/212 +f 235/235/213 234/234/211 37/37/212 38/38/214 +f 236/236/215 235/235/213 38/38/214 39/39/216 +f 237/237/217 236/236/215 39/39/216 40/40/218 +f 238/238/219 237/237/217 40/40/218 41/41/220 +f 239/239/221 238/238/219 41/41/220 42/42/222 +f 240/240/223 239/239/221 42/42/222 43/43/224 +f 241/241/225 240/240/223 43/43/224 44/44/226 +f 242/242/227 241/241/225 44/44/226 45/45/228 +f 243/243/229 242/242/227 45/45/228 46/46/230 +f 244/244/231 243/243/229 46/46/230 47/47/232 +f 245/245/233 244/244/231 47/47/232 48/48/234 +f 246/246/235 245/245/233 48/48/234 49/49/236 +f 247/247/237 246/246/235 49/49/236 50/50/238 +f 248/248/239 247/247/237 50/50/238 51/51/240 +f 249/249/241 248/248/239 51/51/240 52/52/242 +f 250/250/243 249/249/241 52/52/242 53/53/244 +f 251/251/245 250/250/243 53/53/244 54/54/246 +f 252/252/247 251/251/245 54/54/246 55/55/248 +f 253/253/249 252/252/247 55/55/248 56/56/250 +f 254/254/251 253/253/249 56/56/250 57/57/252 +f 255/255/253 254/254/251 57/57/252 58/58/254 +f 256/256/255 255/255/253 58/58/254 59/59/256 +f 129/129/2 256/256/255 59/59/256 60/60/3 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/SafetyRing_1m.obj.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/SafetyRing_1m.obj.meta new file mode 100644 index 0000000..17816ce --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/SafetyRing_1m.obj.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: e49edac1fa42d4e8290c88dfb8cb4acf +timeCreated: 1510963109 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 100002: SafetyRing_1m_GEO + 400000: //RootNode + 400002: SafetyRing_1m_GEO + 2300000: SafetyRing_1m_GEO + 3300000: SafetyRing_1m_GEO + 4300000: SafetyRing_1m_GEO + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/TriSphere.obj b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/TriSphere.obj new file mode 100644 index 0000000..a3c914f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/TriSphere.obj @@ -0,0 +1,232 @@ +# This file uses centimeters as units for non-parametric coordinates. + +g default +v 0.425273 -0.000000 0.262835 +v 0.425275 0.000000 -0.262834 +v -0.425276 0.000000 -0.262834 +v -0.425275 -0.000000 0.262835 +v -0.000001 0.262859 -0.425315 +v -0.000001 -0.262859 -0.425315 +v -0.000000 -0.262859 0.425315 +v -0.000000 0.262859 0.425315 +v -0.262860 0.425316 0.000001 +v 0.262859 0.425316 0.000001 +v 0.262859 -0.425316 0.000001 +v -0.262860 -0.425316 0.000001 +v 0.000153 -0.499999 0.000003 +v 0.000153 0.499999 0.000003 +v -0.154530 0.404400 0.250119 +v -0.154530 -0.404400 0.250119 +v -0.249938 -0.154345 0.404542 +v -0.249938 0.154345 0.404542 +v -0.154531 -0.404400 -0.250118 +v -0.154531 0.404400 -0.250118 +v -0.249938 0.154345 -0.404541 +v -0.249938 -0.154346 -0.404541 +v -0.404460 -0.250014 0.154426 +v -0.404460 -0.250014 -0.154424 +v -0.499993 -0.000153 -0.000306 +v -0.404460 0.250014 -0.154424 +v -0.404460 0.250014 0.154426 +v 0.154529 -0.404400 -0.250118 +v 0.154529 0.404400 -0.250118 +v 0.000306 -0.000153 -0.499993 +v 0.249937 -0.154346 -0.404541 +v 0.249937 0.154346 -0.404541 +v 0.154529 0.404400 0.250119 +v 0.154529 -0.404399 0.250119 +v 0.249936 -0.154345 0.404541 +v -0.000307 -0.000153 0.499993 +v 0.249936 0.154345 0.404541 +v 0.404459 -0.250014 -0.154425 +v 0.404458 -0.250013 0.154426 +v 0.499993 0.000154 0.000311 +v 0.404458 0.250013 0.154426 +v 0.404459 0.250014 -0.154425 +vt 0.194273 0.259786 +vt 0.368974 0.259786 +vt 0.543675 0.259786 +vt 0.718376 0.259786 +vt 0.893078 0.259786 +vt 0.106922 0.419929 +vt 0.281624 0.419929 +vt 0.456325 0.419929 +vt 0.631026 0.419929 +vt 0.805727 0.419929 +vt 0.980428 0.419929 +vt 0.019572 0.580071 +vt 0.194273 0.580071 +vt 0.368974 0.580071 +vt 0.543675 0.580071 +vt 0.718376 0.580071 +vt 0.893078 0.580071 +vt 0.106922 0.740214 +vt 0.281624 0.740214 +vt 0.456325 0.740214 +vt 0.631026 0.740214 +vt 0.805727 0.740214 +vt 0.849402 0.339857 +vt 0.762052 0.339857 +vt 0.325299 0.660143 +vt 0.412649 0.660143 +vt 0.456325 0.580071 +vt 0.587351 0.339857 +vt 0.674701 0.339857 +vt 0.543675 0.419929 +vt 0.500000 0.500000 +vt 0.150598 0.339857 +vt 0.936753 0.339857 +vt 0.281624 0.580071 +vt 0.237948 0.500000 +vt 0.194273 0.419929 +vt 0.412649 0.339857 +vt 0.500000 0.339857 +vt 0.325299 0.339857 +vt 0.237948 0.339857 +vt 0.368974 0.419929 +vt 0.325299 0.500000 +vt 0.412649 0.500000 +vt 0.893077 0.419929 +vt 0.150598 0.660143 +vt 0.237948 0.660143 +vt 0.150598 0.500000 +vt 0.063247 0.500000 +vt 0.936753 0.500000 +vt 0.106922 0.580071 +vt 0.587351 0.660143 +vt 0.500000 0.660143 +vt 0.718376 0.419929 +vt 0.674701 0.500000 +vt 0.587351 0.500000 +vt 0.631026 0.580071 +vt 0.849402 0.500000 +vt 0.762052 0.500000 +vt 0.805727 0.580071 +vt 0.762052 0.660143 +vt 0.674701 0.660143 +vt 0.849402 0.660143 +vt 0.063247 0.660143 +vn 0.850795 -0.000038 -0.525497 +vn 0.808993 0.499954 -0.309155 +vn 1.000000 0.000102 0.000142 +vn 0.850539 -0.000038 0.525912 +vn 0.809004 -0.500004 0.309045 +vn 0.499947 0.308796 0.809134 +vn 0.500027 -0.308797 0.809084 +vn 0.808892 0.500114 0.309162 +vn -0.000077 0.525581 -0.850743 +vn 0.500166 0.309031 -0.808909 +vn 0.000202 -0.000068 -1.000000 +vn 0.525743 0.850644 0.000002 +vn 0.309132 0.808856 -0.500188 +vn 0.809105 -0.499844 -0.309038 +vn 0.500246 -0.309032 -0.808859 +vn -0.850794 0.000038 0.525500 +vn -0.809105 0.499843 0.309041 +vn -1.000000 -0.000101 -0.000135 +vn -0.850543 0.000038 -0.525906 +vn -0.808893 -0.500113 -0.309158 +vn -0.499947 0.308797 -0.809134 +vn -0.809006 0.500004 -0.309041 +vn -0.000076 -0.525785 -0.850618 +vn -0.309133 -0.808906 -0.500108 +vn -0.500027 -0.308798 -0.809084 +vn 0.000077 -0.525783 0.850619 +vn -0.000202 -0.000068 1.000000 +vn -0.500246 -0.309031 0.808860 +vn -0.808993 -0.499953 0.309158 +vn -0.500166 0.309030 0.808910 +vn -0.309133 0.808906 -0.500108 +vn 0.309132 -0.808856 -0.500188 +vn -0.309134 -0.808904 0.500112 +vn 0.309136 -0.808853 0.500192 +vn 0.000076 0.525580 0.850744 +vn 0.309136 0.808853 0.500192 +vn -0.309134 0.808904 0.500112 +vn 0.000067 1.000000 0.000002 +vn -0.525538 0.850770 -0.000000 +vn 0.000068 -1.000000 0.000003 +vn 0.525743 -0.850644 0.000002 +vn -0.525538 -0.850770 -0.000000 +s 1 +g TriSphere_GEO +f 2/17/1 42/62/2 40/59/3 +f 1/16/4 39/58/5 40/59/3 +f 1/16/4 37/56/6 35/54/7 +f 1/16/4 35/54/7 39/58/5 +f 1/16/4 41/61/8 37/56/6 +f 5/13/9 32/50/10 30/47/11 +f 10/18/12 42/63/2 29/45/13 +f 2/17/1 38/57/14 31/49/15 +f 4/8/16 27/43/17 25/41/18 +f 3/7/19 24/39/20 25/41/18 +f 5/13/9 30/47/11 21/35/21 +f 3/7/19 26/42/22 21/35/21 +f 6/6/23 19/32/24 22/36/25 +f 7/9/26 36/55/27 17/30/28 +f 4/8/16 23/38/29 17/30/28 +f 4/8/16 18/31/30 27/43/17 +f 5/13/9 20/34/31 29/46/13 +f 6/11/23 28/44/32 19/33/24 +f 7/9/26 16/29/33 34/53/34 +f 8/15/35 33/52/36 15/27/37 +f 15/27/37 14/26/38 9/14/39 +f 14/26/38 33/52/36 10/20/12 +f 15/27/37 33/52/36 14/26/38 +f 34/53/34 13/24/40 11/10/41 +f 13/24/40 16/29/33 12/4/42 +f 34/53/34 16/29/33 13/24/40 +f 19/33/24 13/23/40 12/5/42 +f 13/23/40 28/44/32 11/10/41 +f 19/33/24 28/44/32 13/23/40 +f 29/46/13 14/25/38 10/19/12 +f 14/25/38 20/34/31 9/14/39 +f 29/46/13 20/34/31 14/25/38 +f 27/43/17 15/27/37 9/14/39 +f 15/27/37 18/31/30 8/15/35 +f 27/43/17 18/31/30 15/27/37 +f 17/30/28 16/28/33 7/9/26 +f 16/28/33 23/38/29 12/3/42 +f 17/30/28 23/38/29 16/28/33 +f 17/30/28 18/31/30 4/8/16 +f 18/31/30 36/55/27 8/15/35 +f 17/30/28 36/55/27 18/31/30 +f 22/36/25 24/40/20 3/7/19 +f 24/40/20 19/32/24 12/1/42 +f 22/36/25 19/32/24 24/40/20 +f 21/35/21 20/34/31 5/13/9 +f 20/34/31 26/42/22 9/14/39 +f 21/35/21 26/42/22 20/34/31 +f 21/35/21 22/36/25 3/7/19 +f 22/36/25 30/47/11 6/6/23 +f 21/35/21 30/47/11 22/36/25 +f 25/41/18 23/37/29 4/8/16 +f 23/37/29 24/39/20 12/2/42 +f 25/41/18 24/39/20 23/37/29 +f 25/41/18 26/42/22 3/7/19 +f 26/42/22 27/43/17 9/14/39 +f 25/41/18 27/43/17 26/42/22 +f 31/49/15 28/44/32 6/11/23 +f 28/44/32 38/57/14 11/10/41 +f 31/49/15 38/57/14 28/44/32 +f 29/45/13 32/50/10 5/13/9 +f 32/50/10 42/63/2 2/12/1 +f 29/45/13 42/63/2 32/50/10 +f 30/47/11 31/48/15 6/6/23 +f 31/48/15 32/50/10 2/12/1 +f 30/47/11 32/50/10 31/48/15 +f 37/56/6 33/51/36 8/15/35 +f 33/51/36 41/61/8 10/21/12 +f 37/56/6 41/61/8 33/51/36 +f 39/58/5 34/53/34 11/10/41 +f 34/53/34 35/54/7 7/9/26 +f 39/58/5 35/54/7 34/53/34 +f 35/54/7 36/55/27 7/9/26 +f 36/55/27 37/56/6 8/15/35 +f 35/54/7 37/56/6 36/55/27 +f 40/59/3 38/57/14 2/17/1 +f 38/57/14 39/58/5 11/10/41 +f 40/59/3 39/58/5 38/57/14 +f 40/59/3 41/60/8 1/16/4 +f 41/60/8 42/62/2 10/22/12 +f 40/59/3 42/62/2 41/60/8 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/TriSphere.obj.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/TriSphere.obj.meta new file mode 100644 index 0000000..717f41f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Models/HelloVR/TriSphere.obj.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 18ea1f717668b466d9b043f460af69d1 +timeCreated: 1509062228 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 100002: TriSphere_GEO + 400000: //RootNode + 400002: TriSphere_GEO + 2300000: TriSphere_GEO + 3300000: TriSphere_GEO + 4300000: TriSphere_GEO + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs.meta new file mode 100644 index 0000000..5c68c22 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2df43a09cf9714acd85487c89c6371fd +folderAsset: yes +timeCreated: 1479319880 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoInputManager.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoInputManager.prefab new file mode 100644 index 0000000..7b99e0c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoInputManager.prefab @@ -0,0 +1,295 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &152284 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22412244} + - component: {fileID: 22228636} + - component: {fileID: 11450286} + m_Layer: 5 + m_Name: MessageText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &156300 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22450954} + - component: {fileID: 22233428} + - component: {fileID: 11437516} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162814 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 22484034} + - component: {fileID: 22358712} + - component: {fileID: 11424358} + m_Layer: 5 + m_Name: MessageCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195966 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 452846} + - component: {fileID: 11499020} + - component: {fileID: 114845099540541430} + m_Layer: 0 + m_Name: DemoInputManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &452846 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195966} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.75, z: -0.47} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22484034} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &11424358 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162814} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!114 &11437516 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 156300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11450286 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152284} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Messages will appear here at runtime. +--- !u!114 &11499020 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ddd25f1308577456cbaa207901961126, type: 3} + m_Name: + m_EditorClassIdentifier: + controllerMain: {fileID: 0} + controllerPointers: + - {fileID: 0} + reticlePointer: {fileID: 0} + messageCanvas: {fileID: 0} + messageText: {fileID: 0} + gvrEmulatedPlatformType: 0 +--- !u!222 &22228636 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152284} +--- !u!222 &22233428 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 156300} +--- !u!223 &22358712 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162814} + 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!224 &22412244 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152284} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22484034} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22450954 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 156300} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22484034} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22484034 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162814} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_Children: + - {fileID: 22450954} + - {fileID: 22412244} + m_Father: {fileID: 452846} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: -0.24} + m_SizeDelta: {x: 450, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 195966} + m_IsPrefabParent: 1 +--- !u!114 &114845099540541430 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195966} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ae2d286fc7c3e427bbde238c0ebb970b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_launchVrHomeButton: {fileID: 0} + m_demoInputManager: {fileID: 11499020} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoInputManager.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoInputManager.prefab.meta new file mode 100644 index 0000000..ffb4544 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoInputManager.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8524bbe5e592a42dc9251484a73c9c7f +timeCreated: 1479274754 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoSceneManager.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoSceneManager.prefab new file mode 100644 index 0000000..0f795b2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoSceneManager.prefab @@ -0,0 +1,67 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 632161999} + m_IsPrefabParent: 1 +--- !u!1 &632161999 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 1509313747} + - component: {fileID: 1980163928} + - component: {fileID: 114055343288806878} + m_Layer: 0 + m_Name: DemoSceneManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1509313747 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 632161999} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1980163928 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 632161999} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1bec9ea3efe7849ffae666549aca3cad, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &114055343288806878 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 632161999} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 94f5d450d1bd94c97b1dc8109b633ac0, type: 3} + m_Name: + m_EditorClassIdentifier: + safetyRing: {fileID: 0} + enableDebugLog: 0 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoSceneManager.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoSceneManager.prefab.meta new file mode 100644 index 0000000..5d24d54 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/DemoSceneManager.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 87c35d808850c410ca0e398a8da84e68 +timeCreated: 1485218930 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard.meta new file mode 100644 index 0000000..cddb712 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a2dbfca79ae443dea4cc6f01e111e4f +folderAsset: yes +timeCreated: 1478817583 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard/KeyboardDelegateExample.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard/KeyboardDelegateExample.prefab new file mode 100644 index 0000000..68093c2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard/KeyboardDelegateExample.prefab @@ -0,0 +1,55 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 909512790} + m_IsPrefabParent: 1 +--- !u!1 &909512790 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1788732883} + - 114: {fileID: 2044164019} + m_Layer: 0 + m_Name: KeyboardDelegateExample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1788732883 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 909512790} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.39, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &2044164019 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 909512790} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff12693eea0a446d0a2183f2ffe9c711, type: 3} + m_Name: + m_EditorClassIdentifier: + KeyboardText: {fileID: 0} + UpdateButton: {fileID: 0} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard/KeyboardDelegateExample.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard/KeyboardDelegateExample.prefab.meta new file mode 100644 index 0000000..27197d9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/Keyboard/KeyboardDelegateExample.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b7eeb268f8424f809fc34c33b2a6820 +timeCreated: 1479081998 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo.meta new file mode 100644 index 0000000..c9dc982 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 52b7479757bdb4bca9e5036b244c3c93 +folderAsset: yes +timeCreated: 1471470468 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/MenuBar.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/MenuBar.prefab new file mode 100644 index 0000000..bd3d144 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/MenuBar.prefab @@ -0,0 +1,507 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1596676483} + m_IsPrefabParent: 1 +--- !u!1 &174288875 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1225916774} + - 222: {fileID: 1300329510} + - 114: {fileID: 1685894217} + - 114: {fileID: 169017167} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1590874943 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 863570889} + - 222: {fileID: 1868668733} + - 114: {fileID: 1488426162} + m_Layer: 5 + m_Name: VideoSize + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1617223201 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 294705724} + - 222: {fileID: 512967037} + - 114: {fileID: 694042128} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1596676483 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 824776444} + - 223: {fileID: 1755358597} + - 114: {fileID: 80762351} + - 114: {fileID: 421771429} + - 225: {fileID: 1092422400} + - 114: {fileID: 1960324903} + - 114: {fileID: 1336403911} + - 114: {fileID: 2043292222} + - 114: {fileID: 1516951237} + m_Layer: 5 + m_Name: MenuBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &80762351 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!114 &1516951237 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7304a3fe3b19a4eb8ba4e4b21008b2f0, type: 3} + m_Name: + m_EditorClassIdentifier: + menuObjects: + - {fileID: 0} + - {fileID: 0} +--- !u!114 &1960324903 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 499621f70ffb54e8bad37f748aed85f2, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1336403911 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9e216f327e132794b8e02093522ae84c, type: 3} + m_Name: + m_EditorClassIdentifier: + OnAppUp: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GVR.Input.ButtonEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + OnAppDown: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2043292222} + m_MethodName: Toggle + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: GVR.Input.ButtonEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null +--- !u!114 &169017167 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174288875} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1685894217} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: ShowMainMenu + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &421771429 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2043292222 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1b8f07442700094898145567ef1f203, type: 3} + m_Name: + m_EditorClassIdentifier: + OnToggleOn: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1516951237} + m_MethodName: ShowMenu + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + OnToggleOff: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1516951237} + m_MethodName: HideMenu + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + InitialState: 1 + RaiseEventForInitialState: 0 + Cooldown: 0 +--- !u!114 &1488426162 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1590874943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 100 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &694042128 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1617223201} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Back to Menu +--- !u!114 &1685894217 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174288875} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1868668733 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1590874943} +--- !u!222 &1300329510 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174288875} +--- !u!222 &512967037 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1617223201} +--- !u!223 &1755358597 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + serializedVersion: 2 + 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_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &294705724 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1617223201} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1225916774} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1225916774 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174288875} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 294705724} + m_Father: {fileID: 824776444} + m_RootOrder: 0 + m_AnchorMin: {x: 0.2, y: 0.1} + m_AnchorMax: {x: 0.8, y: 0.25} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &863570889 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1590874943} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 824776444} + m_RootOrder: 1 + m_AnchorMin: {x: 0.009542092, y: 0.1} + m_AnchorMax: {x: 1, y: 0.17400001} + m_AnchoredPosition: {x: -9.9961, y: -149} + m_SizeDelta: {x: 19.992, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &824776444 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 4} + m_LocalScale: {x: 0.001, y: 0.001, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1225916774} + - {fileID: 863570889} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -0.02, y: -0.82} + m_SizeDelta: {x: 2095.15, y: 1918.35} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &1092422400 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1596676483} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/MenuBar.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/MenuBar.prefab.meta new file mode 100644 index 0000000..f8a6db4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/MenuBar.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 421f38d36955b4473b99800e7cc5ee37 +timeCreated: 1475163586 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/VideoControls.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/VideoControls.prefab new file mode 100644 index 0000000..ae01d80 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/VideoControls.prefab @@ -0,0 +1,2916 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!222 &18538445 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 725742927} +--- !u!114 &37083777 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1075224535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Texture: {fileID: 2800000, guid: 33fe2a867f53b4dd7b47d13503efb4de, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!114 &59339357 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1137111031} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &91833519 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 747062055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!114 &95282846 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1345198074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Texture: {fileID: 2800000, guid: 738cb298280e345f4908ffe19a6cd591, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 650846444} + m_IsPrefabParent: 1 +--- !u!114 &110164717 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 650846444} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 70f36fab7a81646eeb5c083264db5be0, type: 3} + m_Name: + m_EditorClassIdentifier: + player: {fileID: 0} +--- !u!114 &139209893 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2092375200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.541} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &152245717 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1550274822} +--- !u!114 &167946883 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1889339327} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Texture: {fileID: 2800000, guid: 36597cf9c1ebe400c99c9affa94cfd24, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1 &174405581 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 670958713} + - 222: {fileID: 780039787} + - 114: {fileID: 1841903541} + m_Layer: 5 + m_Name: settings_image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &230187223 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 846340090} + - 222: {fileID: 1014126416} + - 114: {fileID: 2101800346} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &250310558 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535195243} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.29411766, g: 0.303, b: 0.81568635, a: 0.691} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!1 &265220946 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 842406552} + - 222: {fileID: 1744419420} + - 114: {fileID: 1220986348} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &265926893 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1075224535} +--- !u!224 &271662729 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 834822196} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1286145430} + - {fileID: 1355393028} + - {fileID: 1053754247} + - {fileID: 1493204893} + m_Father: {fileID: 2042328513} + m_RootOrder: 1 + m_AnchorMin: {x: 0.20300001, y: 0.04} + m_AnchorMax: {x: 0.79700005, y: 0.08} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &293026199 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 842897185} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 652672571} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &299345355 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 850598152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &350827436 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 850598152} +--- !u!1 &386531953 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1355393028} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &427223765 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1086507754} +--- !u!1 &435672934 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1310915070} + m_Layer: 5 + m_Name: settings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &459900200 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1240802587} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1307927409} + m_RootOrder: 1 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 2.4, y: -0.9} + m_SizeDelta: {x: 132.6, y: 49.6} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &477284213 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2092375200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cc7f51d6c6b140f79f7afded8b84284, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &498814467 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 853069448} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.509} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &499153277 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1857102488} +--- !u!222 &513964706 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1889339327} +--- !u!114 &528625580 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 962069258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9117647, g: 0, b: 0.16176471, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!224 &539183185 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1086507754} + m_LocalRotation: {x: -0, y: -0, z: 0.0037209068, w: -0.9999931} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2097420047} + - {fileID: 780487871} + - {fileID: 685128331} + m_Father: {fileID: 2042328513} + m_RootOrder: 5 + m_AnchorMin: {x: 0.4214107, y: 0.25687796} + m_AnchorMax: {x: 0.52236396, y: 0.4575355} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &542357450 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1766262893} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.9117647, g: 0, b: 0.16176471, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: fe4fc8c33a7454cbf8504991c47a12a8, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &544655656 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 842897185} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7843138, g: 0.79215693, b: 0.80392164, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Texture: {fileID: 2800000, guid: 2d89a5f92f03449f2bd6c28c914115fc, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!114 &588158655 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1291849241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &619811956 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2092375200} +--- !u!222 &630495252 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 843878323} +--- !u!1 &650846444 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2079246903} + - 114: {fileID: 110164717} + m_Layer: 0 + m_Name: VideoControls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &652672571 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 850598152} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 293026199} + - {fileID: 1420181710} + m_Father: {fileID: 2042328513} + m_RootOrder: 4 + m_AnchorMin: {x: 0.2, y: 0.14620341} + m_AnchorMax: {x: 0.24800001, y: 0.28311586} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &663490201 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 717212708} +--- !u!114 &664824289 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1672313607} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!224 &670958713 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174405581} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1988323867} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -0.0000038146973} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &676506846 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1345198074} +--- !u!224 &685128331 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1075224535} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 539183185} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &717212708 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1130589988} + - 222: {fileID: 663490201} + - 114: {fileID: 775779508} + m_Layer: 5 + m_Name: settings_buttonCircle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &721874683 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 783778481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7843138, g: 0.79215693, b: 0.80392164, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Texture: {fileID: 2800000, guid: 2d89a5f92f03449f2bd6c28c914115fc, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1 &725742927 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1141502232} + - 222: {fileID: 18538445} + - 114: {fileID: 1813628901} + - 114: {fileID: 1894154550} + m_Layer: 5 + m_Name: vol_up + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &731248162 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1137111031} +--- !u!114 &732869598 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 747062055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + drawDebugRays: 0 + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &747062055 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2042328513} + - 223: {fileID: 1686446061} + - 114: {fileID: 91833519} + - 225: {fileID: 1484849856} + - 114: {fileID: 1633499005} + - 114: {fileID: 732869598} + m_Layer: 5 + m_Name: DisplayCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &775779508 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 717212708} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.7843138, g: 0.79215693, b: 0.80392164, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Texture: {fileID: 2800000, guid: 2d89a5f92f03449f2bd6c28c914115fc, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!114 &777902215 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2072198232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &780039787 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174405581} +--- !u!224 &780487871 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1889339327} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 539183185} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &783778481 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2097420047} + - 222: {fileID: 1052060675} + - 114: {fileID: 721874683} + m_Layer: 5 + m_Name: volumeCircle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &797842343 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1137111031} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1458877334} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &834822196 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 271662729} + - 114: {fileID: 1797793609} + m_Layer: 5 + m_Name: video_slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &842406552 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 265220946} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1522574926} + m_RootOrder: 0 + m_AnchorMin: {x: 0.25, y: 0} + m_AnchorMax: {x: 0.75, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &842897185 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 293026199} + - 222: {fileID: 1331976630} + - 114: {fileID: 544655656} + m_Layer: 5 + m_Name: volumeCircle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &843878323 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2123468901} + - 222: {fileID: 630495252} + - 114: {fileID: 1307758141} + m_Layer: 5 + m_Name: title_text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &846340090 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 230187223} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2010285796} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &850598152 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 652672571} + - 222: {fileID: 350827436} + - 114: {fileID: 299345355} + - 114: {fileID: 2023576010} + m_Layer: 5 + m_Name: volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &853069448 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1369105660} + - 222: {fileID: 1887605779} + - 114: {fileID: 498814467} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &878767707 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 962069258} +--- !u!1 &962069258 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1279982647} + - 222: {fileID: 878767707} + - 114: {fileID: 528625580} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &982932567 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2053350985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d1b8f07442700094898145567ef1f203, type: 3} + m_Name: + m_EditorClassIdentifier: + OnToggleOn: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1633499005} + m_MethodName: Fade + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + OnToggleOff: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1633499005} + m_MethodName: Fade + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + InitialState: 0 + RaiseEventForInitialState: 1 + Cooldown: 0 +--- !u!222 &1014126416 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 230187223} +--- !u!222 &1052060675 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 783778481} +--- !u!224 &1053754247 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535195243} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 271662729} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0.24} + m_AnchorMax: {x: 1, y: 0.76} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1074563955 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1240802587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: (No settings in sample code) +--- !u!1 &1075224535 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 685128331} + - 222: {fileID: 265926893} + - 114: {fileID: 37083777} + m_Layer: 5 + m_Name: pauseImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1086507754 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 539183185} + - 222: {fileID: 427223765} + - 114: {fileID: 2139718752} + - 114: {fileID: 2073392283} + m_Layer: 5 + m_Name: playpause_button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1100586081 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1283635433} + - 222: {fileID: 2107542926} + - 114: {fileID: 1732824922} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1129845788 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1530223494} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1141502232} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1130589988 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 717212708} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1988323867} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1137111031 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 797842343} + - 222: {fileID: 731248162} + - 114: {fileID: 59339357} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1141502232 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 725742927} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1129845788} + m_Father: {fileID: 1534731733} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0.818} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.000091552734, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1164402124 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1672313607} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1355393028} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1217811730 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1697584635} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 4 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0:00 +--- !u!114 &1220986348 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 265220946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!1 &1221321103 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1522574926} + - 114: {fileID: 1426491928} + m_Layer: 5 + m_Name: volume_slider + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1240802587 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 459900200} + - 222: {fileID: 1580715401} + - 114: {fileID: 1074563955} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &1248321020 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1672313607} +--- !u!224 &1279982647 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 962069258} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1493204893} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1283635433 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1100586081} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1554607865} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1286145430 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2092375200} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1677584699} + m_Father: {fileID: 271662729} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 4.335} + m_SizeDelta: {x: 0, y: 0.53} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1291849241 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1988323867} + - 222: {fileID: 1457541051} + - 114: {fileID: 588158655} + - 114: {fileID: 1539831591} + m_Layer: 5 + m_Name: settings_button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1307758141 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 843878323} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 0 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 0 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ' Settings ' +--- !u!224 &1307927409 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2072198232} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2123468901} + - {fileID: 459900200} + m_Father: {fileID: 1310915070} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -47.8, y: 172.99997} + m_SizeDelta: {x: 44.46147, y: 142.71797} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1310915070 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 435672934} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1988323867} + - {fileID: 1307927409} + m_Father: {fileID: 2042328513} + m_RootOrder: 6 + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 204.95172, y: -136.96338} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1318588105 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1530223494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.634, b: 0, a: 0.966} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 0 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1331976630 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 842897185} +--- !u!1 &1345198074 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1420181710} + - 222: {fileID: 676506846} + - 114: {fileID: 95282846} + m_Layer: 5 + m_Name: vol_image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1355393028 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 386531953} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1164402124} + m_Father: {fileID: 271662729} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1369105660 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 853069448} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1534731733} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.16222608, y: -0.066288844} + m_SizeDelta: {x: -0.29312086, y: -0.11961} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1420181710 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1345198074} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 652672571} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1426491928 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1221321103} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2101800346} + m_FillRect: {fileID: 797842343} + m_HandleRect: {fileID: 846340090} + m_Direction: 2 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &1457541051 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1291849241} +--- !u!224 &1458877334 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1946923112} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 797842343} + m_Father: {fileID: 1522574926} + m_RootOrder: 1 + m_AnchorMin: {x: 0.25, y: 0} + m_AnchorMax: {x: 0.75, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 0, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!225 &1484849856 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 747062055} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!224 &1493204893 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1895363828} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1279982647} + m_Father: {fileID: 271662729} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1521022023 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1857102488} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 4 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0:00 +--- !u!224 &1522574926 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1221321103} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 842406552} + - {fileID: 1458877334} + - {fileID: 2010285796} + m_Father: {fileID: 1534731733} + m_RootOrder: 3 + m_AnchorMin: {x: 0.5, y: 0.2} + m_AnchorMax: {x: 0.5, y: 0.818} + m_AnchoredPosition: {x: 2.7, y: 0} + m_SizeDelta: {x: 14.8, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1530223494 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1129845788} + - 222: {fileID: 1685389313} + - 114: {fileID: 1318588105} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1534731733 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1979691154} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1369105660} + - {fileID: 1141502232} + - {fileID: 1554607865} + - {fileID: 1522574926} + m_Father: {fileID: 2042328513} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 141.5, y: -172.05} + m_SizeDelta: {x: 67.4, y: 344} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1535195243 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1053754247} + - 222: {fileID: 2055148572} + - 114: {fileID: 250310558} + m_Layer: 5 + m_Name: BufferedBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1539831591 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1291849241} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 588158655} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1633499005} + m_MethodName: OnToggleSettings + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1550274822 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1554607865} + - 222: {fileID: 152245717} + - 114: {fileID: 1982092948} + - 114: {fileID: 1604737073} + m_Layer: 5 + m_Name: vol_down + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1554607865 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1550274822} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1283635433} + m_Father: {fileID: 1534731733} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.2} + m_AnchoredPosition: {x: 0, y: 0.24998474} + m_SizeDelta: {x: 0, y: -0.50003} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1580715401 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1240802587} +--- !u!222 &1604081944 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1697584635} +--- !u!114 &1604737073 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1550274822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1633499005} + m_MethodName: OnVolumeDown + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: [] +--- !u!114 &1618335311 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2053350985} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9e216f327e132794b8e02093522ae84c, type: 3} + m_Name: + m_EditorClassIdentifier: + OnAppUp: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GVR.Input.ButtonEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null + OnAppDown: + m_PersistentCalls: + m_Calls: [] + m_TypeName: GVR.Input.ButtonEvent, Assembly-CSharp, Version=0.0.0.0, Culture=neutral, + PublicKeyToken=null +--- !u!114 &1633499005 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 747062055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 11ce60bdf78924133940a4a64555e784, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!224 &1639035537 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1697584635} + m_LocalRotation: {x: -0, y: -0, z: 0.0098030325, w: -0.999952} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2042328513} + m_RootOrder: 2 + m_AnchorMin: {x: 0.81, y: 0.03} + m_AnchorMax: {x: 0.99, y: 0.1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1672313607 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1164402124} + - 222: {fileID: 1248321020} + - 114: {fileID: 664824289} + m_Layer: 5 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1677584699 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1766262893} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 2, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1286145430} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 46.6, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1685389313 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1530223494} +--- !u!223 &1686446061 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 747062055} + m_Enabled: 1 + serializedVersion: 2 + 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_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!1 &1697584635 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1639035537} + - 222: {fileID: 1604081944} + - 114: {fileID: 1217811730} + m_Layer: 5 + m_Name: duration_text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1732824922 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1100586081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.875, g: 0.17371324, b: 0.17371324, a: 0.9019608} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 0 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1744419420 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 265220946} +--- !u!1 &1766262893 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1677584699} + - 222: {fileID: 2077714971} + - 114: {fileID: 542357450} + m_Layer: 5 + m_Name: newPositionHandle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &1773914611 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2010285796} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1797793609 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 834822196} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -113659843, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 528625580} + m_FillRect: {fileID: 1164402124} + m_HandleRect: {fileID: 1279982647} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Slider+SliderEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1813628901 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 725742927} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_Color: {r: 0.2188776, g: 0.74264705, b: 0.12013406, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: + +--- !u!4 &1834979375 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2053350985} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 9} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2079246903} + m_RootOrder: 1 +--- !u!114 &1841903541 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 174405581} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -98529514, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Texture: {fileID: 2800000, guid: c693e0aaddd03420fa79689875f39f93, type: 3} + m_UVRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 +--- !u!1 &1857102488 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 2026081615} + - 222: {fileID: 499153277} + - 114: {fileID: 1521022023} + m_Layer: 5 + m_Name: curpos_text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &1887605779 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 853069448} +--- !u!1 &1889339327 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 780487871} + - 222: {fileID: 513964706} + - 114: {fileID: 167946883} + m_Layer: 5 + m_Name: playImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1894154550 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 725742927} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1633499005} + m_MethodName: OnVolumeUp + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: [] +--- !u!1 &1895363828 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1493204893} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1946923112 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1458877334} + m_Layer: 5 + m_Name: Fill Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1979691154 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1534731733} + m_Layer: 5 + m_Name: volume_widget + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &1982092948 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1550274822} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '-' +--- !u!224 &1988323867 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1291849241} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1130589988} + - {fileID: 670958713} + m_Father: {fileID: 1310915070} + m_RootOrder: 0 + m_AnchorMin: {x: 0.78214216, y: 0.14620341} + m_AnchorMax: {x: 0.858332, y: 0.28311586} + m_AnchoredPosition: {x: -32.023716, y: 28.534002} + m_SizeDelta: {x: 41.142494, y: 52.026726} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2001213904 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2072198232} +--- !u!224 &2010285796 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1773914611} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 846340090} + m_Father: {fileID: 1522574926} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2023576010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 850598152} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 299345355} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1633499005} + m_MethodName: OnToggleVolume + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!224 &2026081615 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1857102488} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 2042328513} + m_RootOrder: 0 + m_AnchorMin: {x: 0.017226387, y: 0.03} + m_AnchorMax: {x: 0.17987883, y: 0.1} + m_AnchoredPosition: {x: -0.9500122, y: -0.25} + m_SizeDelta: {x: -1.9, y: 0.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2029052262 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 2092375200} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 477284213} + m_MethodName: OnPointerEnter + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 477284213} + m_MethodName: OnPointerExit + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 477284213} + m_MethodName: OnPointerClick + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 11 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 477284213} + m_MethodName: OnPointerMove + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: [] +--- !u!224 &2042328513 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 747062055} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.00468, y: 0.00208, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2026081615} + - {fileID: 271662729} + - {fileID: 1639035537} + - {fileID: 1534731733} + - {fileID: 652672571} + - {fileID: 539183185} + - {fileID: 1310915070} + m_Father: {fileID: 2079246903} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 640, y: 480} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2053350985 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1834979375} + - 114: {fileID: 1618335311} + - 114: {fileID: 982932567} + m_Layer: 0 + m_Name: ControllerManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &2055148572 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535195243} +--- !u!1 &2072198232 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1307927409} + - 222: {fileID: 2001213904} + - 114: {fileID: 777902215} + m_Layer: 5 + m_Name: settings_panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &2073392283 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1086507754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2139718752} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1633499005} + m_MethodName: OnPlayPause + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &2077714971 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1766262893} +--- !u!4 &2079246903 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 650846444} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.204, z: 3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 2042328513} + - {fileID: 1834979375} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &2092375200 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1286145430} + - 222: {fileID: 619811956} + - 114: {fileID: 139209893} + - 114: {fileID: 477284213} + - 114: {fileID: 2029052262} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2097420047 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 783778481} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 539183185} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.005, y: 0} + m_SizeDelta: {x: -0.01, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2101800346 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 230187223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &2107542926 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1100586081} +--- !u!224 &2123468901 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 843878323} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1307927409} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.6, y: -24} + m_SizeDelta: {x: -10.9, y: 34} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2139718752 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1086507754} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/VideoControls.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/VideoControls.prefab.meta new file mode 100644 index 0000000..bfb5183 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Prefabs/VideoDemo/VideoControls.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a62dfff2c15946c6a3caf52aef4bcf4 +timeCreated: 1472152474 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes.meta new file mode 100644 index 0000000..0cec1c2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: dcc56223db7e54229a24c587c334e51d +folderAsset: yes +timeCreated: 1479427356 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/HelloVR.unity b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/HelloVR.unity new file mode 100644 index 0000000..7a459eb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/HelloVR.unity @@ -0,0 +1,1726 @@ +%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: 8 + 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.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !u!196 &5 +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.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!4 &34062306 stripped +Transform: + m_PrefabParentObject: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, + type: 2} + m_PrefabInternal: {fileID: 390902453} +--- !u!1001 &83144409 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.y + value: 0.75 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.z + value: -0.47 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerMain + value: + objectReference: {fileID: 1168548481} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointers.Array.data[0] + value: + objectReference: {fileID: 189115713} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: reticlePointer + value: + objectReference: {fileID: 653818221} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &148680882 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 148680883} + - component: {fileID: 148680891} + - component: {fileID: 148680890} + - component: {fileID: 148680889} + - component: {fileID: 148680885} + - component: {fileID: 148680884} + - component: {fileID: 148680886} + m_Layer: 0 + m_Name: TriSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &148680883 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1199920617} + 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} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &148680884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: TeleportRandomly + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 148680885} + m_MethodName: TeleportRandomly + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &148680885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6d9412aff759420192d8dcf33f969bb, type: 3} + m_Name: + m_EditorClassIdentifier: + inactiveMaterial: {fileID: 2100000, guid: a5801e27da69043b69f7f194b62c2716, type: 2} + gazedAtMaterial: {fileID: 2100000, guid: c63bdfc3c6f1447c8bcb58360dd31d6a, type: 2} +--- !u!82 &148680886 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!135 &148680889 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.499999 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &148680890 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: c63bdfc3c6f1447c8bcb58360dd31d6a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!33 &148680891 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 148680882} + m_Mesh: {fileID: 4300000, guid: 18ea1f717668b466d9b043f460af69d1, type: 3} +--- !u!1 &189115713 stripped +GameObject: + m_PrefabParentObject: {fileID: 555767533, guid: 34c21f523e72f45509a4e37ed0293c3b, + type: 2} + m_PrefabInternal: {fileID: 390902453} +--- !u!1 &389255504 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 389255506} + - component: {fileID: 389255505} + m_Layer: 0 + m_Name: Point light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &389255505 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 389255504} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 2 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 10 + m_Range: 20 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 0 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &389255506 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 389255504} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 7.8045807, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &390902453 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 907292808} + m_Modifications: + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 555767533, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_Name + value: GvrControllerPointer0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &402391661 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &653818221 stripped +GameObject: + m_PrefabParentObject: {fileID: 171526, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_PrefabInternal: {fileID: 848404732} +--- !u!1001 &781074293 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000010886689084, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: d638298e697ca4e9b91853efadd0e6da, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &848404732 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 959308593} + m_Modifications: + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &848404733 stripped +Transform: + m_PrefabParentObject: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_PrefabInternal: {fileID: 848404732} +--- !u!1001 &873428114 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1000013165000468, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_Name + value: CubeRoom + objectReference: {fileID: 0} + - target: {fileID: 64000011095866406, guid: c12db6ac95da443448d6aa9e4cfc66c0, + type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 4300000, guid: 0d17106c40ecd4920976ddf8d6effd9b, type: 3} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &907292807 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 907292808} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &907292808 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 907292807} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 959308593} + - {fileID: 34062306} + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &946975180 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &955127915 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 955127926} + - component: {fileID: 955127918} + - component: {fileID: 955127916} + - component: {fileID: 955127917} + - component: {fileID: 955127921} + - component: {fileID: 955127923} + - component: {fileID: 955127919} + m_Layer: 0 + m_Name: Icosahedron + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &955127916 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 0edec395166a3244592f3532c7ce794c, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!64 &955127917 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 4300000, guid: 5c39ec134a75d4a87a4a69a1be8dc5de, type: 3} +--- !u!33 &955127918 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Mesh: {fileID: 4300000, guid: 5c39ec134a75d4a87a4a69a1be8dc5de, type: 3} +--- !u!82 &955127919 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!114 &955127921 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6d9412aff759420192d8dcf33f969bb, type: 3} + m_Name: + m_EditorClassIdentifier: + inactiveMaterial: {fileID: 2100000, guid: daad62324deb0cf448e5c805c8459bff, type: 2} + gazedAtMaterial: {fileID: 2100000, guid: 0edec395166a3244592f3532c7ce794c, type: 2} +--- !u!114 &955127923 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127921} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127921} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127921} + m_MethodName: TeleportRandomly + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127921} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127921} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 955127921} + m_MethodName: TeleportRandomly + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!224 &955127926 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955127915} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1199920617} + m_RootOrder: 2 + 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} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &959308587 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: b8b03d395f5734e98af91ccf44f9bf47, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 959308593} + - component: {fileID: 959308592} + - component: {fileID: 959308591} + - component: {fileID: 959308590} + - component: {fileID: 959308589} + - component: {fileID: 959308594} + 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 &959308589 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 8100000, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 +--- !u!92 &959308590 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 9200004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 +--- !u!124 &959308591 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 12400004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 +--- !u!20 &959308592 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2000004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.03 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!4 &959308593 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: b8b03d395f5734e98af91ccf44f9bf47, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 848404733} + m_Father: {fileID: 907292808} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &959308594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 959308587} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb5dd43baba2d4dc1bab789615567e3d, type: 3} + m_Name: + m_EditorClassIdentifier: + raycasterEventMask: + serializedVersion: 2 + m_Bits: 4294967295 + maxRaycastHits: 64 +--- !u!1001 &1163767423 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 114055343288806878, guid: 87c35d808850c410ca0e398a8da84e68, + type: 2} + propertyPath: safetyRing + value: + objectReference: {fileID: 1725746395} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1168548481 stripped +GameObject: + m_PrefabParentObject: {fileID: 198490, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_PrefabInternal: {fileID: 402391661} +--- !u!1 &1199920616 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1199920617} + m_Layer: 0 + m_Name: Treasure + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1199920617 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1199920616} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1490385948} + - {fileID: 148680883} + - {fileID: 955127926} + m_Father: {fileID: 0} + m_RootOrder: 9 + 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: 1.5} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &1252116907 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_RootOrder + value: 9 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1266476664 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000012185119224, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ce7abbbeb276a1547bd8ce1069fdabb7, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1490385947 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1490385948} + - component: {fileID: 1490385956} + - component: {fileID: 1490385955} + - component: {fileID: 1490385954} + - component: {fileID: 1490385950} + - component: {fileID: 1490385949} + - component: {fileID: 1490385957} + m_Layer: 0 + m_Name: QuadSphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1490385948 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_Children: [] + m_Father: {fileID: 1199920617} + 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} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1490385949 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: TeleportRandomly + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 1 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: SetGazedAt + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1490385950} + m_MethodName: TeleportRandomly + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &1490385950 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b6d9412aff759420192d8dcf33f969bb, type: 3} + m_Name: + m_EditorClassIdentifier: + inactiveMaterial: {fileID: 2100000, guid: 07e4eb2033080474d8aa55e5a35d49ca, type: 2} + gazedAtMaterial: {fileID: 2100000, guid: c5f8095b20dc2423cad63ce7379784d7, type: 2} +--- !u!135 &1490385954 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.499999 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1490385955 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: c5f8095b20dc2423cad63ce7379784d7, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!33 &1490385956 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Mesh: {fileID: 4300000, guid: 137df3466902d424983627567b86735e, type: 3} +--- !u!82 &1490385957 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1490385947} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 1 + Mute: 0 + Spatialize: 0 + SpatializePostEffects: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 +--- !u!1 &1725746395 stripped +GameObject: + m_PrefabParentObject: {fileID: 1251124450334416, guid: c12db6ac95da443448d6aa9e4cfc66c0, + type: 2} + m_PrefabInternal: {fileID: 873428114} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/HelloVR.unity.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/HelloVR.unity.meta new file mode 100644 index 0000000..d82116b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/HelloVR.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bb36d2905dc634f1c9eecb35beecaca8 +timeCreated: 1479266156 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/KeyboardDemo.unity b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/KeyboardDemo.unity new file mode 100644 index 0000000..95ae669 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/KeyboardDemo.unity @@ -0,0 +1,1316 @@ +%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: 8 + 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.52205884, g: 0.52205884, b: 0.52205884, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !u!196 &5 +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.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!114 &34730832 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 150179061, guid: f4cf01cab04054926935acc7cb25b7f5, + type: 2} + m_PrefabInternal: {fileID: 586914243} + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} +--- !u!1001 &145785651 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_LocalPosition.y + value: 1.39 + objectReference: {fileID: 0} + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_LocalPosition.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1788732883, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 2044164019, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: KeyboardText + value: + objectReference: {fileID: 34730832} + - target: {fileID: 2044164019, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: UpdateButton + value: + objectReference: {fileID: 1053603994} + - target: {fileID: 2044164019, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + propertyPath: UpdateCanvas + value: + objectReference: {fileID: 1202287596} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 3b7eeb268f8424f809fc34c33b2a6820, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &251127252 stripped +GameObject: + m_PrefabParentObject: {fileID: 198490, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_PrefabInternal: {fileID: 1256067701} +--- !u!1001 &264186650 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 776074203} + m_Modifications: + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 232 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 239 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 151.5 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 239 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 75 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 131 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 232 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 611905283, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 303 + objectReference: {fileID: 0} + - target: {fileID: 575330312, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 269 + objectReference: {fileID: 0} + - target: {fileID: 233679933, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 296 + objectReference: {fileID: 0} + - target: {fileID: 780855531, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 262 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 148 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 75 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 134.5 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 163 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -39 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 262 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 78 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 262 + objectReference: {fileID: 0} + - target: {fileID: 1124067406, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1124067406, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1695027285, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1695027285, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 163 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -39 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 78 + objectReference: {fileID: 0} + - target: {fileID: 1133103780, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 326 + objectReference: {fileID: 0} + - target: {fileID: 1045868163, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 326 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &264186651 stripped +Transform: + m_PrefabParentObject: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, + type: 2} + m_PrefabInternal: {fileID: 264186650} +--- !u!1001 &287129849 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &328517437 stripped +GameObject: + m_PrefabParentObject: {fileID: 555767533, guid: 34c21f523e72f45509a4e37ed0293c3b, + type: 2} + m_PrefabInternal: {fileID: 264186650} +--- !u!1 &356297968 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 356297969} + - component: {fileID: 356297971} + - component: {fileID: 356297970} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &356297969 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 356297968} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1053603995} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &356297970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 356297968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4eedafad5084240419e649245c7b2093, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Click here to update the Daydream Keyboard from the Play Store. + + This application will be closed for changes to take effect.' +--- !u!222 &356297971 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 356297968} +--- !u!1001 &407592334 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 776074203} + m_Modifications: + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 1260534185, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + propertyPath: keyboardDelegate + value: + objectReference: {fileID: 1762758481} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 6c99596fcbe574b168ae0faa3afe8546, type: 2} + m_IsPrefabParent: 0 +--- !u!114 &407592335 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 1260534185, guid: 6c99596fcbe574b168ae0faa3afe8546, + type: 2} + m_PrefabInternal: {fileID: 407592334} + m_Script: {fileID: 11500000, guid: 573e2b04dc4734d68a2b6747421ce0bc, type: 3} +--- !u!1001 &586914243 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_LocalPosition.z + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_AnchoredPosition.y + value: 1.51 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_SizeDelta.x + value: 450 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_SizeDelta.y + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 313390157, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114000011779369860, guid: f4cf01cab04054926935acc7cb25b7f5, + type: 2} + propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 407592335} + - target: {fileID: 890278573, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 407592335} + - target: {fileID: 890278573, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + propertyPath: m_Delegates.Array.data[0].callback.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: OnPointerClick + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: f4cf01cab04054926935acc7cb25b7f5, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &776074202 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 776074203} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &776074203 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 776074202} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1426624148} + - {fileID: 264186651} + - {fileID: 857240305} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &857240305 stripped +Transform: + m_PrefabParentObject: {fileID: 642702418, guid: 6c99596fcbe574b168ae0faa3afe8546, + type: 2} + m_PrefabInternal: {fileID: 407592334} +--- !u!1 &1053603994 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1053603995} + - component: {fileID: 1053603998} + - component: {fileID: 1053603997} + m_Layer: 5 + m_Name: UpdateButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1053603995 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053603994} + 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} + m_Children: + - {fileID: 356297969} + m_Father: {fileID: 1202287597} + 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} + m_SizeDelta: {x: 450, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1053603997 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053603994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1053603998 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1053603994} +--- !u!1 &1202287594 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1202287597} + - component: {fileID: 1202287596} + - component: {fileID: 1202287595} + - component: {fileID: 1202287599} + - component: {fileID: 1202287598} + - component: {fileID: 1202287600} + m_Layer: 5 + m_Name: UpdateCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1202287595 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202287594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!223 &1202287596 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202287594} + 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!224 &1202287597 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202287594} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_Children: + - {fileID: 1053603995} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0.5} + m_SizeDelta: {x: 450, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!65 &1202287598 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202287594} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 160, y: 30, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1202287599 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202287594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1202287600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202287594} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1762758481} + m_MethodName: LaunchPlayStore + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: [] +--- !u!1001 &1256067701 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1426624147 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 100006, guid: b8b03d395f5734e98af91ccf44f9bf47, type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1426624148} + - component: {fileID: 1426624154} + - component: {fileID: 1426624153} + - component: {fileID: 1426624152} + - component: {fileID: 1426624151} + - component: {fileID: 1426624149} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1426624148 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 400006, guid: b8b03d395f5734e98af91ccf44f9bf47, type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426624147} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 776074203} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1426624149 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426624147} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb5dd43baba2d4dc1bab789615567e3d, type: 3} + m_Name: + m_EditorClassIdentifier: + raycasterEventMask: + serializedVersion: 2 + m_Bits: 4294967295 + maxRaycastHits: 64 +--- !u!81 &1426624151 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426624147} + m_Enabled: 1 +--- !u!92 &1426624152 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 9200004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426624147} + m_Enabled: 1 +--- !u!124 &1426624153 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 12400004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426624147} + m_Enabled: 1 +--- !u!20 &1426624154 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 2000004, guid: b8b03d395f5734e98af91ccf44f9bf47, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1426624147} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.03 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!114 &1762758481 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 2044164019, guid: 3b7eeb268f8424f809fc34c33b2a6820, + type: 2} + m_PrefabInternal: {fileID: 145785651} + m_Script: {fileID: 11500000, guid: ff12693eea0a446d0a2183f2ffe9c711, type: 3} +--- !u!1001 &1782151970 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.x + value: 6.66 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.y + value: 10.48 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.z + value: 22.1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalScale.x + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalScale.y + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalScale.z + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1813120017 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.y + value: -1 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.z + value: 2.65 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_RootOrder + value: 7 + objectReference: {fileID: 0} + - target: {fileID: 1000013165000468, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_Name + value: CubeRoom + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &2083503156 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &2146255331 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.y + value: 0.75 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointer + value: + objectReference: {fileID: 328517437} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerMain + value: + objectReference: {fileID: 251127252} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: gvrEmulatedPlatformType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 22412244, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22450954, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 162814, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 156300, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 152284, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 22484034, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointers.Array.data[0] + value: + objectReference: {fileID: 328517437} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + m_IsPrefabParent: 0 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/KeyboardDemo.unity.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/KeyboardDemo.unity.meta new file mode 100644 index 0000000..56d9fc1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/KeyboardDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a44fd944cf574740a8f88ff7e39a487 +timeCreated: 1462053048 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/PermissionsDemo.unity b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/PermissionsDemo.unity new file mode 100644 index 0000000..64964b1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/PermissionsDemo.unity @@ -0,0 +1,1333 @@ +%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: 8 + 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.52205884, g: 0.52205884, b: 0.52205884, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 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: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 1 + m_BakeResolution: 1 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !u!196 &5 +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.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &131903535 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 131903536} + - component: {fileID: 131903538} + - component: {fileID: 131903537} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &131903536 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 131903535} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2074592651} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &131903537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 131903535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 14 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Check Permissions + +' +--- !u!222 &131903538 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 131903535} +--- !u!1 &315306579 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012686666070, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 315306580} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &315306580 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013688036312, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 315306579} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1169727707} + - {fileID: 2052711629} + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &791716530 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 791716531} + - component: {fileID: 791716533} + - component: {fileID: 791716532} + m_Layer: 5 + m_Name: statusText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &791716531 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 791716530} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1539010511} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.8} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 10.389648} + m_SizeDelta: {x: 0, y: -20.779297} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &791716532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 791716530} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.007355185, g: 0.007352948, b: 0.0075151455, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 14 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Status message here +--- !u!222 &791716533 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 791716530} +--- !u!1 &1169727706 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013898728406, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1169727707} + - component: {fileID: 1169727711} + - component: {fileID: 1169727710} + - component: {fileID: 1169727709} + - component: {fileID: 1169727708} + - component: {fileID: 1169727712} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1169727707 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012758055044, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169727706} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 315306580} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!81 &1169727708 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 81000012204441624, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169727706} + m_Enabled: 1 +--- !u!124 &1169727709 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 124000011034162428, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169727706} + m_Enabled: 1 +--- !u!92 &1169727710 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 92000012055723544, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169727706} + m_Enabled: 1 +--- !u!20 &1169727711 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000012629144268, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169727706} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.05 + far clip plane: 100 + 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: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!114 &1169727712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1169727706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb5dd43baba2d4dc1bab789615567e3d, type: 3} + m_Name: + m_EditorClassIdentifier: + raycasterEventMask: + serializedVersion: 2 + m_Bits: 4294967295 + maxRaycastHits: 64 +--- !u!1001 &1256067701 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1269305834 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000010917943472, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1525616791 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1525616792} + - component: {fileID: 1525616794} + - component: {fileID: 1525616793} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1525616792 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525616791} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1914650518} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1525616793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525616791} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 14 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Request Permission +--- !u!222 &1525616794 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525616791} +--- !u!1 &1539010504 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1539010511} + - component: {fileID: 1539010510} + - component: {fileID: 1539010509} + - component: {fileID: 1539010507} + - component: {fileID: 1539010505} + - component: {fileID: 1539010506} + m_Layer: 5 + m_Name: main_menu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1539010505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539010504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e8df902e7cb54f57bd1492b46fbe33d, type: 3} + m_Name: + m_EditorClassIdentifier: + statusText: {fileID: 791716532} +--- !u!114 &1539010506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539010504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1539010507 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539010504} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 4 + m_StartCorner: 0 + m_StartAxis: 1 + m_CellSize: {x: 1024, y: 512} + m_Spacing: {x: 100, y: 100} + m_Constraint: 0 + m_ConstraintCount: 3 +--- !u!114 &1539010509 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539010504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!223 &1539010510 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539010504} + 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!224 &1539010511 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1539010504} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2.5} + m_LocalScale: {x: 0.001, y: 0.001, z: 1} + m_Children: + - {fileID: 791716531} + - {fileID: 2074592651} + - {fileID: 1914650518} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 1.5} + m_SizeDelta: {x: 4096, y: 2048} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &1782151970 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.x + value: 6.66 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.y + value: 10.48 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.z + value: 22.1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalScale.x + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalScale.y + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalScale.z + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1914650517 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1914650518} + - component: {fileID: 1914650521} + - component: {fileID: 1914650520} + - component: {fileID: 1914650519} + m_Layer: 5 + m_Name: permReq + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1914650518 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1914650517} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1525616792} + m_Father: {fileID: 1539010511} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.2, y: 0.1} + m_AnchorMax: {x: 0.8, y: 0.3} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1914650519 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1914650517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.678, g: 0.678, b: 0.678, a: 1} + m_PressedColor: {r: 0.366, g: 0.366, b: 0.366, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1914650520} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1539010505} + m_MethodName: RequestPermissions + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1914650520 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1914650517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1914650521 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1914650517} +--- !u!1001 &1945385070 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &2052711628 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 315306580} + m_Modifications: + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 142.5 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 232 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 131 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 232 + objectReference: {fileID: 0} + - target: {fileID: 1391176726, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 134.5 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 146 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 239 + objectReference: {fileID: 0} + - target: {fileID: 611905283, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 292 + objectReference: {fileID: 0} + - target: {fileID: 780855531, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 262 + objectReference: {fileID: 0} + - target: {fileID: 1570307092, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 239 + objectReference: {fileID: 0} + - target: {fileID: 575330312, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 269 + objectReference: {fileID: 0} + - target: {fileID: 233679933, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 285 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 146 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 262 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 142.5 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 255 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 35 + objectReference: {fileID: 0} + - target: {fileID: 1124067406, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1124067406, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1124067406, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.z + value: 28.000002 + objectReference: {fileID: 0} + - target: {fileID: 1695027285, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1695027285, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1695027285, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.z + value: 28.000002 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &2052711629 stripped +Transform: + m_PrefabParentObject: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, + type: 2} + m_PrefabInternal: {fileID: 2052711628} +--- !u!1001 &2064780011 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 1000013165000468, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_Name + value: CubeRoom + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &2074592650 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2074592651} + - component: {fileID: 2074592654} + - component: {fileID: 2074592653} + - component: {fileID: 2074592652} + m_Layer: 5 + m_Name: permCheck + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2074592651 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2074592650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 131903536} + m_Father: {fileID: 1539010511} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.2, y: 0.4} + m_AnchorMax: {x: 0.8, y: 0.6} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2074592652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2074592650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.678, g: 0.678, b: 0.678, a: 1} + m_PressedColor: {r: 0.366, g: 0.366, b: 0.366, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2074592653} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1539010505} + m_MethodName: CheckPermission + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &2074592653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2074592650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &2074592654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2074592650} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/PermissionsDemo.unity.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/PermissionsDemo.unity.meta new file mode 100644 index 0000000..8f03fad --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/PermissionsDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5d5572a3735414cc9ad53b169fe2c7e8 +timeCreated: 1462053048 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/VideoDemo.unity b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/VideoDemo.unity new file mode 100644 index 0000000..22c4c96 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/VideoDemo.unity @@ -0,0 +1,2970 @@ +%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: 8 + 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: 0} + m_IndirectSpecularColor: {r: 0.4465934, g: 0.49642956, b: 0.57482487, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 8 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 1 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 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: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_LightingDataAsset: {fileID: 0} + m_ShadowMaskMode: 2 +--- !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 + m_NavMeshData: {fileID: 0} +--- !u!1001 &6057441 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 424718, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &22693479 stripped +GameObject: + m_PrefabParentObject: {fileID: 1596676483, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 924548008} +--- !u!114 &22693480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 22693479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &37604804 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 37604810} + - component: {fileID: 37604809} + - component: {fileID: 37604807} + - component: {fileID: 37604805} + - component: {fileID: 37604806} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &37604805 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 37604804} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 410d5a91205334dda9fd1bf3d325809a, type: 3} + m_Name: + m_EditorClassIdentifier: + statusText: {fileID: 1513988326} + videoType: 0 + videoURL: https://storage.googleapis.com/daydream-deveng.appspot.com/japan360/dash/japan_day06_eagle2_shot0005-2880px_40000kbps.mpd + videoContentID: + videoProviderId: + initialResolution: 4096 + adjustAspectRatio: 0 + useSecurePath: 0 +--- !u!114 &37604806 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 37604804} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e71f5afb881f443bbce909fe451d8fe, type: 3} + m_Name: + m_EditorClassIdentifier: + delay: 2 + loop: 1 +--- !u!23 &37604807 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 37604804} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 0 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 38722f7e29e284a8bb3a91c83a5b8848, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!33 &37604809 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 37604804} + m_Mesh: {fileID: 4300000, guid: 4a941ed6f14aa451d94ed905031bbe00, type: 3} +--- !u!4 &37604810 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 37604804} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 30, y: 30, z: 30} + m_Children: [] + m_Father: {fileID: 1871412555} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &105734842 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalPosition.z + value: -2 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 970dd4b9371394fb4890965f608d46fd, type: 2} + m_IsPrefabParent: 0 +--- !u!224 &246932554 stripped +RectTransform: + m_PrefabParentObject: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 924548008} +--- !u!4 &256190490 stripped +Transform: + m_PrefabParentObject: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + m_PrefabInternal: {fileID: 1023904525} +--- !u!1 &521517943 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 521517944} + - component: {fileID: 521517946} + - component: {fileID: 521517945} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &521517944 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 521517943} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1029435576} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.000030517578, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &521517945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 521517943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 14 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 360 Video +--- !u!222 &521517946 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 521517943} +--- !u!224 &550733486 stripped +RectTransform: + m_PrefabParentObject: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 842598306} +--- !u!114 &608005360 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 1488426162, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 924548008} + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} +--- !u!1 &610495053 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 610495054} + - component: {fileID: 610495057} + - component: {fileID: 610495056} + - component: {fileID: 610495055} + m_Layer: 5 + m_Name: DashVideo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &610495054 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 610495053} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2121328745} + m_Father: {fileID: 1089467890} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &610495055 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 610495053} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.678, g: 0.678, b: 0.678, a: 1} + m_PressedColor: {r: 0.366, g: 0.366, b: 0.366, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 610495056} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1089467893} + m_MethodName: OnDash + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1874517429} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &610495056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 610495053} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &610495057 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 610495053} +--- !u!1 &614796104 stripped +GameObject: + m_PrefabParentObject: {fileID: 1596676483, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 1871991767} +--- !u!114 &614796105 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 614796104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1001 &637771859 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.y + value: 0.75 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 452846, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerMain + value: + objectReference: {fileID: 2092647916} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: reticlePointer + value: + objectReference: {fileID: 1755930322} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointer + value: + objectReference: {fileID: 817331498} + - target: {fileID: 22484034, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: m_LocalPosition.z + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 11499020, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + propertyPath: controllerPointers.Array.data[0] + value: + objectReference: {fileID: 817331498} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 8524bbe5e592a42dc9251484a73c9c7f, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &675996203 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000013984650906, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1509313747, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 87c35d808850c410ca0e398a8da84e68, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &817331498 stripped +GameObject: + m_PrefabParentObject: {fileID: 555767533, guid: 34c21f523e72f45509a4e37ed0293c3b, + type: 2} + m_PrefabInternal: {fileID: 983149609} +--- !u!1 &831887164 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 831887165} + - component: {fileID: 831887167} + - component: {fileID: 831887166} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &831887165 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831887164} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1525084010} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &831887166 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831887164} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 14 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Local Video from OBB +--- !u!222 &831887167 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831887164} +--- !u!1 &831898087 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 831898088} + - component: {fileID: 831898092} + - component: {fileID: 831898091} + - component: {fileID: 831898090} + - component: {fileID: 831898089} + m_Layer: 0 + m_Name: dashQuad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &831898088 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831898087} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 12} + m_LocalScale: {x: 16, y: 9, z: 1} + m_Children: [] + m_Father: {fileID: 1607042465} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &831898089 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831898087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 410d5a91205334dda9fd1bf3d325809a, type: 3} + m_Name: + m_EditorClassIdentifier: + statusText: {fileID: 608005360} + videoType: 0 + videoURL: https://storage.googleapis.com/wvmedia/clear/h264/tears/tears_hd.mpd + videoContentID: https://storage.googleapis.com/wvmedia/clear/h264/tears/tears_hd.mpd + videoProviderId: + initialResolution: 720 + adjustAspectRatio: 1 + useSecurePath: 0 +--- !u!23 &831898090 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831898087} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: a6f8966fc281944c1a0e624a9fb657e4, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!64 &831898091 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831898087} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &831898092 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 831898087} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &842598306 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1569389537} + m_Modifications: + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2043292222, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: OnToggleOn.m_PersistentCalls.m_Calls.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.z + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchoredPosition.x + value: -0.020019531 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchoredPosition.y + value: -0.8200073 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_SizeDelta.x + value: 2095.15 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_SizeDelta.y + value: 1918.35 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114000013552431358, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1089467893} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1089467893} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ShowMainMenu + objectReference: {fileID: 0} + - target: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2043292222, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: OnToggleOn.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 2043292222, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: OnToggleOn.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2043292222, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: OnToggleOn.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 0} + - target: {fileID: 2043292222, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: OnToggleOn.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 2043292222, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: OnToggleOn.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 2043292222, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: OnToggleOn.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1874517429} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_AnchoredPosition.y + value: -1.13 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 421771429, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + - {fileID: 1960324903, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &924548008 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1607042465} + m_Modifications: + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.z + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchoredPosition.x + value: -0.020019531 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchoredPosition.y + value: -0.8200073 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_SizeDelta.x + value: 2095.15 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_SizeDelta.y + value: 1918.35 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114000013552431358, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1089467893} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1089467893} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ShowMainMenu + objectReference: {fileID: 0} + - target: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1874517429} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_AnchoredPosition.y + value: -1.13 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 421771429, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + - {fileID: 1960324903, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &965760586 stripped +Transform: + m_PrefabParentObject: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + m_PrefabInternal: {fileID: 1507745461} +--- !u!1001 &983149609 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1865993514} + m_Modifications: + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1695027285, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1695027285, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1124067406, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1124067406, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_LocalRotation.w + value: -0.00000004371139 + objectReference: {fileID: 0} + - target: {fileID: 1045868163, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 326 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 163 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -39 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 262 + objectReference: {fileID: 0} + - target: {fileID: 220671212, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 78 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 163 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -39 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 262 + objectReference: {fileID: 0} + - target: {fileID: 269749299, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 78 + objectReference: {fileID: 0} + - target: {fileID: 233679933, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 296 + objectReference: {fileID: 0} + - target: {fileID: 611905283, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 303 + objectReference: {fileID: 0} + - target: {fileID: 1133103780, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 326 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 151.5 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 239 + objectReference: {fileID: 0} + - target: {fileID: 1150962481, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 75 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMin.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.x + value: 148 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_AnchoredPosition.y + value: -37.5 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.x + value: 232 + objectReference: {fileID: 0} + - target: {fileID: 1673994293, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + propertyPath: m_SizeDelta.y + value: 75 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 34c21f523e72f45509a4e37ed0293c3b, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &999823235 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 999823237} + - component: {fileID: 999823236} + 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 &999823236 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 999823235} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + 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_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &999823237 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 999823235} + 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: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1023904525 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1607042465} + m_Modifications: + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.y + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.z + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114000013363983312, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + propertyPath: player + value: + objectReference: {fileID: 831898089} + - target: {fileID: 224000013448946178, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224000013182588492, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 110164717, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: player + value: + objectReference: {fileID: 831898089} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.y + value: -0.2 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_ParentPrefab: {fileID: 100100000, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1029435575 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1029435576} + - component: {fileID: 1029435579} + - component: {fileID: 1029435578} + - component: {fileID: 1029435577} + m_Layer: 5 + m_Name: Video360 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1029435576 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1029435575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 521517944} + m_Father: {fileID: 1089467890} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1029435577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1029435575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.678, g: 0.678, b: 0.678, a: 1} + m_PressedColor: {r: 0.366, g: 0.366, b: 0.366, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1029435578} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1089467893} + m_MethodName: On360Video + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1874517429} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1029435578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1029435575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1029435579 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1029435575} +--- !u!1001 &1047400872 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1871412555} + m_Modifications: + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.y + value: -0.5 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.z + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000013419424896, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114000013363983312, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + propertyPath: player + value: + objectReference: {fileID: 37604805} + - target: {fileID: 224000013448946178, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224000013182588492, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1164402124, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1279982647, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 110164717, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: player + value: + objectReference: {fileID: 37604805} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.y + value: -0.2 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_ParentPrefab: {fileID: 100100000, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1049037166 stripped +GameObject: + m_PrefabParentObject: {fileID: 650846444, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + m_PrefabInternal: {fileID: 1047400872} +--- !u!114 &1049037167 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1049037166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5d8d09b9e5d2437aa022780a2ce8c83, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1067184763 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1067184764} + - component: {fileID: 1067184766} + - component: {fileID: 1067184765} + m_Layer: 5 + m_Name: MissingLibMessageText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1067184764 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1067184763} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1089467890} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1067184765 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1067184763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.30147058, g: 0.21723615, b: 0.21723615, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1067184766 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1067184763} +--- !u!1 &1089467886 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1089467890} + - component: {fileID: 1089467889} + - component: {fileID: 1089467888} + - component: {fileID: 1089467893} + - component: {fileID: 1089467891} + - component: {fileID: 1089467887} + m_Layer: 5 + m_Name: main_menu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1089467887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1089467886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1089467888 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1089467886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!223 &1089467889 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1089467886} + 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!224 &1089467890 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1089467886} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 2.5} + m_LocalScale: {x: 0.001, y: 0.001, z: 1} + m_Children: + - {fileID: 1067184764} + - {fileID: 1525084010} + - {fileID: 610495054} + - {fileID: 1029435576} + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 1.94} + m_SizeDelta: {x: 2048, y: 2048} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1089467891 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1089467886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 100 + m_Right: 100 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 100 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &1089467893 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1089467886} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 114ed7f3f1d114a2988b1f93a233b40e, type: 3} + m_Name: + m_EditorClassIdentifier: + localVideoSample: {fileID: 1569389536} + dashVideoSample: {fileID: 1607042464} + panoVideoSample: {fileID: 1871412554} + missingLibText: {fileID: 1067184765} +--- !u!1001 &1202100361 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1483257764} + m_Modifications: + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1246015591 stripped +GameObject: + m_PrefabParentObject: {fileID: 747062055, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + m_PrefabInternal: {fileID: 1023904525} +--- !u!114 &1246015593 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1246015591} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1446393819 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 1488426162, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 842598306} + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} +--- !u!1 &1483257763 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000013898728406, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1483257764} + - component: {fileID: 1483257768} + - component: {fileID: 1483257767} + - component: {fileID: 1483257766} + - component: {fileID: 1483257765} + - component: {fileID: 1483257769} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1483257764 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000012758055044, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483257763} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1755930323} + m_Father: {fileID: 1865993514} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!81 &1483257765 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 81000012204441624, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483257763} + m_Enabled: 1 +--- !u!124 &1483257766 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 124000011034162428, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483257763} + m_Enabled: 1 +--- !u!92 &1483257767 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 92000012055723544, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483257763} + m_Enabled: 1 +--- !u!20 &1483257768 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 20000012629144268, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483257763} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.03 + far clip plane: 100 + 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: 0 + m_AllowMSAA: 1 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!114 &1483257769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1483257763} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb5dd43baba2d4dc1bab789615567e3d, type: 3} + m_Name: + m_EditorClassIdentifier: + raycasterEventMask: + serializedVersion: 2 + m_Bits: 4294967295 + maxRaycastHits: 64 +--- !u!1 &1494871195 stripped +GameObject: + m_PrefabParentObject: {fileID: 747062055, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + m_PrefabInternal: {fileID: 1047400872} +--- !u!114 &1494871197 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1494871195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1001 &1507745461 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1569389537} + m_Modifications: + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.y + value: -0.204 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalPosition.z + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 110164717, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: player + value: + objectReference: {fileID: 1800537140} + - target: {fileID: 1164402124, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1279982647, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 0} + m_ParentPrefab: {fileID: 100100000, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, type: 2} + m_IsPrefabParent: 0 +--- !u!114 &1513988326 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 1488426162, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 1871991767} + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} +--- !u!1 &1525084009 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1525084010} + - component: {fileID: 1525084013} + - component: {fileID: 1525084012} + - component: {fileID: 1525084011} + m_Layer: 5 + m_Name: FlatVideo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1525084010 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525084009} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 831887165} + m_Father: {fileID: 1089467890} + 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, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1525084011 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525084009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.678, g: 0.678, b: 0.678, a: 1} + m_PressedColor: {r: 0.366, g: 0.366, b: 0.366, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1525084012} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1089467893} + m_MethodName: OnFlatLocal + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 1874517429} + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1525084012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525084009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1525084013 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1525084009} +--- !u!1 &1569389536 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1569389537} + m_Layer: 5 + m_Name: obbVideoSample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1569389537 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1569389536} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1800537138} + - {fileID: 965760586} + - {fileID: 550733486} + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1607042464 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1607042465} + m_Layer: 5 + m_Name: dashVideoSample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1607042465 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1607042464} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 831898088} + - {fileID: 256190490} + - {fileID: 246932554} + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1755930322 stripped +GameObject: + m_PrefabParentObject: {fileID: 171526, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_PrefabInternal: {fileID: 1202100361} +--- !u!4 &1755930323 stripped +Transform: + m_PrefabParentObject: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 2} + m_PrefabInternal: {fileID: 1202100361} +--- !u!1 &1785203824 stripped +GameObject: + m_PrefabParentObject: {fileID: 1596676483, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 842598306} +--- !u!114 &1785203825 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1785203824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &1800537137 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1800537138} + - component: {fileID: 1800537143} + - component: {fileID: 1800537142} + - component: {fileID: 1800537141} + - component: {fileID: 1800537140} + - component: {fileID: 1800537139} + m_Layer: 0 + m_Name: obbQuad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1800537138 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800537137} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 12} + m_LocalScale: {x: 16, y: 9, z: 1} + m_Children: [] + m_Father: {fileID: 1569389537} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1800537139 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800537137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2e71f5afb881f443bbce909fe451d8fe, type: 3} + m_Name: + m_EditorClassIdentifier: + delay: 2 + loop: 1 +--- !u!114 &1800537140 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800537137} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 410d5a91205334dda9fd1bf3d325809a, type: 3} + m_Name: + m_EditorClassIdentifier: + statusText: {fileID: 1446393819} + videoType: 3 + videoURL: jar:file://${Application.dataPath}!/assets/vid_bigbuckbunny.mp4 + videoContentID: + videoProviderId: + initialResolution: 4096 + adjustAspectRatio: 1 + useSecurePath: 0 +--- !u!23 &1800537141 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800537137} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: a3bbe11c576194adba41e6f574dda321, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!64 &1800537142 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800537137} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_InflateMesh: 0 + m_SkinWidth: 0.01 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1800537143 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1800537137} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1865522642 stripped +Transform: + m_PrefabParentObject: {fileID: 1820761120, guid: 34c21f523e72f45509a4e37ed0293c3b, + type: 2} + m_PrefabInternal: {fileID: 983149609} +--- !u!1 &1865993513 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 1000012686666070, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1865993514} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1865993514 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 4000013688036312, guid: 1aacf4cab39834d61b61851193126b3a, + type: 2} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1865993513} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.33, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1483257764} + - {fileID: 1865522642} + m_Father: {fileID: 0} + m_RootOrder: 10 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1871412554 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1871412555} + m_Layer: 5 + m_Name: panoVideoSample + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1871412555 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1871412554} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 37604810} + - {fileID: 2085061181} + - {fileID: 2060127210} + m_Father: {fileID: 0} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1871991767 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1871412555} + m_Modifications: + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalPosition.z + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchoredPosition.x + value: -0.02 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchoredPosition.y + value: -0.82 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_SizeDelta.x + value: 2095.15 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_SizeDelta.y + value: 1918.35 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 224000013403576284, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 114000013552431358, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1089467893} + - target: {fileID: 1488426162, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_Text + value: THIS IS THE VIDEO INFO + objectReference: {fileID: 0} + - target: {fileID: 1225916774, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_AnchoredPosition.y + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target + value: + objectReference: {fileID: 1089467893} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName + value: ShowMainMenu + objectReference: {fileID: 0} + - target: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Mode + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_CallState + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Target + value: + objectReference: {fileID: 1874517429} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_MethodName + value: SetActive + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_ObjectArgumentAssemblyTypeName + value: UnityEngine.Object, UnityEngine + objectReference: {fileID: 0} + - target: {fileID: 169017167, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[1].m_Arguments.m_BoolArgument + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + propertyPath: m_AnchoredPosition.y + value: -1.13 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 421771429, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + - {fileID: 1960324903, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 421f38d36955b4473b99800e7cc5ee37, type: 2} + m_IsPrefabParent: 0 +--- !u!1001 &1874517428 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 4000014274899290, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_RootOrder + value: 11 + objectReference: {fileID: 0} + - target: {fileID: 1000013165000468, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + propertyPath: m_Name + value: CubeRoom + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: c12db6ac95da443448d6aa9e4cfc66c0, type: 2} + m_IsPrefabParent: 0 +--- !u!1 &1874517429 stripped +GameObject: + m_PrefabParentObject: {fileID: 1000013165000468, guid: c12db6ac95da443448d6aa9e4cfc66c0, + type: 2} + m_PrefabInternal: {fileID: 1874517428} +--- !u!1001 &1878185664 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 463285ecd6702471a909ba810832bf0e, type: 2} + m_IsPrefabParent: 0 +--- !u!224 &2060127210 stripped +RectTransform: + m_PrefabParentObject: {fileID: 824776444, guid: 421f38d36955b4473b99800e7cc5ee37, + type: 2} + m_PrefabInternal: {fileID: 1871991767} +--- !u!4 &2085061181 stripped +Transform: + m_PrefabParentObject: {fileID: 2079246903, guid: 1a62dfff2c15946c6a3caf52aef4bcf4, + type: 2} + m_PrefabInternal: {fileID: 1047400872} +--- !u!1 &2092647916 stripped +GameObject: + m_PrefabParentObject: {fileID: 198490, guid: 5ca80f4596fa44b87912a0592346d260, type: 2} + m_PrefabInternal: {fileID: 6057441} +--- !u!1 &2121328744 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2121328745} + - component: {fileID: 2121328747} + - component: {fileID: 2121328746} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2121328745 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2121328744} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 610495054} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2121328746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2121328744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 14 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: DASH Video on GCS +--- !u!222 &2121328747 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2121328744} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/VideoDemo.unity.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/VideoDemo.unity.meta new file mode 100644 index 0000000..f229b57 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scenes/VideoDemo.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c79d901ffb34f428eadaa3a7269a6c7c +timeCreated: 1479427319 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts.meta new file mode 100644 index 0000000..323c508 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 388cdc51b5a45405999224aeec93edbc +folderAsset: yes +timeCreated: 1479426561 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoInputManager.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoInputManager.cs new file mode 100644 index 0000000..a4bdb5d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoInputManager.cs @@ -0,0 +1,435 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +#if UNITY_ANDROID && !UNITY_EDITOR +#define RUNNING_ON_ANDROID_DEVICE +#endif // UNITY_ANDROID && !UNITY_EDITOR + +namespace GoogleVR.Demos +{ + using UnityEngine; + using UnityEngine.UI; + using System; + +#if UNITY_2017_2_OR_NEWER + using UnityEngine.XR; +#else + using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + + public class DemoInputManager : MonoBehaviour + { + private const string MESSAGE_CANVAS_NAME = "MessageCanvas"; + private const string MESSAGE_TEXT_NAME = "MessageText"; + private const string LASER_GAMEOBJECT_NAME = "Laser"; + private const string CONTROLLER_CONNECTING_MESSAGE = "Daydream controller connecting..."; + private const string CONTROLLER_DISCONNECTED_MESSAGE = "Daydream controller not connected"; + private const string CONTROLLER_SCANNING_MESSAGE = "Scanning for Daydream controller..."; + private const string NON_GVR_PLATFORM = + "Please select a supported Google VR platform via 'Build Settings > Android | iOS > Switch Platform'\n"; + + private const string VR_SUPPORT_NOT_CHECKED = + "Please make sure 'Player Settings > Virtual Reality Supported' is checked\n"; + + private const string EMPTY_VR_SDK_WARNING_MESSAGE = + "Please add 'Daydream' or 'Cardboard' under 'Player Settings > Virtual Reality SDKs'\n"; + + // Java class, method, and field constants. + private const int ANDROID_MIN_DAYDREAM_API = 24; + private const string FIELD_SDK_INT = "SDK_INT"; + private const string PACKAGE_BUILD_VERSION = "android.os.Build$VERSION"; + private const string PACKAGE_DAYDREAM_API_CLASS = "com.google.vr.ndk.base.DaydreamApi"; + private const string METHOD_IS_DAYDREAM_READY = "isDaydreamReadyPlatform"; + private bool isDaydream = false; + private int activeControllerPointer = 0; + + private static readonly GvrControllerHand[] AllHands = + { + GvrControllerHand.Right, + GvrControllerHand.Left, + }; + + // Buttons that can trigger pointer switching. + private const GvrControllerButton pointerButtonMask = + GvrControllerButton.App | + GvrControllerButton.TouchPadButton | + GvrControllerButton.Trigger | + GvrControllerButton.Grip; + + [Tooltip("Reference to GvrControllerMain")] + public GameObject controllerMain; + + public static string CONTROLLER_MAIN_PROP_NAME = "controllerMain"; + + [Tooltip("Reference to GvrControllerPointers")] + public GameObject[] controllerPointers; + + public static string CONTROLLER_POINTER_PROP_NAME = "controllerPointers"; + + [Tooltip("Reference to GvrReticlePointer")] + public GameObject reticlePointer; + + public static string RETICLE_POINTER_PROP_NAME = "reticlePointer"; + public GameObject messageCanvas; + public Text messageText; + +#if !RUNNING_ON_ANDROID_DEVICE + public enum EmulatedPlatformType + { + Daydream, + Cardboard + } + + [Tooltip("Emulated GVR Platform")] + public EmulatedPlatformType gvrEmulatedPlatformType = EmulatedPlatformType.Daydream; + + public static string EMULATED_PLATFORM_PROP_NAME = "gvrEmulatedPlatformType"; +#else + // Running on an Android device. + private GvrSettings.ViewerPlatformType viewerPlatform; +#endif // !RUNNING_ON_ANDROID_DEVICE + + void Start() + { + if (messageCanvas == null) + { + messageCanvas = transform.Find(MESSAGE_CANVAS_NAME).gameObject; + if (messageCanvas != null) + { + messageText = messageCanvas.transform.Find(MESSAGE_TEXT_NAME).GetComponent(); + } + } + + // Message canvas will be enabled later when there's a message to display. + messageCanvas.SetActive(false); +#if !RUNNING_ON_ANDROID_DEVICE + if (playerSettingsHasDaydream() || playerSettingsHasCardboard()) + { + // The list is populated with valid VR SDK(s), pick the first one. + gvrEmulatedPlatformType = + (XRSettings.supportedDevices[0] == GvrSettings.VR_SDK_DAYDREAM) ? + EmulatedPlatformType.Daydream : + EmulatedPlatformType.Cardboard; + } + isDaydream = (gvrEmulatedPlatformType == EmulatedPlatformType.Daydream); +#else + + // Running on an Android device. + viewerPlatform = GvrSettings.ViewerPlatform; + + // First loaded device in Player Settings. + string vrDeviceName = XRSettings.loadedDeviceName; + if (vrDeviceName != GvrSettings.VR_SDK_CARDBOARD && + vrDeviceName != GvrSettings.VR_SDK_DAYDREAM) + { + Debug.LogErrorFormat("Loaded device was '{0}', must be one of '{1}' or '{2}'", + vrDeviceName, GvrSettings.VR_SDK_DAYDREAM, GvrSettings.VR_SDK_CARDBOARD); + return; + } + + // On a non-Daydream ready phone, fall back to Cardboard if it's present in the list of + // enabled VR SDKs. + // On a Daydream-ready phone, go into Cardboard mode if it's the currently-paired viewer. + if ((!IsDeviceDaydreamReady() && playerSettingsHasCardboard()) || + (IsDeviceDaydreamReady() && playerSettingsHasCardboard() && + GvrSettings.ViewerPlatform == GvrSettings.ViewerPlatformType.Cardboard)) + { + vrDeviceName = GvrSettings.VR_SDK_CARDBOARD; + } + + isDaydream = (vrDeviceName == GvrSettings.VR_SDK_DAYDREAM); +#endif // !RUNNING_ON_ANDROID_DEVICE + SetVRInputMechanism(); + } + + // Runtime switching enabled only in-editor. + void Update() + { + UpdateStatusMessage(); + + // Scan all devices' buttons for button down, and switch the singleton pointer + // to the controller the user last clicked. + int newPointer = activeControllerPointer; + + if (controllerPointers.Length > 1 && controllerPointers[1] != null) + { + GvrTrackedController trackedController1 = controllerPointers[1].GetComponent(); + foreach (var hand in AllHands) + { + GvrControllerInputDevice device = GvrControllerInput.GetDevice(hand); + if (device.GetButtonDown(pointerButtonMask)) + { + // Match the button to our own controllerPointers list. + if (device == trackedController1.ControllerInputDevice) + { + newPointer = 1; + } + else + { + newPointer = 0; + } + + break; + } + } + } + + if (newPointer != activeControllerPointer) + { + activeControllerPointer = newPointer; + SetVRInputMechanism(); + } + +#if !RUNNING_ON_ANDROID_DEVICE + UpdateEmulatedPlatformIfPlayerSettingsChanged(); + if ((isDaydream && gvrEmulatedPlatformType == EmulatedPlatformType.Daydream) || + (!isDaydream && gvrEmulatedPlatformType == EmulatedPlatformType.Cardboard)) + { + return; + } + + isDaydream = (gvrEmulatedPlatformType == EmulatedPlatformType.Daydream); + SetVRInputMechanism(); +#else + // Running on an Android device. + // Viewer type switched at runtime. + if (!IsDeviceDaydreamReady() || viewerPlatform == GvrSettings.ViewerPlatform) + { + return; + } + + isDaydream = (GvrSettings.ViewerPlatform == GvrSettings.ViewerPlatformType.Daydream); + viewerPlatform = GvrSettings.ViewerPlatform; + SetVRInputMechanism(); +#endif // !RUNNING_ON_ANDROID_DEVICE + } + + public bool IsCurrentlyDaydream() + { + return isDaydream; + } + + public static bool playerSettingsHasDaydream() + { + string[] playerSettingsVrSdks = XRSettings.supportedDevices; + return Array.Exists(playerSettingsVrSdks, + element => element.Equals(GvrSettings.VR_SDK_DAYDREAM)); + } + + public static bool playerSettingsHasCardboard() + { + string[] playerSettingsVrSdks = XRSettings.supportedDevices; + return Array.Exists(playerSettingsVrSdks, + element => element.Equals(GvrSettings.VR_SDK_CARDBOARD)); + } + +#if !RUNNING_ON_ANDROID_DEVICE + private void UpdateEmulatedPlatformIfPlayerSettingsChanged() + { + if (!playerSettingsHasDaydream() && !playerSettingsHasCardboard()) + { + return; + } + + // Player Settings > VR SDK list may have changed at runtime. The emulated platform + // may not have been manually updated if that's the case. + if (gvrEmulatedPlatformType == EmulatedPlatformType.Daydream && + !playerSettingsHasDaydream()) + { + gvrEmulatedPlatformType = EmulatedPlatformType.Cardboard; + } + else if (gvrEmulatedPlatformType == EmulatedPlatformType.Cardboard && + !playerSettingsHasCardboard()) + { + gvrEmulatedPlatformType = EmulatedPlatformType.Daydream; + } + } +#endif // !RUNNING_ON_ANDROID_DEVICE + +#if RUNNING_ON_ANDROID_DEVICE + // Running on an Android device. + private static bool IsDeviceDaydreamReady() + { + // Check API level. + using (var version = new AndroidJavaClass(PACKAGE_BUILD_VERSION)) + { + if (version.GetStatic(FIELD_SDK_INT) < ANDROID_MIN_DAYDREAM_API) + { + return false; + } + } + + // API level > 24, check whether the device is Daydream-ready.. + AndroidJavaObject androidActivity = null; + try + { + androidActivity = GvrActivityHelper.GetActivity(); + } + catch (AndroidJavaException e) + { + Debug.LogError("Exception while connecting to the Activity: " + e); + return false; + } + + AndroidJavaClass daydreamApiClass = new AndroidJavaClass(PACKAGE_DAYDREAM_API_CLASS); + if (daydreamApiClass == null || androidActivity == null) + { + return false; + } + + return daydreamApiClass.CallStatic(METHOD_IS_DAYDREAM_READY, androidActivity); + } +#endif // RUNNING_ON_ANDROID_DEVICE + + private void UpdateStatusMessage() + { + if (messageText == null || messageCanvas == null) + { + return; + } + +#if !UNITY_ANDROID && !UNITY_IOS + messageText.text = NON_GVR_PLATFORM; + messageCanvas.SetActive(true); + return; +#else +#if UNITY_EDITOR + if (!UnityEditor.PlayerSettings.virtualRealitySupported) + { + messageText.text = VR_SUPPORT_NOT_CHECKED; + messageCanvas.SetActive(true); + return; + } +#endif // UNITY_EDITOR + + bool isVrSdkListEmpty = !playerSettingsHasCardboard() && !playerSettingsHasDaydream(); + if (!isDaydream) + { + if (messageCanvas.activeSelf) + { + messageText.text = EMPTY_VR_SDK_WARNING_MESSAGE; + messageCanvas.SetActive(isVrSdkListEmpty); + } + + return; + } + + string vrSdkWarningMessage = isVrSdkListEmpty ? EMPTY_VR_SDK_WARNING_MESSAGE : ""; + string controllerMessage = ""; + GvrPointerGraphicRaycaster graphicRaycaster = + messageCanvas.GetComponent(); + GvrControllerInputDevice dominantDevice = GvrControllerInput.GetDevice(GvrControllerHand.Dominant); + GvrConnectionState connectionState = dominantDevice.State; + + // This is an example of how to process the controller's state to display a status message. + switch (connectionState) + { + case GvrConnectionState.Connected: + break; + case GvrConnectionState.Disconnected: + controllerMessage = CONTROLLER_DISCONNECTED_MESSAGE; + messageText.color = Color.white; + break; + case GvrConnectionState.Scanning: + controllerMessage = CONTROLLER_SCANNING_MESSAGE; + messageText.color = Color.cyan; + break; + case GvrConnectionState.Connecting: + controllerMessage = CONTROLLER_CONNECTING_MESSAGE; + messageText.color = Color.yellow; + break; + case GvrConnectionState.Error: + controllerMessage = "ERROR: " + dominantDevice.ErrorDetails; + messageText.color = Color.red; + break; + default: + // Shouldn't happen. + Debug.LogError("Invalid controller state: " + connectionState); + break; + } + + messageText.text = string.Format("{0}\n{1}", vrSdkWarningMessage, controllerMessage); + if (graphicRaycaster != null) + { + graphicRaycaster.enabled = + !isVrSdkListEmpty || connectionState != GvrConnectionState.Connected; + } + + messageCanvas.SetActive(isVrSdkListEmpty || + (connectionState != GvrConnectionState.Connected)); +#endif // !UNITY_ANDROID && !UNITY_IOS + } + + private void SetVRInputMechanism() + { + SetGazeInputActive(!isDaydream); + SetControllerInputActive(isDaydream); + } + + private void SetGazeInputActive(bool active) + { + if (reticlePointer == null) + { + return; + } + + reticlePointer.SetActive(active); + + // Update the pointer type only if this is currently activated. + if (!active) + { + return; + } + + GvrReticlePointer pointer = + reticlePointer.GetComponent(); + if (pointer != null) + { + GvrPointerInputModule.Pointer = pointer; + } + } + + private void SetControllerInputActive(bool active) + { + if (controllerMain != null) + { + controllerMain.SetActive(active); + } + + if (controllerPointers == null || controllerPointers.Length <= activeControllerPointer) + { + return; + } + + controllerPointers[activeControllerPointer].SetActive(active); + + // Update the pointer type only if this is currently activated. + if (!active) + { + return; + } + + GvrLaserPointer pointer = + controllerPointers[activeControllerPointer].GetComponentInChildren(true); + if (pointer != null) + { + GvrPointerInputModule.Pointer = pointer; + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoInputManager.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoInputManager.cs.meta new file mode 100644 index 0000000..1dca2ad --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoInputManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ddd25f1308577456cbaa207901961126 +timeCreated: 1479273440 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoSceneManager.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoSceneManager.cs new file mode 100644 index 0000000..3c1ec3b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoSceneManager.cs @@ -0,0 +1,40 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.Demos +{ + using UnityEngine; + + // Ensures correct app and scene setup. + public class DemoSceneManager : MonoBehaviour + { + void Start() + { + Input.backButtonLeavesApp = true; + } + + void Update() + { + // Exit when (X) is tapped. + if (Input.GetKeyDown(KeyCode.Escape)) + { + Application.Quit(); + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoSceneManager.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoSceneManager.cs.meta new file mode 100644 index 0000000..74bf15e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/DemoSceneManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1bec9ea3efe7849ffae666549aca3cad +timeCreated: 1485218787 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR.meta new file mode 100644 index 0000000..03deca9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b8da0c492ae2543a2a0198a7187320c0 +folderAsset: yes +timeCreated: 1479426567 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HeadsetDemoManager.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HeadsetDemoManager.cs new file mode 100644 index 0000000..a36dc63 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HeadsetDemoManager.cs @@ -0,0 +1,164 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.HelloVR +{ + using UnityEngine; + using System.Collections; + + /// Demonstrates the use of GvrHeadset events and APIs. + public class HeadsetDemoManager : MonoBehaviour + { + public GameObject safetyRing; + public bool enableDebugLog = false; + private WaitForSeconds waitFourSeconds = new WaitForSeconds(4); + +#region STANDALONE_DELEGATES + + public void OnSafetyRegionEvent(bool enter) + { + if (enableDebugLog) + { + Debug.Log("SafetyRegionEvent: " + (enter ? "enter" : "exit")); + } + } + + public void OnRecenterEvent(GvrRecenterEventType recenterType, + GvrRecenterFlags recenterFlags, + Vector3 recenteredPosition, + Quaternion recenteredOrientation) + { + if (enableDebugLog) + { + Debug.Log(string.Format("RecenterEvent: Type {0}, flags {1}\nPosition: {2}, " + + "Rotation: {3}", recenterType, recenterFlags, recenteredPosition, recenteredOrientation)); + } + } +#endregion // STANDALONE_DELEGATES + + public void FindFloorHeight() + { + float floorHeight = 0.0f; + bool success = GvrHeadset.TryGetFloorHeight(ref floorHeight); + if (enableDebugLog) + { + Debug.Log("Floor height success " + success + "; value " + floorHeight); + } + } + + public void FindRecenterTransform() + { + Vector3 position = Vector3.zero; + Quaternion rotation = Quaternion.identity; + bool success = GvrHeadset.TryGetRecenterTransform(ref position, ref rotation); + if (enableDebugLog) + { + Debug.Log("Recenter transform success " + success + "; value " + position + "; " + rotation); + } + } + + public void FindSafetyRegionType() + { + GvrSafetyRegionType safetyType = GvrSafetyRegionType.None; + bool success = GvrHeadset.TryGetSafetyRegionType(ref safetyType); + if (enableDebugLog) + { + Debug.Log("Safety region type success " + success + "; value " + safetyType); + } + } + + public void FindSafetyInnerRadius() + { + float innerRadius = -1.0f; + bool success = GvrHeadset.TryGetSafetyCylinderInnerRadius(ref innerRadius); + if (enableDebugLog) + { + Debug.Log("Safety region inner radius success " + success + "; value " + innerRadius); + } + + // Don't activate the safety cylinder visual until the radius is a reasonable value. + if (innerRadius > 0.1f && safetyRing != null) + { + safetyRing.SetActive(true); + safetyRing.transform.localScale = new Vector3(innerRadius, 1, innerRadius); + } + } + + public void FindSafetyOuterRadius() + { + float outerRadius = -1.0f; + bool success = GvrHeadset.TryGetSafetyCylinderOuterRadius(ref outerRadius); + if (enableDebugLog) + { + Debug.Log("Safety region outer radius success " + success + "; value " + outerRadius); + } + } + + void OnEnable() + { + if (safetyRing != null) + { + safetyRing.SetActive(false); + } + + if (!GvrHeadset.SupportsPositionalTracking) + { + return; + } + + GvrHeadset.OnSafetyRegionChange += OnSafetyRegionEvent; + GvrHeadset.OnRecenter += OnRecenterEvent; + if (enableDebugLog) + { + StartCoroutine(StatusUpdateLoop()); + } + } + + void OnDisable() + { + if (!GvrHeadset.SupportsPositionalTracking) + { + return; + } + + GvrHeadset.OnSafetyRegionChange -= OnSafetyRegionEvent; + GvrHeadset.OnRecenter -= OnRecenterEvent; + } + + void Start() + { + if (enableDebugLog) + { + Debug.Log("Device supports positional tracking: " + GvrHeadset.SupportsPositionalTracking); + } + } + + private IEnumerator StatusUpdateLoop() + { + while (true) + { + yield return waitFourSeconds; + FindFloorHeight(); + FindRecenterTransform(); + FindSafetyOuterRadius(); + FindSafetyInnerRadius(); + FindSafetyRegionType(); + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HeadsetDemoManager.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HeadsetDemoManager.cs.meta new file mode 100644 index 0000000..19d26bd --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HeadsetDemoManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 94f5d450d1bd94c97b1dc8109b633ac0 +timeCreated: 1498438356 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HelloVRManager.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HelloVRManager.cs new file mode 100644 index 0000000..f52df1b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HelloVRManager.cs @@ -0,0 +1,76 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.HelloVR +{ + using UnityEngine; + using GoogleVR.Demos; + + public class HelloVRManager : MonoBehaviour + { + public GameObject m_launchVrHomeButton; + public DemoInputManager m_demoInputManager; + + void Start() + { +#if !UNITY_ANDROID || UNITY_EDITOR + if (m_launchVrHomeButton == null) + { + return; + } + + m_launchVrHomeButton.SetActive(false); +#else + GvrDaydreamApi.CreateAsync((success) => + { + if (!success) + { + // Unexpected. See GvrDaydreamApi log messages for details. + Debug.LogError("GvrDaydreamApi.CreateAsync() failed"); + } + }); +#endif // !UNITY_ANDROID || UNITY_EDITOR + } + +#if UNITY_ANDROID && !UNITY_EDITOR + void Update() + { + if (m_launchVrHomeButton == null || m_demoInputManager == null) + { + return; + } + + m_launchVrHomeButton.SetActive(m_demoInputManager.IsCurrentlyDaydream()); + } +#endif // UNITY_ANDROID && !UNITY_EDITOR + + public void LaunchVrHome() + { +#if UNITY_ANDROID && !UNITY_EDITOR + GvrDaydreamApi.LaunchVrHomeAsync((success) => + { + if (!success) + { + // Unexpected. See GvrDaydreamApi log messages for details. + Debug.LogError("GvrDaydreamApi.LaunchVrHomeAsync() failed"); + } + }); +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HelloVRManager.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HelloVRManager.cs.meta new file mode 100644 index 0000000..cc0a8a5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/HelloVRManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ae2d286fc7c3e427bbde238c0ebb970b +timeCreated: 1490659306 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/ObjectController.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/ObjectController.cs new file mode 100644 index 0000000..1ce8a6a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/ObjectController.cs @@ -0,0 +1,112 @@ +//----------------------------------------------------------------------- +// +// Copyright 2014 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.HelloVR +{ + using UnityEngine; + using UnityEngine.EventSystems; + + [RequireComponent(typeof(Collider))] + public class ObjectController : MonoBehaviour + { + private Vector3 startingPosition; + private Renderer myRenderer; + + public Material inactiveMaterial; + public Material gazedAtMaterial; + + void Start() + { + startingPosition = transform.localPosition; + myRenderer = GetComponent(); + SetGazedAt(false); + } + + public void SetGazedAt(bool gazedAt) + { + if (inactiveMaterial != null && gazedAtMaterial != null) + { + myRenderer.material = gazedAt ? gazedAtMaterial : inactiveMaterial; + return; + } + } + + public void Reset() + { + int sibIdx = transform.GetSiblingIndex(); + int numSibs = transform.parent.childCount; + for (int i = 0; i < numSibs; i++) + { + GameObject sib = transform.parent.GetChild(i).gameObject; + sib.transform.localPosition = startingPosition; + sib.SetActive(i == sibIdx); + } + } + + public void Recenter() + { +#if !UNITY_EDITOR + GvrCardboardHelpers.Recenter(); +#else + if (GvrEditorEmulator.Instance != null) + { + GvrEditorEmulator.Instance.Recenter(); + } +#endif // !UNITY_EDITOR + } + + public void TeleportRandomly(BaseEventData eventData) + { + // Only trigger on left input button, which maps to + // Daydream controller TouchPadButton and Trigger buttons. + PointerEventData ped = eventData as PointerEventData; + if (ped != null) + { + if (ped.button != PointerEventData.InputButton.Left) + { + return; + } + } + + // Pick a random sibling, move them somewhere random, activate them, + // deactivate ourself. + int sibIdx = transform.GetSiblingIndex(); + int numSibs = transform.parent.childCount; + sibIdx = (sibIdx + Random.Range(1, numSibs)) % numSibs; + GameObject randomSib = transform.parent.GetChild(sibIdx).gameObject; + + // Move to random new location ±90˚ horzontal. + Vector3 direction = Quaternion.Euler( + 0, + Random.Range(-90, 90), + 0) * Vector3.forward; + + // New location between 1.5m and 3.5m. + float distance = 2 * Random.value + 1.5f; + Vector3 newPos = direction * distance; + + // Limit vertical position to be fully in the room. + newPos.y = Mathf.Clamp(newPos.y, -1.2f, 4f); + randomSib.transform.localPosition = newPos; + + randomSib.SetActive(true); + gameObject.SetActive(false); + SetGazedAt(false); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/ObjectController.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/ObjectController.cs.meta new file mode 100644 index 0000000..2ef2988 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/HelloVR/ObjectController.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b6d9412aff759420192d8dcf33f969bb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo.meta new file mode 100644 index 0000000..4430139 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 28bcc019cfb364ff4a611197fd324537 +folderAsset: yes +timeCreated: 1478818536 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo/KeyboardDelegateExample.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo/KeyboardDelegateExample.cs new file mode 100644 index 0000000..ae95175 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo/KeyboardDelegateExample.cs @@ -0,0 +1,124 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.KeyboardDemo +{ + using UnityEngine; + using UnityEngine.UI; + using System; + + public class KeyboardDelegateExample : GvrKeyboardDelegateBase + { + public Text KeyboardText; + public Canvas UpdateCanvas; + + public override event EventHandler KeyboardHidden; + + public override event EventHandler KeyboardShown; + + private const string DD_KEYBOARD_NOT_INSTALLED_MSG = "Please update the Daydream Keyboard app from the Play Store."; + + void Awake() + { + if (UpdateCanvas != null) + { + UpdateCanvas.gameObject.SetActive(false); + } + } + + public override void OnKeyboardShow() + { + Debug.Log("Calling Keyboard Show Delegate!"); + EventHandler handler = KeyboardShown; + if (handler != null) + { + handler(this, null); + } + } + + public override void OnKeyboardHide() + { + Debug.Log("Calling Keyboard Hide Delegate!"); + EventHandler handler = KeyboardHidden; + if (handler != null) + { + handler(this, null); + } + } + + public override void OnKeyboardUpdate(string text) + { + if (KeyboardText != null) + { + KeyboardText.text = text; + } + else + { + Debug.Log("Keyboard text is null...."); + } + } + + public override void OnKeyboardEnterPressed(string text) + { + Debug.Log("Calling Keyboard Enter Pressed Delegate: " + text); + } + + public override void OnKeyboardError(GvrKeyboardError errCode) + { + Debug.Log("Calling Keyboard Error Delegate: "); + switch (errCode) + { + case GvrKeyboardError.UNKNOWN: + Debug.Log("Unknown Error"); + break; + case GvrKeyboardError.SERVICE_NOT_CONNECTED: + Debug.Log("Service not connected"); + break; + case GvrKeyboardError.NO_LOCALES_FOUND: + Debug.Log("No locales found"); + break; + case GvrKeyboardError.SDK_LOAD_FAILED: + Debug.LogWarning(DD_KEYBOARD_NOT_INSTALLED_MSG); + if (KeyboardText != null) + { + KeyboardText.text = DD_KEYBOARD_NOT_INSTALLED_MSG; + } + + if (UpdateCanvas != null) + { + UpdateCanvas.gameObject.SetActive(true); + } + + break; + } + } + + public void LaunchPlayStore() + { + if (UpdateCanvas != null) + { + UpdateCanvas.gameObject.SetActive(false); +#if !UNITY_ANDROID + Debug.LogError("GVR Keyboard available only on Android."); +#else + GvrKeyboardIntent.Instance.LaunchPlayStore(); +#endif // !UNITY_ANDROID + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo/KeyboardDelegateExample.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo/KeyboardDelegateExample.cs.meta new file mode 100644 index 0000000..4351d80 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/KeyboardDemo/KeyboardDelegateExample.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ff12693eea0a446d0a2183f2ffe9c711 +timeCreated: 1478820263 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo.meta new file mode 100644 index 0000000..8094421 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 34618aef1cb8e43378c9777f103319ea +folderAsset: yes +timeCreated: 1479427139 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo/PermissionsFlowManager.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo/PermissionsFlowManager.cs new file mode 100644 index 0000000..55da176 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo/PermissionsFlowManager.cs @@ -0,0 +1,97 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.PermissionsDemo +{ + using UnityEngine; + using System.Collections.Generic; + using UnityEngine.UI; + +#if UNITY_ANDROID || UNITY_EDITOR + // Manages the permission flow in PermissionsDemo. + public class PermissionsFlowManager : MonoBehaviour + { + private static string[] permissionNames = { "android.permission.READ_EXTERNAL_STORAGE" }; + + public Text statusText; + + private static List permissionList = + new List(); + + public void CheckPermission() + { + statusText.text = "Checking permission...."; + GvrPermissionsRequester permissionRequester = GvrPermissionsRequester.Instance; + if (permissionRequester != null) + { + bool granted = permissionRequester.IsPermissionGranted(permissionNames[0]); + statusText.text = permissionNames[0] + ": " + (granted ? "Granted" : "Denied"); + } + else + { + statusText.text = "Permission requester cannot be initialized."; + } + } + + public void RequestPermissions() + { + if (statusText != null) + { + statusText.text = "Requesting permission...."; + } + + GvrPermissionsRequester permissionRequester = GvrPermissionsRequester.Instance; + if (permissionRequester == null) + { + statusText.text = "Permission requester cannot be initialized."; + return; + } + + Debug.Log("Permissions.RequestPermisions: Check if permission has been granted"); + if (!permissionRequester.IsPermissionGranted(permissionNames[0])) + { + Debug.Log("Permissions.RequestPermisions: Permission has not been previously granted"); + if (permissionRequester.ShouldShowRational(permissionNames[0])) + { + statusText.text = "This game needs to access external storage. Please grant permission when prompted."; + statusText.color = Color.red; + } + + permissionRequester.RequestPermissions(permissionNames, + (GvrPermissionsRequester.PermissionStatus[] permissionResults) => + { + statusText.color = Color.cyan; + permissionList.Clear(); + permissionList.AddRange(permissionResults); + string msg = ""; + foreach (GvrPermissionsRequester.PermissionStatus p in permissionList) + { + msg += p.Name + ": " + (p.Granted ? "Granted" : "Denied") + "\n"; + } + + statusText.text = msg; + }); + } + else + { + statusText.text = "ExternalStorage permission already granted!"; + } + } + } +#endif // (UNITY_ANDROID || UNITY_EDITOR) +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo/PermissionsFlowManager.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo/PermissionsFlowManager.cs.meta new file mode 100644 index 0000000..fb92f39 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/PermissionsDemo/PermissionsFlowManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4e8df902e7cb54f57bd1492b46fbe33d +timeCreated: 1477353933 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo.meta new file mode 100644 index 0000000..757c9d5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a0b590cb0333b487384953a9bb760570 +folderAsset: yes +timeCreated: 1471620442 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AppButtonInput.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AppButtonInput.cs new file mode 100644 index 0000000..b05b29e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AppButtonInput.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + + /// + /// Provides controller app button input through UnityEvents. + /// + public class AppButtonInput : MonoBehaviour + { + public ButtonEvent OnAppUp; + public ButtonEvent OnAppDown; + + void Update() + { + if (Gvr.Internal.ControllerUtils.AnyButtonUp(GvrControllerButton.App)) + { + OnAppUp.Invoke(); + } + + if (Gvr.Internal.ControllerUtils.AnyButtonDown(GvrControllerButton.App)) + { + OnAppDown.Invoke(); + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AppButtonInput.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AppButtonInput.cs.meta new file mode 100644 index 0000000..f289e39 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AppButtonInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9e216f327e132794b8e02093522ae84c +timeCreated: 1460403137 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AutoPlayVideo.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AutoPlayVideo.cs new file mode 100644 index 0000000..98d6173 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AutoPlayVideo.cs @@ -0,0 +1,76 @@ +// +// Copyright (C) 2016 Google Inc. All Rights Reserved. +// +// 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. +// + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + + /// + /// Auto play video. + /// + /// This script exposes a delay value in seconds to start playing the TexturePlayer + /// component on the same object. + /// + + [RequireComponent(typeof(GvrVideoPlayerTexture))] + public class AutoPlayVideo : MonoBehaviour + { + private bool done; + private float t; + private GvrVideoPlayerTexture player; + + public float delay = 2f; + public bool loop = false; + + void Start() + { + t = 0; + done = false; + player = GetComponent(); + if (player != null) + { + player.Init(); + } + } + + void Update() + { + if (player == null) + { + return; + } + else if (player.PlayerState == GvrVideoPlayerTexture.VideoPlayerState.Ended && done && loop) + { + player.Pause(); + player.CurrentPosition = 0; + done = false; + t = 0f; + return; + } + + if (done) + { + return; + } + + t += Time.deltaTime; + if (t >= delay && player != null && player.Play()) + { + done = true; + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AutoPlayVideo.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AutoPlayVideo.cs.meta new file mode 100644 index 0000000..5962679 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/AutoPlayVideo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2e71f5afb881f443bbce909fe451d8fe +timeCreated: 1471303020 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents.meta new file mode 100644 index 0000000..860044b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 86f712ff768b04bea868f2aadbe9f8bc +folderAsset: yes +timeCreated: 1543350224 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/BoolEvent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/BoolEvent.cs new file mode 100644 index 0000000..37a7a16 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/BoolEvent.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class BoolEvent : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/BoolEvent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/BoolEvent.cs.meta new file mode 100644 index 0000000..b472940 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/BoolEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 25d360aef03fb4c7ba94b2ee40251a24 +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/ButtonEvent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/ButtonEvent.cs new file mode 100644 index 0000000..9948053 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/ButtonEvent.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class ButtonEvent : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/ButtonEvent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/ButtonEvent.cs.meta new file mode 100644 index 0000000..8bde3df --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/ButtonEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5f3d7e9ca47ce4799ab245e57ac7043f +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/FloatEvent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/FloatEvent.cs new file mode 100644 index 0000000..4a8712c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/FloatEvent.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class FloatEvent : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/FloatEvent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/FloatEvent.cs.meta new file mode 100644 index 0000000..133d4d2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/FloatEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b0edb9779e904e3998b1b65bcc8d6d6 +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/GameObjectEvent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/GameObjectEvent.cs new file mode 100644 index 0000000..700d4f3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/GameObjectEvent.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class GameObjectEvent : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/GameObjectEvent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/GameObjectEvent.cs.meta new file mode 100644 index 0000000..bc72150 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/GameObjectEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 479dd5a30665142c393a0670483e4e97 +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TouchPadEvent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TouchPadEvent.cs new file mode 100644 index 0000000..976abe9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TouchPadEvent.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class TouchPadEvent : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TouchPadEvent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TouchPadEvent.cs.meta new file mode 100644 index 0000000..25d7796 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TouchPadEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3725fb9950d834c28b8c8263c8c45969 +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TransformEvent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TransformEvent.cs new file mode 100644 index 0000000..cb38a8e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TransformEvent.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class TransformEvent : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TransformEvent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TransformEvent.cs.meta new file mode 100644 index 0000000..8cfa70a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/TransformEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 43cd0765b09374af19eb4d7acbea02ba +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector2Event.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector2Event.cs new file mode 100644 index 0000000..d541c33 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector2Event.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class Vector2Event : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector2Event.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector2Event.cs.meta new file mode 100644 index 0000000..d351a3c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector2Event.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 60f1e4636c2474e55a25e6d4ff372ee7 +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector3Event.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector3Event.cs new file mode 100644 index 0000000..7b19800 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector3Event.cs @@ -0,0 +1,29 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.Events; + + [Serializable] + public class Vector3Event : UnityEvent + { + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector3Event.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector3Event.cs.meta new file mode 100644 index 0000000..761b085 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/InputEvents/Vector3Event.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4c75c86da0ae44394be62c13431686c2 +timeCreated: 1542148172 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/MenuHandler.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/MenuHandler.cs new file mode 100644 index 0000000..a29f0b0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/MenuHandler.cs @@ -0,0 +1,90 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + using System.Collections; + + public class MenuHandler : MonoBehaviour + { + public GameObject[] menuObjects; + + public void HideMenu() + { + foreach (GameObject m in menuObjects) + { + Renderer r = m.GetComponent(); + if (r != null) + { + r.enabled = false; + } + else + { + m.SetActive(false); + } + + StartCoroutine(DoFade()); + } + } + + public void ShowMenu() + { + foreach (GameObject m in menuObjects) + { + Renderer r = m.GetComponent(); + if (r != null) + { + r.enabled = true; + } + else + { + m.SetActive(true); + } + } + + StartCoroutine(DoAppear()); + } + + IEnumerator DoAppear() + { + CanvasGroup cg = GetComponent(); + while (cg.alpha < 1.0) + { + cg.alpha += Time.deltaTime * 2; + yield return null; + } + + cg.interactable = true; + yield break; + } + + IEnumerator DoFade() + { + CanvasGroup cg = GetComponent(); + while (cg.alpha > 0) + { + cg.alpha -= Time.deltaTime; + yield return null; + } + + cg.interactable = false; + yield break; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/MenuHandler.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/MenuHandler.cs.meta new file mode 100644 index 0000000..fd7a968 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/MenuHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7304a3fe3b19a4eb8ba4e4b21008b2f0 +timeCreated: 1475106364 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/PositionSwapper.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/PositionSwapper.cs new file mode 100644 index 0000000..b5d1513 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/PositionSwapper.cs @@ -0,0 +1,109 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + + /// + /// Sets the position of the transform to a position specifed in a list. + /// + public class PositionSwapper : MonoBehaviour + { + private int currentIndex = -1; + + public Vector3[] Positions = new Vector3[0]; + + public void SetConstraint(int index) + { + } + + public void SetPosition(int index) + { + currentIndex = index % Positions.Length; + transform.localPosition = Positions[currentIndex]; + } + + #if UNITY_EDITOR + private static void SaveToIndex(UnityEditor.MenuCommand mc, int index) + { + PositionSwapper ps = mc.context as PositionSwapper; + while (ps.Positions.Length <= index) + { + UnityEditor.ArrayUtility.Add(ref ps.Positions, Vector3.zero); + } + + ps.Positions[index] = ps.transform.localPosition; + } + + private static void LoadIndex(UnityEditor.MenuCommand mc, int index) + { + PositionSwapper ps = mc.context as PositionSwapper; + ps.SetPosition(index); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/SavePositionToIndex0")] + private static void SaveToIndex0(UnityEditor.MenuCommand mc) + { + SaveToIndex(mc, 0); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/SavePositionToIndex1")] + private static void SaveToIndex1(UnityEditor.MenuCommand mc) + { + SaveToIndex(mc, 1); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/SavePositionToIndex2")] + private static void SaveToIndex2(UnityEditor.MenuCommand mc) + { + SaveToIndex(mc, 2); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/SavePositionToIndex3")] + private static void SaveToIndex3(UnityEditor.MenuCommand mc) + { + SaveToIndex(mc, 3); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/LoadPosition0")] + private static void LoadPosition0(UnityEditor.MenuCommand mc) + { + LoadIndex(mc, 0); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/LoadPosition1")] + private static void LoadPosition1(UnityEditor.MenuCommand mc) + { + LoadIndex(mc, 1); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/LoadPosition2")] + private static void LoadPosition2(UnityEditor.MenuCommand mc) + { + LoadIndex(mc, 2); + } + + [UnityEditor.MenuItem("CONTEXT/PositionSwapper/LoadPosition3")] + private static void LoadPosition3(UnityEditor.MenuCommand mc) + { + LoadIndex(mc, 3); + } +#endif // UNITY_EDITOR + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/PositionSwapper.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/PositionSwapper.cs.meta new file mode 100644 index 0000000..5352881 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/PositionSwapper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 680140f42b355d442a0a57a1d8fcc4b1 +timeCreated: 1463151666 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ScrubberEvents.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ScrubberEvents.cs new file mode 100644 index 0000000..81b3f8e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ScrubberEvents.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + using UnityEngine.EventSystems; + using UnityEngine.UI; + + public class ScrubberEvents : MonoBehaviour + { + private GameObject newPositionHandle; + + private Vector3[] corners; + private Slider slider; + + private VideoControlsManager mgr; + + public VideoControlsManager ControlManager + { + set + { + mgr = value; + } + } + + void Start() + { + foreach (Image im in GetComponentsInChildren(true)) + { + if (im.gameObject.name == "newPositionHandle") + { + newPositionHandle = im.gameObject; + break; + } + } + + corners = new Vector3[4]; + GetComponent().rectTransform.GetWorldCorners(corners); + slider = GetComponentInParent(); + } + + void Update() + { + bool setPos = false; + if (GvrPointerInputModule.Pointer != null) + { + RaycastResult r = GvrPointerInputModule.Pointer.CurrentRaycastResult; + if (r.gameObject != null) + { + newPositionHandle.transform.position = new Vector3( + r.worldPosition.x, + newPositionHandle.transform.position.y, + newPositionHandle.transform.position.z); + setPos = true; + } + } + + if (!setPos) + { + newPositionHandle.transform.position = slider.handleRect.transform.position; + } + } + + public void OnPointerEnter(BaseEventData data) + { + if (GvrPointerInputModule.Pointer != null) + { + RaycastResult r = GvrPointerInputModule.Pointer.CurrentRaycastResult; + if (r.gameObject != null) + { + newPositionHandle.transform.position = new Vector3( + r.worldPosition.x, + newPositionHandle.transform.position.y, + newPositionHandle.transform.position.z); + } + } + + newPositionHandle.SetActive(true); + } + + public void OnPointerExit(BaseEventData data) + { + newPositionHandle.SetActive(false); + } + + public void OnPointerClick(BaseEventData data) + { + float minX = corners[0].x; + float maxX = corners[3].x; + + float pct = (newPositionHandle.transform.position.x - minX) / (maxX - minX); + + if (mgr != null) + { + long p = (long)(slider.maxValue * pct); + mgr.Player.CurrentPosition = p; + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ScrubberEvents.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ScrubberEvents.cs.meta new file mode 100644 index 0000000..1c9b33e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ScrubberEvents.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0cc7f51d6c6b140f79f7afded8b84284 +timeCreated: 1472155348 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/SwitchVideos.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/SwitchVideos.cs new file mode 100644 index 0000000..9acd621 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/SwitchVideos.cs @@ -0,0 +1,121 @@ +//----------------------------------------------------------------------- +// +// Copyright (C) 2016 Google Inc. All Rights Reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using System; + using UnityEngine; + using UnityEngine.UI; + + public class SwitchVideos : MonoBehaviour + { + public GameObject localVideoSample; + public GameObject dashVideoSample; + public GameObject panoVideoSample; + + private GameObject[] videoSamples; + + public Text missingLibText; + + public void Awake() + { + videoSamples = new GameObject[3]; + videoSamples[0] = localVideoSample; + videoSamples[1] = dashVideoSample; + videoSamples[2] = panoVideoSample; + + string NATIVE_LIBS_MISSING_MESSAGE = "Video Support libraries not found or could not be loaded!\n" + + "Please add the GVRVideoPlayer.unitypackage\n to this project"; + + if (missingLibText != null) + { + try + { + IntPtr ptr = GvrVideoPlayerTexture.CreateVideoPlayer(); + if (ptr != IntPtr.Zero) + { + GvrVideoPlayerTexture.DestroyVideoPlayer(ptr); + missingLibText.enabled = false; + } + else + { + missingLibText.text = NATIVE_LIBS_MISSING_MESSAGE; + missingLibText.enabled = true; + } + } + catch (Exception e) + { + Debug.LogError(e); + missingLibText.text = NATIVE_LIBS_MISSING_MESSAGE; + missingLibText.enabled = true; + } + } + } + + public void ShowMainMenu() + { + ShowSample(-1); + } + + public void OnFlatLocal() + { + ShowSample(0); + } + + public void OnDash() + { + ShowSample(1); + } + + public void On360Video() + { + ShowSample(2); + } + + private void ShowSample(int index) + { + // If the libs are missing, always show the main menu. + if (missingLibText != null && missingLibText.enabled) + { + index = -1; + } + + for (int i = 0; i < videoSamples.Length; i++) + { + if (videoSamples[i] != null) + { + if (i != index) + { + if (videoSamples[i].activeSelf) + { + videoSamples[i].GetComponentInChildren().CleanupVideo(); + } + } + else + { + videoSamples[i].GetComponentInChildren().ReInitializeVideo(); + } + + videoSamples[i].SetActive(i == index); + } + } + + GetComponent().enabled = index == -1; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/SwitchVideos.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/SwitchVideos.cs.meta new file mode 100644 index 0000000..0eb16ff --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/SwitchVideos.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 114ed7f3f1d114a2988b1f93a233b40e +timeCreated: 1472683809 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ToggleAction.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ToggleAction.cs new file mode 100644 index 0000000..389555e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ToggleAction.cs @@ -0,0 +1,94 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + using UnityEngine.Events; + + /// + /// Throws a Unity event when the internal state is changed. This + /// component can be used by other components the fire Unity Events in + /// order to do some lightweight state tracking. + /// + public class ToggleAction : MonoBehaviour + { + private float lastUsage; + private bool on; + + [Tooltip("Event to raise when this is toggled on.")] + public UnityEvent OnToggleOn; + + [Tooltip("Event to raise when this is toggled off.")] + public UnityEvent OnToggleOff; + + [Tooltip("Should this initial state be on or off?")] + public bool InitialState; + + [Tooltip("Should an event be raised for the initial state on Start?")] + public bool RaiseEventForInitialState; + + [Tooltip("Time required between toggle operations. Operations Toggles within this window " + + "will be ignored.")] + public float Cooldown; + + void Start() + { + on = InitialState; + if (RaiseEventForInitialState) + { + RaiseToggleEvent(on); + } + } + + public void Toggle() + { + if (Time.time - lastUsage < Cooldown) + { + return; + } + + lastUsage = Time.time; + on = !on; + RaiseToggleEvent(on); + } + + public void Set(bool on) + { + if (this.on == on) + { + return; + } + + this.on = on; + RaiseToggleEvent(on); + } + + private void RaiseToggleEvent(bool on) + { + if (on) + { + OnToggleOn.Invoke(); + } + else + { + OnToggleOff.Invoke(); + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ToggleAction.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ToggleAction.cs.meta new file mode 100644 index 0000000..ea5dc6d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/ToggleAction.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d1b8f07442700094898145567ef1f203 +timeCreated: 1460408320 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoControlsManager.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoControlsManager.cs new file mode 100644 index 0000000..e057b1c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoControlsManager.cs @@ -0,0 +1,278 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + using System.Collections; + using UnityEngine.UI; + + public class VideoControlsManager : MonoBehaviour + { + private GameObject pauseSprite; + private GameObject playSprite; + private Slider videoScrubber; + private Slider volumeSlider; + private GameObject volumeWidget; + private GameObject settingsPanel; + private GameObject bufferedBackground; + private Vector3 basePosition; + private Text videoPosition; + private Text videoDuration; + + public GvrVideoPlayerTexture Player { set; get; } + + void Awake() + { + foreach (Text t in GetComponentsInChildren()) + { + if (t.gameObject.name == "curpos_text") + { + videoPosition = t; + } + else if (t.gameObject.name == "duration_text") + { + videoDuration = t; + } + } + + foreach (RawImage raw in GetComponentsInChildren(true)) + { + if (raw.gameObject.name == "playImage") + { + playSprite = raw.gameObject; + } + else if (raw.gameObject.name == "pauseImage") + { + pauseSprite = raw.gameObject; + } + } + + foreach (Slider s in GetComponentsInChildren(true)) + { + if (s.gameObject.name == "video_slider") + { + videoScrubber = s; + videoScrubber.maxValue = 100; + videoScrubber.minValue = 0; + foreach (Image i in videoScrubber.GetComponentsInChildren()) + { + if (i.gameObject.name == "BufferedBackground") + { + bufferedBackground = i.gameObject; + } + } + } + else if (s.gameObject.name == "volume_slider") + { + volumeSlider = s; + } + } + + foreach (RectTransform obj in GetComponentsInChildren(true)) + { + if (obj.gameObject.name == "volume_widget") + { + volumeWidget = obj.gameObject; + } + else if (obj.gameObject.name == "settings_panel") + { + settingsPanel = obj.gameObject; + } + } + } + + void Start() + { + foreach (ScrubberEvents s in GetComponentsInChildren(true)) + { + s.ControlManager = this; + } + + if (Player != null) + { + Player.Init(); + } + } + + void Update() + { + if ((!Player.VideoReady || Player.IsPaused)) + { + pauseSprite.SetActive(false); + playSprite.SetActive(true); + } + else if (Player.VideoReady && !Player.IsPaused) + { + pauseSprite.SetActive(true); + playSprite.SetActive(false); + } + + if (Player.VideoReady) + { + if (basePosition == Vector3.zero) + { + basePosition = videoScrubber.handleRect.localPosition; + } + + videoScrubber.maxValue = Player.VideoDuration; + videoScrubber.value = Player.CurrentPosition; + + float pct = Player.BufferedPercentage / 100.0f; + float sx = Mathf.Clamp(pct, 0, 1f); + bufferedBackground.transform.localScale = new Vector3(sx, 1, 1); + bufferedBackground.transform.localPosition = + new Vector3(basePosition.x - (basePosition.x * sx), 0, 0); + + videoPosition.text = FormatTime(Player.CurrentPosition); + videoDuration.text = FormatTime(Player.VideoDuration); + + if (volumeSlider != null) + { + volumeSlider.minValue = 0; + volumeSlider.maxValue = Player.MaxVolume; + volumeSlider.value = Player.CurrentVolume; + } + } + else + { + videoScrubber.value = 0; + } + } + + public void OnVolumeUp() + { + if (Player.CurrentVolume < Player.MaxVolume) + { + Player.CurrentVolume += 1; + } + } + + public void OnVolumeDown() + { + if (Player.CurrentVolume > 0) + { + Player.CurrentVolume -= 1; + } + } + + public void OnToggleVolume() + { + bool visible = !volumeWidget.activeSelf; + volumeWidget.SetActive(visible); + + // close settings if volume opens. + settingsPanel.SetActive(settingsPanel.activeSelf && !visible); + } + + public void OnToggleSettings() + { + bool visible = !settingsPanel.activeSelf; + settingsPanel.SetActive(visible); + + // close settings if volume opens. + volumeWidget.SetActive(volumeWidget.activeSelf && !visible); + } + + public void OnPlayPause() + { + bool isPaused = Player.IsPaused; + if (isPaused) + { + Player.Play(); + } + else + { + Player.Pause(); + } + + pauseSprite.SetActive(isPaused); + playSprite.SetActive(!isPaused); + CloseSubPanels(); + } + + public void OnVolumePositionChanged(float val) + { + if (Player.VideoReady) + { + Debug.Log("Setting current volume to " + val); + Player.CurrentVolume = (int)val; + } + } + + public void CloseSubPanels() + { + volumeWidget.SetActive(false); + settingsPanel.SetActive(false); + } + + public void Fade(bool show) + { + if (show) + { + StartCoroutine(DoAppear()); + } + else + { + StartCoroutine(DoFade()); + } + } + + IEnumerator DoAppear() + { + CanvasGroup cg = GetComponent(); + while (cg.alpha < 1.0) + { + cg.alpha += Time.deltaTime * 2; + yield return null; + } + + cg.interactable = true; + yield break; + } + + IEnumerator DoFade() + { + CanvasGroup cg = GetComponent(); + while (cg.alpha > 0) + { + cg.alpha -= Time.deltaTime; + yield return null; + } + + cg.interactable = false; + CloseSubPanels(); + yield break; + } + + private string FormatTime(long ms) + { + int sec = ((int)(ms / 1000L)); + int mn = sec / 60; + sec = sec % 60; + int hr = mn / 60; + mn = mn % 60; + if (hr > 0) + { + return string.Format("{0:00}:{1:00}:{2:00}", hr, mn, sec); + } + + return string.Format("{0:00}:{1:00}", mn, sec); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoControlsManager.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoControlsManager.cs.meta new file mode 100644 index 0000000..97d89ad --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoControlsManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 11ce60bdf78924133940a4a64555e784 +timeCreated: 1471470978 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoPlayerReference.cs b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoPlayerReference.cs new file mode 100644 index 0000000..e29a574 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoPlayerReference.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +namespace GoogleVR.VideoDemo +{ + using UnityEngine; + + public class VideoPlayerReference : MonoBehaviour + { + public GvrVideoPlayerTexture player; + + void Awake() + { +#if !UNITY_5_2 + GetComponentInChildren(true).Player = player; +#else + GetComponentInChildren().Player = player; +#endif + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoPlayerReference.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoPlayerReference.cs.meta new file mode 100644 index 0000000..8da3763 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Scripts/VideoDemo/VideoPlayerReference.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 70f36fab7a81646eeb5c083264db5be0 +timeCreated: 1471625726 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders.meta new file mode 100644 index 0000000..c0b6351 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 195ccbb7ac29241f1b390a3fb04718af +folderAsset: yes +timeCreated: 1479418030 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR.meta new file mode 100644 index 0000000..d84d6f5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a046f2daa89eb47d18fe233481b9e55e +folderAsset: yes +timeCreated: 1479426482 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR/HelloVRUnlitGrayscaleToColor.shader b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR/HelloVRUnlitGrayscaleToColor.shader new file mode 100644 index 0000000..df700f0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR/HelloVRUnlitGrayscaleToColor.shader @@ -0,0 +1,72 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Demos/Unlit/HelloVR Color From Grayscale" +{ + Properties + { + _MainTex ("Texture (A)", 2D) = "" {} + _Color ("Color Overlay", Color) = (1,1,1,1) + _HighlightColor ("Highlight Tint", Color) = (0.63,0.52,0.38,0.66) + _ShadowColor ("Shadow Tint", Color) = (0.96,1,1,0.85) + } + + SubShader + { + Tags { "Queue"="Geometry" "RenderType"="Geometry"} + + Pass + { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + + struct appdata { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + fixed4 _HighlightColor; + fixed4 _ShadowColor; + fixed4 _Color; + + fixed4 frag (v2f i) : SV_TARGET { + fixed alpha = tex2D(_MainTex, i.uv).a; + fixed3 highlight = max(0,(alpha*alpha)*_HighlightColor.rgb - (1 - _HighlightColor.a)); + fixed3 shadow = max(0,(alpha*_ShadowColor.rgb - Luminance(highlight)*_ShadowColor.a)); + fixed4 col = fixed4(highlight + shadow,0)*_Color; + return col; + } + ENDCG + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR/HelloVRUnlitGrayscaleToColor.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR/HelloVRUnlitGrayscaleToColor.shader.meta new file mode 100644 index 0000000..57fd535 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Shaders/HelloVR/HelloVRUnlitGrayscaleToColor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fbc799bc7ede6a940b24eff19a72979c +timeCreated: 1474923324 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds.meta new file mode 100644 index 0000000..43cb610 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3d729278f721946da995826756ef4d5a +folderAsset: yes +timeCreated: 1479426592 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR.meta new file mode 100644 index 0000000..97a0d94 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 803b677f7e8af405b840c081a7856929 +folderAsset: yes +timeCreated: 1479426602 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_1.wav b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_1.wav new file mode 100644 index 0000000..7747857 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_1.wav differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_1.wav.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_1.wav.meta new file mode 100644 index 0000000..4610aa7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_1.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: f7491bc024d4e4f1f9a6dd7f09558029 +timeCreated: 1510883027 +licenseType: Pro +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_2.wav b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_2.wav new file mode 100644 index 0000000..de83168 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_2.wav differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_2.wav.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_2.wav.meta new file mode 100644 index 0000000..4f95cf8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_2.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: f1de4e67910a3493e9ba31c4745c9bfc +timeCreated: 1510883027 +licenseType: Pro +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_3.wav b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_3.wav new file mode 100644 index 0000000..2e05712 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_3.wav differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_3.wav.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_3.wav.meta new file mode 100644 index 0000000..7fcdc54 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Sounds/HelloVR/HelloVR_Tone_3.wav.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: c9ad5fd9c2ab042098d2625d6cde66cd +timeCreated: 1510883027 +licenseType: Pro +AudioImporter: + serializedVersion: 6 + defaultSettings: + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures.meta new file mode 100644 index 0000000..fd64037 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 494e6baa06c70403d83626a2cafa6c9e +folderAsset: yes +timeCreated: 1479418030 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR.meta new file mode 100644 index 0000000..ed2b77d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 21d86777c20e3410da0f169870d9d05c +folderAsset: yes +timeCreated: 1479426540 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Blue_BakedDiffuse.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Blue_BakedDiffuse.png new file mode 100644 index 0000000..4df41ff Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Blue_BakedDiffuse.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Blue_BakedDiffuse.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Blue_BakedDiffuse.png.meta new file mode 100644 index 0000000..041a951 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Blue_BakedDiffuse.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: c5c9dbd1aff224a22a1567c3cb9b1c06 +timeCreated: 1509061600 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Pink_BakedDiffuse.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Pink_BakedDiffuse.png new file mode 100644 index 0000000..89b3b61 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Pink_BakedDiffuse.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Pink_BakedDiffuse.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Pink_BakedDiffuse.png.meta new file mode 100644 index 0000000..dd02b0f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/Icosahedron_Pink_BakedDiffuse.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 08c2be6a5c9e8427e9ea097dabf7fe60 +timeCreated: 1509061600 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Blue_BakedDiffuse.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Blue_BakedDiffuse.png new file mode 100644 index 0000000..fc27af0 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Blue_BakedDiffuse.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Blue_BakedDiffuse.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Blue_BakedDiffuse.png.meta new file mode 100644 index 0000000..2edfb45 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Blue_BakedDiffuse.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4d7eb7cd5562b4ed4ae74151e7f631c3 +timeCreated: 1509062193 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Pink_BakedDiffuse.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Pink_BakedDiffuse.png new file mode 100644 index 0000000..809331e Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Pink_BakedDiffuse.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Pink_BakedDiffuse.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Pink_BakedDiffuse.png.meta new file mode 100644 index 0000000..c959eaa --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/QuadSphere_Pink_BakedDiffuse.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: a507f76d80c44438a8197935a65af23a +timeCreated: 1509062193 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/SafetyRing_Alpha.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/SafetyRing_Alpha.png new file mode 100644 index 0000000..22f6bf7 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/SafetyRing_Alpha.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/SafetyRing_Alpha.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/SafetyRing_Alpha.png.meta new file mode 100644 index 0000000..3fae7c0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/SafetyRing_Alpha.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 7142fd4da3acd494cbabed95d75673b9 +timeCreated: 1510963139 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Blue_BakedDiffuse.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Blue_BakedDiffuse.png new file mode 100644 index 0000000..6947a56 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Blue_BakedDiffuse.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Blue_BakedDiffuse.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Blue_BakedDiffuse.png.meta new file mode 100644 index 0000000..3ce106a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Blue_BakedDiffuse.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 57118c062b1274e43b9260e14b00da11 +timeCreated: 1509062221 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Pink_BakedDiffuse.png b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Pink_BakedDiffuse.png new file mode 100644 index 0000000..9411b7c Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Pink_BakedDiffuse.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Pink_BakedDiffuse.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Pink_BakedDiffuse.png.meta new file mode 100644 index 0000000..9a53df1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Demos/Textures/HelloVR/TriSphere_Pink_BakedDiffuse.png.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 4960285264c024fc1906a7496f9e6c77 +timeCreated: 1509062221 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor.meta new file mode 100644 index 0000000..eb37299 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 7c98c5ffcf17d49fc88af4e1d260f2cb +folderAsset: yes +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller.meta new file mode 100644 index 0000000..03a941f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 08317980f07004b32aefb3c4a32e6923 +folderAsset: yes +timeCreated: 1482368683 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrControllerVisualEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrControllerVisualEditor.cs new file mode 100644 index 0000000..27c7446 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrControllerVisualEditor.cs @@ -0,0 +1,156 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; +using System.Collections; + +/// Custom editor for GvrControllerVisual. +/// Enhances the visualization of the displayState and ensures that it can only be edited +/// if the application isn't playing or if readControllerState is turned off. +[CustomEditor(typeof(GvrControllerVisual)), CanEditMultipleObjects] +public class GvrControllerVisualEditor : Editor +{ + private SerializedProperty attachmentPrefabs; + private SerializedProperty touchPadColor; + private SerializedProperty appButtonColor; + private SerializedProperty systemButtonColor; + private SerializedProperty readControllerState; + private SerializedProperty displayState; + private SerializedProperty maximumAlpha; + + private GUIStyle displayStateHeaderStyle; + private GUIContent displayStateHeaderContent; + private float displayStateHeaderHeight; + + private const string DISPLAY_STATE_HEADER_TEXT = "DisplayState:"; + private const string DISPLAY_STATE_ITEM_PREFIX = "• "; + private const int DISPLAY_STATE_HEADER_FONT_SIZE_OFFSET = 2; + + private const string ATTACHMENT_PREFABS_PROP_NAME = "attachmentPrefabs"; + private const string TOUCH_PAD_COLOR_PROP_NAME = "touchPadColor"; + private const string APP_BUTTON_COLOR_PROP_NAME = "appButtonColor"; + private const string SYSTEM_BUTTON_COLOR_PROP_NAME = "systemButtonColor"; + private const string READ_CONTROLLER_STATE_PROP_NAME = "readControllerState"; + private const string DISPLAY_STATE_PROP_NAME = "displayState"; + private const string MAXIMUM_ALPHA_PROP_NAME = "maximumAlpha"; + + void OnEnable() + { + attachmentPrefabs = serializedObject.FindProperty(ATTACHMENT_PREFABS_PROP_NAME); + touchPadColor = serializedObject.FindProperty(TOUCH_PAD_COLOR_PROP_NAME); + appButtonColor = serializedObject.FindProperty(APP_BUTTON_COLOR_PROP_NAME); + systemButtonColor = serializedObject.FindProperty(SYSTEM_BUTTON_COLOR_PROP_NAME); + readControllerState = serializedObject.FindProperty(READ_CONTROLLER_STATE_PROP_NAME); + displayState = serializedObject.FindProperty(DISPLAY_STATE_PROP_NAME); + maximumAlpha = serializedObject.FindProperty(MAXIMUM_ALPHA_PROP_NAME); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + CreateStylesAndContent(); + + // Show all properties except for display state. + EditorGUILayout.PropertyField(attachmentPrefabs, true); + EditorGUILayout.PropertyField(touchPadColor); + EditorGUILayout.PropertyField(appButtonColor); + EditorGUILayout.PropertyField(systemButtonColor); + EditorGUILayout.PropertyField(readControllerState); + + // Determine if the display state can currently be edited in the inspector. + bool allowEditDisplayState = !readControllerState.boolValue || !Application.isPlaying; + + if (!allowEditDisplayState) + { + // Prevents editing the display state in the inspector. + GUI.enabled = false; + } + + Rect displayStateRect = EditorGUILayout.BeginVertical(); + GUI.Box(displayStateRect, ""); + + // Show the display state header. + EditorGUILayout.LabelField(displayStateHeaderContent, + displayStateHeaderStyle, + GUILayout.Height(displayStateHeaderHeight)); + + // Indent the display state properties. + EditorGUI.indentLevel++; + + // Iterate through the child properties of the displayState property. + SerializedProperty iter = displayState.Copy(); + SerializedProperty nextElement = displayState.Copy(); + bool hasNextElement = nextElement.Next(false); + + iter.NextVisible(true); + do + { + // It iter is the same as nextElement, then the iter has moved beyond the children of the + // display state which means it has finished showing the display state. + if (hasNextElement && SerializedProperty.EqualContents(nextElement, iter)) + { + break; + } + + GUIContent content = new GUIContent(DISPLAY_STATE_ITEM_PREFIX + iter.displayName); + EditorGUILayout.PropertyField(iter, content); + } + while (iter.NextVisible(false)); + + // End the vertical region and draw the box. + EditorGUI.indentLevel--; + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + + // Reset GUI.enabled. + if (!allowEditDisplayState) + { + GUI.enabled = true; + } + + EditorGUILayout.PropertyField(maximumAlpha); + + serializedObject.ApplyModifiedProperties(); + } + + private void CreateStylesAndContent() + { + if (displayStateHeaderContent == null) + { + displayStateHeaderContent = new GUIContent(DISPLAY_STATE_HEADER_TEXT); + } + + if (displayStateHeaderStyle == null) + { + displayStateHeaderStyle = new GUIStyle(EditorStyles.boldLabel); + + displayStateHeaderStyle.fontSize = + displayStateHeaderStyle.font.fontSize + DISPLAY_STATE_HEADER_FONT_SIZE_OFFSET; + + displayStateHeaderHeight = displayStateHeaderStyle.CalcSize(displayStateHeaderContent).y; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrControllerVisualEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrControllerVisualEditor.cs.meta new file mode 100644 index 0000000..6b85a27 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrControllerVisualEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 05d7d64713447433b86cb9a4e3d48560 +timeCreated: 1498249337 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserPointerEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserPointerEditor.cs new file mode 100644 index 0000000..3049130 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserPointerEditor.cs @@ -0,0 +1,157 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; + +/// Custom editor for GvrLaserPointer. +/// Adds buttons that allows user's to set the recommended default values for the different +/// raycast modes. +[CustomEditor(typeof(GvrLaserPointer)), CanEditMultipleObjects] +public class GvrLaserPointerEditor : Editor +{ + private SerializedProperty mode; + private SerializedProperty overridePointerCamera; + private SerializedProperty maxPointerDistance; + private SerializedProperty defaultReticleDistance; + private SerializedProperty rayIntersection; + private SerializedProperty drawDebugRays; + + public const string RAYCAST_MODE_PROP_NAME = "raycastMode"; + public const string OVERRIDE_POINTER_CAMERA_PROP_NAME = "overridePointerCamera"; + public const string MAX_POINTER_DISTANCE_PROP_NAME = "maxPointerDistance"; + public const string DEFAULT_RETICLE_DISTANCE_PROP_NAME = "defaultReticleDistance"; + public const string RAY_INTERSECTION_PROP_NAME = "overrideCameraRayIntersectionDistance"; + public const string DRAW_DEBUG_RAYS_PROP_NAME = "drawDebugRays"; + + void OnEnable() + { + mode = serializedObject.FindProperty(RAYCAST_MODE_PROP_NAME); + overridePointerCamera = serializedObject.FindProperty(OVERRIDE_POINTER_CAMERA_PROP_NAME); + maxPointerDistance = serializedObject.FindProperty(MAX_POINTER_DISTANCE_PROP_NAME); + defaultReticleDistance = serializedObject.FindProperty(DEFAULT_RETICLE_DISTANCE_PROP_NAME); + rayIntersection = serializedObject.FindProperty(RAY_INTERSECTION_PROP_NAME); + drawDebugRays = serializedObject.FindProperty(DRAW_DEBUG_RAYS_PROP_NAME); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + Rect defaultsRect = EditorGUILayout.BeginVertical(); + GUI.Box(defaultsRect, /* No label. */""); + + GUILayout.Space(3.0f); + + EditorGUILayout.BeginHorizontal(); + + if (GUILayout.Button("Hybrid")) + { + SetDefaultsForRaycastMode(GvrBasePointer.RaycastMode.Hybrid); + } + + if (GUILayout.Button("Camera")) + { + SetDefaultsForRaycastMode(GvrBasePointer.RaycastMode.Camera); + } + + if (GUILayout.Button("Direct")) + { + SetDefaultsForRaycastMode(GvrBasePointer.RaycastMode.Direct); + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.HelpBox("Use the above Raycast Mode buttons to reset the following properties to their recommended values.\n\n" + + "GvrLaserPointer:\n" + + " • " + mode.displayName + "\n" + + " • " + rayIntersection.displayName + "\n\n" + + "GvrLaserVisual:\n" + + " • Max Laser Distance\n" + + " • Shrink Laser\n", MessageType.Info); + + EditorGUILayout.EndVertical(); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(maxPointerDistance); + EditorGUILayout.PropertyField(defaultReticleDistance); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField("Advanced:", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(mode); + EditorGUILayout.PropertyField(overridePointerCamera); + EditorGUILayout.PropertyField(rayIntersection); + EditorGUILayout.PropertyField(drawDebugRays); + + serializedObject.ApplyModifiedProperties(); + } + + private void SetDefaultsForRaycastMode(GvrBasePointer.RaycastMode raycastMode) + { + switch (raycastMode) + { + case GvrBasePointer.RaycastMode.Hybrid: + mode.intValue = (int)raycastMode; + rayIntersection.floatValue = GvrVRHelpers.GetRayIntersection(raycastMode); + SetPropertiesForVisual(GvrVRHelpers.GetShrinkLaser(raycastMode), GvrVRHelpers.GetRecommendedMaxLaserDistance(raycastMode)); + break; + case GvrBasePointer.RaycastMode.Camera: + mode.intValue = (int)raycastMode; + rayIntersection.floatValue = GvrVRHelpers.GetRayIntersection(raycastMode); + SetPropertiesForVisual(GvrVRHelpers.GetShrinkLaser(raycastMode), GvrVRHelpers.GetRecommendedMaxLaserDistance(raycastMode)); + break; + case GvrBasePointer.RaycastMode.Direct: + mode.intValue = (int)raycastMode; + rayIntersection.floatValue = GvrVRHelpers.GetRayIntersection(raycastMode); + SetPropertiesForVisual(GvrVRHelpers.GetShrinkLaser(raycastMode), GvrVRHelpers.GetRecommendedMaxLaserDistance(raycastMode)); + break; + default: + Debug.LogError("Trying to set defaults for invalid Raycast Mode: " + raycastMode); + return; + } + } + + private void SetPropertiesForVisual(bool shrinkLaser, float maxLaserDistance) + { + foreach (Object obj in serializedObject.targetObjects) + { + GvrLaserVisual laserVisual = (obj as MonoBehaviour).GetComponent(); + if (laserVisual != null) + { + SerializedObject serializedLaserVisual = new SerializedObject(laserVisual); + + SerializedProperty serializedShrinkLaser = + serializedLaserVisual.FindProperty(GvrLaserVisualEditor.SHRINK_LASER_PROP_NAME); + serializedShrinkLaser.boolValue = shrinkLaser; + + SerializedProperty serializedMaxLaserDistance = + serializedLaserVisual.FindProperty(GvrLaserVisualEditor.MAX_LASER_DISTANCE_PROP_NAME); + serializedMaxLaserDistance.floatValue = maxLaserDistance; + + serializedLaserVisual.ApplyModifiedProperties(); + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserPointerEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserPointerEditor.cs.meta new file mode 100644 index 0000000..d591721 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserPointerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cc6e38fe705a640ba9cc80555465b13e +timeCreated: 1498249337 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserVisualEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserVisualEditor.cs new file mode 100644 index 0000000..a6997c3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserVisualEditor.cs @@ -0,0 +1,123 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; +using System.Collections; + +/// Custom editor for GvrLaserVisual. +/// Shows the relationship between the shrinkLaser property and other related properties. +[CustomEditor(typeof(GvrLaserVisual)), CanEditMultipleObjects] +public class GvrLaserVisualEditor : Editor +{ + private SerializedProperty laserColor; + private SerializedProperty laserColorEnd; + private SerializedProperty maxLaserDistance; + private SerializedProperty shrinkLaser; + private SerializedProperty shrunkScale; + private SerializedProperty beginShrinkAngleDegrees; + private SerializedProperty endShrinkAngleDegrees; + private SerializedProperty lerpSpeed; + private SerializedProperty lerpThreshold; + private SerializedProperty reticle; + private SerializedProperty controller; + + public const string LASER_COLOR_PROP_NAME = "laserColor"; + public const string LASER_COLOR_END_PROP_NAME = "laserColorEnd"; + public const string MAX_LASER_DISTANCE_PROP_NAME = "maxLaserDistance"; + public const string SHRINK_LASER_PROP_NAME = "shrinkLaser"; + public const string SHURNK_SCALE_PROP_NAME = "shrunkScale"; + public const string BEGIN_SHRINKING_ANGLE_DEGREES_PROP_NAME = "beginShrinkAngleDegrees"; + public const string END_SHRINKING_ANGLE_DEGREES_PROP_NAME = "endShrinkAngleDegrees"; + public const string LERP_SPEED_PROP_NAME = "lerpSpeed"; + public const string LERP_THRESHOLD_PROP_NAME = "lerpThreshold"; + public const string RETICLE_PROP_NAME = "reticle"; + public const string CONTROLLER_PROP_NAME = "controller"; + + private const string ITEM_PREFIX = "• "; + + void OnEnable() + { + laserColor = serializedObject.FindProperty(LASER_COLOR_PROP_NAME); + laserColorEnd = serializedObject.FindProperty(LASER_COLOR_END_PROP_NAME); + maxLaserDistance = serializedObject.FindProperty(MAX_LASER_DISTANCE_PROP_NAME); + shrinkLaser = serializedObject.FindProperty(SHRINK_LASER_PROP_NAME); + shrunkScale = serializedObject.FindProperty(SHURNK_SCALE_PROP_NAME); + beginShrinkAngleDegrees = serializedObject.FindProperty(BEGIN_SHRINKING_ANGLE_DEGREES_PROP_NAME); + endShrinkAngleDegrees = serializedObject.FindProperty(END_SHRINKING_ANGLE_DEGREES_PROP_NAME); + lerpSpeed = serializedObject.FindProperty(LERP_SPEED_PROP_NAME); + lerpThreshold = serializedObject.FindProperty(LERP_THRESHOLD_PROP_NAME); + reticle = serializedObject.FindProperty(RETICLE_PROP_NAME); + controller = serializedObject.FindProperty(CONTROLLER_PROP_NAME); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + // Show properties for the laser visual. + EditorGUILayout.PropertyField(reticle); + EditorGUILayout.PropertyField(controller); + EditorGUILayout.PropertyField(laserColor); + EditorGUILayout.PropertyField(laserColorEnd); + EditorGUILayout.PropertyField(maxLaserDistance); + EditorGUILayout.PropertyField(lerpSpeed); + EditorGUILayout.PropertyField(lerpThreshold); + EditorGUILayout.PropertyField(shrinkLaser); + + // Show properties for shrinking animation. Only enabled if shrinkLaser is enabled. + if (!shrinkLaser.boolValue) + { + GUI.enabled = false; + } + + EditorGUI.indentLevel++; + Rect shrinkLaserRect = EditorGUILayout.BeginVertical(); + shrinkLaserRect = EditorGUI.IndentedRect(shrinkLaserRect); + GUI.Box(shrinkLaserRect, ""); + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(shrunkScale, + new GUIContent(ITEM_PREFIX + shrunkScale.displayName)); + + EditorGUILayout.PropertyField(beginShrinkAngleDegrees, + new GUIContent(ITEM_PREFIX + beginShrinkAngleDegrees.displayName)); + + EditorGUILayout.PropertyField(endShrinkAngleDegrees, + new GUIContent(ITEM_PREFIX + endShrinkAngleDegrees.displayName)); + + EditorGUILayout.Space(); + EditorGUILayout.EndVertical(); + EditorGUI.indentLevel--; + + if (!shrinkLaser.boolValue) + { + GUI.enabled = true; + } + + EditorGUILayout.Space(); + + serializedObject.ApplyModifiedProperties(); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserVisualEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserVisualEditor.cs.meta new file mode 100644 index 0000000..9f03084 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrLaserVisualEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 66fe40e11a2514648906e6825b026b85 +timeCreated: 1498249337 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrTooltipEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrTooltipEditor.cs new file mode 100644 index 0000000..b745432 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrTooltipEditor.cs @@ -0,0 +1,36 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; + +/// A custom editor for the GvrTooltip script. It exists to surface to the user that the tooltip +/// changes based on handedness, and to make it easy to preview the handedness settings. +[CustomEditor(typeof(GvrTooltip)), CanEditMultipleObjects] +public class GvrTooltipEditor : Editor +{ + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + EditorGUILayout.LabelField("Current Handedness", GvrSettings.Handedness.ToString(), EditorStyles.boldLabel); + if (GUILayout.Button("Change Handedness")) + { + EditorWindow.GetWindow(typeof(GvrEditorSettings)); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrTooltipEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrTooltipEditor.cs.meta new file mode 100644 index 0000000..e3f30e8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/Controller/GvrTooltipEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 23485e28fa60c463f8235998a0e76e6a +timeCreated: 1482187746 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem.meta new file mode 100644 index 0000000..9c2a06b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 65bc44f11433145749eaf7219d8dfdd3 +folderAsset: yes +timeCreated: 1487103058 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem/GvrPointerScrollInputEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem/GvrPointerScrollInputEditor.cs new file mode 100644 index 0000000..f10a819 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem/GvrPointerScrollInputEditor.cs @@ -0,0 +1,93 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.UI; +using UnityEditor; + +[CustomPropertyDrawer(typeof(GvrPointerScrollInput), true)] +public class GvrPointerScrollInputEditor : PropertyDrawer +{ + private bool isExpanded = true; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + int rows = GetNumRows(property); + float totalHeight = position.height; + float rowHeight = totalHeight / rows; + position.height = rowHeight; + + isExpanded = EditorGUI.Foldout(position, isExpanded, label); + + if (isExpanded) + { + EditorGUI.indentLevel++; + + // Inertia property. + SerializedProperty inertia = + property.FindPropertyRelative(GvrPointerScrollInput.PROPERTY_NAME_INERTIA); + + position.y += rowHeight; + EditorGUI.PropertyField(position, inertia); + + if (inertia.boolValue) + { + EditorGUI.indentLevel++; + + // Deceleration rate property. + SerializedProperty decelerationRate = + property.FindPropertyRelative(GvrPointerScrollInput.PROPERTY_NAME_DECELERATION_RATE); + + position.y += rowHeight; + EditorGUI.PropertyField(position, decelerationRate); + + EditorGUI.indentLevel--; + } + + EditorGUI.indentLevel--; + } + + EditorGUI.EndProperty(); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return base.GetPropertyHeight(property, label) * GetNumRows(property); + } + + private int GetNumRows(SerializedProperty property) + { + SerializedProperty inertia = + property.FindPropertyRelative(GvrPointerScrollInput.PROPERTY_NAME_INERTIA); + + if (!isExpanded) + { + return 1; + } + else if (!inertia.boolValue) + { + return 2; + } + else + { + return 3; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem/GvrPointerScrollInputEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem/GvrPointerScrollInputEditor.cs.meta new file mode 100644 index 0000000..c4abb86 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/EventSystem/GvrPointerScrollInputEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: da538b2d940864934bfd4a6f2e6d0602 +timeCreated: 1487103089 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrBuildProcessor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrBuildProcessor.cs new file mode 100644 index 0000000..bec37f6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrBuildProcessor.cs @@ -0,0 +1,149 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// Only invoke custom build processor when building for Android or iOS. +#if UNITY_ANDROID || UNITY_IOS +using UnityEngine; +using UnityEditor; +using UnityEditor.Build; +using System.Linq; + +#if UNITY_IOS +using UnityEditor.iOS.Xcode; +using System.IO; +#endif + +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + +#if UNITY_2018_1_OR_NEWER +using UnityEditor.Build.Reporting; +#endif + +// Notifies users if they build for Android or iOS without Cardboard or Daydream enabled. +#if UNITY_2018_1_OR_NEWER +class GvrBuildProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport +#else +class GvrBuildProcessor : IPreprocessBuild, IPostprocessBuild +#endif +{ + private const string VR_SETTINGS_NOT_ENABLED_ERROR_MESSAGE_FORMAT = + "To use the Google VR SDK on {0}, 'Player Settings > Virtual Reality Supported' setting must be checked.\n" + + "Please fix this setting and rebuild your app."; + + private const string IOS_MISSING_GVR_SDK_ERROR_MESSAGE = + "To use the Google VR SDK on iOS, 'Player Settings > Virtual Reality SDKs' must include 'Cardboard'.\n" + + "Please fix this setting and rebuild your app."; + + private const string ANDROID_MISSING_GVR_SDK_ERROR_MESSAGE = + "To use the Google VR SDK on Android, 'Player Settings > Virtual Reality SDKs' must include 'Daydream' or 'Cardboard'.\n" + + "Please fix this setting and rebuild your app."; + + public int callbackOrder + { + get { return 0; } + } + +#if UNITY_2018_1_OR_NEWER + public void OnPreprocessBuild(BuildReport report) + { + OnPreprocessBuild(report.summary.platform, report.summary.outputPath); + } +#endif + + public void OnPreprocessBuild(BuildTarget target, string path) + { + if (target != BuildTarget.Android && target != BuildTarget.iOS) + { + // Do nothing when not building for Android or iOS. + return; + } + + // 'Player Settings > Virtual Reality Supported' must be enabled. + if (!IsVRSupportEnabled()) + { + Debug.LogWarningFormat(VR_SETTINGS_NOT_ENABLED_ERROR_MESSAGE_FORMAT, target); + } + + if (target == BuildTarget.Android) + { + // When building for Android at least one VR SDK must be included. + // For Google VR valid VR SDKs are 'Daydream' and/or 'Cardboard'. + if (!IsSDKOtherThanNoneIncluded()) + { + Debug.LogWarning(ANDROID_MISSING_GVR_SDK_ERROR_MESSAGE); + } + } + + if (target == BuildTarget.iOS) + { + // When building for iOS at least one VR SDK must be included. + // For Google VR only 'Cardboard' is supported. + if (!IsSDKOtherThanNoneIncluded()) + { + Debug.LogWarning(IOS_MISSING_GVR_SDK_ERROR_MESSAGE); + } + } + } + +#if UNITY_2018_1_OR_NEWER + public void OnPostprocessBuild(BuildReport report) + { + OnPostprocessBuild(report.summary.platform, report.summary.outputPath); + } +#endif + + public void OnPostprocessBuild(BuildTarget target, string outputPath) + { +#if UNITY_IOS + // Add Camera usage description for scanning viewer QR codes on iOS. + if (target == BuildTarget.iOS) + { + // Read plist + var plistPath = Path.Combine(outputPath, "Info.plist"); + var plist = new PlistDocument(); + plist.ReadFromFile(plistPath); + + // Update value + PlistElementDict rootDict = plist.root; + rootDict.SetString("NSCameraUsageDescription", "Scan Cardboard viewer QR code"); + + // Write plist + File.WriteAllText(plistPath, plist.WriteToString()); + } +#endif + } + + // 'Player Settings > Virtual Reality Supported' enabled? + private bool IsVRSupportEnabled() + { + return PlayerSettings.virtualRealitySupported; + } + + // 'Player Settings > Virtual Reality SDKs' includes any VR SDK other than 'None'? + private bool IsSDKOtherThanNoneIncluded() + { + bool containsNone = XRSettings.supportedDevices.Contains(GvrSettings.VR_SDK_NONE); + int numSdks = XRSettings.supportedDevices.Length; + return containsNone ? numSdks > 1 : numSdks > 0; + } +} +#endif // UNITY_ANDROID || UNITY_IOS diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrBuildProcessor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrBuildProcessor.cs.meta new file mode 100644 index 0000000..3c3aa61 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrBuildProcessor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: acad0e6b1721a4b30992f78c06434321 +timeCreated: 1490158482 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorEmulatorEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorEmulatorEditor.cs new file mode 100644 index 0000000..b65a589 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorEmulatorEditor.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; + +/// A custom editor for the GvrEditorEmulator script. +/// It adds an info panel describing the camera controls. +[CustomEditor(typeof(GvrEditorEmulator)), CanEditMultipleObjects] +public class GvrEditorEmulatorEditor : Editor +{ + private float infoHeight; + + private const string INFO_TEXT = "Camera Controls:\n" + + " • Alt + Move Mouse = Change Yaw/Pitch\n" + + " • Ctrl + Move Mouse = Change Roll"; + + private const int NUM_INFO_LINES = 3; + + void OnEnable() + { + infoHeight = GvrInfoDrawer.GetHeightForLines(NUM_INFO_LINES); + } + + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + Rect rect = EditorGUILayout.GetControlRect(false, infoHeight); + GvrInfoDrawer.Draw(rect, INFO_TEXT, MessageType.None); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorEmulatorEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorEmulatorEditor.cs.meta new file mode 100644 index 0000000..8f0497c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorEmulatorEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f789f1d07e73f42b398b211da58efc42 +timeCreated: 1498601428 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorMenu.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorMenu.cs new file mode 100644 index 0000000..d810cce --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorMenu.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +// +// Copyright 2015 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; + +public class GvrEditorMenu +{ + [MenuItem("GoogleVR/Documentation/Developers Site", false, 100)] + private static void OpenDocumentation() + { + Application.OpenURL("https://developers.google.com/vr"); + } + + [MenuItem("GoogleVR/Documentation/Unity Guide", false, 100)] + private static void OpenUnityGuide() + { + Application.OpenURL("https://developers.google.com/vr/unity/guide"); + } + + [MenuItem("GoogleVR/Documentation/Release Notes", false, 100)] + private static void OpenReleaseNotes() + { + Application.OpenURL("https://developers.google.com/vr/unity/release-notes"); + } + + [MenuItem("GoogleVR/Documentation/Known Issues", false, 100)] + private static void OpenKnownIssues() + { + Application.OpenURL("https://developers.google.com/vr/unity/release-notes#known_issues"); + } + + [MenuItem("GoogleVR/Editor Settings", false, 100)] + private static void OpenEditorSettings() + { + EditorWindow.GetWindow(typeof(GvrEditorSettings)); + } + + [MenuItem("GoogleVR/Report Bug", false, 100)] + private static void OpenReportBug() + { + Application.OpenURL("https://github.com/googlesamples/cardboard-unity/issues"); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorMenu.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorMenu.cs.meta new file mode 100644 index 0000000..10aa887 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorMenu.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5eb60798954e54a7280c0cd353773edf +timeCreated: 1448497144 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorSettings.cs b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorSettings.cs new file mode 100644 index 0000000..db4c9e4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorSettings.cs @@ -0,0 +1,41 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; +using System.Collections; + +/// A custom editor window used to set editor preferences for GoogleVR. +/// Editor preferences are editor specific options that help build and test +/// applications from within the Unity Editor. +class GvrEditorSettings : EditorWindow +{ + void OnGUI() + { + // Label for Controller Emulator settings + EditorGUILayout.LabelField("Controller Emulator", EditorStyles.boldLabel); + + // Option to control Handedness + GvrSettings.UserPrefsHandedness oldHandedness = GvrSettings.Handedness; + GvrSettings.Handedness = (GvrSettings.UserPrefsHandedness)EditorGUILayout.EnumPopup("Handedness", oldHandedness); + if (oldHandedness != GvrSettings.Handedness) + { + UnityEditorInternal.InternalEditorUtility.RepaintAllViews(); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorSettings.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorSettings.cs.meta new file mode 100644 index 0000000..9911e02 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Editor/GvrEditorSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ce0ec89649a704bd991b4db7e412794f +timeCreated: 1482180802 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Fonts.meta b/Unity_VR_Assignment/Assets/GoogleVR/Fonts.meta new file mode 100644 index 0000000..ebfef06 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Fonts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a589de3134513e34e8b233ada87a3c70 +folderAsset: yes +timeCreated: 1476489356 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Fonts/Roboto-Medium.ttf b/Unity_VR_Assignment/Assets/GoogleVR/Fonts/Roboto-Medium.ttf new file mode 100644 index 0000000..a3c1a1f Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Fonts/Roboto-Medium.ttf differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Fonts/Roboto-Medium.ttf.meta b/Unity_VR_Assignment/Assets/GoogleVR/Fonts/Roboto-Medium.ttf.meta new file mode 100644 index 0000000..c7c8852 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Fonts/Roboto-Medium.ttf.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: 4eedafad5084240419e649245c7b2093 +timeCreated: 1476470356 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontNames: + - Roboto + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/LICENSE b/Unity_VR_Assignment/Assets/GoogleVR/LICENSE new file mode 100644 index 0000000..70447f8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/LICENSE @@ -0,0 +1,400 @@ +=============================================================================== + +The following files: +- Assets/GoogleVR/Plugins/Android/gvr.aar +- Assets/GoogleVR/Plugins/Android/gvr-keyboard.aar +- Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.so +- Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libgvrvideo.so +- Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.so +- Assets/GoogleVR/Plugins/Android/libs/x86/libgvrvideo.so +- Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.a +- Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dll +- Assets/GoogleVR/Plugins/x86/instant_preview_shared.dll +- Assets/GoogleVR/Plugins/x86/instant_preview_unity_plugin.dll +- Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundle +- Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dll +- Assets/GoogleVR/Plugins/x86_64/instant_preview_shared.dll +- Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle +- Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.dll +- Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.so + +are licensed as follows: + +Covered by the **Google APIs Terms of Service** at +[https://developers.google.com/terms/](https://developers.google.com/terms/) + +=============================================================================== + +The following files: +- Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs +- Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModuleImpl.cs + +are licensed as follows: + + +The MIT License (MIT) + +Copyright (c) 2015, Unity Technologies & Google, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +=============================================================================== + +The following files: +- Assets/GoogleVR/Plugins/x86/libeay32.dll +- Assets/GoogleVR/Plugins/x86/ssleay32.dll +- Assets/GoogleVR/Plugins/x86_64/libeay32.dll +- Assets/GoogleVR/Plugins/x86_64/ssleay32.dll + +are licensed as follows: + +Copyright (c) 1998-2018 The OpenSSL Project. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +3. All advertising materials mentioning features or use of this + software must display the following acknowledgment: + "This product includes software developed by the OpenSSL Project + for use in the OpenSSL Toolkit. (http://www.openssl.org/)" + +4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to + endorse or promote products derived from this software without + prior written permission. For written permission, please contact + openssl-core@openssl.org. + +5. Products derived from this software may not be called "OpenSSL" + nor may "OpenSSL" appear in their names without prior written + permission of the OpenSSL Project. + +6. Redistributions of any form whatsoever must retain the following + acknowledgment: + "This product includes software developed by the OpenSSL Project + for use in the OpenSSL Toolkit (http://www.openssl.org/)" + +THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY +EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR +ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. +==================================================================== + +This product includes cryptographic software written by Eric Young +(eay@cryptsoft.com). This product includes software written by Tim +Hudson (tjh@cryptsoft.com). + +=============================================================================== + +The following file: +- Assets/GoogleVR/Plugins/x86/zlib.dll +- Assets/GoogleVR/Plugins/x86_64/zlib.dll + +is licensed as follows: + +Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Jean-loup Gailly Mark Adler +jloup@gzip.org madler@alumni.caltech.edu + +=============================================================================== + +The following file: +- Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll + +is licensed as follows: + +Protocol Buffers - Google's data interchange format +Copyright 2008-2010 Google Inc. All rights reserved. +http://github.com/jskeet/dotnet-protobufs/ +Original C++/Java/Python code: +http://code.google.com/p/protobuf/ + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +=============================================================================== + +The following file: +- Assets/GoogleVR/Plugins/Android/exoplayer-1.5.11.aar + +is licensed under the Apache License, Version 2.0, with source code at +[https://github.com/google/ExoPlayer](https://github.com/google/ExoPlayer) + +=============================================================================== + +Except as indicated previously in this LICENSE file, +files in this SDK are licensed as follows: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + diff --git a/Unity_VR_Assignment/Assets/GoogleVR/LICENSE.meta b/Unity_VR_Assignment/Assets/GoogleVR/LICENSE.meta new file mode 100644 index 0000000..f15b72b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/LICENSE.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 0ae37b2426f844468ab02f411263ae0d +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy.meta new file mode 100644 index 0000000..3793001 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1d946f864c66547f4b718e33668d9b9b +folderAsset: yes +timeCreated: 1495577632 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor.meta new file mode 100644 index 0000000..722bcdb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 71cc327fd0c684331a3ba007b6b87a02 +folderAsset: yes +timeCreated: 1509728133 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio.meta new file mode 100644 index 0000000..9f633c0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 78a71aad72f194df680b6901ce6f8480 +folderAsset: yes +timeCreated: 1482368339 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioListenerEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioListenerEditor.cs new file mode 100644 index 0000000..5b75f32 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioListenerEditor.cs @@ -0,0 +1,87 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// A custom editor for properties on the GvrAudioListener script. This appears in the Inspector +/// window of a GvrAudioListener object. +[CustomEditor(typeof(GvrAudioListener))] +public class GvrAudioListenerEditor : Editor +{ + private SerializedProperty globalGainDb = null; + + private SerializedProperty occlusionMask = null; + + private SerializedProperty quality = null; + + private GUIContent globalGainLabel = new GUIContent( + "Global Gain (dB)", + "Sets the global gain of the system. Can be used to adjust the overall output volume."); + + private GUIContent occlusionMaskLabel = new GUIContent( + "Occlusion Mask", + "Sets the global layer mask for occlusion detection."); + + private const string QUALITY_LABEL_DESCRIPTION = + "Sets the quality mode in which the spatial audio will be rendered. " + + "Higher quality modes allow for increased fidelity at the cost of greater CPU usage."; + + private GUIContent qualityLabel = new GUIContent("Quality", QUALITY_LABEL_DESCRIPTION); + + void OnEnable() + { + globalGainDb = serializedObject.FindProperty("globalGainDb"); + occlusionMask = serializedObject.FindProperty("occlusionMask"); + quality = serializedObject.FindProperty("quality"); + } + + /// @cond + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + // Rendering quality can only be modified through the Inspector in Edit mode. + EditorGUI.BeginDisabledGroup(EditorApplication.isPlaying); + EditorGUILayout.PropertyField(quality, qualityLabel); + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.Separator(); + + EditorGUILayout.Slider(globalGainDb, GvrAudio.minGainDb, GvrAudio.maxGainDb, globalGainLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(occlusionMask, occlusionMaskLabel); + + serializedObject.ApplyModifiedProperties(); + } + + /// @endcond +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioListenerEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioListenerEditor.cs.meta new file mode 100644 index 0000000..bd08b20 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioListenerEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 846f7b1b78d8e4eb2a0db361797b6e76 +timeCreated: 1447979035 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioRoomEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioRoomEditor.cs new file mode 100644 index 0000000..bc8b33f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioRoomEditor.cs @@ -0,0 +1,143 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// A custom editor for properties on the GvrAudioRoom script. This appears in the Inspector window +/// of a GvrAudioRoom object. +[CustomEditor(typeof(GvrAudioRoom))] +[CanEditMultipleObjects] +public class GvrAudioRoomEditor : Editor +{ + private SerializedProperty leftWall = null; + private SerializedProperty rightWall = null; + private SerializedProperty floor = null; + private SerializedProperty ceiling = null; + private SerializedProperty backWall = null; + private SerializedProperty frontWall = null; + private SerializedProperty reflectivity = null; + private SerializedProperty reverbGainDb = null; + private SerializedProperty reverbBrightness = null; + private SerializedProperty reverbTime = null; + private SerializedProperty size = null; + + private GUIContent surfaceMaterialsLabel = new GUIContent( + "Surface Materials", + "Room surface materials to calculate the acoustic properties of the room."); + + private GUIContent surfaceMaterialLabel = new GUIContent( + "Surface Material", + "Surface material used to calculate the acoustic properties of the room."); + + private const string REFLECTIVITY_LABEL_DESCRIPTION = + "Adjusts what proportion of the direct sound is reflected back by each surface, after an appropriate delay. " + + "Reverberation is unaffected by this setting."; + + private GUIContent reflectivityLabel = new GUIContent("Reflectivity", REFLECTIVITY_LABEL_DESCRIPTION); + + private GUIContent reverbGainLabel = new GUIContent( + "Gain(dB)", + "Applies a gain adjustment to the reverberation in the room. The default value will leave reverb unaffected."); + + private GUIContent reverbPropertiesLabel = new GUIContent( + "Reverb Properties", + "Parameters to adjust the reverb properties of the room."); + + private GUIContent reverbBrightnessLabel = new GUIContent( + "Brightness", + "Adjusts the balance between high and low frequencies in the reverb."); + + private GUIContent reverbTimeLabel = new GUIContent( + "Time", + "Adjusts the overall duration of the reverb by a positive scaling factor."); + + private GUIContent sizeLabel = new GUIContent("Size", "Sets the room dimensions."); + + void OnEnable() + { + leftWall = serializedObject.FindProperty("leftWall"); + rightWall = serializedObject.FindProperty("rightWall"); + floor = serializedObject.FindProperty("floor"); + ceiling = serializedObject.FindProperty("ceiling"); + backWall = serializedObject.FindProperty("backWall"); + frontWall = serializedObject.FindProperty("frontWall"); + reflectivity = serializedObject.FindProperty("reflectivity"); + reverbGainDb = serializedObject.FindProperty("reverbGainDb"); + reverbBrightness = serializedObject.FindProperty("reverbBrightness"); + reverbTime = serializedObject.FindProperty("reverbTime"); + size = serializedObject.FindProperty("size"); + } + + /// @cond + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.LabelField(surfaceMaterialsLabel); + ++EditorGUI.indentLevel; + DrawSurfaceMaterial(leftWall); + DrawSurfaceMaterial(rightWall); + DrawSurfaceMaterial(floor); + DrawSurfaceMaterial(ceiling); + DrawSurfaceMaterial(backWall); + DrawSurfaceMaterial(frontWall); + --EditorGUI.indentLevel; + + EditorGUILayout.Separator(); + + EditorGUILayout.Slider(reflectivity, 0.0f, GvrAudio.maxReflectivity, reflectivityLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.LabelField(reverbPropertiesLabel); + ++EditorGUI.indentLevel; + EditorGUILayout.Slider( + reverbGainDb, GvrAudio.minGainDb, GvrAudio.maxGainDb, reverbGainLabel); + EditorGUILayout.Slider( + reverbBrightness, GvrAudio.minReverbBrightness, + GvrAudio.maxReverbBrightness, reverbBrightnessLabel); + EditorGUILayout.Slider(reverbTime, 0.0f, GvrAudio.maxReverbTime, reverbTimeLabel); + --EditorGUI.indentLevel; + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(size, sizeLabel); + + serializedObject.ApplyModifiedProperties(); + } + + /// @endcond + + private void DrawSurfaceMaterial(SerializedProperty surfaceMaterial) + { + surfaceMaterialLabel.text = surfaceMaterial.displayName; + EditorGUILayout.PropertyField(surfaceMaterial, surfaceMaterialLabel); + } +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioRoomEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioRoomEditor.cs.meta new file mode 100644 index 0000000..9f865a2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioRoomEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2e20199949e8e4ecd992d68cf09fc902 +timeCreated: 1447979493 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSoundfieldEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSoundfieldEditor.cs new file mode 100644 index 0000000..1578d92 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSoundfieldEditor.cs @@ -0,0 +1,193 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// A custom editor for properties on the GvrAudioSoundfield script. This appears in the Inspector +/// window of a GvrAudioSoundfield object. +[CustomEditor(typeof(GvrAudioSoundfield))] +[CanEditMultipleObjects] +public class GvrAudioSoundfieldEditor : Editor +{ + private SerializedProperty clip0102 = null; + private SerializedProperty clip0304 = null; + private SerializedProperty loop = null; + private SerializedProperty mute = null; + private SerializedProperty pitch = null; + private SerializedProperty playOnAwake = null; + private SerializedProperty priority = null; + private SerializedProperty spatialBlend = null; + private SerializedProperty volume = null; + private SerializedProperty dopplerLevel = null; + private SerializedProperty rolloffMode = null; + private SerializedProperty maxDistance = null; + private SerializedProperty minDistance = null; + private SerializedProperty bypassRoomEffects = null; + private SerializedProperty gainDb = null; + + private GUIContent clip0102Label = new GUIContent( + "Channels 1 & 2 (WY)", + "The AudioClip asset for the 1 & 2 channels (W & Y components) of the first-order ambisonic soundfield. Channels must be in Ambix (ACN/SN3D) format."); + + private GUIContent clip0304Label = new GUIContent( + "Channels 3 & 4 (ZX)", + "The AudioClip asset for the 3 & 4 channels (Z & X components) of the first-order ambisonic soundfield. Channels must be in Ambix (ACN/SN3D) format."); + + private GUIContent loopLabel = new GUIContent( + "Loop", + "Sets the soundfield to loop."); + + private GUIContent muteLabel = new GUIContent( + "Mute", + "Mutes the sound."); + + private GUIContent pitchLabel = new GUIContent( + "Pitch", + "Sets the frequency of the sound. Use this to slow down or speed up the sound."); + + private GUIContent priorityLabel = new GUIContent( + "Priority", + "Sets the priority of the soundfield. Note that a sound with a larger priority value will more likely be stolen by sounds with smaller priority values."); + + private GUIContent spatialBlendLabel = new GUIContent( + "Spatial Blend", + "Sets how much this soundfield is treated as a 3D source. Setting this value to 0 will ignore distance attenuation and doppler effects. However, it does not affect panning the sound around the listener."); + + private GUIContent volumeLabel = new GUIContent( + "Volume", + "Sets the overall volume of the soundfield."); + + private GUIContent dopplerLevelLabel = new GUIContent( + "Doppler Level", + "Specifies how much the pitch is changed based on the relative velocity between the soundfield and the listener."); + + private GUIContent rolloffModeLabel = new GUIContent( + "Volume Rolloff", + "Which type of rolloff curve to use."); + + private GUIContent maxDistanceLabel = new GUIContent( + "Max Distance", + "Max distance is the distance a sound stops attenuating at."); + + private GUIContent minDistanceLabel = new GUIContent( + "Min Distance", + "Within the min distance, the volume will stay at the loudest possible. Outside this min distance it will begin to attenuate."); + + private GUIContent playOnAwakeLabel = new GUIContent( + "Play On Awake", + "Play the sound when the scene loads."); + + private GUIContent bypassRoomEffectsLabel = new GUIContent( + "Bypass Room Effects", + "Sets whether the room effects for the soundfield should be bypassed."); + + private GUIContent gainLabel = new GUIContent( + "Gain (dB)", + "Applies a gain to the soundfield for adjustment of relative loudness."); + + void OnEnable() + { + clip0102 = serializedObject.FindProperty("soundfieldClip0102"); + clip0304 = serializedObject.FindProperty("soundfieldClip0304"); + loop = serializedObject.FindProperty("soundfieldLoop"); + mute = serializedObject.FindProperty("soundfieldMute"); + pitch = serializedObject.FindProperty("soundfieldPitch"); + playOnAwake = serializedObject.FindProperty("playOnAwake"); + priority = serializedObject.FindProperty("soundfieldPriority"); + spatialBlend = serializedObject.FindProperty("soundfieldSpatialBlend"); + volume = serializedObject.FindProperty("soundfieldVolume"); + dopplerLevel = serializedObject.FindProperty("soundfieldDopplerLevel"); + rolloffMode = serializedObject.FindProperty("soundfieldRolloffMode"); + maxDistance = serializedObject.FindProperty("soundfieldMaxDistance"); + minDistance = serializedObject.FindProperty("soundfieldMinDistance"); + bypassRoomEffects = serializedObject.FindProperty("bypassRoomEffects"); + gainDb = serializedObject.FindProperty("gainDb"); + } + + /// @cond + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.LabelField("AudioClip"); + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(clip0102, clip0102Label); + EditorGUILayout.PropertyField(clip0304, clip0304Label); + EditorGUI.indentLevel--; + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(mute, muteLabel); + EditorGUILayout.PropertyField(bypassRoomEffects, bypassRoomEffectsLabel); + EditorGUILayout.PropertyField(playOnAwake, playOnAwakeLabel); + EditorGUILayout.PropertyField(loop, loopLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(priority, priorityLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(volume, volumeLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(pitch, pitchLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(spatialBlend, spatialBlendLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.Slider(gainDb, GvrAudio.minGainDb, GvrAudio.maxGainDb, gainLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(dopplerLevel, dopplerLevelLabel); + EditorGUILayout.PropertyField(rolloffMode, rolloffModeLabel); + ++EditorGUI.indentLevel; + EditorGUILayout.PropertyField(minDistance, minDistanceLabel); + EditorGUILayout.PropertyField(maxDistance, maxDistanceLabel); + --EditorGUI.indentLevel; + if (rolloffMode.enumValueIndex == (int)AudioRolloffMode.Custom) + { + EditorGUILayout.HelpBox( + "Custom rolloff mode is not supported, no distance attenuation will be applied.", + MessageType.Warning); + } + + EditorGUILayout.Separator(); + + serializedObject.ApplyModifiedProperties(); + } + + /// @endcond +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSoundfieldEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSoundfieldEditor.cs.meta new file mode 100644 index 0000000..a52f788 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSoundfieldEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 95b832a777470485b891baa8026133ce +timeCreated: 1466541793 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSourceEditor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSourceEditor.cs new file mode 100644 index 0000000..8eb3c6e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSourceEditor.cs @@ -0,0 +1,297 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEditor; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// A custom editor for properties on the GvrAudioSource script. This appears in the Inspector +/// window of a GvrAudioSource object. +[CustomEditor(typeof(GvrAudioSource))] +[CanEditMultipleObjects] +public class GvrAudioSourceEditor : Editor +{ + private SerializedProperty clip = null; + private SerializedProperty loop = null; + private SerializedProperty mute = null; + private SerializedProperty pitch = null; + private SerializedProperty playOnAwake = null; + private SerializedProperty priority = null; + private SerializedProperty spatialBlend = null; + private SerializedProperty volume = null; + private SerializedProperty dopplerLevel = null; + private SerializedProperty spread = null; + private SerializedProperty rolloffMode = null; + private SerializedProperty maxDistance = null; + private SerializedProperty minDistance = null; + private SerializedProperty bypassRoomEffects = null; + private SerializedProperty directivityAlpha = null; + private SerializedProperty directivitySharpness = null; + private SerializedProperty listenerDirectivityAlpha = null; + private SerializedProperty listenerDirectivitySharpness = null; + private Texture2D directivityTexture = null; + private SerializedProperty gainDb = null; + private SerializedProperty hrtfEnabled = null; + private SerializedProperty occlusionEnabled = null; + + private GUIContent clipLabel = new GUIContent( + "AudioClip", "The AudioClip asset played by the GvrAudioSource."); + + private GUIContent loopLabel = new GUIContent( + "Loop", "Sets the source to loop."); + + private GUIContent muteLabel = new GUIContent( + "Mute", "Mutes the sound."); + + private GUIContent pitchLabel = new GUIContent( + "Pitch", + "Sets the frequency of the sound. Use this to slow down or speed up the sound."); + + private GUIContent priorityLabel = new GUIContent( + "Priority", + "Sets the priority of the source. Note that a sound with a larger priority value will more likely be stolen by sounds with smaller priority values."); + + private GUIContent spatialBlendLabel = new GUIContent( + "Spatial Blend", + "Sets how much this source is treated as a 3D source. Setting this value to 0 will ignore distance attenuation and doppler effects. However, it does not affect panning the sound around the listener."); + + private GUIContent volumeLabel = new GUIContent( + "Volume", "Sets the overall volume of the sound."); + + private GUIContent dopplerLevelLabel = new GUIContent( + "Doppler Level", + "Specifies how much the pitch is changed based on the relative velocity between the source and the listener."); + + private GUIContent spreadLabel = new GUIContent( + "Spread", "Source spread in degrees."); + + private GUIContent rolloffModeLabel = new GUIContent( + "Volume Rolloff", "Which type of rolloff curve to use."); + + private GUIContent maxDistanceLabel = new GUIContent( + "Max Distance", + "Max distance is the distance a sound stops attenuating at."); + + private GUIContent minDistanceLabel = new GUIContent( + "Min Distance", + "Within the min distance, the volume will stay at the loudest possible. Outside this min distance it will begin to attenuate."); + + private GUIContent playOnAwakeLabel = new GUIContent( + "Play On Awake", "Play the sound when the scene loads."); + + private GUIContent bypassRoomEffectsLabel = new GUIContent( + "Bypass Room Effects", + "Sets whether the room effects for the source should be bypassed."); + + private GUIContent directivityLabel = new GUIContent( + "Directivity", + "Controls the pattern of sound emission of the source. This can change the perceived loudness of the source depending on which way it is facing relative to the listener. Patterns are aligned to the 'forward' direction of the parent object."); + + private GUIContent directivityAlphaLabel = new GUIContent( + "Alpha", + "Controls the balance between dipole pattern and omnidirectional pattern for source emission. By varying this value, differing directivity patterns can be formed."); + + private GUIContent directivitySharpnessLabel = new GUIContent( + "Sharpness", + "Sets the sharpness of the directivity pattern. Higher values will result in increased directivity."); + + private GUIContent listenerDirectivityLabel = new GUIContent( + "Listener Directivity", + "Controls the pattern of sound sensitivity of the listener for the source. This can change the perceived loudness of the source depending on which way the listener is facing relative to the source. Patterns are aligned to the 'forward' direction of the listener."); + + private GUIContent listenerDirectivityAlphaLabel = new GUIContent( + "Alpha", + "Controls the balance between dipole pattern and omnidirectional pattern for listener sensitivity. By varying this value, differing directivity patterns can be formed."); + + private GUIContent listenerDirectivitySharpnessLabel = new GUIContent( + "Sharpness", + "Sets the sharpness of the listener directivity pattern. Higher values will result in increased directivity."); + + private GUIContent gainLabel = new GUIContent( + "Gain(dB)", + "Applies a gain to the source for adjustment of relative loudness."); + + private GUIContent hrtfEnabledLabel = new GUIContent( + "Enable HRTF", + "Sets HRTF binaural rendering for the source. Note that this setting has no effect when stereo quality mode is selected globally."); + + private GUIContent occlusionLabel = new GUIContent( + "Enable Occlusion", + "Sets whether the sound of the source should be occluded when there are other objects between the source and the listener."); + + void OnEnable() + { + clip = serializedObject.FindProperty("sourceClip"); + loop = serializedObject.FindProperty("sourceLoop"); + mute = serializedObject.FindProperty("sourceMute"); + pitch = serializedObject.FindProperty("sourcePitch"); + playOnAwake = serializedObject.FindProperty("playOnAwake"); + priority = serializedObject.FindProperty("sourcePriority"); + spatialBlend = serializedObject.FindProperty("sourceSpatialBlend"); + volume = serializedObject.FindProperty("sourceVolume"); + dopplerLevel = serializedObject.FindProperty("sourceDopplerLevel"); + spread = serializedObject.FindProperty("sourceSpread"); + rolloffMode = serializedObject.FindProperty("sourceRolloffMode"); + maxDistance = serializedObject.FindProperty("sourceMaxDistance"); + minDistance = serializedObject.FindProperty("sourceMinDistance"); + bypassRoomEffects = serializedObject.FindProperty("bypassRoomEffects"); + directivityAlpha = serializedObject.FindProperty("directivityAlpha"); + directivitySharpness = serializedObject.FindProperty("directivitySharpness"); + listenerDirectivityAlpha = serializedObject.FindProperty("listenerDirectivityAlpha"); + listenerDirectivitySharpness = serializedObject.FindProperty("listenerDirectivitySharpness"); + directivityTexture = Texture2D.blackTexture; + gainDb = serializedObject.FindProperty("gainDb"); + hrtfEnabled = serializedObject.FindProperty("hrtfEnabled"); + occlusionEnabled = serializedObject.FindProperty("occlusionEnabled"); + } + + /// @cond + public override void OnInspectorGUI() + { + serializedObject.Update(); + + // Add clickable script field, as would have been provided by DrawDefaultInspector() + MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour); + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false); + EditorGUI.EndDisabledGroup(); + + EditorGUILayout.PropertyField(clip, clipLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(mute, muteLabel); + EditorGUILayout.PropertyField(bypassRoomEffects, bypassRoomEffectsLabel); + EditorGUILayout.PropertyField(playOnAwake, playOnAwakeLabel); + EditorGUILayout.PropertyField(loop, loopLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(priority, priorityLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(volume, volumeLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(pitch, pitchLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(spatialBlend, spatialBlendLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.Slider(gainDb, GvrAudio.minGainDb, GvrAudio.maxGainDb, gainLabel); + + EditorGUILayout.Separator(); + + EditorGUILayout.PropertyField(dopplerLevel, dopplerLevelLabel); + EditorGUILayout.PropertyField(spread, spreadLabel); + EditorGUILayout.PropertyField(rolloffMode, rolloffModeLabel); + ++EditorGUI.indentLevel; + EditorGUILayout.PropertyField(minDistance, minDistanceLabel); + EditorGUILayout.PropertyField(maxDistance, maxDistanceLabel); + --EditorGUI.indentLevel; + if (rolloffMode.enumValueIndex == (int)AudioRolloffMode.Custom) + { + EditorGUILayout.HelpBox( + "Custom rolloff mode is not supported, no distance attenuation will be applied.", + MessageType.Warning); + } + + EditorGUILayout.Separator(); + + // Draw the listener directivity properties. + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.BeginVertical(); + GUILayout.Label(listenerDirectivityLabel); + ++EditorGUI.indentLevel; + EditorGUILayout.Slider(listenerDirectivityAlpha, 0.0f, 1.0f, listenerDirectivityAlphaLabel); + EditorGUILayout.Slider(listenerDirectivitySharpness, 1.0f, 10.0f, + listenerDirectivitySharpnessLabel); + --EditorGUI.indentLevel; + EditorGUILayout.EndVertical(); + DrawDirectivityPattern(listenerDirectivityAlpha.floatValue, + listenerDirectivitySharpness.floatValue, + GvrAudio.listenerDirectivityColor, + (int)(3.0f * EditorGUIUtility.singleLineHeight)); + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.Separator(); + + // Draw the source directivity properties. + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.BeginVertical(); + GUILayout.Label(directivityLabel); + ++EditorGUI.indentLevel; + EditorGUILayout.Slider(directivityAlpha, 0.0f, 1.0f, directivityAlphaLabel); + EditorGUILayout.Slider(directivitySharpness, 1.0f, 10.0f, directivitySharpnessLabel); + --EditorGUI.indentLevel; + EditorGUILayout.EndVertical(); + DrawDirectivityPattern(directivityAlpha.floatValue, directivitySharpness.floatValue, + GvrAudio.sourceDirectivityColor, + (int)(3.0f * EditorGUIUtility.singleLineHeight)); + EditorGUILayout.EndHorizontal(); + EditorGUILayout.PropertyField(occlusionEnabled, occlusionLabel); + + EditorGUILayout.Separator(); + + // HRTF toggle can only be modified through the Inspector in Edit mode. + EditorGUI.BeginDisabledGroup(EditorApplication.isPlaying); + EditorGUILayout.PropertyField(hrtfEnabled, hrtfEnabledLabel); + EditorGUI.EndDisabledGroup(); + + serializedObject.ApplyModifiedProperties(); + } + + /// @endcond + + private void DrawDirectivityPattern(float alpha, float sharpness, Color color, int size) + { + directivityTexture.Resize(size, size); + + // Draw the axes. + Color axisColor = color.a * Color.black; + for (int i = 0; i < size; ++i) + { + directivityTexture.SetPixel(i, size / 2, axisColor); + directivityTexture.SetPixel(size / 2, i, axisColor); + } + + // Draw the 2D polar directivity pattern. + float offset = 0.5f * size; + float cardioidSize = 0.45f * size; + Vector2[] vertices = GvrAudio.Generate2dPolarPattern(alpha, sharpness, 180); + for (int i = 0; i < vertices.Length; ++i) + { + directivityTexture.SetPixel((int)(offset + cardioidSize * vertices[i].x), + (int)(offset + cardioidSize * vertices[i].y), color); + } + + directivityTexture.Apply(); + + // Show the texture. + GUILayout.Box(directivityTexture); + } +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSourceEditor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSourceEditor.cs.meta new file mode 100644 index 0000000..d5c94c1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSourceEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 39eb02921e5624cf18f5b235bcc1e1cb +timeCreated: 1447979178 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources.meta new file mode 100644 index 0000000..ca0abf9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: c5cce34e4c5954a0b8bdf30ff6a18430 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources/GvrAudioMixer.mixer b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources/GvrAudioMixer.mixer new file mode 100644 index 0000000..143ae19 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources/GvrAudioMixer.mixer @@ -0,0 +1,76 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!241 &24100000 +AudioMixerController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: GvrAudioMixer + m_OutputGroup: {fileID: 0} + m_MasterGroup: {fileID: 24300001} + m_Snapshots: + - {fileID: 24500003} + m_StartSnapshot: {fileID: 24500003} + m_SuspendThreshold: -80 + m_EnableSuspend: 1 + m_ExposedParameters: [] + m_AudioMixerGroupViews: + - guids: + - 0c48f19e7c7f64049b5019efdfe794dd + name: View + m_CurrentViewIndex: 0 + m_TargetSnapshot: {fileID: 24500003} +--- !u!243 &24300001 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Master + m_AudioMixer: {fileID: 24100000} + m_GroupID: 0c48f19e7c7f64049b5019efdfe794dd + m_Children: [] + m_Volume: f2077248ad8e04a4b85906f156bc9139 + m_Pitch: e3bf857f793844dc6ad37ced1bb37e31 + m_Effects: + - {fileID: 24415202} + - {fileID: 24400002} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &24400002 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_EffectID: 1d75231a3eb9547d6bd90860dd5851a0 + m_EffectName: Attenuation + m_MixLevel: 087cc13ea75d3499fa1dd7404f66b0af + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!244 &24415202 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + m_EffectID: e3e5096179e9641ec8b7b1e0d1d89905 + m_EffectName: GVR Audio Renderer + m_MixLevel: 5939f9f8f13db463aad991ae3514491d + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!245 &24500003 +AudioMixerSnapshotController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Snapshot + m_AudioMixer: {fileID: 24100000} + m_SnapshotID: 631b64129c98e4ed4be93f5196ab1cac + m_FloatValues: {} + m_TransitionOverrides: {} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources/GvrAudioMixer.mixer.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources/GvrAudioMixer.mixer.meta new file mode 100644 index 0000000..6a77401 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Resources/GvrAudioMixer.mixer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ca71259be6348485abbe393157796cb8 +timeCreated: 1454001091 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts.meta new file mode 100644 index 0000000..cf49b46 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2041d0c23c9c94b0bb8456a5e97dae9e +folderAsset: yes +timeCreated: 1495577638 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio.meta new file mode 100644 index 0000000..9861951 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 373d3ea6bc95c4fc78ad9bd3da8dec22 +folderAsset: yes +timeCreated: 1448875499 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudio.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudio.cs new file mode 100644 index 0000000..bba59c9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudio.cs @@ -0,0 +1,518 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Runtime.InteropServices; + +/// This is the main GVR audio class that communicates with the native code implementation of +/// the audio system. Native functions of the system can only be called through this class to +/// preserve the internal system functionality. Public function calls are *not* thread-safe. +#if UNITY_2017_1_OR_NEWER +[System.Obsolete("GvrAudio is deprecated. Please upgrade to Resonance Audio (https://developers.google.com/resonance-audio/migrate).")] +#endif // UNITY_2017_1_OR_NEWER +public static class GvrAudio +{ + /// Audio system rendering quality. + public enum Quality + { + /// Stereo-only rendering + Stereo = 0, + + /// Low quality binaural rendering (first-order HRTF) + Low = 1, + + /// High quality binaural rendering (third-order HRTF) + High = 2, + } + + /// Native audio spatializer effect data. + public enum SpatializerData + { + /// ID. + Id = 0, + + /// Spatializer type. + Type = 1, + + /// Number of input channels. + NumChannels = 2, + + /// Soundfield channel set. + ChannelSet = 3, + + /// Gain. + Gain = 4, + + /// Computed distance attenuation. + DistanceAttenuation = 5, + + /// Minimum distance for distance-based attenuation. + MinDistance = 6, + + /// Should zero out the output buffer? + ZeroOutput = 7, + } + + /// Native audio spatializer type. + public enum SpatializerType + { + /// 3D sound object. + Source = 0, + + /// First-order ambisonic soundfield. + Soundfield = 1 + } + + /// System sampling rate. + public static int SampleRate + { + get { return sampleRate; } + } + + private static int sampleRate = -1; + + /// System number of output channels. + public static int NumChannels + { + get { return numChannels; } + } + + private static int numChannels = -1; + + /// System number of frames per buffer. + public static int FramesPerBuffer + { + get { return framesPerBuffer; } + } + + private static int framesPerBuffer = -1; + + /// Initializes the audio system with the current audio configuration. + /// @note This should only be called from the main Unity thread. + public static void Initialize(GvrAudioListener listener, Quality quality) + { + if (!initialized) + { + // Initialize the audio system. + AudioConfiguration config = AudioSettings.GetConfiguration(); + sampleRate = config.sampleRate; + numChannels = (int)config.speakerMode; + framesPerBuffer = config.dspBufferSize; + if (numChannels != (int)AudioSpeakerMode.Stereo) + { + Debug.LogError("Only 'Stereo' speaker mode is supported by GVR Audio."); + return; + } + + Initialize((int)quality, sampleRate, numChannels, framesPerBuffer); + listenerTransform = listener.transform; + + initialized = true; + } + else if (listener.transform != listenerTransform) + { + Debug.LogError("Only one GvrAudioListener component is allowed in the scene."); + GvrAudioListener.Destroy(listener); + } + } + + /// Shuts down the audio system. + /// @note This should only be called from the main Unity thread. + public static void Shutdown(GvrAudioListener listener) + { + if (initialized && listener.transform == listenerTransform) + { + initialized = false; + + Shutdown(); + sampleRate = -1; + numChannels = -1; + framesPerBuffer = -1; + listenerTransform = null; + } + } + + /// Updates the audio listener. + /// @note This should only be called from the main Unity thread. + public static void UpdateAudioListener(float globalGainDb, LayerMask occlusionMask) + { + if (initialized) + { + occlusionMaskValue = occlusionMask.value; + SetListenerGain(ConvertAmplitudeFromDb(globalGainDb)); + } + } + + /// Creates a new first-order ambisonic soundfield with a unique id. + /// @note This should only be called from the main Unity thread. + public static int CreateAudioSoundfield() + { + int soundfieldId = -1; + if (initialized) + { + soundfieldId = CreateSoundfield(numFoaChannels); + } + + return soundfieldId; + } + + /// Updates the |soundfield| with given |id| and its properties. + /// @note This should only be called from the main Unity thread. + public static void UpdateAudioSoundfield(int id, GvrAudioSoundfield soundfield) + { + if (initialized) + { + SetSourceBypassRoomEffects(id, soundfield.bypassRoomEffects); + } + } + + /// Creates a new audio source with a unique id. + /// @note This should only be called from the main Unity thread. + public static int CreateAudioSource(bool hrtfEnabled) + { + int sourceId = -1; + if (initialized) + { + sourceId = CreateSoundObject(hrtfEnabled); + } + + return sourceId; + } + + /// Destroys the audio source with given |id|. + /// @note This should only be called from the main Unity thread. + public static void DestroyAudioSource(int id) + { + if (initialized) + { + DestroySource(id); + } + } + + /// Updates the audio |source| with given |id| and its properties. + /// @note This should only be called from the main Unity thread. + public static void UpdateAudioSource(int id, GvrAudioSource source, float currentOcclusion) + { + if (initialized) + { + SetSourceBypassRoomEffects(id, source.bypassRoomEffects); + SetSourceDirectivity(id, source.directivityAlpha, source.directivitySharpness); + SetSourceListenerDirectivity(id, source.listenerDirectivityAlpha, + source.listenerDirectivitySharpness); + SetSourceOcclusionIntensity(id, currentOcclusion); + } + } + + /// Updates the room effects of the environment with given |room| properties. + /// @note This should only be called from the main Unity thread. + public static void UpdateAudioRoom(GvrAudioRoom room, bool roomEnabled) + { + // Update the enabled rooms list. + if (roomEnabled) + { + if (!enabledRooms.Contains(room)) + { + enabledRooms.Add(room); + } + } + else + { + enabledRooms.Remove(room); + } + + // Update the current room effects to be applied. + if (initialized) + { + if (enabledRooms.Count > 0) + { + GvrAudioRoom currentRoom = enabledRooms[enabledRooms.Count - 1]; + RoomProperties roomProperties = GetRoomProperties(currentRoom); + + // Pass the room properties into a pointer. + IntPtr roomPropertiesPtr = Marshal.AllocHGlobal(Marshal.SizeOf(roomProperties)); + Marshal.StructureToPtr(roomProperties, roomPropertiesPtr, false); + SetRoomProperties(roomPropertiesPtr); + Marshal.FreeHGlobal(roomPropertiesPtr); + } + else + { + // Set the room properties to null, which will effectively disable the room effects. + SetRoomProperties(IntPtr.Zero); + } + } + } + + /// Computes the occlusion intensity of a given |source| using point source detection. + /// @note This should only be called from the main Unity thread. + public static float ComputeOcclusion(Transform sourceTransform) + { + float occlusion = 0.0f; + if (initialized) + { + Vector3 listenerPosition = listenerTransform.position; + Vector3 sourceFromListener = sourceTransform.position - listenerPosition; + int numHits = Physics.RaycastNonAlloc(listenerPosition, sourceFromListener, occlusionHits, + sourceFromListener.magnitude, occlusionMaskValue); + for (int i = 0; i < numHits; ++i) + { + if (occlusionHits[i].transform != listenerTransform && + occlusionHits[i].transform != sourceTransform) + { + occlusion += 1.0f; + } + } + } + + return occlusion; + } + + /// Converts given |db| value to its amplitude equivalent where 'dB = 20 * log10(amplitude)'. + public static float ConvertAmplitudeFromDb(float db) + { + return Mathf.Pow(10.0f, 0.05f * db); + } + + /// Generates a set of points to draw a 2D polar pattern. + public static Vector2[] Generate2dPolarPattern(float alpha, float order, int resolution) + { + Vector2[] points = new Vector2[resolution]; + float interval = 2.0f * Mathf.PI / resolution; + for (int i = 0; i < resolution; ++i) + { + float theta = i * interval; + + // Magnitude |r| for |theta| in radians. + float r = Mathf.Pow(Mathf.Abs((1 - alpha) + alpha * Mathf.Cos(theta)), order); + points[i] = new Vector2(r * Mathf.Sin(theta), r * Mathf.Cos(theta)); + } + + return points; + } + + /// Returns whether the listener is currently inside the given |room| boundaries. + public static bool IsListenerInsideRoom(GvrAudioRoom room) + { + bool isInside = false; + if (initialized) + { + Vector3 relativePosition = listenerTransform.position - room.transform.position; + Quaternion rotationInverse = Quaternion.Inverse(room.transform.rotation); + + bounds.size = Vector3.Scale(room.transform.lossyScale, room.size); + isInside = bounds.Contains(rotationInverse * relativePosition); + } + + return isInside; + } + + /// Listener directivity GUI color. + public static readonly Color listenerDirectivityColor = 0.65f * Color.magenta; + + /// Source directivity GUI color. + public static readonly Color sourceDirectivityColor = 0.65f * Color.blue; + + /// Minimum distance threshold between |minDistance| and |maxDistance|. + public const float distanceEpsilon = 0.01f; + + /// Max distance limit that can be set for volume rolloff. + public const float maxDistanceLimit = 1000000.0f; + + /// Min distance limit that can be set for volume rolloff. + public const float minDistanceLimit = 990099.0f; + + /// Maximum allowed gain value in decibels. + public const float maxGainDb = 24.0f; + + /// Minimum allowed gain value in decibels. + public const float minGainDb = -24.0f; + + /// Maximum allowed reverb brightness modifier value. + public const float maxReverbBrightness = 1.0f; + + /// Minimum allowed reverb brightness modifier value. + public const float minReverbBrightness = -1.0f; + + /// Maximum allowed reverb time modifier value. + public const float maxReverbTime = 3.0f; + + /// Maximum allowed reflectivity multiplier of a room surface material. + public const float maxReflectivity = 2.0f; + + /// Maximum allowed number of raycast hits for occlusion computation per source. + public const int maxNumOcclusionHits = 12; + + /// Source occlusion detection rate in seconds. + public const float occlusionDetectionInterval = 0.2f; + + /// Number of first-order ambisonic input channels. + public const int numFoaChannels = 4; + + [StructLayout(LayoutKind.Sequential)] + private struct RoomProperties + { + // Center position of the room in world space. + public float positionX; + public float positionY; + public float positionZ; + + // Rotation (quaternion) of the room in world space. + public float rotationX; + public float rotationY; + public float rotationZ; + public float rotationW; + + // Size of the shoebox room in world space. + public float dimensionsX; + public float dimensionsY; + public float dimensionsZ; + + // Material name of each surface of the shoebox room. + public GvrAudioRoom.SurfaceMaterial materialLeft; + public GvrAudioRoom.SurfaceMaterial materialRight; + public GvrAudioRoom.SurfaceMaterial materialBottom; + public GvrAudioRoom.SurfaceMaterial materialTop; + public GvrAudioRoom.SurfaceMaterial materialFront; + public GvrAudioRoom.SurfaceMaterial materialBack; + + // User defined uniform scaling factor for reflectivity. This parameter has no effect when set + // to 1.0f. + public float reflectionScalar; + + // User defined reverb tail gain multiplier. This parameter has no effect when set to 0.0f. + public float reverbGain; + + // Adjusts the reverberation time across all frequency bands. RT60 values are multiplied by this + // factor. Has no effect when set to 1.0f. + public float reverbTime; + + // Controls the slope of a line from the lowest to the highest RT60 values (increases high + // frequency RT60s when positive, decreases when negative). Has no effect when set to 0.0f. + public float reverbBrightness; + } + + // Converts given |position| and |rotation| from Unity space to audio space. + private static void ConvertAudioTransformFromUnity(ref Vector3 position, + ref Quaternion rotation) + { + transformMatrix = Pose3D.FlipHandedness(Matrix4x4.TRS(position, rotation, Vector3.one)); + position = transformMatrix.GetColumn(3); + rotation = Quaternion.LookRotation(transformMatrix.GetColumn(2), transformMatrix.GetColumn(1)); + } + + // Returns room properties of the given |room|. + private static RoomProperties GetRoomProperties(GvrAudioRoom room) + { + RoomProperties roomProperties; + Vector3 position = room.transform.position; + Quaternion rotation = room.transform.rotation; + Vector3 scale = Vector3.Scale(room.transform.lossyScale, room.size); + ConvertAudioTransformFromUnity(ref position, ref rotation); + roomProperties.positionX = position.x; + roomProperties.positionY = position.y; + roomProperties.positionZ = position.z; + roomProperties.rotationX = rotation.x; + roomProperties.rotationY = rotation.y; + roomProperties.rotationZ = rotation.z; + roomProperties.rotationW = rotation.w; + roomProperties.dimensionsX = scale.x; + roomProperties.dimensionsY = scale.y; + roomProperties.dimensionsZ = scale.z; + roomProperties.materialLeft = room.leftWall; + roomProperties.materialRight = room.rightWall; + roomProperties.materialBottom = room.floor; + roomProperties.materialTop = room.ceiling; + roomProperties.materialFront = room.frontWall; + roomProperties.materialBack = room.backWall; + roomProperties.reverbGain = ConvertAmplitudeFromDb(room.reverbGainDb); + roomProperties.reverbTime = room.reverbTime; + roomProperties.reverbBrightness = room.reverbBrightness; + roomProperties.reflectionScalar = room.reflectivity; + return roomProperties; + } + + // Boundaries instance to be used in room detection logic. + private static Bounds bounds = new Bounds(Vector3.zero, Vector3.zero); + + // Container to store the currently active rooms in the scene. + private static List enabledRooms = new List(); + + // Denotes whether the system is initialized properly. + private static bool initialized = false; + + // Listener transform. + private static Transform listenerTransform = null; + + // Pre-allocated raycast hit list for occlusion computation. + private static RaycastHit[] occlusionHits = new RaycastHit[maxNumOcclusionHits]; + + // Occlusion layer mask. + private static int occlusionMaskValue = -1; + + // 4x4 transformation matrix to be used in transform space conversion. + private static Matrix4x4 transformMatrix = Matrix4x4.identity; + +#if !UNITY_EDITOR && UNITY_IOS + private const string pluginName = "__Internal"; + +#else + private const string pluginName = "audioplugingvrunity"; +#endif // !UNITY_EDITOR && UNITY_IOS + + // Listener handlers. + [DllImport(pluginName)] + private static extern void SetListenerGain(float gain); + + // Soundfield handlers. + [DllImport(pluginName)] + private static extern int CreateSoundfield(int numChannels); + + // Source handlers. + [DllImport(pluginName)] + private static extern int CreateSoundObject(bool enableHrtf); + + [DllImport(pluginName)] + private static extern void DestroySource(int sourceId); + + [DllImport(pluginName)] + private static extern void SetSourceBypassRoomEffects(int sourceId, bool bypassRoomEffects); + + [DllImport(pluginName)] + private static extern void SetSourceDirectivity(int sourceId, float alpha, float order); + + [DllImport(pluginName)] + private static extern void SetSourceListenerDirectivity(int sourceId, float alpha, float order); + + [DllImport(pluginName)] + private static extern void SetSourceOcclusionIntensity(int sourceId, float intensity); + + // Room handlers. + [DllImport(pluginName)] + private static extern void SetRoomProperties(IntPtr roomProperties); + + // System handlers. + [DllImport(pluginName)] + private static extern void Initialize(int quality, int sampleRate, int numChannels, + int framesPerBuffer); + + [DllImport(pluginName)] + private static extern void Shutdown(); +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudio.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudio.cs.meta new file mode 100644 index 0000000..094009b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudio.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84ad368148aad42938b2fdb28552e8ac +timeCreated: 1447961130 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioListener.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioListener.cs new file mode 100644 index 0000000..37cf829 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioListener.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// GVR audio listener component that enhances AudioListener to provide advanced spatial audio +/// features. +/// +/// There should be only one instance of this which is attached to the AudioListener's game object. +#if UNITY_2017_1_OR_NEWER +[System.Obsolete("Please upgrade to Resonance Audio (https://developers.google.com/resonance-audio/migrate).")] +#endif // UNITY_2017_1_OR_NEWER +[AddComponentMenu("GoogleVR/Audio/GvrAudioListener")] +public class GvrAudioListener : MonoBehaviour +{ + /// Global gain in decibels to be applied to the processed output. + public float globalGainDb = 0.0f; + + /// Global layer mask to be used in occlusion detection. + public LayerMask occlusionMask = -1; + + /// Audio rendering quality of the system. + [SerializeField] + private GvrAudio.Quality quality = GvrAudio.Quality.High; + + void Awake() + { +#if UNITY_EDITOR && UNITY_2017_1_OR_NEWER + Debug.LogWarningFormat(gameObject, + "Game object '{0}' uses deprecated {1} component.\nPlease upgrade to Resonance Audio ({2}).", + name, GetType().Name, "https://developers.google.com/resonance-audio/migrate"); +#endif // UNITY_EDITOR && UNITY_2017_1_OR_NEWER + GvrAudio.Initialize(this, quality); + } + + void OnEnable() + { + GvrAudio.UpdateAudioListener(globalGainDb, occlusionMask); + } + + void OnDestroy() + { + GvrAudio.Shutdown(this); + } + + void Update() + { + GvrAudio.UpdateAudioListener(globalGainDb, occlusionMask); + } +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioListener.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioListener.cs.meta new file mode 100644 index 0000000..f1764fc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioListener.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b1156c073149742478887bb24456f32d +timeCreated: 1447961345 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioRoom.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioRoom.cs new file mode 100644 index 0000000..032bcc5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioRoom.cs @@ -0,0 +1,171 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// GVR audio room component that simulates environmental effects of a room with respect to the +/// properties of the attached game object. +#if UNITY_2017_1_OR_NEWER +[System.Obsolete("Please upgrade to Resonance Audio (https://developers.google.com/resonance-audio/migrate).")] +#endif // UNITY_2017_1_OR_NEWER +[AddComponentMenu("GoogleVR/Audio/GvrAudioRoom")] +public class GvrAudioRoom : MonoBehaviour +{ + /// Material type that determines the acoustic properties of a room surface. + public enum SurfaceMaterial + { + /// Transparent + Transparent = 0, + + /// Acoustic ceiling tiles + AcousticCeilingTiles = 1, + + /// Brick, bare + BrickBare = 2, + + /// Brick, painted + BrickPainted = 3, + + /// Concrete block, coarse + ConcreteBlockCoarse = 4, + + /// Concrete block, painted + ConcreteBlockPainted = 5, + + /// Curtain, heavy + CurtainHeavy = 6, + + /// Fiberglass insulation + FiberglassInsulation = 7, + + /// Glass, thin + GlassThin = 8, + + /// Glass, thick + GlassThick = 9, + + /// Grass + Grass = 10, + + /// Linoleum on concrete + LinoleumOnConcrete = 11, + + /// Marble + Marble = 12, + + /// Galvanized sheet metal + Metal = 13, + + /// Parquet on concrete + ParquetOnConcrete = 14, + + /// Plaster, rough + PlasterRough = 15, + + /// Plaster, smooth + PlasterSmooth = 16, + + /// Plywood panel + PlywoodPanel = 17, + + /// Polished concrete or tile + PolishedConcreteOrTile = 18, + + /// Sheetrock + Sheetrock = 19, + + /// Water or ice surface + WaterOrIceSurface = 20, + + /// Wood ceiling + WoodCeiling = 21, + + /// Wood panel + WoodPanel = 22 + } + + /// Room surface material in negative x direction. + public SurfaceMaterial leftWall = SurfaceMaterial.ConcreteBlockCoarse; + + /// Room surface material in positive x direction. + public SurfaceMaterial rightWall = SurfaceMaterial.ConcreteBlockCoarse; + + /// Room surface material in negative y direction. + public SurfaceMaterial floor = SurfaceMaterial.ParquetOnConcrete; + + /// Room surface material in positive y direction. + public SurfaceMaterial ceiling = SurfaceMaterial.PlasterRough; + + /// Room surface material in negative z direction. + public SurfaceMaterial backWall = SurfaceMaterial.ConcreteBlockCoarse; + + /// Room surface material in positive z direction. + public SurfaceMaterial frontWall = SurfaceMaterial.ConcreteBlockCoarse; + + /// Reflectivity scalar for each surface of the room. + public float reflectivity = 1.0f; + + /// Reverb gain modifier in decibels. + public float reverbGainDb = 0.0f; + + /// Reverb brightness modifier. + public float reverbBrightness = 0.0f; + + /// Reverb time modifier. + public float reverbTime = 1.0f; + + /// Size of the room (normalized with respect to scale of the game object). + public Vector3 size = Vector3.one; + + void Awake() + { +#if UNITY_EDITOR && UNITY_2017_1_OR_NEWER + Debug.LogWarningFormat(gameObject, + "Game object '{0}' uses deprecated {1} component.\nPlease upgrade to Resonance Audio ({2}).", + name, GetType().Name, "https://developers.google.com/resonance-audio/migrate"); +#endif // UNITY_EDITOR && UNITY_2017_1_OR_NEWER + } + + void OnEnable() + { + GvrAudio.UpdateAudioRoom(this, GvrAudio.IsListenerInsideRoom(this)); + } + + void OnDisable() + { + GvrAudio.UpdateAudioRoom(this, false); + } + + void Update() + { + GvrAudio.UpdateAudioRoom(this, GvrAudio.IsListenerInsideRoom(this)); + } + + void OnDrawGizmosSelected() + { + // Draw shoebox model wireframe of the room. + Gizmos.color = Color.yellow; + Gizmos.matrix = transform.localToWorldMatrix; + Gizmos.DrawWireCube(Vector3.zero, size); + } +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioRoom.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioRoom.cs.meta new file mode 100644 index 0000000..08c8c6e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioRoom.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1d2722c2401e34d51bf5b473ef7aeefb +timeCreated: 1447961354 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSoundfield.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSoundfield.cs new file mode 100644 index 0000000..42682a6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSoundfield.cs @@ -0,0 +1,703 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.Audio; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// GVR soundfield component that allows playback of first-order ambisonic recordings. The audio +/// sample should be in Ambix (ACN-SN3D) format. +#if UNITY_2017_1_OR_NEWER +[System.Obsolete("Please upgrade to Resonance Audio (https://developers.google.com/resonance-audio/migrate).")] +#endif // UNITY_2017_1_OR_NEWER +[AddComponentMenu("GoogleVR/Audio/GvrAudioSoundfield")] +public class GvrAudioSoundfield : MonoBehaviour +{ + /// Denotes whether the room effects should be bypassed. + public bool bypassRoomEffects = true; + + /// Input gain in decibels. + public float gainDb = 0.0f; + + /// Play source on awake. + public bool playOnAwake = true; + + /// The default AudioClip to play. + public AudioClip clip0102 + { + get + { + return soundfieldClip0102; + } + + set + { + soundfieldClip0102 = value; + if (audioSources != null && audioSources.Length > 0) + { + audioSources[0].clip = soundfieldClip0102; + } + } + } + + [SerializeField] + private AudioClip soundfieldClip0102 = null; + + public AudioClip clip0304 + { + get + { + return soundfieldClip0304; + } + + set + { + soundfieldClip0304 = value; + if (audioSources != null && audioSources.Length > 0) + { + audioSources[1].clip = soundfieldClip0304; + } + } + } + + [SerializeField] + private AudioClip soundfieldClip0304 = null; + + /// Is the clip playing right now (Read Only)? + public bool isPlaying + { + get + { + if (audioSources != null && audioSources.Length > 0) + { + return audioSources[0].isPlaying; + } + + return false; + } + } + + /// Is the audio clip looping? + public bool loop + { + get + { + return soundfieldLoop; + } + + set + { + soundfieldLoop = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].loop = soundfieldLoop; + } + } + } + } + + [SerializeField] + private bool soundfieldLoop = false; + + /// Un- / Mutes the soundfield. Mute sets the volume=0, Un-Mute restore the original volume. + public bool mute + { + get + { + return soundfieldMute; + } + + set + { + soundfieldMute = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].mute = soundfieldMute; + } + } + } + } + + [SerializeField] + private bool soundfieldMute = false; + + /// The pitch of the audio source. + public float pitch + { + get + { + return soundfieldPitch; + } + + set + { + soundfieldPitch = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].pitch = soundfieldPitch; + } + } + } + } + + [SerializeField] + [Range(-3.0f, 3.0f)] + private float soundfieldPitch = 1.0f; + + /// Sets the priority of the soundfield. + public int priority + { + get + { + return soundfieldPriority; + } + + set + { + soundfieldPriority = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].priority = soundfieldPriority; + } + } + } + } + + [SerializeField] + [Range(0, 256)] + private int soundfieldPriority = 32; + + /// Sets how much this soundfield is affected by 3D spatialization calculations + /// (attenuation, doppler). + public float spatialBlend + { + get + { + return soundfieldSpatialBlend; + } + + set + { + soundfieldSpatialBlend = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].spatialBlend = soundfieldSpatialBlend; + } + } + } + } + + [SerializeField] + [Range(0.0f, 1.0f)] + private float soundfieldSpatialBlend = 0.0f; + + /// Sets the Doppler scale for this soundfield. + public float dopplerLevel + { + get + { + return soundfieldDopplerLevel; + } + + set + { + soundfieldDopplerLevel = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].dopplerLevel = soundfieldDopplerLevel; + } + } + } + } + + [SerializeField] + [Range(0.0f, 5.0f)] + private float soundfieldDopplerLevel = 0.0f; + + /// Playback position in seconds. + public float time + { + get + { + if (audioSources != null && audioSources.Length > 0) + { + return audioSources[0].time; + } + + return 0.0f; + } + + set + { + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].time = value; + } + } + } + } + + /// Playback position in PCM samples. + public int timeSamples + { + get + { + if (audioSources != null && audioSources.Length > 0) + { + return audioSources[0].timeSamples; + } + + return 0; + } + + set + { + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].timeSamples = value; + } + } + } + } + + /// The volume of the audio source(0.0 to 1.0). + public float volume + { + get + { + return soundfieldVolume; + } + + set + { + soundfieldVolume = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].volume = soundfieldVolume; + } + } + } + } + + [SerializeField] + [Range(0.0f, 1.0f)] + private float soundfieldVolume = 1.0f; + + /// Volume rolloff model with respect to the distance. + public AudioRolloffMode rolloffMode + { + get + { + return soundfieldRolloffMode; + } + + set + { + soundfieldRolloffMode = value; + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].rolloffMode = soundfieldRolloffMode; + if (rolloffMode == AudioRolloffMode.Custom) + { + // Custom rolloff is not supported, set the curve for no distance attenuation. + audioSources[channelSet].SetCustomCurve( + AudioSourceCurveType.CustomRolloff, + AnimationCurve.Linear(soundfieldMinDistance, 1.0f, soundfieldMaxDistance, 1.0f)); + } + } + } + } + } + + [SerializeField] + private AudioRolloffMode soundfieldRolloffMode = AudioRolloffMode.Logarithmic; + + /// MaxDistance is the distance a sound stops attenuating at. + public float maxDistance + { + get + { + return soundfieldMaxDistance; + } + + set + { + soundfieldMaxDistance = Mathf.Clamp(value, soundfieldMinDistance + GvrAudio.distanceEpsilon, + GvrAudio.maxDistanceLimit); + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].maxDistance = soundfieldMaxDistance; + } + } + } + } + + [SerializeField] + private float soundfieldMaxDistance = 500.0f; + + /// Within the Min distance the GvrAudioSource will cease to grow louder in volume. + public float minDistance + { + get + { + return soundfieldMinDistance; + } + + set + { + soundfieldMinDistance = Mathf.Clamp(value, 0.0f, GvrAudio.minDistanceLimit); + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].minDistance = soundfieldMinDistance; + } + } + } + } + + [SerializeField] + private float soundfieldMinDistance = 1.0f; + + // Unique source id. + private int id = -1; + + // Unity audio sources per each soundfield channel set. + private AudioSource[] audioSources = null; + + // Denotes whether the source is currently paused or not. + private bool isPaused = false; + + void Awake() + { +#if UNITY_EDITOR && UNITY_2017_1_OR_NEWER + Debug.LogWarningFormat(gameObject, + "Game object '{0}' uses deprecated {1} component.\nPlease upgrade to Resonance Audio({2}).", + name, GetType().Name, "https://developers.google.com/resonance-audio/migrate"); +#endif // UNITY_EDITOR && UNITY_2017_1_OR_NEWER + // Route the source output to |GvrAudioMixer|. + AudioMixer mixer = (Resources.Load("GvrAudioMixer") as AudioMixer); + if (mixer == null) + { + Debug.LogError("GVRAudioMixer could not be found in Resources. Make sure that the GVR SDK" + + "Unity package is imported properly."); + return; + } + + audioSources = new AudioSource[GvrAudio.numFoaChannels / 2]; + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + GameObject channelSetObject = new GameObject("Channel Set " + channelSet); + channelSetObject.transform.parent = gameObject.transform; + channelSetObject.transform.localPosition = Vector3.zero; + channelSetObject.transform.localRotation = Quaternion.identity; + channelSetObject.hideFlags = HideFlags.HideAndDontSave; + audioSources[channelSet] = channelSetObject.AddComponent(); + audioSources[channelSet].enabled = false; + audioSources[channelSet].playOnAwake = false; + audioSources[channelSet].bypassReverbZones = true; +#if UNITY_5_5_OR_NEWER + audioSources[channelSet].spatializePostEffects = true; +#endif // UNITY_5_5_OR_NEWER + audioSources[channelSet].outputAudioMixerGroup = mixer.FindMatchingGroups("Master")[0]; + } + + OnValidate(); + } + + void OnEnable() + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].enabled = true; + } + + if (playOnAwake && !isPlaying && InitializeSoundfield()) + { + Play(); + } + } + + void Start() + { + if (playOnAwake && !isPlaying) + { + Play(); + } + } + + void OnDisable() + { + Stop(); + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].enabled = false; + } + } + + void OnDestroy() + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + Destroy(audioSources[channelSet].gameObject); + } + } + + void OnApplicationPause(bool pauseStatus) + { + if (pauseStatus) + { + Pause(); + } + else + { + UnPause(); + } + } + + void Update() + { + // Update soundfield. + if (!isPlaying && !isPaused) + { + Stop(); + } + else + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].SetSpatializerFloat((int)GvrAudio.SpatializerData.Gain, + GvrAudio.ConvertAmplitudeFromDb(gainDb)); + audioSources[channelSet].SetSpatializerFloat((int)GvrAudio.SpatializerData.MinDistance, + soundfieldMinDistance); + } + + GvrAudio.UpdateAudioSoundfield(id, this); + } + } + + /// Pauses playing the clip. + public void Pause() + { + if (audioSources != null) + { + isPaused = true; + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].Pause(); + } + } + } + + /// Plays the clip. + public void Play() + { + double dspTime = AudioSettings.dspTime; + PlayScheduled(dspTime); + } + + /// Plays the clip with a delay specified in seconds. + public void PlayDelayed(float delay) + { + double delayedDspTime = AudioSettings.dspTime + (double)delay; + PlayScheduled(delayedDspTime); + } + + /// Plays the clip at a specific time on the absolute time-line that AudioSettings.dspTime reads + /// from. + public void PlayScheduled(double time) + { + if (audioSources != null && InitializeSoundfield()) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].PlayScheduled(time); + } + + isPaused = false; + } + else + { + Debug.LogWarning("GVR Audio soundfield not initialized. Audio playback not supported " + + "until after Awake() and OnEnable(). Try calling from Start() instead."); + } + } + + /// Changes the time at which a sound that has already been scheduled to play will end. + public void SetScheduledEndTime(double time) + { + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].SetScheduledEndTime(time); + } + } + } + + /// Changes the time at which a sound that has already been scheduled to play will start. + public void SetScheduledStartTime(double time) + { + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].SetScheduledStartTime(time); + } + } + } + + /// Stops playing the clip. + public void Stop() + { + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].Stop(); + } + + ShutdownSoundfield(); + isPaused = false; + } + } + + /// Unpauses the paused playback. + public void UnPause() + { + if (audioSources != null) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + audioSources[channelSet].UnPause(); + } + + isPaused = false; + } + } + + // Initializes the source. + private bool InitializeSoundfield() + { + if (id < 0) + { + id = GvrAudio.CreateAudioSoundfield(); + if (id >= 0) + { + GvrAudio.UpdateAudioSoundfield(id, this); + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + InitializeChannelSet(audioSources[channelSet], channelSet); + } + } + } + + return id >= 0; + } + + // Shuts down the source. + private void ShutdownSoundfield() + { + if (id >= 0) + { + for (int channelSet = 0; channelSet < audioSources.Length; ++channelSet) + { + ShutdownChannelSet(audioSources[channelSet], channelSet); + } + + GvrAudio.DestroyAudioSource(id); + id = -1; + } + } + + // Initializes given channel set of the soundfield. + private void InitializeChannelSet(AudioSource source, int channelSet) + { + source.spatialize = true; + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.Type, + (float)GvrAudio.SpatializerType.Soundfield); + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.NumChannels, + (float)GvrAudio.numFoaChannels); + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.ChannelSet, (float)channelSet); + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.Gain, + GvrAudio.ConvertAmplitudeFromDb(gainDb)); + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.MinDistance, soundfieldMinDistance); + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.ZeroOutput, 0.0f); + + // Soundfield id must be set after all the spatializer parameters, to ensure that the soundfield + // is properly initialized before processing. + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.Id, (float)id); + } + + // Shuts down given channel set of the soundfield. + private void ShutdownChannelSet(AudioSource source, int channelSet) + { + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.Id, -1.0f); + + // Ensure that the output is zeroed after shutdown. + source.SetSpatializerFloat((int)GvrAudio.SpatializerData.ZeroOutput, 1.0f); + source.spatialize = false; + } + + void OnDidApplyAnimationProperties() + { + OnValidate(); + } + + void OnValidate() + { + clip0102 = soundfieldClip0102; + clip0304 = soundfieldClip0304; + loop = soundfieldLoop; + mute = soundfieldMute; + pitch = soundfieldPitch; + priority = soundfieldPriority; + spatialBlend = soundfieldSpatialBlend; + volume = soundfieldVolume; + dopplerLevel = soundfieldDopplerLevel; + minDistance = soundfieldMinDistance; + maxDistance = soundfieldMaxDistance; + rolloffMode = soundfieldRolloffMode; + } +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSoundfield.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSoundfield.cs.meta new file mode 100644 index 0000000..177ee92 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSoundfield.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d38f0664abc0c446a8fa0886ec2bcd12 +timeCreated: 1466460492 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSource.cs b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSource.cs new file mode 100644 index 0000000..d8f006c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSource.cs @@ -0,0 +1,774 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.Audio; +using System.Collections; + +#pragma warning disable 0618 // Ignore GvrAudio* deprecation + +/// GVR audio source component that enhances AudioSource to provide advanced spatial audio features. +#if UNITY_2017_1_OR_NEWER +[System.Obsolete("Please upgrade to Resonance Audio (https://developers.google.com/resonance-audio/migrate).")] +#endif // UNITY_2017_1_OR_NEWER +[AddComponentMenu("GoogleVR/Audio/GvrAudioSource")] +public class GvrAudioSource : MonoBehaviour +{ + /// Denotes whether the room effects should be bypassed. + public bool bypassRoomEffects = false; + + /// Directivity pattern shaping factor. + public float directivityAlpha = 0.0f; + + /// Directivity pattern order. + public float directivitySharpness = 1.0f; + + /// Listener directivity pattern shaping factor. + public float listenerDirectivityAlpha = 0.0f; + + /// Listener directivity pattern order. + public float listenerDirectivitySharpness = 1.0f; + + /// Input gain in decibels. + public float gainDb = 0.0f; + + /// Occlusion effect toggle. + public bool occlusionEnabled = false; + + /// Play source on awake. + public bool playOnAwake = true; + + /// The default AudioClip to play. + public AudioClip clip + { + get + { + return sourceClip; + } + + set + { + sourceClip = value; + if (audioSource != null) + { + audioSource.clip = sourceClip; + } + } + } + + [SerializeField] + private AudioClip sourceClip = null; + + /// Is the clip playing right now (Read Only)? + public bool isPlaying + { + get + { + if (audioSource != null) + { + return audioSource.isPlaying; + } + + return false; + } + } + + /// Is the audio clip looping? + public bool loop + { + get + { + return sourceLoop; + } + + set + { + sourceLoop = value; + if (audioSource != null) + { + audioSource.loop = sourceLoop; + } + } + } + + [SerializeField] + private bool sourceLoop = false; + + /// Un- / Mutes the source. Mute sets the volume=0, Un-Mute restore the original volume. + public bool mute + { + get + { + return sourceMute; + } + + set + { + sourceMute = value; + if (audioSource != null) + { + audioSource.mute = sourceMute; + } + } + } + + [SerializeField] + private bool sourceMute = false; + + /// The pitch of the audio source. + public float pitch + { + get + { + return sourcePitch; + } + + set + { + sourcePitch = value; + if (audioSource != null) + { + audioSource.pitch = sourcePitch; + } + } + } + + [SerializeField] + [Range(-3.0f, 3.0f)] + private float sourcePitch = 1.0f; + + /// Sets the priority of the audio source. + public int priority + { + get + { + return sourcePriority; + } + + set + { + sourcePriority = value; + if (audioSource != null) + { + audioSource.priority = sourcePriority; + } + } + } + + [SerializeField] + [Range(0, 256)] + private int sourcePriority = 128; + + /// Sets how much this source is affected by 3D spatialization calculations (attenuation, doppler). + public float spatialBlend + { + get + { + return sourceSpatialBlend; + } + + set + { + sourceSpatialBlend = value; + if (audioSource != null) + { + audioSource.spatialBlend = sourceSpatialBlend; + } + } + } + + [SerializeField] + [Range(0.0f, 1.0f)] + private float sourceSpatialBlend = 1.0f; + + /// Sets the Doppler scale for this audio source. + public float dopplerLevel + { + get + { + return sourceDopplerLevel; + } + + set + { + sourceDopplerLevel = value; + if (audioSource != null) + { + audioSource.dopplerLevel = sourceDopplerLevel; + } + } + } + + [SerializeField] + [Range(0.0f, 5.0f)] + private float sourceDopplerLevel = 1.0f; + + /// Sets the spread angle (in degrees) in 3D space. + public float spread + { + get + { + return sourceSpread; + } + + set + { + sourceSpread = value; + if (audioSource != null) + { + audioSource.spread = sourceSpread; + } + } + } + + [SerializeField] + [Range(0.0f, 360.0f)] + private float sourceSpread = 0.0f; + + /// Playback position in seconds. + public float time + { + get + { + if (audioSource != null) + { + return audioSource.time; + } + + return 0.0f; + } + + set + { + if (audioSource != null) + { + audioSource.time = value; + } + } + } + + /// Playback position in PCM samples. + public int timeSamples + { + get + { + if (audioSource != null) + { + return audioSource.timeSamples; + } + + return 0; + } + + set + { + if (audioSource != null) + { + audioSource.timeSamples = value; + } + } + } + + /// The volume of the audio source (0.0 to 1.0). + public float volume + { + get + { + return sourceVolume; + } + + set + { + sourceVolume = value; + if (audioSource != null) + { + audioSource.volume = sourceVolume; + } + } + } + + [SerializeField] + [Range(0.0f, 1.0f)] + private float sourceVolume = 1.0f; + + /// Volume rolloff model with respect to the distance. + public AudioRolloffMode rolloffMode + { + get + { + return sourceRolloffMode; + } + + set + { + sourceRolloffMode = value; + if (audioSource != null) + { + audioSource.rolloffMode = sourceRolloffMode; + if (rolloffMode == AudioRolloffMode.Custom) + { + // Custom rolloff is not supported, set the curve for no distance attenuation. + audioSource.SetCustomCurve(AudioSourceCurveType.CustomRolloff, + AnimationCurve.Linear(sourceMinDistance, 1.0f, sourceMaxDistance, 1.0f)); + } + } + } + } + + [SerializeField] + private AudioRolloffMode sourceRolloffMode = AudioRolloffMode.Logarithmic; + + /// MaxDistance is the distance a sound stops attenuating at. + public float maxDistance + { + get + { + return sourceMaxDistance; + } + + set + { + sourceMaxDistance = Mathf.Clamp(value, sourceMinDistance + GvrAudio.distanceEpsilon, + GvrAudio.maxDistanceLimit); + if (audioSource != null) + { + audioSource.maxDistance = sourceMaxDistance; + } + } + } + + [SerializeField] + private float sourceMaxDistance = 500.0f; + + /// Within the Min distance the GvrAudioSource will cease to grow louder in volume. + public float minDistance + { + get + { + return sourceMinDistance; + } + + set + { + sourceMinDistance = Mathf.Clamp(value, 0.0f, GvrAudio.minDistanceLimit); + if (audioSource != null) + { + audioSource.minDistance = sourceMinDistance; + } + } + } + + [SerializeField] + private float sourceMinDistance = 1.0f; + + /// Binaural (HRTF) rendering toggle. + [SerializeField] + private bool hrtfEnabled = true; + + // Unity audio source attached to the game object. + [SerializeField] + private AudioSource audioSource = null; + + // Unique source id. + private int id = -1; + + // Current occlusion value; + private float currentOcclusion = 0.0f; + + // Next occlusion update time in seconds. + private float nextOcclusionUpdate = 0.0f; + + // Denotes whether the source is currently paused or not. + private bool isPaused = false; + + void Awake() + { +#if UNITY_EDITOR && UNITY_2017_1_OR_NEWER + Debug.LogWarningFormat(gameObject, + "Game object '{0}' uses deprecated {1} component.\nPlease upgrade to Resonance Audio ({2}).", + name, GetType().Name, "https://developers.google.com/resonance-audio/migrate"); +#endif // UNITY_EDITOR && UNITY_2017_1_OR_NEWER + if (audioSource == null) + { + // Ensure the audio source gets created once. + audioSource = gameObject.AddComponent(); + } + + audioSource.enabled = false; + audioSource.hideFlags = HideFlags.HideInInspector | HideFlags.HideAndDontSave; + audioSource.playOnAwake = false; + audioSource.bypassReverbZones = true; +#if UNITY_5_5_OR_NEWER + audioSource.spatializePostEffects = true; +#endif // UNITY_5_5_OR_NEWER + OnValidate(); + + // Route the source output to |GvrAudioMixer|. + AudioMixer mixer = (Resources.Load("GvrAudioMixer") as AudioMixer); + if (mixer != null) + { + audioSource.outputAudioMixerGroup = mixer.FindMatchingGroups("Master")[0]; + } + else + { + Debug.LogError("GVRAudioMixer could not be found in Resources. Make sure that the GVR SDK " + + "Unity package is imported properly."); + } + } + + void OnEnable() + { + audioSource.enabled = true; + if (playOnAwake && !isPlaying && InitializeSource()) + { + Play(); + } + } + + void Start() + { + if (playOnAwake && !isPlaying) + { + Play(); + } + } + + void OnDisable() + { + Stop(); + audioSource.enabled = false; + } + + void OnDestroy() + { + Destroy(audioSource); + } + + void OnApplicationPause(bool pauseStatus) + { + if (pauseStatus) + { + Pause(); + } + else + { + UnPause(); + } + } + + void Update() + { + // Update occlusion state. + if (!occlusionEnabled) + { + currentOcclusion = 0.0f; + } + else if (Time.time >= nextOcclusionUpdate) + { + nextOcclusionUpdate = Time.time + GvrAudio.occlusionDetectionInterval; + currentOcclusion = GvrAudio.ComputeOcclusion(transform); + } + + // Update source. + if (!isPlaying && !isPaused) + { + Stop(); + } + else + { + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.Gain, + GvrAudio.ConvertAmplitudeFromDb(gainDb)); + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.MinDistance, + sourceMinDistance); + GvrAudio.UpdateAudioSource(id, this, currentOcclusion); + } + } + + /// Provides a block of the currently playing source's output data. + /// + /// @note The array given in samples will be filled with the requested data before spatialization. + public void GetOutputData(float[] samples, int channel) + { + if (audioSource != null) + { + audioSource.GetOutputData(samples, channel); + } + } + + /// Provides a block of the currently playing audio source's spectrum data. + /// + /// @note The array given in samples will be filled with the requested data before spatialization. + public void GetSpectrumData(float[] samples, int channel, FFTWindow window) + { + if (audioSource != null) + { + audioSource.GetSpectrumData(samples, channel, window); + } + } + + /// Pauses playing the clip. + public void Pause() + { + if (audioSource != null) + { + isPaused = true; + audioSource.Pause(); + } + } + + /// Plays the clip. + public void Play() + { + if (audioSource != null && InitializeSource()) + { + audioSource.Play(); + isPaused = false; + } + else + { + Debug.LogWarning("GVR Audio source not initialized. Audio playback not supported " + + "until after Awake() and OnEnable(). Try calling from Start() instead."); + } + } + + /// Plays the clip with a delay specified in seconds. + public void PlayDelayed(float delay) + { + if (audioSource != null && InitializeSource()) + { + audioSource.PlayDelayed(delay); + isPaused = false; + } + else + { + Debug.LogWarning("GVR Audio source not initialized. Audio playback not supported " + + "until after Awake() and OnEnable(). Try calling from Start() instead."); + } + } + + /// Plays an AudioClip. + public void PlayOneShot(AudioClip clip) + { + PlayOneShot(clip, 1.0f); + } + + /// Plays an AudioClip, and scales its volume. + public void PlayOneShot(AudioClip clip, float volume) + { + if (audioSource != null && InitializeSource()) + { + audioSource.PlayOneShot(clip, volume); + isPaused = false; + } + else + { + Debug.LogWarning("GVR Audio source not initialized. Audio playback not supported " + + "until after Awake() and OnEnable(). Try calling from Start() instead."); + } + } + + /// Plays the clip at a specific time on the absolute time-line that AudioSettings.dspTime reads + /// from. + public void PlayScheduled(double time) + { + if (audioSource != null && InitializeSource()) + { + audioSource.PlayScheduled(time); + isPaused = false; + } + else + { + Debug.LogWarning("GVR Audio source not initialized. Audio playback not supported " + + "until after Awake() and OnEnable(). Try calling from Start() instead."); + } + } + + /// Changes the time at which a sound that has already been scheduled to play will end. + public void SetScheduledEndTime(double time) + { + if (audioSource != null) + { + audioSource.SetScheduledEndTime(time); + } + } + + /// Changes the time at which a sound that has already been scheduled to play will start. + public void SetScheduledStartTime(double time) + { + if (audioSource != null) + { + audioSource.SetScheduledStartTime(time); + } + } + + /// Stops playing the clip. + public void Stop() + { + if (audioSource != null) + { + audioSource.Stop(); + ShutdownSource(); + isPaused = true; + } + } + + /// Unpauses the paused playback. + public void UnPause() + { + if (audioSource != null) + { + audioSource.UnPause(); + isPaused = false; + } + } + + // Initializes the source. + private bool InitializeSource() + { + if (id < 0) + { + id = GvrAudio.CreateAudioSource(hrtfEnabled); + if (id >= 0) + { + GvrAudio.UpdateAudioSource(id, this, currentOcclusion); + audioSource.spatialize = true; + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.Type, + (float)GvrAudio.SpatializerType.Source); + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.Gain, + GvrAudio.ConvertAmplitudeFromDb(gainDb)); + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.MinDistance, + sourceMinDistance); + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.ZeroOutput, 0.0f); + + // Source id must be set after all the spatializer parameters, to ensure that the source is + // properly initialized before processing. + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.Id, (float)id); + } + } + + return id >= 0; + } + + // Shuts down the source. + private void ShutdownSource() + { + if (id >= 0) + { + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.Id, -1.0f); + + // Ensure that the output is zeroed after shutdown. + audioSource.SetSpatializerFloat((int)GvrAudio.SpatializerData.ZeroOutput, 1.0f); + audioSource.spatialize = false; + GvrAudio.DestroyAudioSource(id); + id = -1; + } + } + + void OnDidApplyAnimationProperties() + { + OnValidate(); + } + + void OnValidate() + { + clip = sourceClip; + loop = sourceLoop; + mute = sourceMute; + pitch = sourcePitch; + priority = sourcePriority; + spatialBlend = sourceSpatialBlend; + volume = sourceVolume; + dopplerLevel = sourceDopplerLevel; + spread = sourceSpread; + minDistance = sourceMinDistance; + maxDistance = sourceMaxDistance; + rolloffMode = sourceRolloffMode; + } + + void OnDrawGizmosSelected() + { + // Draw listener directivity gizmo. + // Note that this is a very suboptimal way of finding the component, to be used in Unity Editor + // only, should not be used to access the component in run time. + GvrAudioListener listener = FindObjectOfType(); + if (listener != null) + { + Gizmos.color = GvrAudio.listenerDirectivityColor; + DrawDirectivityGizmo(listener.transform, listenerDirectivityAlpha, + listenerDirectivitySharpness, 180); + } + + // Draw source directivity gizmo. + Gizmos.color = GvrAudio.sourceDirectivityColor; + DrawDirectivityGizmo(transform, directivityAlpha, directivitySharpness, 180); + } + + // Draws a 3D gizmo in the Scene View that shows the selected directivity pattern. + private void DrawDirectivityGizmo(Transform target, float alpha, float sharpness, + int resolution) + { + Vector2[] points = GvrAudio.Generate2dPolarPattern(alpha, sharpness, resolution); + + // Compute |vertices| from the polar pattern |points|. + int numVertices = resolution + 1; + Vector3[] vertices = new Vector3[numVertices]; + vertices[0] = Vector3.zero; + for (int i = 0; i < points.Length; ++i) + { + vertices[i + 1] = new Vector3(points[i].x, 0.0f, points[i].y); + } + + // Generate |triangles| from |vertices|. Two triangles per each sweep to avoid backface culling. + int[] triangles = new int[6 * numVertices]; + for (int i = 0; i < numVertices - 1; ++i) + { + int index = 6 * i; + if (i < numVertices - 2) + { + triangles[index] = 0; + triangles[index + 1] = i + 1; + triangles[index + 2] = i + 2; + } + else + { + // Last vertex is connected back to the first for the last triangle. + triangles[index] = 0; + triangles[index + 1] = numVertices - 1; + triangles[index + 2] = 1; + } + + // The second triangle facing the opposite direction. + triangles[index + 3] = triangles[index]; + triangles[index + 4] = triangles[index + 2]; + triangles[index + 5] = triangles[index + 1]; + } + + // Construct a new mesh for the gizmo. + Mesh directivityGizmoMesh = new Mesh(); + directivityGizmoMesh.hideFlags = HideFlags.DontSaveInEditor; + directivityGizmoMesh.vertices = vertices; + directivityGizmoMesh.triangles = triangles; + directivityGizmoMesh.RecalculateNormals(); + + // Draw the mesh. + Vector3 scale = 2.0f * Mathf.Max(target.lossyScale.x, target.lossyScale.z) * Vector3.one; + Gizmos.DrawMesh(directivityGizmoMesh, target.position, target.rotation, scale); + } +} + +#pragma warning restore 0618 // Restore warnings diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSource.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSource.cs.meta new file mode 100644 index 0000000..a4c47ef --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSource.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6dbca64e524ea44f9b26142ec59aca8a +timeCreated: 1447961362 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs.meta new file mode 100644 index 0000000..3055dab --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 968e2dd8b392140d2a688fdab1960525 +folderAsset: yes +timeCreated: 1509728230 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio.meta new file mode 100644 index 0000000..0748cee --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 65c9280a868094fdcaeff383bdf40780 +folderAsset: yes +timeCreated: 1453250329 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioRoom.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioRoom.prefab new file mode 100644 index 0000000..92fc738 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioRoom.prefab @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &103798 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 497858} + - 114: {fileID: 11437632} + m_Layer: 0 + m_Name: GvrAudioRoom + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &497858 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103798} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 6, y: 4, z: 10} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11437632 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 103798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1d2722c2401e34d51bf5b473ef7aeefb, type: 3} + m_Name: + m_EditorClassIdentifier: + leftWall: 4 + rightWall: 4 + floor: 14 + ceiling: 15 + backWall: 4 + frontWall: 4 + reflectivity: 1 + reverbGainDb: 0 + reverbBrightness: 0 + reverbTime: 1 + size: {x: 1, y: 1, z: 1} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 0} + propertyPath: leftWall + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: rightWall + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: ceiling + value: 14 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: backWall + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: frontWall + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LocalScale.x + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LocalScale.z + value: 10 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 103798} + m_IsPrefabParent: 1 \ No newline at end of file diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioRoom.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioRoom.prefab.meta new file mode 100644 index 0000000..b222e1b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioRoom.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c162c5667f1844e798189ae778eafc76 +timeCreated: 1448878013 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSoundfield.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSoundfield.prefab new file mode 100644 index 0000000..1ec003e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSoundfield.prefab @@ -0,0 +1,61 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &119012 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 440248} + - 114: {fileID: 11469856} + m_Layer: 0 + m_Name: GvrAudioSoundfield + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &440248 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119012} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11469856 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 119012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d38f0664abc0c446a8fa0886ec2bcd12, type: 3} + m_Name: + m_EditorClassIdentifier: + gainDb: 0 + playOnAwake: 1 + soundfieldClip0102: {fileID: 0} + soundfieldClip0304: {fileID: 0} + soundfieldLoop: 1 + soundfieldMute: 0 + soundfieldPitch: 1 + soundfieldPriority: 32 + soundfieldVolume: 1 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 119012} + m_IsPrefabParent: 1 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSoundfield.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSoundfield.prefab.meta new file mode 100644 index 0000000..afe7974 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSoundfield.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33b1331235def4618ab66fa8dad6d443 +timeCreated: 1467224175 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSource.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSource.prefab new file mode 100644 index 0000000..4804462 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSource.prefab @@ -0,0 +1,66 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &106086 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 434824} + - 114: {fileID: 11461060} + m_Layer: 0 + m_Name: GvrAudioSource + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &434824 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106086} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &11461060 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 106086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6dbca64e524ea44f9b26142ec59aca8a, type: 3} + m_Name: + m_EditorClassIdentifier: + directivityAlpha: 0 + directivitySharpness: 1 + gainDb: 0 + occlusionEnabled: 0 + playOnAwake: 1 + rolloffMode: 0 + sourceClip: {fileID: 0} + sourceLoop: 1 + sourceMute: 0 + sourcePitch: 1 + sourceVolume: 1 + sourceMaxDistance: 500 + sourceMinDistance: 1 + hrtfEnabled: 1 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 106086} + m_IsPrefabParent: 1 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSource.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSource.prefab.meta new file mode 100644 index 0000000..4cd9f02 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSource.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 82b70a42d67ea49d4a2e3bd826e9a512 +timeCreated: 1448877677 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials.meta new file mode 100644 index 0000000..3489a11 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d7d2058154010df48a2e826948d29835 +folderAsset: yes +timeCreated: 1477437068 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBase.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBase.mat new file mode 100644 index 0000000..63f383e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBase.mat @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ControllerBase + m_Shader: {fileID: 4800000, guid: fdbce15836bf64163856f689fdd67b2c, type: 3} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _MainTex: + m_Texture: {fileID: 2800000, guid: 16bedee72525148848c1c905828661fb, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: [] + m_Colors: + - _Color: {r: 0.61764705, g: 0.61764705, b: 0.61764705, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBase.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBase.mat.meta new file mode 100644 index 0000000..6df763d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBase.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b4f6031d569a624ba87b631c93a788a +timeCreated: 1472073995 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBaseTransparent.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBaseTransparent.mat new file mode 100644 index 0000000..65a61f4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBaseTransparent.mat @@ -0,0 +1,28 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ControllerBaseTransparent + m_Shader: {fileID: 4800000, guid: fdbce15836bf64163856f689fdd67b2c, type: 3} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: bf90d5db643cc45a8a8ea09172b0d000, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: [] + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBaseTransparent.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBaseTransparent.mat.meta new file mode 100644 index 0000000..ff9864e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerBaseTransparent.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22d5bb9dc35f641f3adaf464127b9507 +timeCreated: 1499785898 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerLaser.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerLaser.mat new file mode 100644 index 0000000..c883ffa --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerLaser.mat @@ -0,0 +1,25 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ControllerLaser + m_Shader: {fileID: 4800000, guid: 66ce34a5829a64856be634609edd8912, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: e314ee0eb28e9ad4ba2950c17b95c25d, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: [] + m_Colors: [] diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerLaser.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerLaser.mat.meta new file mode 100644 index 0000000..40cba21 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerLaser.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6329ec80f51d6049a5d00d86224003b +timeCreated: 1472081066 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerReticle.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerReticle.mat new file mode 100644 index 0000000..c74bed4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerReticle.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ControllerReticle + m_Shader: {fileID: 4800000, guid: 57e34a0b7bd8740c5922ce5840ba3ee8, type: 3} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 9be55a1c895d42a48a59cd0f2fedcb49, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _InvFade + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmisColor + second: {r: 0.2, g: 0.2, b: 0.2, a: 0} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + - first: + name: _TintColor + second: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerReticle.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerReticle.mat.meta new file mode 100644 index 0000000..f7d2031 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ControllerReticle.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ebbccbcf1451ddf4199eab062dc6d367 +timeCreated: 1475515069 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ReticlePointer.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ReticlePointer.mat new file mode 100644 index 0000000..23d3fc5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ReticlePointer.mat @@ -0,0 +1,130 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ReticlePointer + m_Shader: {fileID: 4800000, guid: a3b352fc2ba734605a3df75466e600f0, type: 3} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _Border + second: 0.015 + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DistanceInMeters + second: 2 + - first: + name: _DstBlend + second: 0 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _InnerDiameter + second: 1.5 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _OuterDiameter + second: 2 + - first: + name: _Parallax + second: 0.02 + - first: + name: _Radius + second: 0 + - first: + name: _SrcBlend + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/ReticlePointer.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ReticlePointer.mat.meta new file mode 100644 index 0000000..0fcf124 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/ReticlePointer.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4cb1460f617514a888f47071314ccdae +timeCreated: 1446892072 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipFont.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipFont.mat new file mode 100644 index 0000000..8cb15d2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipFont.mat @@ -0,0 +1,148 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TooltipFont + m_Shader: {fileID: 4800000, guid: c259eeb26e96b4f1d8eeb8871bcfdac5, type: 3} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _ColorMask + second: 15 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _Stencil + second: 0 + - first: + name: _StencilComp + second: 8 + - first: + name: _StencilOp + second: 0 + - first: + name: _StencilReadMask + second: 255 + - first: + name: _StencilWriteMask + second: 255 + - first: + name: _UVSec + second: 0 + - first: + name: _UseUIAlphaClip + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipFont.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipFont.mat.meta new file mode 100644 index 0000000..e491ff5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipFont.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8ff3914f115e149d49d001ed2cea77c8 +timeCreated: 1479426356 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipImage.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipImage.mat new file mode 100644 index 0000000..da6d64b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipImage.mat @@ -0,0 +1,148 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TooltipImage + m_Shader: {fileID: 4800000, guid: 36d276bd7b313441fbe34aadce7598ca, type: 3} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _ColorMask + second: 15 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _Stencil + second: 0 + - first: + name: _StencilComp + second: 8 + - first: + name: _StencilOp + second: 0 + - first: + name: _StencilReadMask + second: 255 + - first: + name: _StencilWriteMask + second: 255 + - first: + name: _UVSec + second: 0 + - first: + name: _UseUIAlphaClip + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipImage.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipImage.mat.meta new file mode 100644 index 0000000..c1647fb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipImage.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0f457230f725f45c4b83b007ff7ca38e +timeCreated: 1479426356 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipSimple.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipSimple.mat new file mode 100644 index 0000000..84a8e99 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipSimple.mat @@ -0,0 +1,83 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: TooltipSimple + m_Shader: {fileID: 4800000, guid: 06aa46b8e43675d43b204c3638e59767, type: 3} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + 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: 2ec36c18ef93e4d92ab61c818b298aac, 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_Floats: + - _BumpScale: 1 + - _ColorMask: 15 + - _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 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _UVSec: 0 + - _UseUIAlphaClip: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipSimple.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipSimple.mat.meta new file mode 100644 index 0000000..45e9941 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/TooltipSimple.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ae4e711941ecc4590a09ae58653816ee +timeCreated: 1479426356 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video.meta new file mode 100644 index 0000000..b3fae0b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 718625e334ab9468e9089b7b37cfccea +folderAsset: yes +timeCreated: 1477600849 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoMono.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoMono.mat new file mode 100644 index 0000000..7ca7c9c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoMono.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: VideoMono + m_Shader: {fileID: 4800000, guid: 4b50a67a5a86e4093bf89c85cbc2c700, type: 3} + m_ShaderKeywords: _EMISSION _STEREOMODE_NONE + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: e4ecb698048ab455babea358c846d5f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _FlipX + second: 0 + - first: + name: _Gamma + second: 1 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _StereoMode + second: 0 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoMono.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoMono.mat.meta new file mode 100644 index 0000000..bf18f80 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoMono.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6f8966fc281944c1a0e624a9fb657e4 +timeCreated: 1469833028 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereo.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereo.mat new file mode 100644 index 0000000..a9b5961 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereo.mat @@ -0,0 +1,136 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: VideoStereo + m_Shader: {fileID: 4800000, guid: 4b50a67a5a86e4093bf89c85cbc2c700, type: 3} + m_ShaderKeywords: _EMISSION _STEREOMODE_TOPBOTTOM + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: e4ecb698048ab455babea358c846d5f8, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _FlipX + second: 0 + - first: + name: _Gamma + second: 1 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _StereoMode + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereo.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereo.mat.meta new file mode 100644 index 0000000..d209634 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereo.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3bbe11c576194adba41e6f574dda321 +timeCreated: 1469833028 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereoInside.mat b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereoInside.mat new file mode 100644 index 0000000..1cbb528 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereoInside.mat @@ -0,0 +1,139 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: VideoStereoInside + m_Shader: {fileID: 4800000, guid: 4b50a67a5a86e4093bf89c85cbc2c700, type: 3} + m_ShaderKeywords: FLIP_X _ALPHABLEND_ON _EMISSION _STEREOMODE_TOPBOTTOM + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 10 + - first: + name: _FlipX + second: 1 + - first: + name: _Gamma + second: 1 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 2 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 5 + - first: + name: _StereoMode + second: 1 + - first: + name: _StereoVideo + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 0 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereoInside.mat.meta b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereoInside.mat.meta new file mode 100644 index 0000000..627f0c2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Materials/Video/VideoStereoInside.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 38722f7e29e284a8bb3a91c83a5b8848 +timeCreated: 1470165632 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models.meta b/Unity_VR_Assignment/Assets/GoogleVR/Models.meta new file mode 100644 index 0000000..64d5e8a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Models.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0b283d0fee0429746a4f8ad2647702ca +folderAsset: yes +timeCreated: 1477437367 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/ddcontroller.fbx b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddcontroller.fbx new file mode 100644 index 0000000..32e3e7f Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddcontroller.fbx differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/ddcontroller.fbx.meta b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddcontroller.fbx.meta new file mode 100644 index 0000000..29b086e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddcontroller.fbx.meta @@ -0,0 +1,82 @@ +fileFormatVersion: 2 +guid: 581a0d1f069aa2d41b4112fb6b01244e +timeCreated: 1472073995 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: ddcontroller + materials: + importMaterials: 0 + materialName: 1 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/ddtooltips.fbx b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddtooltips.fbx new file mode 100644 index 0000000..fc7574f Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddtooltips.fbx differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/ddtooltips.fbx.meta b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddtooltips.fbx.meta new file mode 100644 index 0000000..efd29f5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Models/ddtooltips.fbx.meta @@ -0,0 +1,84 @@ +fileFormatVersion: 2 +guid: 65a5650feae944b8db4f666fa2354de4 +timeCreated: 1497972397 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: tooltips + 4300002: ddtooltips + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/hemisphere_18x18.fbx b/Unity_VR_Assignment/Assets/GoogleVR/Models/hemisphere_18x18.fbx new file mode 100644 index 0000000..c7e0188 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Models/hemisphere_18x18.fbx differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/hemisphere_18x18.fbx.meta b/Unity_VR_Assignment/Assets/GoogleVR/Models/hemisphere_18x18.fbx.meta new file mode 100644 index 0000000..0963798 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Models/hemisphere_18x18.fbx.meta @@ -0,0 +1,77 @@ +fileFormatVersion: 2 +guid: 4bf0b5e6d505046d0ae41ea25c46a897 +timeCreated: 1499884154 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: hemisphere_18x18 + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 100 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/sphere_36x18.fbx b/Unity_VR_Assignment/Assets/GoogleVR/Models/sphere_36x18.fbx new file mode 100644 index 0000000..44c7157 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Models/sphere_36x18.fbx differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Models/sphere_36x18.fbx.meta b/Unity_VR_Assignment/Assets/GoogleVR/Models/sphere_36x18.fbx.meta new file mode 100644 index 0000000..76912aa --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Models/sphere_36x18.fbx.meta @@ -0,0 +1,77 @@ +fileFormatVersion: 2 +guid: 4a941ed6f14aa451d94ed905031bbe00 +timeCreated: 1497901673 +licenseType: Pro +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: sphere_36x18 + 9500000: //RootNode + materials: + importMaterials: 0 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 100 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 0 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 2 + importAnimation: 0 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins.meta new file mode 100644 index 0000000..f25420a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 347ef2dc1c79b4cd3bee08a70445fccb +folderAsset: yes +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android.meta new file mode 100644 index 0000000..0c16ce0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 480ae536df50249748e9a6534d2a1d5a +folderAsset: yes +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-6DOF.xml b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-6DOF.xml new file mode 100644 index 0000000..a253c9f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-6DOF.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-6DOF.xml.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-6DOF.xml.meta new file mode 100644 index 0000000..c996c71 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-6DOF.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6a4dc79e16b24f91978bbf65972aebb +timeCreated: 1498446981 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Cardboard.xml b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Cardboard.xml new file mode 100644 index 0000000..84f72cd --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Cardboard.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Cardboard.xml.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Cardboard.xml.meta new file mode 100644 index 0000000..c7c69eb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Cardboard.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d58d208ecab3b4c68864333c61ffac7b +timeCreated: 1473365081 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Daydream.xml b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Daydream.xml new file mode 100644 index 0000000..6655a31 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Daydream.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Daydream.xml.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Daydream.xml.meta new file mode 100644 index 0000000..c938707 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/AndroidManifest-Daydream.xml.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 48f7ce7c2a1174ffdac9ebd5815bfa13 +timeCreated: 1473365498 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/exoplayer-r1.5.11.aar b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/exoplayer-r1.5.11.aar new file mode 100644 index 0000000..5f14bbb Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/exoplayer-r1.5.11.aar differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/exoplayer-r1.5.11.aar.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/exoplayer-r1.5.11.aar.meta new file mode 100644 index 0000000..15c0ef9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/exoplayer-r1.5.11.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 58b04ce28ce724d30aa0d863e619a6bc +timeCreated: 1506951432 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-exoplayersupport-release.aar b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-exoplayersupport-release.aar new file mode 100644 index 0000000..39f98b4 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-exoplayersupport-release.aar differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-exoplayersupport-release.aar.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-exoplayersupport-release.aar.meta new file mode 100644 index 0000000..0a05a9f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-exoplayersupport-release.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: c18723f98ca9a4b82afef1048c324df6 +timeCreated: 1506951432 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboard.aar b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboard.aar new file mode 100644 index 0000000..e90f098 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboard.aar differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboard.aar.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboard.aar.meta new file mode 100644 index 0000000..a5b2a90 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboard.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: b15e9264b4be00b4081309189e69d16c +timeCreated: 1517512149 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboardsupport-release.aar b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboardsupport-release.aar new file mode 100644 index 0000000..22f7273 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboardsupport-release.aar differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboardsupport-release.aar.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboardsupport-release.aar.meta new file mode 100644 index 0000000..588510a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-keyboardsupport-release.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: abfc5232453744fb49d723562dace4c9 +timeCreated: 1506951432 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-permissionsupport-release.aar b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-permissionsupport-release.aar new file mode 100644 index 0000000..6dd4c10 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-permissionsupport-release.aar differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-permissionsupport-release.aar.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-permissionsupport-release.aar.meta new file mode 100644 index 0000000..6e14a51 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr-permissionsupport-release.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: 86e690da1921442f6ab8af8891453583 +timeCreated: 1506951432 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr.aar b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr.aar new file mode 100644 index 0000000..57e6fa8 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr.aar differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr.aar.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr.aar.meta new file mode 100644 index 0000000..47c63db --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/gvr.aar.meta @@ -0,0 +1,33 @@ +fileFormatVersion: 2 +guid: bea8d7578c4bd412b85536ce494761c5 +timeCreated: 1508991741 +licenseType: Pro +PluginImporter: + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + data: + first: + Android: Android + second: + enabled: 1 + settings: {} + data: + first: + Any: + second: + enabled: 0 + settings: {} + data: + first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs.meta new file mode 100644 index 0000000..d804da6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5d4862dc41d1a4e84b070d4e83c30d8f +folderAsset: yes +timeCreated: 1488922374 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a.meta new file mode 100644 index 0000000..6187b44 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a2e0070ee25f041faaef98d3d35ed00d +folderAsset: yes +timeCreated: 1488922375 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.so b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.so new file mode 100644 index 0000000..c517cc0 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.so differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.so.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.so.meta new file mode 100644 index 0000000..7ffe89b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.so.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 784c4e479ec224417a77c264df4d818b +timeCreated: 1488236556 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + platformData: + Android: + enabled: 1 + settings: + CPU: ARMv7 + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libgvrvideo.so b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libgvrvideo.so new file mode 100644 index 0000000..6474de5 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libgvrvideo.so differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libgvrvideo.so.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libgvrvideo.so.meta new file mode 100644 index 0000000..4c85380 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libgvrvideo.so.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 32207370716ab45ada2364a8fa956b9e +timeCreated: 1497997271 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 1 + settings: + CPU: ARMv7 + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86.meta new file mode 100644 index 0000000..dfd4b97 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7edd53de13a654a629339ecd5b63cf7f +folderAsset: yes +timeCreated: 1488922374 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.so b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.so new file mode 100644 index 0000000..19fb84b Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.so differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.so.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.so.meta new file mode 100644 index 0000000..534829d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.so.meta @@ -0,0 +1,50 @@ +fileFormatVersion: 2 +guid: 2372f8fed9f5548fd86a3e5ce0917655 +timeCreated: 1488236555 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + platformData: + Android: + enabled: 1 + settings: + CPU: x86 + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libgvrvideo.so b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libgvrvideo.so new file mode 100644 index 0000000..34ce893 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libgvrvideo.so differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libgvrvideo.so.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libgvrvideo.so.meta new file mode 100644 index 0000000..45afd5d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/libs/x86/libgvrvideo.so.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 1d2bac0377d01494884e8fc128374bdd +timeCreated: 1497997271 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 1 + settings: + CPU: x86 + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/proguard-gvr.txt b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/proguard-gvr.txt new file mode 100644 index 0000000..7ee4e8a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/proguard-gvr.txt @@ -0,0 +1,35 @@ +# Don't obfuscate any NDK/SDK code. This makes the debugging of stack traces +# in release builds easier. +-keepnames class com.google.vr.ndk.** { *; } +-keepnames class com.google.vr.sdk.** { *; } + +# These are part of the Java <-> native interfaces for GVR. +-keepclasseswithmembernames,includedescriptorclasses class com.google.vr.** { + native ; +} + +# The SDK configuration class member names are useful for debugging client logs. +-keepclasseswithmembernames,allowoptimization class com.google.common.logging.nano.Vr$VREvent$SdkConfigurationParams** { + *; +} + +-keep class com.google.vr.cardboard.UsedByNative +-keep @com.google.vr.cardboard.UsedByNative class * +-keepclassmembers class * { + @com.google.vr.cardboard.UsedByNative *; +} + +-keep class com.google.vr.cardboard.annotations.UsedByNative +-keep @com.google.vr.cardboard.annotations.UsedByNative class * +-keepclassmembers class * { + @com.google.vr.cardboard.annotations.UsedByNative *; +} + +-keep class com.google.vr.cardboard.annotations.UsedByReflection +-keep @com.google.vr.cardboard.annotations.UsedByReflection class * +-keepclassmembers class * { + @com.google.vr.cardboard.annotations.UsedByReflection *; +} + +-dontwarn sun.misc.Unsafe +-dontwarn libcore.io.Memory diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/proguard-gvr.txt.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/proguard-gvr.txt.meta new file mode 100644 index 0000000..7dff8b9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Android/proguard-gvr.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6cef2ddf786f4c10a3c9424db54acf1 +timeCreated: 1507333197 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll new file mode 100644 index 0000000..7116ecb Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll.meta new file mode 100644 index 0000000..512d453 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/Google.ProtocolBuffers.dll.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: eb0b9a42141e349a6a47f93165aeca3f +timeCreated: 1462046662 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 1 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS.meta new file mode 100644 index 0000000..52cdeba --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: feada4fce213d4542a1933096a47787c +folderAsset: yes +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.h b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.h new file mode 100644 index 0000000..2c9c7e3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.h @@ -0,0 +1,27 @@ +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. + +#import "UnityAppController.h" +#import "UnityAppController+ViewHandling.h" + +#import "UnityAppController+UnityInterface.h" +#include "PluginBase/UnityViewControllerListener.h" + +@interface GvrAudioAppController : UnityAppController + +- (UnityView *)createUnityView; + +- (UIViewController *)unityViewController; + +@end diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.h.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.h.meta new file mode 100644 index 0000000..4b549f7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.h.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: b764ba158c511407fbc195fb36b34bc6 +timeCreated: 1494024789 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + iOS: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.mm b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.mm new file mode 100644 index 0000000..e2ef09a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.mm @@ -0,0 +1,43 @@ +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. + +#import "GvrAudioAppController.h" + +extern "C" { + +// We have to manually register the Unity Audio Effect plugin. +struct UnityAudioEffectDefinition; +typedef int (*UnityPluginGetAudioEffectDefinitionsFunc)( + struct UnityAudioEffectDefinition*** descptr); +extern void UnityRegisterAudioPlugin( + UnityPluginGetAudioEffectDefinitionsFunc getAudioEffectDefinitions); +extern int UnityGetAudioEffectDefinitions(UnityAudioEffectDefinition*** definitionptr); + +} // extern "C" + +@implementation GvrAudioAppController + +- (UnityView *)createUnityView { + UnityRegisterViewControllerListener(self); + UnityRegisterAudioPlugin(UnityGetAudioEffectDefinitions); + return [super createUnityView]; +} + +- (UIViewController *)unityViewController { + return UnityGetGLViewController(); +} + +@end + +IMPL_APP_CONTROLLER_SUBCLASS(GvrAudioAppController) diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.mm.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.mm.meta new file mode 100644 index 0000000..35dabc3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.mm.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: f2a868822ddbb4ca6952f78be4bb4698 +timeCreated: 1494024789 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + iOS: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.a b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.a new file mode 100644 index 0000000..78444ff Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.a differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.a.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.a.meta new file mode 100644 index 0000000..f9bf37d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.a.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 94eb628c570e649bfac361e67f7fc6c3 +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + iOS: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86.meta new file mode 100644 index 0000000..3a0c522 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 584f6b53f763e409390610a85304e249 +folderAsset: yes +timeCreated: 1449672488 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dll new file mode 100644 index 0000000..26f4e09 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dll.meta new file mode 100644 index 0000000..636452e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dll.meta @@ -0,0 +1,67 @@ +fileFormatVersion: 2 +guid: 6042170e05c0148b998dc7fc4a2a151e +timeCreated: 1465328651 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 1 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: None + LinuxUniversal: + enabled: 0 + settings: + CPU: x86 + OSXIntel: + enabled: 1 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: None + OSXUniversal: + enabled: 0 + settings: + CPU: x86 + SamsungTV: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + Win: + enabled: 1 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: None + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_shared.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_shared.dll new file mode 100644 index 0000000..0c1de2c Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_shared.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_shared.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_shared.dll.meta new file mode 100644 index 0000000..cd49ec0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_shared.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 4cfd74634de364e7e844df8d06ed60d9 +timeCreated: 1503969906 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: None + LinuxUniversal: + enabled: 0 + settings: + CPU: x86 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: None + OSXUniversal: + enabled: 0 + settings: + CPU: x86 + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_unity_plugin.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_unity_plugin.dll new file mode 100644 index 0000000..b9144ff Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_unity_plugin.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_unity_plugin.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_unity_plugin.dll.meta new file mode 100644 index 0000000..5be5f64 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/instant_preview_unity_plugin.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 28d5dac5d3722404cbb8900e0cd82eb0 +timeCreated: 1503969906 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: None + LinuxUniversal: + enabled: 0 + settings: + CPU: x86 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: None + OSXUniversal: + enabled: 0 + settings: + CPU: x86 + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/libeay32.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/libeay32.dll new file mode 100644 index 0000000..80d81be Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/libeay32.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/libeay32.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/libeay32.dll.meta new file mode 100644 index 0000000..4767a07 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/libeay32.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 7a6fdbf12fe8d4d9b81bc1ca40d8ab12 +timeCreated: 1503969907 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: None + LinuxUniversal: + enabled: 0 + settings: + CPU: x86 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: None + OSXUniversal: + enabled: 0 + settings: + CPU: x86 + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/ssleay32.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/ssleay32.dll new file mode 100644 index 0000000..90f4848 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/ssleay32.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/ssleay32.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/ssleay32.dll.meta new file mode 100644 index 0000000..60ca38c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/ssleay32.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 9b6f93de72fcd41e887181f363442d6f +timeCreated: 1503969907 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: None + LinuxUniversal: + enabled: 0 + settings: + CPU: x86 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: None + OSXUniversal: + enabled: 0 + settings: + CPU: x86 + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/zlib.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/zlib.dll new file mode 100644 index 0000000..1e6634f Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/zlib.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/zlib.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/zlib.dll.meta new file mode 100644 index 0000000..87a1505 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86/zlib.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: fc4616b32e59e4b29af4ffd55e2b22f2 +timeCreated: 1503969907 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: x86 + Linux64: + enabled: 0 + settings: + CPU: None + LinuxUniversal: + enabled: 0 + settings: + CPU: x86 + OSXIntel: + enabled: 0 + settings: + CPU: AnyCPU + OSXIntel64: + enabled: 0 + settings: + CPU: None + OSXUniversal: + enabled: 0 + settings: + CPU: x86 + Win: + enabled: 0 + settings: + CPU: AnyCPU + Win64: + enabled: 0 + settings: + CPU: None + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64.meta new file mode 100644 index 0000000..1ab77d6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 006f50925eb084fb7a542a990aee6ee1 +folderAsset: yes +timeCreated: 1449672488 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundle b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundle new file mode 100644 index 0000000..df120d5 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundle differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundle.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundle.meta new file mode 100644 index 0000000..7b8730d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundle.meta @@ -0,0 +1,68 @@ +fileFormatVersion: 2 +guid: 35720a8a08c674133815d46f8d3ad66a +folderAsset: yes +timeCreated: 1462387242 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: OSX + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 1 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 1 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + SamsungTV: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 1 + settings: + CPU: AnyCPU + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dll new file mode 100644 index 0000000..5c30811 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dll.meta new file mode 100644 index 0000000..f137aca --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dll.meta @@ -0,0 +1,67 @@ +fileFormatVersion: 2 +guid: 59177834662aa4ead89a6c07a4715165 +timeCreated: 1465328657 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 1 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 1 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + SamsungTV: + enabled: 0 + settings: + STV_MODEL: STANDARD_13 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 1 + settings: + CPU: AnyCPU + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_shared.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_shared.dll new file mode 100644 index 0000000..d8e4f45 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_shared.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_shared.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_shared.dll.meta new file mode 100644 index 0000000..58473a2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_shared.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 249b97667d64740af9354546d1ff65b9 +timeCreated: 1503969906 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 0 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle.meta new file mode 100644 index 0000000..679eb47 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle.meta @@ -0,0 +1,67 @@ +fileFormatVersion: 2 +guid: a3bec05f359bd476388c6d0c1e34237d +folderAsset: yes +timeCreated: 1503969895 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: OSX + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 0 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: None + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: None + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 0 + settings: + CPU: AnyCPU + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + data: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents.meta new file mode 100644 index 0000000..2ae451e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: eb05b49a78ed748bea54269e59bd3184 +folderAsset: yes +timeCreated: 1523356692 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS.meta new file mode 100644 index 0000000..70f162a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2709622b8586a45e282dbc93c7e026f9 +folderAsset: yes +timeCreated: 1523356692 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/instant_preview_unity_plugin b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/instant_preview_unity_plugin new file mode 100644 index 0000000..421d53a Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/instant_preview_unity_plugin differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/instant_preview_unity_plugin.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/instant_preview_unity_plugin.meta new file mode 100644 index 0000000..080318c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/instant_preview_unity_plugin.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c384529221944e61942c06a628045d5 +timeCreated: 1523356692 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgpr.dylib b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgpr.dylib new file mode 100644 index 0000000..3f14827 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgpr.dylib differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgpr.dylib.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgpr.dylib.meta new file mode 100644 index 0000000..5243f79 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgpr.dylib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea514fdbb66cd470da9d21468feb7f40 +timeCreated: 1523356692 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc++.dylib b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc++.dylib new file mode 100644 index 0000000..01a53ac Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc++.dylib differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc++.dylib.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc++.dylib.meta new file mode 100644 index 0000000..39ab417 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc++.dylib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7936e2329e93145e5b5b9b0525a04b0e +timeCreated: 1523356692 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc.dylib b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc.dylib new file mode 100644 index 0000000..b5c2654 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc.dylib differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc.dylib.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc.dylib.meta new file mode 100644 index 0000000..16abe29 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libgrpc.dylib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b0d398507678c4380b80f9941f2fbba5 +timeCreated: 1523356692 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libinstant_preview_shared.dylib b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libinstant_preview_shared.dylib new file mode 100644 index 0000000..8ea61cf Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libinstant_preview_shared.dylib differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libinstant_preview_shared.dylib.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libinstant_preview_shared.dylib.meta new file mode 100644 index 0000000..85ebb82 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.bundle/Contents/MacOS/libinstant_preview_shared.dylib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60ec0b27224234d6f9c3f74349800b0c +timeCreated: 1523356692 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.dll new file mode 100644 index 0000000..571862f Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.dll.meta new file mode 100644 index 0000000..31a4f96 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/instant_preview_unity_plugin.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 16e6b86de4a9e4f16b8a25b413d684d7 +timeCreated: 1503969906 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 0 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.so b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.so new file mode 100644 index 0000000..fa86dc4 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.so differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.so.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.so.meta new file mode 100644 index 0000000..b9e1055 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.so.meta @@ -0,0 +1,63 @@ +fileFormatVersion: 2 +guid: 7f9e0b92d39064f0283d9051029090e3 +timeCreated: 1467830057 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 1 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Linux + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 1 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 1 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 0 + settings: + CPU: None + OSXUniversal: + enabled: 0 + settings: + CPU: None + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 1 + settings: + CPU: AnyCPU + iOS: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libeay32.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libeay32.dll new file mode 100644 index 0000000..46e4f82 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libeay32.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libeay32.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libeay32.dll.meta new file mode 100644 index 0000000..53a8cb8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/libeay32.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 8d9b7ae7a11da4dc79be5a40ae8b09dd +timeCreated: 1503969907 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 0 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/ssleay32.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/ssleay32.dll new file mode 100644 index 0000000..305108b Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/ssleay32.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/ssleay32.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/ssleay32.dll.meta new file mode 100644 index 0000000..7ee88b2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/ssleay32.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: 43017829bfcfd4575b426022d3cdd3f9 +timeCreated: 1503969906 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 0 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/zlib.dll b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/zlib.dll new file mode 100644 index 0000000..a75f47d Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/zlib.dll differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/zlib.dll.meta b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/zlib.dll.meta new file mode 100644 index 0000000..3f4f5e6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Plugins/x86_64/zlib.dll.meta @@ -0,0 +1,58 @@ +fileFormatVersion: 2 +guid: de6f5ee813f7b4d22a413d932a0316bf +timeCreated: 1503969907 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Android: + enabled: 0 + settings: + CPU: AnyCPU + Any: + enabled: 0 + settings: {} + Editor: + enabled: 1 + settings: + CPU: x86_64 + DefaultValueInitialized: true + OS: Windows + Linux: + enabled: 0 + settings: + CPU: None + Linux64: + enabled: 0 + settings: + CPU: x86_64 + LinuxUniversal: + enabled: 0 + settings: + CPU: x86_64 + OSXIntel: + enabled: 0 + settings: + CPU: None + OSXIntel64: + enabled: 0 + settings: + CPU: AnyCPU + OSXUniversal: + enabled: 0 + settings: + CPU: x86_64 + Win: + enabled: 0 + settings: + CPU: None + Win64: + enabled: 0 + settings: + CPU: AnyCPU + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs.meta new file mode 100644 index 0000000..05811f5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 80e6cdf429de247a792161c31b9b2ce2 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard.meta new file mode 100644 index 0000000..55e92cf --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f5a72cff6d5e743fb9aeee6a9fee8f20 +folderAsset: yes +timeCreated: 1505757940 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard/GvrReticlePointer.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard/GvrReticlePointer.prefab new file mode 100644 index 0000000..0adb9f4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard/GvrReticlePointer.prefab @@ -0,0 +1,93 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &171526 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 482300} + - component: {fileID: 723926960} + - component: {fileID: 2301146} + m_Layer: 2 + m_Name: GvrReticlePointer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &482300 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171526} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2301146 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171526} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 4cb1460f617514a888f47071314ccdae, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 171526} + m_IsPrefabParent: 1 +--- !u!114 &723926960 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 171526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7dcc90c2e60c4011896c7f21fc1f557, type: 3} + m_Name: + m_EditorClassIdentifier: + raycastMode: 0 + overridePointerCamera: {fileID: 0} + drawDebugRays: 0 + maxReticleDistance: 20 + reticleSegments: 20 + reticleGrowthSpeed: 8 + reticleSortingOrder: 32767 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard/GvrReticlePointer.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard/GvrReticlePointer.prefab.meta new file mode 100644 index 0000000..c9c7f48 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Cardboard/GvrReticlePointer.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60270cf52a5e94998a5a335989159738 +timeCreated: 1446890072 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller.meta new file mode 100644 index 0000000..38f661b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ddd8d323db35b4889b40373e0f22d614 +folderAsset: yes +timeCreated: 1462054133 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerMain.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerMain.prefab new file mode 100644 index 0000000..192e769 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerMain.prefab @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &198490 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 424718} + - component: {fileID: 114063829130735768} + m_Layer: 0 + m_Name: GvrControllerMain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &424718 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198490} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 198490} + m_IsPrefabParent: 1 +--- !u!114 &114063829130735768 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 198490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41251d5f89d5546bb9d8ba907686b71f, type: 3} + m_Name: + m_EditorClassIdentifier: + emulatorConnectionMode: 0 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerMain.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerMain.prefab.meta new file mode 100644 index 0000000..d66764c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerMain.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ca80f4596fa44b87912a0592346d260 +timeCreated: 1462054136 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerPointer.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerPointer.prefab new file mode 100644 index 0000000..3f55068 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerPointer.prefab @@ -0,0 +1,427 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 555767533} + m_IsPrefabParent: 1 +--- !u!23 &225929234 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 2100000, guid: ebbccbcf1451ddf4199eab062dc6d367, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!4 &364184199 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1820761120} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &555767533 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 1820761120} + - component: {fileID: 114000013899574178} + - component: {fileID: 114000013128025656} + m_Layer: 0 + m_Name: GvrControllerPointer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &573318178 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 364184199} + - component: {fileID: 1775680152} + - component: {fileID: 1475472563} + - component: {fileID: 904534127} + m_Layer: 0 + m_Name: ControllerVisual + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &573655681 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 51b65678ccdd949e9a58874d2880c0ef, type: 3} + m_Name: + m_EditorClassIdentifier: + raycastMode: 2 + overridePointerCamera: {fileID: 0} + drawDebugRays: 0 + maxPointerDistance: 20 + defaultReticleDistance: 20 + overrideCameraRayIntersectionDistance: 0 +--- !u!120 &750984299 +LineRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: a6329ec80f51d6049a5d00d86224003b, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_Parameters: + serializedVersion: 2 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0.01 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0.01 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + m_UseWorldSpace: 0 + m_Loop: 0 +--- !u!1 &771218441 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 1915109966} + - component: {fileID: 573655681} + - component: {fileID: 114000010349995660} + - component: {fileID: 750984299} + m_Layer: 2 + m_Name: Laser + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &904534127 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: 3b4f6031d569a624ba87b631c93a788a, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!1 &1225896218 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 1412694727} + - component: {fileID: 114000013395929458} + - component: {fileID: 1583549455} + - component: {fileID: 225929234} + m_Layer: 2 + m_Name: Reticle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1412694727 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1915109966} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &1475472563 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_Mesh: {fileID: 4300000, guid: 581a0d1f069aa2d41b4112fb6b01244e, type: 3} +--- !u!33 &1583549455 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1775680152 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 573318178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aa952cbcc0eb13d4ca558b6da550ff55, type: 3} + m_Name: + m_EditorClassIdentifier: + attachmentPrefabs: + - {fileID: 1000011375678268, guid: 6e5b693d0947f4a8b85a00d3965ba64c, type: 2} + touchPadColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + appButtonColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + systemButtonColor: {r: 0.078431375, g: 0.078431375, b: 0.078431375, a: 1} + readControllerState: 1 + displayState: + batteryLevel: -1 + batteryCharging: 0 + clickButton: 0 + appButton: 0 + homeButton: 0 + touching: 0 + touchPos: {x: 0.5, y: 0.5} + maximumAlpha: 1 +--- !u!4 &1820761120 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 555767533} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 364184199} + - {fileID: 1915109966} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &1915109966 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_LocalRotation: {x: 0.13052616, y: 0, z: 0, w: 0.9914449} + m_LocalPosition: {x: 0, y: -0.009, z: 0.049} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1412694727} + m_Father: {fileID: 1820761120} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 15, y: 0, z: 0} +--- !u!114 &114000010349995660 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 771218441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4ee199cdc1304b2090f019e4f488674, type: 3} + m_Name: + m_EditorClassIdentifier: + reticle: {fileID: 114000013395929458} + controller: {fileID: 364184199} + laserColor: {r: 1, g: 1, b: 1, a: 0.25} + laserColorEnd: {r: 1, g: 1, b: 1, a: 0} + maxLaserDistance: 1 + lerpSpeed: 20 + lerpThreshold: 1 + shrinkLaser: 1 + shrunkScale: 0.2 + beginShrinkAngleDegrees: 0 + endShrinkAngleDegrees: 2 +--- !u!114 &114000013128025656 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 555767533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7dda4bb2d5509e44e978d2bf56e25d7c, type: 3} + m_Name: + m_EditorClassIdentifier: + elbowRestPosition: {x: 0.195, y: -0.5, z: 0.005} + wristRestPosition: {x: 0, y: 0, z: 0.25} + controllerRestPosition: {x: 0, y: 0, z: 0.05} + armExtensionOffset: {x: -0.13, y: 0.14, z: 0.08} + elbowBendRatio: 0.6 + fadeControllerOffset: 0 + fadeDistanceFromHeadForward: 0.25 + fadeDistanceFromHeadSide: 0.15 + tooltipMinDistanceFromFace: 0.45 + tooltipMaxAngleFromCamera: 80 + isLockedToNeck: 1 +--- !u!114 &114000013395929458 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1225896218} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b5cd7f7fcfc8a4c1fbc201ccc579556d, type: 3} + m_Name: + m_EditorClassIdentifier: + isSizeBasedOnCameraDistance: 1 + sizeMeters: 0.1 + doesReticleFaceCamera: + alongXAxis: 1 + alongYAxis: 1 + alongZAxis: 1 + sortingOrder: 0 +--- !u!114 &114000013899574178 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 555767533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 311793381eb9d45149dc1a422000a9fd, type: 3} + m_Name: + m_EditorClassIdentifier: + armModel: {fileID: 114000013128025656} + isDeactivatedWhenDisconnected: 1 + controllerHand: 2 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerPointer.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerPointer.prefab.meta new file mode 100644 index 0000000..4b20855 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/GvrControllerPointer.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 34c21f523e72f45509a4e37ed0293c3b +timeCreated: 1478632992 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips.meta new file mode 100644 index 0000000..c60e126 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0d86886405ad043d2acf12c2ef732620 +folderAsset: yes +timeCreated: 1505757881 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsSimple.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsSimple.prefab new file mode 100644 index 0000000..4e38e4a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsSimple.prefab @@ -0,0 +1,94 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000011375678268} + m_IsPrefabParent: 1 +--- !u!1 &1000011375678268 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011494766954} + - component: {fileID: 33000013054680736} + - component: {fileID: 23000010794089480} + - component: {fileID: 114000013927758722} + m_Layer: 0 + m_Name: GvrControllerTooltipsSimple + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000011494766954 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011375678268} + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23000010794089480 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011375678268} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: ae4e711941ecc4590a09ae58653816ee, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + 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 +--- !u!33 &33000013054680736 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011375678268} + m_Mesh: {fileID: 4300002, guid: 65a5650feae944b8db4f666fa2354de4, type: 3} +--- !u!114 &114000013927758722 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011375678268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ef63f87a26b474e1c88f77dfc4f3aa3a, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsSimple.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsSimple.prefab.meta new file mode 100644 index 0000000..46b9bc2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsSimple.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6e5b693d0947f4a8b85a00d3965ba64c +timeCreated: 1497972904 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsTemplate.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsTemplate.prefab new file mode 100644 index 0000000..0a0dc6f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsTemplate.prefab @@ -0,0 +1,1473 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000014026255024} + m_IsPrefabParent: 1 +--- !u!1 &1000010117049304 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000012768960036} + - component: {fileID: 222000012808108364} + - component: {fileID: 114000011176196512} + - component: {fileID: 114000010869331076} + - component: {fileID: 114000011188699466} + m_Layer: 0 + m_Name: TouchPadInsideBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010169343406 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000010863598960} + - component: {fileID: 222000010909209886} + - component: {fileID: 114000011580402344} + - component: {fileID: 225000012820621760} + m_Layer: 0 + m_Name: TouchPadInside + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010438086160 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000012359520306} + - component: {fileID: 222000010106475758} + - component: {fileID: 114000012078268460} + - component: {fileID: 225000011076046506} + m_Layer: 0 + m_Name: AppButtonOutside + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010479422550 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000013997378420} + - component: {fileID: 222000011253309134} + - component: {fileID: 114000014244817588} + - component: {fileID: 114000013027124760} + m_Layer: 0 + m_Name: TouchPadOutsideText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010804225292 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000011106670572} + - component: {fileID: 222000013131153604} + - component: {fileID: 114000013209411538} + m_Layer: 0 + m_Name: AppButtonInsideLink + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010859805338 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000011019861458} + - component: {fileID: 222000014105096528} + - component: {fileID: 114000013348584900} + m_Layer: 0 + m_Name: AppButtonOutsideLink + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000010958673578 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000012606696782} + - component: {fileID: 222000013891077462} + - component: {fileID: 114000010969450678} + m_Layer: 0 + m_Name: TouchPadInsideLink + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011786898984 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000011447089756} + - component: {fileID: 222000012437868158} + - component: {fileID: 114000011316336172} + - component: {fileID: 114000013697563420} + - component: {fileID: 114000012220592728} + m_Layer: 0 + m_Name: AppButtonInsideBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011942071012 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000011516950696} + - component: {fileID: 222000013141467322} + - component: {fileID: 114000010912210270} + - component: {fileID: 114000011177837190} + m_Layer: 0 + m_Name: AppButtonOutsideText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000011984777368 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000010204039768} + - component: {fileID: 222000012043245900} + - component: {fileID: 114000013171188330} + - component: {fileID: 114000011430816214} + - component: {fileID: 114000010811401956} + m_Layer: 0 + m_Name: TouchPadOutsideBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012145126104 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000011117942852} + - component: {fileID: 223000012331054502} + - component: {fileID: 114000011722478518} + m_Layer: 0 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012764796878 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000012408480780} + - component: {fileID: 222000012389677596} + - component: {fileID: 114000010527828958} + - component: {fileID: 225000013512810572} + m_Layer: 0 + m_Name: TouchPadOutside + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012867645896 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000010506245928} + - component: {fileID: 222000010632227814} + - component: {fileID: 114000010645115024} + m_Layer: 0 + m_Name: TouchPadOutsideLink + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000012946596940 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000014173375178} + - component: {fileID: 222000014264444926} + - component: {fileID: 114000013812054888} + - component: {fileID: 114000010997937704} + - component: {fileID: 114000014226667966} + m_Layer: 0 + m_Name: AppButtonOutsideBackground + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013542615286 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000010344450016} + - component: {fileID: 222000011260161156} + - component: {fileID: 114000011552869662} + - component: {fileID: 114000014188439064} + m_Layer: 0 + m_Name: AppButtonInsideText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000013884754528 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000012254400656} + - component: {fileID: 222000014147650074} + - component: {fileID: 114000011165790600} + - component: {fileID: 114000010451190918} + - component: {fileID: 114000011134572026} + m_Layer: 0 + m_Name: TouchPadInsideText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000014026255024 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4000011664813386} + m_Layer: 0 + m_Name: GvrControllerTooltipsTemplate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1000014090478646 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224000013163560622} + - component: {fileID: 222000010959094516} + - component: {fileID: 114000013205958212} + - component: {fileID: 225000013204483048} + m_Layer: 0 + m_Name: AppButtonInside + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000011664813386 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014026255024} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0.025, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000011117942852} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!114 &114000010451190918 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013884754528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.09803922} + m_EffectDistance: {x: 1, y: 1} + m_UseGraphicAlpha: 0 +--- !u!114 &114000010527828958 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012764796878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c52851ea0de74a228fa29a84de008ba, type: 3} + m_Name: + m_EditorClassIdentifier: + location: 0 + text: {fileID: 114000014244817588} + alwaysVisible: 0 +--- !u!114 &114000010645115024 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012867645896} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000010811401956 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011984777368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &114000010869331076 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010117049304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 42 + m_Right: 42 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114000010912210270 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011942071012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 8ff3914f115e149d49d001ed2cea77c8, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 0.866} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4eedafad5084240419e649245c7b2093, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 30 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: App Button Outside +--- !u!114 &114000010969450678 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010958673578} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000010997937704 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012946596940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 42 + m_Right: 42 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114000011134572026 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013884754528} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 3 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114000011165790600 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013884754528} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 8ff3914f115e149d49d001ed2cea77c8, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 0.866} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4eedafad5084240419e649245c7b2093, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 30 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Touch Pad Inside +--- !u!114 &114000011176196512 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010117049304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: d60ac4d1232f24cfd9193c9724ed0185, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000011177837190 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011942071012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.09803922} + m_EffectDistance: {x: 1, y: 1} + m_UseGraphicAlpha: 0 +--- !u!114 &114000011188699466 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010117049304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &114000011316336172 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011786898984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: d60ac4d1232f24cfd9193c9724ed0185, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000011430816214 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011984777368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 42 + m_Right: 42 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114000011552869662 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013542615286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 8ff3914f115e149d49d001ed2cea77c8, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 0.866} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4eedafad5084240419e649245c7b2093, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 30 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: App Button Inside +--- !u!114 &114000011580402344 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010169343406} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c52851ea0de74a228fa29a84de008ba, type: 3} + m_Name: + m_EditorClassIdentifier: + location: 1 + text: {fileID: 114000011165790600} + alwaysVisible: 0 +--- !u!114 &114000011722478518 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012145126104} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!114 &114000012078268460 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010438086160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c52851ea0de74a228fa29a84de008ba, type: 3} + m_Name: + m_EditorClassIdentifier: + location: 2 + text: {fileID: 114000010912210270} + alwaysVisible: 0 +--- !u!114 &114000012220592728 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011786898984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &114000013027124760 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010479422550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.09803922} + m_EffectDistance: {x: 1, y: 1} + m_UseGraphicAlpha: 0 +--- !u!114 &114000013171188330 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011984777368} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: d60ac4d1232f24cfd9193c9724ed0185, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000013205958212 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014090478646} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7c52851ea0de74a228fa29a84de008ba, type: 3} + m_Name: + m_EditorClassIdentifier: + location: 3 + text: {fileID: 114000011552869662} + alwaysVisible: 0 +--- !u!114 &114000013209411538 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010804225292} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000013348584900 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010859805338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000013697563420 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011786898984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 42 + m_Right: 42 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &114000013812054888 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012946596940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 0f457230f725f45c4b83b007ff7ca38e, type: 2} + m_Color: {r: 0.12941177, g: 0.12941177, b: 0.12941177, a: 0.54901963} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: d60ac4d1232f24cfd9193c9724ed0185, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &114000014188439064 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013542615286} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.09803922} + m_EffectDistance: {x: 1, y: 1} + m_UseGraphicAlpha: 0 +--- !u!114 &114000014226667966 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012946596940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 +--- !u!114 &114000014244817588 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010479422550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 8ff3914f115e149d49d001ed2cea77c8, type: 2} + m_Color: {r: 1, g: 1, b: 1, a: 0.866} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4eedafad5084240419e649245c7b2093, type: 3} + m_FontSize: 17 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 30 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: ' Touch Pad Outside' +--- !u!222 &222000010106475758 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010438086160} +--- !u!222 &222000010632227814 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012867645896} +--- !u!222 &222000010909209886 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010169343406} +--- !u!222 &222000010959094516 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014090478646} +--- !u!222 &222000011253309134 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010479422550} +--- !u!222 &222000011260161156 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013542615286} +--- !u!222 &222000012043245900 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011984777368} +--- !u!222 &222000012389677596 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012764796878} +--- !u!222 &222000012437868158 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011786898984} +--- !u!222 &222000012808108364 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010117049304} +--- !u!222 &222000013131153604 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010804225292} +--- !u!222 &222000013141467322 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011942071012} +--- !u!222 &222000013891077462 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010958673578} +--- !u!222 &222000014105096528 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010859805338} +--- !u!222 &222000014147650074 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013884754528} +--- !u!222 &222000014264444926 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012946596940} +--- !u!223 &223000012331054502 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012145126104} + 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!224 &224000010204039768 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011984777368} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000013997378420} + m_Father: {fileID: 224000012408480780} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -32, y: 0} + m_SizeDelta: {x: 0, y: 56} + m_Pivot: {x: 0, y: 0.5} +--- !u!224 &224000010344450016 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013542615286} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000011447089756} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224000010506245928 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012867645896} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000012408480780} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -30, y: 0} + m_SizeDelta: {x: 45, y: 1.2} + m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224000010863598960 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010169343406} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 28.000002} + m_LocalScale: {x: 1, y: 1.0000002, z: 1.0000002} + m_Children: + - {fileID: 224000012768960036} + - {fileID: 224000012606696782} + m_Father: {fileID: 224000011117942852} + m_RootOrder: 2 + 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: 110} + m_SizeDelta: {x: 250, y: 50} + m_Pivot: {x: -0.5, y: 0.5} +--- !u!224 &224000011019861458 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010859805338} + m_LocalRotation: {x: -1.0164397e-20, y: -1.4210856e-14, z: -2.8421713e-14, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000012359520306} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -30, y: 0.4} + m_SizeDelta: {x: 75, y: 1.2} + m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224000011106670572 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010804225292} + m_LocalRotation: {x: -1.0164397e-20, y: -1.4210856e-14, z: -2.8421713e-14, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.5} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000013163560622} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -30, y: 0.4} + m_SizeDelta: {x: 75, y: 1.2} + m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224000011117942852 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012145126104} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.013000013} + m_LocalScale: {x: 0.00035, y: 0.00035000005, z: 0.00035000005} + m_Children: + - {fileID: 224000012408480780} + - {fileID: 224000012359520306} + - {fileID: 224000010863598960} + - {fileID: 224000013163560622} + m_Father: {fileID: 4000011664813386} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: -0.000000036580836, y: -0.0030792095} + m_SizeDelta: {x: 0, y: 1080} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224000011447089756 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011786898984} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000010344450016} + m_Father: {fileID: 224000013163560622} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -32, y: 0} + m_SizeDelta: {x: 0, y: 56} + m_Pivot: {x: 0, y: 0.5} +--- !u!224 &224000011516950696 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000011942071012} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000014173375178} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224000012254400656 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013884754528} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000012768960036} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224000012359520306 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010438086160} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 28.000002} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000014173375178} + - {fileID: 224000011019861458} + m_Father: {fileID: 224000011117942852} + 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: 30} + m_SizeDelta: {x: 250, y: 50} + m_Pivot: {x: -0.5, y: 0.5} +--- !u!224 &224000012408480780 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012764796878} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 28.000002} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000010204039768} + - {fileID: 224000010506245928} + m_Father: {fileID: 224000011117942852} + 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: 109.99998} + m_SizeDelta: {x: 250, y: 50} + m_Pivot: {x: -0.5, y: 0.5} +--- !u!224 &224000012606696782 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010958673578} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000010863598960} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -30, y: 0} + m_SizeDelta: {x: 45, y: 1.2} + m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224000012768960036 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010117049304} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000012254400656} + m_Father: {fileID: 224000010863598960} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -32, y: 0} + m_SizeDelta: {x: 0, y: 56} + m_Pivot: {x: 0, y: 0.5} +--- !u!224 &224000013163560622 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014090478646} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 28.000002} + m_LocalScale: {x: 1, y: 1.0000002, z: 1.0000002} + m_Children: + - {fileID: 224000011447089756} + - {fileID: 224000011106670572} + m_Father: {fileID: 224000011117942852} + m_RootOrder: 3 + 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: 30} + m_SizeDelta: {x: 250, y: 50} + m_Pivot: {x: -0.5, y: 0.5} +--- !u!224 &224000013997378420 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010479422550} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224000010204039768} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224000014173375178 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012946596940} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224000011516950696} + m_Father: {fileID: 224000012359520306} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -32, y: 0} + m_SizeDelta: {x: 0, y: 56} + m_Pivot: {x: 0, y: 0.5} +--- !u!225 &225000011076046506 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010438086160} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!225 &225000012820621760 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010169343406} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!225 &225000013204483048 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014090478646} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!225 &225000013512810572 +CanvasGroup: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000012764796878} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsTemplate.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsTemplate.prefab.meta new file mode 100644 index 0000000..6539206 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Controller/Tooltips/GvrControllerTooltipsTemplate.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f86870dc8a5b2476bb66abe6e43dfb0f +timeCreated: 1495732127 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem.meta new file mode 100644 index 0000000..f2e08e8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2df99f75b699d4c44850f4c4fecc87a1 +folderAsset: yes +timeCreated: 1448497093 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem/GvrEventSystem.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem/GvrEventSystem.prefab new file mode 100644 index 0000000..58534a3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem/GvrEventSystem.prefab @@ -0,0 +1,72 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 761381335} + m_IsPrefabParent: 1 +--- !u!1 &761381335 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 766346198} + - 114: {fileID: 1816646545} + - 114: {fileID: 1422168469} + m_Layer: 0 + m_Name: GvrEventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &766346198 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 761381335} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &1422168469 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 761381335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fcd4baceb58cc40c98e500572bede6a6, type: 3} + m_Name: + m_EditorClassIdentifier: + vrModeOnly: 0 + scrollInput: + inertia: 1 + decelerationRate: 0.05 +--- !u!114 &1816646545 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 761381335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 20 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem/GvrEventSystem.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem/GvrEventSystem.prefab.meta new file mode 100644 index 0000000..7ca21f9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/EventSystem/GvrEventSystem.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 463285ecd6702471a909ba810832bf0e +timeCreated: 1481866398 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/GvrEditorEmulator.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/GvrEditorEmulator.prefab new file mode 100644 index 0000000..ed4ff58 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/GvrEditorEmulator.prefab @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &177758 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 498412} + - 114: {fileID: 114000013210091632} + m_Layer: 0 + m_Name: GvrEditorEmulator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &498412 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177758} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 177758} + m_IsPrefabParent: 1 +--- !u!114 &114000013210091632 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 177758} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41679d3338266415f88d226e6bf3d0be, type: 3} + m_Name: + m_EditorClassIdentifier: + m_camera: {fileID: 0} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/GvrEditorEmulator.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/GvrEditorEmulator.prefab.meta new file mode 100644 index 0000000..a213526 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/GvrEditorEmulator.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 970dd4b9371394fb4890965f608d46fd +timeCreated: 1467065150 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset.meta new file mode 100644 index 0000000..7327648 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e94ff8ce3fa244838b6256ea0ca1bbbd +folderAsset: yes +timeCreated: 1506022733 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset/GvrHeadset.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset/GvrHeadset.prefab new file mode 100644 index 0000000..acf63e7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset/GvrHeadset.prefab @@ -0,0 +1,55 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000014104313712} + m_IsPrefabParent: 1 +--- !u!1 &1000014104313712 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000010886689084} + - 114: {fileID: 114000014150266774} + m_Layer: 0 + m_Name: GvrHeadset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000010886689084 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014104313712} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!114 &114000014150266774 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000014104313712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ecd9463bbd7994be09b972947a085067, type: 3} + m_Name: + m_EditorClassIdentifier: + enableStandalone6dof: 0 + standaloneRequired: 0 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset/GvrHeadset.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset/GvrHeadset.prefab.meta new file mode 100644 index 0000000..5690700 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Headset/GvrHeadset.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d638298e697ca4e9b91853efadd0e6da +timeCreated: 1498436996 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview.meta new file mode 100644 index 0000000..92ffe89 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c6864d54269094ce5a5f7af9dabbbd4f +folderAsset: yes +timeCreated: 1504030934 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview/GvrInstantPreviewMain.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview/GvrInstantPreviewMain.prefab new file mode 100644 index 0000000..6e88f52 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview/GvrInstantPreviewMain.prefab @@ -0,0 +1,105 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1000013061525784} + m_IsPrefabParent: 1 +--- !u!1 &1000013061525784 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 4000012185119224} + - 20: {fileID: 20000012123226224} + - 114: {fileID: 114000011015867216} + - 114: {fileID: 114792940664812010} + m_Layer: 0 + m_Name: GvrInstantPreviewMain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4000012185119224 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013061525784} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!20 &20000012123226224 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013061525784} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 4 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: -1 + far clip plane: 1 + field of view: 60 + orthographic: 1 + orthographic size: 1 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 0 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 0 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 + m_StereoMirrorMode: 0 +--- !u!114 &114000011015867216 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013061525784} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7528488988f9d48478da328909125dea, type: 3} + m_Name: + m_EditorClassIdentifier: + OutputResolution: 0 + MultisampleCount: 0 + BitRate: 3 + InstallApkOnRun: 1 + InstantPreviewApk: {fileID: 102900000, guid: dc278786e6540af428ccbf7825495004, type: 3} +--- !u!114 &114792940664812010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000013061525784} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1b78ffabb50d1e94ca164106f5444e34, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview/GvrInstantPreviewMain.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview/GvrInstantPreviewMain.prefab.meta new file mode 100644 index 0000000..61e4bb1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/InstantPreview/GvrInstantPreviewMain.prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ce7abbbeb276a1547bd8ce1069fdabb7 +timeCreated: 1494615578 +licenseType: Pro +NativeFormatImporter: + mainObjectFileID: -1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard.meta new file mode 100644 index 0000000..280a9e0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c0dda5c845a3f45b388c74576bfe18d4 +folderAsset: yes +timeCreated: 1493941988 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardCanvas.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardCanvas.prefab new file mode 100644 index 0000000..b8ef2d1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardCanvas.prefab @@ -0,0 +1,294 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1594779858} + m_IsPrefabParent: 1 +--- !u!114 &150179061 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1627538840} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.865, g: 0.888, b: 0.031, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 50 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Start Typing... +--- !u!224 &313390157 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1594779858} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 5} + m_LocalScale: {x: 0.01, y: 0.01, z: 0.01} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1255186678} + - {fileID: 1279492093} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 1.51} + m_SizeDelta: {x: 450, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &890278573 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1594779858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 4 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: OnPointerClick + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: [] +--- !u!65 &1014590142 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1594779858} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 450, y: 100, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1054129942 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1594779858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, 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 +--- !u!222 &1063622329 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1547164621} +--- !u!223 &1068040100 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1594779858} + m_Enabled: 1 + serializedVersion: 2 + 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_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &1131593892 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1547164621} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!224 &1255186678 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1547164621} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 313390157} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &1279492093 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1627538840} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 313390157} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1547164621 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1255186678} + - 222: {fileID: 1063622329} + - 114: {fileID: 1131593892} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1594779858 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 313390157} + - 223: {fileID: 1068040100} + - 114: {fileID: 1054129942} + - 114: {fileID: 1704454756} + - 65: {fileID: 1014590142} + - 114: {fileID: 890278573} + m_Layer: 5 + m_Name: GvrKeyboardCanvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1627538840 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 1279492093} + - 222: {fileID: 2023487032} + - 114: {fileID: 150179061} + m_Layer: 5 + m_Name: KeyboardText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1704454756 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1594779858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 739800cd36aba44e9b04ce977e5784bd, type: 3} + m_Name: + m_EditorClassIdentifier: + raycastMode: 0 + ignoreReversedGraphics: 1 + blockingObjects: 0 + blockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!222 &2023487032 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1627538840} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardCanvas.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardCanvas.prefab.meta new file mode 100644 index 0000000..456975a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardCanvas.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f4cf01cab04054926935acc7cb25b7f5 +timeCreated: 1479081996 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardManager.prefab b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardManager.prefab new file mode 100644 index 0000000..ba1f408 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardManager.prefab @@ -0,0 +1,57 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 1217039644} + m_IsPrefabParent: 1 +--- !u!4 &642702418 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1217039644} + 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_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &1217039644 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 642702418} + - 114: {fileID: 1260534185} + m_Layer: 0 + m_Name: GvrKeyboardManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1260534185 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1217039644} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 573e2b04dc4734d68a2b6747421ce0bc, type: 3} + m_Name: + m_EditorClassIdentifier: + keyboardDelegate: {fileID: 0} + inputMode: 0 + useRecommended: 1 + distance: 3 diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardManager.prefab.meta b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardManager.prefab.meta new file mode 100644 index 0000000..81421c4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Prefabs/Keyboard/GvrKeyboardManager.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c99596fcbe574b168ae0faa3afe8546 +timeCreated: 1479082001 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/README b/Unity_VR_Assignment/Assets/GoogleVR/README new file mode 100644 index 0000000..f587e9f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/README @@ -0,0 +1,7 @@ +Google VR SDK for Unity + +This SDK provides Android and iOS developers with the easiest way to add +Google VR support to their Unity projects. + +The latest version of this SDK, as well as version-specific release notes, +are available from https://github.com/googlevr/gvr-unity-sdk/releases. diff --git a/Unity_VR_Assignment/Assets/GoogleVR/README.meta b/Unity_VR_Assignment/Assets/GoogleVR/README.meta new file mode 100644 index 0000000..31652d1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/README.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: de961e46abe24453a81bf1c8576885b3 +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts.meta new file mode 100644 index 0000000..dc4cc2e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 5f01aa5c8e7de4973aa7785e6b4dc993 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard.meta new file mode 100644 index 0000000..15bbfd2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 67702360fbb854c77b3e76f699e6a909 +folderAsset: yes +timeCreated: 1505758129 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard/GvrReticlePointer.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard/GvrReticlePointer.cs new file mode 100644 index 0000000..83dc8be --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard/GvrReticlePointer.cs @@ -0,0 +1,258 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; + +/// Draws a circular reticle in front of any object that the user points at. +/// The circle dilates if the object is clickable. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrReticlePointer")] +public class GvrReticlePointer : GvrBasePointer +{ + /// The constants below are expsed for testing. Minimum inner angle of the reticle (in degrees). + public const float RETICLE_MIN_INNER_ANGLE = 0.0f; + + /// Minimum outer angle of the reticle (in degrees). + public const float RETICLE_MIN_OUTER_ANGLE = 0.5f; + + /// Angle at which to expand the reticle when intersecting with an object (in degrees). + public const float RETICLE_GROWTH_ANGLE = 1.5f; + + /// Minimum distance of the reticle (in meters). + public const float RETICLE_DISTANCE_MIN = 0.45f; + + /// Maximum distance of the reticle (in meters). + public float maxReticleDistance = 20.0f; + + /// Number of segments making the reticle circle. + public int reticleSegments = 20; + + /// Growth speed multiplier for the reticle/ + public float reticleGrowthSpeed = 8.0f; + + /// Sorting order to use for the reticle's renderer. + /// Range values come from https://docs.unity3d.com/ScriptReference/Renderer-sortingOrder.html. + /// Default value 32767 ensures gaze reticle is always rendered on top. + [Range(-32767, 32767)] + public int reticleSortingOrder = 32767; + + /// The material used to render the reticle. + public Material MaterialComp { private get; set; } + + /// Current inner angle of the reticle (in degrees). + /// Exposed for testing. + public float ReticleInnerAngle { get; private set; } + + /// Current outer angle of the reticle (in degrees). + /// Exposed for testing. + public float ReticleOuterAngle { get; private set; } + + /// Current distance of the reticle (in meters). + /// Getter exposed for testing. + public float ReticleDistanceInMeters { get; private set; } + + /// Current inner and outer diameters of the reticle, + /// before distance multiplication. + /// Getters exposed for testing. + public float ReticleInnerDiameter { get; private set; } + + /// Current outer diameter of the reticle (in meters). + public float ReticleOuterDiameter { get; private set; } + + /// Returns the max distance from the pointer that + /// raycast hits will be detected. + public override float MaxPointerDistance + { + get { return maxReticleDistance; } + } + + public override void OnPointerEnter(RaycastResult raycastResultResult, bool isInteractive) + { + SetPointerTarget(raycastResultResult.worldPosition, isInteractive); + } + + public override void OnPointerHover(RaycastResult raycastResultResult, bool isInteractive) + { + SetPointerTarget(raycastResultResult.worldPosition, isInteractive); + } + + public override void OnPointerExit(GameObject previousObject) + { + ReticleDistanceInMeters = maxReticleDistance; + ReticleInnerAngle = RETICLE_MIN_INNER_ANGLE; + ReticleOuterAngle = RETICLE_MIN_OUTER_ANGLE; + } + + public override void OnPointerClickDown() + { + } + + public override void OnPointerClickUp() + { + } + + public override void GetPointerRadius(out float enterRadius, out float exitRadius) + { + float min_inner_angle_radians = Mathf.Deg2Rad * RETICLE_MIN_INNER_ANGLE; + float max_inner_angle_radians = Mathf.Deg2Rad * (RETICLE_MIN_INNER_ANGLE + RETICLE_GROWTH_ANGLE); + + enterRadius = 2.0f * Mathf.Tan(min_inner_angle_radians); + exitRadius = 2.0f * Mathf.Tan(max_inner_angle_radians); + } + + /// Updates the material based on the reticle properties. + public void UpdateDiameters() + { + ReticleDistanceInMeters = + Mathf.Clamp(ReticleDistanceInMeters, RETICLE_DISTANCE_MIN, maxReticleDistance); + + if (ReticleInnerAngle < RETICLE_MIN_INNER_ANGLE) + { + ReticleInnerAngle = RETICLE_MIN_INNER_ANGLE; + } + + if (ReticleOuterAngle < RETICLE_MIN_OUTER_ANGLE) + { + ReticleOuterAngle = RETICLE_MIN_OUTER_ANGLE; + } + + float inner_half_angle_radians = Mathf.Deg2Rad * ReticleInnerAngle * 0.5f; + float outer_half_angle_radians = Mathf.Deg2Rad * ReticleOuterAngle * 0.5f; + + float inner_diameter = 2.0f * Mathf.Tan(inner_half_angle_radians); + float outer_diameter = 2.0f * Mathf.Tan(outer_half_angle_radians); + + ReticleInnerDiameter = + Mathf.Lerp(ReticleInnerDiameter, inner_diameter, Time.unscaledDeltaTime * reticleGrowthSpeed); + ReticleOuterDiameter = + Mathf.Lerp(ReticleOuterDiameter, outer_diameter, Time.unscaledDeltaTime * reticleGrowthSpeed); + + MaterialComp.SetFloat("_InnerDiameter", ReticleInnerDiameter * ReticleDistanceInMeters); + MaterialComp.SetFloat("_OuterDiameter", ReticleOuterDiameter * ReticleDistanceInMeters); + MaterialComp.SetFloat("_DistanceInMeters", ReticleDistanceInMeters); + } + + void Awake() + { + ReticleInnerAngle = RETICLE_MIN_INNER_ANGLE; + ReticleOuterAngle = RETICLE_MIN_OUTER_ANGLE; + } + + /// @cond + protected override void Start() + { + base.Start(); + + Renderer rendererComponent = GetComponent(); + rendererComponent.sortingOrder = reticleSortingOrder; + + MaterialComp = rendererComponent.material; + + CreateReticleVertices(); + } + + /// @endcond + + void Update() + { + UpdateDiameters(); + } + + private bool SetPointerTarget(Vector3 target, bool interactive) + { + if (base.PointerTransform == null) + { + Debug.LogWarning("Cannot operate on a null pointer transform"); + return false; + } + + Vector3 targetLocalPosition = base.PointerTransform.InverseTransformPoint(target); + + ReticleDistanceInMeters = Mathf.Clamp(targetLocalPosition.z, RETICLE_DISTANCE_MIN, maxReticleDistance); + if (interactive) + { + ReticleInnerAngle = RETICLE_MIN_INNER_ANGLE + RETICLE_GROWTH_ANGLE; + ReticleOuterAngle = RETICLE_MIN_OUTER_ANGLE + RETICLE_GROWTH_ANGLE; + } + else + { + ReticleInnerAngle = RETICLE_MIN_INNER_ANGLE; + ReticleOuterAngle = RETICLE_MIN_OUTER_ANGLE; + } + + return true; + } + + private void CreateReticleVertices() + { + Mesh mesh = new Mesh(); + gameObject.AddComponent(); + GetComponent().mesh = mesh; + + int segments_count = reticleSegments; + int vertex_count = (segments_count + 1) * 2; + +#region Vertices + + Vector3[] vertices = new Vector3[vertex_count]; + + const float kTwoPi = Mathf.PI * 2.0f; + int vi = 0; + for (int si = 0; si <= segments_count; ++si) + { + // Add two vertices for every circle segment: one at the beginning of the + // prism, and one at the end of the prism. + float angle = (float)si / (float)(segments_count) * kTwoPi; + + float x = Mathf.Sin(angle); + float y = Mathf.Cos(angle); + + vertices[vi++] = new Vector3(x, y, 0.0f); // Outer vertex. + vertices[vi++] = new Vector3(x, y, 1.0f); // Inner vertex. + } +#endregion + +#region Triangles + int indices_count = (segments_count + 1) * 3 * 2; + int[] indices = new int[indices_count]; + + int vert = 0; + int idx = 0; + for (int si = 0; si < segments_count; ++si) + { + indices[idx++] = vert + 1; + indices[idx++] = vert; + indices[idx++] = vert + 2; + + indices[idx++] = vert + 1; + indices[idx++] = vert + 2; + indices[idx++] = vert + 3; + + vert += 2; + } +#endregion + + mesh.vertices = vertices; + mesh.triangles = indices; + mesh.RecalculateBounds(); +#if !UNITY_5_5_OR_NEWER + // Optimize() is deprecated as of Unity 5.5.0p1. + mesh.Optimize(); +#endif // !UNITY_5_5_OR_NEWER + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard/GvrReticlePointer.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard/GvrReticlePointer.cs.meta new file mode 100644 index 0000000..076198c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Cardboard/GvrReticlePointer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e7dcc90c2e60c4011896c7f21fc1f557 +timeCreated: 1446847641 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller.meta new file mode 100644 index 0000000..7254944 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 42e8338a3e200400c8c73016c4c88273 +folderAsset: yes +timeCreated: 1462043669 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel.meta new file mode 100644 index 0000000..deb3efb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c17a9ff7fad4e4cff9684ee77be2fcce +folderAsset: yes +timeCreated: 1495576167 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrArmModel.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrArmModel.cs new file mode 100644 index 0000000..c4d6470 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrArmModel.cs @@ -0,0 +1,531 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +/// Standard implementation for a mathematical model to make the virtual controller approximate the +/// physical location of the Daydream controller. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrArmModel")] +public class GvrArmModel : GvrBaseArmModel, IGvrControllerInputDeviceReceiver +{ + /// Position of the elbow joint relative to the head before the arm model is applied. + public Vector3 elbowRestPosition = DEFAULT_ELBOW_REST_POSITION; + + /// Position of the wrist joint relative to the elbow before the arm model is applied. + public Vector3 wristRestPosition = DEFAULT_WRIST_REST_POSITION; + + /// Position of the controller joint relative to the wrist before the arm model is applied. + public Vector3 controllerRestPosition = DEFAULT_CONTROLLER_REST_POSITION; + + /// Offset applied to the elbow position as the controller is rotated upwards. + public Vector3 armExtensionOffset = DEFAULT_ARM_EXTENSION_OFFSET; + + /// Ratio of the controller's rotation to apply to the rotation of the elbow. + /// The remaining rotation is applied to the wrist's rotation. + [Range(0.0f, 1.0f)] + public float elbowBendRatio = DEFAULT_ELBOW_BEND_RATIO; + + /// Offset in front of the controller to determine what position to use when determing if the + /// controller should fade. This is useful when objects are attached to the controller. + [Range(0.0f, 0.4f)] + public float fadeControllerOffset = 0.0f; + + /// Controller distance from the front/back of the head after which the controller disappears (meters). + [Range(0.0f, 0.4f)] + public float fadeDistanceFromHeadForward = 0.25f; + + /// Controller distance from the left/right of the head after which the controller disappears (meters). + [Range(0.0f, 0.4f)] + public float fadeDistanceFromHeadSide = 0.15f; + + /// Controller distance from face after which the tooltips appear (meters). + [Range(0.4f, 0.6f)] + public float tooltipMinDistanceFromFace = 0.45f; + + /// When the angle (degrees) between the controller and the head is larger than + /// this value, the tooltips disappear. + /// If the value is 180, then the tooltips are always shown. + /// If the value is 90, the tooltips are only shown when they are facing the camera. + [Range(0, 180)] + public int tooltipMaxAngleFromCamera = 80; + + /// If true, the root of the pose is locked to the local position of the player's neck. + public bool isLockedToNeck = false; + + /// Represents the controller's position relative to the user's head. + public override Vector3 ControllerPositionFromHead + { + get { return controllerPosition; } + } + + /// Represent the controller's rotation relative to the user's head. + public override Quaternion ControllerRotationFromHead + { + get { return controllerRotation; } + } + + /// The suggested rendering alpha value of the controller. + /// This is to prevent the controller from intersecting the face. + /// The range is always 0 - 1. + public override float PreferredAlpha + { + get { return preferredAlpha; } + } + + /// The suggested rendering alpha value of the controller tooltips. + /// This is to only display the tooltips when the player is looking + /// at the controller, and also to prevent the tooltips from intersecting the + /// player's face. + public override float TooltipAlphaValue + { + get { return tooltipAlphaValue; } + } + + /// Represent the neck's position relative to the user's head. + /// If isLockedToNeck is true, this will be the InputTracking position of the Head node modified + /// by an inverse neck model to approximate the neck position. + /// Otherwise, it is always zero. + public Vector3 NeckPosition + { + get { return neckPosition; } + } + + /// Represent the shoulder's position relative to the user's head. + /// This is not actually used as part of the arm model calculations, and exists for debugging. + public Vector3 ShoulderPosition + { + get + { + Vector3 shoulderPosition = neckPosition + torsoRotation * Vector3.Scale(SHOULDER_POSITION, handedMultiplier); + return shoulderPosition; + } + } + + /// Represent the shoulder's rotation relative to the user's head. + /// This is not actually used as part of the arm model calculations, and exists for debugging. + public Quaternion ShoulderRotation + { + get { return torsoRotation; } + } + + /// Represent the elbow's position relative to the user's head. + public Vector3 ElbowPosition + { + get { return elbowPosition; } + } + + /// Represent the elbow's rotation relative to the user's head. + public Quaternion ElbowRotation + { + get { return elbowRotation; } + } + + /// Represent the wrist's position relative to the user's head. + public Vector3 WristPosition + { + get { return wristPosition; } + } + + /// Represent the wrist's rotation relative to the user's head. + public Quaternion WristRotation + { + get { return wristRotation; } + } + + /// The controller input device. + public GvrControllerInputDevice ControllerInputDevice { get; set; } + + /// The neck position based on this arm model. + protected Vector3 neckPosition; + + /// The elbow position based on this arm model. + protected Vector3 elbowPosition; + + /// The elbow rotation based on this arm model. + protected Quaternion elbowRotation; + + /// The wrist position based on this arm model. + protected Vector3 wristPosition; + + /// The wrist rotation based on this arm model. + protected Quaternion wristRotation; + + /// The controller position based on this arm model. + protected Vector3 controllerPosition; + + /// The controller rotation based on this arm model. + protected Quaternion controllerRotation; + + /// The preferred alpha. + protected float preferredAlpha; + + /// The tooltip alpha value. + protected float tooltipAlphaValue; + + /// Multiplier for handedness such that 1 = Right, 0 = Center, -1 = left. + protected Vector3 handedMultiplier; + + /// Forward direction of user's torso. + protected Vector3 torsoDirection; + + /// Orientation of the user's torso. + protected Quaternion torsoRotation; + + // Default values for tuning variables. + + /// @cond + public static readonly Vector3 DEFAULT_ELBOW_REST_POSITION = new Vector3(0.195f, -0.5f, 0.005f); + + /// @endcond + + /// @cond + public static readonly Vector3 DEFAULT_WRIST_REST_POSITION = new Vector3(0.0f, 0.0f, 0.25f); + + /// @endcond + + /// @cond + public static readonly Vector3 DEFAULT_CONTROLLER_REST_POSITION = new Vector3(0.0f, 0.0f, 0.05f); + + /// @endcond + + /// @cond + public static readonly Vector3 DEFAULT_ARM_EXTENSION_OFFSET = new Vector3(-0.13f, 0.14f, 0.08f); + + /// @endcond + + /// @cond + public const float DEFAULT_ELBOW_BEND_RATIO = 0.6f; + + /// @endcond + + /// Increases elbow bending as the controller moves up (unitless). + protected const float EXTENSION_WEIGHT = 0.4f; + + /// Rest position for shoulder joint. + protected static readonly Vector3 SHOULDER_POSITION = new Vector3(0.17f, -0.2f, -0.03f); + + /// Neck offset used to apply the inverse neck model when locked to the head. + protected static readonly Vector3 NECK_OFFSET = new Vector3(0.0f, 0.075f, 0.08f); + + /// Amount of normalized alpha transparency to change per second. + protected const float DELTA_ALPHA = 4.0f; + + /// Minimum angle in degrees of the controller the for arm extension + /// offset to start. + /// This is the range of controller X-axis values in which the modeled arm + /// rotates with the controller, outside of which the modeled arm doesn't + /// rotate with the controller, only the controller rotates. + /// below this value, the wrist is primarily responsible for controller + /// rotation, not the arm. + /// + protected const float MIN_EXTENSION_ANGLE = 7.0f; + + /// Maximum angle in degrees of the controller the for arm extension offset + /// to end. + /// This is the range of controller X-axis values in which the modeled arm + /// rotates with the controller, outside of which the modeled arm doesn't + /// rotate with the controller, only the controller rotates. + /// above this value, the wrist is primarily responsible for controller + /// rotation, not the arm. + /// + protected const float MAX_EXTENSION_ANGLE = 60.0f; + + /// @cond + protected virtual void OnEnable() + { + // Register the controller update listener. + GvrControllerInput.OnControllerInputUpdated += OnControllerInputUpdated; + + // Force the torso direction to match the gaze direction immediately. + // Otherwise, the controller will not be positioned correctly if the ArmModel was enabled + // when the user wasn't facing forward. + UpdateTorsoDirection(true); + + // Update immediately to avoid a frame delay before the arm model is applied. + OnControllerInputUpdated(); + } + + /// @endcond + + /// @cond + protected virtual void OnDisable() + { + GvrControllerInput.OnControllerInputUpdated -= OnControllerInputUpdated; + } + + /// @endcond + + /// Updates the arm model when the controller input changes. + protected virtual void OnControllerInputUpdated() + { + UpdateHandedness(); + UpdateTorsoDirection(false); + UpdateNeckPosition(); + ApplyArmModel(); + UpdateTransparency(); + } + + /// Updates the arm model handedness. + protected virtual void UpdateHandedness() + { + // Update user handedness if the setting has changed. + if (ControllerInputDevice == null) + { + return; + } + + // Determine handedness multiplier. + handedMultiplier.Set(0, 1, 1); + if (ControllerInputDevice.IsRightHand) + { + handedMultiplier.x = 1.0f; + } + else + { + handedMultiplier.x = -1.0f; + } + } + + /// Updates the arm model torso direction. + /// If true, uses the gaze direction, otherwise uses + /// slerp to update the direction smoothly. + protected virtual void UpdateTorsoDirection(bool forceImmediate) + { + // Determine the gaze direction horizontally. + Vector3 gazeDirection = GvrVRHelpers.GetHeadForward(); + gazeDirection.y = 0.0f; + gazeDirection.Normalize(); + + // Use the gaze direction to update the forward direction. + if (forceImmediate || + (ControllerInputDevice != null && ControllerInputDevice.Recentered)) + { + torsoDirection = gazeDirection; + } + else + { + float angularVelocity = ControllerInputDevice != null ? ControllerInputDevice.Gyro.magnitude : 0; + float gazeFilterStrength = Mathf.Clamp((angularVelocity - 0.2f) / 45.0f, 0.0f, 0.1f); + torsoDirection = Vector3.Slerp(torsoDirection, gazeDirection, gazeFilterStrength); + } + + // Calculate the torso rotation. + torsoRotation = Quaternion.FromToRotation(Vector3.forward, torsoDirection); + } + + /// Updates the neck position in the arm model. + protected virtual void UpdateNeckPosition() + { + if (isLockedToNeck) + { + // Returns the center of the eyes. + // However, we actually want to lock to the center of the head. + neckPosition = GvrVRHelpers.GetHeadPosition(); + + // Find the approximate neck position by Applying an inverse neck model. + // This transforms the head position to the center of the head and also accounts + // for the head's rotation so that the motion feels more natural. + neckPosition = ApplyInverseNeckModel(neckPosition); + } + else + { + neckPosition = Vector3.zero; + } + } + + /// Applies the arm model parameters to update the orientation and position. + protected virtual void ApplyArmModel() + { + // Set the starting positions of the joints before they are transformed by the arm model. + SetUntransformedJointPositions(); + + // Get the controller's orientation. + Quaternion controllerOrientation; + Quaternion xyRotation; + float xAngle; + GetControllerRotation(out controllerOrientation, out xyRotation, out xAngle); + + // Offset the elbow by the extension offset. + float extensionRatio = CalculateExtensionRatio(xAngle); + ApplyExtensionOffset(extensionRatio); + + // Calculate the lerp rotation, which is used to control how much the rotation of the + // controller impacts each joint. + Quaternion lerpRotation = CalculateLerpRotation(xyRotation, extensionRatio); + + CalculateFinalJointRotations(controllerOrientation, xyRotation, lerpRotation); + ApplyRotationToJoints(); + } + + /// Set the starting positions of the joints before they are transformed by the arm model. + protected virtual void SetUntransformedJointPositions() + { + elbowPosition = Vector3.Scale(elbowRestPosition, handedMultiplier); + wristPosition = Vector3.Scale(wristRestPosition, handedMultiplier); + controllerPosition = Vector3.Scale(controllerRestPosition, handedMultiplier); + } + + /// Calculate the extension ratio based on the angle of the controller along the x axis. + protected virtual float CalculateExtensionRatio(float xAngle) + { + float normalizedAngle = (xAngle - MIN_EXTENSION_ANGLE) / (MAX_EXTENSION_ANGLE - MIN_EXTENSION_ANGLE); + float extensionRatio = Mathf.Clamp(normalizedAngle, 0.0f, 1.0f); + return extensionRatio; + } + + /// Offset the elbow by the extension offset. + protected virtual void ApplyExtensionOffset(float extensionRatio) + { + Vector3 extensionOffset = Vector3.Scale(armExtensionOffset, handedMultiplier); + elbowPosition += extensionOffset * extensionRatio; + } + + /// Calculate the lerp rotation, which is used to control how much the rotation of the + /// controller impacts each joint. + protected virtual Quaternion CalculateLerpRotation(Quaternion xyRotation, float extensionRatio) + { + float totalAngle = Quaternion.Angle(xyRotation, Quaternion.identity); + float lerpSuppresion = 1.0f - Mathf.Pow(totalAngle / 180.0f, 6.0f); + float inverseElbowBendRatio = 1.0f - elbowBendRatio; + float lerpValue = inverseElbowBendRatio + elbowBendRatio * extensionRatio * EXTENSION_WEIGHT; + lerpValue *= lerpSuppresion; + return Quaternion.Lerp(Quaternion.identity, xyRotation, lerpValue); + } + + /// Determine the final joint rotations relative to the head. + protected virtual void CalculateFinalJointRotations(Quaternion controllerOrientation, Quaternion xyRotation, Quaternion lerpRotation) + { + elbowRotation = torsoRotation * Quaternion.Inverse(lerpRotation) * xyRotation; + wristRotation = elbowRotation * lerpRotation; + controllerRotation = torsoRotation * controllerOrientation; + } + + /// Apply the joint rotations to the positions of the joints to determine the final pose. + protected virtual void ApplyRotationToJoints() + { + elbowPosition = neckPosition + torsoRotation * elbowPosition; + wristPosition = elbowPosition + elbowRotation * wristPosition; + controllerPosition = wristPosition + wristRotation * controllerPosition; + } + + /// Transform the head position into an approximate neck position. + protected virtual Vector3 ApplyInverseNeckModel(Vector3 headPosition) + { + Quaternion headRotation = GvrVRHelpers.GetHeadRotation(); + Vector3 rotatedNeckOffset = + headRotation * NECK_OFFSET - NECK_OFFSET.y * Vector3.up; + headPosition -= rotatedNeckOffset; + + return headPosition; + } + + /// Controls the transparency of the controller to prevent the controller from clipping through + /// the user's head. Also, controls the transparency of the tooltips so they are only visible + /// when the controller is held up. + protected virtual void UpdateTransparency() + { + Vector3 controllerForward = controllerRotation * Vector3.forward; + Vector3 offsetControllerPosition = controllerPosition + (controllerForward * fadeControllerOffset); + Vector3 controllerRelativeToHead = offsetControllerPosition - neckPosition; + + Vector3 headForward = GvrVRHelpers.GetHeadForward(); + float distanceToHeadForward = Vector3.Scale(controllerRelativeToHead, headForward).magnitude; + Vector3 headRight = Vector3.Cross(headForward, Vector3.up); + float distanceToHeadSide = Vector3.Scale(controllerRelativeToHead, headRight).magnitude; + float distanceToHeadUp = Mathf.Abs(controllerRelativeToHead.y); + + bool shouldFadeController = distanceToHeadForward < fadeDistanceFromHeadForward + && distanceToHeadUp < fadeDistanceFromHeadForward + && distanceToHeadSide < fadeDistanceFromHeadSide; + + // Determine how vertical the controller is pointing. + float animationDelta = DELTA_ALPHA * Time.unscaledDeltaTime; + if (shouldFadeController) + { + preferredAlpha = Mathf.Max(0.0f, preferredAlpha - animationDelta); + } + else + { + preferredAlpha = Mathf.Min(1.0f, preferredAlpha + animationDelta); + } + + float dot = Vector3.Dot(controllerRotation * Vector3.up, -controllerRelativeToHead.normalized); + float minDot = (tooltipMaxAngleFromCamera - 90.0f) / -90.0f; + float distToFace = Vector3.Distance(controllerRelativeToHead, Vector3.zero); + if (shouldFadeController + || distToFace > tooltipMinDistanceFromFace + || dot < minDot) + { + tooltipAlphaValue = Mathf.Max(0.0f, tooltipAlphaValue - animationDelta); + } + else + { + tooltipAlphaValue = Mathf.Min(1.0f, tooltipAlphaValue + animationDelta); + } + } + + /// Get the controller's orientation. + protected void GetControllerRotation(out Quaternion rotation, out Quaternion xyRotation, out float xAngle) + { + // Find the controller's orientation relative to the player. + rotation = ControllerInputDevice != null ? ControllerInputDevice.Orientation : Quaternion.identity; + rotation = Quaternion.Inverse(torsoRotation) * rotation; + + // Extract just the x rotation angle. + Vector3 controllerForward = rotation * Vector3.forward; + xAngle = 90.0f - Vector3.Angle(controllerForward, Vector3.up); + + // Remove the z rotation from the controller. + xyRotation = Quaternion.FromToRotation(Vector3.forward, controllerForward); + } + +#if UNITY_EDITOR + protected virtual void OnDrawGizmosSelected() + { + if (!enabled) + { + return; + } + + if (transform.parent == null) + { + return; + } + + Vector3 worldShoulder = transform.parent.TransformPoint(ShoulderPosition); + Vector3 worldElbow = transform.parent.TransformPoint(elbowPosition); + Vector3 worldwrist = transform.parent.TransformPoint(wristPosition); + Vector3 worldcontroller = transform.parent.TransformPoint(controllerPosition); + + Gizmos.color = Color.red; + Gizmos.DrawSphere(worldShoulder, 0.02f); + Gizmos.DrawLine(worldShoulder, worldElbow); + + Gizmos.color = Color.green; + Gizmos.DrawSphere(worldElbow, 0.02f); + Gizmos.DrawLine(worldElbow, worldwrist); + + Gizmos.color = Color.cyan; + Gizmos.DrawSphere(worldwrist, 0.02f); + + Gizmos.color = Color.blue; + Gizmos.DrawSphere(worldcontroller, 0.02f); + } +#endif // UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrArmModel.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrArmModel.cs.meta new file mode 100644 index 0000000..6bf1c06 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrArmModel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7dda4bb2d5509e44e978d2bf56e25d7c +timeCreated: 1471566115 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrBaseArmModel.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrBaseArmModel.cs new file mode 100644 index 0000000..b0088cf --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrBaseArmModel.cs @@ -0,0 +1,47 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// Interface for a mathematical model that uses the orientation and location +/// of the physical controller, and predicts the location of the controller and pointer +/// to determine where to place the controller model within the scene. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrBaseArmModel")] +public abstract class GvrBaseArmModel : MonoBehaviour +{ + /// Vector to represent the controller's location relative to + /// the user's head position. + public abstract Vector3 ControllerPositionFromHead { get; } + + /// Quaternion to represent the controller's rotation relative to + /// the user's head position. + public abstract Quaternion ControllerRotationFromHead { get; } + + /// The suggested rendering alpha value of the controller. + /// This is to prevent the controller from intersecting the face. + /// The range is always 0 - 1. + public abstract float PreferredAlpha { get; } + + /// The suggested rendering alpha value of the controller tooltips. + /// This is to only display the tooltips when the player is looking + /// at the controller, and also to prevent the tooltips from intersecting the + /// player's face. + public abstract float TooltipAlphaValue { get; } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrBaseArmModel.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrBaseArmModel.cs.meta new file mode 100644 index 0000000..f829059 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/GvrBaseArmModel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b621d217eade547b4841c4471106b6e5 +timeCreated: 1495573504 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/IGvrArmModelReceiver.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/IGvrArmModelReceiver.cs new file mode 100644 index 0000000..f137263 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/IGvrArmModelReceiver.cs @@ -0,0 +1,24 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +/// Interface declaring the use of the arm model. +public interface IGvrArmModelReceiver +{ + /// The arm model reference. + GvrBaseArmModel ArmModel { get; set; } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/IGvrArmModelReceiver.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/IGvrArmModelReceiver.cs.meta new file mode 100644 index 0000000..0e96058 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/ArmModel/IGvrArmModelReceiver.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb01f40fa958548a5b1f92a685e6d46d +timeCreated: 1495576213 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInput.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInput.cs new file mode 100644 index 0000000..e92d6d7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInput.cs @@ -0,0 +1,808 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; +using System.Collections; + +using Gvr.Internal; + +/// Represents a controller's current connection state. +/// All values and semantics below (except for Error) are +/// from gvr_types.h in the GVR C API. +public enum GvrConnectionState +{ + /// Indicates that an error has occurred. + Error = -1, + + /// Indicates a controller is disconnected. + Disconnected = 0, + + /// Indicates that the device is scanning for controllers. + Scanning = 1, + + /// Indicates that the device is connecting to a controller. + Connecting = 2, + + /// Indicates that the device is connected to a controller. + Connected = 3, +} + +/// Represents the status of the controller API. +/// Values and semantics from gvr_types.h in the GVR C API. +public enum GvrControllerApiStatus +{ + /// A Unity-localized error occurred. + /// This is the only value that isn't in gvr_types.h. + Error = -1, + + /// API is happy and healthy. This doesn't mean any controllers are + /// connected, it just means that the underlying service is working + /// properly. + Ok = 0, + + /// Any other status represents a permanent failure that requires + /// external action to fix: + + /// API failed because this device does not support controllers (API is too + /// low, or other required feature not present). + Unsupported = 1, + + /// This app was not authorized to use the service (e.g., missing permissions, + /// the app is blacklisted by the underlying service, etc). + NotAuthorized = 2, + + /// The underlying VR service is not present. + Unavailable = 3, + + /// The underlying VR service is too old, needs upgrade. + ApiServiceObsolete = 4, + + /// The underlying VR service is too new, is incompatible with current client. + ApiClientObsolete = 5, + + /// The underlying VR service is malfunctioning. Try again later. + ApiMalfunction = 6, +} + +/// Represents a controller's current battery level. +/// Values and semantics from gvr_types.h in the GVR C API. +public enum GvrControllerBatteryLevel +{ + /// A Unity-localized error occurred. + /// This is the only value that isn't in gvr_types.h. + Error = -1, + + /// The battery state is currently unreported. + Unknown = 0, + + /// Equivalent to 1 out of 5 bars on the battery indicator. + CriticalLow = 1, + + /// Equivalent to 2 out of 5 bars on the battery indicator. + Low = 2, + + /// Equivalent to 3 out of 5 bars on the battery indicator. + Medium = 3, + + /// Equivalent to 4 out of 5 bars on the battery indicator. + AlmostFull = 4, + + /// Equivalent to 5 out of 5 bars on the battery indicator. + Full = 5, +} + +/// Represents controller buttons. +/// Values 0-9 from gvr_types.h in the GVR C API. +/// Value 31 not represented in the C API. +public enum GvrControllerButton +{ + /// Button under the touch pad. Formerly known as Click. + TouchPadButton = 1 << 1, + + /// Touch pad touching indicator. + TouchPadTouch = 1 << 31, + + /// General application button. + App = 1 << 3, + + /// System button. Formerly known as Home. + System = 1 << 2, + + /// Primary button on the underside of the controller. + Trigger = 1 << 6, + + /// Secondary button on the underside of the controller. + Grip = 1 << 7, + + /// Buttons reserved for future use. Subject to name change. + Reserved2 = 1 << 8, +} + +/// Represents controller handedness. +public enum GvrControllerHand +{ + Right, + Left, + + // Alias for dominant hand as specified by `GvrSettings.Handedness`. + Dominant, + + // Alias for non-dominant hand. + NonDominant, +} + +/// Main entry point for the Daydream controller API. +/// +/// To use this API, add this script to a game object in your scene, or use the +/// **GvrControllerMain** prefab. +/// +/// This is a singleton object. There can only be one object with this script in your scene. +/// +/// To access a controller's state, get a device from `GvrControllerInput.GetDevice` then +/// query it for state. For example, to the dominant controller's current orientation, use +/// `GvrControllerInput.GetDevice(GvrControllerHand.Dominant).Orientation`. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerInput")] +public class GvrControllerInput : MonoBehaviour +{ + private static GvrControllerInputDevice[] instances = new GvrControllerInputDevice[0]; + private static IControllerProvider controllerProvider; + private static GvrSettings.UserPrefsHandedness handedness; + private static Action onDevicesChangedInternal; + + /// Event handler for receiving button, touchpad, and IMU updates from the controllers. + /// Use this handler to update app state based on controller input. + public static event Action OnControllerInputUpdated; + + /// Event handler for receiving a second notification callback, after all + /// `OnControllerInputUpdated` events have fired. + public static event Action OnPostControllerInputUpdated; + + /// Event handler for when the connection state of a controller changes. + public delegate void OnStateChangedEvent(GvrConnectionState state, GvrConnectionState oldState); + + /// Event handler for when controller devices have changed. Any code that stores a + /// `GvrControllerInputDevice` should get a new device instance from `GetDevice`. + /// Existing `GvrControllerInputDevice`s will be marked invalid and will log errors + /// when used. Event handlers are called immediately when added. + public static event Action OnDevicesChanged + { + [SuppressMemoryAllocationError(IsWarning = false, Reason = "Only called on input device change.")] + add + { + onDevicesChangedInternal += value; + value(); + } + + [SuppressMemoryAllocationError(IsWarning = false, Reason = "Only called on input device change.")] + remove + { + onDevicesChangedInternal -= value; + } + } + + /// Event handler for when the connection state of the dominant controller changes. + [System.Obsolete("Replaced by GvrControllerInputDevice.OnStateChangedEvent.")] + public static event OnStateChangedEvent OnStateChanged + { + add + { + if (instances.Length > 0) + { + instances[0].OnStateChanged += value; + } + else + { + Debug.LogError("GvrControllerInput: Adding OnStateChanged event before instance created."); + } + } + + remove + { + if (instances.Length > 0) + { + instances[0].OnStateChanged -= value; + } + else + { + Debug.LogError("GvrControllerInput: Removing OnStateChanged event before instance created."); + } + } + } + + /// Controller Emulatuor connection modes. + public enum EmulatorConnectionMode + { + OFF, + USB, + WIFI, + } + +#if UNITY_EDITOR + [GvrInfo("Hold Shift to use the Mouse as the dominant controller.\n\n" + + "Controls: Shift +\n" + + " • Move Mouse = Change Orientation\n" + + " • Left Mouse Button = ClickButton\n" + + " • Right Mouse Button = AppButton\n" + + " • Middle Mouse Button = HomeButton/Recenter\n" + + " • Ctrl = IsTouching\n" + + " • Ctrl + Move Mouse = Change TouchPos", 8, UnityEditor.MessageType.None)] + [Tooltip("How to connect to the emulator: USB cable (recommended) or WIFI.")] + + [GvrInfo("Controller Emulator is now Deprecated", 2, UnityEditor.MessageType.Warning)] +#endif // UNITY_EDITOR + /// Indicates how we connect to the controller emulator. + public EmulatorConnectionMode emulatorConnectionMode = EmulatorConnectionMode.OFF; + + /// Returns a controller device for the specified hand. + public static GvrControllerInputDevice GetDevice(GvrControllerHand hand) + { + if (instances.Length == 0) + { + return null; + } + + // Remap Right and Left to Dominant or NonDominant according to settings handedness. + if (hand == GvrControllerHand.Left || hand == GvrControllerHand.Right) + { + if ((int)hand != (int)handedness) + { + hand = GvrControllerHand.NonDominant; + } + else + { + hand = GvrControllerHand.Dominant; + } + } + + if (hand == GvrControllerHand.NonDominant) + { + return instances[1]; + } + else + { + // Dominant is always controller 0. + return instances[0]; + } + } + + /// Returns the dominant controller's current connection state. Returns + /// `GvrConnectionState.Error` if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.State.")] + public static GvrConnectionState State + { + get + { + if (instances.Length == 0) + { + return GvrConnectionState.Error; + } + + return instances[0].State; + } + } + + /// Returns the status of the controller API. Returns + /// `GvrControllerApiStatus.Error` if `GvrControllerInput` is uninitialized. + public static GvrControllerApiStatus ApiStatus + { + get + { + if (instances.Length == 0) + { + return GvrControllerApiStatus.Error; + } + + return instances[0].ApiStatus; + } + } + + /// Returns true if battery status is supported. Returns false if + /// `GvrControllerInput` is uninitialized. + public static bool SupportsBatteryStatus + { + get + { + if (controllerProvider == null) + { + return false; + } + + return controllerProvider.SupportsBatteryStatus; + } + } + + /// Returns the dominant controller's current orientation in space, as a quaternion. + /// Returns `Quaternion.identity` if `GvrControllerInput` is uninitialized. + /// The rotation is provided in 'orientation space' which means the rotation is given relative + /// to the last time the user recentered their controllers. To make a game object in your scene + /// have the same orientation as the dominant controller, simply assign this quaternion to the + /// object's `transform.rotation`. To match the relative rotation, use `transform.localRotation` + /// instead. + [System.Obsolete("Replaced by GvrControllerInputDevice.Orientation.")] + public static Quaternion Orientation + { + get + { + if (instances.Length == 0) + { + return Quaternion.identity; + } + + return instances[0].Orientation; + } + } + + /// Returns the dominant controller's current angular speed in radians per second, using the right-hand + /// rule(positive means a right-hand rotation about the given axis), as measured by the + /// controller's gyroscope. Returns `Vector3.zero` if `GvrControllerInput` is uninitialized. + /// The controller's axes are: + /// - X points to the right, + /// - Y points perpendicularly up from the controller's top surface + /// - Z lies along the controller's body, pointing towards the front + [System.Obsolete("Replaced by GvrControllerInputDevice.Gyro.")] + public static Vector3 Gyro + { + get + { + if (instances.Length == 0) + { + return Vector3.zero; + } + + return instances[0].Gyro; + } + } + + /// Returns the dominant controller's current acceleration in meters per second squared. + /// Returns `Vector3.zero` if `GvrControllerInput` is uninitialized. + /// The controller's axes are: + /// - X points to the right, + /// - Y points perpendicularly up from the controller's top surface + /// - Z lies along the controller's body, pointing towards the front + /// Note that gravity is indistinguishable from acceleration, so when the controller is resting + /// on a surface, expect to measure an acceleration of 9.8 m/s^2 on the Y axis. The accelerometer + /// reading will be zero on all three axes only if the controller is in free fall, or if the user + /// is in a zero gravity environment like a space station. + [System.Obsolete("Replaced by GvrControllerInputDevice.Accel.")] + public static Vector3 Accel + { + get + { + if (instances.Length == 0) + { + return Vector3.zero; + } + + return instances[0].Accel; + } + } + + /// Returns true while the user is touching the dominant controller's touchpad. Returns + /// false if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButton(GvrControllerButton.TouchPadTouch).")] + public static bool IsTouching + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButton(GvrControllerButton.TouchPadTouch); + } + } + + /// Returns true in the frame the user starts touching the dominant controller's touchpad. + /// Returns false if `GvrControllerInput` is uninitialized. + /// Every TouchDown event is guaranteed to be followed by exactly one TouchUp event in a + /// later frame. Also, TouchDown and TouchUp will never both be true in the same frame. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButtonDown(GvrControllerButton.TouchPadTouch).")] + public static bool TouchDown + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButtonDown(GvrControllerButton.TouchPadTouch); + } + } + + /// Returns true the frame after the user stops touching the dominant controller's touchpad. + /// Returns false if `GvrControllerInput` is uninitialized. + /// Every TouchUp event is guaranteed to be preceded by exactly one TouchDown event in an + /// earlier frame. Also, TouchDown and TouchUp will never both be true in the same frame. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButtonUp(GvrControllerButton.TouchPadTouch).")] + public static bool TouchUp + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButtonUp(GvrControllerButton.TouchPadTouch); + } + } + + /// Position of the dominant controller's current touch, if touching the touchpad. + /// Returns `Vector2(0.5f, 0.5f)` if `GvrControllerInput` is uninitialized. + /// If not touching, this is the position of the last touch (when the finger left the touchpad). + /// The X and Y range is from 0 to 1. + /// (0, 0) is the top left of the touchpad and (1, 1) is the bottom right of the touchpad. + [System.Obsolete("Obsolete. Migrate to the center-relative GvrControllerInputDevice.TouchPos.")] + public static Vector2 TouchPos + { + get + { + if (instances.Length == 0) + { + return new Vector2(0.5f, 0.5f); + } + + Vector2 touchPos = instances[0].TouchPos; + touchPos.x = (touchPos.x / 2.0f) + 0.5f; + touchPos.y = (-touchPos.y / 2.0f) + 0.5f; + return touchPos; + } + } + + /// Position of the dominant controller's current touch, if touching the touchpad. + /// Returns `Vector2.zero` if `GvrControllerInput` is uninitialized. + /// If not touching, this is the position of the last touch (when the finger left the touchpad). + /// The X and Y range is from -1 to 1. (-.707,-.707) is bottom left, (.707,.707) is upper right. + /// (0, 0) is the center of the touchpad. + /// The magnitude of the touch vector is guaranteed to be <= 1. + [System.Obsolete("Replaced by GvrControllerInputDevice.TouchPos.")] + public static Vector2 TouchPosCentered + { + get + { + if (instances.Length == 0) + { + return Vector2.zero; + } + + return instances[0].TouchPos; + } + } + + /// @deprecated Use Recentered to detect when user has completed the recenter gesture. + [System.Obsolete("Use Recentered to detect when user has completed the recenter gesture.")] + public static bool Recentering + { + get + { + return false; + } + } + + /// Returns true if the user just completed the recenter gesture. Returns false if + /// `GvrControllerInput` is uninitialized. The headset and the dominant controller's + /// orientation are now being reported in the new recentered coordinate system. This + /// is an event flag (it is true for only one frame after the event happens, then + /// reverts to false). + public static bool Recentered + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].Recentered; + } + } + + /// Returns true while the user holds down the dominant controller's touchpad button. + /// Returns false if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButton(GvrControllerButton.TouchPadButton).")] + public static bool ClickButton + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButton(GvrControllerButton.TouchPadButton); + } + } + + /// Returns true in the frame the user starts pressing down the dominant controller's + /// touchpad button. Returns false if `GvrControllerInput` is uninitialized. Every + /// ClickButtonDown event is guaranteed to be followed by exactly one ClickButtonUp + /// event in a later frame. Also, ClickButtonDown and ClickButtonUp will never both be + /// true in the same frame. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButtonDown(GvrControllerButton.TouchPadButton).")] + public static bool ClickButtonDown + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButtonDown(GvrControllerButton.TouchPadButton); + } + } + + /// Returns true the frame after the user stops pressing down the dominant controller's + /// touchpad button. Returns false if `GvrControllerInput` is uninitialized. Every + /// ClickButtonUp event is guaranteed to be preceded by exactly one ClickButtonDown + /// event in an earlier frame. Also, ClickButtonDown and ClickButtonUp will never both + /// be true in the same frame. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButtonUp(GvrControllerButton.TouchPadButton).")] + public static bool ClickButtonUp + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButtonUp(GvrControllerButton.TouchPadButton); + } + } + + /// Returns true while the user holds down the dominant controller's app button. Returns + /// false if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButton(GvrControllerButton.App).")] + public static bool AppButton + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButton(GvrControllerButton.App); + } + } + + /// Returns true in the frame the user starts pressing down the dominant controller's app button. + /// Returns false if `GvrControllerInput` is uninitialized. Every AppButtonDown event is + /// guaranteed to be followed by exactly one AppButtonUp event in a later frame. + /// Also, AppButtonDown and AppButtonUp will never both be true in the same frame. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButtonDown(GvrControllerButton.App).")] + public static bool AppButtonDown + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButtonDown(GvrControllerButton.App); + } + } + + /// Returns true the frame after the user stops pressing down the dominant controller's app button. + /// Returns false if `GvrControllerInput` is uninitialized. Every AppButtonUp event is guaranteed + /// to be preceded by exactly one AppButtonDown event in an earlier frame. Also, AppButtonDown + /// and AppButtonUp will never both be true in the same frame. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButtonUp(GvrControllerButton.App).")] + public static bool AppButtonUp + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButtonUp(GvrControllerButton.App); + } + } + + /// Returns true in the frame the user starts pressing down the dominant controller's system button. + /// Returns false if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButtonDown(GvrControllerButton.System).")] + public static bool HomeButtonDown + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButtonDown(GvrControllerButton.System); + } + } + + /// Returns true while the user holds down the dominant controller's system button. + /// Returns false if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.GetButton(GvrControllerButton.System).")] + public static bool HomeButtonState + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].GetButton(GvrControllerButton.System); + } + } + + /// If the dominant controller's state == GvrConnectionState.Error, this contains details about + /// the error. If `GvrControllerInput` is uninitialized this returns an error string describing + /// the uninitialized state. + [System.Obsolete("Replaced by GvrControllerInputDevice.ErrorDetails.")] + public static string ErrorDetails + { + get + { + if (instances.Length > 0) + { + return instances[0].ErrorDetails; + } + else + { + return "No GvrControllerInput initialized instance found in scene. It may be missing, or it might not have initialized yet."; + } + } + } + + /// Returns the GVR C library controller state pointer (gvr_controller_state*) for the dominant + /// controller. Returns `IntPtr.Zero` if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.StatePtr.")] + public static IntPtr StatePtr + { + get + { + if (instances.Length == 0) + { + return IntPtr.Zero; + } + + return instances[0].StatePtr; + } + } + + /// Returns true if the dominant controller is currently being charged. Returns false if + /// `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.IsCharging.")] + public static bool IsCharging + { + get + { + if (instances.Length == 0) + { + return false; + } + + return instances[0].IsCharging; + } + } + + /// Returns the dominant controller's current battery charge level. Returns + /// `GvrControllerBatteryLevel.Error` if `GvrControllerInput` is uninitialized. + [System.Obsolete("Replaced by GvrControllerInputDevice.BatteryLevel.")] + public static GvrControllerBatteryLevel BatteryLevel + { + get + { + if (instances.Length == 0) + { + return GvrControllerBatteryLevel.Error; + } + + return instances[0].BatteryLevel; + } + } + + void Awake() + { + if (instances.Length > 0) + { + Debug.LogError("More than one active GvrControllerInput instance was found in your scene. Ensure that there is only one GvrControllerInput."); + this.enabled = false; + return; + } + + if (controllerProvider == null) + { + controllerProvider = ControllerProviderFactory.CreateControllerProvider(this); + } + + handedness = GvrSettings.Handedness; + int controllerCount = 2; + instances = new GvrControllerInputDevice[controllerCount]; + for (int i = 0; i < controllerCount; i++) + { + instances[i] = new GvrControllerInputDevice(controllerProvider, i); + } + + if (onDevicesChangedInternal != null) + { + onDevicesChangedInternal(); + } + + // Keep screen on here, since GvrControllerInput must be in any GVR scene in order to enable + // controller capabilities. + Screen.sleepTimeout = SleepTimeout.NeverSleep; + } + + void Update() + { + foreach (var instance in instances) + { + if (instance != null) + { + instance.Update(); + } + } + + if (OnControllerInputUpdated != null) + { + OnControllerInputUpdated(); + } + + if (OnPostControllerInputUpdated != null) + { + OnPostControllerInputUpdated(); + } + } + + void OnDestroy() + { + foreach (var instance in instances) + { + // Ensure this device will error if used again. + instance.Invalidate(); + } + + instances = new GvrControllerInputDevice[0]; + if (onDevicesChangedInternal != null) + { + onDevicesChangedInternal(); + } + } + + void OnApplicationPause(bool paused) + { + if (null == controllerProvider) + { + return; + } + + if (paused) + { + controllerProvider.OnPause(); + } + else + { + handedness = GvrSettings.Handedness; + controllerProvider.OnResume(); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInput.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInput.cs.meta new file mode 100644 index 0000000..5a2ccf1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41251d5f89d5546bb9d8ba907686b71f +timeCreated: 1495645608 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -31123 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInputDevice.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInputDevice.cs new file mode 100644 index 0000000..00c26be --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInputDevice.cs @@ -0,0 +1,333 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; +using System.Collections; + +using Gvr.Internal; + +/// Device instance of the Daydream controller API. +public class GvrControllerInputDevice +{ + private IControllerProvider controllerProvider; + private int controllerId; + + private ControllerState controllerState = new ControllerState(); + private Vector2 touchPosCentered = Vector2.zero; + + private int lastUpdatedFrameCount = -1; + private bool valid; + + /// Event handler for when the connection state of the controller changes. + public event GvrControllerInput.OnStateChangedEvent OnStateChanged; + + internal GvrControllerInputDevice(IControllerProvider provider, int controller_id) + { + controllerProvider = provider; + controllerId = controller_id; + valid = true; + } + + internal void Invalidate() + { + valid = false; + } + + /// Returns true if this is the dominant controller hand. + public bool IsDominantHand + { + get { return controllerId == 0; } + } + + /// Returns true if the controller is configured as being in the + /// right hand. + public bool IsRightHand + { + [SuppressMemoryAllocationError(IsWarning = true)] + get + { + if (controllerId == 0) + { + return GvrSettings.Handedness == GvrSettings.UserPrefsHandedness.Right; + } + else + { + return GvrSettings.Handedness == GvrSettings.UserPrefsHandedness.Left; + } + } + } + + /// Returns the controller's current connection state. + public GvrConnectionState State + { + [SuppressMemoryAllocationError(IsWarning = true)] + get + { + Update(); + return controllerState.connectionState; + } + } + + /// Returns the API status of the current controller state. + public GvrControllerApiStatus ApiStatus + { + get + { + Update(); + return controllerState.apiStatus; + } + } + + // Returns true if the controller can be positionally tracked. + internal bool SupportsPositionalTracking + { + get { return controllerState.is6DoF; } + } + + /// Returns the controller's current orientation in space, as a quaternion. + /// The rotation is provided in 'orientation space' which means the rotation is given relative + /// to the last time the user recentered their controller. To make a game object in your scene + /// have the same orientation as the controller, simply assign this quaternion to the object's + /// `transform.rotation`. To match the relative rotation, use `transform.localRotation` instead. + public Quaternion Orientation + { + get + { + Update(); + return controllerState.orientation; + } + } + + /// Returns the controller's current position in world space. + public Vector3 Position + { + get + { + Update(); + return controllerState.position; + } + } + + /// Returns the controller's current angular speed in radians per second, using the right-hand + /// rule (positive means a right-hand rotation about the given axis), as measured by the + /// controller's gyroscope. + /// The controller's axes are: + /// - X points to the right, + /// - Y points perpendicularly up from the controller's top surface + /// - Z lies along the controller's body, pointing towards the front + public Vector3 Gyro + { + get + { + Update(); + return controllerState.gyro; + } + } + + /// Returns the controller's current acceleration in meters per second squared. + /// The controller's axes are: + /// - X points to the right, + /// - Y points perpendicularly up from the controller's top surface + /// - Z lies along the controller's body, pointing towards the front + /// Note that gravity is indistinguishable from acceleration, so when the controller is resting + /// on a surface, expect to measure an acceleration of 9.8 m/s^2 on the Y axis. The accelerometer + /// reading will be zero on all three axes only if the controller is in free fall, or if the user + /// is in a zero gravity environment like a space station. + public Vector3 Accel + { + get + { + Update(); + return controllerState.accel; + } + } + + /// Position of the current touch, if touching the touchpad. + /// If not touching, this is the position of the last touch (when the finger left the touchpad). + /// The X and Y range is from -1.0 to 1.0. (0, 0) is the center of the touchpad. + /// (-.707, -.707) is bottom left, (.707, .707) is upper right. + /// The magnitude of the touch vector is guaranteed to be <= 1.0. + public Vector2 TouchPos + { + get + { + Update(); + return touchPosCentered; + } + } + + /// Returns true if the user just completed the recenter gesture. The headset and + /// the controller's orientation are now being reported in the new recentered + /// coordinate system. This is an event flag (it is true for only one frame + /// after the event happens, then reverts to false). + public bool Recentered + { + get + { + Update(); + return controllerState.recentered; + } + } + + /// Returns true if the user is holding down any of the buttons specified in `buttons`. + /// GvrControllerButton types can be OR-ed together to check for multiple buttons at once. + public bool GetButton(GvrControllerButton buttons) + { + Update(); + return (controllerState.buttonsState & buttons) != 0; + } + + /// Returns true in the frame the user starts pressing down any of the buttons specified + /// in `buttons`. For an individual button enum, every ButtonDown event is guaranteed to be + /// followed by exactly one ButtonUp event in a later frame. Also, ButtonDown and ButtonUp + /// will never both be true in the same frame for an individual button. Using multiple button + /// enums OR'ed together can result in multiple ButtonDowns before a ButtonUp. + public bool GetButtonDown(GvrControllerButton buttons) + { + Update(); + return (controllerState.buttonsDown & buttons) != 0; + } + + /// Returns true the frame after the user stops pressing down any of the buttons specified + /// in `buttons`. For an individual button enum, every ButtonUp event is guaranteed to be + /// preceded by exactly one ButtonDown event in an earlier frame. Also, ButtonDown and + /// ButtonUp will never both be true in the same frame for an individual button. Using + /// multiple button enums OR'ed together can result in multiple ButtonUps after multiple + /// ButtonDowns. + public bool GetButtonUp(GvrControllerButton buttons) + { + Update(); + return (controllerState.buttonsUp & buttons) != 0; + } + + /// Returns the bitmask of the buttons that are down in the current frame. + public GvrControllerButton Buttons + { + get { return controllerState.buttonsState; } + } + + /// Returns the bitmask of the buttons that began being pressed in the current frame. + /// Each individual button enum is guaranteed to be followed by exactly one ButtonsUp + /// event in a later frame. Also, ButtonsDown and ButtonsUp will never both be true + /// in the same frame for an individual button. + public GvrControllerButton ButtonsDown + { + get { return controllerState.buttonsDown; } + } + + /// Returns the bitmask of the buttons that ended being pressed in the current frame. + /// Each individual button enum is guaranteed to be preceded by exactly one ButtonsDown + /// event in an earlier frame. Also, ButtonsDown and ButtonsUp will never both be true + /// in the same frame for an individual button. + public GvrControllerButton ButtonsUp + { + get { return controllerState.buttonsUp; } + } + + /// If State == GvrConnectionState.Error, this contains details about the error. + public string ErrorDetails + { + get + { + Update(); + return controllerState.connectionState == GvrConnectionState.Error ? + controllerState.errorDetails : ""; + } + } + + /// Returns the GVR C library controller state pointer (gvr_controller_state*). + public IntPtr StatePtr + { + get + { + Update(); + return controllerState.gvrPtr; + } + } + + /// Returns true if the controller is currently being charged. + public bool IsCharging + { + get + { + Update(); + return controllerState.isCharging; + } + } + + /// Returns the controller's current battery charge level. + public GvrControllerBatteryLevel BatteryLevel + { + get + { + Update(); + return controllerState.batteryLevel; + } + } + + internal void Update() + { + if (lastUpdatedFrameCount != Time.frameCount) + { + if (!valid) + { + Debug.LogError("Using an invalid GvrControllerInputDevice. Please acquire a new one from GvrControllerInput.GetDevice()."); + return; + } + + // The controller state must be updated prior to any function using the + // controller API to ensure the state is consistent throughout a frame. + lastUpdatedFrameCount = Time.frameCount; + + GvrConnectionState oldState = State; + + controllerProvider.ReadState(controllerState, controllerId); + UpdateTouchPosCentered(); + +#if UNITY_EDITOR + if (IsDominantHand) + { + // Make sure the EditorEmulator is updated immediately. + if (GvrEditorEmulator.Instance != null) + { + GvrEditorEmulator.Instance.UpdateEditorEmulation(); + } + } +#endif // UNITY_EDITOR + + if (OnStateChanged != null && State != oldState) + { + OnStateChanged(State, oldState); + } + } + } + + private void UpdateTouchPosCentered() + { + touchPosCentered.x = (controllerState.touchPos.x - 0.5f) * 2.0f; + touchPosCentered.y = -(controllerState.touchPos.y - 0.5f) * 2.0f; + + float magnitude = touchPosCentered.magnitude; + if (magnitude > 1) + { + touchPosCentered.x /= magnitude; + touchPosCentered.y /= magnitude; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInputDevice.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInputDevice.cs.meta new file mode 100644 index 0000000..090e31b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerInputDevice.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7b912427c85634a3fa13020a8d93c38a +timeCreated: 1519780588 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerReticleVisual.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerReticleVisual.cs new file mode 100644 index 0000000..141bd46 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerReticleVisual.cs @@ -0,0 +1,223 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using UnityEngine; +using UnityEngine.Assertions; +using Gvr.Internal; + +/// Visualizes a reticle using a Quad. +/// Provides tuning options to control how the reticle scales and rotates based +/// on distance from the camera. +[RequireComponent(typeof(MeshRenderer))] +[RequireComponent(typeof(MeshFilter))] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerReticleVisual")] +public class GvrControllerReticleVisual : MonoBehaviour +{ + /// Camera facing positioning data. + [Serializable] + public struct FaceCameraData + { + /// True if aligned on X axis. + public bool alongXAxis; + + /// True if aligned on Y axis. + public bool alongYAxis; + + /// True if aligned on Z axis. + public bool alongZAxis; + + /// Returns true if not along any axis. + public bool IsAnyAxisOff + { + get + { + return !alongXAxis || !alongYAxis || !alongZAxis; + } + } + + /// Constructs a new FaceCameraData object. + public FaceCameraData(bool startEnabled) + { + alongXAxis = startEnabled; + alongYAxis = startEnabled; + alongZAxis = startEnabled; + } + } + + /// If set to false, the scale is simply set to the sizeMeters value. + [Tooltip("Determines if the size of the reticle is based on the distance from the camera.")] + public bool isSizeBasedOnCameraDistance = true; + + /// The reticle will be scaled based on the size of the mesh so that it's size matches this size. + [Tooltip("Final size of the reticle in meters when it is 1 meter from the camera.")] + public float sizeMeters = 0.1f; + + /// Determines if the reticle will always face the camera and along what axes. + [Tooltip("Determines if the reticle will always face the camera and along what axes.")] + public FaceCameraData doesReticleFaceCamera = new FaceCameraData(true); + + /// Sorting order to use for the reticle's renderer. + /// Range values come from https://docs.unity3d.com/ScriptReference/Renderer-sortingOrder.html. + [Range(-32767, 32767)] + public int sortingOrder = 0; + + /// The size of the reticle's mesh in meters. + public float ReticleMeshSizeMeters { get; private set; } + + /// The ratio of the reticleMeshSizeMeters to 1 meter. + /// If reticleMeshSizeMeters is 10, then reticleMeshSizeRatio is 0.1. + public float ReticleMeshSizeRatio { get; private set; } + + /// The mesh renderer for the reticle. + protected MeshRenderer meshRenderer; + + /// The mesh filter for the reticle. + protected MeshFilter meshFilter; + + private Vector3 preRenderLocalScale; + private Quaternion preRenderLocalRotation; + + /// Updates the mesh dimensions. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public void RefreshMesh() + { + ReticleMeshSizeMeters = 1.0f; + ReticleMeshSizeRatio = 1.0f; + + if (meshFilter != null && meshFilter.mesh != null) + { + ReticleMeshSizeMeters = meshFilter.mesh.bounds.size.x; + if (ReticleMeshSizeMeters != 0.0f) + { + ReticleMeshSizeRatio = 1.0f / ReticleMeshSizeMeters; + } + } + + if (meshRenderer != null) + { + meshRenderer.sortingOrder = sortingOrder; + } + } + + /// @cond + protected virtual void Awake() + { + meshRenderer = GetComponent(); + meshFilter = GetComponent(); + } + + /// @endcond + + /// @cond + protected virtual void OnEnable() + { + RefreshMesh(); + } + + /// @endcond + + /// @cond + protected virtual void OnWillRenderObject() + { + preRenderLocalScale = transform.localScale; + preRenderLocalRotation = transform.localRotation; + + Camera camera = Camera.current; + UpdateReticleSize(camera); + UpdateReticleOrientation(camera); + } + + /// @endcond + + /// @cond + protected virtual void OnRenderObject() + { + // It is possible for paired calls to OnWillRenderObject/OnRenderObject to be nested if + // Camera.Render is explicitly called for any special effects. To avoid the reticle being + // rotated/scaled incorrectly in that case, the reticle is reset to it's pre-OnWillRenderObject + // after a render has finished. + transform.localScale = preRenderLocalScale; + transform.localRotation = preRenderLocalRotation; + } + + /// @endcond + + /// Update the recticle size based on the distance. + protected virtual void UpdateReticleSize(Camera camera) + { + if (camera == null) + { + return; + } + + float scale = sizeMeters; + + if (isSizeBasedOnCameraDistance) + { + float reticleDistanceFromCamera = (transform.position - camera.transform.position).magnitude; + scale *= ReticleMeshSizeRatio * reticleDistanceFromCamera; + } + + transform.localScale = new Vector3(scale, scale, scale); + } + + /// Updates the reticle position and orientation based on the camera. + protected virtual void UpdateReticleOrientation(Camera camera) + { + if (camera == null) + { + return; + } + + Vector3 direction = transform.position - camera.transform.position; + transform.rotation = Quaternion.LookRotation(direction, Vector3.up); + + if (doesReticleFaceCamera.IsAnyAxisOff) + { + Vector3 euler = transform.localEulerAngles; + if (!doesReticleFaceCamera.alongXAxis) + { + euler.x = 0.0f; + } + + if (!doesReticleFaceCamera.alongYAxis) + { + euler.y = 0.0f; + } + + if (!doesReticleFaceCamera.alongZAxis) + { + euler.z = 0.0f; + } + + transform.localEulerAngles = euler; + } + } + + /// @cond + protected virtual void OnValidate() + { + if (Application.isPlaying && isActiveAndEnabled) + { + RefreshMesh(); + } + } + + /// @endcond +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerReticleVisual.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerReticleVisual.cs.meta new file mode 100644 index 0000000..06bdd4f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerReticleVisual.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b5cd7f7fcfc8a4c1fbc201ccc579556d +timeCreated: 1495649159 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerVisual.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerVisual.cs new file mode 100644 index 0000000..c56c3a6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerVisual.cs @@ -0,0 +1,485 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// The controller is not available for versions of Unity without the +// GVR native integration. + +using UnityEngine; +using System.Collections; +using Gvr.Internal; + +/// Provides visual feedback for the daydream controller. +[RequireComponent(typeof(Renderer))] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerVisual")] +public class GvrControllerVisual : MonoBehaviour, IGvrArmModelReceiver, IGvrControllerInputDeviceReceiver +{ + /// The controller display state data structure. + [System.Serializable] + public struct ControllerDisplayState + { + /// The current battery level. + public GvrControllerBatteryLevel batteryLevel; + + /// True if the battery is charging. + public bool batteryCharging; + + /// True if the touch pad button is down. + public bool clickButton; + + /// True if the app button is down. + public bool appButton; + + /// True if the system button is down. + public bool homeButton; + + /// True if the controller is registering a touch. + public bool touching; + + /// The touch position. + public Vector2 touchPos; + } + + /// Struct that describes a mesh, material pair used for rendering a controller visual. + [System.Serializable] + public struct VisualAssets + { + /// @cond + public Mesh mesh; + public Material material; + + /// @endcond + } + + /// An array of prefabs that will be instantiated and added as children + /// of the controller visual when the controller is created. Used to + /// attach tooltips or other additional visual elements to the control dynamically. + [SerializeField] + private GameObject[] attachmentPrefabs; + + [SerializeField] private Color touchPadColor = + new Color(200f / 255f, 200f / 255f, 200f / 255f, 1); + + [SerializeField] private Color appButtonColor = + new Color(200f / 255f, 200f / 255f, 200f / 255f, 1); + + [SerializeField] private Color systemButtonColor = + new Color(20f / 255f, 20f / 255f, 20f / 255f, 1); + + /// Determines if the displayState is set from GvrControllerInputDevice. + [Tooltip("Determines if the displayState is set from GvrControllerInputDevice.")] + public bool readControllerState = true; + + /// Used to set the display state of the controller visual. + /// This can be used for tutorials that visualize the controller or other use-cases that require + /// displaying the controller visual without the state being determined by controller input. + /// Additionally, it can be used to preview the controller visual in the editor. + /// NOTE: readControllerState must be disabled to set the display state. + public ControllerDisplayState displayState; + + /// This is the preferred, maximum alpha value the object should have + /// when it is a comfortable distance from the head. + [Range(0.0f, 1.0f)] + public float maximumAlpha = 1.0f; + + /// The arm model used to position the controller. + public GvrBaseArmModel ArmModel { get; set; } + + /// The controller device reference. + public GvrControllerInputDevice ControllerInputDevice { get; set; } + + /// The preferred alpha value for the controller. + public virtual float PreferredAlpha + { + get + { + return ArmModel != null ? maximumAlpha * ArmModel.PreferredAlpha : maximumAlpha; + } + } + + /// The touchpad color. + public Color TouchPadColor + { + get + { + return touchPadColor; + } + + set + { + touchPadColor = value; + if (materialPropertyBlock != null) + { + materialPropertyBlock.SetColor(touchPadId, touchPadColor); + } + } + } + + /// The app button color. + public Color AppButtonColor + { + get + { + return appButtonColor; + } + + set + { + appButtonColor = value; + if (materialPropertyBlock != null) + { + materialPropertyBlock.SetColor(appButtonId, appButtonColor); + } + } + } + + /// The system button color. + public Color SystemButtonColor + { + get + { + return systemButtonColor; + } + + set + { + systemButtonColor = value; + if (materialPropertyBlock != null) + { + materialPropertyBlock.SetColor(systemButtonId, systemButtonColor); + } + } + } + + private Renderer controllerRenderer; + private MeshFilter meshFilter; + private MaterialPropertyBlock materialPropertyBlock; + + private int alphaId; + private int touchId; + private int touchPadId; + private int appButtonId; + private int systemButtonId; + private int batteryColorId; + + private bool wasTouching; + private float touchTime; + + // Data passed to shader, (xy) touch position, (z) touch duration, (w) battery state. + private Vector4 controllerShaderData; + + // Data passed to shader, (x) overall alpha, (y) touchpad click duration, + // (z) app button click duration, (w) system button click duration. + private Vector4 controllerShaderData2; + private Color currentBatteryColor; + + /// App button animation duration when pressed. + public const float APP_BUTTON_ACTIVE_DURATION_SECONDS = 0.111f; + + /// App button animation duration when released. + public const float APP_BUTTON_RELEASE_DURATION_SECONDS = 0.0909f; + + /// System button animation duration when pressed. + public const float SYSTEM_BUTTON_ACTIVE_DURATION_SECONDS = 0.111f; + + /// System button animation duration when released. + public const float SYSTEM_BUTTON_RELEASE_DURATION_SECONDS = 0.0909f; + + /// Touchpad animation duration when pressed. + public const float TOUCHPAD_CLICK_DURATION_SECONDS = 0.111f; + + /// Touchpad animation duration when released. + public const float TOUCHPAD_RELEASE_DURATION_SECONDS = 0.0909f; + + /// @deprecated + public const float TOUCHPAD_CLICK_SCALE_DURATION_SECONDS = 0.075f; + + /// Duration of the visual bubble on the controller + /// to grow to its full size when clicked. + public const float TOUCHPAD_POINT_SCALE_DURATION_SECONDS = 0.15f; + + // These values are used by the shader to control battery display + // Only modify these values if you are also modifying the shader. + private const float BATTERY_FULL = 0; + private const float BATTERY_ALMOST_FULL = .125f; + private const float BATTERY_MEDIUM = .225f; + private const float BATTERY_LOW = .325f; + private const float BATTERY_CRITICAL = .425f; + private const float BATTERY_HIDDEN = .525f; + + private readonly Color GVR_BATTERY_CRITICAL_COLOR = new Color(1, 0, 0, 1); + private readonly Color GVR_BATTERY_LOW_COLOR = new Color(1, 0.6823f, 0, 1); + private readonly Color GVR_BATTERY_MED_COLOR = new Color(0, 1, 0.588f, 1); + private readonly Color GVR_BATTERY_FULL_COLOR = new Color(0, 1, 0.588f, 1); + + // How much time to use as an 'immediate update'. + // Any value large enough to instantly update all visual animations. + private const float IMMEDIATE_UPDATE_TIME = 10f; + + void Awake() + { + Initialize(); + CreateAttachments(); + } + + void OnEnable() + { + GvrControllerInput.OnPostControllerInputUpdated += OnPostControllerInputUpdated; + } + + void OnDisable() + { + GvrControllerInput.OnPostControllerInputUpdated -= OnPostControllerInputUpdated; + } + + void OnValidate() + { + if (!Application.isPlaying) + { + Initialize(); + OnVisualUpdate(true); + } + } + + private void OnPostControllerInputUpdated() + { + OnVisualUpdate(); + } + + private void CreateAttachments() + { + if (attachmentPrefabs == null) + { + return; + } + + for (int i = 0; i < attachmentPrefabs.Length; i++) + { + GameObject prefab = attachmentPrefabs[i]; + GameObject attachment = Instantiate(prefab); + attachment.transform.SetParent(transform, false); + } + } + + private void Initialize() + { + if (controllerRenderer == null) + { + controllerRenderer = GetComponent(); + } + + if (materialPropertyBlock == null) + { + materialPropertyBlock = new MaterialPropertyBlock(); + } + + if (meshFilter == null) + { + meshFilter = GetComponent(); + } + + alphaId = Shader.PropertyToID("_GvrControllerAlpha"); + touchId = Shader.PropertyToID("_GvrTouchInfo"); + touchPadId = Shader.PropertyToID("_GvrTouchPadColor"); + appButtonId = Shader.PropertyToID("_GvrAppButtonColor"); + systemButtonId = Shader.PropertyToID("_GvrSystemButtonColor"); + batteryColorId = Shader.PropertyToID("_GvrBatteryColor"); + + materialPropertyBlock.SetColor(appButtonId, appButtonColor); + materialPropertyBlock.SetColor(systemButtonId, systemButtonColor); + materialPropertyBlock.SetColor(touchPadId, touchPadColor); + controllerRenderer.SetPropertyBlock(materialPropertyBlock); + } + + private void UpdateControllerState() + { + // Return early when the application isn't playing to ensure that the serialized displayState + // is used to preview the controller visual instead of the default GvrControllerInputDevice + // values. +#if UNITY_EDITOR + if (!Application.isPlaying) + { + return; + } +#endif + + if (ControllerInputDevice != null) + { + displayState.batteryLevel = ControllerInputDevice.BatteryLevel; + displayState.batteryCharging = ControllerInputDevice.IsCharging; + + displayState.clickButton = ControllerInputDevice.GetButton(GvrControllerButton.TouchPadButton); + displayState.appButton = ControllerInputDevice.GetButton(GvrControllerButton.App); + displayState.homeButton = ControllerInputDevice.GetButton(GvrControllerButton.System); + displayState.touching = ControllerInputDevice.GetButton(GvrControllerButton.TouchPadTouch); + displayState.touchPos = ControllerInputDevice.TouchPos; + } + } + + /// Override this method to customize the visual's assets. This method is called + /// once per frame in the visual update process. Return a VisualAssets struct with + /// the assets to change. Call this base method to get the current assets. + protected virtual VisualAssets GetVisualAssets() + { + return new VisualAssets() + { + mesh = meshFilter.sharedMesh, + material = controllerRenderer.sharedMaterial + }; + } + + private void OnVisualUpdate(bool updateImmediately = false) + { + // Update the visual display based on the controller state + if (readControllerState) + { + UpdateControllerState(); + } + + VisualAssets newAssets = GetVisualAssets(); + if (newAssets.mesh != meshFilter.sharedMesh) + { + meshFilter.sharedMesh = newAssets.mesh; + } + + if (newAssets.material != controllerRenderer.sharedMaterial) + { + controllerRenderer.sharedMaterial = newAssets.material; + } + + float deltaTime = Time.deltaTime; + + // If flagged to update immediately, set deltaTime to an arbitrarily large value. + // This is particularly useful in editor, but also for resetting state quickly. + if (updateImmediately) + { + deltaTime = IMMEDIATE_UPDATE_TIME; + } + + if (displayState.clickButton) + { + controllerShaderData2.y = Mathf.Min(1, controllerShaderData2.y + deltaTime / TOUCHPAD_CLICK_DURATION_SECONDS); + } + else + { + controllerShaderData2.y = Mathf.Max(0, controllerShaderData2.y - deltaTime / TOUCHPAD_RELEASE_DURATION_SECONDS); + } + + if (displayState.appButton) + { + controllerShaderData2.z = Mathf.Min(1, controllerShaderData2.z + deltaTime / APP_BUTTON_ACTIVE_DURATION_SECONDS); + } + else + { + controllerShaderData2.z = Mathf.Max(0, controllerShaderData2.z - deltaTime / APP_BUTTON_RELEASE_DURATION_SECONDS); + } + + if (displayState.homeButton) + { + controllerShaderData2.w = Mathf.Min(1, controllerShaderData2.w + deltaTime / SYSTEM_BUTTON_ACTIVE_DURATION_SECONDS); + } + else + { + controllerShaderData2.w = Mathf.Max(0, controllerShaderData2.w - deltaTime / SYSTEM_BUTTON_RELEASE_DURATION_SECONDS); + } + + // Set the material's alpha to the multiplied preferred alpha. + controllerShaderData2.x = PreferredAlpha; + materialPropertyBlock.SetVector(alphaId, controllerShaderData2); + + controllerShaderData.x = displayState.touchPos.x; + controllerShaderData.y = displayState.touchPos.y; + + if (displayState.touching || displayState.clickButton) + { + if (!wasTouching) + { + wasTouching = true; + } + + if (touchTime < 1) + { + touchTime = Mathf.Min(touchTime + deltaTime / TOUCHPAD_POINT_SCALE_DURATION_SECONDS, 1); + } + } + else + { + wasTouching = false; + if (touchTime > 0) + { + touchTime = Mathf.Max(touchTime - deltaTime / TOUCHPAD_POINT_SCALE_DURATION_SECONDS, 0); + } + } + + controllerShaderData.z = touchTime; + + UpdateBatteryIndicator(); + + materialPropertyBlock.SetVector(touchId, controllerShaderData); + materialPropertyBlock.SetColor(batteryColorId, currentBatteryColor); + + // Update the renderer + controllerRenderer.SetPropertyBlock(materialPropertyBlock); + } + + private void UpdateBatteryIndicator() + { + GvrControllerBatteryLevel level = displayState.batteryLevel; + bool charging = displayState.batteryCharging; + + switch (level) + { + case GvrControllerBatteryLevel.Full: + controllerShaderData.w = BATTERY_FULL; + currentBatteryColor = GVR_BATTERY_FULL_COLOR; + break; + case GvrControllerBatteryLevel.AlmostFull: + controllerShaderData.w = BATTERY_ALMOST_FULL; + currentBatteryColor = GVR_BATTERY_FULL_COLOR; + break; + case GvrControllerBatteryLevel.Medium: + controllerShaderData.w = BATTERY_MEDIUM; + currentBatteryColor = GVR_BATTERY_MED_COLOR; + break; + case GvrControllerBatteryLevel.Low: + controllerShaderData.w = BATTERY_LOW; + currentBatteryColor = GVR_BATTERY_LOW_COLOR; + break; + case GvrControllerBatteryLevel.CriticalLow: + controllerShaderData.w = BATTERY_CRITICAL; + currentBatteryColor = GVR_BATTERY_CRITICAL_COLOR; + break; + default: + controllerShaderData.w = BATTERY_HIDDEN; + currentBatteryColor.a = 0; + break; + } + + if (charging) + { + controllerShaderData.w = -controllerShaderData.w; + currentBatteryColor = GVR_BATTERY_FULL_COLOR; + } + } + + /// Sets the controller texture. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public void SetControllerTexture(Texture newTexture) + { + controllerRenderer.material.mainTexture = newTexture; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerVisual.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerVisual.cs.meta new file mode 100644 index 0000000..e4fcfa8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrControllerVisual.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: aa952cbcc0eb13d4ca558b6da550ff55 +timeCreated: 1472074640 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserPointer.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserPointer.cs new file mode 100644 index 0000000..21e2b84 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserPointer.cs @@ -0,0 +1,163 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// The controller is not available for versions of Unity without the +// GVR native integration. + +using UnityEngine; +using UnityEngine.EventSystems; + +/// Implementation of GvrBasePointer for a laser pointer visual. +/// This script should be attached to the controller object. +/// The laser visual is important to help users locate their cursor +/// when its not directly in their field of view. +[RequireComponent(typeof(GvrLaserVisual))] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrLaserPointer")] +public class GvrLaserPointer : GvrBasePointer +{ + /// Maximum distance from the pointer that raycast hits will be detected. + [Tooltip("Maximum distance from the pointer that raycast hits will be detected.")] + public float maxPointerDistance = 20.0f; + + /// Distance from the pointer at which the reticle will be drawn when hitting nothing. + [Tooltip("Distance from the pointer at which the reticle will be drawn when hitting nothing.")] + public float defaultReticleDistance = 20.0f; + + /// The default length of the laser is used as the CameraRayIntersectionDistance. + [Tooltip("By default, the length of the laser is used as the CameraRayIntersectionDistance. " + + "Set this field to a non-zero value to override it.")] + public float overrideCameraRayIntersectionDistance; + + /// The percentage of the reticle mesh that shows the reticle. + /// The rest of the reticle mesh is transparent. + private const float RETICLE_VISUAL_RATIO = 0.1f; + + /// The visual object for the laser beam. + public GvrLaserVisual LaserVisual { get; private set; } + + private bool isHittingTarget; + + /// Maximum distance from the pointer that raycast hits will be detected. + public override float MaxPointerDistance + { + get + { + return maxPointerDistance; + } + } + + /// The distance that Camera-based raycasts intersect with + /// Direct (controller-based) raycasts in Hybrid Raycasting mode + /// + /// This is also the point at which Hybrid mode will transition from + /// Direct (closer than the intersection) to Camera (further than the + /// intersection) mode. + /// + public override float CameraRayIntersectionDistance + { + get + { + if (overrideCameraRayIntersectionDistance != 0.0f) + { + return overrideCameraRayIntersectionDistance; + } + + return LaserVisual != null ? LaserVisual.maxLaserDistance : overrideCameraRayIntersectionDistance; + } + } + + public override void OnPointerEnter(RaycastResult raycastResult, bool isInteractive) + { + LaserVisual.SetDistance(raycastResult.distance); + isHittingTarget = true; + } + + public override void OnPointerHover(RaycastResult raycastResult, bool isInteractive) + { + LaserVisual.SetDistance(raycastResult.distance); + isHittingTarget = true; + } + + public override void OnPointerExit(GameObject previousObject) + { + // Don't set the distance immediately. + // If we exit/enter an object on the same frame, then SetDistance + // will be called twice which could cause an issue with lerping the reticle. + // If we don't re-enter a new object, the distance will be set in Update. + isHittingTarget = false; + } + + public override void OnPointerClickDown() + { + } + + public override void OnPointerClickUp() + { + } + + public override void GetPointerRadius(out float enterRadius, out float exitRadius) + { + if (LaserVisual.reticle != null) + { + float reticleScale = LaserVisual.reticle.transform.localScale.x; + + // Fixed size for enter radius to avoid flickering. + // This will cause some slight variability based on the distance of the object + // from the camera, and is optimized for the average case. + enterRadius = LaserVisual.reticle.sizeMeters * 0.5f * RETICLE_VISUAL_RATIO; + + // Dynamic size for exit radius. + // Always correct because we know the intersection point of the object and can + // therefore use the correct radius based on the object's distance from the camera. + exitRadius = reticleScale * LaserVisual.reticle.ReticleMeshSizeMeters * RETICLE_VISUAL_RATIO; + } + else + { + enterRadius = 0.0f; + exitRadius = 0.0f; + } + } + + /// @cond + void Awake() + { + LaserVisual = GetComponent(); + } + + /// @endcond + + /// @cond + protected override void Start() + { + base.Start(); + LaserVisual.GetPointForDistanceFunction = GetPointAlongPointer; + LaserVisual.SetDistance(defaultReticleDistance, true); + } + + /// @endcond + + void Update() + { + if (isHittingTarget) + { + return; + } + + LaserVisual.SetDistance(defaultReticleDistance); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserPointer.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserPointer.cs.meta new file mode 100644 index 0000000..04ead5b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserPointer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 51b65678ccdd949e9a58874d2880c0ef +timeCreated: 1472486489 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserVisual.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserVisual.cs new file mode 100644 index 0000000..4cc613e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserVisual.cs @@ -0,0 +1,297 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using UnityEngine; +using UnityEngine.Assertions; + +/// Visualizes a laser and a reticle using a LineRenderer and a Quad. +/// Provides functions for settings the end point of the laser, +/// and clamps the laser and reticle based on max distances. +[RequireComponent(typeof(LineRenderer))] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrLaserVisual")] +public class GvrLaserVisual : MonoBehaviour, IGvrArmModelReceiver +{ + /// Used to position the reticle at the current position. + [Tooltip("Used to position the reticle at the current position.")] + public GvrControllerReticleVisual reticle; + + /// The end point of the visual will not necessarily be along the forward direction of the laser. + /// This is particularly true in both Camera and Hybrid Raycast Modes. In that case, both the + /// laser and the controller are rotated to face the end point. This reference is used to control + /// the rotation of the controller. + [Tooltip("Used to rotate the controller to face the current position.")] + public Transform controller; + + /// Color of the laser pointer including alpha transparency. + [Tooltip("Start color of the laser pointer including alpha transparency.")] + public Color laserColor = new Color(1.0f, 1.0f, 1.0f, 0.25f); + + /// Color of the laser pointer including alpha transparency. + [Tooltip("End color of the laser pointer including alpha transparency.")] + public Color laserColorEnd = new Color(1.0f, 1.0f, 1.0f, 0.0f); + + /// Maximum distance of the laser(meters). + [Tooltip("Maximum distance of the laser(meters).")] + [Range(0.0f, 20.0f)] + public float maxLaserDistance = 1.0f; + + /// The rate that the current position moves towards the target position. + [Tooltip("The rate that the current position moves towards the target position.")] + public float lerpSpeed = 20.0f; + + /// If the targetPosition is greater than this threshold, then + /// the position changes immediately instead of lerping. + [Tooltip("If the target position is greater than this threshold, then the position changes " + + "immediately instead of lerping.")] + public float lerpThreshold = 1.0f; + + /// This is primarily used for Hybrid Raycast mode (details in _GvrBasePointer_) to prevent + /// mismatches between the laser and the reticle when the "camera" component of the ray is used. + [Tooltip("Determines if the laser will shrink when it isn't facing in the forward direction " + + "of the transform.")] + public bool shrinkLaser = true; + + /// Amount to shrink the laser when it is fully shrunk. + [Range(0.0f, 1.0f)] + [Tooltip("Amount to shrink the laser when it is fully shrunk.")] + public float shrunkScale = 0.2f; + + /// Begin shrinking the laser when the angle between transform.forward and the reticle + /// is greater than this value. + [Range(0.0f, 15.0f)] + [Tooltip("Begin shrinking the laser when the angle between transform.forward and the reticle " + + "is greater than this value.")] + public float beginShrinkAngleDegrees = 0.0f; + + /// Finish shrinking the laser when the angle between transform.forward and the reticle is + /// greater than this value. + [Range(0.0f, 15.0f)] + [Tooltip("Finish shrinking the laser when the angle between transform.forward and the reticle " + + "is greater than this value.")] + public float endShrinkAngleDegrees = 2.0f; + + private const float LERP_CLAMP_THRESHOLD = 0.02f; + + /// The arm model used to control the visual. + public GvrBaseArmModel ArmModel { get; set; } + + /// Reference to the laser's line renderer. + public LineRenderer Laser { get; private set; } + + /// Delegate for customizing how the currentPosition is calculated based on the distance. + /// + /// If not set, the currentPosition is determined based on the distance multiplied by the forward + /// direction of the transform added to the position of the transform. + /// + public delegate Vector3 GetPointForDistanceDelegate(float distance); + + /// The function to use for determining the point at a distance. + public GetPointForDistanceDelegate GetPointForDistanceFunction { get; set; } + + /// Ratio to shrink the visual by. + protected float shrinkRatio; + + /// Distance to the target object. + protected float targetDistance; + + /// Current distance to the visual + protected float currentDistance; + + /// Current world position of the visual. + protected Vector3 currentPosition; + + /// Current local position of the visual. + protected Vector3 currentLocalPosition; + + /// Current local rotation of the visual. + protected Quaternion currentLocalRotation; + + /// Set the distance of the laser. + /// Clamps the distance of the laser and reticle. + /// + /// **distance** target distance from the pointer to draw the visual at. + /// **immediate** If true, the distance is changed immediately. Otherwise, it will lerp. + public virtual void SetDistance(float distance, bool immediate = false) + { + targetDistance = distance; + if (immediate) + { + currentDistance = targetDistance; + } + + if (targetDistance > lerpThreshold) + { + currentDistance = targetDistance; + } + } + + /// Current distance to the visual. + public float CurrentDistance + { + get { return currentDistance; } + } + + /// @cond + protected virtual void Awake() + { + Laser = GetComponent(); + } + + /// @endcond + + /// @cond + protected virtual void LateUpdate() + { + UpdateCurrentPosition(); + UpdateControllerOrientation(); + UpdateReticlePosition(); + UpdateLaserEndPoint(); + UpdateLaserAlpha(); + } + + /// @endcond + + /// Updates the current position of the visual. + protected virtual void UpdateCurrentPosition() + { + if (currentDistance != targetDistance) + { + float speed = GetSpeed(); + currentDistance = Mathf.Lerp(currentDistance, targetDistance, speed); + float diff = Mathf.Abs(targetDistance - currentDistance); + if (diff < LERP_CLAMP_THRESHOLD) + { + currentDistance = targetDistance; + } + } + + if (GetPointForDistanceFunction != null) + { + currentPosition = GetPointForDistanceFunction(currentDistance); + } + else + { + Vector3 origin = transform.position; + currentPosition = origin + (transform.forward * currentDistance); + } + + currentLocalPosition = transform.InverseTransformPoint(currentPosition); + currentLocalRotation = Quaternion.FromToRotation(Vector3.forward, currentLocalPosition); + } + + /// Updates the rotation of the controller based on the current + /// local rotation. + protected virtual void UpdateControllerOrientation() + { + if (controller == null) + { + return; + } + + controller.localRotation = currentLocalRotation; + } + + /// Updates the position of the reticle to the current position. + protected virtual void UpdateReticlePosition() + { + if (reticle == null) + { + return; + } + + reticle.transform.position = currentPosition; + } + + /// Updates the endpoint of the laser based on max distance. + protected virtual void UpdateLaserEndPoint() + { + if (Laser == null) + { + return; + } + + Vector3 laserStartPoint = Vector3.zero; + Vector3 laserEndPoint; + + if (controller != null) + { + Vector3 worldPosition = transform.position; + Vector3 rotatedPosition = controller.InverseTransformPoint(worldPosition); + rotatedPosition = currentLocalRotation * rotatedPosition; + laserStartPoint = controller.TransformPoint(rotatedPosition); + laserStartPoint = transform.InverseTransformPoint(laserStartPoint); + } + + laserEndPoint = Vector3.ClampMagnitude(currentLocalPosition, maxLaserDistance); + + if (shrinkLaser) + { + // Calculate the angle of rotation in degrees. + float angle = Vector3.Angle(Vector3.forward, currentLocalPosition); + + // Calculate the shrink ratio based on the angle. + float shrinkAngleDelta = endShrinkAngleDegrees - beginShrinkAngleDegrees; + float clampedAngle = Mathf.Clamp(angle - beginShrinkAngleDegrees, 0.0f, shrinkAngleDelta); + shrinkRatio = clampedAngle / shrinkAngleDelta; + + // Calculate the shrink coeff. + float shrinkCoeff = GvrMathHelpers.EaseOutCubic(shrunkScale, 1.0f, 1.0f - shrinkRatio); + + // Calculate the final distance of the laser. + Vector3 diff = laserStartPoint - currentLocalPosition; + Vector3 dir = diff.normalized; + float dist = Mathf.Min(diff.magnitude, maxLaserDistance) * shrinkCoeff; + + // Update the laser start and end points. + laserEndPoint = currentLocalPosition; + laserStartPoint = laserEndPoint + (dir * dist); + } + + Laser.useWorldSpace = false; + Laser.SetPosition(0, laserStartPoint); + Laser.SetPosition(1, laserEndPoint); + } + + /// Updates the alpha of the laser beam. + protected virtual void UpdateLaserAlpha() + { + float alpha = ArmModel != null ? ArmModel.PreferredAlpha : 1.0f; + + Color finalStartColor = Color.Lerp(Color.clear, laserColor, alpha); + Color finalEndColor = laserColorEnd; + + // If shrinking the laser, the colors are inversed based on the shrink ratio. + // This is to ensure that the feathering of the laser goes in the right direction. + if (shrinkLaser) + { + float colorRatio = GvrMathHelpers.EaseOutCubic(0.0f, 1.0f, shrinkRatio); + finalEndColor = Color.Lerp(finalEndColor, finalStartColor, colorRatio); + finalStartColor = Color.Lerp(finalStartColor, laserColorEnd, colorRatio); + } + + Laser.startColor = finalStartColor; + Laser.endColor = finalEndColor; + } + + /// Speed of the moving pointer visual. + protected virtual float GetSpeed() + { + return lerpSpeed > 0.0f ? lerpSpeed * Time.unscaledDeltaTime : 1.0f; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserVisual.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserVisual.cs.meta new file mode 100644 index 0000000..1af51f2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrLaserVisual.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4ee199cdc1304b2090f019e4f488674 +timeCreated: 1495649159 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrRecenterOnlyController.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrRecenterOnlyController.cs new file mode 100644 index 0000000..a370b50 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrRecenterOnlyController.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + +/// Used to recenter only the controllers, required for scenes that have no clear forward direction. +/// Details: https://developers.google.com/vr/distribute/daydream/design-requirements#UX-D6 +/// +/// Works by offsetting the orientation of the transform when a recenter occurs to correct for the +/// orientation change caused by the recenter event. +/// +/// Usage: Place on the parent of the camera that should have it's orientation corrected. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrRecenterOnlyController")] +public class GvrRecenterOnlyController : MonoBehaviour +{ + private Quaternion lastAppliedYawCorrection = Quaternion.identity; + private Quaternion yawCorrection = Quaternion.identity; + + void Update() + { + bool connected = false; + foreach (var hand in Gvr.Internal.ControllerUtils.AllHands) + { + GvrControllerInputDevice device = GvrControllerInput.GetDevice(hand); + if (device.State == GvrConnectionState.Connected) + { + connected = true; + break; + } + } + + if (!connected) + { + return; + } + +// Daydream is loaded only on deivce, not in editor. +#if UNITY_ANDROID && !UNITY_EDITOR + if (XRSettings.loadedDeviceName != GvrSettings.VR_SDK_DAYDREAM) + { + return; + } +#endif + + if (GvrControllerInput.Recentered) + { + ApplyYawCorrection(); + return; + } + +#if UNITY_EDITOR + // Compatibility for Instant Preview. + if (Gvr.Internal.InstantPreview.Instance != null && + Gvr.Internal.InstantPreview.Instance.enabled && + Gvr.Internal.ControllerUtils.AnyButton(GvrControllerButton.System)) + { + return; + } +#else // !UNITY_EDITOR + if (Gvr.Internal.ControllerUtils.AnyButton(GvrControllerButton.System)) + { + return; + } +#endif // UNITY_EDITOR + + yawCorrection = GetYawCorrection(); + } + + void OnDisable() + { + yawCorrection = Quaternion.identity; + RemoveLastYawCorrection(); + } + + private void ApplyYawCorrection() + { + RemoveLastYawCorrection(); + transform.localRotation = transform.localRotation * yawCorrection; + lastAppliedYawCorrection = yawCorrection; + } + + private void RemoveLastYawCorrection() + { + transform.localRotation = + transform.localRotation * Quaternion.Inverse(lastAppliedYawCorrection); + lastAppliedYawCorrection = Quaternion.identity; + } + + private Quaternion GetYawCorrection() + { + Quaternion headRotation = GvrVRHelpers.GetHeadRotation(); + Vector3 euler = headRotation.eulerAngles; + return lastAppliedYawCorrection * Quaternion.Euler(0.0f, euler.y, 0.0f); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrRecenterOnlyController.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrRecenterOnlyController.cs.meta new file mode 100644 index 0000000..e6abe2a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrRecenterOnlyController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a5d8d09b9e5d2437aa022780a2ce8c83 +timeCreated: 1487015053 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrTrackedController.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrTrackedController.cs new file mode 100644 index 0000000..4dab386 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrTrackedController.cs @@ -0,0 +1,300 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; +using Gvr.Internal; + +/// Represents an object tracked by controller input. +/// Manages the active status of the tracked controller based on controller connection status. +/// Fetches a `GvrControllerInputDevice` for the configured `GvrControllerHand` and propagates +/// the device instance to all `IGvrControllerInputDeviceReceiver`s underneath this object on +/// Start and if the controller handedness changes. If the controller is not positionally +/// tracked, position of the object is updated to approximate arm mechanics by using a +/// `GvrBaseArmModel`. `GvrBaseArmModel`s are also propagated to all `IGvrArmModelReceiver`s +/// underneath this object. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrTrackedController")] +public class GvrTrackedController : MonoBehaviour +{ + [SerializeField] + [Tooltip("Arm model used to control the pose (position and rotation) of the object, " + + "and to propagate to children that implement IGvrArmModelReceiver.")] + private GvrBaseArmModel armModel; + private GvrControllerInputDevice controllerInputDevice; + + [SerializeField] + [Tooltip("Is the object's active status determined by the controller connection status.")] + private bool isDeactivatedWhenDisconnected = true; + + [SerializeField] + [Tooltip("Controller Hand")] + private GvrControllerHand controllerHand = GvrControllerHand.Dominant; + + /// The controller input device for this tracked object. + public GvrControllerInputDevice ControllerInputDevice + { + get + { + return controllerInputDevice; + } + } + + /// The controller hand used for this tracked object. + public GvrControllerHand ControllerHand + { + get + { + return controllerHand; + } + + set + { + if (value != controllerHand) + { + controllerHand = value; + SetupControllerInputDevice(); + } + } + } + + /// Arm model used to control the pose (position and rotation) of the object, and to propagate to + /// children that implement IGvrArmModelReceiver. + public GvrBaseArmModel ArmModel + { + get + { + return armModel; + } + + set + { + if (armModel == value) + { + return; + } + + armModel = value; + PropagateControllerInputDeviceToArmModel(); + PropagateArmModel(); + } + } + + /// Is the object's active status determined by the controller connection status. + public bool IsDeactivatedWhenDisconnected + { + get + { + return isDeactivatedWhenDisconnected; + } + + set + { + if (isDeactivatedWhenDisconnected == value) + { + return; + } + + isDeactivatedWhenDisconnected = value; + + if (isDeactivatedWhenDisconnected) + { + OnControllerStateChanged(controllerInputDevice.State, controllerInputDevice.State); + } + } + } + + /// Called when arm model is instantiated or changed. + [SuppressMemoryAllocationError(IsWarning = false, Reason = "Only called when ArmModel is instantiated or changed.")] + public void PropagateArmModel() + { + IGvrArmModelReceiver[] receivers = + GetComponentsInChildren(true); + + for (int i = 0; i < receivers.Length; i++) + { + IGvrArmModelReceiver receiver = receivers[i]; + receiver.ArmModel = armModel; + } + } + + void Awake() + { + // Adding this event handler calls it immediately. + GvrControllerInput.OnDevicesChanged += SetupControllerInputDevice; + } + + void OnEnable() + { + // Print an error to console if no GvrControllerInput is found. + if (controllerInputDevice.State == GvrConnectionState.Error) + { + Debug.LogWarning(controllerInputDevice.ErrorDetails); + } + + // Update the position using OnPostControllerInputUpdated. + // This way, the position and rotation will be correct for the entire frame + // so that it doesn't matter what order Updates get called in. + GvrControllerInput.OnPostControllerInputUpdated += OnPostControllerInputUpdated; + + /// Force the pose to update immediately in case the controller isn't updated before the next + /// time a frame is rendered. + UpdatePose(); + + /// Check the controller state immediately whenever this script is enabled. + OnControllerStateChanged(controllerInputDevice.State, controllerInputDevice.State); + } + + void OnDisable() + { + GvrControllerInput.OnPostControllerInputUpdated -= OnPostControllerInputUpdated; + } + + void Start() + { + PropagateArmModel(); + if (controllerInputDevice != null) + { + PropagateControllerInputDevice(); + OnControllerStateChanged(controllerInputDevice.State, controllerInputDevice.State); + } + } + + void OnDestroy() + { + GvrControllerInput.OnDevicesChanged -= SetupControllerInputDevice; + if (controllerInputDevice != null) + { + controllerInputDevice.OnStateChanged -= OnControllerStateChanged; + controllerInputDevice = null; + PropagateControllerInputDevice(); + } + } + + private void PropagateControllerInputDevice() + { + IGvrControllerInputDeviceReceiver[] receivers = + GetComponentsInChildren(true); + + foreach (var receiver in receivers) + { + receiver.ControllerInputDevice = controllerInputDevice; + } + + PropagateControllerInputDeviceToArmModel(); + } + + private void PropagateControllerInputDeviceToArmModel() + { + // Propagate the controller input device to everything in the arm model's object's + // hierarchy in case it is not a child of the tracked controller. + if (armModel != null) + { + IGvrControllerInputDeviceReceiver[] receivers = + armModel.GetComponentsInChildren(true); + + foreach (var receiver in receivers) + { + receiver.ControllerInputDevice = controllerInputDevice; + } + } + } + + private void SetupControllerInputDevice() + { + GvrControllerInputDevice newDevice = GvrControllerInput.GetDevice(controllerHand); + if (controllerInputDevice == newDevice) + { + return; + } + + if (controllerInputDevice != null) + { + controllerInputDevice.OnStateChanged -= OnControllerStateChanged; + controllerInputDevice = null; + } + + controllerInputDevice = newDevice; + if (controllerInputDevice != null) + { + controllerInputDevice.OnStateChanged += OnControllerStateChanged; + OnControllerStateChanged(controllerInputDevice.State, controllerInputDevice.State); + } + else + { + OnControllerStateChanged(GvrConnectionState.Disconnected, GvrConnectionState.Disconnected); + } + + PropagateControllerInputDevice(); + } + + private void OnPostControllerInputUpdated() + { + UpdatePose(); + } + + private void OnControllerStateChanged(GvrConnectionState state, GvrConnectionState oldState) + { + if (isDeactivatedWhenDisconnected && enabled) + { + gameObject.SetActive(state == GvrConnectionState.Connected); + } + } + + private void UpdatePose() + { + if (controllerInputDevice == null) + { + return; + } + + // Disable arm model if the device supports 6DoF. + if (controllerInputDevice.SupportsPositionalTracking) + { + transform.localPosition = controllerInputDevice.Position; + transform.localRotation = controllerInputDevice.Orientation; + } + else + { + if (armModel == null || !controllerInputDevice.IsDominantHand) + { + return; + } + + transform.localPosition = ArmModel.ControllerPositionFromHead; + transform.localRotation = ArmModel.ControllerRotationFromHead; + } + } +#if UNITY_EDITOR + /// If the "armModel" serialized field is changed while the application is playing + /// by using the inspector in the editor, then we need to call the PropagateArmModel + /// to ensure all children IGvrArmModelReceiver are updated. + /// Outside of the editor, this can't happen because the arm model can only change when + /// a Setter is called that automatically calls PropagateArmModel. + void OnValidate() + { + if (Application.isPlaying && isActiveAndEnabled) + { + PropagateArmModel(); + if (controllerInputDevice != null) + { + OnControllerStateChanged(controllerInputDevice.State, controllerInputDevice.State); + } + } + } +#endif // UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrTrackedController.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrTrackedController.cs.meta new file mode 100644 index 0000000..a928aaf --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/GvrTrackedController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 311793381eb9d45149dc1a422000a9fd +timeCreated: 1481762795 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/IGvrControllerInputDeviceReceiver.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/IGvrControllerInputDeviceReceiver.cs new file mode 100644 index 0000000..938fd6b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/IGvrControllerInputDeviceReceiver.cs @@ -0,0 +1,28 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +/// Interface declaring the need for the controller input device. +public interface IGvrControllerInputDeviceReceiver +{ + /// Sets the reference to the controller input device. + GvrControllerInputDevice ControllerInputDevice { set; } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/IGvrControllerInputDeviceReceiver.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/IGvrControllerInputDeviceReceiver.cs.meta new file mode 100644 index 0000000..f89d9a0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/IGvrControllerInputDeviceReceiver.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2a4fdc21aee934d82baa564e797da921 +timeCreated: 1519951901 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal.meta new file mode 100644 index 0000000..6aaa957 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3bee8a214bb054df5965a78f7323ab8a +folderAsset: yes +timeCreated: 1462043669 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviderFactory.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviderFactory.cs new file mode 100644 index 0000000..a0998c4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviderFactory.cs @@ -0,0 +1,59 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// @cond +namespace Gvr.Internal +{ + /// Factory that provides a concrete implementation of IControllerProvider for the + /// current platform. + static class ControllerProviderFactory + { + /// Provides a concrete implementation of IControllerProvider appropriate for the current + /// platform. This method never returns null. In the worst case, it might return a dummy + /// provider if the platform is not supported. For demo purposes the emulator controller + /// is returned in the editor and in Standalone buids, for use inside the desktop player. + static internal IControllerProvider CreateControllerProvider(GvrControllerInput owner) + { +// Use emualtor in editor, and in Standalone builds (for demo purposes). +#if UNITY_EDITOR + // Use the Editor controller provider that supports the controller emulator and the mouse. + return new EditorControllerProvider(owner.emulatorConnectionMode); + +#elif UNITY_ANDROID + if (AndroidNativeShimControllerProvider.ShimAvailable()) + { + // Use the GVR Unity Shim API. + return new AndroidNativeShimControllerProvider(); + } + else + { + Debug.LogWarning("Creating dummy controller provider."); + return new DummyControllerProvider(); + } +#else + // Platform not supported. + Debug.LogWarning("No controller support on this platform."); + return new DummyControllerProvider(); +#endif // UNITY_EDITOR || UNITY_ANDROID + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviderFactory.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviderFactory.cs.meta new file mode 100644 index 0000000..dca5048 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviderFactory.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9f9210011b71142d5966eec2db6cc696 +timeCreated: 1462043669 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders.meta new file mode 100644 index 0000000..fdeacb8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6ae60fb379a944fc3a8be4ccdfbc0139 +folderAsset: yes +timeCreated: 1462043669 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/AndroidNativeShimControllerProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/AndroidNativeShimControllerProvider.cs new file mode 100644 index 0000000..b93fa00 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/AndroidNativeShimControllerProvider.cs @@ -0,0 +1,356 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// This provider is only available on an Android device. +#if UNITY_ANDROID && !UNITY_EDITOR + +/// @cond +namespace Gvr.Internal +{ + using UnityEngine; + + using System; + using System.Runtime.InteropServices; + +#if UNITY_2017_2_OR_NEWER + using UnityEngine.XR; + +#else + using XRDevice = UnityEngine.VR.VRDevice; + +#endif // UNITY_2017_2_OR_NEWER + + /// Controller Provider that uses the native GVR C API to communicate with controllers + /// via Google VR Services on Android. + class AndroidNativeShimControllerProvider : IControllerProvider + { + private const int GVR_SHIM_UNITY_API_LEVEL = 1; + + // Shim API return OK value. Result is error if != OK. + private const int GVR_SHIM_OK = 1; + + private enum GvrShimUnitySupport + { + /// GVRShim is supported. + Supported = 0, + + /// The GVRShim plugin is not present. This happens when GVRShim is not included in + /// the Unity project and the default shim compiled with Unity is used. + PluginNotPresent = 1, + + /// The expected API level is not supported by GVRShim. + ApiLevelUnavailable = 2, + + /// The device is not able to run GVRShim. + DeviceNotSupported = 3, + } + + private enum GvrShimConnectionStatus + { + /// Controller is disconnected. + Disconnected = 0, + + /// Controller is scanning. + Scanning = 1, + + /// Controller is connecting. + Connecting = 2, + + /// Controller is connected. + Connected = 3, + + /// There was an error connecting to the controller. + /// This enum subsumes all of the API status errors which are largely obsolete now. + Error = 100, + } + + private enum GvrShimTrackedDataAvailableFlags + { + PositionAvailable = 1 << 1, + RotationAvailable = 1 << 2, + GyroAvailable = 1 << 3, + AccelerationAvailable = 1 << 4, + } + + private int lastUpdateFrame = 0; + private MutablePose3D pose3d = new MutablePose3D(); + private GvrControllerButton[] lastButtonStates = new GvrControllerButton[2]; + + public static bool ShimAvailable() + { + int supportStatus = (int)GvrShimUnitySupport.ApiLevelUnavailable; + int retval = 0; + try + { + retval = GvrShimUnity_getGVRShimSupportStatus(GVR_SHIM_UNITY_API_LEVEL, ref supportStatus); + } + catch (DllNotFoundException) + { + Debug.LogError("GVR Unity shim not found."); + return false; + } + + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_getGVRShimSupportStatus returned error."); + return false; + } + + if (supportStatus != (int)GvrShimUnitySupport.Supported) + { + Debug.LogError("GVR Unity Shim doesn't support shim API level " + GVR_SHIM_UNITY_API_LEVEL); + return false; + } + + return true; + } + + internal AndroidNativeShimControllerProvider() + { + int retval = GvrShimUnity_initShimWithContext(XRDevice.GetNativePtr()); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_initShimWithContext returned error."); + } + + // Start the shim session. + retval = GvrShimUnity_resumeShim(); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_resumeShim returned error."); + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (disposing) + { + // Debug.Log("Destroying GVR API structures."); + int retval = GvrShimUnity_destroyShim(); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_destroyShim returned error."); + } + } + } + + public bool SupportsBatteryStatus + { + get { return true; } + } + + /// Reads the number of controllers the system is configured to use. This does not + /// indicate the number of currently connected controllers. + public int MaxControllerCount + { + get + { + int count = 0; + int retval = GvrShimUnity_getControllerCount(ref count); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_getControllerCount returned error."); + return 0; + } + + return count; + } + } + + /// Notifies the controller provider that the application has paused. + public void OnPause() + { + int retval = GvrShimUnity_pauseShim(); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_pauseShim returned error."); + } + } + + /// Notifies the controller provider that the application has resumed. + public void OnResume() + { + int retval = GvrShimUnity_resumeShim(); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_resumeShim returned error."); + } + } + + private static GvrConnectionState ConvertConnectionState(int connectionState) + { + switch (connectionState) + { + case (int)GvrShimConnectionStatus.Connected: + return GvrConnectionState.Connected; + case (int)GvrShimConnectionStatus.Connecting: + return GvrConnectionState.Connecting; + case (int)GvrShimConnectionStatus.Scanning: + return GvrConnectionState.Scanning; + case (int)GvrShimConnectionStatus.Disconnected: + return GvrConnectionState.Disconnected; + default: + return GvrConnectionState.Error; + } + } + + /// Reads the controller's current state and stores it in outState. + public void ReadState(ControllerState outState, int controller_id) + { + int retval = 0; + if (lastUpdateFrame != Time.frameCount) + { + lastUpdateFrame = Time.frameCount; + + retval = GvrShimUnity_updateState(); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_updateState returned error."); + return; + } + } + + int connStatus = 0; + retval = GvrShimUnity_getControllerConnectionStatus(controller_id, ref connStatus); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_getControllerConnectionStatus returned error."); + return; + } + + outState.connectionState = ConvertConnectionState(connStatus); + + // Early out if not connected. No other state is relevant. + if (outState.connectionState != GvrConnectionState.Connected) + { + return; + } + + GvrShimUnityControllerState aState = new GvrShimUnityControllerState(); + retval = GvrShimUnity_getControllerState(controller_id, ref aState); + if (retval != GVR_SHIM_OK) + { + Debug.LogError("GvrShimUnity_getControllerState returned error."); + return; + } + + // Convert GVR API orientation (right-handed) into Unity axis system (left-handed). + pose3d.Set(aState.position, aState.orientation); + pose3d.SetRightHanded(pose3d.Matrix); + outState.orientation = pose3d.Orientation; + outState.position = pose3d.Position; + + // For accelerometer, we have to flip Z because the GVR API has Z pointing backwards + // and Unity has Z pointing forward. + outState.accel = aState.acceleration; + outState.accel.z *= -1; + + // Gyro in GVR represents a right-handed angular velocity about each axis (positive means + // clockwise when sighting along axis). Since Unity uses a left-handed system, we flip the + // signs to adjust the sign of the rotational velocity (so that positive means + // counter-clockwise). In addition, since in Unity the Z axis points forward while GVR + // has Z pointing backwards, we flip the Z axis sign again. So the result is that + // we should use -X, -Y, +Z: + outState.gyro = aState.gyro; + outState.gyro.Scale(new Vector3(-1, -1, 1)); + + outState.touchPos = aState.touchPos; + + // Shim outputs centered touchpos coordinates, but the ControllerState struct is + // top-left coordinates. Convert back to top-left. + outState.touchPos.x = (outState.touchPos.x / 2.0f) + 0.5f; + outState.touchPos.y = (-outState.touchPos.y / 2.0f) + 0.5f; + + outState.is6DoF = ( + aState.trackedDataAvailable & + (int)GvrShimTrackedDataAvailableFlags.PositionAvailable) != 0; + outState.buttonsState = (GvrControllerButton)aState.buttonState; + + // Derive button up/down state from Unity perspective, as it can miss + // up/downs from platform, like on pause/resume. + if (controller_id >= 0 && controller_id < lastButtonStates.Length) + { + outState.SetButtonsUpDownFromPrevious(lastButtonStates[controller_id]); + lastButtonStates[controller_id] = outState.buttonsState; + } + + outState.recentered = (aState.recentered != 0); + outState.isCharging = (aState.batteryCharging != 0); + outState.batteryLevel = (GvrControllerBatteryLevel)aState.batteryLevel; + } + + [StructLayout(LayoutKind.Sequential, Size = 348)] + private struct GvrShimUnityControllerState + { + public Vector3 position; + public Quaternion orientation; + public Vector3 gyro; + public Vector3 acceleration; + public Vector2 touchPos; + public int buttonState; + public int buttonUp; + public int buttonDown; + public int recentered; + public int batteryCharging; + public int batteryLevel; + public int connectionState; + public int trackedDataAvailable; + } + + private const string shimDllName = GvrActivityHelper.GVR_SHIM_DLL_NAME; + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_getGVRVersion(ref float version); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_getGVRShimSupportStatus(uint expected_api_level, ref int gvrshim_support_status); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_initShimWithContext(IntPtr gvr_context); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_destroyShim(); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_pauseShim(); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_resumeShim(); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_updateState(); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_getControllerConnectionStatus(int device, ref int status); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_getControllerState(int device, ref GvrShimUnityControllerState state); + + [DllImport(shimDllName)] + private static extern int GvrShimUnity_getControllerCount(ref int count); + } +} + +/// @endcond +#endif // UNITY_ANDROID && !UNITY_EDITOR diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/AndroidNativeShimControllerProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/AndroidNativeShimControllerProvider.cs.meta new file mode 100644 index 0000000..f98b623 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/AndroidNativeShimControllerProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3e968996b071c460f9b80785694ce6c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/DummyControllerProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/DummyControllerProvider.cs new file mode 100644 index 0000000..ebc8e06 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/DummyControllerProvider.cs @@ -0,0 +1,69 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using Gvr; + +/// @cond +namespace Gvr.Internal +{ + /// Dummy controller provider. + /// Used in platforms that do not support controllers. + class DummyControllerProvider : IControllerProvider + { + private ControllerState dummyState = new ControllerState(); + + public bool SupportsBatteryStatus + { + get + { + return false; + } + } + + public int MaxControllerCount + { + get + { + return 1; + } + } + + internal DummyControllerProvider() + { + } + + public void Dispose() + { + } + + public void ReadState(ControllerState outState, int controller_id) + { + outState.CopyFrom(dummyState); + } + + public void OnPause() + { + } + + public void OnResume() + { + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/DummyControllerProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/DummyControllerProvider.cs.meta new file mode 100644 index 0000000..aae426f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/DummyControllerProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0f791be37caef48c79f72011276ab16a +timeCreated: 1462043669 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EditorControllerProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EditorControllerProvider.cs new file mode 100644 index 0000000..fd9bf7f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EditorControllerProvider.cs @@ -0,0 +1,116 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// This provider is only available in the editor. +#if UNITY_EDITOR + +using Gvr; + +namespace Gvr.Internal +{ + /// Controller provider used when playing in the Unity Editor. + /// Supports the Controller Emulator and Mouse input to mock the controller. + class EditorControllerProvider : IControllerProvider + { + private EmulatorControllerProvider emulatorControllerProvider; + private MouseControllerProvider mouseControllerProvider; +#if UNITY_ANDROID + /// Helper class to get Instant Preview controller events if connected. + private InstantPreviewControllerProvider instantPreviewControllerProvider = + new InstantPreviewControllerProvider(); +#endif // UNITY_ANDROID + + ControllerState emulatorState = new ControllerState(); + ControllerState mouseState = new ControllerState(); + + public bool SupportsBatteryStatus + { + get { return emulatorControllerProvider.SupportsBatteryStatus; } + } + + public int MaxControllerCount + { + get + { +#if UNITY_ANDROID + return InstantPreviewControllerProvider.MAX_NUM_CONTROLLERS; +#else + return 1; +#endif // UNITY_ANDROID + } + } + + internal EditorControllerProvider(GvrControllerInput.EmulatorConnectionMode connectionMode) + { + emulatorControllerProvider = new EmulatorControllerProvider(connectionMode); + mouseControllerProvider = new MouseControllerProvider(); + } + + public void Dispose() + { + } + + public void ReadState(ControllerState outState, int controller_id) + { + if (controller_id >= MaxControllerCount) + { + return; + } +#if UNITY_ANDROID + if (InstantPreview.Instance != null + && InstantPreview.Instance.IsCurrentlyConnected + && !EmulatorManager.Instance.Connected) + { + // Uses Instant Preview to get controller state if connected. + instantPreviewControllerProvider.ReadState(outState, controller_id); + return; + } +#endif // UNITY_ANDROID + + // If Instant Preview is not connected, tries to use the emulator or + // mouse. + emulatorControllerProvider.ReadState(emulatorState, controller_id); + mouseControllerProvider.ReadState(mouseState, controller_id); + + // Defaults to mouse state if the emulator isn't available. + if (emulatorState.connectionState != GvrConnectionState.Connected + && mouseState.connectionState == GvrConnectionState.Connected) + { + outState.CopyFrom(mouseState); + } + else + { + outState.CopyFrom(emulatorState); + } + } + + public void OnPause() + { + emulatorControllerProvider.OnPause(); + mouseControllerProvider.OnPause(); + } + + public void OnResume() + { + emulatorControllerProvider.OnResume(); + mouseControllerProvider.OnResume(); + } + } +} + +#endif // UNITY_EDITOR diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EditorControllerProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EditorControllerProvider.cs.meta new file mode 100644 index 0000000..5ac905c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EditorControllerProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e0a32f2191dec4e1b8e05acab6002be6 +timeCreated: 1496354837 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EmulatorControllerProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EmulatorControllerProvider.cs new file mode 100644 index 0000000..e977be4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EmulatorControllerProvider.cs @@ -0,0 +1,256 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// This class is only used in the Editor, so make sure to only compile it on that platform. +// Additionally, it depends on EmulatorManager which is only compiled in the editor. +#if UNITY_EDITOR + +using UnityEngine; + +/// @cond +namespace Gvr.Internal +{ + /// Controller provider that connects to the controller emulator to obtain controller events. + class EmulatorControllerProvider : IControllerProvider + { + private ControllerState state = new ControllerState(); + + /// Yaw correction due to recentering. + private Quaternion yawCorrection = Quaternion.identity; + + /// True if we performed the initial recenter. + private bool initialRecenterDone = false; + + /// The last (uncorrected) orientation received from the emulator. + private Quaternion lastRawOrientation = Quaternion.identity; + private GvrControllerButton lastButtonsState; + private GvrControllerInput.EmulatorConnectionMode emulatorConnectionMode; + + public bool SupportsBatteryStatus + { + get { return true; } + } + + public int MaxControllerCount + { + get { return 1; } + } + + /// Creates a new EmulatorControllerProvider with the specified settings. + internal EmulatorControllerProvider(GvrControllerInput.EmulatorConnectionMode connectionMode) + { + emulatorConnectionMode = connectionMode; + if (connectionMode == GvrControllerInput.EmulatorConnectionMode.USB) + { + EmulatorConfig.Instance.PHONE_EVENT_MODE = EmulatorConfig.Mode.USB; + } + else if (connectionMode == GvrControllerInput.EmulatorConnectionMode.WIFI) + { + EmulatorConfig.Instance.PHONE_EVENT_MODE = EmulatorConfig.Mode.WIFI; + } + else + { + return; + } + + EmulatorManager.Instance.touchEventListeners += HandleTouchEvent; + EmulatorManager.Instance.orientationEventListeners += HandleOrientationEvent; + EmulatorManager.Instance.buttonEventListeners += HandleButtonEvent; + EmulatorManager.Instance.gyroEventListeners += HandleGyroEvent; + EmulatorManager.Instance.accelEventListeners += HandleAccelEvent; + } + + public void Dispose() + { + } + + public void ReadState(ControllerState outState, int controller_id) + { + if (emulatorConnectionMode == GvrControllerInput.EmulatorConnectionMode.OFF) + { + return; + } + + if (controller_id != 0) + { + return; + } + + lock (state) + { + state.connectionState = GvrConnectionState.Connected; + if (!EmulatorManager.Instance.Connected) + { + state.connectionState = EmulatorManager.Instance.Connecting ? + GvrConnectionState.Connecting : GvrConnectionState.Disconnected; + } + + state.apiStatus = EmulatorManager.Instance.Connected ? + GvrControllerApiStatus.Ok : GvrControllerApiStatus.Unavailable; + + // During emulation, just assume the controller is fully charged + state.isCharging = false; + state.batteryLevel = GvrControllerBatteryLevel.Full; + + state.SetButtonsUpDownFromPrevious(lastButtonsState); + lastButtonsState = state.buttonsState; + + outState.CopyFrom(state); + } + + state.ClearTransientState(); + } + + public void OnPause() + { + } + + public void OnResume() + { + } + + private void HandleTouchEvent(EmulatorTouchEvent touchEvent) + { + if (touchEvent.pointers.Count < 1) + { + return; + } + + EmulatorTouchEvent.Pointer pointer = touchEvent.pointers[0]; + + lock (state) + { + state.touchPos = new Vector2(pointer.normalizedX, pointer.normalizedY); + switch (touchEvent.getActionMasked()) + { + case EmulatorTouchEvent.Action.kActionDown: + state.buttonsState |= GvrControllerButton.TouchPadTouch; + break; + case EmulatorTouchEvent.Action.kActionMove: + state.buttonsState |= GvrControllerButton.TouchPadTouch; + break; + case EmulatorTouchEvent.Action.kActionUp: + state.buttonsState &= ~GvrControllerButton.TouchPadTouch; + break; + } + } + } + + private void HandleOrientationEvent(EmulatorOrientationEvent orientationEvent) + { + lastRawOrientation = ConvertEmulatorQuaternion(orientationEvent.orientation); + if (!initialRecenterDone) + { + Recenter(); + initialRecenterDone = true; + } + + lock (state) + { + state.orientation = yawCorrection * lastRawOrientation; + } + } + + private void HandleButtonEvent(EmulatorButtonEvent buttonEvent) + { + GvrControllerButton buttonMask = 0; + switch (buttonEvent.code) + { + case EmulatorButtonEvent.ButtonCode.kApp: + buttonMask = GvrControllerButton.App; + break; + case EmulatorButtonEvent.ButtonCode.kHome: + buttonMask = GvrControllerButton.System; + break; + case EmulatorButtonEvent.ButtonCode.kClick: + buttonMask = GvrControllerButton.TouchPadButton; + break; + } + + if (buttonMask != 0) + { + lock (state) + { + state.buttonsState &= ~buttonMask; + if (buttonEvent.down) + { + state.buttonsState |= buttonMask; + } + } + + if (buttonMask == GvrControllerButton.System) + { + if (!buttonEvent.down) + { + // Finished the recentering gesture. Recenter controller. + Recenter(); + } + } + } + } + + private void HandleGyroEvent(EmulatorGyroEvent gyroEvent) + { + lock (state) + { + state.gyro = ConvertEmulatorGyro(gyroEvent.value); + } + } + + private void HandleAccelEvent(EmulatorAccelEvent accelEvent) + { + lock (state) + { + state.accel = ConvertEmulatorAccel(accelEvent.value); + } + } + + private static Quaternion ConvertEmulatorQuaternion(Quaternion emulatorQuat) + { + // Convert from the emulator's coordinate space to Unity's standard coordinate space. + return new Quaternion(emulatorQuat.x, -emulatorQuat.z, emulatorQuat.y, emulatorQuat.w); + } + + private static Vector3 ConvertEmulatorGyro(Vector3 emulatorGyro) + { + // Convert from the emulator's coordinate space to Unity's standard coordinate space. + return new Vector3(-emulatorGyro.x, -emulatorGyro.z, -emulatorGyro.y); + } + + private static Vector3 ConvertEmulatorAccel(Vector3 emulatorAccel) + { + // Convert from the emulator's coordinate space to Unity's standard coordinate space. + return new Vector3(emulatorAccel.x, emulatorAccel.z, emulatorAccel.y); + } + + private void Recenter() + { + lock (state) + { + // We want the current orientation to be "forward" so, we set the yaw correction + // to undo the current rotation's yaw. + yawCorrection = Quaternion.AngleAxis(-lastRawOrientation.eulerAngles.y, Vector3.up); + state.orientation = Quaternion.identity; + state.recentered = true; + } + } + } +} + +/// @endcond +#endif // UNITY_EDITOR diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EmulatorControllerProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EmulatorControllerProvider.cs.meta new file mode 100644 index 0000000..b27dd4b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/EmulatorControllerProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0ca644865f5f4479fb50471605078cf0 +timeCreated: 1462051657 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/MouseControllerProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/MouseControllerProvider.cs new file mode 100644 index 0000000..8979463 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/MouseControllerProvider.cs @@ -0,0 +1,235 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using Gvr; +using UnityEngine; + +namespace Gvr.Internal +{ + /// Mocks controller input by using the mouse. + /// The controller is connected when holding left shift. + /// Move the mouse to control gyroscope and orientation. + /// The left mouse button is used for the clickButton. + /// The right mouse button is used for the appButton. + /// The middle mouse button is used for the homeButton. + class MouseControllerProvider : IControllerProvider + { + private const string AXIS_MOUSE_X = "Mouse X"; + private const string AXIS_MOUSE_Y = "Mouse Y"; + + private ControllerState state = new ControllerState(); + + private Vector2 mouseDelta = new Vector2(); + + /// Need to store the state of the buttons from the previous frame. + /// This is because Input.GetMouseButtonDown and Input.GetMouseButtonUp + /// don't work when called after WaitForEndOfFrame, which is when ReadState is called. + private bool wasTouching; + private GvrControllerButton lastButtonsState; + + private const float ROTATE_SENSITIVITY = 4.5f; + private const float TOUCH_SENSITIVITY = .12f; + private static readonly Vector3 INVERT_Y = new Vector3(1, -1, 1); + private static readonly ControllerState dummyState = new ControllerState(); + + public static bool IsMouseAvailable + { + get { return Input.mousePresent && IsActivateButtonPressed; } + } + + public static bool IsActivateButtonPressed + { + get { return Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift); } + } + + public static bool IsClickButtonPressed + { + get { return Input.GetMouseButton(0); } + } + + public static bool IsAppButtonPressed + { + get { return Input.GetMouseButton(1); } + } + + public static bool IsHomeButtonPressed + { + get { return Input.GetMouseButton(2); } + } + + public static bool IsTouching + { + get { return Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl); } + } + + public bool SupportsBatteryStatus + { + get { return false; } + } + + public int MaxControllerCount + { + get { return 1; } + } + + internal MouseControllerProvider() + { + } + + public void Dispose() + { + } + + public void ReadState(ControllerState outState, int controller_id) + { + if (controller_id != 0) + { + outState.CopyFrom(dummyState); + return; + } + + lock (state) + { + UpdateState(); + + outState.CopyFrom(state); + } + + state.ClearTransientState(); + } + + public void OnPause() + { + } + + public void OnResume() + { + } + + private void UpdateState() + { + GvrCursorHelper.ControllerEmulationActive = IsMouseAvailable; + + if (!IsMouseAvailable) + { + ClearState(); + return; + } + + state.connectionState = GvrConnectionState.Connected; + state.apiStatus = GvrControllerApiStatus.Ok; + state.isCharging = false; + state.batteryLevel = GvrControllerBatteryLevel.Full; + + UpdateButtonStates(); + + mouseDelta.Set( + Input.GetAxis(AXIS_MOUSE_X), + Input.GetAxis(AXIS_MOUSE_Y)); + + if (0 != (state.buttonsState & GvrControllerButton.TouchPadTouch)) + { + UpdateTouchPos(); + } + else + { + UpdateOrientation(); + } + } + + private void UpdateTouchPos() + { + Vector3 currentMousePosition = Input.mousePosition; + Vector2 touchDelta = mouseDelta * TOUCH_SENSITIVITY; + touchDelta.y *= -1.0f; + + state.touchPos += touchDelta; + state.touchPos.x = Mathf.Clamp01(state.touchPos.x); + state.touchPos.y = Mathf.Clamp01(state.touchPos.y); + } + + private void UpdateOrientation() + { + Vector3 deltaDegrees = Vector3.Scale(mouseDelta, INVERT_Y) * ROTATE_SENSITIVITY; + + state.gyro = deltaDegrees * (Mathf.Deg2Rad / Time.unscaledDeltaTime); + + Quaternion yaw = Quaternion.AngleAxis(deltaDegrees.x, Vector3.up); + Quaternion pitch = Quaternion.AngleAxis(deltaDegrees.y, Vector3.right); + state.orientation = state.orientation * yaw * pitch; + } + + private void UpdateButtonStates() + { + state.buttonsState = 0; + if (IsClickButtonPressed) + { + state.buttonsState |= GvrControllerButton.TouchPadButton; + } + + if (IsAppButtonPressed) + { + state.buttonsState |= GvrControllerButton.App; + } + + if (IsHomeButtonPressed) + { + state.buttonsState |= GvrControllerButton.System; + } + + if (IsTouching) + { + state.buttonsState |= GvrControllerButton.TouchPadTouch; + } + + state.SetButtonsUpDownFromPrevious(lastButtonsState); + lastButtonsState = state.buttonsState; + + if (0 != (state.buttonsUp & GvrControllerButton.TouchPadTouch)) + { + ClearTouchPos(); + } + + if (0 != (state.buttonsUp & GvrControllerButton.System)) + { + Recenter(); + } + } + + private void Recenter() + { + Quaternion yawCorrection = Quaternion.AngleAxis(-state.orientation.eulerAngles.y, Vector3.up); + state.orientation = state.orientation * yawCorrection; + state.recentered = true; + } + + private void ClearTouchPos() + { + state.touchPos = new Vector2(0.5f, 0.5f); + } + + private void ClearState() + { + state.connectionState = GvrConnectionState.Disconnected; + state.buttonsState = 0; + state.buttonsDown = 0; + state.buttonsUp = 0; + ClearTouchPos(); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/MouseControllerProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/MouseControllerProvider.cs.meta new file mode 100644 index 0000000..89d44e7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerProviders/MouseControllerProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d8b9c789363a44b1e87727b1c4d085f6 +timeCreated: 1496352344 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerState.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerState.cs new file mode 100644 index 0000000..e1bd1dc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerState.cs @@ -0,0 +1,92 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; + +using Gvr; + +/// @cond +namespace Gvr.Internal +{ + /// Internal representation of the controller's current state. + /// This representation is used by controller providers to represent the controller's state. + /// + /// The fields in this class have identical meanings to their correspondents in the GVR C API, + /// so they are not redundantly documented here. + class ControllerState + { + internal GvrConnectionState connectionState = GvrConnectionState.Disconnected; + internal GvrControllerApiStatus apiStatus = GvrControllerApiStatus.Unavailable; + internal Quaternion orientation = Quaternion.identity; + internal Vector3 position = Vector3.zero; + internal Vector3 gyro = Vector3.zero; + internal Vector3 accel = Vector3.zero; + internal Vector2 touchPos = Vector2.zero; + internal bool recentered = false; + internal bool is6DoF = false; + + internal GvrControllerButton buttonsState; + internal GvrControllerButton buttonsDown; + internal GvrControllerButton buttonsUp; + + internal string errorDetails = ""; + internal IntPtr gvrPtr = IntPtr.Zero; + + internal bool isCharging = false; + internal GvrControllerBatteryLevel batteryLevel = GvrControllerBatteryLevel.Unknown; + + public void CopyFrom(ControllerState other) + { + connectionState = other.connectionState; + apiStatus = other.apiStatus; + orientation = other.orientation; + position = other.position; + gyro = other.gyro; + accel = other.accel; + touchPos = other.touchPos; + recentered = other.recentered; + is6DoF = other.is6DoF; + buttonsState = other.buttonsState; + buttonsDown = other.buttonsDown; + buttonsUp = other.buttonsUp; + errorDetails = other.errorDetails; + gvrPtr = other.gvrPtr; + isCharging = other.isCharging; + batteryLevel = other.batteryLevel; + } + + /// Resets the transient state (the state variables that represent events, and which are true + /// for only one frame). + public void ClearTransientState() + { + recentered = false; + buttonsState = 0; + buttonsDown = 0; + buttonsUp = 0; + } + + public void SetButtonsUpDownFromPrevious(GvrControllerButton prevButtonsState) + { + buttonsDown = ~prevButtonsState & buttonsState; + buttonsUp = prevButtonsState & ~buttonsState; + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerState.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerState.cs.meta new file mode 100644 index 0000000..280f786 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9159532a8a3d946aa9df74e771243e5b +timeCreated: 1462043669 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerUtils.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerUtils.cs new file mode 100644 index 0000000..61503f2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerUtils.cs @@ -0,0 +1,80 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; + +using Gvr; + +/// @cond +namespace Gvr.Internal +{ + class ControllerUtils + { + /// Convenience array of all hands. + public static readonly GvrControllerHand[] AllHands = + { + GvrControllerHand.Right, + GvrControllerHand.Left, + }; + + /// Returns true while the user holds down any of buttons specified in `buttons` on + /// any controller. + public static bool AnyButton(GvrControllerButton buttons) + { + bool ret = false; + foreach (var hand in AllHands) + { + GvrControllerInputDevice device = GvrControllerInput.GetDevice(hand); + ret |= device.GetButton(buttons); + } + + return ret; + } + + /// Returns true in the frame the user starts pressing down any of buttons specified + /// in `buttons` on any controller. + public static bool AnyButtonDown(GvrControllerButton buttons) + { + bool ret = false; + foreach (var hand in AllHands) + { + GvrControllerInputDevice device = GvrControllerInput.GetDevice(hand); + ret |= device.GetButtonDown(buttons); + } + + return ret; + } + + /// Returns true the frame after the user stops pressing down any of buttons specified + /// in `buttons` on any controller. + public static bool AnyButtonUp(GvrControllerButton buttons) + { + bool ret = false; + foreach (var hand in AllHands) + { + GvrControllerInputDevice device = GvrControllerInput.GetDevice(hand); + ret |= device.GetButtonUp(buttons); + } + + return ret; + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerUtils.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerUtils.cs.meta new file mode 100644 index 0000000..638f6df --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/ControllerUtils.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8358cf789a848412fbb10ba05c4f3fce +timeCreated: 1524508137 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator.meta new file mode 100644 index 0000000..5ea3240 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6f26e421513d645d28448658551a7f41 +folderAsset: yes +timeCreated: 1462051657 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorClientSocket.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorClientSocket.cs new file mode 100644 index 0000000..9e3fa3e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorClientSocket.cs @@ -0,0 +1,319 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// This class is only used in the Editor, so make sure to only compile it on that platform. +// Additionally, If this class is compiled on Android then Unity will insert the INTERNET permission +// into the manifest because of the reference to the type TCPClient. Excluding this class in the android +// build ensures that it is only included if the developer using the SDK actually uses INTERNET related services. +// This MonoBehaviour is only ever instantiated dynamically, so it is fine that it is only compiled in the Editor, +// Otherwise it would cause serialization issues. +#if UNITY_EDITOR + +using UnityEngine; +using System; +using System.IO; +using System.Net.Sockets; +using System.Threading; + +using proto; + +/// @cond +namespace Gvr.Internal +{ + public enum EmulatorClientSocketConnectionState + { + Disconnected = 0, + Connecting = 1, + Connected = 2, + } + + class EmulatorClientSocket : MonoBehaviour + { + private static readonly int kPhoneEventPort = 7003; + private const int kSocketReadTimeoutMillis = 5000; + + // Minimum interval, in seconds, between attempts to reconnect the socket. + private const float kMinReconnectInterval = 1f; + + private TcpClient phoneMirroringSocket; + + private Thread phoneEventThread; + + private volatile bool shouldStop = false; + + // Flag used to limit connection state logging to initial failure and successful reconnects. + private volatile bool lastConnectionAttemptWasSuccessful = true; + + private EmulatorManager phoneRemote; + + public EmulatorClientSocketConnectionState connected { get; private set; } + + public void Init(EmulatorManager remote) + { + phoneRemote = remote; + + if (EmulatorConfig.Instance.PHONE_EVENT_MODE != EmulatorConfig.Mode.OFF) + { + phoneEventThread = new Thread(phoneEventSocketLoop); + phoneEventThread.IsBackground = true; + phoneEventThread.Start(); + } + } + + private void phoneEventSocketLoop() + { + while (!shouldStop) + { + long lastConnectionAttemptTime = DateTime.Now.Ticks; + try + { + phoneConnect(); + } + catch (Exception e) + { + if (lastConnectionAttemptWasSuccessful) + { + Debug.LogWarningFormat("{0}\n{1}", e.Message, e.StackTrace); + + // Suppress additional failures until we have successfully reconnected. + lastConnectionAttemptWasSuccessful = false; + } + } + + // Wait a while in order to enforce the minimum time between connection attempts. + TimeSpan elapsed = new TimeSpan(DateTime.Now.Ticks - lastConnectionAttemptTime); + float toWait = kMinReconnectInterval - (float)elapsed.TotalSeconds; + if (toWait > 0) + { + Thread.Sleep((int)(toWait * 1000)); + } + } + } + + private void phoneConnect() + { + string addr = EmulatorConfig.Instance.PHONE_EVENT_MODE == EmulatorConfig.Mode.USB + ? EmulatorConfig.USB_SERVER_IP : EmulatorConfig.WIFI_SERVER_IP; + + try + { + if (EmulatorConfig.Instance.PHONE_EVENT_MODE == EmulatorConfig.Mode.USB) + { + setupPortForwarding(kPhoneEventPort); + } + + TcpClient tcpClient = new TcpClient(addr, kPhoneEventPort); + connected = EmulatorClientSocketConnectionState.Connecting; + ProcessConnection(tcpClient); + tcpClient.Close(); + } + finally + { + connected = EmulatorClientSocketConnectionState.Disconnected; + } + } + + private void setupPortForwarding(int port) + { +#if !UNITY_WEBPLAYER + string adbCommand = string.Format("adb forward tcp:{0} tcp:{0}", port); + System.Diagnostics.Process myProcess = new System.Diagnostics.Process(); + string processFilename; + string processArguments; + int kExitCodeCommandNotFound; + + if (Application.platform == RuntimePlatform.WindowsEditor || + Application.platform == RuntimePlatform.WindowsPlayer) + { + processFilename = "CMD.exe"; + processArguments = @"/k " + adbCommand + " & exit"; + + // See "Common Error Lookup Tool" (https://www.microsoft.com/en-us/download/details.aspx?id=985) + // MSG_DIR_BAD_COMMAND_OR_FILE (cmdmsg.h) + kExitCodeCommandNotFound = 9009; // 0x2331 + } + else + { // Unix + processFilename = "bash"; + processArguments = string.Format("-l -c \"{0}\"", adbCommand); + + // "command not found" (see http://tldp.org/LDP/abs/html/exitcodes.html) + kExitCodeCommandNotFound = 127; + } + + System.Diagnostics.ProcessStartInfo myProcessStartInfo = + new System.Diagnostics.ProcessStartInfo(processFilename, processArguments); + myProcessStartInfo.UseShellExecute = false; + myProcessStartInfo.RedirectStandardError = true; + myProcessStartInfo.CreateNoWindow = true; + myProcess.StartInfo = myProcessStartInfo; + myProcess.Start(); + myProcess.WaitForExit(); + + // Also wait for HasExited here, to avoid ExitCode access below occasionally throwing InvalidOperationException + while (!myProcess.HasExited) + { + Thread.Sleep(1); + } + + int exitCode = myProcess.ExitCode; + string standardError = myProcess.StandardError.ReadToEnd(); + myProcess.Close(); + + if (exitCode == 0) + { + // Port forwarding setup successfully. + return; + } + + if (exitCode == kExitCodeCommandNotFound) + { + // Caught by phoneEventSocketLoop. + throw new Exception( + "Android Debug Bridge (`adb`) command not found." + + "\nVerify that the Android SDK is installed and that the directory containing" + + " `adb` is included in your PATH environment variable."); + } + + // Caught by phoneEventSocketLoop. + throw new Exception( + string.Format( + "Failed to setup port forwarding." + + " Exit code {0} returned by process: {1} {2}\n{3}", + exitCode, processFilename, processArguments, standardError)); +#endif // !UNITY_WEBPLAYER + } + + private void ProcessConnection(TcpClient tcpClient) + { + byte[] buffer = new byte[4]; + NetworkStream stream = tcpClient.GetStream(); + stream.ReadTimeout = kSocketReadTimeoutMillis; + tcpClient.ReceiveTimeout = kSocketReadTimeoutMillis; + while (!shouldStop) + { + int bytesRead = blockingRead(stream, buffer, 0, 4); + if (bytesRead < 4) + { + // Caught by phoneEventSocketLoop. + throw new Exception( + "Failed to read from controller emulator app event socket." + + "\nVerify that the controller emulator app is running."); + } + + int msgLen = unpack32bits(correctEndianness(buffer), 0); + + byte[] dataBuffer = new byte[msgLen]; + bytesRead = blockingRead(stream, dataBuffer, 0, msgLen); + if (bytesRead < msgLen) + { + // Caught by phoneEventSocketLoop. + throw new Exception( + "Failed to read from controller emulator app event socket." + + "\nVerify that the controller emulator app is running."); + } + + PhoneEvent proto = + PhoneEvent.CreateBuilder().MergeFrom(dataBuffer).Build(); + phoneRemote.OnPhoneEvent(proto); + + connected = EmulatorClientSocketConnectionState.Connected; + + if (!lastConnectionAttemptWasSuccessful) + { + Debug.Log("Successfully connected to controller emulator app."); + + // Log first failure after after successful read from event socket. + lastConnectionAttemptWasSuccessful = true; + } + } + } + + private int blockingRead(NetworkStream stream, byte[] buffer, int index, + int count) + { + int bytesRead = 0; + while (!shouldStop && bytesRead < count) + { + try + { + int n = stream.Read(buffer, index + bytesRead, count - bytesRead); + if (n <= 0) + { + // Failed to read. + return -1; + } + + bytesRead += n; + } + catch (IOException) + { + // Read failed or timed out. + return -1; + } + catch (ObjectDisposedException) + { + // Socket closed. + return -1; + } + } + + return bytesRead; + } + + void OnDestroy() + { + shouldStop = true; + + if (phoneMirroringSocket != null) + { + phoneMirroringSocket.Close(); + phoneMirroringSocket = null; + } + + if (phoneEventThread != null) + { + phoneEventThread.Join(); + } + } + + private int unpack32bits(byte[] array, int offset) + { + int num = 0; + for (int i = 0; i < 4; i++) + { + num += array[offset + i] << (i * 8); + } + + return num; + } + + static private byte[] correctEndianness(byte[] array) + { + if (BitConverter.IsLittleEndian) + { + Array.Reverse(array); + } + + return array; + } + } +} + +/// @endcond +#endif // UNITY_EDITOR diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorClientSocket.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorClientSocket.cs.meta new file mode 100644 index 0000000..d2b5387 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorClientSocket.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6bf1f92fb4ae24291b71e77c1ccac323 +timeCreated: 1462051657 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorConfig.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorConfig.cs new file mode 100644 index 0000000..a9786c7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorConfig.cs @@ -0,0 +1,78 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// @cond +namespace Gvr.Internal +{ + class EmulatorConfig : MonoBehaviour + { + public static EmulatorConfig Instance + { + get + { + if (instance == null) + { + EmulatorConfig[] configs = (EmulatorConfig[])FindObjectsOfType(typeof(EmulatorConfig)); + if (configs.Length == 1) + { + instance = configs[0]; + } + else if (configs.Length > 1) + { + Debug.LogError( + "Multiple PhoneRemote/Config objects in scene. Ignoring all."); + } + } + + if (instance == null) + { + var gameObject = new GameObject("PhoneRemoteConfig"); + instance = gameObject.AddComponent(); + DontDestroyOnLoad(instance); + } + + return instance; + } + } + + private static EmulatorConfig instance = null; + + public enum Mode + { + OFF, + USB, + WIFI, + } + + // Set this value to match how the PC is connected to the phone that is + // streaming gyro, accel, and touch events. Set to OFF if using Wifi instead. + public Mode PHONE_EVENT_MODE = Mode.OFF; + + /*----- Internal Parameters (should not require any changes). -----*/ + + // IP address of the phone, when connected to the PC via USB. + public static readonly string USB_SERVER_IP = "127.0.0.1"; + + // IP address of the phone, when connected to the PC via WiFi. + public static readonly string WIFI_SERVER_IP = "192.168.43.1"; + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorConfig.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorConfig.cs.meta new file mode 100644 index 0000000..4b42fd7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorConfig.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a229fefd8ee7448b0b700f6000ebdec3 +timeCreated: 1462051657 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorDataTypes.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorDataTypes.cs new file mode 100644 index 0000000..1889b17 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorDataTypes.cs @@ -0,0 +1,235 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +using proto; + +/// @cond +namespace Gvr.Internal +{ + struct EmulatorGyroEvent + { + public readonly long timestamp; + public readonly Vector3 value; + + public EmulatorGyroEvent(PhoneEvent.Types.GyroscopeEvent proto) + { + timestamp = proto.Timestamp; + value = new Vector3(proto.X, proto.Y, proto.Z); + } + } + + struct EmulatorAccelEvent + { + public readonly long timestamp; + public readonly Vector3 value; + + public EmulatorAccelEvent(PhoneEvent.Types.AccelerometerEvent proto) + { + timestamp = proto.Timestamp; + value = new Vector3(proto.X, proto.Y, proto.Z); + } + } + + struct EmulatorTouchEvent + { + // Action constants. These should match the constants in the Android + // MotionEvent: + // http://developer.android.com/reference/android/view/MotionEvent.html#ACTION_CANCEL + public enum Action + { + kActionDown = 0, + kActionUp = 1, + kActionMove = 2, + kActionCancel = 3, + kActionPointerDown = 5, + kActionPointerUp = 6, + kActionHoverMove = 7, + kActionHoverEnter = 9, + kActionHoverExit = 10 + } + + // Use getActionMasked() and getActionPointer() instead. + private readonly int action; + public readonly int relativeTimestamp; + public readonly List pointers; + + public struct Pointer + { + public readonly int fingerId; + public readonly float normalizedX; + public readonly float normalizedY; + + public Pointer(int fingerId, float normalizedX, float normalizedY) + { + this.fingerId = fingerId; + this.normalizedX = normalizedX; + this.normalizedY = normalizedY; + } + + public override string ToString() + { + return string.Format("({0}, {1}, {2})", fingerId, normalizedX, + normalizedY); + } + } + + public EmulatorTouchEvent(PhoneEvent.Types.MotionEvent proto, long lastDownTimeMs) + { + action = proto.Action; + relativeTimestamp = + (Action)(proto.Action & ACTION_MASK) == Action.kActionDown ? + 0 : (int)(proto.Timestamp - lastDownTimeMs); + pointers = new List(); + foreach (PhoneEvent.Types.MotionEvent.Types.Pointer pointer in + proto.PointersList) + { + pointers.Add( + new Pointer(pointer.Id, pointer.NormalizedX, pointer.NormalizedY)); + } + } + + public EmulatorTouchEvent(Action action, int pointerId, int relativeTimestamp, + List pointers) + { + int fingerIndex = 0; + if (action == Action.kActionPointerDown + || action == Action.kActionPointerUp) + { + fingerIndex = findPointerIndex(pointerId, pointers); + if (fingerIndex == -1) + { + Debug.LogWarning("Could not find specific fingerId " + pointerId + + " in the supplied list of pointers."); + fingerIndex = 0; + } + } + + this.action = getActionUnmasked(action, fingerIndex); + this.relativeTimestamp = relativeTimestamp; + this.pointers = pointers; + } + + // See Android's getActionMasked() and getActionIndex(). + private static readonly int ACTION_POINTER_INDEX_SHIFT = 8; + private static readonly int ACTION_POINTER_INDEX_MASK = 0xff00; + private static readonly int ACTION_MASK = 0xff; + + public Action getActionMasked() + { + return (Action)(action & ACTION_MASK); + } + + public Pointer getActionPointer() + { + int index = + (action & ACTION_POINTER_INDEX_MASK) >> ACTION_POINTER_INDEX_SHIFT; + return pointers[index]; + } + + private static int getActionUnmasked(Action action, int fingerIndex) + { + return ((int)action) | (fingerIndex << ACTION_POINTER_INDEX_SHIFT); + } + + private static int findPointerIndex(int fingerId, List pointers) + { + // Encode the fingerId info into the action, as Android does. See Android's + // getActionMasked() and getActionIndex(). + int fingerIndex = -1; + for (int i = 0; i < pointers.Count; i++) + { + if (fingerId == pointers[i].fingerId) + { + fingerIndex = i; + break; + } + } + + return fingerIndex; + } + + public override string ToString() + { + System.Text.StringBuilder builder = new System.Text.StringBuilder(); + builder.AppendFormat("t = {0}; A = {1}; P = {2}; N = {3}; [", + relativeTimestamp, getActionMasked(), getActionPointer().fingerId, + pointers.Count); + for (int i = 0; i < pointers.Count; i++) + { + builder.Append(pointers[i]).Append(", "); + } + + builder.Append("]"); + return builder.ToString(); + } + } + + struct EmulatorOrientationEvent + { + public readonly long timestamp; + public readonly Quaternion orientation; + + public EmulatorOrientationEvent(PhoneEvent.Types.OrientationEvent proto) + { + timestamp = proto.Timestamp; + + // Convert from right-handed coordinates to left-handed. + orientation = new Quaternion(proto.X, proto.Y, -proto.Z, proto.W); + } + } + + struct EmulatorButtonEvent + { + // Codes as reported by the IC app (reuses Android KeyEvent codes). + public enum ButtonCode + { + kNone = 0, + + // android.view.KeyEvent.KEYCODE_HOME + kHome = 3, + + // android.view.KeyEvent.KEYCODE_VOLUME_UP + kVolumeUp = 25, + + // android.view.KeyEvent.KEYCODE_VOLUME_DOWN + kVolumeDown = 24, + + // android.view.KeyEvent.KEYCODE_ENTER + kClick = 66, + + // android.view.KeyEvent.KEYCODE_MENU + kApp = 82, + } + + public readonly ButtonCode code; + public readonly bool down; + + public EmulatorButtonEvent(PhoneEvent.Types.KeyEvent proto) + { + code = (ButtonCode)proto.Code; + down = proto.Action == 0; + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorDataTypes.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorDataTypes.cs.meta new file mode 100644 index 0000000..175d304 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorDataTypes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 76d2b695633884daf905c07095c8a01c +timeCreated: 1462051657 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorManager.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorManager.cs new file mode 100644 index 0000000..0e27cc4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorManager.cs @@ -0,0 +1,321 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// This class is only used in the Editor, so make sure to only compile it on that platform. +// Additionally, it depends on EmulatorClientSocket which is only compiled in the editor. +// This MonoBehaviour is only ever instantiated dynamically, so it is fine that it is only compiled in the Editor, +// Otherwise it would cause serialization issues. +#if UNITY_EDITOR + +using System.Collections; +using UnityEngine; + +using proto; + +/// @cond +namespace Gvr.Internal +{ + class EmulatorManager : MonoBehaviour + { + private IEnumerator emulatorUpdate; + private WaitForEndOfFrame waitForEndOfFrame = new WaitForEndOfFrame(); + + public static EmulatorManager Instance + { + get + { + if (instance == null) + { + var gameObject = new GameObject("PhoneRemote"); + instance = gameObject.AddComponent(); + + // This object should survive all scene transitions. + GameObject.DontDestroyOnLoad(instance); + } + + return instance; + } + } + + private static EmulatorManager instance = null; + + public delegate void OnGyroEvent(EmulatorGyroEvent gyroEvent); + + public event OnGyroEvent gyroEventListeners + { + add + { + if (value != null) + { + value(currentGyroEvent); + } + + gyroEventListenersInternal += value; + } + + remove + { + gyroEventListenersInternal -= value; + } + } + + public delegate void OnAccelEvent(EmulatorAccelEvent accelEvent); + + public event OnAccelEvent accelEventListeners + { + add + { + if (value != null) + { + value(currentAccelEvent); + } + + accelEventListenersInternal += value; + } + + remove + { + accelEventListenersInternal -= value; + } + } + + public delegate void OnTouchEvent(EmulatorTouchEvent touchEvent); + + public event OnTouchEvent touchEventListeners + { + add + { + if (value != null && currentTouchEvent.pointers != null /* null only during init */) + { + value(currentTouchEvent); + } + + touchEventListenersInternal += value; + } + + remove + { + touchEventListenersInternal -= value; + } + } + + public delegate void OnOrientationEvent(EmulatorOrientationEvent orientationEvent); + + public event OnOrientationEvent orientationEventListeners + { + add + { + if (value != null) + { + value(currentOrientationEvent); + } + + orientationEventListenersInternal += value; + } + + remove + { + orientationEventListenersInternal -= value; + } + } + + public delegate void OnButtonEvent(EmulatorButtonEvent buttonEvent); + + public event OnButtonEvent buttonEventListeners + { + add + { + if (value != null) + { + value(currentButtonEvent); + } + + buttonEventListenersInternal += value; + } + + remove + { + buttonEventListenersInternal -= value; + } + } + + private void onGyroEvent(EmulatorGyroEvent e) + { + currentGyroEvent = e; + if (gyroEventListenersInternal != null) + { + gyroEventListenersInternal(e); + } + } + + private void onAccelEvent(EmulatorAccelEvent e) + { + currentAccelEvent = e; + if (accelEventListenersInternal != null) + { + accelEventListenersInternal(e); + } + } + + private void onTouchEvent(EmulatorTouchEvent e) + { + currentTouchEvent = e; + if (touchEventListenersInternal != null) + { + touchEventListenersInternal(e); + } + } + + private void onOrientationEvent(EmulatorOrientationEvent e) + { + currentOrientationEvent = e; + if (orientationEventListenersInternal != null) + { + orientationEventListenersInternal(e); + } + } + + private void onButtonEvent(EmulatorButtonEvent e) + { + currentButtonEvent = e; + if (buttonEventListenersInternal != null) + { + buttonEventListenersInternal(e); + } + } + + EmulatorGyroEvent currentGyroEvent; + EmulatorAccelEvent currentAccelEvent; + EmulatorTouchEvent currentTouchEvent; + EmulatorOrientationEvent currentOrientationEvent; + EmulatorButtonEvent currentButtonEvent; + + private event OnGyroEvent gyroEventListenersInternal; + + private event OnAccelEvent accelEventListenersInternal; + + private event OnTouchEvent touchEventListenersInternal; + + private event OnOrientationEvent orientationEventListenersInternal; + + private event OnButtonEvent buttonEventListenersInternal; + + private Queue pendingEvents = Queue.Synchronized(new Queue()); + private EmulatorClientSocket socket; + private long lastDownTimeMs; + + public bool Connected + { + get + { + return socket != null && socket.connected == EmulatorClientSocketConnectionState.Connected; + } + } + + public bool Connecting + { + get + { + return socket != null && socket.connected == EmulatorClientSocketConnectionState.Connecting; + } + } + + public void Awake() + { + if (instance == null) + { + instance = this; + } + + if (instance != this) + { + Debug.LogWarning("PhoneRemote must be a singleton."); + enabled = false; + return; + } + } + + public void Start() + { + socket = gameObject.AddComponent(); + socket.Init(this); + emulatorUpdate = EndOfFrame(); + StartCoroutine(emulatorUpdate); + } + + IEnumerator EndOfFrame() + { + while (true) + { + yield return waitForEndOfFrame; + lock (pendingEvents.SyncRoot) + { + while (pendingEvents.Count > 0) + { + PhoneEvent phoneEvent = (PhoneEvent)pendingEvents.Dequeue(); + ProcessEventAtEndOfFrame(phoneEvent); + } + } + } + } + + public void OnPhoneEvent(PhoneEvent e) + { + pendingEvents.Enqueue(e); + } + + private void ProcessEventAtEndOfFrame(PhoneEvent e) + { + switch (e.Type) + { + case PhoneEvent.Types.Type.MOTION: + EmulatorTouchEvent touchEvent = new EmulatorTouchEvent(e.MotionEvent, lastDownTimeMs); + onTouchEvent(touchEvent); + if (touchEvent.getActionMasked() == EmulatorTouchEvent.Action.kActionDown) + { + lastDownTimeMs = e.MotionEvent.Timestamp; + } + + break; + case PhoneEvent.Types.Type.GYROSCOPE: + EmulatorGyroEvent gyroEvent = new EmulatorGyroEvent(e.GyroscopeEvent); + onGyroEvent(gyroEvent); + break; + case PhoneEvent.Types.Type.ACCELEROMETER: + EmulatorAccelEvent accelEvent = new EmulatorAccelEvent(e.AccelerometerEvent); + onAccelEvent(accelEvent); + break; + case PhoneEvent.Types.Type.ORIENTATION: + EmulatorOrientationEvent orientationEvent = + new EmulatorOrientationEvent(e.OrientationEvent); + onOrientationEvent(orientationEvent); + break; + case PhoneEvent.Types.Type.KEY: + EmulatorButtonEvent buttonEvent = new EmulatorButtonEvent(e.KeyEvent); + onButtonEvent(buttonEvent); + break; + default: + Debug.Log("Unsupported PhoneEvent type: " + e.Type); + break; + } + } + } +} + +/// @endcond +#endif // UNITY_EDITOR diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorManager.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorManager.cs.meta new file mode 100644 index 0000000..0cb58af --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/EmulatorManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c42ca6bb02b364893b127c681c158442 +timeCreated: 1462051658 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated.meta new file mode 100644 index 0000000..55b607b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 72418c396781cdb4995acd1da881ae0e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated/PhoneEvent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated/PhoneEvent.cs new file mode 100644 index 0000000..5e693f9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated/PhoneEvent.cs @@ -0,0 +1,3506 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +// Generated by ProtoGen, Version=2.4.1.473, Culture=neutral, PublicKeyToken=55f7125234beb589. DO NOT EDIT! +#pragma warning disable 1591, 0612 +#region Designer generated code + +using pb = global::Google.ProtocolBuffers; +using pbc = global::Google.ProtocolBuffers.Collections; +using pbd = global::Google.ProtocolBuffers.Descriptors; +using scg = global::System.Collections.Generic; + +/// @cond +namespace proto { + + namespace Proto { + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public static partial class PhoneEvent { + + #region Extension registration + public static void RegisterAllExtensions(pb::ExtensionRegistry registry) { + } + #endregion + #region Static variables + #endregion + #region Extensions + internal static readonly object Descriptor; + static PhoneEvent() { + Descriptor = null; + } + #endregion + + } + } + #region Messages + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class PhoneEvent : pb::GeneratedMessageLite { + private PhoneEvent() { } + private static readonly PhoneEvent defaultInstance = new PhoneEvent().MakeReadOnly(); + private static readonly string[] _phoneEventFieldNames = new string[] { "accelerometer_event", "depth_map_event", "gyroscope_event", "key_event", "motion_event", "orientation_event", "type" }; + private static readonly uint[] _phoneEventFieldTags = new uint[] { 34, 42, 26, 58, 18, 50, 8 }; + public static PhoneEvent DefaultInstance { + get { return defaultInstance; } + } + + public override PhoneEvent DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override PhoneEvent ThisMessage { + get { return this; } + } + + #region Nested types + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public static class Types { + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public enum Type { + MOTION = 1, + GYROSCOPE = 2, + ACCELEROMETER = 3, + DEPTH_MAP = 4, + ORIENTATION = 5, + KEY = 6, + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class MotionEvent : pb::GeneratedMessageLite { + private MotionEvent() { } + private static readonly MotionEvent defaultInstance = new MotionEvent().MakeReadOnly(); + private static readonly string[] _motionEventFieldNames = new string[] { "action", "pointers", "timestamp" }; + private static readonly uint[] _motionEventFieldTags = new uint[] { 16, 26, 8 }; + public static MotionEvent DefaultInstance { + get { return defaultInstance; } + } + + public override MotionEvent DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override MotionEvent ThisMessage { + get { return this; } + } + + #region Nested types + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public static class Types { + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Pointer : pb::GeneratedMessageLite { + private Pointer() { } + private static readonly Pointer defaultInstance = new Pointer().MakeReadOnly(); + private static readonly string[] _pointerFieldNames = new string[] { "id", "normalized_x", "normalized_y" }; + private static readonly uint[] _pointerFieldTags = new uint[] { 8, 21, 29 }; + public static Pointer DefaultInstance { + get { return defaultInstance; } + } + + public override Pointer DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override Pointer ThisMessage { + get { return this; } + } + + public const int IdFieldNumber = 1; + private bool hasId; + private int id_; + public bool HasId { + get { return hasId; } + } + public int Id { + get { return id_; } + } + + public const int NormalizedXFieldNumber = 2; + private bool hasNormalizedX; + private float normalizedX_; + public bool HasNormalizedX { + get { return hasNormalizedX; } + } + public float NormalizedX { + get { return normalizedX_; } + } + + public const int NormalizedYFieldNumber = 3; + private bool hasNormalizedY; + private float normalizedY_; + public bool HasNormalizedY { + get { return hasNormalizedY; } + } + public float NormalizedY { + get { return normalizedY_; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _pointerFieldNames; + if (hasId) { + output.WriteInt32(1, field_names[0], Id); + } + if (hasNormalizedX) { + output.WriteFloat(2, field_names[1], NormalizedX); + } + if (hasNormalizedY) { + output.WriteFloat(3, field_names[2], NormalizedY); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasId) { + size += pb::CodedOutputStream.ComputeInt32Size(1, Id); + } + if (hasNormalizedX) { + size += pb::CodedOutputStream.ComputeFloatSize(2, NormalizedX); + } + if (hasNormalizedY) { + size += pb::CodedOutputStream.ComputeFloatSize(3, NormalizedY); + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasId) hash ^= id_.GetHashCode(); + if (hasNormalizedX) hash ^= normalizedX_.GetHashCode(); + if (hasNormalizedY) hash ^= normalizedY_.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + Pointer other = obj as Pointer; + if (other == null) return false; + if (hasId != other.hasId || (hasId && !id_.Equals(other.id_))) return false; + if (hasNormalizedX != other.hasNormalizedX || (hasNormalizedX && !normalizedX_.Equals(other.normalizedX_))) return false; + if (hasNormalizedY != other.hasNormalizedY || (hasNormalizedY && !normalizedY_.Equals(other.normalizedY_))) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("id", hasId, id_, writer); + PrintField("normalized_x", hasNormalizedX, normalizedX_, writer); + PrintField("normalized_y", hasNormalizedY, normalizedY_, writer); + } + #endregion + + public static Pointer ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static Pointer ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static Pointer ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static Pointer ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static Pointer ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static Pointer ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static Pointer ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static Pointer ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static Pointer ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static Pointer ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private Pointer MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(Pointer prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(Pointer cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private Pointer result; + + private Pointer PrepareBuilder() { + if (resultIsReadOnly) { + Pointer original = result; + result = new Pointer(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override Pointer MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override Pointer DefaultInstanceForType { + get { return global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer.DefaultInstance; } + } + + public override Pointer BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is Pointer) { + return MergeFrom((Pointer) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(Pointer other) { + if (other == global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasId) { + Id = other.Id; + } + if (other.HasNormalizedX) { + NormalizedX = other.NormalizedX; + } + if (other.HasNormalizedY) { + NormalizedY = other.NormalizedY; + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_pointerFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _pointerFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasId = input.ReadInt32(ref result.id_); + break; + } + case 21: { + result.hasNormalizedX = input.ReadFloat(ref result.normalizedX_); + break; + } + case 29: { + result.hasNormalizedY = input.ReadFloat(ref result.normalizedY_); + break; + } + } + } + + return this; + } + + + public bool HasId { + get { return result.hasId; } + } + public int Id { + get { return result.Id; } + set { SetId(value); } + } + public Builder SetId(int value) { + PrepareBuilder(); + result.hasId = true; + result.id_ = value; + return this; + } + public Builder ClearId() { + PrepareBuilder(); + result.hasId = false; + result.id_ = 0; + return this; + } + + public bool HasNormalizedX { + get { return result.hasNormalizedX; } + } + public float NormalizedX { + get { return result.NormalizedX; } + set { SetNormalizedX(value); } + } + public Builder SetNormalizedX(float value) { + PrepareBuilder(); + result.hasNormalizedX = true; + result.normalizedX_ = value; + return this; + } + public Builder ClearNormalizedX() { + PrepareBuilder(); + result.hasNormalizedX = false; + result.normalizedX_ = 0F; + return this; + } + + public bool HasNormalizedY { + get { return result.hasNormalizedY; } + } + public float NormalizedY { + get { return result.NormalizedY; } + set { SetNormalizedY(value); } + } + public Builder SetNormalizedY(float value) { + PrepareBuilder(); + result.hasNormalizedY = true; + result.normalizedY_ = value; + return this; + } + public Builder ClearNormalizedY() { + PrepareBuilder(); + result.hasNormalizedY = false; + result.normalizedY_ = 0F; + return this; + } + } + static Pointer() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + } + #endregion + + public const int TimestampFieldNumber = 1; + private bool hasTimestamp; + private long timestamp_; + public bool HasTimestamp { + get { return hasTimestamp; } + } + public long Timestamp { + get { return timestamp_; } + } + + public const int ActionFieldNumber = 2; + private bool hasAction; + private int action_; + public bool HasAction { + get { return hasAction; } + } + public int Action { + get { return action_; } + } + + public const int PointersFieldNumber = 3; + private pbc::PopsicleList pointers_ = new pbc::PopsicleList(); + public scg::IList PointersList { + get { return pointers_; } + } + public int PointersCount { + get { return pointers_.Count; } + } + public global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer GetPointers(int index) { + return pointers_[index]; + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _motionEventFieldNames; + if (hasTimestamp) { + output.WriteInt64(1, field_names[2], Timestamp); + } + if (hasAction) { + output.WriteInt32(2, field_names[0], Action); + } + if (pointers_.Count > 0) { + output.WriteMessageArray(3, field_names[1], pointers_); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasTimestamp) { + size += pb::CodedOutputStream.ComputeInt64Size(1, Timestamp); + } + if (hasAction) { + size += pb::CodedOutputStream.ComputeInt32Size(2, Action); + } + foreach (global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer element in PointersList) { + size += pb::CodedOutputStream.ComputeMessageSize(3, element); + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasTimestamp) hash ^= timestamp_.GetHashCode(); + if (hasAction) hash ^= action_.GetHashCode(); + foreach(global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer i in pointers_) + hash ^= i.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + MotionEvent other = obj as MotionEvent; + if (other == null) return false; + if (hasTimestamp != other.hasTimestamp || (hasTimestamp && !timestamp_.Equals(other.timestamp_))) return false; + if (hasAction != other.hasAction || (hasAction && !action_.Equals(other.action_))) return false; + if(pointers_.Count != other.pointers_.Count) return false; + for(int ix=0; ix < pointers_.Count; ix++) + if(!pointers_[ix].Equals(other.pointers_[ix])) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("timestamp", hasTimestamp, timestamp_, writer); + PrintField("action", hasAction, action_, writer); + PrintField("pointers", pointers_, writer); + } + #endregion + + public static MotionEvent ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static MotionEvent ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static MotionEvent ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static MotionEvent ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static MotionEvent ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static MotionEvent ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static MotionEvent ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static MotionEvent ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static MotionEvent ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static MotionEvent ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private MotionEvent MakeReadOnly() { + pointers_.MakeReadOnly(); + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(MotionEvent prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(MotionEvent cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private MotionEvent result; + + private MotionEvent PrepareBuilder() { + if (resultIsReadOnly) { + MotionEvent original = result; + result = new MotionEvent(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override MotionEvent MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override MotionEvent DefaultInstanceForType { + get { return global::proto.PhoneEvent.Types.MotionEvent.DefaultInstance; } + } + + public override MotionEvent BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is MotionEvent) { + return MergeFrom((MotionEvent) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(MotionEvent other) { + if (other == global::proto.PhoneEvent.Types.MotionEvent.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasTimestamp) { + Timestamp = other.Timestamp; + } + if (other.HasAction) { + Action = other.Action; + } + if (other.pointers_.Count != 0) { + result.pointers_.Add(other.pointers_); + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_motionEventFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _motionEventFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasTimestamp = input.ReadInt64(ref result.timestamp_); + break; + } + case 16: { + result.hasAction = input.ReadInt32(ref result.action_); + break; + } + case 26: { + input.ReadMessageArray(tag, field_name, result.pointers_, global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer.DefaultInstance, extensionRegistry); + break; + } + } + } + + return this; + } + + + public bool HasTimestamp { + get { return result.hasTimestamp; } + } + public long Timestamp { + get { return result.Timestamp; } + set { SetTimestamp(value); } + } + public Builder SetTimestamp(long value) { + PrepareBuilder(); + result.hasTimestamp = true; + result.timestamp_ = value; + return this; + } + public Builder ClearTimestamp() { + PrepareBuilder(); + result.hasTimestamp = false; + result.timestamp_ = 0L; + return this; + } + + public bool HasAction { + get { return result.hasAction; } + } + public int Action { + get { return result.Action; } + set { SetAction(value); } + } + public Builder SetAction(int value) { + PrepareBuilder(); + result.hasAction = true; + result.action_ = value; + return this; + } + public Builder ClearAction() { + PrepareBuilder(); + result.hasAction = false; + result.action_ = 0; + return this; + } + + public pbc::IPopsicleList PointersList { + get { return PrepareBuilder().pointers_; } + } + public int PointersCount { + get { return result.PointersCount; } + } + public global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer GetPointers(int index) { + return result.GetPointers(index); + } + public Builder SetPointers(int index, global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.pointers_[index] = value; + return this; + } + public Builder SetPointers(int index, global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.pointers_[index] = builderForValue.Build(); + return this; + } + public Builder AddPointers(global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.pointers_.Add(value); + return this; + } + public Builder AddPointers(global::proto.PhoneEvent.Types.MotionEvent.Types.Pointer.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.pointers_.Add(builderForValue.Build()); + return this; + } + public Builder AddRangePointers(scg::IEnumerable values) { + PrepareBuilder(); + result.pointers_.Add(values); + return this; + } + public Builder ClearPointers() { + PrepareBuilder(); + result.pointers_.Clear(); + return this; + } + } + static MotionEvent() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class GyroscopeEvent : pb::GeneratedMessageLite { + private GyroscopeEvent() { } + private static readonly GyroscopeEvent defaultInstance = new GyroscopeEvent().MakeReadOnly(); + private static readonly string[] _gyroscopeEventFieldNames = new string[] { "timestamp", "x", "y", "z" }; + private static readonly uint[] _gyroscopeEventFieldTags = new uint[] { 8, 21, 29, 37 }; + public static GyroscopeEvent DefaultInstance { + get { return defaultInstance; } + } + + public override GyroscopeEvent DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override GyroscopeEvent ThisMessage { + get { return this; } + } + + public const int TimestampFieldNumber = 1; + private bool hasTimestamp; + private long timestamp_; + public bool HasTimestamp { + get { return hasTimestamp; } + } + public long Timestamp { + get { return timestamp_; } + } + + public const int XFieldNumber = 2; + private bool hasX; + private float x_; + public bool HasX { + get { return hasX; } + } + public float X { + get { return x_; } + } + + public const int YFieldNumber = 3; + private bool hasY; + private float y_; + public bool HasY { + get { return hasY; } + } + public float Y { + get { return y_; } + } + + public const int ZFieldNumber = 4; + private bool hasZ; + private float z_; + public bool HasZ { + get { return hasZ; } + } + public float Z { + get { return z_; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _gyroscopeEventFieldNames; + if (hasTimestamp) { + output.WriteInt64(1, field_names[0], Timestamp); + } + if (hasX) { + output.WriteFloat(2, field_names[1], X); + } + if (hasY) { + output.WriteFloat(3, field_names[2], Y); + } + if (hasZ) { + output.WriteFloat(4, field_names[3], Z); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasTimestamp) { + size += pb::CodedOutputStream.ComputeInt64Size(1, Timestamp); + } + if (hasX) { + size += pb::CodedOutputStream.ComputeFloatSize(2, X); + } + if (hasY) { + size += pb::CodedOutputStream.ComputeFloatSize(3, Y); + } + if (hasZ) { + size += pb::CodedOutputStream.ComputeFloatSize(4, Z); + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasTimestamp) hash ^= timestamp_.GetHashCode(); + if (hasX) hash ^= x_.GetHashCode(); + if (hasY) hash ^= y_.GetHashCode(); + if (hasZ) hash ^= z_.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + GyroscopeEvent other = obj as GyroscopeEvent; + if (other == null) return false; + if (hasTimestamp != other.hasTimestamp || (hasTimestamp && !timestamp_.Equals(other.timestamp_))) return false; + if (hasX != other.hasX || (hasX && !x_.Equals(other.x_))) return false; + if (hasY != other.hasY || (hasY && !y_.Equals(other.y_))) return false; + if (hasZ != other.hasZ || (hasZ && !z_.Equals(other.z_))) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("timestamp", hasTimestamp, timestamp_, writer); + PrintField("x", hasX, x_, writer); + PrintField("y", hasY, y_, writer); + PrintField("z", hasZ, z_, writer); + } + #endregion + + public static GyroscopeEvent ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static GyroscopeEvent ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static GyroscopeEvent ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static GyroscopeEvent ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static GyroscopeEvent ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static GyroscopeEvent ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static GyroscopeEvent ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static GyroscopeEvent ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static GyroscopeEvent ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static GyroscopeEvent ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private GyroscopeEvent MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(GyroscopeEvent prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(GyroscopeEvent cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private GyroscopeEvent result; + + private GyroscopeEvent PrepareBuilder() { + if (resultIsReadOnly) { + GyroscopeEvent original = result; + result = new GyroscopeEvent(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override GyroscopeEvent MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override GyroscopeEvent DefaultInstanceForType { + get { return global::proto.PhoneEvent.Types.GyroscopeEvent.DefaultInstance; } + } + + public override GyroscopeEvent BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is GyroscopeEvent) { + return MergeFrom((GyroscopeEvent) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(GyroscopeEvent other) { + if (other == global::proto.PhoneEvent.Types.GyroscopeEvent.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasTimestamp) { + Timestamp = other.Timestamp; + } + if (other.HasX) { + X = other.X; + } + if (other.HasY) { + Y = other.Y; + } + if (other.HasZ) { + Z = other.Z; + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_gyroscopeEventFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _gyroscopeEventFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasTimestamp = input.ReadInt64(ref result.timestamp_); + break; + } + case 21: { + result.hasX = input.ReadFloat(ref result.x_); + break; + } + case 29: { + result.hasY = input.ReadFloat(ref result.y_); + break; + } + case 37: { + result.hasZ = input.ReadFloat(ref result.z_); + break; + } + } + } + + return this; + } + + + public bool HasTimestamp { + get { return result.hasTimestamp; } + } + public long Timestamp { + get { return result.Timestamp; } + set { SetTimestamp(value); } + } + public Builder SetTimestamp(long value) { + PrepareBuilder(); + result.hasTimestamp = true; + result.timestamp_ = value; + return this; + } + public Builder ClearTimestamp() { + PrepareBuilder(); + result.hasTimestamp = false; + result.timestamp_ = 0L; + return this; + } + + public bool HasX { + get { return result.hasX; } + } + public float X { + get { return result.X; } + set { SetX(value); } + } + public Builder SetX(float value) { + PrepareBuilder(); + result.hasX = true; + result.x_ = value; + return this; + } + public Builder ClearX() { + PrepareBuilder(); + result.hasX = false; + result.x_ = 0F; + return this; + } + + public bool HasY { + get { return result.hasY; } + } + public float Y { + get { return result.Y; } + set { SetY(value); } + } + public Builder SetY(float value) { + PrepareBuilder(); + result.hasY = true; + result.y_ = value; + return this; + } + public Builder ClearY() { + PrepareBuilder(); + result.hasY = false; + result.y_ = 0F; + return this; + } + + public bool HasZ { + get { return result.hasZ; } + } + public float Z { + get { return result.Z; } + set { SetZ(value); } + } + public Builder SetZ(float value) { + PrepareBuilder(); + result.hasZ = true; + result.z_ = value; + return this; + } + public Builder ClearZ() { + PrepareBuilder(); + result.hasZ = false; + result.z_ = 0F; + return this; + } + } + static GyroscopeEvent() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class AccelerometerEvent : pb::GeneratedMessageLite { + private AccelerometerEvent() { } + private static readonly AccelerometerEvent defaultInstance = new AccelerometerEvent().MakeReadOnly(); + private static readonly string[] _accelerometerEventFieldNames = new string[] { "timestamp", "x", "y", "z" }; + private static readonly uint[] _accelerometerEventFieldTags = new uint[] { 8, 21, 29, 37 }; + public static AccelerometerEvent DefaultInstance { + get { return defaultInstance; } + } + + public override AccelerometerEvent DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override AccelerometerEvent ThisMessage { + get { return this; } + } + + public const int TimestampFieldNumber = 1; + private bool hasTimestamp; + private long timestamp_; + public bool HasTimestamp { + get { return hasTimestamp; } + } + public long Timestamp { + get { return timestamp_; } + } + + public const int XFieldNumber = 2; + private bool hasX; + private float x_; + public bool HasX { + get { return hasX; } + } + public float X { + get { return x_; } + } + + public const int YFieldNumber = 3; + private bool hasY; + private float y_; + public bool HasY { + get { return hasY; } + } + public float Y { + get { return y_; } + } + + public const int ZFieldNumber = 4; + private bool hasZ; + private float z_; + public bool HasZ { + get { return hasZ; } + } + public float Z { + get { return z_; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _accelerometerEventFieldNames; + if (hasTimestamp) { + output.WriteInt64(1, field_names[0], Timestamp); + } + if (hasX) { + output.WriteFloat(2, field_names[1], X); + } + if (hasY) { + output.WriteFloat(3, field_names[2], Y); + } + if (hasZ) { + output.WriteFloat(4, field_names[3], Z); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasTimestamp) { + size += pb::CodedOutputStream.ComputeInt64Size(1, Timestamp); + } + if (hasX) { + size += pb::CodedOutputStream.ComputeFloatSize(2, X); + } + if (hasY) { + size += pb::CodedOutputStream.ComputeFloatSize(3, Y); + } + if (hasZ) { + size += pb::CodedOutputStream.ComputeFloatSize(4, Z); + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasTimestamp) hash ^= timestamp_.GetHashCode(); + if (hasX) hash ^= x_.GetHashCode(); + if (hasY) hash ^= y_.GetHashCode(); + if (hasZ) hash ^= z_.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + AccelerometerEvent other = obj as AccelerometerEvent; + if (other == null) return false; + if (hasTimestamp != other.hasTimestamp || (hasTimestamp && !timestamp_.Equals(other.timestamp_))) return false; + if (hasX != other.hasX || (hasX && !x_.Equals(other.x_))) return false; + if (hasY != other.hasY || (hasY && !y_.Equals(other.y_))) return false; + if (hasZ != other.hasZ || (hasZ && !z_.Equals(other.z_))) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("timestamp", hasTimestamp, timestamp_, writer); + PrintField("x", hasX, x_, writer); + PrintField("y", hasY, y_, writer); + PrintField("z", hasZ, z_, writer); + } + #endregion + + public static AccelerometerEvent ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static AccelerometerEvent ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static AccelerometerEvent ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static AccelerometerEvent ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static AccelerometerEvent ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static AccelerometerEvent ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static AccelerometerEvent ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static AccelerometerEvent ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static AccelerometerEvent ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static AccelerometerEvent ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private AccelerometerEvent MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(AccelerometerEvent prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(AccelerometerEvent cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private AccelerometerEvent result; + + private AccelerometerEvent PrepareBuilder() { + if (resultIsReadOnly) { + AccelerometerEvent original = result; + result = new AccelerometerEvent(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override AccelerometerEvent MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override AccelerometerEvent DefaultInstanceForType { + get { return global::proto.PhoneEvent.Types.AccelerometerEvent.DefaultInstance; } + } + + public override AccelerometerEvent BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is AccelerometerEvent) { + return MergeFrom((AccelerometerEvent) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(AccelerometerEvent other) { + if (other == global::proto.PhoneEvent.Types.AccelerometerEvent.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasTimestamp) { + Timestamp = other.Timestamp; + } + if (other.HasX) { + X = other.X; + } + if (other.HasY) { + Y = other.Y; + } + if (other.HasZ) { + Z = other.Z; + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_accelerometerEventFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _accelerometerEventFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasTimestamp = input.ReadInt64(ref result.timestamp_); + break; + } + case 21: { + result.hasX = input.ReadFloat(ref result.x_); + break; + } + case 29: { + result.hasY = input.ReadFloat(ref result.y_); + break; + } + case 37: { + result.hasZ = input.ReadFloat(ref result.z_); + break; + } + } + } + + return this; + } + + + public bool HasTimestamp { + get { return result.hasTimestamp; } + } + public long Timestamp { + get { return result.Timestamp; } + set { SetTimestamp(value); } + } + public Builder SetTimestamp(long value) { + PrepareBuilder(); + result.hasTimestamp = true; + result.timestamp_ = value; + return this; + } + public Builder ClearTimestamp() { + PrepareBuilder(); + result.hasTimestamp = false; + result.timestamp_ = 0L; + return this; + } + + public bool HasX { + get { return result.hasX; } + } + public float X { + get { return result.X; } + set { SetX(value); } + } + public Builder SetX(float value) { + PrepareBuilder(); + result.hasX = true; + result.x_ = value; + return this; + } + public Builder ClearX() { + PrepareBuilder(); + result.hasX = false; + result.x_ = 0F; + return this; + } + + public bool HasY { + get { return result.hasY; } + } + public float Y { + get { return result.Y; } + set { SetY(value); } + } + public Builder SetY(float value) { + PrepareBuilder(); + result.hasY = true; + result.y_ = value; + return this; + } + public Builder ClearY() { + PrepareBuilder(); + result.hasY = false; + result.y_ = 0F; + return this; + } + + public bool HasZ { + get { return result.hasZ; } + } + public float Z { + get { return result.Z; } + set { SetZ(value); } + } + public Builder SetZ(float value) { + PrepareBuilder(); + result.hasZ = true; + result.z_ = value; + return this; + } + public Builder ClearZ() { + PrepareBuilder(); + result.hasZ = false; + result.z_ = 0F; + return this; + } + } + static AccelerometerEvent() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class DepthMapEvent : pb::GeneratedMessageLite { + private DepthMapEvent() { } + private static readonly DepthMapEvent defaultInstance = new DepthMapEvent().MakeReadOnly(); + private static readonly string[] _depthMapEventFieldNames = new string[] { "height", "timestamp", "width", "z_distances" }; + private static readonly uint[] _depthMapEventFieldTags = new uint[] { 24, 8, 16, 34 }; + public static DepthMapEvent DefaultInstance { + get { return defaultInstance; } + } + + public override DepthMapEvent DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override DepthMapEvent ThisMessage { + get { return this; } + } + + public const int TimestampFieldNumber = 1; + private bool hasTimestamp; + private long timestamp_; + public bool HasTimestamp { + get { return hasTimestamp; } + } + public long Timestamp { + get { return timestamp_; } + } + + public const int WidthFieldNumber = 2; + private bool hasWidth; + private int width_; + public bool HasWidth { + get { return hasWidth; } + } + public int Width { + get { return width_; } + } + + public const int HeightFieldNumber = 3; + private bool hasHeight; + private int height_; + public bool HasHeight { + get { return hasHeight; } + } + public int Height { + get { return height_; } + } + + public const int ZDistancesFieldNumber = 4; + private int zDistancesMemoizedSerializedSize; + private pbc::PopsicleList zDistances_ = new pbc::PopsicleList(); + public scg::IList ZDistancesList { + get { return pbc::Lists.AsReadOnly(zDistances_); } + } + public int ZDistancesCount { + get { return zDistances_.Count; } + } + public float GetZDistances(int index) { + return zDistances_[index]; + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _depthMapEventFieldNames; + if (hasTimestamp) { + output.WriteInt64(1, field_names[1], Timestamp); + } + if (hasWidth) { + output.WriteInt32(2, field_names[2], Width); + } + if (hasHeight) { + output.WriteInt32(3, field_names[0], Height); + } + if (zDistances_.Count > 0) { + output.WritePackedFloatArray(4, field_names[3], zDistancesMemoizedSerializedSize, zDistances_); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasTimestamp) { + size += pb::CodedOutputStream.ComputeInt64Size(1, Timestamp); + } + if (hasWidth) { + size += pb::CodedOutputStream.ComputeInt32Size(2, Width); + } + if (hasHeight) { + size += pb::CodedOutputStream.ComputeInt32Size(3, Height); + } + { + int dataSize = 0; + dataSize = 4 * zDistances_.Count; + size += dataSize; + if (zDistances_.Count != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + zDistancesMemoizedSerializedSize = dataSize; + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasTimestamp) hash ^= timestamp_.GetHashCode(); + if (hasWidth) hash ^= width_.GetHashCode(); + if (hasHeight) hash ^= height_.GetHashCode(); + foreach(float i in zDistances_) + hash ^= i.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + DepthMapEvent other = obj as DepthMapEvent; + if (other == null) return false; + if (hasTimestamp != other.hasTimestamp || (hasTimestamp && !timestamp_.Equals(other.timestamp_))) return false; + if (hasWidth != other.hasWidth || (hasWidth && !width_.Equals(other.width_))) return false; + if (hasHeight != other.hasHeight || (hasHeight && !height_.Equals(other.height_))) return false; + if(zDistances_.Count != other.zDistances_.Count) return false; + for(int ix=0; ix < zDistances_.Count; ix++) + if(!zDistances_[ix].Equals(other.zDistances_[ix])) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("timestamp", hasTimestamp, timestamp_, writer); + PrintField("width", hasWidth, width_, writer); + PrintField("height", hasHeight, height_, writer); + PrintField("z_distances", zDistances_, writer); + } + #endregion + + public static DepthMapEvent ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static DepthMapEvent ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static DepthMapEvent ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static DepthMapEvent ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static DepthMapEvent ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static DepthMapEvent ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static DepthMapEvent ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static DepthMapEvent ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static DepthMapEvent ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static DepthMapEvent ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private DepthMapEvent MakeReadOnly() { + zDistances_.MakeReadOnly(); + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(DepthMapEvent prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(DepthMapEvent cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private DepthMapEvent result; + + private DepthMapEvent PrepareBuilder() { + if (resultIsReadOnly) { + DepthMapEvent original = result; + result = new DepthMapEvent(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override DepthMapEvent MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override DepthMapEvent DefaultInstanceForType { + get { return global::proto.PhoneEvent.Types.DepthMapEvent.DefaultInstance; } + } + + public override DepthMapEvent BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is DepthMapEvent) { + return MergeFrom((DepthMapEvent) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(DepthMapEvent other) { + if (other == global::proto.PhoneEvent.Types.DepthMapEvent.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasTimestamp) { + Timestamp = other.Timestamp; + } + if (other.HasWidth) { + Width = other.Width; + } + if (other.HasHeight) { + Height = other.Height; + } + if (other.zDistances_.Count != 0) { + result.zDistances_.Add(other.zDistances_); + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_depthMapEventFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _depthMapEventFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasTimestamp = input.ReadInt64(ref result.timestamp_); + break; + } + case 16: { + result.hasWidth = input.ReadInt32(ref result.width_); + break; + } + case 24: { + result.hasHeight = input.ReadInt32(ref result.height_); + break; + } + case 34: + case 37: { + input.ReadFloatArray(tag, field_name, result.zDistances_); + break; + } + } + } + + return this; + } + + + public bool HasTimestamp { + get { return result.hasTimestamp; } + } + public long Timestamp { + get { return result.Timestamp; } + set { SetTimestamp(value); } + } + public Builder SetTimestamp(long value) { + PrepareBuilder(); + result.hasTimestamp = true; + result.timestamp_ = value; + return this; + } + public Builder ClearTimestamp() { + PrepareBuilder(); + result.hasTimestamp = false; + result.timestamp_ = 0L; + return this; + } + + public bool HasWidth { + get { return result.hasWidth; } + } + public int Width { + get { return result.Width; } + set { SetWidth(value); } + } + public Builder SetWidth(int value) { + PrepareBuilder(); + result.hasWidth = true; + result.width_ = value; + return this; + } + public Builder ClearWidth() { + PrepareBuilder(); + result.hasWidth = false; + result.width_ = 0; + return this; + } + + public bool HasHeight { + get { return result.hasHeight; } + } + public int Height { + get { return result.Height; } + set { SetHeight(value); } + } + public Builder SetHeight(int value) { + PrepareBuilder(); + result.hasHeight = true; + result.height_ = value; + return this; + } + public Builder ClearHeight() { + PrepareBuilder(); + result.hasHeight = false; + result.height_ = 0; + return this; + } + + public pbc::IPopsicleList ZDistancesList { + get { return PrepareBuilder().zDistances_; } + } + public int ZDistancesCount { + get { return result.ZDistancesCount; } + } + public float GetZDistances(int index) { + return result.GetZDistances(index); + } + public Builder SetZDistances(int index, float value) { + PrepareBuilder(); + result.zDistances_[index] = value; + return this; + } + public Builder AddZDistances(float value) { + PrepareBuilder(); + result.zDistances_.Add(value); + return this; + } + public Builder AddRangeZDistances(scg::IEnumerable values) { + PrepareBuilder(); + result.zDistances_.Add(values); + return this; + } + public Builder ClearZDistances() { + PrepareBuilder(); + result.zDistances_.Clear(); + return this; + } + } + static DepthMapEvent() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class OrientationEvent : pb::GeneratedMessageLite { + private OrientationEvent() { } + private static readonly OrientationEvent defaultInstance = new OrientationEvent().MakeReadOnly(); + private static readonly string[] _orientationEventFieldNames = new string[] { "timestamp", "w", "x", "y", "z" }; + private static readonly uint[] _orientationEventFieldTags = new uint[] { 8, 45, 21, 29, 37 }; + public static OrientationEvent DefaultInstance { + get { return defaultInstance; } + } + + public override OrientationEvent DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override OrientationEvent ThisMessage { + get { return this; } + } + + public const int TimestampFieldNumber = 1; + private bool hasTimestamp; + private long timestamp_; + public bool HasTimestamp { + get { return hasTimestamp; } + } + public long Timestamp { + get { return timestamp_; } + } + + public const int XFieldNumber = 2; + private bool hasX; + private float x_; + public bool HasX { + get { return hasX; } + } + public float X { + get { return x_; } + } + + public const int YFieldNumber = 3; + private bool hasY; + private float y_; + public bool HasY { + get { return hasY; } + } + public float Y { + get { return y_; } + } + + public const int ZFieldNumber = 4; + private bool hasZ; + private float z_; + public bool HasZ { + get { return hasZ; } + } + public float Z { + get { return z_; } + } + + public const int WFieldNumber = 5; + private bool hasW; + private float w_; + public bool HasW { + get { return hasW; } + } + public float W { + get { return w_; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _orientationEventFieldNames; + if (hasTimestamp) { + output.WriteInt64(1, field_names[0], Timestamp); + } + if (hasX) { + output.WriteFloat(2, field_names[2], X); + } + if (hasY) { + output.WriteFloat(3, field_names[3], Y); + } + if (hasZ) { + output.WriteFloat(4, field_names[4], Z); + } + if (hasW) { + output.WriteFloat(5, field_names[1], W); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasTimestamp) { + size += pb::CodedOutputStream.ComputeInt64Size(1, Timestamp); + } + if (hasX) { + size += pb::CodedOutputStream.ComputeFloatSize(2, X); + } + if (hasY) { + size += pb::CodedOutputStream.ComputeFloatSize(3, Y); + } + if (hasZ) { + size += pb::CodedOutputStream.ComputeFloatSize(4, Z); + } + if (hasW) { + size += pb::CodedOutputStream.ComputeFloatSize(5, W); + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasTimestamp) hash ^= timestamp_.GetHashCode(); + if (hasX) hash ^= x_.GetHashCode(); + if (hasY) hash ^= y_.GetHashCode(); + if (hasZ) hash ^= z_.GetHashCode(); + if (hasW) hash ^= w_.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + OrientationEvent other = obj as OrientationEvent; + if (other == null) return false; + if (hasTimestamp != other.hasTimestamp || (hasTimestamp && !timestamp_.Equals(other.timestamp_))) return false; + if (hasX != other.hasX || (hasX && !x_.Equals(other.x_))) return false; + if (hasY != other.hasY || (hasY && !y_.Equals(other.y_))) return false; + if (hasZ != other.hasZ || (hasZ && !z_.Equals(other.z_))) return false; + if (hasW != other.hasW || (hasW && !w_.Equals(other.w_))) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("timestamp", hasTimestamp, timestamp_, writer); + PrintField("x", hasX, x_, writer); + PrintField("y", hasY, y_, writer); + PrintField("z", hasZ, z_, writer); + PrintField("w", hasW, w_, writer); + } + #endregion + + public static OrientationEvent ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static OrientationEvent ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static OrientationEvent ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static OrientationEvent ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static OrientationEvent ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static OrientationEvent ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static OrientationEvent ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static OrientationEvent ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static OrientationEvent ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static OrientationEvent ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private OrientationEvent MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(OrientationEvent prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(OrientationEvent cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private OrientationEvent result; + + private OrientationEvent PrepareBuilder() { + if (resultIsReadOnly) { + OrientationEvent original = result; + result = new OrientationEvent(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override OrientationEvent MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override OrientationEvent DefaultInstanceForType { + get { return global::proto.PhoneEvent.Types.OrientationEvent.DefaultInstance; } + } + + public override OrientationEvent BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is OrientationEvent) { + return MergeFrom((OrientationEvent) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(OrientationEvent other) { + if (other == global::proto.PhoneEvent.Types.OrientationEvent.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasTimestamp) { + Timestamp = other.Timestamp; + } + if (other.HasX) { + X = other.X; + } + if (other.HasY) { + Y = other.Y; + } + if (other.HasZ) { + Z = other.Z; + } + if (other.HasW) { + W = other.W; + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_orientationEventFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _orientationEventFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasTimestamp = input.ReadInt64(ref result.timestamp_); + break; + } + case 21: { + result.hasX = input.ReadFloat(ref result.x_); + break; + } + case 29: { + result.hasY = input.ReadFloat(ref result.y_); + break; + } + case 37: { + result.hasZ = input.ReadFloat(ref result.z_); + break; + } + case 45: { + result.hasW = input.ReadFloat(ref result.w_); + break; + } + } + } + + return this; + } + + + public bool HasTimestamp { + get { return result.hasTimestamp; } + } + public long Timestamp { + get { return result.Timestamp; } + set { SetTimestamp(value); } + } + public Builder SetTimestamp(long value) { + PrepareBuilder(); + result.hasTimestamp = true; + result.timestamp_ = value; + return this; + } + public Builder ClearTimestamp() { + PrepareBuilder(); + result.hasTimestamp = false; + result.timestamp_ = 0L; + return this; + } + + public bool HasX { + get { return result.hasX; } + } + public float X { + get { return result.X; } + set { SetX(value); } + } + public Builder SetX(float value) { + PrepareBuilder(); + result.hasX = true; + result.x_ = value; + return this; + } + public Builder ClearX() { + PrepareBuilder(); + result.hasX = false; + result.x_ = 0F; + return this; + } + + public bool HasY { + get { return result.hasY; } + } + public float Y { + get { return result.Y; } + set { SetY(value); } + } + public Builder SetY(float value) { + PrepareBuilder(); + result.hasY = true; + result.y_ = value; + return this; + } + public Builder ClearY() { + PrepareBuilder(); + result.hasY = false; + result.y_ = 0F; + return this; + } + + public bool HasZ { + get { return result.hasZ; } + } + public float Z { + get { return result.Z; } + set { SetZ(value); } + } + public Builder SetZ(float value) { + PrepareBuilder(); + result.hasZ = true; + result.z_ = value; + return this; + } + public Builder ClearZ() { + PrepareBuilder(); + result.hasZ = false; + result.z_ = 0F; + return this; + } + + public bool HasW { + get { return result.hasW; } + } + public float W { + get { return result.W; } + set { SetW(value); } + } + public Builder SetW(float value) { + PrepareBuilder(); + result.hasW = true; + result.w_ = value; + return this; + } + public Builder ClearW() { + PrepareBuilder(); + result.hasW = false; + result.w_ = 0F; + return this; + } + } + static OrientationEvent() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class KeyEvent : pb::GeneratedMessageLite { + private KeyEvent() { } + private static readonly KeyEvent defaultInstance = new KeyEvent().MakeReadOnly(); + private static readonly string[] _keyEventFieldNames = new string[] { "action", "code" }; + private static readonly uint[] _keyEventFieldTags = new uint[] { 8, 16 }; + public static KeyEvent DefaultInstance { + get { return defaultInstance; } + } + + public override KeyEvent DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override KeyEvent ThisMessage { + get { return this; } + } + + public const int ActionFieldNumber = 1; + private bool hasAction; + private int action_; + public bool HasAction { + get { return hasAction; } + } + public int Action { + get { return action_; } + } + + public const int CodeFieldNumber = 2; + private bool hasCode; + private int code_; + public bool HasCode { + get { return hasCode; } + } + public int Code { + get { return code_; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _keyEventFieldNames; + if (hasAction) { + output.WriteInt32(1, field_names[0], Action); + } + if (hasCode) { + output.WriteInt32(2, field_names[1], Code); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasAction) { + size += pb::CodedOutputStream.ComputeInt32Size(1, Action); + } + if (hasCode) { + size += pb::CodedOutputStream.ComputeInt32Size(2, Code); + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasAction) hash ^= action_.GetHashCode(); + if (hasCode) hash ^= code_.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + KeyEvent other = obj as KeyEvent; + if (other == null) return false; + if (hasAction != other.hasAction || (hasAction && !action_.Equals(other.action_))) return false; + if (hasCode != other.hasCode || (hasCode && !code_.Equals(other.code_))) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("action", hasAction, action_, writer); + PrintField("code", hasCode, code_, writer); + } + #endregion + + public static KeyEvent ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static KeyEvent ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static KeyEvent ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static KeyEvent ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static KeyEvent ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static KeyEvent ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static KeyEvent ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static KeyEvent ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static KeyEvent ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static KeyEvent ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private KeyEvent MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(KeyEvent prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(KeyEvent cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private KeyEvent result; + + private KeyEvent PrepareBuilder() { + if (resultIsReadOnly) { + KeyEvent original = result; + result = new KeyEvent(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override KeyEvent MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override KeyEvent DefaultInstanceForType { + get { return global::proto.PhoneEvent.Types.KeyEvent.DefaultInstance; } + } + + public override KeyEvent BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is KeyEvent) { + return MergeFrom((KeyEvent) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(KeyEvent other) { + if (other == global::proto.PhoneEvent.Types.KeyEvent.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasAction) { + Action = other.Action; + } + if (other.HasCode) { + Code = other.Code; + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_keyEventFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _keyEventFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + result.hasAction = input.ReadInt32(ref result.action_); + break; + } + case 16: { + result.hasCode = input.ReadInt32(ref result.code_); + break; + } + } + } + + return this; + } + + + public bool HasAction { + get { return result.hasAction; } + } + public int Action { + get { return result.Action; } + set { SetAction(value); } + } + public Builder SetAction(int value) { + PrepareBuilder(); + result.hasAction = true; + result.action_ = value; + return this; + } + public Builder ClearAction() { + PrepareBuilder(); + result.hasAction = false; + result.action_ = 0; + return this; + } + + public bool HasCode { + get { return result.hasCode; } + } + public int Code { + get { return result.Code; } + set { SetCode(value); } + } + public Builder SetCode(int value) { + PrepareBuilder(); + result.hasCode = true; + result.code_ = value; + return this; + } + public Builder ClearCode() { + PrepareBuilder(); + result.hasCode = false; + result.code_ = 0; + return this; + } + } + static KeyEvent() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + } + #endregion + + public const int TypeFieldNumber = 1; + private bool hasType; + private global::proto.PhoneEvent.Types.Type type_ = global::proto.PhoneEvent.Types.Type.MOTION; + public bool HasType { + get { return hasType; } + } + public global::proto.PhoneEvent.Types.Type Type { + get { return type_; } + } + + public const int MotionEventFieldNumber = 2; + private bool hasMotionEvent; + private global::proto.PhoneEvent.Types.MotionEvent motionEvent_; + public bool HasMotionEvent { + get { return hasMotionEvent; } + } + public global::proto.PhoneEvent.Types.MotionEvent MotionEvent { + get { return motionEvent_ ?? global::proto.PhoneEvent.Types.MotionEvent.DefaultInstance; } + } + + public const int GyroscopeEventFieldNumber = 3; + private bool hasGyroscopeEvent; + private global::proto.PhoneEvent.Types.GyroscopeEvent gyroscopeEvent_; + public bool HasGyroscopeEvent { + get { return hasGyroscopeEvent; } + } + public global::proto.PhoneEvent.Types.GyroscopeEvent GyroscopeEvent { + get { return gyroscopeEvent_ ?? global::proto.PhoneEvent.Types.GyroscopeEvent.DefaultInstance; } + } + + public const int AccelerometerEventFieldNumber = 4; + private bool hasAccelerometerEvent; + private global::proto.PhoneEvent.Types.AccelerometerEvent accelerometerEvent_; + public bool HasAccelerometerEvent { + get { return hasAccelerometerEvent; } + } + public global::proto.PhoneEvent.Types.AccelerometerEvent AccelerometerEvent { + get { return accelerometerEvent_ ?? global::proto.PhoneEvent.Types.AccelerometerEvent.DefaultInstance; } + } + + public const int DepthMapEventFieldNumber = 5; + private bool hasDepthMapEvent; + private global::proto.PhoneEvent.Types.DepthMapEvent depthMapEvent_; + public bool HasDepthMapEvent { + get { return hasDepthMapEvent; } + } + public global::proto.PhoneEvent.Types.DepthMapEvent DepthMapEvent { + get { return depthMapEvent_ ?? global::proto.PhoneEvent.Types.DepthMapEvent.DefaultInstance; } + } + + public const int OrientationEventFieldNumber = 6; + private bool hasOrientationEvent; + private global::proto.PhoneEvent.Types.OrientationEvent orientationEvent_; + public bool HasOrientationEvent { + get { return hasOrientationEvent; } + } + public global::proto.PhoneEvent.Types.OrientationEvent OrientationEvent { + get { return orientationEvent_ ?? global::proto.PhoneEvent.Types.OrientationEvent.DefaultInstance; } + } + + public const int KeyEventFieldNumber = 7; + private bool hasKeyEvent; + private global::proto.PhoneEvent.Types.KeyEvent keyEvent_; + public bool HasKeyEvent { + get { return hasKeyEvent; } + } + public global::proto.PhoneEvent.Types.KeyEvent KeyEvent { + get { return keyEvent_ ?? global::proto.PhoneEvent.Types.KeyEvent.DefaultInstance; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + string[] field_names = _phoneEventFieldNames; + if (hasType) { + output.WriteEnum(1, field_names[6], (int) Type, Type); + } + if (hasMotionEvent) { + output.WriteMessage(2, field_names[4], MotionEvent); + } + if (hasGyroscopeEvent) { + output.WriteMessage(3, field_names[2], GyroscopeEvent); + } + if (hasAccelerometerEvent) { + output.WriteMessage(4, field_names[0], AccelerometerEvent); + } + if (hasDepthMapEvent) { + output.WriteMessage(5, field_names[1], DepthMapEvent); + } + if (hasOrientationEvent) { + output.WriteMessage(6, field_names[5], OrientationEvent); + } + if (hasKeyEvent) { + output.WriteMessage(7, field_names[3], KeyEvent); + } + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (hasType) { + size += pb::CodedOutputStream.ComputeEnumSize(1, (int) Type); + } + if (hasMotionEvent) { + size += pb::CodedOutputStream.ComputeMessageSize(2, MotionEvent); + } + if (hasGyroscopeEvent) { + size += pb::CodedOutputStream.ComputeMessageSize(3, GyroscopeEvent); + } + if (hasAccelerometerEvent) { + size += pb::CodedOutputStream.ComputeMessageSize(4, AccelerometerEvent); + } + if (hasDepthMapEvent) { + size += pb::CodedOutputStream.ComputeMessageSize(5, DepthMapEvent); + } + if (hasOrientationEvent) { + size += pb::CodedOutputStream.ComputeMessageSize(6, OrientationEvent); + } + if (hasKeyEvent) { + size += pb::CodedOutputStream.ComputeMessageSize(7, KeyEvent); + } + memoizedSerializedSize = size; + return size; + } + } + + #region Lite runtime methods + public override int GetHashCode() { + int hash = GetType().GetHashCode(); + if (hasType) hash ^= type_.GetHashCode(); + if (hasMotionEvent) hash ^= motionEvent_.GetHashCode(); + if (hasGyroscopeEvent) hash ^= gyroscopeEvent_.GetHashCode(); + if (hasAccelerometerEvent) hash ^= accelerometerEvent_.GetHashCode(); + if (hasDepthMapEvent) hash ^= depthMapEvent_.GetHashCode(); + if (hasOrientationEvent) hash ^= orientationEvent_.GetHashCode(); + if (hasKeyEvent) hash ^= keyEvent_.GetHashCode(); + return hash; + } + + public override bool Equals(object obj) { + PhoneEvent other = obj as PhoneEvent; + if (other == null) return false; + if (hasType != other.hasType || (hasType && !type_.Equals(other.type_))) return false; + if (hasMotionEvent != other.hasMotionEvent || (hasMotionEvent && !motionEvent_.Equals(other.motionEvent_))) return false; + if (hasGyroscopeEvent != other.hasGyroscopeEvent || (hasGyroscopeEvent && !gyroscopeEvent_.Equals(other.gyroscopeEvent_))) return false; + if (hasAccelerometerEvent != other.hasAccelerometerEvent || (hasAccelerometerEvent && !accelerometerEvent_.Equals(other.accelerometerEvent_))) return false; + if (hasDepthMapEvent != other.hasDepthMapEvent || (hasDepthMapEvent && !depthMapEvent_.Equals(other.depthMapEvent_))) return false; + if (hasOrientationEvent != other.hasOrientationEvent || (hasOrientationEvent && !orientationEvent_.Equals(other.orientationEvent_))) return false; + if (hasKeyEvent != other.hasKeyEvent || (hasKeyEvent && !keyEvent_.Equals(other.keyEvent_))) return false; + return true; + } + + public override void PrintTo(global::System.IO.TextWriter writer) { + PrintField("type", hasType, type_, writer); + PrintField("motion_event", hasMotionEvent, motionEvent_, writer); + PrintField("gyroscope_event", hasGyroscopeEvent, gyroscopeEvent_, writer); + PrintField("accelerometer_event", hasAccelerometerEvent, accelerometerEvent_, writer); + PrintField("depth_map_event", hasDepthMapEvent, depthMapEvent_, writer); + PrintField("orientation_event", hasOrientationEvent, orientationEvent_, writer); + PrintField("key_event", hasKeyEvent, keyEvent_, writer); + } + #endregion + + public static PhoneEvent ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static PhoneEvent ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static PhoneEvent ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static PhoneEvent ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static PhoneEvent ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static PhoneEvent ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static PhoneEvent ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static PhoneEvent ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static PhoneEvent ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static PhoneEvent ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private PhoneEvent MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(PhoneEvent prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("ProtoGen", "2.4.1.473")] + public sealed partial class Builder : pb::GeneratedBuilderLite { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(PhoneEvent cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private PhoneEvent result; + + private PhoneEvent PrepareBuilder() { + if (resultIsReadOnly) { + PhoneEvent original = result; + result = new PhoneEvent(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override PhoneEvent MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override PhoneEvent DefaultInstanceForType { + get { return global::proto.PhoneEvent.DefaultInstance; } + } + + public override PhoneEvent BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessageLite other) { + if (other is PhoneEvent) { + return MergeFrom((PhoneEvent) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(PhoneEvent other) { + if (other == global::proto.PhoneEvent.DefaultInstance) return this; + PrepareBuilder(); + if (other.HasType) { + Type = other.Type; + } + if (other.HasMotionEvent) { + MergeMotionEvent(other.MotionEvent); + } + if (other.HasGyroscopeEvent) { + MergeGyroscopeEvent(other.GyroscopeEvent); + } + if (other.HasAccelerometerEvent) { + MergeAccelerometerEvent(other.AccelerometerEvent); + } + if (other.HasDepthMapEvent) { + MergeDepthMapEvent(other.DepthMapEvent); + } + if (other.HasOrientationEvent) { + MergeOrientationEvent(other.OrientationEvent); + } + if (other.HasKeyEvent) { + MergeKeyEvent(other.KeyEvent); + } + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_phoneEventFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _phoneEventFieldTags[field_ordinal]; + else { + ParseUnknownField(input, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + return this; + } + ParseUnknownField(input, extensionRegistry, tag, field_name); + break; + } + case 8: { + object unknown; + if(input.ReadEnum(ref result.type_, out unknown)) { + result.hasType = true; + } else if(unknown is int) { + } + break; + } + case 18: { + global::proto.PhoneEvent.Types.MotionEvent.Builder subBuilder = global::proto.PhoneEvent.Types.MotionEvent.CreateBuilder(); + if (result.hasMotionEvent) { + subBuilder.MergeFrom(MotionEvent); + } + input.ReadMessage(subBuilder, extensionRegistry); + MotionEvent = subBuilder.BuildPartial(); + break; + } + case 26: { + global::proto.PhoneEvent.Types.GyroscopeEvent.Builder subBuilder = global::proto.PhoneEvent.Types.GyroscopeEvent.CreateBuilder(); + if (result.hasGyroscopeEvent) { + subBuilder.MergeFrom(GyroscopeEvent); + } + input.ReadMessage(subBuilder, extensionRegistry); + GyroscopeEvent = subBuilder.BuildPartial(); + break; + } + case 34: { + global::proto.PhoneEvent.Types.AccelerometerEvent.Builder subBuilder = global::proto.PhoneEvent.Types.AccelerometerEvent.CreateBuilder(); + if (result.hasAccelerometerEvent) { + subBuilder.MergeFrom(AccelerometerEvent); + } + input.ReadMessage(subBuilder, extensionRegistry); + AccelerometerEvent = subBuilder.BuildPartial(); + break; + } + case 42: { + global::proto.PhoneEvent.Types.DepthMapEvent.Builder subBuilder = global::proto.PhoneEvent.Types.DepthMapEvent.CreateBuilder(); + if (result.hasDepthMapEvent) { + subBuilder.MergeFrom(DepthMapEvent); + } + input.ReadMessage(subBuilder, extensionRegistry); + DepthMapEvent = subBuilder.BuildPartial(); + break; + } + case 50: { + global::proto.PhoneEvent.Types.OrientationEvent.Builder subBuilder = global::proto.PhoneEvent.Types.OrientationEvent.CreateBuilder(); + if (result.hasOrientationEvent) { + subBuilder.MergeFrom(OrientationEvent); + } + input.ReadMessage(subBuilder, extensionRegistry); + OrientationEvent = subBuilder.BuildPartial(); + break; + } + case 58: { + global::proto.PhoneEvent.Types.KeyEvent.Builder subBuilder = global::proto.PhoneEvent.Types.KeyEvent.CreateBuilder(); + if (result.hasKeyEvent) { + subBuilder.MergeFrom(KeyEvent); + } + input.ReadMessage(subBuilder, extensionRegistry); + KeyEvent = subBuilder.BuildPartial(); + break; + } + } + } + + return this; + } + + + public bool HasType { + get { return result.hasType; } + } + public global::proto.PhoneEvent.Types.Type Type { + get { return result.Type; } + set { SetType(value); } + } + public Builder SetType(global::proto.PhoneEvent.Types.Type value) { + PrepareBuilder(); + result.hasType = true; + result.type_ = value; + return this; + } + public Builder ClearType() { + PrepareBuilder(); + result.hasType = false; + result.type_ = global::proto.PhoneEvent.Types.Type.MOTION; + return this; + } + + public bool HasMotionEvent { + get { return result.hasMotionEvent; } + } + public global::proto.PhoneEvent.Types.MotionEvent MotionEvent { + get { return result.MotionEvent; } + set { SetMotionEvent(value); } + } + public Builder SetMotionEvent(global::proto.PhoneEvent.Types.MotionEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasMotionEvent = true; + result.motionEvent_ = value; + return this; + } + public Builder SetMotionEvent(global::proto.PhoneEvent.Types.MotionEvent.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasMotionEvent = true; + result.motionEvent_ = builderForValue.Build(); + return this; + } + public Builder MergeMotionEvent(global::proto.PhoneEvent.Types.MotionEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasMotionEvent && + result.motionEvent_ != global::proto.PhoneEvent.Types.MotionEvent.DefaultInstance) { + result.motionEvent_ = global::proto.PhoneEvent.Types.MotionEvent.CreateBuilder(result.motionEvent_).MergeFrom(value).BuildPartial(); + } else { + result.motionEvent_ = value; + } + result.hasMotionEvent = true; + return this; + } + public Builder ClearMotionEvent() { + PrepareBuilder(); + result.hasMotionEvent = false; + result.motionEvent_ = null; + return this; + } + + public bool HasGyroscopeEvent { + get { return result.hasGyroscopeEvent; } + } + public global::proto.PhoneEvent.Types.GyroscopeEvent GyroscopeEvent { + get { return result.GyroscopeEvent; } + set { SetGyroscopeEvent(value); } + } + public Builder SetGyroscopeEvent(global::proto.PhoneEvent.Types.GyroscopeEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasGyroscopeEvent = true; + result.gyroscopeEvent_ = value; + return this; + } + public Builder SetGyroscopeEvent(global::proto.PhoneEvent.Types.GyroscopeEvent.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasGyroscopeEvent = true; + result.gyroscopeEvent_ = builderForValue.Build(); + return this; + } + public Builder MergeGyroscopeEvent(global::proto.PhoneEvent.Types.GyroscopeEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasGyroscopeEvent && + result.gyroscopeEvent_ != global::proto.PhoneEvent.Types.GyroscopeEvent.DefaultInstance) { + result.gyroscopeEvent_ = global::proto.PhoneEvent.Types.GyroscopeEvent.CreateBuilder(result.gyroscopeEvent_).MergeFrom(value).BuildPartial(); + } else { + result.gyroscopeEvent_ = value; + } + result.hasGyroscopeEvent = true; + return this; + } + public Builder ClearGyroscopeEvent() { + PrepareBuilder(); + result.hasGyroscopeEvent = false; + result.gyroscopeEvent_ = null; + return this; + } + + public bool HasAccelerometerEvent { + get { return result.hasAccelerometerEvent; } + } + public global::proto.PhoneEvent.Types.AccelerometerEvent AccelerometerEvent { + get { return result.AccelerometerEvent; } + set { SetAccelerometerEvent(value); } + } + public Builder SetAccelerometerEvent(global::proto.PhoneEvent.Types.AccelerometerEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasAccelerometerEvent = true; + result.accelerometerEvent_ = value; + return this; + } + public Builder SetAccelerometerEvent(global::proto.PhoneEvent.Types.AccelerometerEvent.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasAccelerometerEvent = true; + result.accelerometerEvent_ = builderForValue.Build(); + return this; + } + public Builder MergeAccelerometerEvent(global::proto.PhoneEvent.Types.AccelerometerEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasAccelerometerEvent && + result.accelerometerEvent_ != global::proto.PhoneEvent.Types.AccelerometerEvent.DefaultInstance) { + result.accelerometerEvent_ = global::proto.PhoneEvent.Types.AccelerometerEvent.CreateBuilder(result.accelerometerEvent_).MergeFrom(value).BuildPartial(); + } else { + result.accelerometerEvent_ = value; + } + result.hasAccelerometerEvent = true; + return this; + } + public Builder ClearAccelerometerEvent() { + PrepareBuilder(); + result.hasAccelerometerEvent = false; + result.accelerometerEvent_ = null; + return this; + } + + public bool HasDepthMapEvent { + get { return result.hasDepthMapEvent; } + } + public global::proto.PhoneEvent.Types.DepthMapEvent DepthMapEvent { + get { return result.DepthMapEvent; } + set { SetDepthMapEvent(value); } + } + public Builder SetDepthMapEvent(global::proto.PhoneEvent.Types.DepthMapEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasDepthMapEvent = true; + result.depthMapEvent_ = value; + return this; + } + public Builder SetDepthMapEvent(global::proto.PhoneEvent.Types.DepthMapEvent.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasDepthMapEvent = true; + result.depthMapEvent_ = builderForValue.Build(); + return this; + } + public Builder MergeDepthMapEvent(global::proto.PhoneEvent.Types.DepthMapEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasDepthMapEvent && + result.depthMapEvent_ != global::proto.PhoneEvent.Types.DepthMapEvent.DefaultInstance) { + result.depthMapEvent_ = global::proto.PhoneEvent.Types.DepthMapEvent.CreateBuilder(result.depthMapEvent_).MergeFrom(value).BuildPartial(); + } else { + result.depthMapEvent_ = value; + } + result.hasDepthMapEvent = true; + return this; + } + public Builder ClearDepthMapEvent() { + PrepareBuilder(); + result.hasDepthMapEvent = false; + result.depthMapEvent_ = null; + return this; + } + + public bool HasOrientationEvent { + get { return result.hasOrientationEvent; } + } + public global::proto.PhoneEvent.Types.OrientationEvent OrientationEvent { + get { return result.OrientationEvent; } + set { SetOrientationEvent(value); } + } + public Builder SetOrientationEvent(global::proto.PhoneEvent.Types.OrientationEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasOrientationEvent = true; + result.orientationEvent_ = value; + return this; + } + public Builder SetOrientationEvent(global::proto.PhoneEvent.Types.OrientationEvent.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasOrientationEvent = true; + result.orientationEvent_ = builderForValue.Build(); + return this; + } + public Builder MergeOrientationEvent(global::proto.PhoneEvent.Types.OrientationEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasOrientationEvent && + result.orientationEvent_ != global::proto.PhoneEvent.Types.OrientationEvent.DefaultInstance) { + result.orientationEvent_ = global::proto.PhoneEvent.Types.OrientationEvent.CreateBuilder(result.orientationEvent_).MergeFrom(value).BuildPartial(); + } else { + result.orientationEvent_ = value; + } + result.hasOrientationEvent = true; + return this; + } + public Builder ClearOrientationEvent() { + PrepareBuilder(); + result.hasOrientationEvent = false; + result.orientationEvent_ = null; + return this; + } + + public bool HasKeyEvent { + get { return result.hasKeyEvent; } + } + public global::proto.PhoneEvent.Types.KeyEvent KeyEvent { + get { return result.KeyEvent; } + set { SetKeyEvent(value); } + } + public Builder SetKeyEvent(global::proto.PhoneEvent.Types.KeyEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.hasKeyEvent = true; + result.keyEvent_ = value; + return this; + } + public Builder SetKeyEvent(global::proto.PhoneEvent.Types.KeyEvent.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.hasKeyEvent = true; + result.keyEvent_ = builderForValue.Build(); + return this; + } + public Builder MergeKeyEvent(global::proto.PhoneEvent.Types.KeyEvent value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + if (result.hasKeyEvent && + result.keyEvent_ != global::proto.PhoneEvent.Types.KeyEvent.DefaultInstance) { + result.keyEvent_ = global::proto.PhoneEvent.Types.KeyEvent.CreateBuilder(result.keyEvent_).MergeFrom(value).BuildPartial(); + } else { + result.keyEvent_ = value; + } + result.hasKeyEvent = true; + return this; + } + public Builder ClearKeyEvent() { + PrepareBuilder(); + result.hasKeyEvent = false; + result.keyEvent_ = null; + return this; + } + } + static PhoneEvent() { + object.ReferenceEquals(global::proto.Proto.PhoneEvent.Descriptor, null); + } + } + + #endregion + +} +/// @endcond + +#endregion Designer generated code diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated/PhoneEvent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated/PhoneEvent.cs.meta new file mode 100644 index 0000000..a96e927 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/Emulator/Generated/PhoneEvent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1a6b456eb0cd540a489e0f82c377b187 +timeCreated: 1462046540 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/IControllerProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/IControllerProvider.cs new file mode 100644 index 0000000..a967819 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/IControllerProvider.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; + +/// @cond +namespace Gvr.Internal +{ + /// Internal interface that abstracts an implementation of a controller. + /// + /// Each platform has a different concrete implementation of a Controller Provider. + /// For example, if running on the Unity Editor, we use an implementation that + /// communicates with the controller emulator via USB or WiFi. If running on a real + /// Android device, we use an implementation that uses the underlying Daydream controller API. + interface IControllerProvider : IDisposable + { + /// True if controller has battery status support. + bool SupportsBatteryStatus { get; } + + /// Reads the number of controllers the system is configured to use. This does not + /// indicate the number of currently connected controllers. + int MaxControllerCount { get; } + + /// Notifies the controller provider that the application has paused. + void OnPause(); + + /// Notifies the controller provider that the application has resumed. + void OnResume(); + + /// Reads the controller's current state and stores it in outState. + void ReadState(ControllerState outState, int controller_id); + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/IControllerProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/IControllerProvider.cs.meta new file mode 100644 index 0000000..915d314 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Internal/IControllerProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a546592901a23411d99a5fef0ada01e7 +timeCreated: 1462043673 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips.meta new file mode 100644 index 0000000..928ee42 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 35e4e3026fbcb4882ae3e3ec165feee9 +folderAsset: yes +timeCreated: 1505758045 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrControllerTooltipsSimple.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrControllerTooltipsSimple.cs new file mode 100644 index 0000000..c707f6b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrControllerTooltipsSimple.cs @@ -0,0 +1,89 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// The controller is not available for versions of Unity without the +// GVR native integration. + +using UnityEngine; +using System.Collections; + +/// A lightweight tooltip designed to minimize draw calls. +[ExecuteInEditMode] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrControllerTooltipsSimple")] +public class GvrControllerTooltipsSimple : MonoBehaviour, IGvrArmModelReceiver +{ + private MeshRenderer tooltipRenderer; + + /// Arm model used to position the controller. + public GvrBaseArmModel ArmModel { get; set; } + + private MaterialPropertyBlock materialPropertyBlock; + private int colorId; + + void Awake() + { + Initialize(); + } + + void OnEnable() + { + GvrControllerInput.OnPostControllerInputUpdated += OnPostControllerInputUpdated; + } + + void OnDisable() + { + GvrControllerInput.OnPostControllerInputUpdated -= OnPostControllerInputUpdated; + } + + void OnValidate() + { + if (!Application.isPlaying) + { + Initialize(); + OnVisualUpdate(); + } + } + + private void Initialize() + { + if (tooltipRenderer == null) + { + tooltipRenderer = GetComponent(); + } + + if (materialPropertyBlock == null) + { + materialPropertyBlock = new MaterialPropertyBlock(); + } + + colorId = Shader.PropertyToID("_Color"); + } + + private void OnPostControllerInputUpdated() + { + OnVisualUpdate(); + } + + /// Updates the tooltip visualation based on the arm model. + protected void OnVisualUpdate() + { + float alpha = ArmModel != null ? ArmModel.TooltipAlphaValue : 1.0f; + materialPropertyBlock.SetColor(colorId, new Color(1, 1, 1, alpha)); + tooltipRenderer.SetPropertyBlock(materialPropertyBlock); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrControllerTooltipsSimple.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrControllerTooltipsSimple.cs.meta new file mode 100644 index 0000000..4a5a1f0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrControllerTooltipsSimple.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ef63f87a26b474e1c88f77dfc4f3aa3a +timeCreated: 1497972948 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrTooltip.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrTooltip.cs new file mode 100644 index 0000000..9d3c3a4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrTooltip.cs @@ -0,0 +1,246 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +/// +/// A tooltip for displaying control schemes overlaying the controller visual using a Unity Canvas. +/// +/// +/// Automatically changes what side of the controller the tooltip is shown on depending +/// on the handedness setting for the player. +/// Automatically fades out when the controller visual is too close or too far +/// away from the player's head. +/// Look at the prefab GvrControllerPointer to see an example of how to use this script. +/// +[RequireComponent(typeof(CanvasGroup))] +[RequireComponent(typeof(RectTransform))] +[ExecuteInEditMode] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrTooltip")] +public class GvrTooltip : MonoBehaviour, IGvrArmModelReceiver +{ + /// Rotation for a tooltip when it is displayed on the right side of the controller visual. + protected static readonly Quaternion RIGHT_SIDE_ROTATION = Quaternion.Euler(0.0f, 0.0f, 0.0f); + + /// Rotation for a tooltip when it is displayed on the left side of the controller visual. + protected static readonly Quaternion LEFT_SIDE_ROTATION = Quaternion.Euler(0.0f, 0.0f, 180.0f); + + /// Anchor point for a tooltip, used for controlling what side the tooltip is on. + protected static readonly Vector2 SQUARE_CENTER = new Vector2(0.5f, 0.5f); + + /// Pivot point for a tooltip, used for controlling what side the tooltip is on. + protected static readonly Vector2 PIVOT = new Vector2(-0.5f, 0.5f); + + /// Y Position for touch pad tooltips based on the standard controller visual. + protected const float TOUCH_PAD_Y_POSITION_METERS = 0.0385f; + + /// Y position for app button tooltips based on the standard controller visual. + protected const float APP_BUTTON_Y_POSITION_METERS = 0.0105f; + + /// Z position for all tooltips based on the standard controller visual. + protected const float TOOLTIP_Z_POSITION_METERS = 0.0098f; + + /// Options for where the controller should be displayed. + /// If set to custom, then the manually set localPosition of the tooltip is used. + /// This is useful when displaying a tooltip for a non-standard controller visual. + enum Location + { + TouchPadOutside, + TouchPadInside, + AppButtonOutside, + AppButtonInside, + Custom + } + + [Tooltip("The location to display the tooltip at relative to the controller visual.")] + [SerializeField] + private Location location; + + [Tooltip("The text field for this tooltip.")] + [SerializeField] + private Text text; + + [Tooltip("Determines if the tooltip is always visible regardless of the controller's location.")] + [SerializeField] + private bool alwaysVisible; + + private bool isOnLeft = false; + private RectTransform rectTransform; + private CanvasGroup canvasGroup; + + /// The text field for this tooltip. + public Text TooltipText + { + get { return text; } + } + + /// Arm model reference. + public GvrBaseArmModel ArmModel { get; set; } + + void Awake() + { + rectTransform = GetComponent(); + canvasGroup = GetComponent(); + isOnLeft = IsTooltipOnLeft(); + RefreshTooltip(); + } + + void OnEnable() + { + // Update using OnPostControllerInputUpdated. + // This way, the position and rotation will be correct for the entire frame + // so that it doesn't matter what order Updates get called in. + if (Application.isPlaying) + { + GvrControllerInput.OnPostControllerInputUpdated += OnPostControllerInputUpdated; + } + } + + void OnDisable() + { + GvrControllerInput.OnPostControllerInputUpdated -= OnPostControllerInputUpdated; + } + + private void OnPostControllerInputUpdated() + { + CheckTooltipSide(); + + if (canvasGroup != null && ArmModel != null) + { + canvasGroup.alpha = alwaysVisible ? 1.0f : ArmModel.TooltipAlphaValue; + } + } + + void OnValidate() + { + rectTransform = GetComponent(); + RefreshTooltip(); + } + +#if UNITY_EDITOR + void OnRenderObject() + { + if (!Application.isPlaying) + { + CheckTooltipSide(); + } + } +#endif // UNITY_EDITOR + + /// Returns true if this tooltip is set to display on the inside of the controller. + public bool IsTooltipInside() + { + switch (location) + { + case Location.TouchPadInside: + case Location.AppButtonInside: + case Location.Custom: + return true; + case Location.TouchPadOutside: + case Location.AppButtonOutside: + default: + return false; + } + } + + /// Returns true if the tooltip should display on the left side of the controller. + /// This will change based on the handedness of the controller, as well as if the + /// tooltip is set to display inside or outside. + public bool IsTooltipOnLeft() + { + bool isInside = IsTooltipInside(); + GvrSettings.UserPrefsHandedness handedness = GvrSettings.Handedness; + + if (handedness == GvrSettings.UserPrefsHandedness.Left) + { + return !isInside; + } + else + { + return isInside; + } + } + + /// Refreshes how the tooltip is being displayed based on what side it is being shown on. + /// Override to add custom display functionality. + protected virtual void OnSideChanged(bool IsLocationOnLeft) + { + transform.localRotation = (isOnLeft ? LEFT_SIDE_ROTATION : RIGHT_SIDE_ROTATION); + + if (text != null) + { + text.transform.localRotation = (IsLocationOnLeft ? LEFT_SIDE_ROTATION : RIGHT_SIDE_ROTATION); + text.alignment = (IsLocationOnLeft ? TextAnchor.MiddleRight : TextAnchor.MiddleLeft); + } + } + + /// Helper method to return meters to canvas scale. + protected float GetMetersToCanvasScale() + { + return GvrUIHelpers.GetMetersToCanvasScale(transform); + } + + private Vector3 GetLocalPosition() + { + float metersToCanvasScale = GetMetersToCanvasScale(); + + // Return early if we didn't find a valid metersToCanvasScale. + if (metersToCanvasScale == 0.0f) + { + return rectTransform.anchoredPosition3D; + } + + float tooltipZPosition = TOOLTIP_Z_POSITION_METERS / metersToCanvasScale; + switch (location) + { + case Location.TouchPadOutside: + case Location.TouchPadInside: + float touchPadYPosition = TOUCH_PAD_Y_POSITION_METERS / metersToCanvasScale; + return new Vector3(0.0f, touchPadYPosition, tooltipZPosition); + case Location.AppButtonOutside: + case Location.AppButtonInside: + float appButtonYPosition = APP_BUTTON_Y_POSITION_METERS / metersToCanvasScale; + return new Vector3(0.0f, appButtonYPosition, tooltipZPosition); + case Location.Custom: + default: + return rectTransform.anchoredPosition3D; + } + } + + private void CheckTooltipSide() + { + // If handedness changes, the tooltip will switch sides. + bool newIsOnLeft = IsTooltipOnLeft(); + if (newIsOnLeft != isOnLeft) + { + isOnLeft = newIsOnLeft; + RefreshTooltip(); + } + } + + private void RefreshTooltip() + { + rectTransform.anchorMax = SQUARE_CENTER; + rectTransform.anchorMax = SQUARE_CENTER; + rectTransform.pivot = PIVOT; + rectTransform.anchoredPosition3D = GetLocalPosition(); + OnSideChanged(isOnLeft); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrTooltip.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrTooltip.cs.meta new file mode 100644 index 0000000..ff26dda --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Controller/Tooltips/GvrTooltip.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7c52851ea0de74a228fa29a84de008ba +timeCreated: 1481935272 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem.meta new file mode 100644 index 0000000..c843c0e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3eff84475c3a4453f9b3f655b1b89332 +folderAsset: yes +timeCreated: 1477613910 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointer.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointer.cs new file mode 100644 index 0000000..7cd9587 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointer.cs @@ -0,0 +1,701 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; + +/// This abstract class should be implemented for pointer based input, and used with +/// the GvrPointerInputModule script. +/// +/// It provides methods called on pointer interaction with in-game objects and UI, +/// trigger events, and 'BaseInputModule' class state changes. +/// +/// To have the methods called, an instance of this (implemented) class must be +/// registered with the **GvrPointerManager** script in 'Start' by calling +/// GvrPointerInputModule.OnPointerCreated. +/// +/// This abstract class should be implemented by pointers doing 1 of 2 things: +/// 1. Responding to movement of the users head (Cardboard gaze-based-pointer). +/// 2. Responding to the movement of the daydream controller (Daydream 3D pointer). +public abstract class GvrBasePointer : MonoBehaviour, IGvrControllerInputDeviceReceiver +{ + // When using a Daydream (3DoF) controller: + // - Only TouchPadButton is mapped to mouse left click. + private const GvrControllerButton leftButtonMask3Dof = + GvrControllerButton.TouchPadButton; + + // When using a Daydream 6DoF controller: + // - TouchPadButton and Trigger are mapped to mouse left click. + // - App and Grip are mapped to mouse right click. + private const GvrControllerButton leftButtonMask6Dof = + GvrControllerButton.TouchPadButton | + GvrControllerButton.Trigger; + + private const GvrControllerButton rightButtonMask6Dof = + GvrControllerButton.App | + GvrControllerButton.Grip; + + private GvrControllerButton triggerButton; + + private GvrControllerButton triggerButtonDown; + + private GvrControllerButton triggerButtonUp; + + private int lastUpdateFrame; + + /// Raycast mode values. + public enum RaycastMode + { + /// Casts a ray from the camera through the target of the pointer. + /// This is ideal for reticles that are always rendered on top. + /// The object that is selected will always be the object that appears + /// underneath the reticle from the perspective of the camera. + /// This also prevents the reticle from appearing to "jump" when it starts/stops hitting an object. + /// + /// Recommended for reticles that are always rendered on top such as the GvrReticlePointer + /// prefab which is used for cardboard apps. + /// + /// Note: This will prevent the user from pointing around an object to hit something that is out of sight. + /// This isn't a problem in a typical use case. + /// + /// When used with the standard daydream controller, + /// the hit detection will not account for the laser correctly for objects that are closer to the + /// camera than the end of the laser. + /// In that case, it is recommended to do one of the following things: + /// + /// 1. Hide the laser. + /// 2. Use a full-length laser pointer in Direct mode. + /// 3. Use the Hybrid raycast mode. + Camera, + + /// Cast a ray directly from the pointer origin. + /// + /// Recommended for full-length laser pointers. + Direct, + + /// Default method for casting ray. + /// + /// Combines the Camera and Direct raycast modes. + /// Uses a Direct ray up until the CameraRayIntersectionDistance, and then switches to use + /// a Camera ray starting from the point where the two rays intersect. + /// + /// Recommended for use with the standard settings of the GvrControllerPointer prefab. + /// This is the most versatile raycast mode. Like Camera mode, this prevents the reticle + /// appearing jumpy. Additionally, it still allows the user to target objects that are close + /// to them by using the laser as a visual reference. + Hybrid, + } + + /// Represents a ray segment for a series of intersecting rays. + /// This is useful for Hybrid raycast mode, which uses two sequential rays. + public struct PointerRay + { + /// The ray for this segment of the pointer. + public Ray ray; + + /// The distance along the pointer from the origin of the first ray to this ray. + public float distanceFromStart; + + /// Distance that this ray extends to. + public float distance; + } + + /// Determines which raycast mode to use for this raycaster. + /// • Camera - Ray is cast from the camera through the pointer. + /// • Direct - Ray is cast forward from the pointer. + /// • Hybrid - Begins with a Direct ray and transitions to a Camera ray. + [Tooltip("Determines which raycast mode to use for this raycaster.\n" + + " • Camera - Ray is cast from camera.\n" + + " • Direct - Ray is cast from pointer.\n" + + " • Hybrid - Transitions from Direct ray to Camera ray.")] + public RaycastMode raycastMode = RaycastMode.Hybrid; + + /// Determines the eventCamera for _GvrPointerPhysicsRaycaster_ and _GvrPointerGraphicRaycaster_. + /// Additionaly, this is used to control what camera to use when calculating the Camera ray for + /// the Hybrid and Camera raycast modes. + [Tooltip("Optional: Use a camera other than Camera.main.")] + public Camera overridePointerCamera; + +#if UNITY_EDITOR + /// Determines if the rays used for raycasting will be drawn in the editor. + [Tooltip("Determines if the rays used for raycasting will be drawn in the editor.")] + public bool drawDebugRays = false; +#endif // UNITY_EDITOR + + /// Convenience function to access what the pointer is currently hitting. + public RaycastResult CurrentRaycastResult + { + get { return GvrPointerInputModule.CurrentRaycastResult; } + } + + /// @deprecated Replaced by `CurrentRaycastResult.worldPosition` + [System.Obsolete("Replaced by CurrentRaycastResult.worldPosition")] + public Vector3 PointerIntersection + { + get + { + RaycastResult raycastResult = CurrentRaycastResult; + return raycastResult.worldPosition; + } + } + + /// @deprecated Replaced by `CurrentRaycastResult.gameObject != null` + [System.Obsolete("Replaced by CurrentRaycastResult.gameObject != null")] + public bool IsPointerIntersecting + { + get + { + RaycastResult raycastResult = CurrentRaycastResult; + return raycastResult.gameObject != null; + } + } + + /// This is used to determine if the enterRadius or the exitRadius should be used for the raycast. + /// It is set by GvrPointerInputModule and doesn't need to be controlled manually. + public bool ShouldUseExitRadiusForRaycast { get; set; } + + /// If ShouldUseExitRadiusForRaycast is true, returns the exit radius. + /// Otherwise, returns the enter radius. + public float CurrentPointerRadius + { + get + { + float enterRadius, exitRadius; + GetPointerRadius(out enterRadius, out exitRadius); + if (ShouldUseExitRadiusForRaycast) + { + return exitRadius; + } + else + { + return enterRadius; + } + } + } + + /// Returns the transform that represents this pointer. + /// It is used by GvrBasePointerRaycaster as the origin of the ray. + public virtual Transform PointerTransform + { + get { return transform; } + } + + /// The reference to the controller input device. + public GvrControllerInputDevice ControllerInputDevice { get; set; } + + private void OnEnable() + { + triggerButton = 0; + triggerButtonDown = 0; + triggerButtonUp = 0; + } + + private void UpdateTriggerState() + { + if (lastUpdateFrame != Time.frameCount) + { + lastUpdateFrame = Time.frameCount; + + GvrControllerButton allButtonsMask = 0; + if (ControllerInputDevice != null + && ControllerInputDevice.SupportsPositionalTracking) + { + allButtonsMask = leftButtonMask6Dof | rightButtonMask6Dof; + } + else + { + allButtonsMask = leftButtonMask3Dof; + } + + GvrControllerButton buttonDown = 0; + GvrControllerButton buttonUp = 0; +#if !UNITY_EDITOR + // Cardboard button events come through as mouse button 0 and are + // mapped to TouchPadButton. + if (Input.GetMouseButtonDown(0)) + { + buttonDown |= GvrControllerButton.TouchPadButton; + } + + if (Input.GetMouseButtonUp(0)) + { + buttonUp |= GvrControllerButton.TouchPadButton; + } +#endif + if (ControllerInputDevice != null) + { + buttonDown |= ControllerInputDevice.ButtonsDown; + buttonUp |= ControllerInputDevice.ButtonsUp; + } + + buttonDown &= allButtonsMask; + buttonUp &= allButtonsMask; + + // Only allow one button down at a time. If one is down, ignore the rest. + if (triggerButton != 0) + { + buttonDown &= triggerButton; + } + else + { + // Mask off everything except the right-most bit that is set in case + // more than one button went down in the same frame. + buttonDown &= (GvrControllerButton)(-(int)buttonDown); + } + + // Ignore ups from buttons whose down we ignored. + buttonUp &= triggerButton; + + // Build trigger button state from filtered ups and downs to ensure + // actual (A-down, B-down, A-up, B-up) results in + // event (A-down, A-up) instead of + // event (A-down, A-up, B-down, B-up). + triggerButton |= buttonDown; + triggerButton &= ~buttonUp; + triggerButtonDown = buttonDown; + triggerButtonUp = buttonUp; + } + } + + /// If true, the trigger was just pressed. This is an event flag: + /// it will be true for only one frame after the event happens. + /// Defaults to mouse button 0 down on Cardboard or + /// ControllerInputDevice.GetButtonDown(TouchPadButton) on Daydream. + /// Can be overridden to change the trigger. + public virtual bool TriggerDown + { + get + { + UpdateTriggerState(); + return triggerButtonDown != 0; + } + } + + /// If true, the trigger is currently being pressed. This is not + /// an event: it represents the trigger's state (it remains true while the trigger is being + /// pressed). + /// Defaults to mouse button 0 state on Cardboard or + /// ControllerInputDevice.GetButton(TouchPadButton) on Daydream. + /// Can be overridden to change the trigger. + public virtual bool Triggering + { + get + { + UpdateTriggerState(); + return triggerButton != 0; + } + } + + /// If true, the trigger was just released. This is an event flag: + /// it will be true for only one frame after the event happens. + /// Defaults to mouse button 0 up on Cardboard or + /// ControllerInputDevice.GetButtonUp(TouchPadButton) on Daydream. + /// Can be overridden to change the trigger. + public virtual bool TriggerUp + { + get + { + UpdateTriggerState(); + return triggerButtonUp != 0; + } + } + + internal PointerEventData.InputButton InputButtonDown + { + get + { + if (triggerButton == 0 || + (triggerButton & leftButtonMask6Dof) != 0) + { + return PointerEventData.InputButton.Left; + } + else + { + return PointerEventData.InputButton.Right; + } + } + } + + internal GvrControllerButton ControllerButtonDown + { + get { return triggerButton; } + } + + /// If true, the user just started touching the touchpad. This is an event flag (it is true + /// for only one frame after the event happens, then reverts to false). + /// Used by _GvrPointerScrollInput_ to generate OnScroll events using Unity's Event System. + /// Defaults to ControllerInputDevice.GetButtonDown(TouchPadTouch), can be overridden to change + /// the input source. + public virtual bool TouchDown + { + get + { + if (ControllerInputDevice == null) + { + return false; + } + else + { + return ControllerInputDevice.GetButtonDown(GvrControllerButton.TouchPadTouch); + } + } + } + + /// If true, the user is currently touching the touchpad. + /// Used by _GvrPointerScrollInput_ to generate OnScroll events using Unity's Event System. + /// Defaults to ControllerInputDevice.GetButton(TouchPadTouch), can be overridden to change + /// the input source. + public virtual bool IsTouching + { + get + { + if (ControllerInputDevice == null) + { + return false; + } + else + { + return ControllerInputDevice.GetButton(GvrControllerButton.TouchPadTouch); + } + } + } + + /// If true, the user just stopped touching the touchpad. This is an event flag (it is true + /// for only one frame after the event happens, then reverts to false). + /// Used by _GvrPointerScrollInput_ to generate OnScroll events using Unity's Event System. + /// Defaults to ControllerInputDevice.GetButtonUp(TouchPadTouch), can be overridden to change + /// the input source. + public virtual bool TouchUp + { + get + { + if (ControllerInputDevice == null) + { + return false; + } + else + { + return ControllerInputDevice.GetButtonUp(GvrControllerButton.TouchPadTouch); + } + } + } + + /// Position of the current touch, if touching the touchpad. + /// If not touching, this is the position of the last touch (when the finger left the touchpad). + /// The X and Y range is from 0 to 1. + /// (0, 0) is the top left of the touchpad and (1, 1) is the bottom right of the touchpad. + /// Used by `GvrPointerScrollInput` to generate OnScroll events using Unity's Event System. + /// Defaults to `ControllerInputDevice.TouchPos` but translated to top-left-relative coordinates + /// for backwards compatibility. Can be overridden to change the input source. + public virtual Vector2 TouchPos + { + get + { + if (ControllerInputDevice == null) + { + return Vector2.zero; + } + else + { + Vector2 touchPos = ControllerInputDevice.TouchPos; + touchPos.x = (touchPos.x / 2.0f) + 0.5f; + touchPos.y = (-touchPos.y / 2.0f) + 0.5f; + return touchPos; + } + } + } + + /// Returns the end point of the pointer when it is MaxPointerDistance away from the origin. + public virtual Vector3 MaxPointerEndPoint + { + get + { + Transform pointerTransform = PointerTransform; + if (pointerTransform == null) + { + return Vector3.zero; + } + + Vector3 maxEndPoint = GetPointAlongPointer(MaxPointerDistance); + return maxEndPoint; + } + } + + /// If true, the pointer will be used for generating input events by _GvrPointerInputModule_. + public virtual bool IsAvailable + { + get + { + Transform pointerTransform = PointerTransform; + if (pointerTransform == null) + { + return false; + } + + if (!enabled) + { + return false; + } + + return pointerTransform.gameObject.activeInHierarchy; + } + } + + /// When using the Camera raycast mode, this is used to calculate + /// where the ray from the pointer will intersect with the ray from the camera. + public virtual float CameraRayIntersectionDistance + { + get { return MaxPointerDistance; } + } + + /// The camera used as the pointer. + public Camera PointerCamera + { + get + { + if (overridePointerCamera != null) + { + return overridePointerCamera; + } + + return Camera.main; + } + } + + /// Returns the max distance from the pointer that raycast hits will be detected. + public abstract float MaxPointerDistance { get; } + + /// Called when the pointer is facing a valid GameObject. This can be a 3D + /// or UI element. + /// + /// **raycastResult** is the hit detection result for the object being pointed at. + /// **isInteractive** is true if the object being pointed at is interactive. + public abstract void OnPointerEnter(RaycastResult raycastResult, bool isInteractive); + + /// Called every frame the user is still pointing at a valid GameObject. This + /// can be a 3D or UI element. + /// + /// **raycastResult** is the hit detection result for the object being pointed at. + /// **isInteractive** is true if the object being pointed at is interactive. + public abstract void OnPointerHover(RaycastResult raycastResultResult, bool isInteractive); + + /// Called when the pointer no longer faces an object previously + /// intersected with a ray projected from the camera. + /// This is also called just before **OnInputModuleDisabled** + /// previousObject will be null in this case. + /// + /// **previousObject** is the object that was being pointed at the previous frame. + public abstract void OnPointerExit(GameObject previousObject); + + /// Called when a click is initiated. + public abstract void OnPointerClickDown(); + + /// Called when click is finished. + public abstract void OnPointerClickUp(); + + /// Return the radius of the pointer. It is used by GvrPointerPhysicsRaycaster when + /// searching for valid pointer targets. If a radius is 0, then a ray is used to find + /// a valid pointer target. Otherwise it will use a SphereCast. + /// The *enterRadius* is used for finding new targets while the *exitRadius* + /// is used to see if you are still nearby the object currently pointed at + /// to avoid a flickering effect when just at the border of the intersection. + /// + /// NOTE: This is only works with GvrPointerPhysicsRaycaster. To use it with uGUI, + /// add 3D colliders to your canvas elements. + public abstract void GetPointerRadius(out float enterRadius, out float exitRadius); + + /// Returns a point in worldspace a specified distance along the pointer. + /// What this point will be is different depending on the raycastMode. + /// + /// Because raycast modes differ, use this function instead of manually calculating a point + /// projected from the pointer. + public Vector3 GetPointAlongPointer(float distance) + { + PointerRay pointerRay = GetRayForDistance(distance); + return pointerRay.ray.GetPoint(distance - pointerRay.distanceFromStart); + } + + /// Returns the ray used for projecting points out of the pointer for the given distance. + /// In Hybrid raycast mode, the ray will be different depending upon the distance. + /// In Camera or Direct raycast mode, the ray will always be the same. + public PointerRay GetRayForDistance(float distance) + { + PointerRay result = new PointerRay(); + + if (raycastMode == RaycastMode.Hybrid) + { + float directDistance = CameraRayIntersectionDistance; + if (distance < directDistance) + { + result = CalculateHybridRay(this, RaycastMode.Direct); + } + else + { + result = CalculateHybridRay(this, RaycastMode.Camera); + } + } + else + { + result = CalculateRay(this, raycastMode); + } + + return result; + } + + /// Calculates the ray for a given Raycast mode. + /// Will throw an exception if the raycast mode Hybrid is passed in. + /// If you need to calculate the ray for the direct or camera segment of the Hybrid raycast, + /// use CalculateHybridRay instead. + public static PointerRay CalculateRay(GvrBasePointer pointer, RaycastMode mode) + { + PointerRay result = new PointerRay(); + + if (pointer == null || !pointer.IsAvailable) + { + Debug.LogError("Cannot calculate ray when the pointer isn't available."); + return result; + } + + Transform pointerTransform = pointer.PointerTransform; + + if (pointerTransform == null) + { + Debug.LogError("Cannot calculate ray when pointerTransform is null."); + return result; + } + + result.distance = pointer.MaxPointerDistance; + + switch (mode) + { + case RaycastMode.Camera: + Camera camera = pointer.PointerCamera; + if (camera == null) + { + Debug.LogError("Cannot calculate ray because pointer.PointerCamera is null." + + "To fix this, either tag a Camera as \"MainCamera\" or set overridePointerCamera."); + return result; + } + + Vector3 rayPointerStart = pointerTransform.position; + Vector3 rayPointerEnd = rayPointerStart + + (pointerTransform.forward * pointer.CameraRayIntersectionDistance); + + Vector3 cameraLocation = camera.transform.position; + Vector3 finalRayDirection = rayPointerEnd - cameraLocation; + finalRayDirection.Normalize(); + + Vector3 finalRayStart = cameraLocation + (finalRayDirection * camera.nearClipPlane); + + result.ray = new Ray(finalRayStart, finalRayDirection); + break; + case RaycastMode.Direct: + result.ray = new Ray(pointerTransform.position, pointerTransform.forward); + break; + default: + throw new UnityException("Invalid RaycastMode " + mode + " passed into CalculateRay."); + } + + return result; + } + + /// Calculates the ray for the segment of the Hybrid raycast determined by the raycast mode + /// passed in. Throws an exception if Hybrid is passed in. + public static PointerRay CalculateHybridRay(GvrBasePointer pointer, RaycastMode hybridMode) + { + PointerRay result; + + switch (hybridMode) + { + case RaycastMode.Direct: + result = CalculateRay(pointer, hybridMode); + result.distance = pointer.CameraRayIntersectionDistance; + break; + case RaycastMode.Camera: + result = CalculateRay(pointer, hybridMode); + PointerRay directRay = CalculateHybridRay(pointer, RaycastMode.Direct); + result.ray.origin = directRay.ray.GetPoint(directRay.distance); + result.distanceFromStart = directRay.distance; + result.distance = pointer.MaxPointerDistance - directRay.distance; + break; + default: + throw new UnityException("Invalid RaycastMode " + hybridMode + " passed into CalculateHybridRay."); + } + + return result; + } + + /// @cond + protected virtual void Start() + { + GvrPointerInputModule.OnPointerCreated(this); + } + + /// @endcond + + #if UNITY_EDITOR + protected virtual void OnDrawGizmos() + { + if (drawDebugRays && Application.isPlaying && isActiveAndEnabled) + { + switch (raycastMode) + { + case RaycastMode.Camera: + // Camera line. + Gizmos.color = Color.green; + PointerRay pointerRay = CalculateRay(this, RaycastMode.Camera); + Gizmos.DrawLine(pointerRay.ray.origin, pointerRay.ray.GetPoint(pointerRay.distance)); + Camera camera = PointerCamera; + + // Pointer to intersection dotted line. + Vector3 intersection = + PointerTransform.position + (PointerTransform.forward * CameraRayIntersectionDistance); + UnityEditor.Handles.DrawDottedLine(PointerTransform.position, intersection, 1.0f); + break; + case RaycastMode.Direct: + // Direct line. + Gizmos.color = Color.blue; + pointerRay = CalculateRay(this, RaycastMode.Direct); + Gizmos.DrawLine(pointerRay.ray.origin, pointerRay.ray.GetPoint(pointerRay.distance)); + break; + case RaycastMode.Hybrid: + // Direct line. + Gizmos.color = Color.blue; + pointerRay = CalculateHybridRay(this, RaycastMode.Direct); + Gizmos.DrawLine(pointerRay.ray.origin, pointerRay.ray.GetPoint(pointerRay.distance)); + + // Camera line. + Gizmos.color = Color.green; + pointerRay = CalculateHybridRay(this, RaycastMode.Camera); + Gizmos.DrawLine(pointerRay.ray.origin, pointerRay.ray.GetPoint(pointerRay.distance)); + + // Camera to intersection dotted line. + camera = PointerCamera; + if (camera != null) + { + UnityEditor.Handles.DrawDottedLine(camera.transform.position, pointerRay.ray.origin, 1.0f); + } + + break; + default: + break; + } + } + } +#endif // UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointer.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointer.cs.meta new file mode 100644 index 0000000..2e14f87 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41c83891d500f43ca90ce70315712c84 +timeCreated: 1472600806 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointerRaycaster.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointerRaycaster.cs new file mode 100644 index 0000000..d565f82 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointerRaycaster.cs @@ -0,0 +1,91 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using System.Collections.Generic; + +/// This script provides shared functionality used by all Gvr raycasters. +public abstract class GvrBasePointerRaycaster : BaseRaycaster +{ + private GvrBasePointer.PointerRay lastRay; + + /// The mode used for raycasting. + protected GvrBasePointer.RaycastMode CurrentRaycastModeForHybrid { get; private set; } + + protected GvrBasePointerRaycaster() + { + } + + /// Returns the last ray created. + public GvrBasePointer.PointerRay GetLastRay() + { + return lastRay; + } + + /// Raycast against the scene + /// The pointer event data. + /// The result of the raycast is appended to this list. + public override void Raycast(PointerEventData eventData, List resultAppendList) + { + GvrBasePointer pointer = GvrPointerInputModule.Pointer; + if (pointer == null || !pointer.IsAvailable) + { + return; + } + + if (pointer.raycastMode == GvrBasePointer.RaycastMode.Hybrid) + { + RaycastHybrid(pointer, eventData, resultAppendList); + } + else + { + RaycastDefault(pointer, eventData, resultAppendList); + } + } + + /// Perform raycast on the scene. + /// The ray to use for the operation. + /// The radius of the ray to use when testing for hits. + /// The pointer event data. + /// The results are appended to this list + protected abstract bool PerformRaycast(GvrBasePointer.PointerRay pointerRay, float radius, + PointerEventData eventData, List resultAppendList); + + private void RaycastHybrid(GvrBasePointer pointer, PointerEventData eventData, List resultAppendList) + { + CurrentRaycastModeForHybrid = GvrBasePointer.RaycastMode.Direct; + lastRay = GvrBasePointer.CalculateHybridRay(pointer, CurrentRaycastModeForHybrid); + float radius = pointer.CurrentPointerRadius; + bool foundHit = PerformRaycast(lastRay, radius, eventData, resultAppendList); + + if (!foundHit) + { + CurrentRaycastModeForHybrid = GvrBasePointer.RaycastMode.Camera; + lastRay = GvrBasePointer.CalculateHybridRay(pointer, CurrentRaycastModeForHybrid); + PerformRaycast(lastRay, radius, eventData, resultAppendList); + } + } + + private void RaycastDefault(GvrBasePointer pointer, PointerEventData eventData, List resultAppendList) + { + lastRay = GvrBasePointer.CalculateRay(pointer, pointer.raycastMode); + float radius = pointer.CurrentPointerRadius; + PerformRaycast(lastRay, radius, eventData, resultAppendList); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointerRaycaster.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointerRaycaster.cs.meta new file mode 100644 index 0000000..f0c22b2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrBasePointerRaycaster.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b05767d6e8b854cd0987b344898cc15d +timeCreated: 1478543740 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrEventInterfacesExtension.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrEventInterfacesExtension.cs new file mode 100644 index 0000000..a5372ff --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrEventInterfacesExtension.cs @@ -0,0 +1,26 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine.EventSystems; + +/// Interface to implement if you wish to receive OnGvrPointerHover callbacks. +public interface IGvrPointerHoverHandler : IEventSystemHandler +{ + /// Called when pointer is hovering over GameObject. + void OnGvrPointerHover(PointerEventData eventData); +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrEventInterfacesExtension.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrEventInterfacesExtension.cs.meta new file mode 100644 index 0000000..e2e98f5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrEventInterfacesExtension.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e7441953e05443d4fa517d1ce7382b0c +timeCreated: 1475082809 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrExecuteEventsExtension.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrExecuteEventsExtension.cs new file mode 100644 index 0000000..2c096e7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrExecuteEventsExtension.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using System.Collections; + +/// This script extends the standard Unity EventSystem events with Gvr specific events. +public static class GvrExecuteEventsExtension +{ + private static readonly ExecuteEvents.EventFunction s_HoverHandler = Execute; + + private static void Execute(IGvrPointerHoverHandler handler, BaseEventData eventData) + { + handler.OnGvrPointerHover(ExecuteEvents.ValidateEventData(eventData)); + } + + /// Handler for hover events. + public static ExecuteEvents.EventFunction pointerHoverHandler + { + get { return s_HoverHandler; } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrExecuteEventsExtension.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrExecuteEventsExtension.cs.meta new file mode 100644 index 0000000..5c537c3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrExecuteEventsExtension.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2a443597ee157fe49a30c4310f1fb2eb +timeCreated: 1475082615 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerEventData.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerEventData.cs new file mode 100644 index 0000000..338a5df --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerEventData.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using System.Collections; + +/// This script extends the Unity PointerEventData struct with GoogleVR +/// specific data. +public class GvrPointerEventData : PointerEventData +{ + /// Constructs a new instance of GvrPointerEventData. + /// The event system associated with this event. + public GvrPointerEventData(EventSystem eventSystem) : base(eventSystem) + { + } + + /// The mask of buttons that are currently down. + public GvrControllerButton gvrButtonsDown; +} + +/// This class extends the Unity PointerEventData struct with GoogleVR +/// data accessors. +public static class GvrPointerEventDataExtension +{ + /// Returns the `GvrControllerButton` mask of buttons that went down to trigger the event. + public static GvrControllerButton GvrGetButtonsDown(this PointerEventData pointerEventData) + { + GvrPointerEventData gped = pointerEventData as GvrPointerEventData; + if (gped == null) + { + return 0; + } + + return gped.gvrButtonsDown; + } + + /// Returns the `GvrControllerInputDevice` that triggered the event. + public static GvrControllerInputDevice GvrGetControllerInputDevice(this PointerEventData pointerEventData) + { + return GvrControllerInput.GetDevice((GvrControllerHand)pointerEventData.pointerId); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerEventData.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerEventData.cs.meta new file mode 100644 index 0000000..56b87b9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerEventData.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cd2cb616496014a37b6820203c567a77 +timeCreated: 1534452710 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerGraphicRaycaster.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerGraphicRaycaster.cs new file mode 100644 index 0000000..1e8a044 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerGraphicRaycaster.cs @@ -0,0 +1,292 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +using Gvr.Internal; + +/// This script provides a raycaster for use with the GvrPointerInputModule. +/// It behaves similarly to the standards Graphic raycaster, except that it utilize raycast +/// modes specifically for Gvr. +/// +/// View GvrBasePointerRaycaster.cs and GvrPointerInputModule.cs for more details. +[AddComponentMenu("GoogleVR/GvrPointerGraphicRaycaster")] +[RequireComponent(typeof(Canvas))] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrPointerGraphicRaycaster")] +public class GvrPointerGraphicRaycaster : GvrBasePointerRaycaster +{ + /// Blocking object types. + public enum BlockingObjects + { + None = 0, + TwoD = 1, + ThreeD = 2, + All = 3, + } + + private const int NO_EVENT_MASK_SET = -1; + + /// Flag for ignoring reversed graphics direction. + public bool ignoreReversedGraphics = true; + + /// The type of objects blocking raycasts. + public BlockingObjects blockingObjects = BlockingObjects.ThreeD; + + /// The blocking layer mask to use when raycasting. + public LayerMask blockingMask = NO_EVENT_MASK_SET; + + private Canvas targetCanvas; + private List raycastResults = new List(); + private Camera cachedPointerEventCamera; + + private static readonly List sortedGraphics = new List(); + + /// The camera to use when raycasting. + public override Camera eventCamera + { + [SuppressMemoryAllocationError(IsWarning = true, Reason = "A getter for a Camera should not allocate.")] + get + { + GvrBasePointer pointer = GvrPointerInputModule.Pointer; + if (pointer == null) + { + return null; + } + + if (pointer.raycastMode == GvrBasePointer.RaycastMode.Hybrid) + { + return GetCameraForRaycastMode(pointer, CurrentRaycastModeForHybrid); + } + else + { + return GetCameraForRaycastMode(pointer, pointer.raycastMode); + } + } + } + + private Canvas canvas + { + get + { + if (targetCanvas != null) + { + return targetCanvas; + } + + targetCanvas = GetComponent(); + return targetCanvas; + } + } + + protected GvrPointerGraphicRaycaster() + { + } + + /// Perform raycast on the scene. + /// The ray to use for the operation. + /// The radius of the ray to use when testing for hits. + /// The pointer event data. + /// The list to append the results to. + protected override bool PerformRaycast(GvrBasePointer.PointerRay pointerRay, float radius, + PointerEventData eventData, List resultAppendList) + { + if (canvas == null) + { + return false; + } + + if (eventCamera == null) + { + return false; + } + + if (canvas.renderMode != RenderMode.WorldSpace) + { + Debug.LogError("GvrPointerGraphicRaycaster requires that the canvas renderMode is set to WorldSpace."); + return false; + } + + float hitDistance = float.MaxValue; + + if (blockingObjects != BlockingObjects.None) + { + float dist = pointerRay.distance; + + if (blockingObjects == BlockingObjects.ThreeD || blockingObjects == BlockingObjects.All) + { + RaycastHit hit; + if (Physics.Raycast(pointerRay.ray, out hit, dist, blockingMask)) + { + hitDistance = hit.distance; + } + } + + if (blockingObjects == BlockingObjects.TwoD || blockingObjects == BlockingObjects.All) + { + RaycastHit2D hit = Physics2D.Raycast(pointerRay.ray.origin, pointerRay.ray.direction, dist, blockingMask); + + if (hit.collider != null) + { + hitDistance = hit.fraction * dist; + } + } + } + + raycastResults.Clear(); + Ray finalRay; + Raycast(canvas, pointerRay.ray, eventCamera, pointerRay.distance, raycastResults, out finalRay); + + bool foundHit = false; + + for (int index = 0; index < raycastResults.Count; index++) + { + GameObject go = raycastResults[index].gameObject; + bool appendGraphic = true; + + if (ignoreReversedGraphics) + { + // If we have a camera compare the direction against the cameras forward. + Vector3 cameraFoward = eventCamera.transform.rotation * Vector3.forward; + Vector3 dir = go.transform.rotation * Vector3.forward; + appendGraphic = Vector3.Dot(cameraFoward, dir) > 0; + } + + if (appendGraphic) + { + float resultDistance = 0; + + Transform trans = go.transform; + Vector3 transForward = trans.forward; + + // http://geomalgorithms.com/a06-_intersect-2.html + float transDot = Vector3.Dot(transForward, trans.position - pointerRay.ray.origin); + float rayDot = Vector3.Dot(transForward, pointerRay.ray.direction); + resultDistance = transDot / rayDot; + Vector3 hitPosition = pointerRay.ray.origin + (pointerRay.ray.direction * resultDistance); + + // Check to see if the go is behind the camera. + if (resultDistance < 0 || resultDistance >= hitDistance || resultDistance > pointerRay.distance) + { + continue; + } + + resultDistance = resultDistance + pointerRay.distanceFromStart; + Transform pointerTransform = + GvrPointerInputModule.Pointer.PointerTransform; + float delta = (hitPosition - pointerTransform.position).magnitude; + if (delta < pointerRay.distanceFromStart) + { + continue; + } + + RaycastResult castResult = new RaycastResult + { + gameObject = go, + module = this, + distance = resultDistance, + worldPosition = hitPosition, + screenPosition = eventCamera.WorldToScreenPoint(hitPosition), + index = resultAppendList.Count, + depth = raycastResults[index].depth, + sortingLayer = canvas.sortingLayerID, + sortingOrder = canvas.sortingOrder + }; + + resultAppendList.Add(castResult); + foundHit = true; + } + } + + return foundHit; + } + + private Camera GetCameraForRaycastMode(GvrBasePointer pointer, GvrBasePointer.RaycastMode mode) + { + switch (mode) + { + case GvrBasePointer.RaycastMode.Direct: + if (cachedPointerEventCamera == null) + { + Transform pointerTransform = GvrPointerInputModule.Pointer.PointerTransform; + cachedPointerEventCamera = pointerTransform.GetComponent(); + } + + if (cachedPointerEventCamera == null) + { + cachedPointerEventCamera = AddDummyCameraToPointer(pointer); + return null; + } + + return cachedPointerEventCamera; + case GvrBasePointer.RaycastMode.Camera: + default: + return pointer.PointerCamera; + } + } + + private Camera AddDummyCameraToPointer(GvrBasePointer pointer) + { + Camera camera = pointer.PointerTransform.gameObject.AddComponent(); + camera.enabled = false; + camera.nearClipPlane = 0.01f; // Minimum Near Clip Plane. + return camera; + } + + /// Perform a raycast into the screen and collect all graphics underneath it. + private static void Raycast(Canvas canvas, Ray ray, Camera cam, float distance, + List results, out Ray finalRay) + { + Vector3 screenPoint = cam.WorldToScreenPoint(ray.GetPoint(distance)); + finalRay = cam.ScreenPointToRay(screenPoint); + + // Necessary for the event system + IList foundGraphics = GraphicRegistry.GetGraphicsForCanvas(canvas); + for (int i = 0; i < foundGraphics.Count; ++i) + { + Graphic graphic = foundGraphics[i]; + + // -1 means it hasn't been processed by the canvas, which means it isn't actually drawn + if (graphic.depth == -1 || !graphic.raycastTarget) + { + continue; + } + + if (!RectTransformUtility.RectangleContainsScreenPoint(graphic.rectTransform, screenPoint, cam)) + { + continue; + } + + if (graphic.Raycast(screenPoint, cam)) + { + sortedGraphics.Add(graphic); + } + } + + sortedGraphics.Sort((g1, g2) => g2.depth.CompareTo(g1.depth)); + + for (int i = 0; i < sortedGraphics.Count; ++i) + { + results.Add(sortedGraphics[i]); + } + + sortedGraphics.Clear(); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerGraphicRaycaster.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerGraphicRaycaster.cs.meta new file mode 100644 index 0000000..45e429d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerGraphicRaycaster.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 739800cd36aba44e9b04ce977e5784bd +timeCreated: 1478217778 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerPhysicsRaycaster.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerPhysicsRaycaster.cs new file mode 100644 index 0000000..6eea461 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerPhysicsRaycaster.cs @@ -0,0 +1,231 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using Gvr.Internal; + +/// This script provides a raycaster for use with the GvrPointerInputModule. +/// It behaves similarly to the standards Physics raycaster, except that it utilize raycast +/// modes specifically for Gvr. +/// +/// View GvrBasePointerRaycaster.cs and GvrPointerInputModule.cs for more details. +[AddComponentMenu("GoogleVR/GvrPointerPhysicsRaycaster")] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrPointerPhysicsRaycaster")] +public class GvrPointerPhysicsRaycaster : GvrBasePointerRaycaster +{ + /// Used to sort the raycast hits by distance. + private class HitComparer : IComparer + { + public int Compare(RaycastHit lhs, RaycastHit rhs) + { + return lhs.distance.CompareTo(rhs.distance); + } + } + + /// Const to use for clarity when no event mask is set + protected const int NO_EVENT_MASK_SET = -1; + + /// The maximum allowed value for the field maxRaycastHits. + private const int MAX_RAYCAST_HITS_MAX = 512; + + /// Layer mask used to filter events. Always combined with the camera's culling mask if a camera is used. + [SerializeField] + protected LayerMask raycasterEventMask = NO_EVENT_MASK_SET; + + /// The max number of hits that the raycaster can detect at once. + /// They are NOT guaranteed to be ordered by distance. This value should be set to a higher number + /// than the number of objects the pointer is expected to intersect with in a single frame. + /// + /// This functionality is used to prevent unnecessary memory allocation to improve performance. + /// https://docs.unity3d.com/ScriptReference/Physics.SphereCastNonAlloc.html + [SerializeField] + [Range(1, MAX_RAYCAST_HITS_MAX)] + private int maxRaycastHits = 64; + + /// Buffer of raycast hits re-used each time PerformRaycast is called. + private RaycastHit[] hits; + + /// Used to sort the hits by distance. + private HitComparer hitComparer = new HitComparer(); + + /// The maximum number of hits that the raycaster can detect at once. + /// + /// They are NOT guaranteed to be ordered by distance. This value should be set to a higher number + /// than the number of objects the pointer is expected to intersect with in a single frame. + /// + /// This functionality is used to prevent unnecessary memory allocation to improve performance. + /// https://docs.unity3d.com/ScriptReference/Physics.SphereCastNonAlloc.html + /// + public int MaxRaycastHits + { + get + { + return maxRaycastHits; + } + + set + { + maxRaycastHits = Mathf.Min(value, MAX_RAYCAST_HITS_MAX); + + if (Application.isPlaying && hits != null && hits.Length != maxRaycastHits) + { + hits = new RaycastHit[maxRaycastHits]; + } + } + } + + /// Camera used for masking layers and determining the screen position of the raycast result. + public override Camera eventCamera + { + [SuppressMemoryAllocationError(IsWarning = true, Reason = "A getter for a Camera should not allocate.")] + get + { + GvrBasePointer pointer = GvrPointerInputModule.Pointer; + if (pointer == null) + { + return null; + } + + return pointer.PointerCamera; + } + } + + /// Event mask used to determine which objects will receive events. + public int finalEventMask + { + get + { + return (eventCamera != null) ? eventCamera.cullingMask & eventMask : NO_EVENT_MASK_SET; + } + } + + /// Layer mask used to filter events. Always combined with the camera's culling mask if a camera is used. + public LayerMask eventMask + { + get + { + return raycasterEventMask; + } + + set + { + raycasterEventMask = value; + } + } + + protected GvrPointerPhysicsRaycaster() + { + } + + /// @cond + protected override void Awake() + { + base.Awake(); + hits = new RaycastHit[maxRaycastHits]; + } + + /// @endcond + + /// Perform raycast on the scene. + /// The ray to use for the operation. + /// The radius of the ray to use when testing for hits. + /// The pointer event data. + /// The results are appended to this list + protected override bool PerformRaycast(GvrBasePointer.PointerRay pointerRay, float radius, + PointerEventData eventData, List resultAppendList) + { + if (eventCamera == null) + { + return false; + } + + int numHits; + if (radius > 0.0f) + { + numHits = Physics.SphereCastNonAlloc(pointerRay.ray, radius, hits, pointerRay.distance, finalEventMask); + } + else + { + numHits = Physics.RaycastNonAlloc(pointerRay.ray, hits, pointerRay.distance, finalEventMask); + } + + if (numHits == 0) + { + return false; + } + + if (numHits == MaxRaycastHits) + { + MaxRaycastHits *= 2; + Debug.LogWarningFormat("Physics Raycast/Spherecast returned {0} hits, which is the current " + + "maximum and means that some hits may have been lost. Setting maxRaycastHits to {1}. " + + "Please set maxRaycastHits to a sufficiently high value for your scene.", + numHits, MaxRaycastHits); + } + + Array.Sort(hits, 0, numHits, hitComparer); + + for (int i = 0; i < numHits; ++i) + { + Vector3 projection = Vector3.Project(hits[i].point - pointerRay.ray.origin, pointerRay.ray.direction); + Vector3 hitPosition = projection + pointerRay.ray.origin; + float resultDistance = hits[i].distance + pointerRay.distanceFromStart; + + Transform pointerTransform = + GvrPointerInputModule.Pointer.PointerTransform; + float delta = (hitPosition - pointerTransform.position).magnitude; + if (delta < pointerRay.distanceFromStart) + { + continue; + } + + RaycastResult result = new RaycastResult + { + gameObject = hits[i].collider.gameObject, + module = this, + distance = resultDistance, + worldPosition = hitPosition, + worldNormal = hits[i].normal, + screenPosition = eventCamera.WorldToScreenPoint(hitPosition), + index = resultAppendList.Count, + sortingLayer = 0, + sortingOrder = 0 + }; + + resultAppendList.Add(result); + } + + return true; + } +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + + // Makes sure that the hits buffer is updated if maxRaycastHits is changed in the inspector + // while testing in the editor. + if (Application.isPlaying) + { + MaxRaycastHits = maxRaycastHits; + } + } +#endif // UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerPhysicsRaycaster.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerPhysicsRaycaster.cs.meta new file mode 100644 index 0000000..e1c3870 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerPhysicsRaycaster.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eb5dd43baba2d4dc1bab789615567e3d +timeCreated: 1478196044 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerScrollInput.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerScrollInput.cs new file mode 100644 index 0000000..22b70a8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerScrollInput.cs @@ -0,0 +1,343 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Gvr.Internal; + +/// This class is used by _GvrPointerInputModule_ to route scroll events through Unity's Event System. +/// It maintains indepedent velocities for each instance of _IScrollHandler_ that is currently being scrolled. +/// Inertia can optionally be toggled off. +[System.Serializable] +public class GvrPointerScrollInput +{ + /// Property name for accessing inertia. + public const string PROPERTY_NAME_INERTIA = "inertia"; + + /// Property name for accessing deceleration rate. + public const string PROPERTY_NAME_DECELERATION_RATE = "decelerationRate"; + + private class ScrollInfo + { + public bool isScrollingX = false; + public bool isScrollingY = false; + public Vector2 initScroll = Vector2.zero; + public Vector2 lastScroll = Vector2.zero; + public Vector2 scrollVelocity = Vector2.zero; + public IGvrScrollSettings scrollSettings = null; + + public bool IsScrolling + { + get + { + return isScrollingX || isScrollingY; + } + } + } + + /// Inertia means that scroll events will continue for a while after the user stops + /// touching the touchpad. It gradually slows down according to the decelerationRate. + [Tooltip("Determines if movement inertia is enabled.")] + public bool inertia = true; + + /// The deceleration rate is the speed reduction per second. + /// A value of 0.5 halves the speed each second. The default is 0.05. + /// The deceleration rate is only used when inertia is enabled. + [Tooltip("The rate at which movement slows down.")] + public float decelerationRate = 0.05f; + + /// Multiplier for calculating the scroll delta so that the scroll delta is + /// within the order of magnitude that the UI system expects. + public const float SCROLL_DELTA_MULTIPLIER = 1000.0f; + + private const float CUTOFF_HZ = 10.0f; + private const float RC = (float)(1.0 / (2.0 * Mathf.PI * CUTOFF_HZ)); + private const float SPEED_CLAMP_RATIO = 0.05f; + private const float SPEED_CLAMP = (SPEED_CLAMP_RATIO * SCROLL_DELTA_MULTIPLIER); + private const float SPEED_CLAMP_SQUARED = SPEED_CLAMP * SPEED_CLAMP; + private const float INERTIA_THRESHOLD_RATIO = 0.2f; + private const float INERTIA_THRESHOLD = (INERTIA_THRESHOLD_RATIO * SCROLL_DELTA_MULTIPLIER); + private const float INERTIA_THRESHOLD_SQUARED = INERTIA_THRESHOLD * INERTIA_THRESHOLD; + private const float SLOP_VERTICAL = 0.165f * SCROLL_DELTA_MULTIPLIER; + private const float SLOP_HORIZONTAL = 0.15f * SCROLL_DELTA_MULTIPLIER; + + private Dictionary scrollHandlers = new Dictionary(); + private List scrollingObjects = new List(); + + /// Handle scrolling + /// The game object having the IScrollHandler component. + /// The pointer event data. + /// The pointer object. + /// The executor to use to process the event. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public void HandleScroll(GameObject currentGameObject, PointerEventData pointerData, + GvrBasePointer pointer, IGvrEventExecutor eventExecutor) + { + bool touchDown = false; + bool touching = false; + bool touchUp = false; + Vector2 currentScroll = Vector2.zero; + + if (pointer != null && pointer.IsAvailable) + { + touchDown = pointer.TouchDown; + touching = pointer.IsTouching; + touchUp = pointer.TouchUp; + currentScroll = pointer.TouchPos * SCROLL_DELTA_MULTIPLIER; + } + + GameObject currentScrollHandler = eventExecutor.GetEventHandler(currentGameObject); + + if (touchDown) + { + RemoveScrollHandler(currentScrollHandler); + } + + if (currentScrollHandler != null && (touchDown || touching)) + { + OnTouchingScrollHandler(currentScrollHandler, pointerData, currentScroll, eventExecutor); + } + else if (touchUp && currentScrollHandler != null) + { + OnReleaseScrollHandler(currentScrollHandler); + } + + StopScrollingIfNecessary(touching, currentScrollHandler); + UpdateInertiaScrollHandlers(touching, currentScrollHandler, pointerData, eventExecutor); + } + + private void OnTouchingScrollHandler(GameObject currentScrollHandler, PointerEventData pointerData, + Vector2 currentScroll, IGvrEventExecutor eventExecutor) + { + ScrollInfo scrollInfo = null; + if (!scrollHandlers.ContainsKey(currentScrollHandler)) + { + scrollInfo = AddScrollHandler(currentScrollHandler, currentScroll); + } + else + { + scrollInfo = scrollHandlers[currentScrollHandler]; + } + + // Detect if we should start scrolling along the x-axis based on the horizontal slop threshold. + if (CanScrollStartX(scrollInfo, currentScroll)) + { + scrollInfo.isScrollingX = true; + } + + // Detect if we should start scrolling along the y-axis based on the vertical slop threshold. + if (CanScrollStartY(scrollInfo, currentScroll)) + { + scrollInfo.isScrollingY = true; + } + + if (scrollInfo.IsScrolling) + { + Vector2 clampedScroll = currentScroll; + Vector2 clampedLastScroll = scrollInfo.lastScroll; + if (!scrollInfo.isScrollingX) + { + clampedScroll.x = 0.0f; + clampedLastScroll.x = 0.0f; + } + + if (!scrollInfo.isScrollingY) + { + clampedScroll.y = 0.0f; + clampedLastScroll.y = 0.0f; + } + + Vector2 scrollDisplacement = clampedScroll - clampedLastScroll; + UpdateVelocity(scrollInfo, scrollDisplacement); + + if (!ShouldUseInertia(scrollInfo)) + { + // If inertia is disabled, then we send scroll events immediately. + pointerData.scrollDelta = scrollDisplacement; + eventExecutor.ExecuteHierarchy(currentScrollHandler, pointerData, ExecuteEvents.scrollHandler); + pointerData.scrollDelta = Vector2.zero; + } + } + + scrollInfo.lastScroll = currentScroll; + } + + private void OnReleaseScrollHandler(GameObject currentScrollHandler) + { + // When we touch up, immediately stop scrolling the currentScrollHandler if it's velocity is low. + ScrollInfo scrollInfo; + if (scrollHandlers.TryGetValue(currentScrollHandler, out scrollInfo)) + { + if (!scrollInfo.IsScrolling || scrollInfo.scrollVelocity.sqrMagnitude <= INERTIA_THRESHOLD_SQUARED) + { + RemoveScrollHandler(currentScrollHandler); + } + } + } + + private void UpdateVelocity(ScrollInfo scrollInfo, Vector2 scrollDisplacement) + { + Vector2 newVelocity = scrollDisplacement / Time.deltaTime; + float weight = Time.deltaTime / (RC + Time.deltaTime); + scrollInfo.scrollVelocity = Vector2.Lerp(scrollInfo.scrollVelocity, newVelocity, weight); + } + + private void StopScrollingIfNecessary(bool touching, GameObject currentScrollHandler) + { + if (scrollHandlers.Count == 0) + { + return; + } + + // If inertia is disabled, stop scrolling any scrollHandler that isn't currently being touched. + for (int i = scrollingObjects.Count - 1; i >= 0; i--) + { + GameObject scrollHandler = scrollingObjects[i]; + ScrollInfo scrollInfo = scrollHandlers[scrollHandler]; + + bool isScrollling = scrollInfo.IsScrolling; + + bool isVelocityBelowThreshold = + isScrollling && scrollInfo.scrollVelocity.sqrMagnitude <= SPEED_CLAMP_SQUARED; + + bool isCurrentlyTouching = touching && scrollHandler == currentScrollHandler; + + bool shouldUseInertia = ShouldUseInertia(scrollInfo); + + bool shouldStopScrolling = isVelocityBelowThreshold + || ((!shouldUseInertia || !isScrollling) && !isCurrentlyTouching); + + if (shouldStopScrolling) + { + RemoveScrollHandler(scrollHandler); + } + } + } + + private void UpdateInertiaScrollHandlers(bool touching, GameObject currentScrollHandler, + PointerEventData pointerData, IGvrEventExecutor eventExecutor) + { + if (pointerData == null) + { + return; + } + + // If the currentScrollHandler is null, then the currently scrolling scrollHandlers + // must still be decelerated so the function does not return early. + for (int i = 0; i < scrollingObjects.Count; i++) + { + GameObject scrollHandler = scrollingObjects[i]; + ScrollInfo scrollInfo = scrollHandlers[scrollHandler]; + + if (!ShouldUseInertia(scrollInfo)) + { + continue; + } + + if (scrollInfo.IsScrolling) + { + // Decelerate the scrollHandler if necessary. + if (!touching || scrollHandler != currentScrollHandler) + { + float finalDecelerationRate = GetDecelerationRate(scrollInfo); + scrollInfo.scrollVelocity *= Mathf.Pow(finalDecelerationRate, Time.deltaTime); + } + + // Send the scroll events. + pointerData.scrollDelta = scrollInfo.scrollVelocity * Time.deltaTime; + eventExecutor.ExecuteHierarchy(scrollHandler, pointerData, ExecuteEvents.scrollHandler); + } + } + + pointerData.scrollDelta = Vector2.zero; + } + + private ScrollInfo AddScrollHandler(GameObject scrollHandler, Vector2 currentScroll) + { + ScrollInfo scrollInfo = new ScrollInfo(); + scrollInfo.initScroll = currentScroll; + scrollInfo.lastScroll = currentScroll; + scrollInfo.scrollSettings = scrollHandler.GetComponent(); + scrollHandlers[scrollHandler] = scrollInfo; + scrollingObjects.Add(scrollHandler); + return scrollInfo; + } + + private void RemoveScrollHandler(GameObject scrollHandler) + { + // Check if it's null via object.Equals instead of doing a direct comparison + // to avoid using Unity's equality check override for UnityEngine.Objects. + // This is so that we can remove Unity objects that have been Destroyed from the dictionary, + // but will still return early when an object is actually null. + if (object.Equals(scrollHandler, null)) + { + return; + } + + if (!scrollHandlers.ContainsKey(scrollHandler)) + { + return; + } + + scrollHandlers.Remove(scrollHandler); + scrollingObjects.Remove(scrollHandler); + } + + private bool ShouldUseInertia(ScrollInfo scrollInfo) + { + if (scrollInfo != null && scrollInfo.scrollSettings != null) + { + return scrollInfo.scrollSettings.InertiaOverride; + } + + return inertia; + } + + private float GetDecelerationRate(ScrollInfo scrollInfo) + { + if (scrollInfo != null && scrollInfo.scrollSettings != null) + { + return scrollInfo.scrollSettings.DecelerationRateOverride; + } + + return decelerationRate; + } + + private static bool CanScrollStartX(ScrollInfo scrollInfo, Vector2 currentScroll) + { + if (scrollInfo == null) + { + return false; + } + + return Mathf.Abs(currentScroll.x - scrollInfo.initScroll.x) >= SLOP_HORIZONTAL; + } + + private static bool CanScrollStartY(ScrollInfo scrollInfo, Vector2 currentScroll) + { + if (scrollInfo == null) + { + return false; + } + + return Mathf.Abs(currentScroll.y - scrollInfo.initScroll.y) >= SLOP_VERTICAL; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerScrollInput.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerScrollInput.cs.meta new file mode 100644 index 0000000..fe4fa90 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrPointerScrollInput.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 23744ffc3b678488e858089d1a2973d9 +timeCreated: 1487096177 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrScrollSettings.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrScrollSettings.cs new file mode 100644 index 0000000..95dbb7f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrScrollSettings.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +/// Used to override the global scroll settings in _GvrPointerScrollInput_ +/// for the GameObject that this script is attached to. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrScrollSettings")] +public class GvrScrollSettings : MonoBehaviour, IGvrScrollSettings +{ + /// Override the Inertia property in _GvrPointerScrollInput_ for this object. + /// + /// Inertia means that scroll events will continue for a while after the user stops + /// touching the touchpad. It gradually slows down according to the decelerationRate. + [Tooltip("Determines if movement inertia is enabled.")] + public bool inertiaOverride = true; + + /// The deceleration rate is the speed reduction per second. + /// A value of 0.5 halves the speed each second. The default is 0.05. + /// The deceleration rate is only used when inertia is enabled. + [Tooltip("The rate at which movement slows down.")] + public float decelerationRateOverride = 0.05f; + + /// Inertia means that scroll events will continue for a while after the user stops + /// touching the touchpad. It gradually slows down according to the decelerationRate. + /// + public bool InertiaOverride + { + get { return inertiaOverride; } + } + + /// The deceleration rate is the speed reduction per second. + /// A value of 0.5 halves the speed each second. + /// + /// The default is 0.05. + /// The deceleration rate is only used when inertia is enabled. + /// + public float DecelerationRateOverride + { + get { return decelerationRateOverride; } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrScrollSettings.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrScrollSettings.cs.meta new file mode 100644 index 0000000..682bfb8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrScrollSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5db1ab7348db34ecbac8c834c5d3425f +timeCreated: 1496793989 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrXREventsSubscriber.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrXREventsSubscriber.cs new file mode 100644 index 0000000..a829cf3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrXREventsSubscriber.cs @@ -0,0 +1,65 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using XRDevice = UnityEngine.VR.VRDevice; +using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + +/// Handler for subscribing XR Unity actions to GVR Actions. +public class GvrXREventsSubscriber : MonoBehaviour +{ + private static GvrXREventsSubscriber instance; + private string _loadedDeviceName; + + /// The device name loaded from settings. + public static string loadedDeviceName + { + get { return GetInstance()._loadedDeviceName; } + set { GetInstance()._loadedDeviceName = value; } + } + + private static void OnDeviceLoadAction(string newLoadedDeviceName) + { + loadedDeviceName = newLoadedDeviceName; + } + + void Awake() + { + instance = this; + _loadedDeviceName = XRSettings.loadedDeviceName; +#if UNITY_2018_3_OR_NEWER + XRDevice.deviceLoaded += OnDeviceLoadAction; +#endif // UNITY_2018_3_OR_NEWER + } + + private static GvrXREventsSubscriber GetInstance() + { + if (instance == null) + { + GameObject gvrXREventsSubscriber = new GameObject("GvrXREventsSubscriber"); + gvrXREventsSubscriber.AddComponent(); + } + + return instance; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrXREventsSubscriber.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrXREventsSubscriber.cs.meta new file mode 100644 index 0000000..cc86315 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/GvrXREventsSubscriber.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12a8088f6fe474f31bffbd957940f5fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/IGvrScrollSettings.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/IGvrScrollSettings.cs new file mode 100644 index 0000000..04d13fb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/IGvrScrollSettings.cs @@ -0,0 +1,45 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Collections; + +/// Interface to implement to override the global scroll settings +/// in _GvrPointerScrollInput_ for an object. +/// +/// Must be implmented by a component. It will override the scroll settings for the +/// GameObject that the component is attached to. +/// +/// Can use _GvrScrollSettings_ To override scroll settings for any existing UI type, +/// or a custom UI component can implement this directly to override the scroll settings +/// for the UI component's use case. +public interface IGvrScrollSettings +{ + /// Override the Inertia property in _GvrPointerScrollInput_ for this object. + /// + /// Inertia means that scroll events will continue for a while after the user stops + /// touching the touchpad. It gradually slows down according to the decelerationRate. + bool InertiaOverride { get; } + + /// Override the DecelerationRate property in _GvrPointerScrollInput_ for this object. + /// + /// The deceleration rate is the speed reduction per second. + /// A value of 0.5 halves the speed each second. + /// The deceleration rate is only used when inertia is enabled. + float DecelerationRateOverride { get; } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/IGvrScrollSettings.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/IGvrScrollSettings.cs.meta new file mode 100644 index 0000000..e0271c6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/IGvrScrollSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e4a605c315b944e7f84ed1dbe9ff6921 +timeCreated: 1496856692 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule.meta new file mode 100644 index 0000000..c7b74fa --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a1679b0015de44ffdbabd6546471eab0 +folderAsset: yes +timeCreated: 1492665005 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrAllEventsTrigger.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrAllEventsTrigger.cs new file mode 100644 index 0000000..40772a0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrAllEventsTrigger.cs @@ -0,0 +1,146 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using System.Collections; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.EventSystems; + +/// Exposes events from _GvrEventExecutor_ that are fired by _GvrPointerInputModule_ to the editor. +/// Makes it possible to handle EventSystem events globally. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrAllEventsTrigger")] +public class GvrAllEventsTrigger : MonoBehaviour +{ + [Serializable] + public class TriggerEvent : UnityEvent + { + } + + /// Event for OnPointerClick + public TriggerEvent OnPointerClick; + + /// Event for OnPointerDown + public TriggerEvent OnPointerDown; + + /// Event for OnPointerUp + public TriggerEvent OnPointerUp; + + /// Event for OnPointerEnter + public TriggerEvent OnPointerEnter; + + /// Event for OnPointerExit + public TriggerEvent OnPointerExit; + + /// Event for OnScroll + public TriggerEvent OnScroll; + + private bool listenersAdded; + + void OnEnable() + { + AddListeners(); + } + + void OnDisable() + { + RemoveListeners(); + } + + void Start() + { + // The eventExecutor may not be available during OnEnable when the script is first created. + AddListeners(); + } + + private void AddListeners() + { + GvrEventExecutor eventExecutor = GvrPointerInputModule.FindEventExecutor(); + if (eventExecutor == null) + { + return; + } + + if (listenersAdded) + { + return; + } + + eventExecutor.OnPointerClick += OnPointerClickHandler; + eventExecutor.OnPointerDown += OnPointerDownHandler; + eventExecutor.OnPointerUp += OnPointerUpHandler; + eventExecutor.OnPointerEnter += OnPointerEnterHandler; + eventExecutor.OnPointerExit += OnPointerExitHandler; + eventExecutor.OnScroll += OnScrollHandler; + + listenersAdded = true; + } + + private void RemoveListeners() + { + GvrEventExecutor eventExecutor = GvrPointerInputModule.FindEventExecutor(); + if (eventExecutor == null) + { + return; + } + + if (!listenersAdded) + { + return; + } + + eventExecutor.OnPointerClick -= OnPointerClickHandler; + eventExecutor.OnPointerDown -= OnPointerDownHandler; + eventExecutor.OnPointerUp -= OnPointerUpHandler; + eventExecutor.OnPointerEnter -= OnPointerEnterHandler; + eventExecutor.OnPointerExit -= OnPointerExitHandler; + eventExecutor.OnScroll -= OnScrollHandler; + + listenersAdded = false; + } + + private void OnPointerClickHandler(GameObject target, PointerEventData eventData) + { + OnPointerClick.Invoke(target, eventData); + } + + private void OnPointerDownHandler(GameObject target, PointerEventData eventData) + { + OnPointerDown.Invoke(target, eventData); + } + + private void OnPointerUpHandler(GameObject target, PointerEventData eventData) + { + OnPointerUp.Invoke(target, eventData); + } + + private void OnPointerEnterHandler(GameObject target, PointerEventData eventData) + { + OnPointerEnter.Invoke(target, eventData); + } + + private void OnPointerExitHandler(GameObject target, PointerEventData eventData) + { + OnPointerExit.Invoke(target, eventData); + } + + private void OnScrollHandler(GameObject target, PointerEventData eventData) + { + OnScroll.Invoke(target, eventData); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrAllEventsTrigger.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrAllEventsTrigger.cs.meta new file mode 100644 index 0000000..948d0c1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrAllEventsTrigger.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ca0157c63fb794df89c6735fc602eca2 +timeCreated: 1493228030 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrEventExecutor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrEventExecutor.cs new file mode 100644 index 0000000..2238ede --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrEventExecutor.cs @@ -0,0 +1,167 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; +using Gvr.Internal; + +/// Wraps UnityEngine.EventSystems.ExecuteEvents. +/// Also, exposes event delegates to allow global handling of events. +public class GvrEventExecutor : IGvrEventExecutor +{ + /// Delegate type for handling pointer events. + public delegate void EventDelegate(GameObject target, PointerEventData eventData); + + /// Fired when a Click occurs on any object. + public event EventDelegate OnPointerClick + { + add { AddEventDelegate(value); } + remove { RemoveEventDelegate(value); } + } + + /// Fired when a Down event occurs on any object. + public event EventDelegate OnPointerDown + { + add { AddEventDelegate(value); } + remove { RemoveEventDelegate(value); } + } + + /// Fired when an Up event occurs on any object. + public event EventDelegate OnPointerUp + { + add { AddEventDelegate(value); } + remove { RemoveEventDelegate(value); } + } + + /// Fired when an Enter event occurs on any object. + public event EventDelegate OnPointerEnter + { + add { AddEventDelegate(value); } + remove { RemoveEventDelegate(value); } + } + + /// Fired when an Exit event occurs on any object. + public event EventDelegate OnPointerExit + { + add { AddEventDelegate(value); } + remove { RemoveEventDelegate(value); } + } + + /// Fired when a Scroll event occurs on any object. + public event EventDelegate OnScroll + { + add { AddEventDelegate(value); } + remove { RemoveEventDelegate(value); } + } + + /// Stores delegates for events. + private Dictionary eventTable; + + public GvrEventExecutor() + { + eventTable = new Dictionary(); + } + + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public bool Execute(GameObject target, + BaseEventData eventData, + ExecuteEvents.EventFunction functor) + where T : IEventSystemHandler + { + bool result = ExecuteEvents.Execute(target, eventData, functor); + CallEventDelegate(target, eventData); + + return result; + } + + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public GameObject ExecuteHierarchy(GameObject root, + BaseEventData eventData, + ExecuteEvents.EventFunction callbackFunction) + where T : IEventSystemHandler + { + GameObject result = ExecuteEvents.ExecuteHierarchy(root, eventData, callbackFunction); + CallEventDelegate(root, eventData); + + return result; + } + + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public GameObject GetEventHandler(GameObject root) + where T : IEventSystemHandler + { + return ExecuteEvents.GetEventHandler(root); + } + + private void CallEventDelegate(GameObject target, BaseEventData eventData) + where T : IEventSystemHandler + { + Type type = typeof(T); + + EventDelegate eventDelegate; + if (eventTable.TryGetValue(type, out eventDelegate)) + { + PointerEventData pointerEventData = eventData as PointerEventData; + if (pointerEventData == null) + { + Debug.LogError("Event data must be PointerEventData."); + return; + } + + eventDelegate(target, pointerEventData); + } + } + + private void AddEventDelegate(EventDelegate eventDelegate) + { + Type type = typeof(T); + + EventDelegate existingDelegate; + if (eventTable.TryGetValue(type, out existingDelegate)) + { + eventTable[type] = existingDelegate + eventDelegate; + } + else + { + eventTable[type] = eventDelegate; + } + } + + private void RemoveEventDelegate(EventDelegate eventDelegate) + { + Type type = typeof(T); + + EventDelegate existingDelegate; + if (!eventTable.TryGetValue(type, out existingDelegate)) + { + return; + } + + eventDelegate = existingDelegate - eventDelegate; + if (eventDelegate != null) + { + eventTable[type] = eventDelegate; + } + else + { + eventTable.Remove(type); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrEventExecutor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrEventExecutor.cs.meta new file mode 100644 index 0000000..7ede10e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrEventExecutor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8a93ebe04d36b49c388adce4ac442226 +timeCreated: 1493142648 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs new file mode 100644 index 0000000..ad277f2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs @@ -0,0 +1,281 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// Licensed under the MIT License, you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// +// http://www.opensource.org/licenses/mit-license.php +// +// 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. +// +//----------------------------------------------------------------------- + +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +using Gvr.Internal; + +/// This script provides an implemention of Unity's `BaseInputModule` class, so +/// that Canvas-based (_uGUI_) UI elements and 3D scene objects can be +/// interacted with in a Gvr Application. +/// +/// This script is intended for use with either a +/// 3D Pointer with the Daydream Controller (Recommended for Daydream), +/// or a Gaze-based-Pointer (Recommended for Cardboard). +/// +/// To use, attach to the scene's **EventSystem** object. Be sure to move it above the +/// other modules, such as _TouchInputModule_ and _StandaloneInputModule_, in order +/// for the Pointer to take priority in the event system. +/// +/// If you are using a **Canvas**, set the _Render Mode_ to **World Space**, +/// and add the _GvrPointerGraphicRaycaster_ script to the object. +/// +/// If you'd like pointers to work with 3D scene objects, add a _GvrPointerPhysicsRaycaster_ to the main camera, +/// and add a component that implements one of the _Event_ interfaces (_EventTrigger_ will work nicely) to +/// an object with a collider. +/// +/// GvrPointerInputModule emits the following events: _Enter_, _Exit_, _Down_, _Up_, _Click_, _Select_, +/// _Deselect_, _UpdateSelected_, and _GvrPointerHover_. Scroll, move, and submit/cancel events are not emitted. +/// +/// To use a 3D Pointer with the Daydream Controller: +/// - Add the prefab GoogleVR/Prefabs/UI/GvrControllerPointer to your scene. +/// - Set the parent of GvrControllerPointer to the same parent as the main camera +/// (With a local position of 0,0,0). +/// +/// To use a Gaze-based-pointer: +/// - Add the prefab GoogleVR/Prefabs/UI/GvrReticlePointer to your scene. +/// - Set the parent of GvrReticlePointer to the main camera. +/// +[AddComponentMenu("GoogleVR/GvrPointerInputModule")] +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrPointerInputModule")] +public class GvrPointerInputModule : BaseInputModule, IGvrInputModuleController +{ + /// Determines whether Pointer input is active in VR Mode only (`true`), or all of the + /// time (`false`). Set to false if you plan to use direct screen taps or other + /// input when not in VR Mode. + [Tooltip("Whether Pointer input is active in VR Mode only (true), or all the time (false).")] + public bool vrModeOnly = false; + + /// Manages scroll events for the input module. + [Tooltip("Manages scroll events for the input module.")] + public GvrPointerScrollInput scrollInput = new GvrPointerScrollInput(); + + /// The implementation object of this module. + public GvrPointerInputModuleImpl Impl { get; private set; } + + /// The executor this module uses to process events. + public GvrEventExecutor EventExecutor { get; private set; } + + /// The event system reference. + public new EventSystem eventSystem + { + get + { + return base.eventSystem; + } + } + + /// List of raycast results used as a cache. + public List RaycastResultCache + { + get + { + return m_RaycastResultCache; + } + } + + /// Static access to the GvrBasePointer. + public static GvrBasePointer Pointer + { + get + { + GvrPointerInputModule module = FindInputModule(); + if (module == null || module.Impl == null) + { + return null; + } + + return module.Impl.Pointer; + } + + set + { + GvrPointerInputModule module = FindInputModule(); + if (module == null || module.Impl == null) + { + return; + } + + module.Impl.Pointer = value; + } + } + + /// GvrBasePointer calls this when it is created. + /// If a pointer hasn't already been assigned, it + /// will assign the newly created one by default. + /// + /// This simplifies the common case of having only one + /// GvrBasePointer so is can be automatically hooked up + /// to the manager. If multiple GvrBasePointers are in + /// the scene, the app has to take responsibility for + /// setting which one is active. + public static void OnPointerCreated(GvrBasePointer createdPointer) + { + GvrPointerInputModule module = FindInputModule(); + if (module == null || module.Impl == null) + { + return; + } + + if (module.Impl.Pointer == null) + { + module.Impl.Pointer = createdPointer; + } + } + + /// Helper function to find the Event Executor that is part of + /// the input module if one exists in the scene. + public static GvrEventExecutor FindEventExecutor() + { + GvrPointerInputModule gvrInputModule = FindInputModule(); + if (gvrInputModule == null) + { + return null; + } + + return gvrInputModule.EventExecutor; + } + + /// Helper function to find the input module if one exists in the + /// scene and it is the active module. + public static GvrPointerInputModule FindInputModule() + { + if (EventSystem.current == null) + { + return null; + } + + EventSystem eventSystem = EventSystem.current; + if (eventSystem == null) + { + return null; + } + + GvrPointerInputModule gvrInputModule = + eventSystem.GetComponent(); + + return gvrInputModule; + } + + /// Convenience function to access what the current RaycastResult. + public static RaycastResult CurrentRaycastResult + { + get + { + GvrPointerInputModule inputModule = GvrPointerInputModule.FindInputModule(); + if (inputModule == null) + { + return new RaycastResult(); + } + + if (inputModule.Impl == null) + { + return new RaycastResult(); + } + + if (inputModule.Impl.CurrentEventData == null) + { + return new RaycastResult(); + } + + return inputModule.Impl.CurrentEventData.pointerCurrentRaycast; + } + } + + /// Returns true if the module should be activated. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public override bool ShouldActivateModule() + { + return Impl.ShouldActivateModule(); + } + + /// Deactivates this input module. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public override void DeactivateModule() + { + Impl.DeactivateModule(); + } + + /// Returns true if the pointer is over a game object. + /// The pointer id to check. + public override bool IsPointerOverGameObject(int pointerId) + { + return Impl.IsPointerOverGameObject(pointerId); + } + + /// Processes input events. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public override void Process() + { + UpdateImplProperties(); + Impl.Process(); + } + + /// @cond + protected override void Awake() + { + base.Awake(); + Impl = new GvrPointerInputModuleImpl(); + EventExecutor = new GvrEventExecutor(); + UpdateImplProperties(); + } + + /// @endcond + + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public bool ShouldActivate() + { + return base.ShouldActivateModule(); + } + + public void Deactivate() + { + base.DeactivateModule(); + } + + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public new GameObject FindCommonRoot(GameObject g1, GameObject g2) + { + return BaseInputModule.FindCommonRoot(g1, g2); + } + + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public new BaseEventData GetBaseEventData() + { + return base.GetBaseEventData(); + } + + public new RaycastResult FindFirstRaycast(List candidates) + { + return BaseInputModule.FindFirstRaycast(candidates); + } + + private void UpdateImplProperties() + { + if (Impl == null) + { + return; + } + + Impl.ScrollInput = scrollInput; + Impl.VrModeOnly = vrModeOnly; + Impl.ModuleController = this; + Impl.EventExecutor = EventExecutor; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs.meta new file mode 100644 index 0000000..2165738 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModule.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fcd4baceb58cc40c98e500572bede6a6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModuleImpl.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModuleImpl.cs new file mode 100644 index 0000000..57cb84f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModuleImpl.cs @@ -0,0 +1,570 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// Licensed under the MIT License, you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// +// http://www.opensource.org/licenses/mit-license.php +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using UnityEngine; +using UnityEngine.EventSystems; +using Gvr.Internal; + +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + +/// Implementation of _GvrPointerInputModule_ +public class GvrPointerInputModuleImpl +{ + /// Interface for controlling the actual InputModule. + public IGvrInputModuleController ModuleController { get; set; } + + /// Interface for executing events. + public IGvrEventExecutor EventExecutor { get; set; } + + /// Determines whether pointer input is active in VR Mode only (`true`), or all of the + /// time (`false`). Set to false if you plan to use direct screen taps or other + /// input when not in VR Mode. + public bool VrModeOnly { get; set; } + + /// The GvrPointerScrollInput used to route Scroll Events through _EventSystem_ + public GvrPointerScrollInput ScrollInput { get; set; } + + /// PointerEventData from the most recent frame. + public GvrPointerEventData CurrentEventData { get; private set; } + + /// The GvrBasePointer which will be responding to pointer events. + public GvrBasePointer Pointer + { + get + { + return pointer; + } + + set + { + if (pointer == value) + { + return; + } + + TryExitPointer(); + + pointer = value; + } + } + + private GvrBasePointer pointer; + private Vector2 lastPose; + private bool isPointerHovering = false; + + // Active state + private bool isActive = false; + + /// Returns true if the module should be activated. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public bool ShouldActivateModule() + { + bool isVrModeEnabled = !VrModeOnly; + isVrModeEnabled |= XRSettings.enabled; + + bool activeState = ModuleController.ShouldActivate() && isVrModeEnabled; + + if (activeState != isActive) + { + isActive = activeState; + } + + return activeState; + } + + /// Deactivates this input module. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public void DeactivateModule() + { + TryExitPointer(); + ModuleController.Deactivate(); + if (CurrentEventData != null) + { + HandlePendingClick(); + HandlePointerExitAndEnter(CurrentEventData, null); + CurrentEventData = null; + } + + ModuleController.eventSystem.SetSelectedGameObject(null, ModuleController.GetBaseEventData()); + } + + /// Returns true if the pointer is over a game object. + /// The pointer id to check. + public bool IsPointerOverGameObject(int pointerId) + { + return (CurrentEventData != null && + CurrentEventData.pointerEnter != null && + CurrentEventData.pointerId == pointerId); + } + + /// Process the input for the current frame. + [SuppressMemoryAllocationError(IsWarning = true, Reason = "Pending documentation.")] + public void Process() + { + // If the pointer is inactive, make sure it is exited if necessary. + if (!IsPointerActiveAndAvailable()) + { + TryExitPointer(); + } + + // Save the previous Game Object + GameObject previousObject = GetCurrentGameObject(); + + CastRay(); + UpdateCurrentObject(previousObject); + UpdatePointer(previousObject); + + // True during the frame that the trigger has been pressed. + bool triggerDown = false; + + // True if the trigger is held down. + bool triggering = false; + + if (IsPointerActiveAndAvailable()) + { + triggerDown = Pointer.TriggerDown; + triggering = Pointer.Triggering; + } + + bool handlePendingClickRequired = !triggering; + + // Handle input + if (!triggerDown && triggering) + { + HandleDrag(); + } + else if (triggerDown && !CurrentEventData.eligibleForClick) + { + // New trigger action. + HandleTriggerDown(); + } + else if (handlePendingClickRequired) + { + // Check if there is a pending click to handle. + HandlePendingClick(); + } + + ScrollInput.HandleScroll(GetCurrentGameObject(), CurrentEventData, Pointer, EventExecutor); + } + + private void CastRay() + { + Vector2 currentPose = lastPose; + if (IsPointerActiveAndAvailable()) + { + currentPose = GvrMathHelpers.NormalizedCartesianToSpherical(Pointer.PointerTransform.forward); + } + + if (CurrentEventData == null) + { + CurrentEventData = new GvrPointerEventData(ModuleController.eventSystem); + lastPose = currentPose; + } + + // Store the previous raycast result. + RaycastResult previousRaycastResult = CurrentEventData.pointerCurrentRaycast; + + // The initial cast must use the enter radius. + if (IsPointerActiveAndAvailable()) + { + Pointer.ShouldUseExitRadiusForRaycast = false; + } + + // Cast a ray into the scene + CurrentEventData.Reset(); + + // Set the position to the center of the camera. + // This is only necessary if using the built-in Unity raycasters. + RaycastResult raycastResult; + CurrentEventData.position = GvrVRHelpers.GetViewportCenter(); + bool isPointerActiveAndAvailable = IsPointerActiveAndAvailable(); + if (isPointerActiveAndAvailable) + { + RaycastAll(); + raycastResult = ModuleController.FindFirstRaycast(ModuleController.RaycastResultCache); + if (Pointer.ControllerInputDevice == null || Pointer.ControllerInputDevice.IsDominantHand) + { + CurrentEventData.pointerId = (int)GvrControllerHand.Dominant; + } + else + { + CurrentEventData.pointerId = (int)GvrControllerHand.NonDominant; + } + } + else + { + raycastResult = new RaycastResult(); + raycastResult.Clear(); + } + + // If we were already pointing at an object we must check that object against the exit radius + // to make sure we are no longer pointing at it to prevent flicker. + if (previousRaycastResult.gameObject != null + && raycastResult.gameObject != previousRaycastResult.gameObject + && isPointerActiveAndAvailable) + { + Pointer.ShouldUseExitRadiusForRaycast = true; + RaycastAll(); + RaycastResult firstResult = ModuleController.FindFirstRaycast(ModuleController.RaycastResultCache); + if (firstResult.gameObject == previousRaycastResult.gameObject) + { + raycastResult = firstResult; + } + } + + if (raycastResult.gameObject != null && raycastResult.worldPosition == Vector3.zero) + { + raycastResult.worldPosition = GvrMathHelpers.GetIntersectionPosition(CurrentEventData.enterEventCamera, raycastResult); + } + + CurrentEventData.pointerCurrentRaycast = raycastResult; + + // Find the real screen position associated with the raycast + // Based on the results of the hit and the state of the pointerData. + if (raycastResult.gameObject != null) + { + CurrentEventData.position = raycastResult.screenPosition; + } + else if (IsPointerActiveAndAvailable() && CurrentEventData.enterEventCamera != null) + { + Vector3 pointerPos = Pointer.MaxPointerEndPoint; + CurrentEventData.position = CurrentEventData.enterEventCamera.WorldToScreenPoint(pointerPos); + } + + ModuleController.RaycastResultCache.Clear(); + CurrentEventData.delta = currentPose - lastPose; + lastPose = currentPose; + + // Check to make sure the Raycaster being used is a GvrRaycaster. + if (raycastResult.module != null + && !(raycastResult.module is GvrPointerGraphicRaycaster) + && !(raycastResult.module is GvrPointerPhysicsRaycaster)) + { + Debug.LogWarning("Using Raycaster (Raycaster: " + raycastResult.module.GetType() + + ", Object: " + raycastResult.module.name + "). It is recommended to use " + + "GvrPointerPhysicsRaycaster or GvrPointerGrahpicRaycaster with GvrPointerInputModule."); + } + } + + private void UpdateCurrentObject(GameObject previousObject) + { + if (CurrentEventData == null) + { + return; + } + + // Send enter events and update the highlight. + GameObject currentObject = GetCurrentGameObject(); // Get the pointer target + HandlePointerExitAndEnter(CurrentEventData, currentObject); + + // Update the current selection, or clear if it is no longer the current object. + var selected = EventExecutor.GetEventHandler(currentObject); + if (selected == ModuleController.eventSystem.currentSelectedGameObject) + { + EventExecutor.Execute(ModuleController.eventSystem.currentSelectedGameObject, ModuleController.GetBaseEventData(), + ExecuteEvents.updateSelectedHandler); + } + else + { + ModuleController.eventSystem.SetSelectedGameObject(null, CurrentEventData); + } + + // Execute hover event. + if (currentObject != null && currentObject == previousObject) + { + EventExecutor.ExecuteHierarchy(currentObject, CurrentEventData, GvrExecuteEventsExtension.pointerHoverHandler); + } + } + + private void UpdatePointer(GameObject previousObject) + { + if (CurrentEventData == null) + { + return; + } + + GameObject currentObject = GetCurrentGameObject(); // Get the pointer target + bool isPointerActiveAndAvailable = IsPointerActiveAndAvailable(); + + bool isInteractive = CurrentEventData.pointerPress != null || + EventExecutor.GetEventHandler(currentObject) != null || + EventExecutor.GetEventHandler(currentObject) != null; + + if (isPointerHovering && currentObject != null && currentObject == previousObject) + { + if (isPointerActiveAndAvailable) + { + Pointer.OnPointerHover(CurrentEventData.pointerCurrentRaycast, isInteractive); + } + } + else + { + // If the object's don't match or the hovering object has been destroyed + // then the pointer has exited. + if (previousObject != null || (currentObject == null && isPointerHovering)) + { + if (isPointerActiveAndAvailable) + { + Pointer.OnPointerExit(previousObject); + } + + isPointerHovering = false; + } + + if (currentObject != null) + { + if (isPointerActiveAndAvailable) + { + Pointer.OnPointerEnter(CurrentEventData.pointerCurrentRaycast, isInteractive); + } + + isPointerHovering = true; + } + } + } + + private static bool ShouldStartDrag(Vector2 pressPos, Vector2 currentPos, float threshold, bool useDragThreshold) + { + if (!useDragThreshold) + { + return true; + } + + return (pressPos - currentPos).sqrMagnitude >= threshold * threshold; + } + + private void HandleDrag() + { + bool moving = CurrentEventData.IsPointerMoving(); + bool shouldStartDrag = ShouldStartDrag(CurrentEventData.pressPosition, + CurrentEventData.position, + ModuleController.eventSystem.pixelDragThreshold, + CurrentEventData.useDragThreshold); + + if (moving && shouldStartDrag && CurrentEventData.pointerDrag != null && !CurrentEventData.dragging) + { + EventExecutor.Execute(CurrentEventData.pointerDrag, CurrentEventData, + ExecuteEvents.beginDragHandler); + CurrentEventData.dragging = true; + } + + // Drag notification + if (CurrentEventData.dragging && moving && CurrentEventData.pointerDrag != null) + { + // Before doing drag we should cancel any pointer down state + // And clear selection! + if (CurrentEventData.pointerPress != CurrentEventData.pointerDrag) + { + EventExecutor.Execute(CurrentEventData.pointerPress, CurrentEventData, ExecuteEvents.pointerUpHandler); + + CurrentEventData.eligibleForClick = false; + CurrentEventData.gvrButtonsDown = 0; + CurrentEventData.button = 0; + CurrentEventData.pointerPress = null; + CurrentEventData.rawPointerPress = null; + } + + EventExecutor.Execute(CurrentEventData.pointerDrag, CurrentEventData, ExecuteEvents.dragHandler); + } + } + + private void HandlePendingClick() + { + if (CurrentEventData == null || (!CurrentEventData.eligibleForClick && !CurrentEventData.dragging)) + { + return; + } + + if (IsPointerActiveAndAvailable()) + { + Pointer.OnPointerClickUp(); + } + + var go = CurrentEventData.pointerCurrentRaycast.gameObject; + + // Send pointer up and click events. + EventExecutor.Execute(CurrentEventData.pointerPress, CurrentEventData, ExecuteEvents.pointerUpHandler); + + GameObject pointerClickHandler = EventExecutor.GetEventHandler(go); + if (CurrentEventData.pointerPress == pointerClickHandler && CurrentEventData.eligibleForClick) + { + EventExecutor.Execute(CurrentEventData.pointerPress, CurrentEventData, ExecuteEvents.pointerClickHandler); + } + + if (CurrentEventData != null && CurrentEventData.pointerDrag != null && CurrentEventData.dragging) + { + EventExecutor.ExecuteHierarchy(go, CurrentEventData, ExecuteEvents.dropHandler); + EventExecutor.Execute(CurrentEventData.pointerDrag, CurrentEventData, ExecuteEvents.endDragHandler); + } + + if (CurrentEventData != null) + { + // Clear the click state. + CurrentEventData.gvrButtonsDown = 0; + CurrentEventData.button = 0; + CurrentEventData.pointerPress = null; + CurrentEventData.rawPointerPress = null; + CurrentEventData.eligibleForClick = false; + CurrentEventData.clickCount = 0; + CurrentEventData.clickTime = 0; + CurrentEventData.pointerDrag = null; + CurrentEventData.dragging = false; + } + } + + private void HandleTriggerDown() + { + var go = CurrentEventData.pointerCurrentRaycast.gameObject; + + // Send pointer down event. + CurrentEventData.gvrButtonsDown = Pointer.ControllerButtonDown; + CurrentEventData.button = Pointer.InputButtonDown; + CurrentEventData.pressPosition = CurrentEventData.position; + CurrentEventData.pointerPressRaycast = CurrentEventData.pointerCurrentRaycast; + CurrentEventData.pointerPress = + EventExecutor.ExecuteHierarchy(go, CurrentEventData, ExecuteEvents.pointerDownHandler) ?? + EventExecutor.GetEventHandler(go); + + // Save the pending click state. + CurrentEventData.rawPointerPress = go; + CurrentEventData.eligibleForClick = true; + CurrentEventData.delta = Vector2.zero; + CurrentEventData.dragging = false; + CurrentEventData.useDragThreshold = true; + CurrentEventData.clickCount = 1; + CurrentEventData.clickTime = Time.unscaledTime; + + // Save the drag handler as well + CurrentEventData.pointerDrag = EventExecutor.GetEventHandler(go); + if (CurrentEventData.pointerDrag != null) + { + EventExecutor.Execute(CurrentEventData.pointerDrag, CurrentEventData, ExecuteEvents.initializePotentialDrag); + } + + if (IsPointerActiveAndAvailable()) + { + Pointer.OnPointerClickDown(); + } + } + + private GameObject GetCurrentGameObject() + { + if (CurrentEventData != null) + { + return CurrentEventData.pointerCurrentRaycast.gameObject; + } + + return null; + } + + // Modified version of BaseInputModule.HandlePointerExitAndEnter that calls EventExecutor instead of + // UnityEngine.EventSystems.ExecuteEvents. + private void HandlePointerExitAndEnter(PointerEventData currentPointerData, GameObject newEnterTarget) + { + // If we have no target or pointerEnter has been deleted then + // just send exit events to anything we are tracking. + // Afterwards, exit. + if (newEnterTarget == null || currentPointerData.pointerEnter == null) + { + for (var i = 0; i < currentPointerData.hovered.Count; ++i) + { + EventExecutor.Execute(currentPointerData.hovered[i], currentPointerData, ExecuteEvents.pointerExitHandler); + } + + currentPointerData.hovered.Clear(); + + if (newEnterTarget == null) + { + currentPointerData.pointerEnter = newEnterTarget; + return; + } + } + + // If we have not changed hover target. + if (newEnterTarget && currentPointerData.pointerEnter == newEnterTarget) + { + return; + } + + GameObject commonRoot = ModuleController.FindCommonRoot(currentPointerData.pointerEnter, newEnterTarget); + + // We already an entered object from last time. + if (currentPointerData.pointerEnter != null) + { + // Send exit handler call to all elements in the chain + // until we reach the new target, or null! + Transform t = currentPointerData.pointerEnter.transform; + + while (t != null) + { + // If we reach the common root break out! + if (commonRoot != null && commonRoot.transform == t) + { + break; + } + + EventExecutor.Execute(t.gameObject, currentPointerData, ExecuteEvents.pointerExitHandler); + currentPointerData.hovered.Remove(t.gameObject); + t = t.parent; + } + } + + // Now issue the enter call up to but not including the common root. + currentPointerData.pointerEnter = newEnterTarget; + if (newEnterTarget != null) + { + Transform t = newEnterTarget.transform; + + while (t != null && t.gameObject != commonRoot) + { + EventExecutor.Execute(t.gameObject, currentPointerData, ExecuteEvents.pointerEnterHandler); + currentPointerData.hovered.Add(t.gameObject); + t = t.parent; + } + } + } + + private void TryExitPointer() + { + if (Pointer == null) + { + return; + } + + GameObject currentGameObject = GetCurrentGameObject(); + if (currentGameObject) + { + Pointer.OnPointerExit(currentGameObject); + } + } + + private bool IsPointerActiveAndAvailable() + { + return pointer != null && pointer.IsAvailable; + } + + private void RaycastAll() + { + ModuleController.RaycastResultCache.Clear(); + ModuleController.eventSystem.RaycastAll(CurrentEventData, ModuleController.RaycastResultCache); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModuleImpl.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModuleImpl.cs.meta new file mode 100644 index 0000000..653b6e7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/GvrPointerInputModuleImpl.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2e5fe232b3b94de2a12eb364ebc371e +timeCreated: 1492661146 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrEventExecutor.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrEventExecutor.cs new file mode 100644 index 0000000..585b5a5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrEventExecutor.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; + +/// Provides an interface for executing events for _IEventSystemHandler_. +/// +public interface IGvrEventExecutor +{ + /// Execute the event of type T : IEventSystemHandler on the game object. + /// The event will be executed on all components on the game + /// object that can handle it. + /// + /// Target game object. + /// Data associated with the executing event. + /// Function to execute on the game object components. + bool Execute(GameObject target, + BaseEventData eventData, + ExecuteEvents.EventFunction functor) + where T : IEventSystemHandler; + + /// Recurse up the hierarchy calling Execute; until + /// there is a game object that can handle the event. + /// + /// See https://docs.unity3d.com/2017.4/Documentation/ScriptReference/EventSystems.ExecuteEvents.ExecuteHierarchy.html + /// + /// Start game object for search. + /// Data associated with the executing event. + /// Function to execute on the game object components. + /// GameObject Game object that handled the event. + GameObject ExecuteHierarchy(GameObject root, + BaseEventData eventData, + ExecuteEvents.EventFunction callbackFunction) + where T : IEventSystemHandler; + + /// Traverse the object hierarchy starting at root, and return the + /// game object which implements the event handler of type T. + /// @note Traversal is performed upwards from the target object, not down. + GameObject GetEventHandler(GameObject root) + where T : IEventSystemHandler; +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrEventExecutor.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrEventExecutor.cs.meta new file mode 100644 index 0000000..1728a5c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrEventExecutor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 171f0a30d9ead4516a8fa319cfebe270 +timeCreated: 1493142648 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrInputModuleController.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrInputModuleController.cs new file mode 100644 index 0000000..fb8bebc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrInputModuleController.cs @@ -0,0 +1,51 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.EventSystems; + +/// +/// Interface for manipulating an InputModule used by _GvrPointerInputModuleImpl_. +/// +public interface IGvrInputModuleController +{ + /// Reference to EventSystem. + EventSystem eventSystem { get; } + + /// Raycast result cache list. + List RaycastResultCache { get; } + + /// Should the controller be activated. + bool ShouldActivate(); + + /// Deactivate the controller. + void Deactivate(); + + /// Given two game objects, return a common root game object, + /// or null if there is no common root. + GameObject FindCommonRoot(GameObject g1, GameObject g2); + + /// Generate a BaseEventData that can be used by the EventSystem. + /// + BaseEventData GetBaseEventData(); + + /// Return the first valid raycast result. + RaycastResult FindFirstRaycast(List candidates); +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrInputModuleController.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrInputModuleController.cs.meta new file mode 100644 index 0000000..ee519dc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/EventSystem/InputModule/IGvrInputModuleController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 118ed627eb676472d803284d1a988bbd +timeCreated: 1492665020 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrCardboardHelpers.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrCardboardHelpers.cs new file mode 100644 index 0000000..a0454b5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrCardboardHelpers.cs @@ -0,0 +1,77 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +using System; +using System.Runtime.InteropServices; + +/// General Cardboard helper methods. +public class GvrCardboardHelpers +{ + /// Manual recenter for Cardboard apps. After recentering the camera's orientation will be given + /// in the new recentered coordinate system. + /// Do not use for Daydream apps as controller based recentering is handled automatically by + /// Google VR Services, see `GvrControllerInput.Rencentered` for details. + public static void Recenter() + { +#if UNITY_EDITOR + if (GvrEditorEmulator.Instance != null) + { + GvrEditorEmulator.Instance.Recenter(); + } + +#elif (UNITY_ANDROID || UNITY_IOS) + IntPtr gvrContextPtr = GvrSettings.GetValidGvrNativePtrOrLogError(); + if (gvrContextPtr == IntPtr.Zero) + { + return; + } + + gvr_reset_tracking(gvrContextPtr); +#endif // (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + Debug.Log("Use GvrEditorEmulator for in-editor recentering"); + } + + /// Set the Cardboard viewer params. + /// Example URI for 2015 Cardboard Viewer V2: + /// http://google.com/cardboard/cfg?p=CgZHb29nbGUSEkNhcmRib2FyZCBJL08gMjAxNR0rGBU9JQHegj0qEAAASEIAAEhCAABIQgAASEJYADUpXA89OggeZnc-Ej6aPlAAYAM + public static void SetViewerProfile(String viewerProfileUri) + { +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + IntPtr gvrContextPtr = GvrSettings.GetValidGvrNativePtrOrLogError(); + if (gvrContextPtr == IntPtr.Zero) + { + return; + } + + gvr_set_default_viewer_profile(gvrContextPtr, viewerProfileUri); +#endif // (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + Debug.Log("Unavailable for non-Android and non-iOS builds"); + } + +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + [DllImport(GvrActivityHelper.GVR_DLL_NAME)] + private static extern void gvr_reset_tracking(IntPtr gvr_context); + + [DllImport(GvrActivityHelper.GVR_DLL_NAME)] + private static extern void gvr_set_default_viewer_profile( + IntPtr gvr_context, + [MarshalAs(UnmanagedType.LPStr)] string viewer_profile_uri); +#endif // (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrCardboardHelpers.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrCardboardHelpers.cs.meta new file mode 100644 index 0000000..f3fcbfe --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrCardboardHelpers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cb5f458261eac491b9379eb30aec0947 +timeCreated: 1494387741 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrEditorEmulator.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrEditorEmulator.cs new file mode 100644 index 0000000..35e102e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrEditorEmulator.cs @@ -0,0 +1,246 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; +using System.Collections.Generic; + +using Gvr.Internal; + +/// Provides mouse-controlled head tracking emulation in the Unity editor. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrEditorEmulator")] +public class GvrEditorEmulator : MonoBehaviour +{ + // GvrEditorEmulator should only be compiled in the Editor. + // + // Otherwise, it will override the camera pose every frame on device which causes the + // following behaviour: + // + // The rendered camera pose will still be correct because the VR.InputTracking pose + // gets applied after LateUpdate has occured. However, any functionality that + // queries the camera pose during Update or LateUpdate after GvrEditorEmulator has been + // updated will get the wrong value applied by GvrEditorEmulator intsead. +#if UNITY_EDITOR + private static GvrEditorEmulator instance; + private static bool instance_searched_for = false; + + public static GvrEditorEmulator Instance + { + get + { + if (instance == null && !instance_searched_for) + { + instance = FindObjectOfType(); + instance_searched_for = true; + } + + return instance; + } + } + + // Allocate an initial capacity; this will be resized if needed. + private static Camera[] AllCameras = new Camera[32]; + private const string AXIS_MOUSE_X = "Mouse X"; + private const string AXIS_MOUSE_Y = "Mouse Y"; + + // Simulated neck model. Vector from the neck pivot point to the point between the eyes. + private static readonly Vector3 NECK_OFFSET = new Vector3(0, 0.075f, 0.08f); + + // Use mouse to emulate head in the editor. + // These variables must be static so that head pose is maintained between scene changes, + // as it is on device. + private float mouseX = 0; + private float mouseY = 0; + private float mouseZ = 0; + + public Vector3 HeadPosition { get; private set; } + + public Quaternion HeadRotation { get; private set; } + + public void Recenter() + { + mouseX = mouseZ = 0; // Do not reset pitch, which is how it works on the phone. + UpdateHeadPositionAndRotation(); + ApplyHeadOrientationToVRCameras(); + } + + public void UpdateEditorEmulation() + { + if (GvrControllerInput.Recentered) + { + Recenter(); + } + + bool rolled = false; + if (CanChangeYawPitch()) + { + GvrCursorHelper.HeadEmulationActive = true; + mouseX += Input.GetAxis(AXIS_MOUSE_X) * 5; + if (mouseX <= -180) + { + mouseX += 360; + } + else if (mouseX > 180) + { + mouseX -= 360; + } + + mouseY -= Input.GetAxis(AXIS_MOUSE_Y) * 2.4f; + mouseY = Mathf.Clamp(mouseY, -85, 85); + } + else if (CanChangeRoll()) + { + GvrCursorHelper.HeadEmulationActive = true; + rolled = true; + mouseZ += Input.GetAxis(AXIS_MOUSE_X) * 5; + mouseZ = Mathf.Clamp(mouseZ, -85, 85); + } + else + { + GvrCursorHelper.HeadEmulationActive = false; + } + + if (!rolled) + { + // People don't usually leave their heads tilted to one side for long. + mouseZ = Mathf.Lerp(mouseZ, 0, Time.deltaTime / (Time.deltaTime + 0.1f)); + } + + UpdateHeadPositionAndRotation(); + ApplyHeadOrientationToVRCameras(); + } + + void Awake() + { + if (Instance == null) + { + instance = this; + } + else if (Instance != this) + { + Debug.LogError("More than one active GvrEditorEmulator instance was found in your scene. " + + "Ensure that there is only one active GvrEditorEmulator."); + this.enabled = false; + return; + } + } + + void Start() + { + UpdateAllCameras(); + for (int i = 0; i < Camera.allCamerasCount; ++i) + { + Camera cam = AllCameras[i]; + + // Only check camera if it is an enabled VR Camera. + if (cam && cam.enabled && cam.stereoTargetEye != StereoTargetEyeMask.None) + { + if (cam.nearClipPlane > 0.1 + && GvrSettings.ViewerPlatform == GvrSettings.ViewerPlatformType.Daydream) + { + Debug.LogWarningFormat( + "Camera \"{0}\" has Near clipping plane set to {1} meters, which might " + + "cause the rendering of the Daydream controller to clip unexpectedly.\n" + + "Suggest using a lower value, 0.1 meters or less.", + cam.name, cam.nearClipPlane); + } + } + } + } + + void Update() + { + // GvrControllerInput automatically updates GvrEditorEmulator. + // This guarantees that GvrEditorEmulator is updated before anything else responds to + // controller input, which ensures that re-centering works correctly in the editor. + // If GvrControllerInput is not available, then fallback to using Update(). + if (GvrControllerInput.ApiStatus != GvrControllerApiStatus.Error) + { + return; + } + + UpdateEditorEmulation(); + } + + private bool CanChangeYawPitch() + { + // If the MouseControllerProvider is currently active, then don't move the camera. + if (MouseControllerProvider.IsActivateButtonPressed) + { + return false; + } + + return Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt); + } + + private bool CanChangeRoll() + { + // If the MouseControllerProvider is currently active, then don't move the camera. + if (MouseControllerProvider.IsActivateButtonPressed) + { + return false; + } + + return Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl); + } + + private void UpdateHeadPositionAndRotation() + { + HeadRotation = Quaternion.Euler(mouseY, mouseX, mouseZ); + HeadPosition = HeadRotation * NECK_OFFSET - NECK_OFFSET.y * Vector3.up; + } + + private void ApplyHeadOrientationToVRCameras() + { + UpdateAllCameras(); + + // Update all VR cameras using Head position and rotation information. + for (int i = 0; i < Camera.allCamerasCount; ++i) + { + Camera cam = AllCameras[i]; + + // Check if the Camera is a valid VR Camera, and if so update it to track head motion. + if (cam && cam.enabled && cam.stereoTargetEye != StereoTargetEyeMask.None) + { + cam.transform.localPosition = HeadPosition * cam.transform.lossyScale.y; + cam.transform.localRotation = HeadRotation; + } + } + } + + // Avoids per-frame allocations. Allocates only when AllCameras array is resized. + private void UpdateAllCameras() + { + // Get all Cameras in the scene using persistent data structures. + if (Camera.allCamerasCount > AllCameras.Length) + { + int newAllCamerasSize = Camera.allCamerasCount; + while (Camera.allCamerasCount > newAllCamerasSize) + { + newAllCamerasSize *= 2; + } + + AllCameras = new Camera[newAllCamerasSize]; + } + + // The GetAllCameras method doesn't allocate memory (Camera.allCameras does). + Camera.GetAllCameras(AllCameras); + } + +#endif // UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrEditorEmulator.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrEditorEmulator.cs.meta new file mode 100644 index 0000000..0c3c27f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrEditorEmulator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 41679d3338266415f88d226e6bf3d0be +timeCreated: 1435273491 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrSettings.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrSettings.cs new file mode 100644 index 0000000..cf9edbe --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrSettings.cs @@ -0,0 +1,244 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; +using System.Runtime.InteropServices; + +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using XRDevice = UnityEngine.VR.VRDevice; +using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + +#if UNITY_EDITOR +using UnityEditor; +#endif // UNITY_EDITOR + +/// Accesses and configures Daydream settings. +public static class GvrSettings +{ + /// Name of 'None' VR SDK, as returned by `VRSettings.loadedDeviceName`. + public const string VR_SDK_NONE = "None"; + + /// Name of Daydream GVR SDK, as returned by `VRSettings.loadedDeviceName`. + public const string VR_SDK_DAYDREAM = "daydream"; + + /// Name of Cardboard GVR SDK, as returned by `VRSettings.loadedDeviceName` and supportedDevices. + public const string VR_SDK_CARDBOARD = "cardboard"; + + private const string METHOD_GET_WINDOW = "getWindow"; + private const string METHOD_RUN_ON_UI_THREAD = "runOnUiThread"; + private const string METHOD_SET_SUSTAINED_PERFORMANCE_MODE = "setSustainedPerformanceMode"; + + /// Viewer type. + public enum ViewerPlatformType + { + Error = -1, + + // Plugin-only value; does not exist in the NDK. + Cardboard, + Daydream + } + + /// Viewer platform type setting. + /// In the editor this can be set for devlopment testing. + public static ViewerPlatformType ViewerPlatform + { +// Expose a setter only for the editor emulator, for development testing purposes. +#if UNITY_EDITOR + get + { + return editorEmulatorOnlyViewerPlatformType; + } + + set + { + editorEmulatorOnlyViewerPlatformType = value; + } +#elif !UNITY_ANDROID +// Running in non-Android player. + get + { + return ViewerPlatformType.Error; + } +#else +// Running on Android. + get + { + IntPtr gvrContextPtr = GetValidGvrNativePtrOrLogError(); + if (gvrContextPtr == IntPtr.Zero) + { + return ViewerPlatformType.Error; + } + + return (ViewerPlatformType)gvr_get_viewer_type(gvrContextPtr); + } +#endif // UNITY_EDITOR + } +#if UNITY_EDITOR + private static ViewerPlatformType editorEmulatorOnlyViewerPlatformType = + ViewerPlatformType.Daydream; +#endif // UNITY_EDITOR + + /// Sustained performance mode setting. + /// + /// The developer is expected to remember whether sustained performance mode is set + /// at runtime, via the checkbox in Player Settings. + /// This state may be recorded here in a future release. + /// + public static bool SustainedPerformanceMode + { + set + { + SetSustainedPerformanceMode(value); + } + } + + /// Handedness preference values. + public enum UserPrefsHandedness + { + Error = -1, + + // Plugin-only value, does not exist in the NDK. + Right, + Left + } + + /// Handedness preference value. + public static UserPrefsHandedness Handedness + { +#if UNITY_EDITOR +// Expose a setter only for the editor emulator, for development testing purposes. + get + { + return (UserPrefsHandedness)EditorPrefs.GetInt(EMULATOR_HANDEDNESS_PREF_NAME, (int)UserPrefsHandedness.Right); + } + + set + { + EditorPrefs.SetInt(EMULATOR_HANDEDNESS_PREF_NAME, (int)value); + } +#elif !UNITY_ANDROID +// Running in non-Android player. + get + { + return UserPrefsHandedness.Error; + } +#else +// Running on Android. + get + { + IntPtr gvrContextPtr = GetValidGvrNativePtrOrLogError(); + if (gvrContextPtr == IntPtr.Zero) + { + Debug.LogError("Unable to determine GVR user prefs' handedness"); + return UserPrefsHandedness.Error; + } + + IntPtr gvrUserPrefsPtr = gvr_get_user_prefs(gvrContextPtr); + if (gvrUserPrefsPtr == IntPtr.Zero) + { + Debug.Log("Zero GVR user prefs pointer, unable to determine GVR user prefs' handedness"); + return UserPrefsHandedness.Error; + } + + return (UserPrefsHandedness)gvr_user_prefs_get_controller_handedness(gvrUserPrefsPtr); + } +#endif // UNITY_EDITOR + } +#if UNITY_EDITOR + // This allows developers to test handedness in the editor emulator. + private const string EMULATOR_HANDEDNESS_PREF_NAME = "GoogleVREditorEmulatorHandedness"; +#endif // UNITY_EDITOR + + private static void SetSustainedPerformanceMode(bool enabled) + { +#if UNITY_ANDROID && !UNITY_EDITOR + AndroidJavaObject androidActivity = null; + try + { + androidActivity = GvrActivityHelper.GetActivity(); + } + catch (AndroidJavaException e) + { + Debug.LogError("Exception while connecting to the Activity: " + e); + return; + } + + AndroidJavaObject androidWindow = androidActivity.Call(METHOD_GET_WINDOW); + if (androidWindow == null) + { + Debug.LogError("No window found on the current android activity"); + return; + } + + // The sim thread in Unity is single-threaded, so we don't need to lock when accessing + // or assigning androidWindow. + androidActivity.Call(METHOD_RUN_ON_UI_THREAD, new AndroidJavaRunnable(() => + { + androidWindow.Call(METHOD_SET_SUSTAINED_PERFORMANCE_MODE, enabled); + Debug.Log("Set sustained performance mode: " + (enabled ? "ON" : "OFF")); + })); +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + + /// Wraps call to `VRDevice.GetNativePtr()` and logs error if a supported GVR SDK is not active or + /// if the returned native pointer is `IntPtr.Zero`. + public static IntPtr GetValidGvrNativePtrOrLogError() + { + if (!XRSettings.enabled) + { + Debug.LogError("VR is disabled"); + return IntPtr.Zero; + } + +#if UNITY_2018_3_OR_NEWER + string loadedDeviceName = GvrXREventsSubscriber.loadedDeviceName; +#else // !UNITY_2018_3_OR_NEWER; this leaks 30 bytes of memory per update. + string loadedDeviceName = XRSettings.loadedDeviceName; +#endif // UNITY_2018_3_OR_NEWER + if (loadedDeviceName != VR_SDK_DAYDREAM && loadedDeviceName != VR_SDK_CARDBOARD) + { + Debug.LogErrorFormat("Loaded VR SDK '{0}' must be '{1}' or '{2}'", + loadedDeviceName, VR_SDK_DAYDREAM, VR_SDK_CARDBOARD); + return IntPtr.Zero; + } + + IntPtr gvrContextPtr = XRDevice.GetNativePtr(); + if (gvrContextPtr == IntPtr.Zero) + { + Debug.LogError("Unexpected zero GVR native context pointer"); + return gvrContextPtr; + } + + return gvrContextPtr; + } + +#if UNITY_ANDROID && !UNITY_EDITOR + [DllImport(GvrActivityHelper.GVR_DLL_NAME)] + private static extern IntPtr gvr_get_user_prefs(IntPtr gvrContextPtr); + + [DllImport(GvrActivityHelper.GVR_DLL_NAME)] + private static extern int gvr_get_viewer_type(IntPtr gvrContextPtr); + + [DllImport(GvrActivityHelper.GVR_DLL_NAME)] + private static extern int gvr_user_prefs_get_controller_handedness(IntPtr gvrUserPrefsPtr); +#endif // UNITY_ANDROID && !UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrSettings.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrSettings.cs.meta new file mode 100644 index 0000000..0a9d312 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c485d86d5e69340f09123a723b06bc87 +timeCreated: 1474311726 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrUnitySdkVersion.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrUnitySdkVersion.cs new file mode 100644 index 0000000..4139672 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrUnitySdkVersion.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// +/// Provides and logs versioning information for the GVR SDK for Unity. +/// +public class GvrUnitySdkVersion +{ + /// The version of the SDK. + public const string GVR_SDK_VERSION = "1.190.1"; + +// Google VR SDK supports Unity 5.6 or newer. +#if !UNITY_5_6_OR_NEWER +#error Google VR SDK requires Unity version 5.6 or newer. +#endif // !UNITY_5_6_OR_NEWER + +// Only log GVR SDK version when running on an Android or iOS device. +#if (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR + private const string VERSION_HEADER = "GVR SDK for Unity version: "; + + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] + static void LogGvrUnitySdkVersion() + { + Debug.Log(VERSION_HEADER + GVR_SDK_VERSION); + } +#endif // (UNITY_ANDROID || UNITY_IOS) && !UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrUnitySdkVersion.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrUnitySdkVersion.cs.meta new file mode 100644 index 0000000..baaef6b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/GvrUnitySdkVersion.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 12bd1ba026e3d49a285ef666388aa4e9 +timeCreated: 1476406456 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset.meta new file mode 100644 index 0000000..29277f4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d0e283536b9df40a9bfa60689a99a69d +folderAsset: yes +timeCreated: 1506022906 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadset.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadset.cs new file mode 100644 index 0000000..703cd57 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadset.cs @@ -0,0 +1,303 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; +using System.Collections; +using System.ComponentModel; + +using Gvr.Internal; + +/// Main entry point for Standalone headset APIs. +/// +/// To use this API, use the GvrHeadset prefab. There can be only one +/// such prefab in a scene. +/// +/// This is a singleton object. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrHeadset")] +public class GvrHeadset : MonoBehaviour +{ + private static GvrHeadset instance; + + private IHeadsetProvider headsetProvider; + private HeadsetState headsetState; + private IEnumerator standaloneUpdate; + private WaitForEndOfFrame waitForEndOfFrame = new WaitForEndOfFrame(); + + // Delegates for GVR events. + private OnSafetyRegionEvent safetyRegionDelegate; + private OnRecenterEvent recenterDelegate; + + // Delegate definitions. + + /// This delegate is called when the headset crosses the safety region boundary. + public delegate void OnSafetyRegionEvent(bool enter); + + /// This delegate is called after the headset is recentered. + /// |recenterType| indicates the reason recentering occurred. + /// |recenterFlags| are flags related to recentering. See |GvrRecenterFlags|. + /// |recenteredPosition| is the positional offset from the session start pose. + /// |recenteredOrientation| is the rotational offset from the session start pose. + public delegate void OnRecenterEvent(GvrRecenterEventType recenterType, + GvrRecenterFlags recenterFlags, + Vector3 recenteredPosition, + Quaternion recenteredOrientation); + +#region DELEGATE_HANDLERS + /// Event handlers for `OnSafetyRegionChange`. + public static event OnSafetyRegionEvent OnSafetyRegionChange + { + add + { + if (instance != null) + { + instance.safetyRegionDelegate += value; + } + } + + remove + { + if (instance != null) + { + instance.safetyRegionDelegate -= value; + } + } + } + + /// Event handlers for `OnRecenter`. + public static event OnRecenterEvent OnRecenter + { + add + { + if (instance != null) + { + instance.recenterDelegate += value; + } + } + + remove + { + if (instance != null) + { + instance.recenterDelegate -= value; + } + } + } +#endregion // DELEGATE_HANDLERS + +#region GVR_HEADSET_PROPERTIES + /// Returns |true| if the current headset supports positionally tracked, 6DoF head poses. + /// Returns |false| if only rotation-based head poses are supported. + public static bool SupportsPositionalTracking + { + get + { + if (instance == null) + { + return false; + } + + try + { + return instance.headsetProvider.SupportsPositionalTracking; + } + catch (Exception e) + { + Debug.LogError("Error reading SupportsPositionalTracking: " + e.Message); + return false; + } + } + } + + /// If a floor is found, populates floorHeight with the detected height. + /// Otherwise, leaves the value unchanged. + /// Returns true if value retrieval was successful, false otherwise (depends on tracking state). + [SuppressMemoryAllocationError(IsWarning = true, Reason = "A getter for a float should not allocate.")] + public static bool TryGetFloorHeight(ref float floorHeight) + { + if (instance == null) + { + return false; + } + + return instance.headsetProvider.TryGetFloorHeight(ref floorHeight); + } + + /// If the last recentering transform is available, populates position and rotation with that + /// transform. + /// Returns true if value retrieval was successful, false otherwise (unlikely). + public static bool TryGetRecenterTransform(ref Vector3 position, ref Quaternion rotation) + { + if (instance == null) + { + return false; + } + + return instance.headsetProvider.TryGetRecenterTransform(ref position, ref rotation); + } + + /// Populates safetyType with the available safety region feature on the + /// currently-running device. + /// Returns true if value retrieval was successful, false otherwise(unlikely). + public static bool TryGetSafetyRegionType(ref GvrSafetyRegionType safetyType) + { + if (instance == null) + { + return false; + } + + return instance.headsetProvider.TryGetSafetyRegionType(ref safetyType); + } + + /// If the safety region is of type GvrSafetyRegionType.Cylinder, populates innerRadius with the + /// inner radius size (where fog starts appearing) of the safety cylinder in meters. + /// Assumes the safety region type has been previously checked by the caller. + /// Returns true if value retrieval was successful, false otherwise (if region type is + /// GvrSafetyRegionType.Invalid). + public static bool TryGetSafetyCylinderInnerRadius(ref float innerRadius) + { + if (instance == null) + { + return false; + } + + return instance.headsetProvider.TryGetSafetyCylinderInnerRadius(ref innerRadius); + } + + /// If the safety region is of type GvrSafetyRegionType.Cylinder, populates outerRadius with the + /// outer radius size (where fog is 100% opaque) of the safety cylinder in meters. + /// Assumes the safety region type has been previously checked by the caller. + /// Returns true if value retrieval was successful, false otherwise (if region type is + /// GvrSafetyRegionType.Invalid). + public static bool TryGetSafetyCylinderOuterRadius(ref float outerRadius) + { + if (instance == null) + { + return false; + } + + return instance.headsetProvider.TryGetSafetyCylinderOuterRadius(ref outerRadius); + } +#endregion // GVR_HEADSET_PROPERTIES + + private GvrHeadset() + { + headsetState.Initialize(); + } + + void Awake() + { + if (instance != null) + { + Debug.LogError("More than one GvrHeadset instance was found in your scene. " + + "Ensure that there is only one GvrHeadset."); + this.enabled = false; + return; + } + + instance = this; + if (headsetProvider == null) + { + headsetProvider = HeadsetProviderFactory.CreateProvider(); + } + } + + void OnEnable() + { + if (!SupportsPositionalTracking) + { + return; + } + + standaloneUpdate = EndOfFrame(); + StartCoroutine(standaloneUpdate); + } + + void OnDisable() + { + if (!SupportsPositionalTracking) + { + return; + } + + StopCoroutine(standaloneUpdate); + } + + void OnDestroy() + { + if (!SupportsPositionalTracking) + { + return; + } + + instance = null; + } + + private void UpdateStandalone() + { + // Events are stored in a queue, so poll until we get Invalid. + headsetProvider.PollEventState(ref headsetState); + while (headsetState.eventType != GvrEventType.Invalid) + { + switch (headsetState.eventType) + { + case GvrEventType.Recenter: + if (recenterDelegate != null) + { + recenterDelegate(headsetState.recenterEventType, + (GvrRecenterFlags)headsetState.recenterEventFlags, + headsetState.recenteredPosition, + headsetState.recenteredRotation); + } + + break; + case GvrEventType.SafetyRegionEnter: + if (safetyRegionDelegate != null) + { + safetyRegionDelegate(true); + } + + break; + case GvrEventType.SafetyRegionExit: + if (safetyRegionDelegate != null) + { + safetyRegionDelegate(false); + } + + break; + case GvrEventType.Invalid: + throw new InvalidEnumArgumentException("Invalid headset event: " + headsetState.eventType); + default: // Fallthrough, should never get here. + break; + } + + headsetProvider.PollEventState(ref headsetState); + } + } + + IEnumerator EndOfFrame() + { + while (true) + { + // This must be done at the end of the frame to ensure that all GameObjects had a chance + // to read transient state (e.g. events, etc) for the current frame before it gets reset. + yield return waitForEndOfFrame; + UpdateStandalone(); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadset.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadset.cs.meta new file mode 100644 index 0000000..768db2d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadset.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ecd9463bbd7994be09b972947a085067 +timeCreated: 1498190966 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -31122 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadsetEnums.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadsetEnums.cs new file mode 100644 index 0000000..b8d7ce9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadsetEnums.cs @@ -0,0 +1,63 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// Maps to gvr_event_type in the C API. +public enum GvrEventType +{ + // Not in the C API. + Invalid = -1, + Recenter = 1, + SafetyRegionExit = 2, + SafetyRegionEnter = 3, +} + +// Maps to gvr_recenter_event_type in the C API. +public enum GvrRecenterEventType +{ + // Not in the C API. + Invalid = -1, + + // Headset removal / re-attach recenter. + RecenterEventRestart = 1, + + // Controller-initiated recenter. + RecenterEventAligned = 2, +} + +// Placeholder. No C spec for recenter flags yet. +public enum GvrRecenterFlags +{ + None = 0, +} + +// Maps to gvr_error in the C API. +public enum GvrErrorType +{ + None = 0, + ControllerCreateFailed = 2, + NoFrameAavilable = 3, + NoEventAvailable = 1000000, + NoPropertyAvailable = 1000001, +} + +// Maps to gvr_safety_region_type in the C API. +public enum GvrSafetyRegionType +{ + None = 0, + Cylinder = 1, +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadsetEnums.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadsetEnums.cs.meta new file mode 100644 index 0000000..ec57cff --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/GvrHeadsetEnums.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c39c9ce1c4cb949db8dc00fc0750f708 +timeCreated: 1498190965 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal.meta new file mode 100644 index 0000000..8ea204c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: af43d6d4ab8ba4d05ab0e1676c8ce0d1 +folderAsset: yes +timeCreated: 1506022906 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviderFactory.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviderFactory.cs new file mode 100644 index 0000000..4e4c5f8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviderFactory.cs @@ -0,0 +1,52 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// @cond +namespace Gvr.Internal +{ + /// Factory that provides a concrete implementation of IHeadsetProvider for the + /// current platform. + static class HeadsetProviderFactory + { + /// Provides a concrete implementation of IHeadsetProvider appropriate for the current + /// platform. This method never returns null. In the worst case, it might return a dummy + /// provider if the platform is not supported. For demo purposes the emulator controller + /// is returned in the editor and in Unity Standalone (desktop) builds, for use inside the + /// desktop player. + static internal IHeadsetProvider CreateProvider() + { +// Use emualtor in editor, GVR SDK support on Android standalone headsets, and a +// dummy implementation otherwise.. +#if UNITY_EDITOR + return new EditorHeadsetProvider(); +#elif UNITY_ANDROID + // Use the GVR C API. + return new AndroidNativeHeadsetProvider(); +#else + // Platform not supported. + Debug.LogWarning("No Google VR standalone headset / 6DoF support on " + + Application.platform + " platform."); + return new DummyHeadsetProvider(); +#endif // UNITY_EDITOR || UNITY_ANDROID + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviderFactory.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviderFactory.cs.meta new file mode 100644 index 0000000..9aa4f59 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviderFactory.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1a8761daaa87949d9bfee83827f1cf81 +timeCreated: 1498369166 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders.meta new file mode 100644 index 0000000..55693d4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 11025f606deb84fb9b904f2ed08d3f5d +folderAsset: yes +timeCreated: 1506022906 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetEnums.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetEnums.cs new file mode 100644 index 0000000..6d2eb85 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetEnums.cs @@ -0,0 +1,75 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; + +/// @cond +namespace Gvr.Internal +{ + /// Maps to gvr_feature in the C API. + internal enum gvr_feature + { + HeadPose6dof = 3, + } + + /// Maps to gvr_property_type in the C API. + internal enum gvr_property_type + { + // float; GVR_PROPERTY_TRACKING_FLOOR_HEIGHT + TrackingFloorHeight = 1, + + // gvr_mat4f, GVR_PROPERTY_RECENTER_TRANSFORM + RecenterTransform = 2, + + // int (gvr_safety_region_type), GVR_PROPERTY_SAFETY_REGION + SafetyRegion = 3, + + // float, GVR_PROPERTY_SAFETY_CYLINDER_INNER_RADIUS + SafetyCylinderInnerRadius = 4, + + // float, GVR_PROPERTY_SAFETY_CYLINDER_OUTER_RADIUS + SafetyCylinderOuterRadius = 5, + } + + /// Maps to gvr_value_type in the C API. + internal enum gvr_value_type + { + None = 0, + Float = 1, + Double = 2, + Int = 3, + Int64 = 4, + Flags = 5, + Sizei = 6, + Recti = 7, + Rectf = 8, + Vec2f = 9, + Vec3f = 10, + Quat = 11, + Mat4f = 12, + ClockTimePoint = 13, + } + + internal enum gvr_recenter_flags + { + None = 0, + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetEnums.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetEnums.cs.meta new file mode 100644 index 0000000..8888905 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetEnums.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4768e786f437540fd9f7d0c0d5778312 +timeCreated: 1498382144 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetProvider.cs new file mode 100644 index 0000000..24cc032 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetProvider.cs @@ -0,0 +1,458 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// This provider is only available on an Android device. +#if UNITY_ANDROID && !UNITY_EDITOR +using Gvr; +using System; +using System.Runtime.InteropServices; +using UnityEngine; +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using XRDevice = UnityEngine.VR.VRDevice; +#endif // UNITY_2017_2_OR_NEWER + +/// @cond +namespace Gvr.Internal +{ + class AndroidNativeHeadsetProvider : IHeadsetProvider + { + private IntPtr gvrContextPtr = XRDevice.GetNativePtr(); + private GvrValue gvrValue = new GvrValue(); + private gvr_event_header gvrEventHeader = new gvr_event_header(); + private gvr_recenter_event_data gvrRecenterEventData = new gvr_recenter_event_data(); + + // |gvr_event| C struct is spec'd to be up to 512 bytes in size. + private byte[] gvrEventBuffer = new byte[512]; + private GCHandle gvrEventHandle; + private IntPtr gvrEventPtr; + private IntPtr gvrPropertiesPtr; + private int supportsPositionalTracking = -1; + + /// Used only as a temporary placeholder to avoid allocations. + /// Do not use this for storing state. + private MutablePose3D transientRecenteredPose3d = new MutablePose3D(); + + public bool SupportsPositionalTracking + { + get + { + if (supportsPositionalTracking < 0) + { + supportsPositionalTracking = + gvr_is_feature_supported(gvrContextPtr, (int)gvr_feature.HeadPose6dof) ? 1 : 0; + } + + return supportsPositionalTracking > 0; + } + } + + internal AndroidNativeHeadsetProvider() + { + gvrEventHandle = GCHandle.Alloc(gvrEventBuffer, GCHandleType.Pinned); + gvrEventPtr = gvrEventHandle.AddrOfPinnedObject(); + } + + ~AndroidNativeHeadsetProvider() + { + gvrEventHandle.Free(); + } + + public void PollEventState(ref HeadsetState state) + { + GvrErrorType eventType; + try + { + eventType = (GvrErrorType)gvr_poll_event(gvrContextPtr, gvrEventPtr); + } + catch (EntryPointNotFoundException) + { + Debug.LogError("GvrHeadset not supported by this version of Unity. " + + "Support starts in 5.6.3p3 and 2017.1.1p1."); + throw; + } + + if (eventType == GvrErrorType.NoEventAvailable) + { + state.eventType = GvrEventType.Invalid; + return; + } + + Marshal.PtrToStructure(gvrEventPtr, gvrEventHeader); + state.eventFlags = gvrEventHeader.flags; + state.eventTimestampNs = gvrEventHeader.timestamp; + state.eventType = (GvrEventType)gvrEventHeader.type; + + // Event data begins after header. + IntPtr eventDataPtr = new IntPtr(gvrEventPtr.ToInt64() + Marshal.SizeOf(gvrEventHeader)); + + if (state.eventType == GvrEventType.Recenter) + { + Marshal.PtrToStructure(eventDataPtr, gvrRecenterEventData); + _HandleRecenterEvent(ref state, gvrRecenterEventData); + return; + } + } + + public bool TryGetFloorHeight(ref float floorHeight) + { + if (!_GvrGetProperty(gvr_property_type.TrackingFloorHeight, gvrValue)) + { + return false; + } + + floorHeight = gvrValue.ToFloat(); + return true; + } + + public bool TryGetRecenterTransform(ref Vector3 position, ref Quaternion rotation) + { + if (!_GvrGetProperty(gvr_property_type.RecenterTransform, gvrValue)) + { + return false; + } + + transientRecenteredPose3d.Set(gvrValue.ToMatrix4x4()); + position = transientRecenteredPose3d.Position; + rotation = transientRecenteredPose3d.Orientation; + return true; + } + + public bool TryGetSafetyRegionType(ref GvrSafetyRegionType safetyType) + { + if (!_GvrGetProperty(gvr_property_type.SafetyRegion, gvrValue)) + { + return false; + } + + safetyType = (GvrSafetyRegionType)gvrValue.ToInt32(); + return true; + } + + public bool TryGetSafetyCylinderInnerRadius(ref float innerRadius) + { + if (!_GvrGetProperty(gvr_property_type.SafetyCylinderInnerRadius, gvrValue)) + { + return false; + } + + innerRadius = gvrValue.ToFloat(); + return true; + } + + public bool TryGetSafetyCylinderOuterRadius(ref float outerRadius) + { + if (!_GvrGetProperty(gvr_property_type.SafetyCylinderOuterRadius, gvrValue)) + { + return false; + } + + outerRadius = gvrValue.ToFloat(); + return true; + } + +#region PRIVATE_HELPERS + /// Returns true if a property was available and retrieved. + private bool _GvrGetProperty(gvr_property_type propertyType, GvrValue valueOut) + { + gvr_value_type valueType = GetPropertyValueType(propertyType); + if (valueType == gvr_value_type.None) + { + Debug.LogError("Unknown gvr property " + propertyType + ". Unable to type check."); + } + + if (gvrPropertiesPtr == IntPtr.Zero) + { + try + { + gvrPropertiesPtr = gvr_get_current_properties(gvrContextPtr); + } + catch (EntryPointNotFoundException) + { + Debug.LogError("GvrHeadset not supported by this version of Unity. " + + "Support starts in 5.6.3p3 and 2017.1.1p1."); + throw; + } + } + + if (gvrPropertiesPtr == IntPtr.Zero) + { + return false; + } + + // Assumes that gvr_properties_get (C API) will only ever return + // GvrErrorType.None or GvrErrorType.NoEventAvailable. + bool success = + (GvrErrorType.None == + (GvrErrorType)gvr_properties_get(gvrPropertiesPtr, propertyType, valueOut.BufferPtr)); + if (success) + { + valueOut.Parse(); + success = (valueType == gvr_value_type.None || valueOut.TypeEnum == valueType); + if (!success) + { + Debug.LogError("GvrGetProperty " + propertyType + " type mismatch, expected " + + valueType + " got " + valueOut.TypeEnum); + } + } + + return success; + } + + private void _HandleRecenterEvent(ref HeadsetState state, gvr_recenter_event_data eventData) + { + state.recenterEventType = (GvrRecenterEventType)eventData.recenter_event_type; + state.recenterEventFlags = eventData.recenter_event_flags; + Matrix4x4 gvrMatrix = GvrMathHelpers.ConvertFloatArrayToMatrix(eventData.pose_transform); + GvrMathHelpers.GvrMatrixToUnitySpace( + gvrMatrix, out state.recenteredPosition, out state.recenteredRotation); + } +#endregion // PRIVATE_HELPERS + +#region GVR_TYPE_HELPERS + private gvr_value_type GetPropertyValueType(gvr_property_type propertyType) + { + gvr_value_type propType = gvr_value_type.None; + switch (propertyType) + { + case gvr_property_type.TrackingFloorHeight: + propType = gvr_value_type.Float; + break; + case gvr_property_type.RecenterTransform: + propType = gvr_value_type.Mat4f; + break; + case gvr_property_type.SafetyRegion: + propType = gvr_value_type.Int; + break; + case gvr_property_type.SafetyCylinderInnerRadius: + propType = gvr_value_type.Float; + break; + case gvr_property_type.SafetyCylinderOuterRadius: + propType = gvr_value_type.Float; + break; + } + + return propType; + } + + /// Helper class to parse |gvr_value| structs into the varied data types it could contain. + /// NOTE: Does NO type checking on value conversions. |_GvrGetProperty| checks types. + private class GvrValue + { + private static readonly int HEADER_SIZE = Marshal.SizeOf(typeof(gvr_value_header)); + private gvr_value_header valueHeader = new gvr_value_header(); + + // |gvr_value| C struct is spec'd to be up to 256 bytes in size. + private byte[] buffer = new byte[256]; + private IntPtr bufferPtr; + private IntPtr valuePtr; + private GCHandle bufferHandle; + + public GvrValue() + { + bufferHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned); + bufferPtr = bufferHandle.AddrOfPinnedObject(); + + // Value portion starts after the header. + valuePtr = new IntPtr(bufferPtr.ToInt64() + HEADER_SIZE); + } + + ~GvrValue() + { + bufferHandle.Free(); + } + + /// Gets the ptr to a buffer that can be used as an argument to |gvr_properties_get|. + public IntPtr BufferPtr + { + get + { + return bufferPtr; + } + } + + public gvr_value_type TypeEnum + { + get + { + return valueHeader.value_type; + } + } + + /// Parse the header of the current buffer. This should be called after the contents of + /// the buffer have been altered e.g. by a call to |gvr_properties_get|. + public void Parse() + { + Marshal.PtrToStructure(bufferPtr, valueHeader); + } + + public int ToInt32() + { + return BitConverter.ToInt32(buffer, HEADER_SIZE); + } + + public long ToInt64() + { + return BitConverter.ToInt64(buffer, HEADER_SIZE); + } + + public float ToFloat() + { + return BitConverter.ToSingle(buffer, HEADER_SIZE); + } + + public double ToDouble() + { + return BitConverter.ToDouble(buffer, HEADER_SIZE); + } + + public Vector2 ToVector2() + { + return (Vector2)Marshal.PtrToStructure(valuePtr, typeof(Vector2)); + } + + public Vector3 ToVector3() + { + return (Vector3)Marshal.PtrToStructure(valuePtr, typeof(Vector3)); + } + + public Vector4 ToVector4() + { + return (Vector4)Marshal.PtrToStructure(valuePtr, typeof(Vector4)); + } + + public Quaternion ToQuaternion() + { + return (Quaternion)Marshal.PtrToStructure(valuePtr, typeof(Quaternion)); + } + + public gvr_rectf ToGvrRectf() + { + return (gvr_rectf)Marshal.PtrToStructure(valuePtr, typeof(gvr_rectf)); + } + + public gvr_recti ToGvrRecti() + { + return (gvr_recti)Marshal.PtrToStructure(valuePtr, typeof(gvr_recti)); + } + + public Matrix4x4 ToMatrix4x4() + { + Matrix4x4 mat4 = (Matrix4x4)Marshal.PtrToStructure(valuePtr, typeof(Matrix4x4)); + + // Transpose the matrix from row-major (GVR) to column-major (Unity), + // and change from LHS to RHS coordinates. + return Pose3D.FlipHandedness(mat4.transpose); + } + } +#endregion // GVR_TYPE_HELPERS + +#region GVR_NATIVE_STRUCTS + [StructLayout(LayoutKind.Sequential)] + private class gvr_recenter_event_data + { + // gvr_recenter_event_type + internal int recenter_event_type; + + // gvr_flags + internal uint recenter_event_flags; + + // gvr_mat4f = float[4][4] + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] + internal float[] pose_transform = new float[16]; + } + + [StructLayout(LayoutKind.Explicit)] + private class gvr_event_header + { + [FieldOffset(0)] + internal long timestamp; + + // gvr_event_type + [FieldOffset(8)] + internal int type; + + // gvr_flags + [FieldOffset(12)] + internal int flags; + + // Event specific data starts at offset 16. + } + + [StructLayout(LayoutKind.Explicit)] + private class gvr_value_header + { + [FieldOffset(0)] + internal gvr_value_type value_type; + + // gvr_flags + [FieldOffset(4)] + internal int flags; + + // Value data starts at offset 8. + } + + [StructLayout(LayoutKind.Sequential)] + public struct gvr_sizei + { + internal int width; + internal int height; + } + + [StructLayout(LayoutKind.Sequential)] + public struct gvr_recti + { + internal int left; + internal int right; + internal int bottom; + internal int top; + } + + [StructLayout(LayoutKind.Sequential)] + public struct gvr_rectf + { + internal float left; + internal float right; + internal float bottom; + internal float top; + } + +#endregion // GVR_NATIVE_STRUCTS + +#region GVR_C_API + private const string DLL_NAME = GvrActivityHelper.GVR_DLL_NAME; + + [DllImport(DLL_NAME)] + private static extern bool gvr_is_feature_supported(IntPtr gvr_context, int feature); + + [DllImport(DLL_NAME)] + private static extern int gvr_poll_event(IntPtr gvr_context, IntPtr event_out); + + [DllImport(DLL_NAME)] + private static extern IntPtr gvr_get_current_properties(IntPtr gvr_context); + + [DllImport(DLL_NAME)] + private static extern int gvr_properties_get( + IntPtr gvr_properties, gvr_property_type property_type, IntPtr value_out); +#endregion // GVR_C_API + } +} + +/// @endcond +#endif // UNITY_ANDROID && !UNITY_EDITOR diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetProvider.cs.meta new file mode 100644 index 0000000..764463a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/AndroidNativeHeadsetProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e39841bba8ebf4707aff759a1690a400 +timeCreated: 1498369167 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/DummyHeadsetProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/DummyHeadsetProvider.cs new file mode 100644 index 0000000..8e6d339 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/DummyHeadsetProvider.cs @@ -0,0 +1,70 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using Gvr; +using UnityEngine; + +/// Used for platforms that do not support the GoogleVR standalone headset (6DoF). +/// @cond +namespace Gvr.Internal +{ + class DummyHeadsetProvider : IHeadsetProvider + { + private HeadsetState dummyState; + + public bool SupportsPositionalTracking + { + get + { + return false; + } + } + + public void PollEventState(ref HeadsetState state) + { + } + + public bool TryGetFloorHeight(ref float floorHeight) + { + return false; + } + + public bool TryGetRecenterTransform( + ref Vector3 position, ref Quaternion rotation) + { + return false; + } + + public bool TryGetSafetyRegionType(ref GvrSafetyRegionType safetyType) + { + return false; + } + + public bool TryGetSafetyCylinderInnerRadius(ref float innerRadius) + { + return false; + } + + public bool TryGetSafetyCylinderOuterRadius(ref float outerRadius) + { + return false; + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/DummyHeadsetProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/DummyHeadsetProvider.cs.meta new file mode 100644 index 0000000..d516722 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/DummyHeadsetProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fff2ffa71f4754593a63b4ebb799955e +timeCreated: 1498369167 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/EditorHeadsetProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/EditorHeadsetProvider.cs new file mode 100644 index 0000000..4dce699 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/EditorHeadsetProvider.cs @@ -0,0 +1,206 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using Gvr; +using UnityEngine; + +/// @cond +namespace Gvr.Internal +{ + class EditorHeadsetProvider : IHeadsetProvider + { + public const float DEFAULT_FLOOR_HEIGHT_3DOF = -1.6f; + public static readonly Vector3 DEFAULT_RECENTER_TRANSFORM_POSITION = Vector3.zero; + public static readonly Quaternion DEFAULT_RECENTER_TRANSFORM_ROTATION = Quaternion.identity; + public const GvrSafetyRegionType DEFAULT_SAFETY_REGION_TYPE_3DOF = GvrSafetyRegionType.Cylinder; + public const float DEFAULT_SAFETY_CYLINDER_ENTER_RADIUS_3DOF = 0.6f; + public const float DEFAULT_SAFETY_CYLINDER_EXIT_RADIUS_3DOF = 0.7f; + + private HeadsetState dummyState; + + public bool SupportsPositionalTracking + { + get + { + return true; + } + } + + public void PollEventState(ref HeadsetState state) + { +#if UNITY_ANDROID && UNITY_EDITOR + if (InstantPreview.Instance != null) + { + if (InstantPreview.Instance.events.Count > 0) + { + InstantPreview.UnityGvrEvent eventState = InstantPreview.Instance.events.Dequeue(); + switch (eventState.type) + { + case InstantPreview.GvrEventType.GVR_EVENT_NONE: + state.eventType = GvrEventType.Invalid; + break; + case InstantPreview.GvrEventType.GVR_EVENT_RECENTER: + state.eventType = GvrEventType.Recenter; + break; + case InstantPreview.GvrEventType.GVR_EVENT_SAFETY_REGION_EXIT: + state.eventType = GvrEventType.SafetyRegionExit; + break; + case InstantPreview.GvrEventType.GVR_EVENT_SAFETY_REGION_ENTER: + state.eventType = GvrEventType.SafetyRegionEnter; + break; + case InstantPreview.GvrEventType.GVR_EVENT_HEAD_TRACKING_RESUMED: + // Currently not supported. + state.eventType = GvrEventType.Invalid; + break; + case InstantPreview.GvrEventType.GVR_EVENT_HEAD_TRACKING_PAUSED: + // Currently not supported. + state.eventType = GvrEventType.Invalid; + break; + } + + state.eventFlags = (int)eventState.flags; + state.eventTimestampNs = eventState.timestamp; + + // Only add recenter-specific fields if this is a recenter event. + if (eventState.type == InstantPreview.GvrEventType.GVR_EVENT_RECENTER) + { + switch (eventState.gvr_recenter_event_data.recenter_type) + { + case InstantPreview.GvrRecenterEventType.GVR_RECENTER_EVENT_NONE: + state.recenterEventType = GvrRecenterEventType.Invalid; + break; + case InstantPreview.GvrRecenterEventType.GVR_RECENTER_EVENT_RESTART: + state.recenterEventType = GvrRecenterEventType.RecenterEventRestart; + break; + case InstantPreview.GvrRecenterEventType.GVR_RECENTER_EVENT_ALIGNED: + state.recenterEventType = GvrRecenterEventType.RecenterEventAligned; + break; + case InstantPreview.GvrRecenterEventType.GVR_RECENTER_EVENT_DON: + // Currently not supported. + state.recenterEventType = GvrRecenterEventType.Invalid; + break; + } + + state.recenterEventFlags = eventState.gvr_recenter_event_data.recenter_event_flags; + GvrMathHelpers.GvrMatrixToUnitySpace( + eventState.gvr_recenter_event_data.start_space_from_tracking_space_transform, + out state.recenteredPosition, + out state.recenteredRotation); + } + } + else + { + state.eventType = GvrEventType.Invalid; + } + } + + return; +#endif // UNITY_ANDROID && UNITY_EDITOR + // Events are unavailable through emulation. + } + + public bool TryGetFloorHeight(ref float floorHeight) + { +#if UNITY_ANDROID && UNITY_EDITOR + if (InstantPreview.Instance != null) + { + if (InstantPreview.Instance.floorHeight.isValid) + { + floorHeight = InstantPreview.Instance.floorHeight.value; + } + + return InstantPreview.Instance.floorHeight.isValid; + } +#endif // UNITY_ANDROID && UNITY_EDITOR + floorHeight = DEFAULT_FLOOR_HEIGHT_3DOF; + return true; + } + + public bool TryGetRecenterTransform(ref Vector3 position, ref Quaternion rotation) + { +#if UNITY_ANDROID && UNITY_EDITOR + if (InstantPreview.Instance != null) + { + if (InstantPreview.Instance.recenterTransform.isValid) + { + GvrMathHelpers.GvrMatrixToUnitySpace( + InstantPreview.Instance.recenterTransform.value, out position, out rotation); + } + + return InstantPreview.Instance.recenterTransform.isValid; + } +#endif // UNITY_ANDROID && UNITY_EDITOR + position = DEFAULT_RECENTER_TRANSFORM_POSITION; + rotation = DEFAULT_RECENTER_TRANSFORM_ROTATION; + return true; + } + + public bool TryGetSafetyRegionType(ref GvrSafetyRegionType safetyType) + { +#if UNITY_ANDROID && UNITY_EDITOR + if (InstantPreview.Instance != null) + { + if (InstantPreview.Instance.safetyRegionType.isValid) + { + safetyType = (GvrSafetyRegionType)InstantPreview.Instance.safetyRegionType.value; + } + + return InstantPreview.Instance.safetyRegionType.isValid; + } +#endif // UNITY_ANDROID && UNITY_EDITOR + safetyType = DEFAULT_SAFETY_REGION_TYPE_3DOF; + return true; + } + + public bool TryGetSafetyCylinderInnerRadius(ref float innerRadius) + { +#if UNITY_ANDROID && UNITY_EDITOR + if (InstantPreview.Instance != null) + { + if (InstantPreview.Instance.safetyCylinderEnterRadius.isValid) + { + innerRadius = InstantPreview.Instance.safetyCylinderEnterRadius.value; + } + + return InstantPreview.Instance.safetyCylinderEnterRadius.isValid; + } +#endif // UNITY_ANDROID && UNITY_EDITOR + innerRadius = DEFAULT_SAFETY_CYLINDER_ENTER_RADIUS_3DOF; + return true; + } + + public bool TryGetSafetyCylinderOuterRadius(ref float outerRadius) + { +#if UNITY_ANDROID && UNITY_EDITOR + if (InstantPreview.Instance != null) + { + if (InstantPreview.Instance.safetyCylinderExitRadius.isValid) + { + outerRadius = InstantPreview.Instance.safetyCylinderExitRadius.value; + } + + return InstantPreview.Instance.safetyCylinderExitRadius.isValid; + } +#endif // UNITY_ANDROID && UNITY_EDITOR + outerRadius = DEFAULT_SAFETY_CYLINDER_EXIT_RADIUS_3DOF; + return true; + } + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/EditorHeadsetProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/EditorHeadsetProvider.cs.meta new file mode 100644 index 0000000..b3c0c25 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetProviders/EditorHeadsetProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 19a9f6c7cb74d44bd9bbc87397789f7c +timeCreated: 1498369166 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetState.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetState.cs new file mode 100644 index 0000000..19b0869 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetState.cs @@ -0,0 +1,58 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; + +using Gvr; + +/// @cond +namespace Gvr.Internal +{ + // Internal representation of state for the headset. + struct HeadsetState + { + internal GvrEventType eventType; + internal int eventFlags; + internal long eventTimestampNs; + + // Maps to gvr_clock_time_point monotonic_systemtime_nanos. + + // Recenter event data. + internal GvrRecenterEventType recenterEventType; + internal uint recenterEventFlags; + internal Vector3 recenteredPosition; + internal Quaternion recenteredRotation; + + public void Initialize() + { + eventType = GvrEventType.Invalid; + eventFlags = 0; + eventTimestampNs = 0; + + recenterEventType = GvrRecenterEventType.Invalid; + recenterEventFlags = 0; + recenteredPosition = Vector3.zero; + recenteredRotation = Quaternion.identity; + } + } +} + +// namespace Gvr.Internal + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetState.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetState.cs.meta new file mode 100644 index 0000000..fb012a4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/HeadsetState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 127c2783105b84d52adbb2499339f572 +timeCreated: 1498369166 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/IHeadsetProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/IHeadsetProvider.cs new file mode 100644 index 0000000..3e38aaa --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/IHeadsetProvider.cs @@ -0,0 +1,63 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// @cond +namespace Gvr.Internal +{ + interface IHeadsetProvider + { + /// Returns whether the current headset supports positionally tracked, 6DoF head poses. + bool SupportsPositionalTracking { get; } + + /// Polls for GVR standalone events. + void PollEventState(ref HeadsetState outState); + + /// If a floor is found, populates floorHeight with the detected height. + /// Otherwise, leaves the value unchanged. + /// Returns true if value retrieval was successful, false otherwise (depends on tracking state). + bool TryGetFloorHeight(ref float floorHeight); + + /// If the last recentering transform is available, populates position and rotation with that + /// transform. + /// Returns true if value retrieval was successful, false otherwise (unlikely). + bool TryGetRecenterTransform(ref Vector3 position, ref Quaternion rotation); + + /// Populates safetyType with the available safety region feature on the + /// currently-running device. + /// Returns true if value retrieval was successful, false otherwise (unlikely). + bool TryGetSafetyRegionType(ref GvrSafetyRegionType safetyType); + + /// If the safety region is of type GvrSafetyRegionType.Cylinder, populates innerRadius with the + /// inner radius size (where fog starts appearing) of the safety cylinder in meters. + /// Assumes the safety region type has been previously checked by the caller. + /// Returns true if value retrieval was successful, false otherwise (if region type is + /// GvrSafetyRegionType.Invalid). + bool TryGetSafetyCylinderInnerRadius(ref float innerRadius); + + /// If the safety region is of type GvrSafetyRegionType.Cylinder, populates outerRadius with the + /// outer radius size (where fog is 100% opaque) of the safety cylinder in meters. + /// Assumes the safety region type has been previously checked by the caller. + /// Returns true if value retrieval was successful, false otherwise (if region type is + /// GvrSafetyRegionType.Invalid). + bool TryGetSafetyCylinderOuterRadius(ref float outerRadius); + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/IHeadsetProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/IHeadsetProvider.cs.meta new file mode 100644 index 0000000..43ed188 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Headset/Internal/IHeadsetProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e5000c7de28ac497c8564ecb8d1f005d +timeCreated: 1498369167 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview.meta new file mode 100644 index 0000000..ca6ae42 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: dc23bd978efd04f4b9a73ad961330108 +folderAsset: yes +timeCreated: 1504030934 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk new file mode 100644 index 0000000..086c9cd Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta new file mode 100644 index 0000000..a3dc343 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreview.apk.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc278786e6540af428ccbf7825495004 +timeCreated: 1500315262 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreviewHelper.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreviewHelper.cs new file mode 100644 index 0000000..e7fe76a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreviewHelper.cs @@ -0,0 +1,173 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System.IO; +using System.Runtime.InteropServices; +using Gvr.Internal; +#if UNITY_EDITOR +using UnityEditor; +#endif +using UnityEngine; + +/// Helper methods for Instant preview. +[ExecuteInEditMode] +[HelpURL("https://developers.google.com/vr/unity/reference/class/InstantPreviewHelper")] +public class InstantPreviewHelper : MonoBehaviour +{ + /// Path to `adb` executable. + public static string AdbPath; + + /// Path to `aapt` executable. + public static string AaptPath; + +#if UNITY_ANDROID && UNITY_EDITOR + [DllImport(InstantPreview.dllName)] + private static extern bool SetAdbPathAndStart(string adbPath); +#if UNITY_WINDOWS + private static string CHECK_ANDROID_SDK_PATH = + "Verify that your Android SDK path is configured correctly" + + " (Edit > Preferences > External Tools > Android SDK).\n" + + "See https://docs.unity3d.com/Manual/android-sdksetup.html for more information."; +#else + private static string CHECK_ANDROID_SDK_PATH = + "Verify that your Android SDK path is configured correctly" + + " (Unity > Preferences > External Tools > Android SDK).\n" + + "See https://docs.unity3d.com/Manual/android-sdksetup.html for more information."; +#endif // UNITY_WINDOWS + + void Awake() + { + // Gets android SDK root from preferences. + var sdkRoot = EditorPrefs.GetString("AndroidSdkRoot"); + if (string.IsNullOrEmpty(sdkRoot)) + { + Debug.LogError(CHECK_ANDROID_SDK_PATH); + return; + } + + // Gets adb path from known directory. + AdbPath = Path.Combine(Path.GetFullPath(sdkRoot), "platform-tools" + Path.DirectorySeparatorChar + "adb"); + + // Gets latest build-tools subdirectory. + string LatestBuildToolsDir = GetLatestBuildToolsDir(sdkRoot); + if (LatestBuildToolsDir != null) + { + // Gets aapt path from known directory. + AaptPath = Path.Combine(Path.GetFullPath(LatestBuildToolsDir), "aapt"); + } + else + { + Debug.LogError(string.Format("build-tools not found in \"{0}\". Please add build-tools to your SDK path and restart the Unity editor.", Path.GetFullPath(sdkRoot))); + return; + } +#if UNITY_EDITOR_WIN + AdbPath = Path.ChangeExtension(AdbPath, "exe"); + AaptPath = Path.ChangeExtension(AaptPath, "exe"); +#endif // UNITY_EDITOR_WIN + + if (!File.Exists(AdbPath)) + { + Debug.LogErrorFormat("\"{0}\" not found. {1}", AdbPath, CHECK_ANDROID_SDK_PATH); + return; + } + + if (!File.Exists(AaptPath)) + { + Debug.LogError(string.Format("aapt not found at \"{0}\". Please add aapt to your SDK path and restart the Unity editor.", AaptPath)); + return; + } + + // Try to start server. + var started = SetAdbPathAndStart(AdbPath); + if (!started) + { + Debug.LogErrorFormat("Couldn't start Instant Preview server using \"{0}\".", AdbPath); + } + } + +#elif UNITY_EDITOR + void Awake() + { + Debug.LogWarning("Instant Preview is disabled; set target platform to Android to use it."); + } + +#endif + + // Split vesion directory paths (eg "Path/To/Build-Tools/23.0.2") into an array of ints (eg [23, 0, 2]). + int[] GetIntValuesFromString(string DirPath) + { + string DirName = Path.GetFileName(DirPath); + string[] VersionValues = DirName.Split('.'); + int[] VersionInts = new int[VersionValues.Length]; + for (int j = 0; j < VersionValues.Length; ++j) + { + if (!int.TryParse(VersionValues[j], out VersionInts[j])) + { + VersionInts[j] = 0; + } + } + + return VersionInts; + } + + // Get the numerically latest subdirectory within build-tools subdirectories, (eg select 101.0.1 rather than 99.5.3). + // Returns the full path (eg /path/to/build-tools/101.0.1). + string GetLatestBuildToolsDir(string sdkRoot) + { + string[] BuildToolsDirs = Directory.GetDirectories(Path.Combine(Path.GetFullPath(sdkRoot), string.Format("build-tools"))); + if (BuildToolsDirs.Length == 0) + { + return null; + } + + string LatestBuildToolsDir = BuildToolsDirs[0]; + int[] LatestVersionInts = GetIntValuesFromString(LatestBuildToolsDir); + for (int i = 1; i < BuildToolsDirs.Length; ++i) + { + int[] CurrentVersionInts = GetIntValuesFromString(BuildToolsDirs[i]); + + // Compare ints sequentially. + for (int j = 0; j < Mathf.Min(LatestVersionInts.Length, CurrentVersionInts.Length); ++j) + { + if (LatestVersionInts[j] > CurrentVersionInts[j]) + { + break; + } + else if (CurrentVersionInts[j] > LatestVersionInts[j] || j == LatestVersionInts.Length - 1) + { + // If one string version string has more elements than the other and leading digits are the same, it's probably newer. + LatestVersionInts = CurrentVersionInts; + LatestBuildToolsDir = BuildToolsDirs[i]; + } + } + } + + return LatestBuildToolsDir; + } +} + +#if !UNITY_ANDROID && UNITY_EDITOR +[CustomEditor(typeof(InstantPreviewHelper))] +public class InstantPreviewHelperEditor : Editor +{ + public override void OnInspectorGUI() + { + EditorGUILayout.LabelField("Instant Preview is disabled; set target platform to Android to use it."); + } +} +#endif diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreviewHelper.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreviewHelper.cs.meta new file mode 100644 index 0000000..46d454d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/InstantPreviewHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1b78ffabb50d1e94ca164106f5444e34 +timeCreated: 1494616992 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal.meta new file mode 100644 index 0000000..ac52dd3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5fc02c297d8ab4c70ac67ba9af275f04 +folderAsset: yes +timeCreated: 1539977634 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreview.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreview.cs new file mode 100644 index 0000000..ead34cd --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreview.cs @@ -0,0 +1,847 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System.Runtime.InteropServices; +using System; +using System.Text; +using System.Collections.Generic; +using System.IO; +using System.Threading; +using System.Text.RegularExpressions; + +namespace Gvr.Internal +{ + [HelpURL("https://developers.google.com/vr/unity/reference/class/InstantPreview")] + public class InstantPreview : MonoBehaviour + { + private const string NoDevicesFoundAdbResult = "error: no devices/emulators found"; + + internal static InstantPreview Instance { get; set; } + + internal const string dllName = "instant_preview_unity_plugin"; + + public enum Resolutions : int + { + Big, + Regular, + WindowSized, + } + + struct ResolutionSize + { + public int width; + public int height; + } + + [Tooltip("Resolution of video stream. Higher = more expensive / better visual quality.")] + public Resolutions OutputResolution = Resolutions.Big; + + public enum MultisampleCounts + { + One, + Two, + Four, + Eight, + } + + [Tooltip("Anti-aliasing for video preview. Higher = more expensive / better visual quality.")] + public MultisampleCounts MultisampleCount = MultisampleCounts.One; + + public enum BitRates + { + _2000, + _4000, + _8000, + _16000, + _24000, + _32000, + } + + [Tooltip("Video codec streaming bit rate. Higher = more expensive / better visual quality.")] + public BitRates BitRate = BitRates._16000; + + [Tooltip("Installs the Instant Preview app if it isn't found on the connected device.")] + public bool InstallApkOnRun = true; + + public UnityEngine.Object InstantPreviewApk; + + struct UnityRect + { + public float right; + public float left; + public float top; + public float bottom; + } + + struct UnityEyeViews + { + public Matrix4x4 leftEyePose; + public Matrix4x4 rightEyePose; + public UnityRect leftEyeViewSize; + public UnityRect rightEyeViewSize; + } + + public struct UnityFloatAtom + { + public float value; + public bool isValid; + } + + public struct UnityIntAtom + { + public int value; + public bool isValid; + } + + public struct UnityGvrMat4fAtom + { + public Matrix4x4 value; + public bool isValid; + } + + struct UnityGlobalGvrProperties + { + internal UnityFloatAtom floorHeight; + internal UnityGvrMat4fAtom recenterTransform; + internal UnityIntAtom safetyRegionType; + internal UnityFloatAtom safetyCylinderEnterRadius; + internal UnityFloatAtom safetyCylinderExitRadius; + } + + public enum GvrEventType + { + GVR_EVENT_NONE, + GVR_EVENT_RECENTER, + GVR_EVENT_SAFETY_REGION_EXIT, + GVR_EVENT_SAFETY_REGION_ENTER, + GVR_EVENT_HEAD_TRACKING_RESUMED, + GVR_EVENT_HEAD_TRACKING_PAUSED, + } + + public enum GvrRecenterEventType + { + GVR_RECENTER_EVENT_NONE, + GVR_RECENTER_EVENT_RESTART, + GVR_RECENTER_EVENT_ALIGNED, + GVR_RECENTER_EVENT_DON, + } + + internal struct UnityGvrRecenterEventData + { + internal GvrRecenterEventType recenter_type; + internal uint recenter_event_flags; + internal Matrix4x4 start_space_from_tracking_space_transform; + } + + internal struct UnityGvrEvent + { + // Timestamp in nanos. + internal long timestamp; + internal GvrEventType type; + internal uint flags; + + // Not null iff event type is GVR_EVENT_RECENTER. + internal UnityGvrRecenterEventData gvr_recenter_event_data; + } + +#if UNITY_EDITOR + static ResolutionSize[] resolutionSizes = new ResolutionSize[] + { + new ResolutionSize() + { + // ResolutionSize.Big + width = 2560, height = 1440, + }, + new ResolutionSize() + { + // ResolutionSize.Regular + width = 1920, height = 1080, + }, + + // ResolutionSize.WindowSized + new ResolutionSize(), + }; + + private static readonly int[] multisampleCounts = new int[] + { + 1, // MultisampleCounts.One + 2, // MultisampleCounts.Two + 4, // MultisampleCounts.Four + 8, // MultisampleCounts.Eight + }; + + private static readonly int[] bitRates = new int[] + { + 2000, // BitRates._2000 + 4000, // BitRates._4000 + 8000, // BitRates._8000 + 16000, // BitRates._16000 + 24000, // BitRates._24000 + 32000, // BitRates._32000 + }; + + [DllImport(dllName)] + private static extern bool IsConnected(); + + [DllImport(dllName)] + private static extern bool GetHeadPose(out Matrix4x4 pose, out double timestamp); + + [DllImport(dllName)] + private static extern bool GetEyeViews(out UnityEyeViews outputEyeViews); + + [DllImport(dllName)] + private static extern bool GetGlobalGvrProperties(ref UnityGlobalGvrProperties outputProperties); + + [DllImport(dllName)] + private static extern bool GetGvrEvent(ref UnityGvrEvent outputEvent); + + [DllImport(dllName)] + private static extern IntPtr GetRenderEventFunc(); + + [DllImport(dllName)] + private static extern void SendFrame(IntPtr renderTexture, ref Matrix4x4 pose, double timestamp, int bitRate); + + [DllImport(dllName)] + private static extern void GetVersionString(StringBuilder dest, uint n); + + public bool IsCurrentlyConnected + { + get { return connected; } + } + + private IntPtr renderEventFunc; + private RenderTexture renderTexture; + private Matrix4x4 headPose = Matrix4x4.identity; + private double timestamp; + + private class EyeCamera + { + public Camera leftEyeCamera = null; + public Camera rightEyeCamera = null; + } + + Dictionary eyeCameras = new Dictionary(); + List camerasLastFrame = new List(); + private bool connected; + + public UnityFloatAtom floorHeight { get; private set; } + + public UnityGvrMat4fAtom recenterTransform { get; private set; } + + public UnityIntAtom safetyRegionType { get; private set; } + + public UnityFloatAtom safetyCylinderEnterRadius { get; private set; } + + public UnityFloatAtom safetyCylinderExitRadius { get; private set; } + + internal Queue events = new Queue(); + + void Awake() + { + renderEventFunc = GetRenderEventFunc(); + + if (Instance != null) + { + Destroy(gameObject); + gameObject.SetActive(false); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + } + + void Start() + { + // Gets local version name and prints it out. + var sb = new StringBuilder(256); + GetVersionString(sb, (uint)sb.Capacity); + var pluginIPVersionName = sb.ToString(); + Debug.Log("Instant Preview Version: " + pluginIPVersionName); + + // Tries to install Instant Preview apk if set to do so. + if (InstallApkOnRun) + { + // Early outs if set to install but the apk can't be found. + if (InstantPreviewApk == null) + { + Debug.LogError("Trying to install Instant Preview apk but reference to InstantPreview.apk is broken."); + return; + } + + // Gets the apk path and installs it on a separate thread. + var apkPath = Path.GetFullPath(UnityEditor.AssetDatabase.GetAssetPath(InstantPreviewApk)); + if (File.Exists(apkPath)) + { + new Thread( + () => + { + string output; + string errors; + string deviceIPVersionName = null; + string unityAPKVersionName = null; + + // Gets version of apk installed on device (to remove, if dated). + RunCommand(InstantPreviewHelper.AdbPath, + "shell dumpsys package com.google.instantpreview | grep versionName", + out output, out errors); + if (!string.IsNullOrEmpty(output) && string.IsNullOrEmpty(errors)) + { + deviceIPVersionName = output.Substring(output.IndexOf('=') + 1); + } + + // Early outs if no device is connected. + if (string.Compare(errors, NoDevicesFoundAdbResult) == 0) + { + return; + } + + // Prints errors and exits on failure. + if (!string.IsNullOrEmpty(errors)) + { + Debug.LogError(errors); + return; + } + + // Gets version of Unity's local .apk version (to install, if needed). + RunCommand(InstantPreviewHelper.AaptPath, + string.Format("dump badging {0}", apkPath), + out output, out errors); + if (!string.IsNullOrEmpty(output) && string.IsNullOrEmpty(errors)) + { + string unityAPKVersionInfoDump = output; + + // Finds (versionName='), captures any alphaNumerics separated by periods, and selects them until ('). + System.Text.RegularExpressions.Match unityAPKVersionNameRegex = Regex.Match( + unityAPKVersionInfoDump, "versionName=\'([^']*)\'"); + if (unityAPKVersionNameRegex.Groups.Count > 1) + { + unityAPKVersionName = unityAPKVersionNameRegex.Groups[1].Value; + } + else + { + Debug.Log(string.Format("Failed to extract version from: {0}", unityAPKVersionInfoDump)); + } + } + else + { + Debug.Log(string.Format("Failed to run: {0} dump badging {1}", InstantPreviewHelper.AaptPath, apkPath)); + } + + // Determines if Unity plugin and Unity's local .apk IP file are the same version, and exits if not. + if (pluginIPVersionName != unityAPKVersionName) + { + Debug.LogWarning(string.Format( + "Unity Instant Preview plugin version ({0}) does not match Unity Instant Preview .apk version ({1})." + + " This may cause unpredictable behavior.", + pluginIPVersionName, unityAPKVersionName)); + } + + // Determines if app is installed, and installs it if not. + if (deviceIPVersionName != unityAPKVersionName) + { + if (deviceIPVersionName == null) + { + Debug.Log(string.Format( + "Instant Preview: app not found on device, attempting to install it from {0}.", + apkPath)); + } + else + { + Debug.Log(string.Format( + "Instant Preview: installed version \"{0}\" does not match local version \"{1}\", attempting upgrade.", + deviceIPVersionName, unityAPKVersionName)); + } + + RunCommand(InstantPreviewHelper.AdbPath, + string.Format("uninstall com.google.instantpreview", apkPath), + out output, out errors); + + RunCommand(InstantPreviewHelper.AdbPath, + string.Format("install \"{0}\"", apkPath), + out output, out errors); + + // Prints any output from trying to install. + if (!string.IsNullOrEmpty(output)) + { + Debug.Log(output); + } + + if (!string.IsNullOrEmpty(errors)) + { + if (string.Equals(errors.Trim(), "Success")) + { + Debug.Log("Successfully installed Instant Preview app."); + } + else + { + Debug.LogError(errors); + } + } + } + + StartInstantPreviewActivity(InstantPreviewHelper.AdbPath); + }).Start(); + } + } + else + { + new Thread(() => { StartInstantPreviewActivity(InstantPreviewHelper.AdbPath); }).Start(); + } + } + + void UpdateCamera(Camera camera) + { + EyeCamera eyeCamera; + + if (!eyeCameras.TryGetValue(camera, out eyeCamera)) + { + return; + } + + if (connected) + { + if (GetHeadPose(out headPose, out timestamp)) + { + SetEditorEmulatorsEnabled(false); + camera.transform.localRotation = Quaternion.LookRotation(headPose.GetColumn(2), headPose.GetColumn(1)); + camera.transform.localPosition = camera.transform.localRotation * headPose.GetRow(3) * -1; + } + else + { + SetEditorEmulatorsEnabled(true); + } + + var eyeViews = new UnityEyeViews(); + if (GetEyeViews(out eyeViews)) + { + SetTransformFromMatrix(eyeCamera.leftEyeCamera.gameObject.transform, eyeViews.leftEyePose); + SetTransformFromMatrix(eyeCamera.rightEyeCamera.gameObject.transform, eyeViews.rightEyePose); + + var near = Camera.main.nearClipPlane; + var far = Camera.main.farClipPlane; + eyeCamera.leftEyeCamera.projectionMatrix = + PerspectiveMatrixFromUnityRect(eyeViews.leftEyeViewSize, near, far); + eyeCamera.rightEyeCamera.projectionMatrix = + PerspectiveMatrixFromUnityRect(eyeViews.rightEyeViewSize, near, far); + + bool multisampleChanged = multisampleCounts[(int)MultisampleCount] != renderTexture.antiAliasing; + + // Adjusts render texture size. + if (OutputResolution != Resolutions.WindowSized) + { + var selectedResolutionSize = resolutionSizes[(int)OutputResolution]; + if (selectedResolutionSize.width != renderTexture.width || + selectedResolutionSize.height != renderTexture.height || + multisampleChanged) + { + ResizeRenderTexture(selectedResolutionSize.width, selectedResolutionSize.height); + } + } + else + { + // OutputResolution == Resolutions.WindowSized + var screenAspectRatio = (float)Screen.width / Screen.height; + + var eyeViewsWidth = + -eyeViews.leftEyeViewSize.left + + eyeViews.leftEyeViewSize.right + + -eyeViews.rightEyeViewSize.left + + eyeViews.rightEyeViewSize.right; + var eyeViewsHeight = + eyeViews.leftEyeViewSize.top + + -eyeViews.leftEyeViewSize.bottom; + if (eyeViewsHeight > 0f) + { + int renderTextureHeight; + int renderTextureWidth; + var eyeViewsAspectRatio = eyeViewsWidth / eyeViewsHeight; + if (screenAspectRatio > eyeViewsAspectRatio) + { + renderTextureHeight = Screen.height; + renderTextureWidth = (int)(Screen.height * eyeViewsAspectRatio); + } + else + { + renderTextureWidth = Screen.width; + renderTextureHeight = (int)(Screen.width / eyeViewsAspectRatio); + } + + renderTextureWidth = renderTextureWidth & ~0x3; + renderTextureHeight = renderTextureHeight & ~0x3; + + if (multisampleChanged || + renderTexture.width != renderTextureWidth || + renderTexture.height != renderTextureHeight) + { + ResizeRenderTexture(renderTextureWidth, renderTextureHeight); + } + } + } + } + } + else + { + // !connected + SetEditorEmulatorsEnabled(true); + + if (renderTexture.width != Screen.width || renderTexture.height != Screen.height) + { + ResizeRenderTexture(Screen.width, Screen.height); + } + } + } + + void UpdateProperties() + { + UnityGlobalGvrProperties unityGlobalGvrProperties = new UnityGlobalGvrProperties(); + if (GetGlobalGvrProperties(ref unityGlobalGvrProperties)) + { + floorHeight = unityGlobalGvrProperties.floorHeight; + recenterTransform = unityGlobalGvrProperties.recenterTransform; + safetyRegionType = unityGlobalGvrProperties.safetyRegionType; + safetyCylinderEnterRadius = unityGlobalGvrProperties.safetyCylinderEnterRadius; + safetyCylinderExitRadius = unityGlobalGvrProperties.safetyCylinderExitRadius; + } + } + + void UpdateEvents() + { + UnityGvrEvent unityGvrEvent = new UnityGvrEvent(); + while (GetGvrEvent(ref unityGvrEvent)) + { + events.Enqueue(unityGvrEvent); + } + } + + void Update() + { + if (!EnsureCameras()) + { + return; + } + + var newConnectionState = IsConnected(); + if (connected && !newConnectionState) + { + Debug.Log("Disconnected from Instant Preview."); + } + else if (!connected && newConnectionState) + { + Debug.Log("Connected to Instant Preview."); + } + + connected = newConnectionState; + + foreach (KeyValuePair eyeCamera in eyeCameras) + { + UpdateCamera(eyeCamera.Key); + } + + UpdateProperties(); + UpdateEvents(); + } + + void OnPostRender() + { + if (connected && renderTexture != null) + { + var nativeTexturePtr = renderTexture.GetNativeTexturePtr(); + SendFrame(nativeTexturePtr, ref headPose, timestamp, bitRates[(int)BitRate]); + GL.IssuePluginEvent(renderEventFunc, 69); + } + } + + void EnsureCamera(Camera camera) + { + // renderTexture might still be null so this creates and assigns it. + if (renderTexture == null) + { + if (OutputResolution != Resolutions.WindowSized) + { + var selectedResolutionSize = resolutionSizes[(int)OutputResolution]; + ResizeRenderTexture(selectedResolutionSize.width, selectedResolutionSize.height); + } + else + { + ResizeRenderTexture(Screen.width, Screen.height); + } + } + + EyeCamera eyeCamera; + + if (!eyeCameras.TryGetValue(camera, out eyeCamera)) + { + eyeCamera = new EyeCamera(); + eyeCameras.Add(camera, eyeCamera); + } + + EnsureEyeCamera(camera, ":Instant Preview Left", new Rect(0.0f, 0.0f, 0.5f, 1.0f), ref eyeCamera.leftEyeCamera); + EnsureEyeCamera(camera, ":Instant Preview Right", new Rect(0.5f, 0.0f, 0.5f, 1.0f), ref eyeCamera.rightEyeCamera); + } + + private void CheckRemoveCameras(List cameras) + { + // Any cameras that were here last frame and not here this frame need removing from eyeCameras. + foreach (Camera oldCamera in camerasLastFrame) + { + if (!cameras.Contains(oldCamera)) + { + // Destroys the eye cameras. + EyeCamera curEyeCamera; + if (eyeCameras.TryGetValue(oldCamera, out curEyeCamera)) + { + if (curEyeCamera.leftEyeCamera != null) + { + Destroy(curEyeCamera.leftEyeCamera.gameObject); + } + + if (curEyeCamera.rightEyeCamera != null) + { + Destroy(curEyeCamera.rightEyeCamera.gameObject); + } + } + + // Removes eye camera entry from dictionary. + eyeCameras.Remove(oldCamera); + } + } + + camerasLastFrame = cameras; + } + + bool EnsureCameras() + { + var mainCamera = Camera.main; + if (!mainCamera) + { + // If the main camera doesn't exist, destroys a remaining render texture and exits. + if (renderTexture != null) + { + Destroy(renderTexture); + renderTexture = null; + } + + return false; + } + + // Find all the cameras and make sure any non-Instant Preview cameras have left/right eyes attached. + var cameras = new List(ValidCameras()); + CheckRemoveCameras(cameras); + + // Now go and make sure that all cameras that are to be driven by Instant Preview have the correct setup. + foreach (Camera camera in cameras) + { + // Skips the Instant Preview camera, which is used for a + // convenience preview. + if (camera.gameObject == gameObject) + { + continue; + } + + EnsureCamera(camera); + } + + return true; + } + + void EnsureEyeCamera(Camera mainCamera, String eyeCameraName, Rect rect, ref Camera eyeCamera) + { + // Creates eye camera object if it doesn't exist. + if (eyeCamera == null) + { + var eyeCameraObject = new GameObject(mainCamera.gameObject.name + eyeCameraName); + eyeCamera = eyeCameraObject.AddComponent(); + eyeCameraObject.transform.SetParent(mainCamera.gameObject.transform, false); + } + + eyeCamera.CopyFrom(mainCamera); + eyeCamera.rect = rect; + eyeCamera.targetTexture = renderTexture; + + // Match child camera's skyboxes to main camera. + Skybox monoCameraSkybox = mainCamera.gameObject.GetComponent(); + Skybox customSkybox = eyeCamera.GetComponent(); + if (monoCameraSkybox != null) + { + if (customSkybox == null) + { + customSkybox = eyeCamera.gameObject.AddComponent(); + } + + customSkybox.material = monoCameraSkybox.material; + } + else if (customSkybox != null) + { + Destroy(customSkybox); + } + } + + void ResizeRenderTexture(int width, int height) + { + var newRenderTexture = new RenderTexture(width, height, 16); + newRenderTexture.antiAliasing = multisampleCounts[(int)MultisampleCount]; + if (renderTexture != null) + { + foreach (KeyValuePair camera in eyeCameras) + { + if (camera.Value.leftEyeCamera != null) + { + camera.Value.leftEyeCamera.targetTexture = null; + } + + if (camera.Value.rightEyeCamera != null) + { + camera.Value.rightEyeCamera.targetTexture = null; + } + } + + Destroy(renderTexture); + } + + renderTexture = newRenderTexture; + } + + private static void SetEditorEmulatorsEnabled(bool enabled) + { + foreach (var editorEmulator in FindObjectsOfType()) + { + editorEmulator.enabled = enabled; + } + } + + private static Matrix4x4 PerspectiveMatrixFromUnityRect(UnityRect rect, float near, float far) + { + if (rect.left == rect.right || rect.bottom == rect.top || near == far || + near <= 0f || far <= 0f) + { + return Matrix4x4.identity; + } + + rect.left *= near; + rect.right *= near; + rect.top *= near; + rect.bottom *= near; + var X = (2 * near) / (rect.right - rect.left); + var Y = (2 * near) / (rect.top - rect.bottom); + var A = (rect.right + rect.left) / (rect.right - rect.left); + var B = (rect.top + rect.bottom) / (rect.top - rect.bottom); + var C = (near + far) / (near - far); + var D = (2 * near * far) / (near - far); + + var perspectiveMatrix = new Matrix4x4(); + perspectiveMatrix[0, 0] = X; + perspectiveMatrix[0, 2] = A; + perspectiveMatrix[1, 1] = Y; + perspectiveMatrix[1, 2] = B; + perspectiveMatrix[2, 2] = C; + perspectiveMatrix[2, 3] = D; + perspectiveMatrix[3, 2] = -1f; + return perspectiveMatrix; + } + + private static void SetTransformFromMatrix(Transform transform, Matrix4x4 matrix) + { + var position = matrix.GetRow(3); + position.x *= -1; + transform.localPosition = position; + transform.localRotation = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1)); + } + + private static void StartInstantPreviewActivity(string adbPath) + { + string output; + string errors; + RunCommand(adbPath, "shell monkey -p com.google.instantpreview -c android.intent.category.LAUNCHER 1", out output, out errors); + + // Early outs if no device is connected. + if (string.Compare(errors, NoDevicesFoundAdbResult) == 0) + { + return; + } + } + + private static void RunCommand(string fileName, string arguments, out string output, out string errors) + { + using (var process = new System.Diagnostics.Process()) + { + System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(fileName, arguments); + startInfo.UseShellExecute = false; + startInfo.RedirectStandardError = true; + startInfo.RedirectStandardOutput = true; + + startInfo.CreateNoWindow = true; + process.StartInfo = startInfo; + + var outputBuilder = new StringBuilder(); + var errorBuilder = new StringBuilder(); + process.OutputDataReceived += (o, ef) => outputBuilder.AppendLine(ef.Data); + process.ErrorDataReceived += (o, ef) => errorBuilder.AppendLine(ef.Data); + + process.Start(); + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + process.WaitForExit(); + process.Close(); + + // Trims the output strings to make comparison easier. + output = outputBuilder.ToString().Trim(); + errors = errorBuilder.ToString().Trim(); + } + } + + // Gets active, stereo, non-eye cameras in the scene. + private IEnumerable ValidCameras() + { + foreach (var camera in Camera.allCameras) + { + if (!camera.enabled || camera.stereoTargetEye == StereoTargetEyeMask.None) + { + continue; + } + + // Skips camera if it is determined to be an eye camera. + var parent = camera.transform.parent; + if (parent != null) + { + var parentCamera = parent.GetComponent(); + if (parentCamera != null) + { + EyeCamera parentEyeCamera; + if (eyeCameras.TryGetValue(parentCamera, out parentEyeCamera)) + { + if (camera == parentEyeCamera.leftEyeCamera || camera == parentEyeCamera.rightEyeCamera) + { + continue; + } + } + } + } + + yield return camera; + } + } +#else + public bool IsCurrentlyConnected + { + get { return false; } + } +#endif + } +} \ No newline at end of file diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreview.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreview.cs.meta new file mode 100644 index 0000000..9f0576e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreview.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7528488988f9d48478da328909125dea +timeCreated: 1494615574 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreviewControllerProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreviewControllerProvider.cs new file mode 100644 index 0000000..eaa3932 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreviewControllerProvider.cs @@ -0,0 +1,128 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +#if UNITY_ANDROID && UNITY_EDITOR +using System.Runtime.InteropServices; +using UnityEngine; + +namespace Gvr.Internal +{ + class InstantPreviewControllerProvider + { + internal const int MAX_NUM_CONTROLLERS = 2; + + /// + /// This is a mirror of Gvr.Internal.ControllerState, but a struct instead. + /// + private struct NativeControllerState + { + public GvrConnectionState connectionState; + public Quaternion orientation; + public Vector3 gyro; + public Vector3 accel; + public Vector2 touchPos; + [MarshalAs(UnmanagedType.U1)] + public bool isTouching; + [MarshalAs(UnmanagedType.U1)] + public bool appButtonState; + [MarshalAs(UnmanagedType.U1)] + public bool clickButtonState; + public int batteryLevel; + [MarshalAs(UnmanagedType.U1)] + public bool isCharging; + [MarshalAs(UnmanagedType.U1)] + public bool isRecentered; + [MarshalAs(UnmanagedType.U1)] + public bool homeButtonState; + public Vector3 position; + [MarshalAs(UnmanagedType.U1)] + public bool triggerButtonState; + [MarshalAs(UnmanagedType.U1)] + public bool gripButtonState; + } + + private GvrControllerButton[] prevButtonsState = new GvrControllerButton[MAX_NUM_CONTROLLERS]; + private NativeControllerState nativeControllerState; + + [DllImport(InstantPreview.dllName)] + private static extern void ReadControllerState(out NativeControllerState nativeControllerState, int controller_id); + + public void ReadState(ControllerState outState, int controller_id) + { + if (controller_id >= MAX_NUM_CONTROLLERS) + { + return; + } + + ReadControllerState(out nativeControllerState, controller_id); + + outState.connectionState = nativeControllerState.connectionState; + outState.gyro = new Vector3(-nativeControllerState.gyro.x, -nativeControllerState.gyro.y, nativeControllerState.gyro.z); + outState.accel = new Vector3(nativeControllerState.accel.x, nativeControllerState.accel.y, -nativeControllerState.accel.z); + outState.touchPos = nativeControllerState.touchPos; + outState.batteryLevel = (GvrControllerBatteryLevel)nativeControllerState.batteryLevel; + outState.isCharging = nativeControllerState.isCharging; + outState.recentered = nativeControllerState.isRecentered; + + outState.orientation = new Quaternion( + -nativeControllerState.orientation.y, + -nativeControllerState.orientation.z, + nativeControllerState.orientation.w, + nativeControllerState.orientation.x); + outState.position = new Vector3(nativeControllerState.position.x, + nativeControllerState.position.y, + -nativeControllerState.position.z); + outState.is6DoF = outState.position != Vector3.zero; + + outState.buttonsState = 0; + if (nativeControllerState.appButtonState) + { + outState.buttonsState |= GvrControllerButton.App; + } + + if (nativeControllerState.clickButtonState) + { + outState.buttonsState |= GvrControllerButton.TouchPadButton; + } + + if (nativeControllerState.homeButtonState) + { + outState.buttonsState |= GvrControllerButton.System; + } + + if (nativeControllerState.isTouching) + { + outState.buttonsState |= GvrControllerButton.TouchPadTouch; + } + + if (nativeControllerState.triggerButtonState) + { + outState.buttonsState |= GvrControllerButton.Trigger; + } + + if (nativeControllerState.gripButtonState) + { + outState.buttonsState |= GvrControllerButton.Grip; + } + + outState.SetButtonsUpDownFromPrevious(prevButtonsState[controller_id]); + prevButtonsState[controller_id] = outState.buttonsState; + } + } +} +#endif diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreviewControllerProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreviewControllerProvider.cs.meta new file mode 100644 index 0000000..b95063b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/InstantPreview/Internal/InstantPreviewControllerProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c36f3afb2cb4ef840bf3183652900afe +timeCreated: 1494615575 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard.meta new file mode 100644 index 0000000..3a2f5df --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cfb58d4ed8f634ab6bddca7304737c01 +folderAsset: yes +timeCreated: 1478817584 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboard.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboard.cs new file mode 100644 index 0000000..eeea626 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboard.cs @@ -0,0 +1,494 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using Gvr.Internal; +using System; +using System.Collections; +using System.Collections.Generic; + +/// Events to update the keyboard. +/// These values depend on C API keyboard values. +public enum GvrKeyboardEvent +{ + /// Unknown error. + GVR_KEYBOARD_ERROR_UNKNOWN = 0, + + /// The keyboard service could not be connected. This is usually due to the + /// keyboard service not being installed. + GVR_KEYBOARD_ERROR_SERVICE_NOT_CONNECTED = 1, + + /// No locale was found in the keyboard service. + GVR_KEYBOARD_ERROR_NO_LOCALES_FOUND = 2, + + /// The keyboard SDK tried to load dynamically but failed. This is usually due + /// to the keyboard service not being installed or being out of date. + GVR_KEYBOARD_ERROR_SDK_LOAD_FAILED = 3, + + /// Keyboard becomes visible. + GVR_KEYBOARD_SHOWN = 4, + + /// Keyboard becomes hidden. + GVR_KEYBOARD_HIDDEN = 5, + + /// Text has been updated. + GVR_KEYBOARD_TEXT_UPDATED = 6, + + /// Text has been committed. + GVR_KEYBOARD_TEXT_COMMITTED = 7 +} + +/// Keyboard error codes. +/// These values depend on C API keyboard values. +public enum GvrKeyboardError +{ + UNKNOWN = 0, + SERVICE_NOT_CONNECTED = 1, + NO_LOCALES_FOUND = 2, + SDK_LOAD_FAILED = 3 +} + +/// The keyboard input modes. +/// These values depend on C API keyboard values. +public enum GvrKeyboardInputMode +{ + DEFAULT = 0, + NUMERIC = 1 +} + +/// Handles keyboard state management such as hiding and displaying +/// the keyboard, directly modifying text and stereoscopic rendering. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrKeyboard")] +public class GvrKeyboard : MonoBehaviour +{ + private static GvrKeyboard instance; + + private static IKeyboardProvider keyboardProvider; + private KeyboardState keyboardState = new KeyboardState(); + private IEnumerator keyboardUpdate; + + /// Standard keyboard delegate type. + public delegate void StandardCallback(); + + /// Edit text keyboard delegate type. + public delegate void EditTextCallback(string edit_text); + + /// Keyboard error delegate type. + public delegate void ErrorCallback(GvrKeyboardError err); + + /// Keyboard delegate type. + public delegate void KeyboardCallback(IntPtr closure, GvrKeyboardEvent evt); + + // Private data and callbacks. + private ErrorCallback errorCallback = null; + + private StandardCallback showCallback = null; + private StandardCallback hideCallback = null; + private EditTextCallback updateCallback = null; + private EditTextCallback enterCallback = null; + +#if UNITY_ANDROID + // Which eye is currently being rendered. + private bool isRight = false; +#endif // UNITY_ANDROID + + private bool isKeyboardHidden = false; + + private const float kExecuterWait = 0.01f; + + private static List threadSafeCallbacks = + new List(); + + private static System.Object callbacksLock = new System.Object(); + + /// Delegate to handle keyboard events and input. + public GvrKeyboardDelegateBase keyboardDelegate = null; + + /// The input mode of the keyboard. + public GvrKeyboardInputMode inputMode = GvrKeyboardInputMode.DEFAULT; + + /// Flag to use the recommended world matrix for the keyboard. + public bool useRecommended = true; + + /// The distance to the keyboard. + public float distance = 0; + + /// The text being affected by this keyboard. + public string EditorText + { + get + { + return instance != null ? instance.keyboardState.editorText : string.Empty; + } + + set + { + keyboardProvider.EditorText = value; + } + } + + /// Returns the current input mode of the keyboard. + public GvrKeyboardInputMode Mode + { + get + { + return instance != null ? instance.keyboardState.mode : GvrKeyboardInputMode.DEFAULT; + } + } + + /// Returns true if this keyboard instance is valid. + public bool IsValid + { + get + { + return instance != null ? instance.keyboardState.isValid : false; + } + } + + /// Returns true if the keyboard is ready. + public bool IsReady + { + get + { + return instance != null ? instance.keyboardState.isReady : false; + } + } + + /// The world matrix of the keyboard. + public Matrix4x4 WorldMatrix + { + get + { + return instance != null ? instance.keyboardState.worldMatrix : Matrix4x4.zero; + } + } + + void Awake() + { + if (instance != null) + { + Debug.LogError("More than one GvrKeyboard instance was found in your scene. " + + "Ensure that there is only one GvrKeyboard."); + enabled = false; + return; + } + + instance = this; + if (keyboardProvider == null) + { + keyboardProvider = KeyboardProviderFactory.CreateKeyboardProvider(this); + } + } + + void OnDestroy() + { + instance = null; + threadSafeCallbacks.Clear(); + } + + // Use this for initialization. + void Start() + { + if (keyboardDelegate != null) + { + errorCallback = keyboardDelegate.OnKeyboardError; + showCallback = keyboardDelegate.OnKeyboardShow; + hideCallback = keyboardDelegate.OnKeyboardHide; + updateCallback = keyboardDelegate.OnKeyboardUpdate; + enterCallback = keyboardDelegate.OnKeyboardEnterPressed; + keyboardDelegate.KeyboardHidden += KeyboardDelegate_KeyboardHidden; + keyboardDelegate.KeyboardShown += KeyboardDelegate_KeyboardShown; + } + + keyboardProvider.ReadState(keyboardState); + + if (IsValid) + { + if (keyboardProvider.Create(OnKeyboardCallback)) + { + keyboardProvider.SetInputMode(inputMode); + } + } + else + { + Debug.LogError("Could not validate keyboard"); + } + } + + // Update per-frame data. + void Update() + { + if (keyboardProvider == null) + { + return; + } + + keyboardProvider.ReadState(keyboardState); + if (IsReady) + { + // Reset position of keyboard. + if (transform.hasChanged) + { + Show(); + transform.hasChanged = false; + } + + keyboardProvider.UpdateData(); + } + } + + // Use this function for procedural rendering + // Gets called twice per frame, once for each eye. + // On each frame, left eye renders before right eye so + // we keep track of a boolean that toggles back and forth + // between each eye. + void OnRenderObject() + { + if (keyboardProvider == null || !IsReady) + { + return; + } + +#if UNITY_ANDROID + Camera camera = Camera.current; + if (camera && camera == Camera.main) + { + // Get current eye. + Camera.StereoscopicEye camEye = isRight ? Camera.StereoscopicEye.Right : Camera.StereoscopicEye.Left; + + // Camera matrices. + Matrix4x4 proj = camera.GetStereoProjectionMatrix(camEye); + Matrix4x4 modelView = camera.GetStereoViewMatrix(camEye); + + // Camera viewport. + Rect viewport = camera.pixelRect; + + // Render keyboard. + keyboardProvider.Render((int)camEye, modelView, proj, viewport); + + // Swap. + isRight = !isRight; + } +#endif // !UNITY_ANDROID + } + + /// Resets keyboard text. + public void ClearText() + { + if (keyboardProvider != null) + { + keyboardProvider.EditorText = string.Empty; + } + } + + /// Shows the keyboard. + public void Show() + { + if (keyboardProvider == null) + { + return; + } + + // Get user matrix. + Quaternion fixRot = new Quaternion(transform.rotation.x * -1, transform.rotation.y * -1, + transform.rotation.z, transform.rotation.w); + + // Need to convert from left handed to right handed for the Keyboard coordinates. + Vector3 fixPos = new Vector3(transform.position.x, transform.position.y, transform.position.z * -1); + Matrix4x4 modelMatrix = Matrix4x4.TRS(fixPos, fixRot, Vector3.one); + Matrix4x4 mat = Matrix4x4.identity; + Vector3 position = gameObject.transform.position; + if (position.x == 0 && position.y == 0 && position.z == 0 && !useRecommended) + { + // Force use recommended to be true, otherwise keyboard won't show up. + keyboardProvider.Show(mat, true, distance, modelMatrix); + return; + } + + // Matrix needs to be set only if we're not using the recommended one. + // Uses the values of the keyboard gameobject transform as reported by Unity. If this is + // the zero vector, parent it under another gameobject instead. + if (!useRecommended) + { + mat = GetKeyboardObjectMatrix(position); + } + + keyboardProvider.Show(mat, useRecommended, distance, modelMatrix); + } + + /// Hides the keyboard. + public void Hide() + { + if (keyboardProvider != null) + { + keyboardProvider.Hide(); + } + } + + /// Handle a pointer click on the keyboard. + public void OnPointerClick(BaseEventData data) + { + if (isKeyboardHidden) + { + Show(); + } + } + + void OnEnable() + { + keyboardUpdate = Executer(); + StartCoroutine(keyboardUpdate); + } + + void OnDisable() + { + StopCoroutine(keyboardUpdate); + } + + void OnApplicationPause(bool paused) + { + if (null == keyboardProvider) + { + return; + } + + if (paused) + { + keyboardProvider.OnPause(); + } + else + { + keyboardProvider.OnResume(); + } + } + + IEnumerator Executer() + { + while (true) + { + yield return new WaitForSeconds(kExecuterWait); + + while (threadSafeCallbacks.Count > 0) + { + GvrKeyboardEvent keyboardEvent = threadSafeCallbacks[0]; + PoolKeyboardCallbacks(keyboardEvent); + lock (callbacksLock) + { + threadSafeCallbacks.RemoveAt(0); + } + } + } + } + + private void PoolKeyboardCallbacks(GvrKeyboardEvent keyboardEvent) + { + switch (keyboardEvent) + { + case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_UNKNOWN: + errorCallback(GvrKeyboardError.UNKNOWN); + break; + case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_SERVICE_NOT_CONNECTED: + errorCallback(GvrKeyboardError.SERVICE_NOT_CONNECTED); + break; + case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_NO_LOCALES_FOUND: + errorCallback(GvrKeyboardError.NO_LOCALES_FOUND); + break; + case GvrKeyboardEvent.GVR_KEYBOARD_ERROR_SDK_LOAD_FAILED: + errorCallback(GvrKeyboardError.SDK_LOAD_FAILED); + break; + case GvrKeyboardEvent.GVR_KEYBOARD_SHOWN: + showCallback(); + break; + case GvrKeyboardEvent.GVR_KEYBOARD_HIDDEN: + hideCallback(); + break; + case GvrKeyboardEvent.GVR_KEYBOARD_TEXT_UPDATED: + updateCallback(keyboardProvider.EditorText); + break; + case GvrKeyboardEvent.GVR_KEYBOARD_TEXT_COMMITTED: + enterCallback(keyboardProvider.EditorText); + break; + } + } + + [AOT.MonoPInvokeCallback(typeof(GvrKeyboardEvent))] + private static void OnKeyboardCallback(IntPtr closure, GvrKeyboardEvent keyboardEvent) + { + lock (callbacksLock) + { + threadSafeCallbacks.Add(keyboardEvent); + } + } + + private void KeyboardDelegate_KeyboardShown(object sender, System.EventArgs e) + { + isKeyboardHidden = false; + } + + private void KeyboardDelegate_KeyboardHidden(object sender, System.EventArgs e) + { + isKeyboardHidden = true; + } + + // Returns a matrix populated by the keyboard's gameobject position. If the position is not + // zero, but comes back as zero, parent this under another gameobject instead. + private Matrix4x4 GetKeyboardObjectMatrix(Vector3 position) + { + // Set keyboard position based on this gameObject's position. + float angleX = Mathf.Atan2(position.y, position.x); + float kTanAngleX = Mathf.Tan(angleX); + float newPosX = kTanAngleX * position.x; + + float angleY = Mathf.Atan2(position.x, position.y); + float kTanAngleY = Mathf.Tan(angleY); + float newPosY = kTanAngleY * position.y; + + float angleZ = Mathf.Atan2(position.y, position.z); + float kTanAngleZ = Mathf.Tan(angleZ); + float newPosZ = kTanAngleZ * position.z; + + Vector3 keyboardPosition = new Vector3(newPosX, newPosY, newPosZ); + Vector3 lookPosition = Camera.main.transform.position; + + Quaternion rotation = Quaternion.LookRotation(lookPosition); + Matrix4x4 mat = new Matrix4x4(); + mat.SetTRS(keyboardPosition, rotation, position); + + // Set diagonal to identity if any of them are zero. + if (mat[0, 0] == 0) + { + Vector4 row0 = mat.GetRow(0); + mat.SetRow(0, new Vector4(1, row0.y, row0.z, row0.w)); + } + + if (mat[1, 1] == 0) + { + Vector4 row1 = mat.GetRow(1); + mat.SetRow(1, new Vector4(row1.x, 1, row1.z, row1.w)); + } + + if (mat[2, 2] == 0) + { + Vector4 row2 = mat.GetRow(2); + mat.SetRow(2, new Vector4(row2.x, row2.y, 1, row2.w)); + } + + return mat; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboard.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboard.cs.meta new file mode 100644 index 0000000..1f184fe --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboard.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 573e2b04dc4734d68a2b6747421ce0bc +timeCreated: 1478820921 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardDelegateBase.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardDelegateBase.cs new file mode 100644 index 0000000..22f1739 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardDelegateBase.cs @@ -0,0 +1,50 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; + +/// An abstract class instead of an interface so that it can be exposed in Unity's +/// editor. It inherits from MonoBehaviour so that it can be directly used as a game object. +/// +public abstract class GvrKeyboardDelegateBase : MonoBehaviour +{ + /// Called to show the keyboard. + public abstract void OnKeyboardShow(); + + /// Called to hide the keyboard. + public abstract void OnKeyboardHide(); + + /// Called to update the keyboard. + /// The current text for the keyboard. + public abstract void OnKeyboardUpdate(string edit_text); + + /// Called when the ENTER key is pressed on the keyboard. + /// The current text for the keyboard. + public abstract void OnKeyboardEnterPressed(string edit_text); + + /// Called when there is an error with the keyboard. + /// The code of the error encountered. + public abstract void OnKeyboardError(GvrKeyboardError errorCode); + + /// Event for the keyboard being hidden. + public abstract event EventHandler KeyboardHidden; + + /// Event for the keyboard being shown. + public abstract event EventHandler KeyboardShown; +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardDelegateBase.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardDelegateBase.cs.meta new file mode 100644 index 0000000..d8e8221 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardDelegateBase.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3590c93395a39449ca11509317375cea +timeCreated: 1478820262 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardIntent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardIntent.cs new file mode 100644 index 0000000..b050ef4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardIntent.cs @@ -0,0 +1,115 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; + +/// Class for handling the Keyboard intent. +public class GvrKeyboardIntent +{ +#if UNITY_ANDROID && !UNITY_EDITOR + // The Play Store intent is requested via an Android Activity Fragment Java object. + private AndroidJavaObject keyboardFragment = null; +#endif // UNITY_ANDROID && !UNITY_EDITOR + + // Constants used via JNI to access the keyboard fragment. + private const string FRAGMENT_CLASSNAME = + "com.google.gvr.keyboardsupport.KeyboardFragment"; + + private const string CALLBACK_CLASSNAME = FRAGMENT_CLASSNAME + + "$KeyboardCallback"; + + // Singleton instance. + private static GvrKeyboardIntent theInstance; + + /// The singleton instance of the PermissionsRequester class, + /// lazily instantiated. + public static GvrKeyboardIntent Instance + { + get + { + if (theInstance == null) + { + theInstance = new GvrKeyboardIntent(); + if (!theInstance.InitializeFragment()) + { + Debug.LogError("Cannot initialize fragment!"); + theInstance = null; + } + } + + return theInstance; + } + } + + /// + /// Initializes the fragment via JNI. + /// + /// True if fragment was initialized. + protected bool InitializeFragment() + { +#if !UNITY_ANDROID || UNITY_EDITOR + Debug.LogWarning("GvrKeyboardIntent requires the Android runtime environment"); + return false; +#else + AndroidJavaClass ajc = new AndroidJavaClass(FRAGMENT_CLASSNAME); + + if (ajc != null) + { + // Get the KeyboardFragment object + keyboardFragment = ajc.CallStatic("getInstance", + GvrActivityHelper.GetActivity()); + } + + return keyboardFragment != null && + keyboardFragment.GetRawObject() != IntPtr.Zero; +#endif // !UNITY_ANDROID || UNITY_EDITOR + } + + /// Start the intent to launch the Play Store. + public void LaunchPlayStore() + { +#if !UNITY_ANDROID || UNITY_EDITOR + Debug.LogError("GvrKeyboardIntent requires the Android runtime environment"); +#else + KeyboardCallback cb = new KeyboardCallback(); + keyboardFragment.Call("launchPlayStore", cb); +#endif // !UNITY_ANDROID || UNITY_EDITOR + } + + /// + /// Keyboard callback implementation. + /// + /// Instances of this class are passed to the java fragment and then + /// invoked once the request process is completed by the user. + /// + class KeyboardCallback : AndroidJavaProxy + { + internal KeyboardCallback() : base(CALLBACK_CLASSNAME) + { + } + + /// + /// Called when then flow is completed. + /// + void onPlayStoreResult() + { + Application.Quit(); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardIntent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardIntent.cs.meta new file mode 100644 index 0000000..8c725b7 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/GvrKeyboardIntent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 75e29b2b7f39fc5489e792b0f3338c79 +timeCreated: 1494440249 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal.meta new file mode 100644 index 0000000..9921fc5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 492fc075af2fa4639a072bc0017695da +folderAsset: yes +timeCreated: 1478821396 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/IKeyboardProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/IKeyboardProvider.cs new file mode 100644 index 0000000..c177846 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/IKeyboardProvider.cs @@ -0,0 +1,54 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +namespace Gvr.Internal +{ + /// Internal interface that abstracts an implementation of a keyboard. + /// + /// Each platform has a different concrete implementation of a Keyboard Provider. + /// For example, if running on the Unity Editor, we use an implementation that + /// emulates the keyboard behaviour. If running on a real Android device, + /// we use an implementation that uses the underlying Daydream keyboard API. + interface IKeyboardProvider + { + /// Notifies the controller provider that the application has paused. + void OnPause(); + + /// Notifies the controller provider that the application has resumed. + void OnResume(); + + /// Reads the controller's current state and stores it in outState. + void ReadState(KeyboardState outState); + + bool Create(GvrKeyboard.KeyboardCallback keyboardEvent); + + void UpdateData(); + + void Render(int eye, Matrix4x4 modelview, Matrix4x4 projection, Rect viewport); + + void Hide(); + + void Show(Matrix4x4 controllerMatrix, bool useRecommended, float distance, Matrix4x4 model); + + void SetInputMode(GvrKeyboardInputMode mode); + + string EditorText { get; set; } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/IKeyboardProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/IKeyboardProvider.cs.meta new file mode 100644 index 0000000..567cebd --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/IKeyboardProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f16e78d5a8cbe946b9dbaad22815581 +timeCreated: 1491935011 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviderFactory.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviderFactory.cs new file mode 100644 index 0000000..6e85ff4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviderFactory.cs @@ -0,0 +1,42 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +namespace Gvr.Internal +{ + /// Factory that provides a concrete implementation of IKeyboardProvider for the + /// current platform. + static class KeyboardProviderFactory + { + static internal IKeyboardProvider CreateKeyboardProvider(GvrKeyboard owner) + { +// Use emulator in editor. +#if UNITY_EDITOR + return new EmulatorKeyboardProvider(); +#elif UNITY_ANDROID + // Running on an Android device. + return new AndroidNativeKeyboardProvider(); +#else + // Other platforms not supported, including iOS and Unity versions w/o the native integraiton. + Debug.LogWarning("GVR Keyboard not supported on " + Application.platform); + return new DummyKeyboardProvider(); +#endif // UNITY_EDITOR + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviderFactory.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviderFactory.cs.meta new file mode 100644 index 0000000..9572f8c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviderFactory.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 696c86fab86049947bd12e68a9b724cf +timeCreated: 1491935011 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders.meta new file mode 100644 index 0000000..5cea74a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 49ac567412c5f8f4ea760a6ae6c0e6f5 +folderAsset: yes +timeCreated: 1491935236 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/AndroidNativeKeyboardProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/AndroidNativeKeyboardProvider.cs new file mode 100644 index 0000000..c98fe27 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/AndroidNativeKeyboardProvider.cs @@ -0,0 +1,424 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +// This is a Keyboard Subclass that runs on device only. It displays the +// full VR Keyboard. + +using UnityEngine; +using System; +using System.Runtime.InteropServices; + +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using UnityEngine.VR; +#endif // UNITY_2017_2_OR_NEWER + +/// @cond +namespace Gvr.Internal +{ + public class AndroidNativeKeyboardProvider : IKeyboardProvider + { + private IntPtr renderEventFunction; + +#if UNITY_ANDROID && !UNITY_EDITOR + private float currentDistance = 0.0f; +#endif // UNITY_ANDROID && !UNITY_EDITOR + + // Android method names. + private const string METHOD_NAME_GET_PACKAGE_MANAGER = "getPackageManager"; + private const string METHOD_NAME_GET_PACKAGE_INFO = "getPackageInfo"; + private const string PACKAGE_NAME_VRINPUTMETHOD = "com.google.android.vr.inputmethod"; + private const string FIELD_NAME_VERSION_CODE = "versionCode"; + + // Min version for VrInputMethod. + private const int MIN_VERSION_VRINPUTMETHOD = 170509062; + + // Library name. + private const string dllName = "gvr_keyboard_shim_unity"; + + // Enum gvr_trigger_state. + private const int TRIGGER_NONE = 0; + private const int TRIGGER_PRESSED = 1; + + [StructLayout(LayoutKind.Sequential)] + private struct gvr_clock_time_point + { + public long monotonic_system_time_nanos; + } + + [StructLayout(LayoutKind.Sequential)] + private struct gvr_recti + { + public int left; + public int right; + public int bottom; + public int top; + } + + [DllImport(GvrActivityHelper.GVR_DLL_NAME)] + private static extern gvr_clock_time_point gvr_get_time_point_now(); + + [DllImport(dllName)] + private static extern GvrKeyboardInputMode gvr_keyboard_get_input_mode(IntPtr keyboard_context); + + [DllImport(dllName)] + private static extern void gvr_keyboard_set_input_mode(IntPtr keyboard_context, GvrKeyboardInputMode mode); + +#if UNITY_ANDROID + [DllImport(dllName)] + private static extern IntPtr gvr_keyboard_initialize(AndroidJavaObject app_context, AndroidJavaObject class_loader); +#endif + [DllImport(dllName)] + private static extern IntPtr gvr_keyboard_create(IntPtr closure, GvrKeyboard.KeyboardCallback callback); + + // Gets a recommended world space matrix. + [DllImport(dllName)] + private static extern void gvr_keyboard_get_recommended_world_from_keyboard_matrix(float distance_from_eye, + IntPtr matrix); + + // Sets the recommended world space matrix. The matrix may + // contain a combination of translation/rotation/scaling information. + [DllImport(dllName)] + private static extern void gvr_keyboard_set_world_from_keyboard_matrix(IntPtr keyboard_context, IntPtr matrix); + + // Shows the keyboard + [DllImport(dllName)] + private static extern void gvr_keyboard_show(IntPtr keyboard_context); + + // Updates the keyboard with the controller's button state. + [DllImport(dllName)] + private static extern void gvr_keyboard_update_button_state(IntPtr keyboard_context, int buttonIndex, bool pressed); + + // Updates the controller ray on the keyboard. + [DllImport(dllName)] + private static extern bool gvr_keyboard_update_controller_ray(IntPtr keyboard_context, IntPtr vector3Start, + IntPtr vector3End, IntPtr vector3Hit); + + // Updates the touch state of the controller. + [DllImport(dllName)] + private static extern void gvr_keyboard_update_controller_touch(IntPtr keyboard_context, bool touched, IntPtr vector2Pos); + + // Returns the EditText with for the keyboard. + [DllImport(dllName)] + private static extern IntPtr gvr_keyboard_get_text(IntPtr keyboard_context); + + // Sets the edit_text for the keyboard. + // @return 1 if the edit text could be set. 0 if it cannot be set. + [DllImport(dllName)] + private static extern int gvr_keyboard_set_text(IntPtr keyboard_context, IntPtr edit_text); + + // Hides the keyboard. + [DllImport(dllName)] + private static extern void gvr_keyboard_hide(IntPtr keyboard_context); + + // Destroys the keyboard. Resources related to the keyboard is released. + [DllImport(dllName)] + private static extern void gvr_keyboard_destroy(IntPtr keyboard_context); + + // Called once per frame to set the time index. + [DllImport(dllName)] + private static extern void GvrKeyboardSetFrameData(IntPtr keyboard_context, gvr_clock_time_point t); + + // Sets VR eye data in preparation for rendering a single eye's view. + [DllImport(dllName)] + private static extern void GvrKeyboardSetEyeData(int eye_type, Matrix4x4 modelview, Matrix4x4 projection, gvr_recti viewport); + + [DllImport(dllName)] + private static extern IntPtr GetKeyboardRenderEventFunc(); + + // Private class data. + private IntPtr keyboard_context = IntPtr.Zero; + + // Used in the GVR Unity C++ shim layer. + private const int advanceID = 0x5DAC793B; + private const int renderLeftID = 0x3CF97A3D; + private const int renderRightID = 0x3CF97A3E; + private const string KEYBOARD_JAVA_CLASS = "com.google.vr.keyboard.GvrKeyboardUnity"; + private const long kPredictionTimeWithoutVsyncNanos = 50000000; + private const int kGvrControllerButtonClick = 1; + + private GvrKeyboardInputMode mode = GvrKeyboardInputMode.DEFAULT; + private string editorText = string.Empty; + private Matrix4x4 worldMatrix; + private bool isValid = false; + private bool isReady = false; + + public string EditorText + { + get + { + IntPtr text = gvr_keyboard_get_text(keyboard_context); + editorText = Marshal.PtrToStringAnsi(text); + return editorText; + } + + set + { + editorText = value; + IntPtr text = Marshal.StringToHGlobalAnsi(editorText); + gvr_keyboard_set_text(keyboard_context, text); + } + } + + public void SetInputMode(GvrKeyboardInputMode mode) + { + Debug.Log("Calling set input mode: " + mode); + gvr_keyboard_set_input_mode(keyboard_context, mode); + this.mode = mode; + } + + public void OnPause() + { + } + + public void OnResume() + { + } + + public void ReadState(KeyboardState outState) + { + outState.editorText = editorText; + outState.mode = mode; + outState.worldMatrix = worldMatrix; + outState.isValid = isValid; + outState.isReady = isReady; + } + + // Initialization function. + public AndroidNativeKeyboardProvider() + { +#if UNITY_ANDROID && !UNITY_EDITOR + // Running on Android device. + AndroidJavaObject activity = GvrActivityHelper.GetActivity(); + if (activity == null) + { + Debug.Log("Failed to get activity for keyboard."); + return; + } + + AndroidJavaObject context = GvrActivityHelper.GetApplicationContext(activity); + if (context == null) + { + Debug.Log("Failed to get context for keyboard."); + return; + } + + AndroidJavaObject plugin = new AndroidJavaObject(KEYBOARD_JAVA_CLASS); + if (plugin != null) + { + plugin.Call("initializeKeyboard", context); + isValid = true; + } + +#endif // UNITY_ANDROID && !UNITY_EDITOR + renderEventFunction = GetKeyboardRenderEventFunc(); + } + + ~AndroidNativeKeyboardProvider() + { + if (keyboard_context != IntPtr.Zero) + { + gvr_keyboard_destroy(keyboard_context); + } + } + + public bool Create(GvrKeyboard.KeyboardCallback keyboardEvent) + { + if (!IsVrInputMethodAppMinVersion(keyboardEvent)) + { + return false; + } + + keyboard_context = gvr_keyboard_create(IntPtr.Zero, keyboardEvent); + isReady = keyboard_context != IntPtr.Zero; + return isReady; + } + + public void Show(Matrix4x4 userMatrix, bool useRecommended, float distance, Matrix4x4 model) + { +#if UNITY_ANDROID && !UNITY_EDITOR + currentDistance = distance; +#endif // UNITY_ANDROID && !UNITY_EDITOR + + if (useRecommended) + { + worldMatrix = getRecommendedMatrix(distance); + } + else + { + // Convert to GVR coordinates. + worldMatrix = Pose3D.FlipHandedness(userMatrix).transpose; + } + + Matrix4x4 matToSet = worldMatrix * model.transpose; + IntPtr mat_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(matToSet)); + Marshal.StructureToPtr(matToSet, mat_ptr, true); + gvr_keyboard_set_world_from_keyboard_matrix(keyboard_context, mat_ptr); + gvr_keyboard_show(keyboard_context); + Marshal.FreeHGlobal(mat_ptr); + } + + public void UpdateData() + { +#if UNITY_ANDROID && !UNITY_EDITOR + // Running on Android device. + // Update controller state. + GvrBasePointer pointer = GvrPointerInputModule.Pointer; + bool isPointerAvailable = pointer != null && pointer.IsAvailable; + if (isPointerAvailable) + { + GvrControllerInputDevice controllerInputDevice = pointer.ControllerInputDevice; + if (controllerInputDevice != null && controllerInputDevice.State == GvrConnectionState.Connected) + { + bool pressed = controllerInputDevice.GetButton(GvrControllerButton.TouchPadButton); + gvr_keyboard_update_button_state(keyboard_context, kGvrControllerButtonClick, pressed); + + // Update touch state + Vector2 touch_pos = controllerInputDevice.TouchPos; + IntPtr touch_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(touch_pos)); + Marshal.StructureToPtr(touch_pos, touch_ptr, true); + bool isTouching = controllerInputDevice.GetButton(GvrControllerButton.TouchPadTouch); + gvr_keyboard_update_controller_touch(keyboard_context, isTouching, touch_ptr); + + GvrBasePointer.PointerRay pointerRay = pointer.GetRayForDistance(currentDistance); + + Vector3 startPoint = pointerRay.ray.origin; + + // Need to flip Z for native library + startPoint.z *= -1; + IntPtr start_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(startPoint)); + Marshal.StructureToPtr(startPoint, start_ptr, true); + + Vector3 endPoint = pointerRay.ray.GetPoint(pointerRay.distance); + + // Need to flip Z for native library + endPoint.z *= -1; + IntPtr end_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(endPoint)); + Marshal.StructureToPtr(endPoint, end_ptr, true); + + Vector3 hit = Vector3.one; + IntPtr hit_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(Vector3.zero)); + Marshal.StructureToPtr(Vector3.zero, hit_ptr, true); + + gvr_keyboard_update_controller_ray(keyboard_context, start_ptr, end_ptr, hit_ptr); + hit = (Vector3)Marshal.PtrToStructure(hit_ptr, typeof(Vector3)); + hit.z *= -1; + + Marshal.FreeHGlobal(touch_ptr); + Marshal.FreeHGlobal(hit_ptr); + Marshal.FreeHGlobal(end_ptr); + Marshal.FreeHGlobal(start_ptr); + } + } +#endif // UNITY_ANDROID && !UNITY_EDITOR + + // Get time stamp. + gvr_clock_time_point time = gvr_get_time_point_now(); + time.monotonic_system_time_nanos += kPredictionTimeWithoutVsyncNanos; + + // Update frame data. + GvrKeyboardSetFrameData(keyboard_context, time); + GL.IssuePluginEvent(renderEventFunction, advanceID); + } + + public void Render(int eye, Matrix4x4 modelview, Matrix4x4 projection, Rect viewport) + { + gvr_recti rect = new gvr_recti(); + rect.left = (int)viewport.x; + rect.top = (int)viewport.y + (int)viewport.height; + rect.right = (int)viewport.x + (int)viewport.width; + rect.bottom = (int)viewport.y; + + // For the modelview matrix, we need to convert it to a world-to-camera + // matrix for GVR keyboard, hence the inverse. We need to convert left + // handed to right handed, hence the multiply by flipZ. + // Unity projection matrices are already in a form GVR needs. + // Unity stores matrices row-major, so both get a final transpose to get + // them column-major for GVR. + GvrKeyboardSetEyeData( + eye, + (Pose3D.FLIP_Z * modelview.inverse).transpose.inverse, + projection.transpose, + rect); + GL.IssuePluginEvent(renderEventFunction, eye == 0 ? renderLeftID : renderRightID); + } + + public void Hide() + { + gvr_keyboard_hide(keyboard_context); + } + + // Return the recommended keyboard local to world space + // matrix given a distance value by the user. This value should + // be between 1 and 5 and will get clamped to that range. + private Matrix4x4 getRecommendedMatrix(float inputDistance) + { + float distance = Mathf.Clamp(inputDistance, 1.0f, 5.0f); + Matrix4x4 result = new Matrix4x4(); + + IntPtr mat_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(result)); + Marshal.StructureToPtr(result, mat_ptr, true); + gvr_keyboard_get_recommended_world_from_keyboard_matrix(distance, mat_ptr); + + result = (Matrix4x4)Marshal.PtrToStructure(mat_ptr, typeof(Matrix4x4)); + Marshal.FreeHGlobal(mat_ptr); + + return result; + } + + // Returns true if the VrInputMethod APK is at least as high as MIN_VERSION_VRINPUTMETHOD. + private bool IsVrInputMethodAppMinVersion(GvrKeyboard.KeyboardCallback keyboardEvent) + { +#if UNITY_ANDROID && !UNITY_EDITOR + // Running on Android device. + AndroidJavaObject activity = GvrActivityHelper.GetActivity(); + if (activity == null) + { + Debug.Log("Failed to get activity for keyboard."); + return false; + } + + AndroidJavaObject packageManager = activity.Call(METHOD_NAME_GET_PACKAGE_MANAGER); + if (packageManager == null) + { + Debug.Log("Failed to get activity package manager"); + return false; + } + + AndroidJavaObject info = packageManager.Call(METHOD_NAME_GET_PACKAGE_INFO, PACKAGE_NAME_VRINPUTMETHOD, 0); + if (info == null) + { + Debug.Log("Failed to get package info for com.google.android.apps.vr.inputmethod"); + return false; + } + + int versionCode = info.Get(FIELD_NAME_VERSION_CODE); + if (versionCode < MIN_VERSION_VRINPUTMETHOD) + { + keyboardEvent(IntPtr.Zero, GvrKeyboardEvent.GVR_KEYBOARD_ERROR_SDK_LOAD_FAILED); + return false; + } + + return true; +#else + return true; +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/AndroidNativeKeyboardProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/AndroidNativeKeyboardProvider.cs.meta new file mode 100644 index 0000000..2553ee1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/AndroidNativeKeyboardProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 494e0fcfce3cb4d1c973863b3ad4e5d0 +timeCreated: 1478821396 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/DummyKeyboardProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/DummyKeyboardProvider.cs new file mode 100644 index 0000000..69c838c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/DummyKeyboardProvider.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +namespace Gvr.Internal +{ + class DummyKeyboardProvider : IKeyboardProvider + { + private KeyboardState dummyState = new KeyboardState(); + + internal DummyKeyboardProvider() + { + } + + public void ReadState(KeyboardState outState) + { + outState.CopyFrom(dummyState); + } + + public void OnPause() + { + } + + public void OnResume() + { + } + + public void UpdateData() + { + } + + public void Render(int eye, Matrix4x4 modelview, Matrix4x4 projection, Rect viewport) + { + } + + public void Hide() + { + } + + public void Show(Matrix4x4 controllerMatrix, bool useRecommended, float distance, + Matrix4x4 model) + { + } + + public bool Create(GvrKeyboard.KeyboardCallback keyboardEvent) + { + return true; + } + + public void SetInputMode(GvrKeyboardInputMode mode) + { + } + + public string EditorText { get; set; } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/DummyKeyboardProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/DummyKeyboardProvider.cs.meta new file mode 100644 index 0000000..344471e --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/DummyKeyboardProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b9fcd2a047ec9c440a2bfeace305c425 +timeCreated: 1491941207 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/EmulatorKeyboardProvider.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/EmulatorKeyboardProvider.cs new file mode 100644 index 0000000..df49f69 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/EmulatorKeyboardProvider.cs @@ -0,0 +1,169 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- +// This is a version of the keyboard that runs directly in the Unity Editor. +// It is meant to simply be a placeholder so developers can test their games +// without having to use actual devices. +using UnityEngine; +using System; + +/// @cond +namespace Gvr.Internal +{ + /// Keyboard subclass to run in the Unity editor + public class EmulatorKeyboardProvider : IKeyboardProvider + { + private GameObject stub; + private bool showing; + + GvrKeyboard.KeyboardCallback keyboardCallback; + + private string editorText = string.Empty; + private GvrKeyboardInputMode mode = GvrKeyboardInputMode.DEFAULT; + private Matrix4x4 worldMatrix; + private bool isValid = false; + + public string EditorText + { + get { return editorText; } + set { editorText = value; } + } + + public void SetInputMode(GvrKeyboardInputMode mode) + { + this.mode = mode; + } + + public EmulatorKeyboardProvider() + { + Debug.Log("Creating stub keyboard"); + + // Set default data; + showing = false; + isValid = true; + } + + public void OnPause() + { + } + + public void OnResume() + { + } + + public void ReadState(KeyboardState outState) + { + outState.mode = mode; + outState.editorText = editorText; + outState.worldMatrix = worldMatrix; + outState.isValid = isValid; + outState.isReady = true; + } + + public bool Create(GvrKeyboard.KeyboardCallback keyboardEvent) + { + keyboardCallback = keyboardEvent; + + if (!isValid) + { + keyboardCallback(IntPtr.Zero, GvrKeyboardEvent.GVR_KEYBOARD_ERROR_SERVICE_NOT_CONNECTED); + } + + return true; + } + + public void Show(Matrix4x4 controllerMatrix, bool useRecommended, float distance, Matrix4x4 model) + { + if (!showing && isValid) + { + showing = true; + worldMatrix = controllerMatrix; + keyboardCallback(IntPtr.Zero, GvrKeyboardEvent.GVR_KEYBOARD_SHOWN); + } + } + + public void UpdateData() + { + // Can skip if keyboard not available + if (!showing) + { + return; + } + + if (Input.GetKeyDown(KeyCode.KeypadEnter)) + { + keyboardCallback(IntPtr.Zero, GvrKeyboardEvent.GVR_KEYBOARD_TEXT_COMMITTED); + return; + } + + if (Input.GetKeyDown(KeyCode.Backspace)) + { + if (editorText.Length > 0) + { + editorText = editorText.Substring(0, editorText.Length - 1); + SendUpdateNotification(); + } + + return; + } + + if (Input.inputString.Length <= 0) + { + return; + } + + switch (mode) + { + case GvrKeyboardInputMode.DEFAULT: + editorText += Input.inputString; + break; + case GvrKeyboardInputMode.NUMERIC: + foreach (char n in Input.inputString) + { + if (n >= '0' && n <= '9') + { + editorText += n; + } + } + + break; + default: + break; + } + + SendUpdateNotification(); + } + + public void Render(int eye, Matrix4x4 modelview, Matrix4x4 projection, Rect viewport) + { + } + + public void Hide() + { + if (showing) + { + showing = false; + keyboardCallback(IntPtr.Zero, GvrKeyboardEvent.GVR_KEYBOARD_HIDDEN); + } + } + + private void SendUpdateNotification() + { + keyboardCallback(IntPtr.Zero, GvrKeyboardEvent.GVR_KEYBOARD_TEXT_UPDATED); + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/EmulatorKeyboardProvider.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/EmulatorKeyboardProvider.cs.meta new file mode 100644 index 0000000..70c8e10 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardProviders/EmulatorKeyboardProvider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f73feeef531a54f2a8cf5b05a8c06e58 +timeCreated: 1478821396 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardState.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardState.cs new file mode 100644 index 0000000..d2e8ae5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardState.cs @@ -0,0 +1,37 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +public class KeyboardState +{ + internal string editorText = string.Empty; + internal GvrKeyboardInputMode mode = GvrKeyboardInputMode.DEFAULT; + internal bool isValid = false; + internal bool isReady = false; + internal Matrix4x4 worldMatrix; + + public void CopyFrom(KeyboardState other) + { + editorText = other.editorText; + mode = other.mode; + isValid = other.isValid; + isReady = other.isReady; + worldMatrix = other.worldMatrix; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardState.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardState.cs.meta new file mode 100644 index 0000000..97b7ff4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Keyboard/Internal/KeyboardState.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5baa0455970b442238015283920cc587 +timeCreated: 1479086112 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions.meta new file mode 100644 index 0000000..b513292 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1d8c43a259d16481c824f6f184a3bea5 +folderAsset: yes +timeCreated: 1478805319 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions/GvrPermissionsRequester.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions/GvrPermissionsRequester.cs new file mode 100644 index 0000000..d43bd11 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions/GvrPermissionsRequester.cs @@ -0,0 +1,197 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +#if UNITY_ANDROID || UNITY_EDITOR +using UnityEngine; +using System; +using System.Collections.Generic; +using Gvr.Internal; + +// Requests dangerous permissions at runtime +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrPermissionsRequester")] +public class GvrPermissionsRequester +{ + // Permissions are requested via an Android Activity Fragment java object. + private AndroidJavaObject permissionsFragment = null; + + // Constants used via JNI to access the permissions fragment. + private const string FRAGMENT_CLASSNAME = + "com.google.gvr.permissionsupport.PermissionsFragment"; + + private const string CALLBACK_CLASSNAME = FRAGMENT_CLASSNAME + "$PermissionsCallback"; + + // Singleton instance. + private static GvrPermissionsRequester theInstance; + + /// The singleton instance of the PermissionsRequester class, + /// lazily instantiated. + public static GvrPermissionsRequester Instance + { + [SuppressMemoryAllocationError(IsWarning = false, + Reason = "Lazy-loading getter is allowed to allocate sometimes.")] + get + { + if (theInstance == null) + { + theInstance = new GvrPermissionsRequester(); + if (!theInstance.InitializeFragment()) + { + Debug.LogError("Cannot initialize fragment!"); + theInstance = null; + } + } + + return theInstance; + } + } + + /// + /// Initializes the fragment via JNI. + /// + /// True if fragment was initialized. + protected bool InitializeFragment() + { +#if !UNITY_ANDROID || UNITY_EDITOR + Debug.LogWarning("GvrPermissionsRequester requires the Android runtime environment"); + return false; +#else + AndroidJavaClass ajc = new AndroidJavaClass(FRAGMENT_CLASSNAME); + + if (ajc != null) + { + // Get the PermissionsRequesterFragment object + permissionsFragment = ajc.CallStatic("getInstance", + GvrActivityHelper.GetActivity()); + } + + return permissionsFragment != null && + permissionsFragment.GetRawObject() != IntPtr.Zero; +#endif // !UNITY_ANDROID || UNITY_EDITOR + } + + [SuppressMemoryAllocationError(IsWarning = true)] + public bool IsPermissionGranted(string permission) + { + return permissionsFragment.Call("hasPermission", permission); + } + + [SuppressMemoryAllocationError(IsWarning = true)] + public bool[] HasPermissionsGranted(string[] permissions) + { + Debug.Log("Calling HasPermissionsGranted: " + permissions); + + object[] args = { permissions }; + AndroidJavaObject resultArr = + permissionsFragment.Call("hasPermissions", args); + + if (resultArr.GetRawObject() != IntPtr.Zero) + { + return AndroidJNIHelper.ConvertFromJNIArray( + resultArr.GetRawObject()); + } + else + { + return new bool[0]; + } + } + + public bool ShouldShowRational(string permission) + { + Debug.Log("GvrPermissionsRequester.ShouldShowRational()"); + return permissionsFragment.Call("shouldShowRational", permission); + } + + public void RequestPermissions(string[] permissionArray, + Action callback) + { + PermissionsCallback cb = new PermissionsCallback(permissionArray, callback); + permissionsFragment.Call("requestPermission", permissionArray, cb); + Debug.Log("Calling requestPermission"); + } + + public class PermissionStatus + { + public PermissionStatus(string name, bool granted) + { + Name = name; + Granted = granted; + } + + public string Name { get; set; } + + public bool Granted { get; set; } + } + + /// + /// Permissions callback implementation. + /// + /// Instances of this class are passed to the java fragment and then + /// invoked once the request process is completed by the user. + /// + class PermissionsCallback : AndroidJavaProxy + { + // permissions being requested. + private string[] permissionNames; + private Action callback; + + internal PermissionsCallback(string[] requestedPermissions, + Action callback) : + base(CALLBACK_CLASSNAME) + { + permissionNames = requestedPermissions; + this.callback = callback; + } + + /// + /// Called when then permission request flow is completed. + /// + /// + /// True if all permissions granted. + void onRequestPermissionResult(bool allPermissionsGranted) + { + List permissionStatusList = + new List(); + if (allPermissionsGranted) + { + Debug.Log("onRequestPermissionResult(): all permissions granted"); + foreach (string p in permissionNames) + { + permissionStatusList.Add(new PermissionStatus(p, true)); + } + } + else + { + Debug.Log("onRequestPermissionResult(): some permissions denied"); + + bool[] grantResults = Instance.HasPermissionsGranted(permissionNames); + Debug.Log("onRequestPermissionResult(): checking " + grantResults); + int size = grantResults.Length; + for (int i = 0; i < size; i++) + { + // get the grant result + string name = permissionNames[i]; + bool grantResult = grantResults[i]; + permissionStatusList.Add(new PermissionStatus(name, grantResult)); + } + } + + callback(permissionStatusList.ToArray()); + } + } +} +#endif // UNITY_ANDROID diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions/GvrPermissionsRequester.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions/GvrPermissionsRequester.cs.meta new file mode 100644 index 0000000..6e0865d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Permissions/GvrPermissionsRequester.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b0dc366f6bd074945a86579cd29111b7 +timeCreated: 1477353933 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Pose3D.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Pose3D.cs new file mode 100644 index 0000000..ec7daa1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Pose3D.cs @@ -0,0 +1,114 @@ +//----------------------------------------------------------------------- +// +// Copyright 2014 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// @cond +/// Encapsulates a rotation and a translation. This is a convenience class that allows +/// construction and value access either by Matrix4x4 or Quaternion + Vector3 types. +public class Pose3D +{ + /// Right-handed to left-handed matrix converter (and vice versa). + public static readonly Matrix4x4 FLIP_Z = Matrix4x4.Scale(new Vector3(1, 1, -1)); + + /// Flip the handedness of a matrix. + static public Matrix4x4 FlipHandedness(Matrix4x4 matrix) + { + return FLIP_Z * matrix * FLIP_Z; + } + + /// The translation component of the pose. + public Vector3 Position { get; protected set; } + + /// The rotation component of the pose. + public Quaternion Orientation { get; protected set; } + + /// The pose as a matrix in Unity gameobject convention (left-handed). + public Matrix4x4 Matrix { get; protected set; } + + /// The pose as a matrix in right-handed coordinates. + public Matrix4x4 RightHandedMatrix + { + get + { + return FlipHandedness(Matrix); + } + } + + /// Default constructor. + /// Initializes position to the origin and orientation to the identity rotation. + public Pose3D() + { + Position = Vector3.zero; + Orientation = Quaternion.identity; + Matrix = Matrix4x4.identity; + } + + /// Constructor that takes a Vector3 and a Quaternion. + public Pose3D(Vector3 position, Quaternion orientation) + { + Set(position, orientation); + } + + /// Constructor that takes a Matrix4x4. + public Pose3D(Matrix4x4 matrix) + { + Set(matrix); + } + + protected void Set(Vector3 position, Quaternion orientation) + { + Position = position; + Orientation = orientation; + Matrix = Matrix4x4.TRS(position, orientation, Vector3.one); + } + + protected void Set(Matrix4x4 matrix) + { + Matrix = matrix; + Position = matrix.GetColumn(3); + Orientation = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1)); + } +} + +/// @endcond + +/// @cond +/// Mutable version of Pose3D. +public class MutablePose3D : Pose3D +{ + /// Sets the position and orientation from a Vector3 + Quaternion. + public new void Set(Vector3 position, Quaternion orientation) + { + base.Set(position, orientation); + } + + /// Sets the position and orientation from a Matrix4x4. + public new void Set(Matrix4x4 matrix) + { + base.Set(matrix); + } + + /// Sets the position and orientation from a right-handed Matrix4x4. + public void SetRightHanded(Matrix4x4 matrix) + { + Set(FlipHandedness(matrix)); + } +} + +/// @endcond diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Pose3D.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Pose3D.cs.meta new file mode 100644 index 0000000..673b8ee --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Pose3D.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d6dc4d56dabb6444a8fda878f2e8acc1 +timeCreated: 1428963852 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers.meta new file mode 100644 index 0000000..8a4b9c8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cd73e9e1044b04a2d9721171987200ee +folderAsset: yes +timeCreated: 1496357018 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers/GvrInfoDrawer.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers/GvrInfoDrawer.cs new file mode 100644 index 0000000..effeebc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers/GvrInfoDrawer.cs @@ -0,0 +1,82 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +#if UNITY_EDITOR +using UnityEditor; +using UnityEngine; +using System.Collections; +using System; + +/// Use to display an Info box in the inspector for a Monobehaviour or ScriptableObject. +[AttributeUsage(AttributeTargets.Field, AllowMultiple = true, Inherited = true)] +public class GvrInfo : PropertyAttribute +{ + public string text; + public int numLines; + public MessageType messageType; + + public GvrInfo(string text, int numLines, MessageType messageType) + { + this.text = text; + this.numLines = numLines; + this.messageType = messageType; + } +} + +[CustomPropertyDrawer(typeof(GvrInfo))] +public class GvrInfoDrawer : DecoratorDrawer +{ + GvrInfo info + { + get { return ((GvrInfo)attribute); } + } + + public override float GetHeight() + { + return GetHeightForLines(info.numLines); + } + + public override void OnGUI(Rect position) + { + Draw(position, info.text, info.messageType); + } + + public static float GetHeightForLines(int numLines) + { + return EditorGUIUtility.singleLineHeight * numLines; + } + + public static void Draw(Rect position, string text, MessageType messageType) + { + position.height -= EditorGUIUtility.standardVerticalSpacing; + + int oldFontSize = EditorStyles.helpBox.fontSize; + EditorStyles.helpBox.fontSize = 11; + FontStyle oldFontStyle = EditorStyles.helpBox.fontStyle; + EditorStyles.helpBox.fontStyle = FontStyle.Bold; + bool oldWordWrap = EditorStyles.helpBox.wordWrap; + EditorStyles.helpBox.wordWrap = false; + + EditorGUI.HelpBox(position, text, messageType); + + EditorStyles.helpBox.fontSize = oldFontSize; + EditorStyles.helpBox.fontStyle = oldFontStyle; + EditorStyles.helpBox.wordWrap = oldWordWrap; + } +} +#endif // UNITY_EDITOR diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers/GvrInfoDrawer.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers/GvrInfoDrawer.cs.meta new file mode 100644 index 0000000..98238d0 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/PropertyDrawers/GvrInfoDrawer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c173d28b2a4224c52a4c8ea503f4e2b9 +timeCreated: 1496357031 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI.meta new file mode 100644 index 0000000..5f97ab8 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9cd51b6aee4e94f098d0046b5590e1c3 +folderAsset: yes +timeCreated: 1448497037 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI/GvrDropdown.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI/GvrDropdown.cs new file mode 100644 index 0000000..e8aff60 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI/GvrDropdown.cs @@ -0,0 +1,149 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using System.Collections; + +/// Dropdown UI component that works with the GvrRaycasters. +/// This is a workaround for the fact that the Dropdown component doesn't work with custom raycasters +/// because it internally adds two GraphicRaycasters. +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrDropdown")] +public class GvrDropdown : Dropdown +{ + private GameObject currentBlocker; + + /// Handles the pointer click on the dropdown. + /// + /// [Unity's OnPointerClick](https://docs.unity3d.com/ScriptReference/UI.Dropdown.OnPointerClick.html) + /// reference for more information. + /// + /// The current event. + public override void OnPointerClick(PointerEventData eventData) + { + base.OnPointerClick(eventData); + FixTemplateAndBlockerRaycasters(); + } + + /// Handles the submission of the selection on the dropdown. + /// + /// [Unity's OnSubmit](https://docs.unity3d.com/ScriptReference/UI.Dropdown.OnSubmit.html) + /// reference for more information. + /// + /// The current event. + public override void OnSubmit(BaseEventData eventData) + { + base.OnSubmit(eventData); + FixTemplateAndBlockerRaycasters(); + } + + private void FixTemplateAndBlockerRaycasters() + { + if (template != null) + { + FixRaycaster(template.gameObject, false); + } + + FixRaycaster(currentBlocker, true); + } + + /// Creates the blocker object + /// + /// [Unity's CreateBlocker](https://docs.unity3d.com/ScriptReference/UI.Dropdown.CreateBlocker.html) + /// reference for more information. + /// + /// The root canvas the dropdown is under. + protected override GameObject CreateBlocker(Canvas rootCanvas) + { + currentBlocker = base.CreateBlocker(rootCanvas); + return currentBlocker; + } + + /// Creates the dropdown list + /// + /// [Unity's CreateDropdownList](https://docs.unity3d.com/ScriptReference/UI.Dropdown.CreateDropdownList.html) + /// reference for more information. + /// + /// The template to create the dropdown list from. + protected override GameObject CreateDropdownList(GameObject template) + { + GameObject dropdown = base.CreateDropdownList(template); + FixRaycaster(dropdown, false); + return dropdown; + } + + private void FixRaycaster(GameObject go, bool shouldCopyProperties) + { + if (go == null) + { + return; + } + + GraphicRaycaster oldRaycaster = go.GetComponent(); + Destroy(oldRaycaster); + + bool addedRaycaster; + GvrPointerGraphicRaycaster raycaster; + raycaster = GetOrAddComponent(go, out addedRaycaster); + + if (shouldCopyProperties) + { + GvrPointerGraphicRaycaster templateRaycaster = GetTemplateRaycaster(); + if (addedRaycaster && templateRaycaster != null) + { + CopyRaycasterProperties(templateRaycaster, raycaster); + } + } + } + + private GvrPointerGraphicRaycaster GetTemplateRaycaster() + { + if (template == null) + { + return null; + } + + return template.GetComponent(); + } + + private void CopyRaycasterProperties(GvrPointerGraphicRaycaster source, GvrPointerGraphicRaycaster dest) + { + if (source == null || dest == null) + { + return; + } + + dest.blockingMask = source.blockingMask; + dest.blockingObjects = source.blockingObjects; + dest.ignoreReversedGraphics = source.ignoreReversedGraphics; + } + + private static T GetOrAddComponent(GameObject go, out bool addedComponent) where T : Component + { + T comp = go.GetComponent(); + addedComponent = false; + if (!comp) + { + comp = go.AddComponent(); + addedComponent = true; + } + + return comp; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI/GvrDropdown.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI/GvrDropdown.cs.meta new file mode 100644 index 0000000..61ad389 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/UI/GvrDropdown.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fbdf93500b5014ec9872a59cb683089a +timeCreated: 1484681912 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities.meta new file mode 100644 index 0000000..abedca5 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a88ac6fe99ae24c61bbdcdee3d49e08b +folderAsset: yes +timeCreated: 1471565344 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrActivityHelper.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrActivityHelper.cs new file mode 100644 index 0000000..31bec52 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrActivityHelper.cs @@ -0,0 +1,72 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// Simple static class to abstract out several JNI calls that need to be shared +/// between different classes. +public static class GvrActivityHelper +{ + /// @cond +#if UNITY_IOS + public const string GVR_DLL_NAME = "__Internal"; +#else + public const string GVR_DLL_NAME = "gvr"; + public const string GVR_SHIM_DLL_NAME = "gvrshim"; +#endif // UNITY_IOS + /// @endcond + + /// Package name for the Android Unity player class. + public const string PACKAGE_UNITY_PLAYER = "com.unity3d.player.UnityPlayer"; + +#if UNITY_ANDROID && !UNITY_EDITOR + /// Returns the Android Activity used by the Unity device player. The caller is + /// responsible for memory-managing the returned AndroidJavaObject. + public static AndroidJavaObject GetActivity() + { + AndroidJavaClass jc = new AndroidJavaClass(PACKAGE_UNITY_PLAYER); + if (jc == null) + { + Debug.LogErrorFormat("Failed to get class {0}", PACKAGE_UNITY_PLAYER); + return null; + } + + AndroidJavaObject activity = jc.GetStatic("currentActivity"); + if (activity == null) + { + Debug.LogError("Failed to obtain current Android activity."); + return null; + } + + return activity; + } + + /// Returns the application context of the current Android Activity. + public static AndroidJavaObject GetApplicationContext(AndroidJavaObject activity) + { + AndroidJavaObject context = activity.Call("getApplicationContext"); + if (context == null) + { + Debug.LogError("Failed to get application context from Activity."); + return null; + } + + return context; + } +#endif // UNITY_ANDROID && !UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrActivityHelper.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrActivityHelper.cs.meta new file mode 100644 index 0000000..9c845a4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrActivityHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a89c2f792b6ed4b3c8e3d82ed9b3c4cc +timeCreated: 1478903803 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrDaydreamApi.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrDaydreamApi.cs new file mode 100644 index 0000000..0447cca --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrDaydreamApi.cs @@ -0,0 +1,178 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using System; +using System.Runtime.InteropServices; + +/// Main entry point Daydream specific APIs. +/// +/// This class automatically instantiates an instance when this API is used for the first time. +/// For explicit control over when the instance is created and the Java references are setup +/// call the provided CreateAsync method, for example when no UI is being displayed to the user. +public class GvrDaydreamApi : IDisposable +{ + private const string METHOD_CREATE = "create"; + private const string METHOD_LAUNCH_VR_HOMESCREEN = "launchVrHomescreen"; + private const string METHOD_RUN_ON_UI_THREAD = "runOnUiThread"; + private const string PACKAGE_DAYDREAM_API = "com.google.vr.ndk.base.DaydreamApi"; + + private static GvrDaydreamApi m_instance; + + #if UNITY_ANDROID && !UNITY_EDITOR + private AndroidJavaObject m_daydreamApiObject; + private AndroidJavaClass m_daydreamApiClass = new AndroidJavaClass(PACKAGE_DAYDREAM_API); + + public static AndroidJavaObject JavaInstance + { + get + { + EnsureCreated(null); + return m_instance.m_daydreamApiObject; + } + } + #endif // UNITY_ANDROID && !UNITY_EDITOR + + /// Returns true if the instance of the Daydream API is created. + public static bool IsCreated + { + get + { +#if !UNITY_ANDROID || UNITY_EDITOR + return (m_instance != null); +#else + return (m_instance != null) && (m_instance.m_daydreamApiObject != null); +#endif // !UNITY_ANDROID || UNITY_EDITOR + } + } + + private static void EnsureCreated(Action callback) + { + if (!IsCreated) + { + CreateAsync(callback); + } + else + { + callback(true); + } + } + + /// @cond + /// Call Dispose to free up memory used by this API. + public void Dispose() + { + m_instance = null; + } + + /// @endcond + + /// @deprecated Create() without arguments is deprecated. Use CreateAsync(callback) instead. + [System.Obsolete("Create() without arguments is deprecated. Use CreateAsync(callback) instead.")] + public static void Create() + { + CreateAsync(null); + } + + /// Asynchronously instantiates a GvrDayreamApi. + /// + /// The provided callback will be called with a bool argument indicating + /// whether instance creation was successful. + public static void CreateAsync(Action callback) + { + if (m_instance == null) + { + m_instance = new GvrDaydreamApi(); + } +#if UNITY_ANDROID && !UNITY_EDITOR + if (m_instance.m_daydreamApiObject != null) + { + return; + } + + if (m_instance.m_daydreamApiClass == null) + { + Debug.LogErrorFormat("Failed to get DaydreamApi class, {0}", PACKAGE_DAYDREAM_API); + return; + } + + AndroidJavaObject activity = GvrActivityHelper.GetActivity(); + if (activity == null) + { + Debug.LogError("DaydreamApi.Create failed to get acitivty"); + return; + } + + AndroidJavaObject context = GvrActivityHelper.GetApplicationContext(activity); + if (context == null) + { + Debug.LogError("DaydreamApi.Create failed to get application context from activity"); + return; + } + + activity.Call(METHOD_RUN_ON_UI_THREAD, new AndroidJavaRunnable(() => + { + m_instance.m_daydreamApiObject = + m_instance.m_daydreamApiClass.CallStatic(METHOD_CREATE, context); + bool success = m_instance.m_daydreamApiObject != null; + if (!success) + { + Debug.LogErrorFormat("DaydreamApi.Create call to {0} failed to instantiate object", + METHOD_CREATE); + } + + if (callback != null) + { + callback(success); + } + })); +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + + /// @deprecated LaunchVrHome() deprecated. Use LaunchVrHomeAsync(callback) instead. + [System.Obsolete("LaunchVrHome() deprecated. Use LaunchVrHomeAsync(callback) instead.")] + public static void LaunchVrHome() + { + LaunchVrHomeAsync(null); + } + + /// Asynchronously launches VR Home. + /// Instantiates an instance of GvrDaydreamApi if necessary. If successful, + /// launches VR Home. + /// The provided callback will be called with a bool argument indicating + /// whether instance creation and launch of VR Home was successful. + public static void LaunchVrHomeAsync(Action callback) + { + EnsureCreated((success) => + { + if (success) + { +#if UNITY_ANDROID && !UNITY_EDITOR + m_instance.m_daydreamApiObject.Call(METHOD_LAUNCH_VR_HOMESCREEN); +#else + Debug.LogWarning("Launching VR Home is only possible on Android devices."); +#endif // UNITY_ANDROID && !UNITY_EDITOR + } + + if (callback != null) + { + callback(success); + } + }); + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrDaydreamApi.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrDaydreamApi.cs.meta new file mode 100644 index 0000000..c5cbded --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrDaydreamApi.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c4d57836d4e064f449f3e2f03330e9ce +timeCreated: 1490648002 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrIntent.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrIntent.cs new file mode 100644 index 0000000..45fed9d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrIntent.cs @@ -0,0 +1,105 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; + +/// +/// Provides information about the Android Intent that started the current Activity. +/// +public static class GvrIntent +{ + private const string METHOD_GET_INTENT = "getIntent"; + private const string METHOD_HASH_CODE = "hashCode"; + private const string METHOD_INTENT_GET_DATA_STRING = "getDataString"; + private const string METHOD_INTENT_GET_BOOLEAN_EXTRA = "getBooleanExtra"; + + private const string EXTRA_VR_LAUNCH = "android.intent.extra.VR_LAUNCH"; + + /// Returns the string representation of the data URI on which + /// this activity's intent is operating. + /// See Intent.getDataString() in the Android documentation. + public static string GetData() + { +#if UNITY_EDITOR || !UNITY_ANDROID + return null; +#else + AndroidJavaObject androidIntent = GetIntent(); + if (androidIntent == null) + { + Debug.Log("Intent on current activity was null"); + return null; + } + + return androidIntent.Call(METHOD_INTENT_GET_DATA_STRING); +#endif // UNITY_EDITOR || !UNITY_ANDROID + } + + /// Returns true if the intent category contains "android.intent.extra.VR_LAUNCH". + public static bool IsLaunchedFromVr() + { +#if UNITY_EDITOR || !UNITY_ANDROID + return false; +#else + AndroidJavaObject androidIntent = GetIntent(); + if (androidIntent == null) + { + Debug.Log("Intent on current activity was null"); + return false; + } + + return androidIntent.Call(METHOD_INTENT_GET_BOOLEAN_EXTRA, EXTRA_VR_LAUNCH, false); +#endif // UNITY_EDITOR || !UNITY_ANDROID + } + + /// Returns the hash code of the Java intent object. + /// Useful for discerning whether you have a new intent on un-pause. + /// + public static int GetIntentHashCode() + { +#if UNITY_EDITOR || !UNITY_ANDROID + return 0; +#else + AndroidJavaObject androidIntent = GetIntent(); + if (androidIntent == null) + { + Debug.Log("Intent on current activity was null"); + return 0; + } + + return androidIntent.Call(METHOD_HASH_CODE); +#endif // UNITY_EDITOR || !UNITY_ANDROID + } + + #if !UNITY_EDITOR && UNITY_ANDROID + private static AndroidJavaObject GetIntent() + { + AndroidJavaObject androidActivity = null; + try + { + androidActivity = GvrActivityHelper.GetActivity(); + } + catch (AndroidJavaException e) + { + Debug.LogError("Exception while connecting to the Activity: " + e); + return null; + } + + return androidActivity.Call(METHOD_GET_INTENT); + } + #endif // !UNITY_EDITOR && UNITY_ANDROID +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrIntent.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrIntent.cs.meta new file mode 100644 index 0000000..e0b6313 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrIntent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9961197a3979a4fa684159098ac5881f +timeCreated: 1473201821 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrMathHelpers.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrMathHelpers.cs new file mode 100644 index 0000000..9c56181 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrMathHelpers.cs @@ -0,0 +1,146 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using System.Collections; + +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + +/// Helper functions to perform common math operations for Gvr. +public static class GvrMathHelpers +{ + /// Gets the intersection position of the camera and the raycast result. + /// The camera to use. + /// The result of the raycast to intersect with the camera. + /// The position of the intersection. + public static Vector3 GetIntersectionPosition(Camera cam, RaycastResult raycastResult) + { + // Check for camera + if (cam == null) + { + return Vector3.zero; + } + + float intersectionDistance = raycastResult.distance + cam.nearClipPlane; + Vector3 intersectionPosition = cam.transform.position + cam.transform.forward * intersectionDistance; + return intersectionPosition; + } + + /// Normalizes the coodinates from cartesian to spherical system. + /// The coordinates to normalize. + /// The spherical coordinates. + public static Vector2 NormalizedCartesianToSpherical(Vector3 cartCoords) + { + cartCoords.Normalize(); + + if (cartCoords.x == 0) + { + cartCoords.x = Mathf.Epsilon; + } + + float polar = Mathf.Atan(cartCoords.z / cartCoords.x); + + if (cartCoords.x < 0) + { + polar += Mathf.PI; + } + + float elevation = Mathf.Asin(cartCoords.y); + return new Vector2(polar, elevation); + } + + /// + /// A cubic easing function (https://easings.net/#easeOutCubic). + /// + /// The maximum output value. + /// Converts matrix from Google VR convention to Unity convention. + /// + /// Google VR is row-major, RHS coordinates, and Unity is column-major, LHS. + /// + /// The Google VR matrix data + /// The position in Unity space based on the Google VR matrix + /// The orientation in Unity space. + public static void GvrMatrixToUnitySpace(Matrix4x4 gvrMatrix, out Vector3 position, out Quaternion orientation) + { + // Invert the matrix to go from row-major (GVR) to column-major (Unity). + Matrix4x4 unityMatrix = Matrix4x4.Transpose(gvrMatrix); + + // Change from RHS to LHS coordinates. + transientPose.SetRightHanded(unityMatrix); + + position = transientPose.Position; + orientation = transientPose.Orientation; + } + + /// Converts a float array of length 16 into a column-major 4x4 matrix. + public static Matrix4x4 ConvertFloatArrayToMatrix(float[] floatArray) + { + Matrix4x4 result = new Matrix4x4(); + + if (floatArray == null || floatArray.Length != 16) + { + throw new System.ArgumentException("floatArray must not be null and have a length of 16."); + } + + result[0, 0] = floatArray[0]; + result[1, 0] = floatArray[1]; + result[2, 0] = floatArray[2]; + result[3, 0] = floatArray[3]; + result[0, 1] = floatArray[4]; + result[1, 1] = floatArray[5]; + result[2, 1] = floatArray[6]; + result[3, 1] = floatArray[7]; + result[0, 2] = floatArray[8]; + result[1, 2] = floatArray[9]; + result[2, 2] = floatArray[10]; + result[3, 2] = floatArray[11]; + result[0, 3] = floatArray[12]; + result[1, 3] = floatArray[13]; + result[2, 3] = floatArray[14]; + result[3, 3] = floatArray[15]; + + return result; + } + + // 3D pose instance to be used in ConvertFloatArrayToMatrix calls. + private static MutablePose3D transientPose = new MutablePose3D(); +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrMathHelpers.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrMathHelpers.cs.meta new file mode 100644 index 0000000..6f2726a --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrMathHelpers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2057fd0fa21f34bc2ba2dd2a4a2a38b5 +timeCreated: 1493226132 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrUIHelpers.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrUIHelpers.cs new file mode 100644 index 0000000..aa29949 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrUIHelpers.cs @@ -0,0 +1,44 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +/// Helper class for dealing with canvas UI. +public static class GvrUIHelpers +{ + /// Finds the meters scale for the local coordinate system + /// of the root canvas that contains the canvasObject passed in. + public static float GetMetersToCanvasScale(Transform canvasObject) + { + Canvas canvas = canvasObject.GetComponentInParent(); + if (canvas == null) + { + return 0.0f; + } + + if (!canvas.isRootCanvas) + { + canvas = canvas.rootCanvas; + } + + float metersToCanvasScale = canvas.transform.localScale.x; + return metersToCanvasScale; + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrUIHelpers.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrUIHelpers.cs.meta new file mode 100644 index 0000000..b0dd505 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrUIHelpers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 00f93e3df109d4a69834d44deb072725 +timeCreated: 1483744183 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrVRHelpers.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrVRHelpers.cs new file mode 100644 index 0000000..21b374f --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrVRHelpers.cs @@ -0,0 +1,142 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using System.Collections; +using Gvr.Internal; +#if UNITY_2017_2_OR_NEWER +using UnityEngine.XR; +#else +using UnityEngine.VR; +using XRNode = UnityEngine.VR.VRNode; +using XRSettings = UnityEngine.VR.VRSettings; +#endif // UNITY_2017_2_OR_NEWER + +/// Helper functions common to GVR VR applications. +public static class GvrVRHelpers +{ + /// Returns the center of the viewport. + public static Vector2 GetViewportCenter() + { + int viewportWidth = Screen.width; + int viewportHeight = Screen.height; + if (XRSettings.enabled) + { + viewportWidth = XRSettings.eyeTextureWidth; + viewportHeight = XRSettings.eyeTextureHeight; + } + + return new Vector2(0.5f * viewportWidth, 0.5f * viewportHeight); + } + + /// Returns the forward vector relative to the head rotation. + public static Vector3 GetHeadForward() + { + return GetHeadRotation() * Vector3.forward; + } + + /// Returns the head rotation. + public static Quaternion GetHeadRotation() + { +#if UNITY_EDITOR + if (InstantPreview.Instance != null && InstantPreview.Instance.IsCurrentlyConnected) + { + // In-editor; Instant Preview is active: + return Camera.main.transform.localRotation; + } + else + { + // In-editor; Instant Preview is not active: + if (GvrEditorEmulator.Instance == null) + { + Debug.LogWarning("No GvrEditorEmulator instance was found in your scene. Please ensure that " + + "GvrEditorEmulator exists in your scene."); + return Quaternion.identity; + } + + return GvrEditorEmulator.Instance.HeadRotation; + } +#else + // Not running in editor: + return InputTracking.GetLocalRotation(XRNode.Head); +#endif // UNITY_EDITOR + } + + /// Returns the head position. + public static Vector3 GetHeadPosition() + { +#if UNITY_EDITOR + if (GvrEditorEmulator.Instance == null) + { + Debug.LogWarning("No GvrEditorEmulator instance was found in your scene. Please ensure that " + + "GvrEditorEmulator exists in your scene."); + return Vector3.zero; + } + + return GvrEditorEmulator.Instance.HeadPosition; +#else + return InputTracking.GetLocalPosition(XRNode.Head); +#endif // UNITY_EDITOR + } + + /// Returns the recommended maximum laser distance for the given mode. + public static float GetRecommendedMaxLaserDistance(GvrBasePointer.RaycastMode mode) + { + switch (mode) + { + case GvrBasePointer.RaycastMode.Direct: + return 20.0f; + case GvrBasePointer.RaycastMode.Hybrid: + return 1.0f; + case GvrBasePointer.RaycastMode.Camera: + default: + return 0.75f; + } + } + + /// Returns the distance of the ray intersection for the given mode. + public static float GetRayIntersection(GvrBasePointer.RaycastMode mode) + { + switch (mode) + { + case GvrBasePointer.RaycastMode.Direct: + return 0.0f; + case GvrBasePointer.RaycastMode.Hybrid: + return 0.0f; + case GvrBasePointer.RaycastMode.Camera: + default: + return 2.5f; + } + } + + /// Returns true if the laser should be shrunk based on the given mode. + public static bool GetShrinkLaser(GvrBasePointer.RaycastMode mode) + { + switch (mode) + { + case GvrBasePointer.RaycastMode.Direct: + return false; + case GvrBasePointer.RaycastMode.Hybrid: + return true; + case GvrBasePointer.RaycastMode.Camera: + default: + return false; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrVRHelpers.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrVRHelpers.cs.meta new file mode 100644 index 0000000..b2a2eb2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/GvrVRHelpers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d0dea43be37504c45ab74cf9fcfbf34a +timeCreated: 1493226132 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal.meta new file mode 100644 index 0000000..0bb88fc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 369f50a224e4c40f480cab4df8170c47 +folderAsset: yes +timeCreated: 1539977634 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/GvrCursorHelper.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/GvrCursorHelper.cs new file mode 100644 index 0000000..3086109 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/GvrCursorHelper.cs @@ -0,0 +1,57 @@ +//----------------------------------------------------------------------- +// +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using System; +using UnityEngine; + +namespace Gvr.Internal +{ + /// Manages cursor lock state while developer is using editor head and controller emulation. + public class GvrCursorHelper + { + // Whether MouseControllerProvider is currently tracking mouse movement. + private static bool cachedHeadEmulationActive; + + // Whether GvrEditorEmulator is currently tracking mouse movement. + private static bool cachedControllerEmulationActive; + + public static bool HeadEmulationActive + { + set + { + cachedHeadEmulationActive = value; + UpdateCursorLockState(); + } + } + + public static bool ControllerEmulationActive + { + set + { + cachedControllerEmulationActive = value; + UpdateCursorLockState(); + } + } + + private static void UpdateCursorLockState() + { + bool active = cachedHeadEmulationActive || cachedControllerEmulationActive; + Cursor.lockState = active ? CursorLockMode.Locked : CursorLockMode.None; + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/GvrCursorHelper.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/GvrCursorHelper.cs.meta new file mode 100644 index 0000000..361ab84 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/GvrCursorHelper.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b6ecee1e7b5ef4412ba89d59a49afd69 +timeCreated: 1506962278 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/SuppressMemoryAllocationErrorAttribute.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/SuppressMemoryAllocationErrorAttribute.cs new file mode 100644 index 0000000..9ece3ca --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/SuppressMemoryAllocationErrorAttribute.cs @@ -0,0 +1,38 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Google Inc. All Rights Reserved. +// +//----------------------------------------------------------------------- +// This module is used internally by Google for assessing memory allocations in public methods. +// Feel free to disregard all [SuppressMemoryAllocationErrorAttribute] declarations on methods. +namespace Gvr.Internal +{ + using System; + using UnityEngine; + + /// + /// A custom Attribute class to annotate functions that are allowed to allocate memory. + /// + [AttributeUsage(AttributeTargets.Method, Inherited = false)] + public class SuppressMemoryAllocationErrorAttribute : Attribute + { + /// + /// Initializes a new instance of the class. + /// + public SuppressMemoryAllocationErrorAttribute() + { + this.IsWarning = false; + this.Reason = "Unknown"; + } + + /// + /// Gets or sets a value indicating whether to show a warning instead of an error. + /// + public bool IsWarning { get; set; } + + /// + /// Gets or sets the reason for suppressing the memory allocation error. + /// + public string Reason { get; set; } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/SuppressMemoryAllocationErrorAttribute.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/SuppressMemoryAllocationErrorAttribute.cs.meta new file mode 100644 index 0000000..19f09eb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Utilities/Internal/SuppressMemoryAllocationErrorAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 376a69755f4024896aac10f1916f8182 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video.meta new file mode 100644 index 0000000..5b32d50 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7813c08c71b5d4a07a2248e43db3fd27 +folderAsset: yes +timeCreated: 1478806417 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video/GvrVideoPlayerTexture.cs b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video/GvrVideoPlayerTexture.cs new file mode 100644 index 0000000..96abf1c --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video/GvrVideoPlayerTexture.cs @@ -0,0 +1,1261 @@ +//----------------------------------------------------------------------- +// +// Copyright 2016 Google Inc. All Rights Reserved. +// +// 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. +// +//----------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.UI; +using System.Collections; +using System.Runtime.InteropServices; +using System; +using System.Collections.Generic; + +/// +/// Plays video using Exoplayer rendering it on the main texture. +/// +[HelpURL("https://developers.google.com/vr/unity/reference/class/GvrVideoPlayerTexture")] +public class GvrVideoPlayerTexture : MonoBehaviour +{ + /// + /// The video player pointer used to uniquely identify the player instance. + /// + private IntPtr videoPlayerPtr; + + /// + /// The video player event base. + /// + /// This is added to the event id when issues events to + /// the plugin. + /// + private int videoPlayerEventBase; + + private Texture initialTexture; + private Texture surfaceTexture; + private float[] videoMatrixRaw; + private Matrix4x4 videoMatrix; + private int videoMatrixPropertyId; + private long lastVideoTimestamp; + + private bool initialized; + private int texWidth = 1024; + private int texHeight = 1024; + private long lastBufferedPosition; + private float framecount = 0; + + private Renderer screen; + + /// + /// The render event function. + /// + private IntPtr renderEventFunction; + private bool playOnResume; + + /// List of callbacks to invoke when the video is ready. + private List> onEventCallbacks; + + /// List of callbacks to invoke on exception. + /// The first parameter is the type of exception, + /// the second is the message. + /// + private List> onExceptionCallbacks; + + private readonly static Queue ExecuteOnMainThread = new Queue(); + + /// Attach a text component to get some debug status info. + public Text statusText; + + /// + /// Video type. + /// + public enum VideoType + { + Dash = 0, + HLS = 2, + Other = 3, + } + + /// + /// Video resolutions which can be selected as the initial resolution when streaming begins. + /// See `initialResolution` for more information. + /// + public enum VideoResolution + { + Lowest = 1, + _720 = 720, + _1080 = 1080, + _2048 = 2048, + Highest = 4096, + } + + /// + /// Video player state. + /// + public enum VideoPlayerState + { + Idle = 1, + Preparing = 2, + Buffering = 3, + Ready = 4, + Ended = 5, + } + + /// Video events + public enum VideoEvents + { + VideoReady = 1, + VideoStartPlayback = 2, + VideoFormatChanged = 3, + VideoSurfaceSet = 4, + VideoSizeChanged = 5, + } + + /// Stereo mode formats. + public enum StereoMode + { + NoValue = -1, + Mono = 0, + TopBottom = 1, + LeftRight = 2, + } + + /// + /// Plugin render commands. + /// + /// + /// These are added to the eventbase for the specific player object and + /// issued to the plugin. + /// + private enum RenderCommand + { + None = -1, + InitializePlayer = 0, + UpdateVideo = 1, + RenderMono = 2, + RenderLeftEye = 3, + RenderRightEye = 4, + Shutdown = 5, + } + + /// + /// The type of the video. + /// + public VideoType videoType; + + /// + /// The video URL. + /// + public string videoURL; + + /// + /// The video content ID. + /// + public string videoContentID; + + /// + /// The video provider ID. + /// + public string videoProviderId; + + /// The video resolution used when streaming begins. + /// For multi-rate streams like Dash and HLS, the stream used at + /// the beginning of playback is selected such that its vertical + /// resolution is greater than or equal to this value. After streaming + /// begins, the player auto-selects the highest rate stream the network + /// connection is capable of delivering. + /// + public VideoResolution initialResolution = VideoResolution.Highest; + + /// + /// True for adjusting the aspect ratio of the renderer. + /// + public bool adjustAspectRatio; + + /// + /// The use secure path for DRM protected video. + /// + public bool useSecurePath; + + /// + /// Returns true when the video is ready to be played. + /// + public bool VideoReady + { + get + { + return videoPlayerPtr != IntPtr.Zero && IsVideoReady(videoPlayerPtr); + } + } + + /// + /// The current position in seconds in the video stream. + /// + public long CurrentPosition + { + get + { + return videoPlayerPtr != IntPtr.Zero ? GetCurrentPosition(videoPlayerPtr) : 0; + } + + set + { + // If the position is being set to 0, reset the framecount as well. + // This allows the texture swapping to work correctly at the beginning + // of the stream. + if (value == 0) + { + framecount = 0; + } + + SetCurrentPosition(videoPlayerPtr, value); + } + } + + /// + /// The duration in seconds of the video stream. + /// + public long VideoDuration + { + get { return videoPlayerPtr != IntPtr.Zero ? GetDuration(videoPlayerPtr) : 0; } + } + + /// + /// The buffered position in seconds of the video stream. + /// + public long BufferedPosition + { + get { return videoPlayerPtr != IntPtr.Zero ? GetBufferedPosition(videoPlayerPtr) : 0; } + } + + /// + /// The buffered percentage of the video stream. + /// + public int BufferedPercentage + { + get { return videoPlayerPtr != IntPtr.Zero ? GetBufferedPercentage(videoPlayerPtr) : 0; } + } + + /// + /// True if the video is paused. + /// + public bool IsPaused + { + get { return !initialized || videoPlayerPtr == IntPtr.Zero || IsVideoPaused(videoPlayerPtr); } + } + + /// + /// Returns the player state. + /// + public VideoPlayerState PlayerState + { + get + { + return videoPlayerPtr != IntPtr.Zero ? (VideoPlayerState)GetPlayerState(videoPlayerPtr) : VideoPlayerState.Idle; + } + } + + /// + /// Returns the maximum volume value which can be set. + /// + public int MaxVolume + { + get { return videoPlayerPtr != IntPtr.Zero ? GetMaxVolume(videoPlayerPtr) : 0; } + } + + /// + /// Returns the current volume setting. + /// + public int CurrentVolume + { + get { return videoPlayerPtr != IntPtr.Zero ? GetCurrentVolume(videoPlayerPtr) : 0; } + set { SetCurrentVolume(value); } + } + + /// + /// Returns the current stereo mode. + /// + public StereoMode CurrentStereoMode + { + get + { + return videoPlayerPtr != IntPtr.Zero ? (StereoMode)GetStereoMode(videoPlayerPtr) : StereoMode.NoValue; + } + } + + /// + /// Returns true if the video has a projection. + /// + public bool HasProjection + { + get { return videoPlayerPtr != IntPtr.Zero ? HasProjectionData(videoPlayerPtr) : false; } + } + + /// + /// The renderer for the video texture. + /// + public Renderer Screen + { + get + { + return screen; + } + + set + { + if (screen == value) + { + return; + } + + if (screen != null && initialTexture != null) + { + screen.sharedMaterial.mainTexture = initialTexture; + } + + screen = value; + + if (screen != null) + { + initialTexture = screen.sharedMaterial.mainTexture; + } + } + } + + /// + /// Returns the current frame texture. + /// + public Texture CurrentFrameTexture + { + get { return surfaceTexture; } + } + + /// + /// Returns the width of the texture. + /// + public int Width + { + get { return texWidth; } + } + + /// + /// Returns the height of the texture. + /// + public int Height + { + get { return texHeight; } + } + + /// + /// Returns the aspect ratio of the texture. + /// + public float AspectRatio + { + get + { + if (texHeight == 0) + { + return 0.0f; + } + + return (float)texWidth / (float)texHeight; + } + } + + /// Create the video player instance and the event base id. + void Awake() + { + videoMatrixRaw = new float[16]; + videoMatrixPropertyId = Shader.PropertyToID("video_matrix"); + + // Defaults the Screen to the Renderer component on the same object as this script. + // The Screen can also be set explicitly. + Screen = GetComponent(); + + CreatePlayer(); + } + + void CreatePlayer() + { + videoPlayerPtr = CreateVideoPlayer(); + videoPlayerEventBase = GetVideoPlayerEventBase(videoPlayerPtr); + Debug.Log(" -- " + gameObject.name + " created with base " + + videoPlayerEventBase); + + SetOnVideoEventCallback((eventId) => + { + Debug.Log("------------- E V E N T " + eventId + " -----------------"); + UpdateStatusText(); + }); + + SetOnExceptionCallback((type, msg) => + { + Debug.LogError("Exception: " + type + ": " + msg); + }); + + initialized = false; + } + + void OnDisable() + { + if (videoPlayerPtr != IntPtr.Zero) + { + if (GetPlayerState(videoPlayerPtr) == (int)VideoPlayerState.Ready) + { + PauseVideo(videoPlayerPtr); + } + } + } + + /// + /// Sets the display texture. + /// + /// Texture to display. + /// If null, the initial texture of the renderer is used. + public void SetDisplayTexture(Texture texture) + { + if (texture == null) + { + texture = initialTexture; + } + + if (texture == null) + { + return; + } + + if (screen != null) + { + screen.sharedMaterial.mainTexture = texture; + } + } + + /// + /// Cleans up the current video player and texture. + /// + public void CleanupVideo() + { + Debug.Log("Cleaning Up video!"); + if (videoPlayerPtr != IntPtr.Zero) + { + DestroyVideoPlayer(videoPlayerPtr); + videoPlayerPtr = IntPtr.Zero; + } + + if (surfaceTexture != null) + { + Destroy(surfaceTexture); + surfaceTexture = null; + } + + if (screen != null) + { + screen.sharedMaterial.mainTexture = initialTexture; + } + } + + /// + /// Reinitializes the current video player or creates one if there is no player. + /// + public void ReInitializeVideo() + { + if (screen != null) + { + screen.sharedMaterial.mainTexture = initialTexture; + } + + if (videoPlayerPtr == IntPtr.Zero) + { + CreatePlayer(); + } + + Init(); + } + + void OnDestroy() + { + CleanupVideo(); + } + + void OnApplicationPause(bool bPause) + { + if (videoPlayerPtr != IntPtr.Zero) + { + if (bPause) + { + playOnResume = !IsPaused; + PauseVideo(videoPlayerPtr); + } + else + { + if (playOnResume) + { + PlayVideo(videoPlayerPtr); + } + } + } + } + + void UpdateMaterial() + { + // Don't render if not initialized. + if (videoPlayerPtr == IntPtr.Zero) + { + return; + } + + texWidth = GetWidth(videoPlayerPtr); + texHeight = GetHeight(videoPlayerPtr); + + int externalTextureId = GetExternalSurfaceTextureId(videoPlayerPtr); + if (surfaceTexture != null + && surfaceTexture.GetNativeTexturePtr().ToInt32() != externalTextureId) + { + Destroy(surfaceTexture); + surfaceTexture = null; + } + + if (surfaceTexture == null && externalTextureId != 0) + { + Debug.Log("Creating external texture with surface texture id " + externalTextureId); + + // Size of this texture doesn't really matter and can change on the fly anyway. + surfaceTexture = Texture2D.CreateExternalTexture(4, 4, TextureFormat.RGBA32, + false, false, new System.IntPtr(externalTextureId)); + } + + if (surfaceTexture == null) + { + return; + } + + // Don't swap the textures if the video ended. + if (PlayerState == VideoPlayerState.Ended) + { + return; + } + + if (screen == null) + { + Debug.LogError("GvrVideoPlayerTexture: No screen to display the video is set."); + return; + } + + if (screen != null) + { + // Unity may build new a new material instance when assigning + // material.x which can lead to duplicating materials each frame + // whereas using the shared material will modify the original material. + // Update the material's texture if it is different. + if (screen.sharedMaterial.mainTexture == null || + screen.sharedMaterial.mainTexture.GetNativeTexturePtr() != surfaceTexture.GetNativeTexturePtr()) + { + screen.sharedMaterial.mainTexture = surfaceTexture; + } + + screen.sharedMaterial.SetMatrix(videoMatrixPropertyId, videoMatrix); + } + } + + private void OnRestartVideoEvent(int eventId) + { + if (eventId == (int)VideoEvents.VideoReady) + { + Debug.Log("Restarting video complete."); + RemoveOnVideoEventCallback(OnRestartVideoEvent); + } + } + + /// + /// Resets the video player. + /// + public void RestartVideo() + { + SetOnVideoEventCallback(OnRestartVideoEvent); + + string theUrl = ProcessURL(); + + InitVideoPlayer(videoPlayerPtr, (int)videoType, theUrl, + videoContentID, + videoProviderId, + useSecurePath, + true); + framecount = 0; + lastVideoTimestamp = -1; + } + + /// Set the volume level + public void SetCurrentVolume(int val) + { + SetCurrentVolume(videoPlayerPtr, val); + } + + /// + /// Initialize the video player. + /// + /// true if successful. + public bool Init() + { + if (initialized) + { + Debug.Log("Skipping initialization: video player already loaded"); + return true; + } + + if (videoURL == null || videoURL.Length == 0) + { + Debug.LogError("Cannot initialize with null videoURL"); + return false; + } + + videoURL = videoURL == null ? "" : videoURL.Trim(); + videoContentID = videoContentID == null ? "" : videoContentID.Trim(); + videoProviderId = videoProviderId == null ? "" : videoProviderId.Trim(); + + SetInitialResolution(videoPlayerPtr, (int)initialResolution); + + string theUrl = ProcessURL(); + Debug.Log("Playing " + videoType + " " + theUrl); + Debug.Log("videoContentID = " + videoContentID); + Debug.Log("videoProviderId = " + videoProviderId); + videoPlayerPtr = InitVideoPlayer(videoPlayerPtr, (int)videoType, theUrl, + videoContentID, videoProviderId, + useSecurePath, false); + IssuePlayerEvent(RenderCommand.InitializePlayer); + initialized = true; + framecount = 0; + lastVideoTimestamp = -1; + return videoPlayerPtr != IntPtr.Zero; + } + + /// Play the video. + public bool Play() + { + if (!initialized) + { + Init(); + } + + if (videoPlayerPtr != IntPtr.Zero && IsVideoReady(videoPlayerPtr)) + { + return PlayVideo(videoPlayerPtr) == 0; + } + else + { + Debug.LogError("Video player not ready to Play!"); + return false; + } + } + + /// Pauses video playback. + public bool Pause() + { + if (!initialized) + { + Init(); + } + + if (VideoReady) + { + return PauseVideo(videoPlayerPtr) == 0; + } + else + { + Debug.LogError("Video player not ready to Pause!"); + return false; + } + } + + /// + /// Adjusts the aspect ratio. + /// + /// + /// This adjusts the transform scale to match the aspect + /// ratio of the texture. + /// + private void AdjustAspectRatio() + { + float aspectRatio = AspectRatio; + if (aspectRatio == 0.0f) + { + return; + } + + // set the y scale based on the x value + Vector3 newscale = transform.localScale; + newscale.y = Mathf.Min(newscale.y, newscale.x / aspectRatio); + + transform.localScale = newscale; + } + + private void UpdateStatusText() + { + float fps = CurrentPosition > 0 ? (framecount / (CurrentPosition / 1000f)) : CurrentPosition; + string status = texWidth + " x " + texHeight + " buffer: " + + (BufferedPosition / 1000) + " " + PlayerState + " fps: " + fps; + if (statusText != null) + { + if (statusText.text != status) + { + statusText.text = status; + } + } + } + + /// + /// Issues the player event. + /// + /// The event to send to the video player + /// instance. + /// + private void IssuePlayerEvent(RenderCommand evt) + { + if (renderEventFunction == IntPtr.Zero) + { + renderEventFunction = GetRenderEventFunc(); + } + + if (renderEventFunction == IntPtr.Zero || evt == RenderCommand.None) + { + Debug.LogError("Attempt to IssuePlayerEvent before renderEventFunction ready."); + return; + } + + GL.IssuePluginEvent(renderEventFunction, videoPlayerEventBase + (int)evt); + } + + void Update() + { + while (ExecuteOnMainThread.Count > 0) + { + ExecuteOnMainThread.Dequeue().Invoke(); + } + + if (VideoReady) + { + IssuePlayerEvent(RenderCommand.UpdateVideo); + GetVideoMatrix(videoPlayerPtr, videoMatrixRaw); + videoMatrix = GvrMathHelpers.ConvertFloatArrayToMatrix(videoMatrixRaw); + long vidTimestamp = GetVideoTimestampNs(videoPlayerPtr); + if (vidTimestamp != lastVideoTimestamp) + { + framecount++; + } + + lastVideoTimestamp = vidTimestamp; + + UpdateMaterial(); + + if (adjustAspectRatio) + { + AdjustAspectRatio(); + } + + if ((int)framecount % 30 == 0) + { + UpdateStatusText(); + } + + long bp = BufferedPosition; + if (bp != lastBufferedPosition) + { + lastBufferedPosition = bp; + UpdateStatusText(); + } + } + } + + /// Removes the callback for exceptions. + public void RemoveOnVideoEventCallback(Action callback) + { + if (onEventCallbacks != null) + { + onEventCallbacks.Remove(callback); + } + } + + /// Sets the callback for video events. + public void SetOnVideoEventCallback(Action callback) + { + if (onEventCallbacks == null) + { + onEventCallbacks = new List>(); + } + + onEventCallbacks.Add(callback); + SetOnVideoEventCallback(videoPlayerPtr, InternalOnVideoEventCallback, + ToIntPtr(this)); + } + + internal void FireVideoEvent(int eventId) + { + if (onEventCallbacks == null) + { + return; + } + + // Copy the collection so the callbacks can remove themselves from the list. + Action[] cblist = onEventCallbacks.ToArray(); + foreach (Action cb in cblist) + { + try + { + cb(eventId); + } + catch (Exception e) + { + Debug.LogError("exception calling callback: " + e); + } + } + } + + [AOT.MonoPInvokeCallback(typeof(OnVideoEventCallback))] + static void InternalOnVideoEventCallback(IntPtr cbdata, int eventId) + { + if (cbdata == IntPtr.Zero) + { + return; + } + + GvrVideoPlayerTexture player; + var gcHandle = GCHandle.FromIntPtr(cbdata); + try + { + player = (GvrVideoPlayerTexture)gcHandle.Target; + } + catch (InvalidCastException e) + { + Debug.LogError("GC Handle pointed to unexpected type: " + + gcHandle.Target + ". Expected " + + typeof(GvrVideoPlayerTexture)); + throw e; + } + + if (player != null) + { + ExecuteOnMainThread.Enqueue(() => player.FireVideoEvent(eventId)); + } + } + + /// Sets the callback for exceptions. + public void SetOnExceptionCallback(Action callback) + { + if (onExceptionCallbacks == null) + { + onExceptionCallbacks = new List>(); + SetOnExceptionCallback(videoPlayerPtr, InternalOnExceptionCallback, + ToIntPtr(this)); + } + + onExceptionCallbacks.Add(callback); + } + + [AOT.MonoPInvokeCallback(typeof(OnExceptionCallback))] + static void InternalOnExceptionCallback(string type, string msg, + IntPtr cbdata) + { + if (cbdata == IntPtr.Zero) + { + return; + } + + GvrVideoPlayerTexture player; + var gcHandle = GCHandle.FromIntPtr(cbdata); + try + { + player = (GvrVideoPlayerTexture)gcHandle.Target; + } + catch (InvalidCastException e) + { + Debug.LogError("GC Handle pointed to unexpected type: " + + gcHandle.Target + ". Expected " + + typeof(GvrVideoPlayerTexture)); + throw e; + } + + if (player != null) + { + ExecuteOnMainThread.Enqueue(() => player.FireOnException(type, msg)); + } + } + + internal void FireOnException(string type, string msg) + { + if (onExceptionCallbacks == null) + { + return; + } + + foreach (Action cb in onExceptionCallbacks) + { + try + { + cb(type, msg); + } + catch (Exception e) + { + Debug.LogError("exception calling callback: " + e); + } + } + } + + internal static IntPtr ToIntPtr(System.Object obj) + { + GCHandle handle = GCHandle.Alloc(obj); + return GCHandle.ToIntPtr(handle); + } + + internal string ProcessURL() + { + return videoURL.Replace("${Application.dataPath}", Application.dataPath); + } + + internal delegate void OnVideoEventCallback(IntPtr cbdata, int eventId); + + internal delegate void OnExceptionCallback(string type, string msg, + IntPtr cbdata); + +#if UNITY_ANDROID && !UNITY_EDITOR + private const string dllName = "gvrvideo"; + + [DllImport(dllName)] + private static extern IntPtr GetRenderEventFunc(); + + [DllImport(dllName)] + private static extern void SetExternalTextures(IntPtr videoPlayerPtr, + int[] texIds, + int size, + int w, + int h); + + [DllImport(dllName)] + private static extern IntPtr GetRenderableTextureId(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int GetExternalSurfaceTextureId(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern void GetVideoMatrix(IntPtr videoPlayerPtr, + float[] videoMatrix); + + [DllImport(dllName)] + private static extern long GetVideoTimestampNs(IntPtr videoPlayerPtr); + + // Keep public so we can check for the dll being present at runtime. + [DllImport(dllName)] + public static extern IntPtr CreateVideoPlayer(); + + // Keep public so we can check for the dll being present at runtime. + [DllImport(dllName)] + public static extern void DestroyVideoPlayer(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int GetVideoPlayerEventBase(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern IntPtr InitVideoPlayer(IntPtr videoPlayerPtr, + int videoType, + string videoURL, + string contentID, + string providerId, + bool useSecurePath, + bool useExisting); + + [DllImport(dllName)] + private static extern void SetInitialResolution(IntPtr videoPlayerPtr, + int initialResolution); + + [DllImport(dllName)] + private static extern int GetPlayerState(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int GetWidth(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int GetHeight(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int PlayVideo(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int PauseVideo(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern bool IsVideoReady(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern bool IsVideoPaused(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern long GetDuration(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern long GetBufferedPosition(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern long GetCurrentPosition(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern void SetCurrentPosition(IntPtr videoPlayerPtr, + long pos); + + [DllImport(dllName)] + private static extern int GetBufferedPercentage(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int GetMaxVolume(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern int GetCurrentVolume(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern void SetCurrentVolume(IntPtr videoPlayerPtr, + int value); + + [DllImport(dllName)] + private static extern int GetStereoMode(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern bool HasProjectionData(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern bool SetVideoPlayerSupportClassname( + IntPtr videoPlayerPtr, + string classname); + + [DllImport(dllName)] + private static extern IntPtr GetRawPlayer(IntPtr videoPlayerPtr); + + [DllImport(dllName)] + private static extern void SetOnVideoEventCallback(IntPtr videoPlayerPtr, + OnVideoEventCallback callback, + IntPtr callback_arg); + + [DllImport(dllName)] + private static extern void SetOnExceptionCallback(IntPtr videoPlayerPtr, + OnExceptionCallback callback, + IntPtr callback_arg); +#else + private const string NOT_IMPLEMENTED_MSG = + "Not implemented on this platform"; + + private static IntPtr GetRenderEventFunc() + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return IntPtr.Zero; + } + + private static void SetExternalTextures(IntPtr videoPlayerPtr, + int[] texIds, + int size, + int w, + int h) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } + + private static IntPtr GetRenderableTextureId(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return IntPtr.Zero; + } + + private static int GetExternalSurfaceTextureId(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return 0; + } + + private static void GetVideoMatrix(IntPtr videoPlayerPtr, + float[] videoMatrix) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } + + private static long GetVideoTimestampNs(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + /// @cond + /// Make this public so we can test the loading of the DLL. + public static IntPtr CreateVideoPlayer() + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return IntPtr.Zero; + } + + /// @endcond + + /// @cond + /// Make this public so we can test the loading of the DLL. + public static void DestroyVideoPlayer(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } + + /// @endcond + + private static int GetVideoPlayerEventBase(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return 0; + } + + private static IntPtr InitVideoPlayer(IntPtr videoPlayerPtr, int videoType, + string videoURL, + string contentID, + string providerId, + bool useSecurePath, + bool useExisting) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return IntPtr.Zero; + } + + private static void SetInitialResolution(IntPtr videoPlayerPtr, + int initialResolution) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } + + private static int GetPlayerState(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + private static int GetWidth(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + private static int GetHeight(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + private static int PlayVideo(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return 0; + } + + private static int PauseVideo(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return 0; + } + + private static bool IsVideoReady(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return false; + } + + private static bool IsVideoPaused(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return true; + } + + private static long GetDuration(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + private static long GetBufferedPosition(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + private static long GetCurrentPosition(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + private static void SetCurrentPosition(IntPtr videoPlayerPtr, long pos) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } + + private static int GetBufferedPercentage(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return 0; + } + + private static int GetMaxVolume(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return 0; + } + + private static int GetCurrentVolume(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return 0; + } + + private static void SetCurrentVolume(IntPtr videoPlayerPtr, int value) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } + + private static int GetStereoMode(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return -1; + } + + private static bool HasProjectionData(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return false; + } + + private static bool SetVideoPlayerSupportClassname(IntPtr videoPlayerPtr, + string classname) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return false; + } + + private static IntPtr GetRawPlayer(IntPtr videoPlayerPtr) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + return IntPtr.Zero; + } + + private static void SetOnVideoEventCallback(IntPtr videoPlayerPtr, + OnVideoEventCallback callback, + IntPtr callback_arg) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } + + private static void SetOnExceptionCallback(IntPtr videoPlayerPtr, + OnExceptionCallback callback, + IntPtr callback_arg) + { + Debug.Log(NOT_IMPLEMENTED_MSG); + } +#endif // UNITY_ANDROID && !UNITY_EDITOR +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video/GvrVideoPlayerTexture.cs.meta b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video/GvrVideoPlayerTexture.cs.meta new file mode 100644 index 0000000..5c298b4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Scripts/Video/GvrVideoPlayerTexture.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 410d5a91205334dda9fd1bf3d325809a +timeCreated: 1469747977 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders.meta new file mode 100644 index 0000000..d289bfe --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ec97cbaf487a0514caf8ebaf70d65c60 +folderAsset: yes +timeCreated: 1477437270 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrAdditiveOverlay.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrAdditiveOverlay.shader new file mode 100644 index 0000000..d7c3e82 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrAdditiveOverlay.shader @@ -0,0 +1,45 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Particles/Additive Overlay" { + Properties { + _MainTex ("Particle Texture", 2D) = "white" {} + } + + Category { + Tags { + "Queue"="Overlay+100" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + } + + Blend SrcAlpha One + Cull Off Lighting Off ZWrite Off Fog { Color (0,0,0,0) } + + BindChannels { + Bind "Color", color + Bind "Vertex", vertex + Bind "TexCoord", texcoord + } + + SubShader { + Pass { + SetTexture [_MainTex] { + combine texture * primary + } + } + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrAdditiveOverlay.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrAdditiveOverlay.shader.meta new file mode 100644 index 0000000..3a2da7d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrAdditiveOverlay.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 66ce34a5829a64856be634609edd8912 +timeCreated: 1479169225 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrController.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrController.shader new file mode 100644 index 0000000..25bfa07 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrController.shader @@ -0,0 +1,167 @@ +// Copyright 2017 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Unlit/Controller" { + Properties { + _Color ("Color", COLOR) = (1, 1, 1, 1) + _MainTex ("Texture", 2D) = "white" {} + /// The center of the touchpad in UV space + /// Only change this value if you also change the UV layout of the mesh. + _GvrTouchpadCenterX ("GVR Touchpad Center UV.X", Float) = 0.15 + _GvrTouchpadCenterY ("GVR Touchpad Center UV.Y", Float) = 0.85 + /// The radius of the touchpad in UV space, based on the geometry + /// Only change this value if you also change the UV layout of the mesh. + _GVRTouchPadRadius("GVRTouchPadRadius", Range(0.0, 1.0)) = 0.139 + } + SubShader { + Tags { + "Queue" = "Overlay+100" + "IgnoreProjector" = "True" + "RenderType"="Transparent" + } + LOD 100 + + ZWrite On + Blend SrcAlpha OneMinusSrcAlpha + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + /// The size of the touch display. A value of 1 sets the radius to equal the touchpad radius + #define _GVR_DISPLAY_RADIUS .25 + + // How opaque is the battery indicator when illuminated + #define _GVR_BATTERY_ACTIVE_ALPHA 0.9 + + //How opaque is the battery indicator when not illuminated + #define _GVR_BATTERY_OFF_ALPHA 0.25 + + // How much do the app and system buttons depress when pushed + #define _BUTTON_PRESS_DEPTH 0.001 + + // Larger values tighten the feather + #define _TOUCH_FEATHER 8 + + /// The center of the touchpad in UV space + /// Only change this value if you also change the UV layout of the mesh + #define _GVR_TOUCHPAD_CENTER half2(_GvrTouchpadCenterX, _GvrTouchpadCenterY) + + struct appdata { + float4 vertex : POSITION; + float2 uv : TEXCOORD0; + float4 color : COLOR; + }; + + struct v2f { + half2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + half4 color : TEXCOORD1; + half2 touchVector : TEXCOORD2; + half alpha : TEXCOORD3; + }; + + sampler2D _MainTex; + half4 _GvrControllerAlpha; + float4 _MainTex_ST; + + half4 _Color; + half4 _GvrTouchPadColor; + half4 _GvrAppButtonColor; + half4 _GvrSystemButtonColor; + half4 _GvrBatteryColor; + half4 _GvrTouchInfo;//xy position, z touch duration, w battery info + float _GvrTouchpadCenterX; + float _GvrTouchpadCenterY; + float _GVRTouchPadRadius; + + v2f vert (appdata v) { + v2f o; + float4 vertex4; + vertex4.xyz = v.vertex; + vertex4.w = 1.0; + + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + o.color = half4(0,0,0,0); + o.touchVector = half2(0,0); + + + half batteryOrController = saturate( 10.0 * (v.color.a - 0.6) ); + half batteryMask = saturate( 10.0 * (1 - v.color.a) ); + half batteryLevelMask = saturate( 20.0 * (v.color.a - _GvrTouchInfo.w) ); + o.alpha = batteryOrController; + o.color.a = _GvrBatteryColor.a * batteryMask * (batteryLevelMask * _GVR_BATTERY_ACTIVE_ALPHA + (1-batteryLevelMask)*_GVR_BATTERY_OFF_ALPHA); + o.color.rgb = batteryMask * (batteryLevelMask * _GvrBatteryColor.rgb); + + // v.color.r = Touchpad, v.color.g = AppButton, v.color.b = SystemButton, v.color.a = BatteryIndicator + // Update touch vector info, but only if in the touchpad region. + + //This is the distance between the scaled center of the touchpad in UV space, and the input coords + half2 touchPosition = ((v.uv - _GVR_TOUCHPAD_CENTER)/_GVRTouchPadRadius - _GvrTouchInfo.xy); + + // the duration of a press + minimum radius + half scaledInput = _GvrTouchInfo.z + _GVR_DISPLAY_RADIUS; + + // Apply a cubic function, but make sure when press duration =1 , we cancel out the min radius + half bounced = 2 * (2 * scaledInput - scaledInput*scaledInput ) - + (1 - 2.0*_GVR_DISPLAY_RADIUS*_GVR_DISPLAY_RADIUS); + + o.touchVector = v.color.r * ((2-bounced)*( (1 - _GvrControllerAlpha.y)/_GVR_DISPLAY_RADIUS ) *touchPosition); + + // Apply colors based on masked values. + o.color.rgb += v.color.r * _GvrTouchInfo.z * _GvrTouchPadColor.rgb + + v.color.g * _GvrControllerAlpha.z * _GvrAppButtonColor.rgb + + v.color.b * _GvrControllerAlpha.w * _GvrSystemButtonColor.rgb; + + o.color.a += v.color.r * _GvrTouchInfo.z + + v.color.g * _GvrControllerAlpha.z + + v.color.b * _GvrControllerAlpha.w; + + // Animate position based on masked values. + vertex4.y -= v.color.g * _BUTTON_PRESS_DEPTH*_GvrControllerAlpha.z + + v.color.b * _BUTTON_PRESS_DEPTH*_GvrControllerAlpha.w; + + o.vertex = UnityObjectToClipPos(vertex4); + + return o; + } + + fixed4 frag (v2f i) : SV_Target { + + // Compute the length from a touchpoint, scale the value to control the edge sharpness. + half len = saturate(_TOUCH_FEATHER*(1-length(i.touchVector)) ); + i.color = i.color *len; + + half4 texcol = tex2D(_MainTex, i.uv); + half3 tintColor = (i.color.rgb + (1-i.color.a) * _Color.rgb); + + // Tint the controller based on luminance + half luma = Luminance(tintColor); + tintColor = texcol.rgb *(tintColor + .25*(1-luma)); + + /// Battery indicator. + texcol.a = i.alpha * texcol.a + (1-i.alpha)*(texcol.r)* i.color.a; + texcol.rgb = i.alpha * tintColor + (1-i.alpha)*i.color.rgb; + + texcol.a *= _GvrControllerAlpha.x; + return texcol; + } + ENDCG + } + } + FallBack "Unlit/Transparent" +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrController.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrController.shader.meta new file mode 100644 index 0000000..1f34ebf --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrController.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fdbce15836bf64163856f689fdd67b2c +timeCreated: 1497972574 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrControllerReticle.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrControllerReticle.shader new file mode 100644 index 0000000..9144a2b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrControllerReticle.shader @@ -0,0 +1,69 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Unlit/Controller Reticle" { + Properties { + _MainTex ("Texture", 2D) = "white" {} + } + + SubShader { + Tags { + "Queue"="Transparent" + "IgnoreProjector"="True" + "RenderType"="TransparentCutout" + } + + LOD 100 + + Cull Back + Lighting Off + Offset -150, -150 + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 vertex : SV_POSITION; + half2 texcoord : TEXCOORD0; + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata_t v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target { + fixed4 col = tex2D(_MainTex, i.texcoord); + clip(col.a - 0.5); + return col; + } + ENDCG + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrControllerReticle.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrControllerReticle.shader.meta new file mode 100644 index 0000000..87700a2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrControllerReticle.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 57e34a0b7bd8740c5922ce5840ba3ee8 +timeCreated: 1499380370 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrReticleShader.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrReticleShader.shader new file mode 100644 index 0000000..816990b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrReticleShader.shader @@ -0,0 +1,72 @@ +// Copyright 2015 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Reticle" { + Properties { + _Color ("Color", Color) = ( 1, 1, 1, 1 ) + _InnerDiameter ("InnerDiameter", Range(0, 10.0)) = 1.5 + _OuterDiameter ("OuterDiameter", Range(0.00872665, 10.0)) = 2.0 + _DistanceInMeters ("DistanceInMeters", Range(0.0, 100.0)) = 2.0 + } + + SubShader { + Tags { "Queue"="Overlay" "IgnoreProjector"="True" "RenderType"="Transparent" } + Pass { + Blend SrcAlpha OneMinusSrcAlpha + AlphaTest Off + Cull Back + Lighting Off + ZWrite Off + ZTest Always + + Fog { Mode Off } + CGPROGRAM + + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + uniform float4 _Color; + uniform float _InnerDiameter; + uniform float _OuterDiameter; + uniform float _DistanceInMeters; + + struct vertexInput { + float4 vertex : POSITION; + }; + + struct fragmentInput{ + float4 position : SV_POSITION; + }; + + fragmentInput vert(vertexInput i) { + float scale = lerp(_OuterDiameter, _InnerDiameter, i.vertex.z); + + float3 vert_out = float3(i.vertex.x * scale, i.vertex.y * scale, _DistanceInMeters); + + fragmentInput o; + o.position = UnityObjectToClipPos (vert_out); + return o; + } + + fixed4 frag(fragmentInput i) : SV_Target { + fixed4 ret = _Color; + return ret; + } + + ENDCG + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrReticleShader.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrReticleShader.shader.meta new file mode 100644 index 0000000..5fa7125 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrReticleShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a3b352fc2ba734605a3df75466e600f0 +timeCreated: 1446884502 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlay.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlay.shader new file mode 100644 index 0000000..c7782fc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlay.shader @@ -0,0 +1,117 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/UI/Overlay" { + Properties { + [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 + + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 + } + + SubShader { + Tags { + // Overlay+110 fixes depth sorting between UI and controller. + "Queue"="Overlay+110" + "IgnoreProjector"="True" + "RenderType"="Transparent" + "PreviewType"="Plane" + "CanUseSpriteAtlas"="True" + } + + Stencil { + Ref [_Stencil] + Comp [_StencilComp] + Pass [_StencilOp] + ReadMask [_StencilReadMask] + WriteMask [_StencilWriteMask] + } + + Cull Off + Lighting Off + ZWrite Off + ZTest [unity_GUIZTestMode] + Blend SrcAlpha OneMinusSrcAlpha + ColorMask [_ColorMask] + + Pass { + Name "Default" + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + + #pragma multi_compile __ UNITY_UI_ALPHACLIP + + struct appdata_t { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + half2 texcoord : TEXCOORD0; + float4 worldPosition : TEXCOORD1; + }; + + fixed4 _Color; + fixed4 _TextureSampleAdd; + float4 _ClipRect; + + v2f vert(appdata_t IN) { + v2f OUT; + OUT.worldPosition = IN.vertex; + OUT.vertex = UnityObjectToClipPos(OUT.worldPosition); + + OUT.texcoord = IN.texcoord; + + #ifdef UNITY_HALF_TEXEL_OFFSET + OUT.vertex.xy += (_ScreenParams.zw-1.0) * float2(-1,1) * OUT.vertex.w; + #endif // UNITY_HALF_TEXEL_OFFSET + + OUT.color = IN.color * _Color; + return OUT; + } + + sampler2D _MainTex; + + fixed4 frag(v2f IN) : SV_Target { + half4 color = + (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; + + color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect); + + #ifdef UNITY_UI_ALPHACLIP + clip (color.a - 0.001); + #endif // UNITY_UI_ALPHACLIP + + return color; + } + ENDCG + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlay.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlay.shader.meta new file mode 100644 index 0000000..f0edd32 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlay.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 36d276bd7b313441fbe34aadce7598ca +timeCreated: 1479426244 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlayFont.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlayFont.shader new file mode 100644 index 0000000..84e6ccb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlayFont.shader @@ -0,0 +1,32 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/UI/Overlay Font" { + Properties { + [PerRendererData] _MainTex ("Font Texture", 2D) = "white" {} + _Color ("Tint", Color) = (1,1,1,1) + + _StencilComp ("Stencil Comparison", Float) = 8 + _Stencil ("Stencil ID", Float) = 0 + _StencilOp ("Stencil Operation", Float) = 0 + _StencilWriteMask ("Stencil Write Mask", Float) = 255 + _StencilReadMask ("Stencil Read Mask", Float) = 255 + + _ColorMask ("Color Mask", Float) = 15 + + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0 + } + + FallBack "GoogleVR/UI/Overlay" +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlayFont.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlayFont.shader.meta new file mode 100644 index 0000000..f6bc95b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUIOverlayFont.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c259eeb26e96b4f1d8eeb8871bcfdac5 +timeCreated: 1479426244 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTextureOverlay.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTextureOverlay.shader new file mode 100644 index 0000000..4aac0a1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTextureOverlay.shader @@ -0,0 +1,64 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Unlit/Texture Overlay" { + Properties { + _MainTex ("Base (RGB)", 2D) = "white" {} + } + + SubShader { + Tags { "Queue"="Overlay+100" "RenderType"="Opaque" } + LOD 100 + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + #pragma multi_compile_fog + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 vertex : SV_POSITION; + half2 texcoord : TEXCOORD0; + UNITY_FOG_COORDS(1) + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata_t v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + UNITY_TRANSFER_FOG(o,o.vertex); + return o; + } + + fixed4 frag (v2f i) : SV_Target { + fixed4 col = tex2D(_MainTex, i.texcoord); + UNITY_APPLY_FOG(i.fogCoord, col); + UNITY_OPAQUE_ALPHA(col.a); + return col; + } + ENDCG + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTextureOverlay.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTextureOverlay.shader.meta new file mode 100644 index 0000000..65cfd0d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTextureOverlay.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: adb9b18ac2466473a850d8acd17654a1 +timeCreated: 1479438500 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlay.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlay.shader new file mode 100644 index 0000000..5294d45 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlay.shader @@ -0,0 +1,75 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Unlit/Transparent Overlay" { + Properties { + _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {} + } + + SubShader { + Tags { + "Queue"="Overlay+100" + "IgnoreProjector"="True" + "RenderType"="Transparent" + } + + LOD 100 + + Blend SrcAlpha OneMinusSrcAlpha + AlphaTest Off + Cull Back + Lighting Off + ZWrite Off + ZTest Always + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + #pragma multi_compile_fog + + #include "UnityCG.cginc" + + struct appdata_t { + float4 vertex : POSITION; + float2 texcoord : TEXCOORD0; + }; + + struct v2f { + float4 vertex : SV_POSITION; + half2 texcoord : TEXCOORD0; + UNITY_FOG_COORDS(1) + }; + + sampler2D _MainTex; + float4 _MainTex_ST; + + v2f vert (appdata_t v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + UNITY_TRANSFER_FOG(o,o.vertex); + return o; + } + + fixed4 frag (v2f i) : SV_Target { + fixed4 col = tex2D(_MainTex, i.texcoord); + UNITY_APPLY_FOG(i.fogCoord, col); + return col; + } + ENDCG + } + } +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlay.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlay.shader.meta new file mode 100644 index 0000000..483af0d --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlay.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1d94b17868379452aad02b04eb7b0e6e +timeCreated: 1478211415 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlayColor.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlayColor.shader new file mode 100644 index 0000000..3aa3fa6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlayColor.shader @@ -0,0 +1,68 @@ +// Copyright 2016 Google Inc. All rights reserved. +// +// 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. + +Shader "GoogleVR/Unlit/Transparent Overlay Color" { + Properties { + _Color ("Color", COLOR) = (1, 1, 1, 1) + _MainTex ("Texture", 2D) = "white" {} + } + SubShader { + Tags { + "Queue" = "Overlay+100" + "IgnoreProjector" = "True" + "RenderType"="Transparent" + } + LOD 100 + + ZWrite Off + Blend SrcAlpha OneMinusSrcAlpha + + Pass { + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + + #include "UnityCG.cginc" + + struct appdata { + float3 vertex : POSITION; + float2 uv : TEXCOORD0; + }; + + struct v2f { + float2 uv : TEXCOORD0; + float4 vertex : SV_POSITION; + }; + + sampler2D _MainTex; + float4 _Color; + float4 _MainTex_ST; + + v2f vert (appdata v) { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + o.uv = TRANSFORM_TEX(v.uv, _MainTex); + return o; + } + + fixed4 frag (v2f i) : SV_Target { + // sample the texture + fixed4 col = tex2D(_MainTex, i.uv) * _Color; + return col; + } + ENDCG + } + } + FallBack "Unlit/Transparent" +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlayColor.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlayColor.shader.meta new file mode 100644 index 0000000..e9e2478 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/GvrUnlitTransparentOverlayColor.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 06aa46b8e43675d43b204c3638e59767 +timeCreated: 1475685719 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video.meta new file mode 100644 index 0000000..fbf17cc --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 13fdc04e72eec47a0b731dd2eb1e055b +folderAsset: yes +timeCreated: 1472591370 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video/VideoUnlitShader.shader b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video/VideoUnlitShader.shader new file mode 100644 index 0000000..6d76385 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video/VideoUnlitShader.shader @@ -0,0 +1,99 @@ +// +// Copyright (C) 2017 Google Inc. All Rights Reserved. +// +// 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. +// + +// +// This shader renders from OES_external_image textures which require special +// OpenGLES extensions and a special texture sampler. +// +Shader "GoogleVR/Video Unlit Shader" { + Properties { + _Gamma ("Video gamma", Range(0.01,3.0)) = 1.0 + _MainTex ("Base (RGB)", 2D) = "white" {} + [KeywordEnum(None, TopBottom, LeftRight)] _StereoMode ("Stereo mode", Float) = 0 + [Toggle(FLIP_X)] _FlipX ("Flip X", Float) = 0 + } + + SubShader { + Pass { + Tags { "RenderType" = "Opaque" } + + Lighting Off + Cull Off + + GLSLPROGRAM + #pragma only_renderers gles gles3 + #extension GL_OES_EGL_image_external : require + #extension GL_OES_EGL_image_external_essl3 : enable + + #pragma multi_compile ___ _STEREOMODE_TOPBOTTOM _STEREOMODE_LEFTRIGHT + #pragma multi_compile ___ FLIP_X + + precision mediump int; + precision mediump float; + + #ifdef VERTEX + uniform mat4 video_matrix; + uniform int unity_StereoEyeIndex; + varying vec2 uv; + + void main() { + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + vec4 untransformedUV = gl_MultiTexCoord0; + #ifdef FLIP_X + untransformedUV.x = 1.0 - untransformedUV.x; + #endif // FLIP_X + #ifdef _STEREOMODE_TOPBOTTOM + untransformedUV.y *= 0.5; + if (unity_StereoEyeIndex == 0) { + untransformedUV.y += 0.5; + } + #endif // _STEREOMODE_TOPBOTTOM + #ifdef _STEREOMODE_LEFTRIGHT + untransformedUV.x *= 0.5; + if (unity_StereoEyeIndex != 0) { + untransformedUV.x += 0.5; + } + #endif // _STEREOMODE_LEFTRIGHT + + uv = (video_matrix * untransformedUV).xy; + } + #endif // VERTEX + + #ifdef FRAGMENT + vec3 gammaCorrect(vec3 v, float gamma) { + return pow(v, vec3(1.0/gamma)); + } + + // Apply the gamma correction. One possible optimization that could + // be applied is if _Gamma == 2.0, then use gammaCorrectApprox since sqrt will be faster. + // Also, if _Gamma == 1.0, then there is no effect, so this call could be skipped all together. + vec4 gammaCorrect(vec4 v, float gamma) { + return vec4(gammaCorrect(v.xyz, gamma), v.w); + } + + uniform float _Gamma; + uniform samplerExternalOES _MainTex; + varying vec2 uv; + + void main() { + gl_FragColor = gammaCorrect(texture2D(_MainTex, uv), _Gamma); + } + #endif // FRAGMENT + ENDGLSL + } + } + Fallback "Unlit/Texture" +} diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video/VideoUnlitShader.shader.meta b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video/VideoUnlitShader.shader.meta new file mode 100644 index 0000000..51b6a81 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Shaders/Video/VideoUnlitShader.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4b50a67a5a86e4093bf89c85cbc2c700 +timeCreated: 1496431929 +licenseType: Pro +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures.meta new file mode 100644 index 0000000..0f31660 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 09b96904f815a204ea830cf701fbd0f0 +folderAsset: yes +timeCreated: 1477437173 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/ControllerTooltips.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ControllerTooltips.png new file mode 100644 index 0000000..db60e8f Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ControllerTooltips.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/ControllerTooltips.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ControllerTooltips.png.meta new file mode 100644 index 0000000..a30ddeb --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ControllerTooltips.png.meta @@ -0,0 +1,92 @@ +fileFormatVersion: 2 +guid: 2ec36c18ef93e4d92ab61c818b298aac +timeCreated: 1510961416 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: 54 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 1 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_grab.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_grab.png new file mode 100644 index 0000000..1e79c70 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_grab.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_grab.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_grab.png.meta new file mode 100644 index 0000000..0a56dc3 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_grab.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 72867935ab9d7264ba8abb14b1f860b2 +timeCreated: 1475513528 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_move.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_move.png new file mode 100644 index 0000000..63f6646 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_move.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_move.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_move.png.meta new file mode 100644 index 0000000..55f4506 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_move.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 8e2b5a46da88df34988d7b068cf93af6 +timeCreated: 1475513528 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_pointer.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_pointer.png new file mode 100644 index 0000000..6ff5e00 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_pointer.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_pointer.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_pointer.png.meta new file mode 100644 index 0000000..1ca4c1b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_pointer.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 9be55a1c895d42a48a59cd0f2fedcb49 +timeCreated: 1475513529 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_text.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_text.png new file mode 100644 index 0000000..470bbf1 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_text.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_text.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_text.png.meta new file mode 100644 index 0000000..c487be6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_text.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 6da5cd89204da99468e34a61cc7ad99d +timeCreated: 1475513527 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_url.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_url.png new file mode 100644 index 0000000..4016717 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_url.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_url.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_url.png.meta new file mode 100644 index 0000000..56d3d43 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/cursor_url.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: 226cfc1dcfd9df449a7c4e33729e0922 +timeCreated: 1475513526 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller.png new file mode 100644 index 0000000..cfb6399 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller.png.meta new file mode 100644 index 0000000..6b6fa2b --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller.png.meta @@ -0,0 +1,64 @@ +fileFormatVersion: 2 +guid: 16bedee72525148848c1c905828661fb +timeCreated: 1497972623 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 5 + buildTargetSettings: + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: 48 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller_transparent.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller_transparent.png new file mode 100644 index 0000000..eadb483 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller_transparent.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller_transparent.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller_transparent.png.meta new file mode 100644 index 0000000..f6cbbd2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/ddcontroller_transparent.png.meta @@ -0,0 +1,64 @@ +fileFormatVersion: 2 +guid: bf90d5db643cc45a8a8ea09172b0d000 +timeCreated: 1497974034 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 5 + buildTargetSettings: + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: 54 + compressionQuality: 100 + allowsAlphaSplitting: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/dropShadow.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/dropShadow.png new file mode 100644 index 0000000..3399190 Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/dropShadow.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/dropShadow.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/dropShadow.png.meta new file mode 100644 index 0000000..35db3b1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/dropShadow.png.meta @@ -0,0 +1,63 @@ +fileFormatVersion: 2 +guid: 3776286ea5437463d95d7054b559df67 +timeCreated: 1475885178 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 178, y: 0, z: 178, w: 0} + spritePixelsToUnits: 500 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: + - - {x: -181, y: -181.5} + - {x: -181, y: 181.5} + - {x: 181, y: 181.5} + - {x: 181, y: -181.5} + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/laserTexture.png b/Unity_VR_Assignment/Assets/GoogleVR/Textures/laserTexture.png new file mode 100644 index 0000000..ad4b8be Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/laserTexture.png differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/laserTexture.png.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/laserTexture.png.meta new file mode 100644 index 0000000..d111267 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/laserTexture.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: e314ee0eb28e9ad4ba2950c17b95c25d +timeCreated: 1472081043 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/roundRect_52px.tif b/Unity_VR_Assignment/Assets/GoogleVR/Textures/roundRect_52px.tif new file mode 100644 index 0000000..1e2704f Binary files /dev/null and b/Unity_VR_Assignment/Assets/GoogleVR/Textures/roundRect_52px.tif differ diff --git a/Unity_VR_Assignment/Assets/GoogleVR/Textures/roundRect_52px.tif.meta b/Unity_VR_Assignment/Assets/GoogleVR/Textures/roundRect_52px.tif.meta new file mode 100644 index 0000000..c471778 --- /dev/null +++ b/Unity_VR_Assignment/Assets/GoogleVR/Textures/roundRect_52px.tif.meta @@ -0,0 +1,100 @@ +fileFormatVersion: 2 +guid: d60ac4d1232f24cfd9193c9724ed0185 +timeCreated: 1510768185 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 4 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 62, y: 62, z: 62, w: 62} + spritePixelsToUnits: 200 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Standalone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: iPhone + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: Android + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + - buildTarget: WebGL + maxTextureSize: 2048 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Materials.meta b/Unity_VR_Assignment/Assets/Materials.meta new file mode 100644 index 0000000..5b39279 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ae79b6958405b94287166a3792d0a3d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Materials/Cube.mat b/Unity_VR_Assignment/Assets/Materials/Cube.mat new file mode 100644 index 0000000..7a7b3ba --- /dev/null +++ b/Unity_VR_Assignment/Assets/Materials/Cube.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Cube + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + 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_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.8584906, g: 0.125534, b: 0.125534, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/Materials/Cube.mat.meta b/Unity_VR_Assignment/Assets/Materials/Cube.mat.meta new file mode 100644 index 0000000..19b7e91 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Materials/Cube.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08bd69cd1bfb20c45a36102a2ceb6656 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Materials/Grass.mat b/Unity_VR_Assignment/Assets/Materials/Grass.mat new file mode 100644 index 0000000..3d045f1 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Materials/Grass.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Grass + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + 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_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.27727836, g: 0.6320754, b: 0.28591207, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/Unity_VR_Assignment/Assets/Materials/Grass.mat.meta b/Unity_VR_Assignment/Assets/Materials/Grass.mat.meta new file mode 100644 index 0000000..3363190 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Materials/Grass.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f570a4f7e7122274ab0a76b687078793 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Materials/New Material.mat b/Unity_VR_Assignment/Assets/Materials/New Material.mat new file mode 100644 index 0000000..076241a --- /dev/null +++ b/Unity_VR_Assignment/Assets/Materials/New Material.mat @@ -0,0 +1,77 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: New Material + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + 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_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} diff --git a/Unity_VR_Assignment/Assets/Materials/New Material.mat.meta b/Unity_VR_Assignment/Assets/Materials/New Material.mat.meta new file mode 100644 index 0000000..7bdc87d --- /dev/null +++ b/Unity_VR_Assignment/Assets/Materials/New Material.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 688e4e920c25e4b42af7a23d2487a71e +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Scenes.meta b/Unity_VR_Assignment/Assets/Scenes.meta new file mode 100644 index 0000000..b7cc85f --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3fbda74fe0b722f4fbd179baeadeadce +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Scenes/SampleScene.unity b/Unity_VR_Assignment/Assets/Scenes/SampleScene.unity new file mode 100644 index 0000000..25c2d98 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scenes/SampleScene.unity @@ -0,0 +1,853 @@ +%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: 170076734} + m_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + 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: 10 + m_Resolution: 2 + m_BakeResolution: 10 + m_AtlasSize: 512 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 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: 256 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !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 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &153455878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 153455879} + m_Layer: 0 + m_Name: Player + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &153455879 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153455878} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.39, y: 1.6, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 534669905} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &170076733 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 170076735} + - component: {fileID: 170076734} + 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 &170076734 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170076733} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + 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_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 1 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &170076735 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 170076733} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 1.32, y: 5.53, z: -6.17} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1001 &178749916 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 534669905} + m_Modifications: + - target: {fileID: 171526, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_Name + value: GvrReticlePointer + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 60270cf52a5e94998a5a335989159738, type: 3} +--- !u!1 &533923652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 533923656} + - component: {fileID: 533923655} + - component: {fileID: 533923654} + - component: {fileID: 533923653} + - component: {fileID: 533923657} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!64 &533923653 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533923652} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Convex: 0 + m_CookingOptions: 14 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &533923654 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533923652} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: f570a4f7e7122274ab0a76b687078793, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 +--- !u!33 &533923655 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533923652} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &533923656 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533923652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -2} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!54 &533923657 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 533923652} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &534669902 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 534669905} + - component: {fileID: 534669904} + - component: {fileID: 534669903} + - component: {fileID: 534669906} + 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 &534669903 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_Enabled: 1 +--- !u!20 &534669904 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.27298942, g: 0.2735849, b: 0.1509879, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + 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 &534669905 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -3.43} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1095799826} + m_Father: {fileID: 153455879} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &534669906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 534669902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: eb5dd43baba2d4dc1bab789615567e3d, type: 3} + m_Name: + m_EditorClassIdentifier: + raycasterEventMask: + serializedVersion: 2 + m_Bits: 4294967295 + maxRaycastHits: 64 +--- !u!1001 &539656353 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 761381335, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_Name + value: GvrEventSystem + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 766346198, guid: 463285ecd6702471a909ba810832bf0e, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 463285ecd6702471a909ba810832bf0e, type: 3} +--- !u!1 &933867371 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 100072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, + type: 3} + m_PrefabInstance: {fileID: 1211932251} + m_PrefabAsset: {fileID: 0} +--- !u!54 &933867372 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933867371} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 112 + m_CollisionDetection: 0 +--- !u!114 &933867373 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933867371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 48b71b516b803ba48b92a2cf1874d1e0, type: 3} + m_Name: + m_EditorClassIdentifier: + mspeed: 0 +--- !u!65 &933867375 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 933867371} + 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!4 &1095799826 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 482300, guid: 60270cf52a5e94998a5a335989159738, + type: 3} + m_PrefabInstance: {fileID: 178749916} + m_PrefabAsset: {fileID: 0} +--- !u!1001 &1211932251 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 100072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_Name + value: MainPlayer + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalPosition.x + value: 3.58 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalPosition.y + value: 1.79 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalPosition.z + value: 1.58 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_RootOrder + value: 6 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalScale.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalScale.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 400072, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} + propertyPath: m_LocalScale.z + value: 0.5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6961c3660e23caf4ab2ad0d3f6c66a20, type: 3} +--- !u!1 &1360636748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1360636752} + - component: {fileID: 1360636751} + - component: {fileID: 1360636750} + - component: {fileID: 1360636749} + - component: {fileID: 1360636754} + - component: {fileID: 1360636753} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1360636749 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360636748} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1360636750 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360636748} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 08bd69cd1bfb20c45a36102a2ceb6656, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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 +--- !u!33 &1360636751 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360636748} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1360636752 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360636748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4, y: 0.83, z: 2.04} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1360636753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360636748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 17be9276a2c98bc4c8ce6ea76a648b30, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &1360636754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1360636748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Delegates: + - eventID: 0 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1360636753} + m_MethodName: RandomlyTeleport + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + delegates: [] +--- !u!1001 &1773211390 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 177758, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_Name + value: GvrEditorEmulator + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalPosition.z + value: -2 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498412, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 970dd4b9371394fb4890965f608d46fd, type: 3} diff --git a/Unity_VR_Assignment/Assets/Scenes/SampleScene.unity.meta b/Unity_VR_Assignment/Assets/Scenes/SampleScene.unity.meta new file mode 100644 index 0000000..5ef615b --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scenes/SampleScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7065658da1c13714fb7ae9492888a545 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Scripts.meta b/Unity_VR_Assignment/Assets/Scripts.meta new file mode 100644 index 0000000..eb1d625 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a47f5c0dfed34e4f8421cd48205b8ad +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Scripts/controller.cs b/Unity_VR_Assignment/Assets/Scripts/controller.cs new file mode 100644 index 0000000..2080505 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scripts/controller.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class controller : MonoBehaviour { + + public float mspeed; + + // Start is called before the first frame update + void Start() + { + mspeed = 7f; + } + + // Update is called once per frame + private void Update() + { + transform.Translate(-mspeed * Input.GetAxis("Horizontal") * Time.deltaTime , 0f , -mspeed * Input.GetAxis("Vertical") * Time.deltaTime); + } +} diff --git a/Unity_VR_Assignment/Assets/Scripts/controller.cs.meta b/Unity_VR_Assignment/Assets/Scripts/controller.cs.meta new file mode 100644 index 0000000..7998eb6 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scripts/controller.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 48b71b516b803ba48b92a2cf1874d1e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/Scripts/reticleTest.cs b/Unity_VR_Assignment/Assets/Scripts/reticleTest.cs new file mode 100644 index 0000000..ecdaba9 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scripts/reticleTest.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class reticleTest : MonoBehaviour +{ + public void RandomlyTeleport() + { + gameObject.transform.position = new Vector3(GetRandomCoordinate(), Random.Range(.5f, 2), GetRandomCoordinate()); + } + + private float GetRandomCoordinate() + { + var cordinate = Random.Range(-7f, 7f); + while(cordinate > -1.5f && cordinate < 1.5f) + { + cordinate = Random.Range(-5, 5); + } + return cordinate; + } +} diff --git a/Unity_VR_Assignment/Assets/Scripts/reticleTest.cs.meta b/Unity_VR_Assignment/Assets/Scripts/reticleTest.cs.meta new file mode 100644 index 0000000..2a4d886 --- /dev/null +++ b/Unity_VR_Assignment/Assets/Scripts/reticleTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 17be9276a2c98bc4c8ce6ea76a648b30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M.meta b/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M.meta new file mode 100644 index 0000000..a7016d4 --- /dev/null +++ b/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 679cb56e0a22c1f49bcf9573a4e20352 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M/model.obj b/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M/model.obj new file mode 100644 index 0000000..1b446ca --- /dev/null +++ b/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M/model.obj @@ -0,0 +1,17406 @@ +mtllib materials.mtl +v 0.04804343 1.154855 0.1152112 +v 0.02197796 1.196703 0.2550119 +v 0.07471654 1.382269 0.1967775 +v 0.09536889 1.337736 0.05690151 +v -0.131301 1.15342 0.07038283 +v -0.1299241 1.344138 0.02159953 +v -0.1444015 1.393804 0.1607526 +v -0.1358075 1.198717 0.2157415 +v -0.02345636 1.136642 0.02509236 +v -0.003863961 1.321238 -0.03104895 +v -0.05117437 1.225835 -0.009521663 +v -0.02421436 1.235265 0.02604103 +v -0.044678 1.332868 0.004705191 +v -0.070856 1.322126 -0.0310688 +v -0.1387134 1.270954 0.03408986 +v -0.1357274 1.338672 0.01636064 +v -0.110213 1.349085 0.05270678 +v -0.1154758 1.282336 0.07165223 +v -0.08828831 1.146669 0.03496695 +v -0.0623121 1.160018 0.0700025 +v -0.04417869 1.209127 0.05073863 +v -0.07124737 1.197456 0.01593167 +v -0.1315167 1.152763 0.07110274 +v -0.1392817 1.278648 0.0314638 +v -0.1041954 1.287902 0.05707127 +v -0.1192911 1.172548 0.1121655 +v -0.006442755 1.253693 -0.0314095 +v 0.001082271 1.263693 0.008948982 +v 0.006980687 1.330079 -0.01276577 +v -0.002446622 1.319993 -0.05381143 +v -0.07449517 1.271223 0.009556711 +v -0.07276985 1.337558 -0.01303005 +v -0.04516628 1.34576 0.02274305 +v -0.04993424 1.279476 0.045039 +v -0.06159431 1.111402 0.007668853 +v -0.03111377 1.119967 0.04050261 +v -0.03058526 1.162808 0.02558172 +v -0.05174154 1.157792 -0.008645177 +v -0.1311252 1.130398 0.06726176 +v -0.1265741 1.148332 0.05650395 +v -0.0970591 1.159235 0.08952588 +v -0.1006446 1.138962 0.1000955 +v -0.116484 1.116964 0.0377416 +v -0.08192757 1.122303 0.06702989 +v -0.08234465 1.17278 0.05831987 +v -0.1169012 1.167441 0.02903157 +v -0.1483853 1.124009 0.1005783 +v -0.1466698 1.173078 0.06312716 +v -0.1121134 1.178418 0.09241545 +v -0.1116962 1.127941 0.1011255 +v -0.01717371 1.103714 -0.0002967715 +v -0.02102944 1.124047 0.04557735 +v -0.02053601 1.156185 0.03386563 +v -0.01601601 1.14404 -0.002945006 +v -0.0569208 1.113819 0.01991779 +v -0.05671903 1.145924 0.00810802 +v -0.04957366 1.157434 0.0395202 +v -0.04977542 1.125329 0.05132997 +v -0.01774403 1.144886 0.003467858 +v -0.0271312 1.15838 0.03886181 +v -0.03131607 1.12669 0.05104959 +v -0.0180144 1.104687 0.007786632 +v -0.006761789 1.128321 0.06703377 +v -0.002269983 1.159976 0.0548647 +v 0.01594302 1.147369 0.02879506 +v 0.01145121 1.115715 0.04096419 +v 0.00462234 1.317147 -0.05295199 +v -0.01941359 1.331057 -0.02353936 +v -0.02727917 1.265836 0.0009096265 +v -0.003946662 1.252102 -0.02827007 +v 0.01175824 1.279131 0.05044329 +v 0.02086028 1.344115 0.02579188 +v 0.05462113 1.329433 0.007826388 +v 0.04163691 1.264518 0.03086621 +v 0.05779827 1.318852 -0.003819525 +v 0.02276537 1.334687 0.02072436 +v -0.01601192 1.241556 0.03566718 +v 0.01984894 1.226946 0.011563 +v 0.05694094 1.277174 0.1060635 +v 0.06995907 1.346201 0.08782232 +v 0.1046064 1.330734 0.06250888 +v 0.09056309 1.260501 0.08013958 +v 0.06421468 1.169927 0.0698272 +v 0.02129313 1.176155 0.08394861 +v 0.01721579 1.126026 0.09366459 +v 0.06013736 1.119797 0.07954311 +v 0.03221658 1.133043 0.136164 +v 0.03629392 1.183172 0.1264481 +v 0.0792155 1.176944 0.1123266 +v 0.06725395 1.128241 0.1434014 +v 0.01765984 1.158597 0.01098269 +v -0.01466313 1.164747 0.03468144 +v -0.02010462 1.122478 0.05023891 +v 0.02032349 1.112879 0.03142715 +v 0.02244002 1.143965 0.130706 +v 0.02322403 1.163824 0.1188485 +v 0.062805 1.151875 0.09958601 +v 0.06286806 1.134366 0.1118942 +v 0.02681729 1.196869 0.03509694 +v -0.01050079 1.209283 0.05819947 +v -0.004828542 1.154317 0.09371126 +v 0.03160277 1.14237 0.06900334 +v 0.03597993 1.173749 0.1479948 +v 0.05362374 1.286302 0.08807713 +v 0.09540597 1.273706 0.07982969 +v 0.05644006 1.155947 0.1189143 +v 0.01942292 1.267321 -0.06254613 +v 0.01242673 1.274371 -0.02981073 +v 0.0223884 1.366593 -0.03553545 +v 0.03295162 1.37474 -0.06495708 +v -0.01400056 1.267894 -0.06981272 +v -0.02550638 1.376845 -0.07741004 +v -0.03666267 1.367162 -0.04582208 +v -0.02099678 1.274944 -0.03707725 +v 0.0512287 1.271601 -0.01739383 +v 0.03477564 1.277138 0.004639447 +v 0.05371648 1.331446 -0.004970253 +v 0.07047716 1.32588 -0.02654338 +v -0.06302473 1.274842 -0.03605705 +v -0.07588801 1.331448 -0.04160732 +v -0.06914312 1.33515 -0.01565206 +v -0.05581737 1.278762 -0.009078503 +v -0.0002851188 1.269864 -0.04163933 +v -0.005872369 1.34858 -0.01181805 +v -0.002081633 1.342832 -0.05732483 +v -0.09856778 1.288596 -0.02257389 +v -0.08289674 1.295771 0.001163423 +v -0.08073542 1.340005 -0.002244711 +v -0.09565347 1.330754 -0.03385103 +v -0.148823 1.274601 -0.004436672 +v -0.14992 1.343877 -0.01436859 +v -0.1759485 1.365755 -0.004654944 +v -0.163202 1.268294 0.01702785 +v -0.1631263 1.171086 0.04205739 +v -0.1269666 1.279124 0.03317702 +v -0.1292473 1.351157 0.02348107 +v -0.1391256 1.373913 0.02776837 +v -0.1274196 1.171871 0.06686532 +v -0.2174155 1.294348 0.08071899 +v -0.2112068 1.181787 0.1036361 +v -0.1705342 1.449293 0.0324828 +v -0.2145263 1.442152 0.006953001 +v -0.1623929 1.178591 0.1155488 +v -0.1626887 1.273064 0.1030004 +v -0.1578276 1.380912 0.08595997 +v -0.2349739 1.364465 0.08006096 +v -0.2998116 1.544121 0.07874185 +v -0.1793713 1.569347 0.07173008 +v -0.2381551 1.53539 0.005607903 +v -0.1716438 1.553733 0.01272571 +v -0.03713202 1.351049 -0.05704284 +v -0.02485269 1.362191 -0.001432538 +v -0.02056581 1.378165 -0.004408658 +v -0.03318682 1.369174 -0.06033087 +v -0.1731305 1.384821 -0.01473349 +v -0.1693603 1.404342 -0.01987821 +v -0.1453576 1.410206 0.03262824 +v -0.1485752 1.39133 0.0374403 +v -0.06042847 1.339338 -0.04648262 +v -0.04284096 1.347266 0.007862747 +v -0.1392765 1.35373 -0.02022266 +v -0.1029681 1.336774 -0.0321582 +v -0.08181554 1.342762 0.02136159 +v -0.124328 1.358757 0.03522861 +v -0.02691662 1.547235 0.1688523 +v 0.05302009 1.528402 0.1540771 +v 0.04718003 1.486424 0.1759892 +v -0.03275672 1.505258 0.1907644 +v 0.08134511 1.496773 0.1194069 +v 0.1055826 1.452662 0.1268758 +v 0.104593 1.460459 0.04796624 +v 0.1268023 1.413018 0.05658388 +v 0.07518581 1.487065 -0.007732332 +v 0.1051531 1.378114 -0.01605183 +v 0.01933327 1.512943 -0.0366466 +v 0.02190137 1.404161 -0.06640977 +v 0.04643598 1.357303 -0.07156855 +v -0.03620273 1.511797 -0.05289191 +v -0.01565659 1.402912 -0.07902575 +v -0.09290633 1.478184 -0.06104845 +v -0.1135526 1.374996 -0.08031565 +v -0.03361586 1.356162 -0.09509081 +v -0.1476107 1.449179 -0.02929223 +v -0.1719552 1.408758 -0.0312022 +v -0.1707869 1.486509 0.04164565 +v -0.1931748 1.448402 0.03908968 +v -0.1656855 1.525283 0.08981329 +v -0.1715256 1.483306 0.1117254 +v -0.1069684 1.546094 0.14533 +v -0.1128084 1.504116 0.1672422 +v -0.0957782 1.506382 0.3187508 +v -0.07064471 1.363343 0.2631243 +v -0.107604 1.505323 0.3140318 +v -0.058925 1.386558 0.1717469 +v -0.02019104 1.399378 0.08152455 +v -0.03308815 1.397905 0.0766536 +v 0.01064214 1.451162 -0.01627195 +v -0.003631085 1.45048 -0.01321888 +v 0.003704578 1.54945 -0.03521049 +v -0.01117975 1.547672 -0.04086119 +v -0.005458951 1.647771 -0.02582288 +v -0.02097848 1.645962 -0.03179473 +v -0.02672297 1.727149 0.02972889 +v -0.04238284 1.725409 0.02360409 +v -0.05114135 1.758238 0.1186218 +v -0.06645504 1.757202 0.1125485 +v -0.0810461 1.754776 0.2114033 +v -0.09549436 1.75338 0.2055835 +v -0.09954938 1.695621 0.2888464 +v -0.1129703 1.694408 0.2834037 +v -0.1049417 1.604703 0.3281383 +v -0.1174029 1.603613 0.3230985 +v -0.1402815 1.362087 0.2421947 +v -0.1691646 1.4874 0.2899097 +v -0.1268901 1.40635 0.1467901 +v -0.1109693 1.414122 0.06842214 +v -0.07863924 1.433913 -0.04180002 +v -0.1091973 1.613219 -0.02399606 +v -0.1007544 1.533558 -0.03018117 +v -0.1244694 1.678321 0.02054459 +v -0.1424787 1.711421 0.09150541 +v -0.1583994 1.703649 0.1698734 +v -0.1679655 1.657088 0.2346494 +v -0.1686144 1.584213 0.2684768 +v -0.1802331 1.360052 0.2241663 +v -0.2037816 1.46678 0.2530802 +v -0.1691575 1.339291 0.134543 +v -0.1834808 1.399107 0.07104588 +v -0.1673823 1.427153 -0.01813704 +v -0.1778595 1.496668 -0.008054078 +v -0.1827442 1.561269 -0.001866519 +v -0.1914743 1.613805 0.03553873 +v -0.2017108 1.640199 0.09413815 +v -0.2107105 1.63338 0.1582311 +v -0.216062 1.595174 0.2106434 +v -0.2163318 1.535818 0.237331 +v -0.2114185 1.377283 0.1847317 +v -0.2282489 1.42332 0.2323946 +v -0.2176916 1.372057 0.1329733 +v -0.2118048 1.378652 0.08100528 +v -0.1824306 1.385202 0.007997394 +v -0.2114712 1.458791 0.01816905 +v -0.2171141 1.510861 0.02413779 +v -0.2249443 1.552659 0.05529118 +v -0.2328638 1.572983 0.103281 +v -0.2387507 1.566388 0.1552493 +v -0.2410273 1.534641 0.1972707 +v -0.2390841 1.486249 0.2180855 +v -0.2352469 1.378278 0.1816706 +v -0.2444313 1.415187 0.2100287 +v -0.2263154 1.360906 0.1384348 +v -0.22003 1.367727 0.09190732 +v -0.2180748 1.396912 0.0545544 +v -0.2209736 1.440642 0.03638506 +v -0.22795 1.4872 0.04226768 +v -0.2371343 1.524109 0.0706262 +v -0.2425891 1.537003 0.1213881 +v -0.2523513 1.53466 0.1603892 +v -0.2543063 1.505475 0.1977422 +v -0.2514077 1.461744 0.2159114 +v -0.09808502 1.503664 0.313666 +v -0.09369037 1.360704 0.2531735 +v -0.1106361 1.503956 0.3112946 +v -0.02740577 1.396313 0.07508707 +v -0.04096472 1.396954 0.07226318 +v -0.05594292 1.384806 0.1693859 +v -0.00171718 1.448101 -0.01936877 +v -0.01848516 1.456294 -0.003976643 +v 0.008416981 1.546608 -0.03826189 +v -0.007251292 1.547426 -0.04149747 +v 0.006104022 1.645125 -0.02694023 +v -0.01027319 1.645931 -0.03024578 +v -0.01016775 1.724689 0.03001428 +v -0.02674127 1.725416 0.02676386 +v -0.03751165 1.758116 0.1202216 +v -0.05370083 1.758748 0.1170629 +v -0.06457511 1.752476 0.2116387 +v -0.07994458 1.752934 0.2087857 +v -0.08813268 1.693252 0.2876433 +v -0.1024242 1.693594 0.2850255 +v -0.100398 1.60218 0.3249878 +v -0.113658 1.602462 0.3225464 +v -0.03226539 1.489746 0.3265845 +v -0.02374694 1.363833 0.2728466 +v 0.01352826 1.408919 0.1844248 +v 0.04166254 1.417135 0.1096159 +v 0.07069823 1.441863 0.005696237 +v 0.07896191 1.537496 0.01898575 +v 0.07813284 1.61739 0.02744859 +v 0.06334746 1.682473 0.07218212 +v 0.03856808 1.715305 0.1411996 +v 0.01043376 1.707088 0.2160085 +v -0.01351675 1.660026 0.2765632 +v -0.0268656 1.586727 0.3066388 +v 0.01782593 1.471806 0.3143803 +v 0.01968333 1.364421 0.2790726 +v 0.05958709 1.344634 0.1978189 +v 0.1022047 1.406281 0.1509331 +v 0.1248263 1.399988 0.07078147 +v 0.1341921 1.50473 0.07958001 +v 0.1312393 1.569386 0.08638042 +v 0.1154971 1.621673 0.1217873 +v 0.09118429 1.647581 0.1763127 +v 0.06481478 1.640167 0.2353474 +v 0.04345447 1.601419 0.2830727 +v 0.03282738 1.541718 0.3067005 +v 0.05204341 1.430198 0.3107318 +v 0.06608227 1.384111 0.2622206 +v 0.09940565 1.380165 0.2219767 +v 0.1219127 1.387321 0.1748487 +v 0.1406696 1.419617 0.1376465 +v 0.1506504 1.468398 0.1203385 +v 0.1491809 1.520595 0.1275625 +v 0.1366546 1.562221 0.1573827 +v 0.1164283 1.582122 0.2018085 +v 0.09392115 1.574966 0.2489367 +v 0.07516402 1.54267 0.2861388 +v 0.0651834 1.493888 0.3034468 +v 0.07813147 1.423406 0.3006561 +v 0.08773538 1.386532 0.272391 +v 0.1043903 1.369436 0.2313882 +v 0.1236331 1.376698 0.1886354 +v 0.1403079 1.406374 0.1555875 +v 0.1499467 1.450511 0.1410998 +v 0.1499667 1.497283 0.1490543 +v 0.1403625 1.534156 0.1773199 +v 0.123708 1.551253 0.2183221 +v 0.104465 1.54399 0.2610752 +v 0.08779004 1.514314 0.2941231 +v 0.07815149 1.470177 0.3086109 +v 0.03455582 1.368452 -0.04624522 +v -0.006248295 1.376581 -0.007440031 +v -0.003833741 1.361073 -0.002427459 +v 0.03659204 1.350822 -0.04112631 +v 0.07540974 1.393925 0.09567398 +v 0.07476717 1.412322 0.08968812 +v 0.1229332 1.407653 0.05976903 +v 0.123869 1.388642 0.06633604 +v 0.006339282 1.347061 0.01513344 +v 0.05031899 1.340146 -0.01971853 +v 0.077454 1.339109 0.01500398 +v 0.100153 1.356983 0.04408664 +v 0.05782795 1.361146 0.0813157 +v 0.03106749 1.343998 0.04728836 +v -0.06401441 1.612913 0.1503701 +v -0.09308407 1.594599 0.08761227 +v -0.08592924 1.565548 0.09277576 +v -0.05685958 1.583863 0.1555336 +v -0.1498412 1.573815 0.04932773 +v -0.1426863 1.544765 0.05449122 +v -0.2190776 1.556132 0.045775 +v -0.2119227 1.527081 0.05093849 +v -0.2998776 1.545599 0.08011061 +v -0.2911083 1.516984 0.08521396 +v -0.3224083 1.546917 0.137111 +v -0.3152535 1.517867 0.1422746 +v -0.3288152 1.557855 0.2075264 +v -0.3216604 1.528805 0.2126899 +v -0.2997455 1.576169 0.2702842 +v -0.2925907 1.547119 0.2754479 +v -0.2429884 1.596953 0.3085688 +v -0.2358337 1.567902 0.3137323 +v -0.1180086 1.621362 0.3860093 +v -0.1150815 1.594654 0.3955156 +v -0.1105881 1.624482 0.2799906 +v -0.1034333 1.595431 0.2851542 +v -0.07042137 1.623851 0.2207854 +v -0.06326649 1.594801 0.225949 +v 0.0004146993 1.356887 0.1001731 +v 0.03910649 1.381264 0.1837038 +v -0.075129 1.329225 0.04921651 +v -0.1672827 1.305688 0.04448771 +v -0.2558567 1.316372 0.1064121 +v -0.3342669 1.368876 0.1405892 +v -0.3479011 1.382595 0.2409752 +v -0.2746518 1.332358 0.3433099 +v -0.209137 1.355808 0.3972126 +v -0.1181388 1.381171 0.442237 +v -0.02288315 1.396662 0.356229 +v 0.03057888 1.395822 0.2774269 +v -0.009273797 1.22807 0.1699592 +v 0.0155459 1.239158 0.225521 +v -0.05899024 1.218256 0.1344905 +v -0.1202817 1.212344 0.1286185 +v -0.1767255 1.21192 0.1539168 +v -0.2921357 1.277629 0.1785622 +v -0.2131971 1.217097 0.2036067 +v -0.3057493 1.286781 0.2584822 +v -0.1480421 1.241243 0.358123 +v -0.1951049 1.237575 0.3199356 +v -0.09282812 1.237529 0.3796194 +v -0.02765331 1.253725 0.3359782 +v 0.008818537 1.248548 0.2862882 +v -0.2199245 1.226487 0.2643738 +v 0.1945059 1.542554 0.2276794 +v 0.1693889 1.548326 0.1727672 +v 0.1602195 1.519392 0.1735083 +v 0.1847188 1.513835 0.2287675 +v 0.1268046 1.561115 0.1086146 +v 0.1170175 1.532396 0.1097025 +v 0.06104288 1.582846 0.09066457 +v 0.05125579 1.554126 0.09175247 +v -0.004008919 1.605736 0.1097253 +v -0.013796 1.577017 0.1108131 +v -0.05092016 1.623653 0.1606892 +v -0.0607073 1.594934 0.1617771 +v -0.06712112 1.631796 0.2299008 +v -0.07690823 1.603076 0.2309887 +v -0.1071885 1.61877 0.2786461 +v -0.1167955 1.590154 0.2819055 +v -0.1196838 1.620982 0.3802118 +v -0.1206743 1.595186 0.3951392 +v 0.06634194 1.591505 0.3669156 +v 0.05655482 1.562785 0.3680035 +v 0.1313937 1.568614 0.347855 +v 0.1216066 1.539895 0.3489429 +v 0.178305 1.550697 0.2968909 +v 0.1685179 1.521977 0.2979789 +v 0.1503462 1.317274 0.2116666 +v 0.1926995 1.374347 0.2574665 +v 0.06658232 1.314471 0.07785219 +v -0.02094662 1.343394 0.05396068 +v -0.1075307 1.373861 0.07933044 +v -0.1699694 1.397709 0.1471635 +v -0.1915331 1.408547 0.2392841 +v -0.1664431 1.403471 0.3310087 +v -0.1195786 1.382707 0.4450505 +v -0.01437363 1.348361 0.4301935 +v 0.07269034 1.324452 0.3962814 +v 0.1679297 1.391323 0.3478376 +v 0.04193407 1.214009 0.1768323 +v 0.05855033 1.212343 0.2363905 +v 0.1408284 1.275531 0.2819486 +v -0.001134962 1.223596 0.1334822 +v -0.05911657 1.238533 0.1179557 +v -0.1164745 1.254821 0.1344137 +v -0.1578398 1.268094 0.1784458 +v -0.1721286 1.274795 0.2382537 +v -0.1555125 1.273129 0.2978123 +v -0.09117606 1.238054 0.3790359 +v -0.03686139 1.234698 0.3672267 +v 0.002896011 1.232317 0.3402308 +v 0.1256238 1.284762 0.358443 +v 0.04426131 1.219044 0.2961985 +v 0.07374862 1.329818 -0.001700938 +v 0.04819426 1.339458 0.02029866 +v 0.04786053 1.295154 0.02344799 +v 0.0688014 1.287815 0.009444535 +v 0.09938186 1.176732 0.09990489 +v 0.1095111 1.265877 0.07634169 +v 0.1259365 1.366054 0.0630244 +v 0.1143776 1.342067 0.04399323 +v 0.107689 1.272718 0.05070692 +v 0.07016057 1.277253 0.07270706 +v 0.07779491 1.349332 0.06683791 +v 0.08453724 1.371832 0.07589549 +v 0.05184656 1.170632 0.1046353 +v 0.1077384 1.179331 0.178273 +v 0.1208542 1.298686 0.1638435 +v 0.1596884 1.444155 0.09835714 +v 0.1104163 1.446503 0.09700227 +v 0.07213411 1.377787 0.1358598 +v 0.06665224 1.269676 0.1509271 +v 0.06052569 1.175683 0.1641125 +v 0.1001475 1.565898 0.1378772 +v 0.1968948 1.539267 0.20982 +v 0.1364349 1.371769 0.1820154 +v 0.1917379 1.528551 0.1293146 +v 0.1223902 1.551118 0.08245307 +v 0.01849028 1.404628 -0.1136481 +v 0.007612914 1.412542 -0.07858044 +v 0.01179346 1.514621 -0.09628171 +v 0.02100906 1.505615 -0.132261 +v -0.2694801 1.63104 -0.1091358 +v -0.278285 1.683188 -0.1196768 +v -0.2763974 1.693031 -0.08546728 +v -0.2667471 1.641852 -0.07527798 +v -0.06563574 1.561146 -0.09339947 +v -0.06854641 1.553463 -0.1280822 +v -0.164241 1.612179 -0.1250582 +v -0.1609809 1.620214 -0.09064096 +v -0.05231264 1.676504 -0.1067511 +v -0.007305533 1.647047 -0.1115024 +v -0.05748239 1.670254 -0.1413049 +v -0.009945154 1.640295 -0.1464 +v 0.02129048 1.50768 -0.1322471 +v 0.01033214 1.51438 -0.09782594 +v 0.008637577 1.411257 -0.0792318 +v 0.01744437 1.403106 -0.1148224 +v 0.2229721 1.642001 0.07596779 +v 0.234933 1.702279 0.07330757 +v 0.2557135 1.693945 0.04556888 +v 0.2428281 1.632541 0.04791468 +v 0.09147033 1.558118 -0.07878888 +v 0.06968278 1.564244 -0.05125397 +v 0.1668744 1.619653 -0.02273631 +v 0.1449226 1.62613 0.004391313 +v 0.02659944 1.64894 -0.09685385 +v 0.06015107 1.679581 -0.06767535 +v 0.08368477 1.674953 -0.09383804 +v 0.04823199 1.643746 -0.1247005 +v -0.09295934 1.334194 0.3221905 +v -0.04021204 1.335258 0.3134339 +v -0.02762866 1.024334 0.3514488 +v -0.08037597 1.02327 0.3602054 +v 0.001190633 1.332806 0.2796716 +v 0.01377398 1.021881 0.3176865 +v 0.0201548 1.327494 0.22995 +v 0.03273815 1.01657 0.2679649 +v 0.01159906 1.320746 0.1775921 +v 0.02418241 1.009822 0.215607 +v -0.02218407 1.314371 0.136627 +v -0.009600729 1.003446 0.1746419 +v -0.07214248 1.310075 0.1180314 +v -0.05955911 0.9991508 0.1560463 +v -0.1248898 1.309011 0.126788 +v -0.1123064 0.9980867 0.1648028 +v -0.1662925 1.311464 0.1605503 +v -0.1537091 1.000539 0.1985652 +v -0.1852566 1.316775 0.2102718 +v -0.1726733 1.005851 0.2482868 +v -0.1767009 1.323523 0.2626298 +v -0.1641175 1.012599 0.3006447 +v -0.1429177 1.329899 0.3035949 +v -0.1303343 1.018974 0.3416098 +v -0.4157628 0.3053946 -0.4334912 +v -0.4225307 0.7029178 -0.4636348 +v -0.5615599 0.684975 -0.3946258 +v -0.5665412 0.2981509 -0.3744739 +v 0.5255233 1.048556 -0.02633435 +v 0.345634 1.054551 0.7952542 +v -0.6553361 1.038915 0.5762028 +v -0.4754469 1.032921 -0.2453857 +v 0.5813249 0.3312922 -0.2413217 +v 0.5784394 0.7185528 -0.2445835 +v 0.3657402 0.3128061 0.8044643 +v -0.637905 0.3079447 0.597481 +v -0.6007456 0.9690459 -0.2245672 +v -0.7464558 0.9739015 0.4409193 +v -0.74209 0.2983866 0.4591159 +v 0.5030605 0.2915051 0.7272798 +v 0.4413648 0.3055505 0.6664338 +v 0.3190124 0.3245295 0.7352049 +v 0.4951146 0.9932945 0.7126237 +v 0.6408249 0.9884391 0.0471369 +v 0.682429 0.6977664 -0.1235641 +v 0.6776842 0.306479 -0.1198066 +v 0.5969546 0.3188921 -0.08832043 +v 0.5110984 0.3410006 -0.1965904 +v -0.3754859 0.3136585 -0.3665813 +v -0.510947 0.3102992 -0.3144051 +v -0.6680641 0.311682 0.4274998 +v -0.5752352 0.3201982 0.5507827 +v 0.404014 0.1930193 0.600985 +v 0.2956329 0.2076297 0.6639549 +v 0.5319632 0.2083356 -0.07354552 +v 0.453595 0.2265388 -0.1687989 +v -0.3453757 0.2064214 -0.3208095 +v -0.4596132 0.193634 -0.2711507 +v -0.5875621 0.1783175 0.4033797 +v -0.5033377 0.1875122 0.5119445 +v 0.5164461 0.568989 -0.3418032 +v 0.2838674 0.6499861 0.7557232 +v 0.2930515 1.097599 0.7177095 +v 0.459269 1.085627 -0.06326252 +v 0.5096731 0.7814789 -0.3094587 +v -0.3547715 0.5340519 -0.5242766 +v -0.3566802 0.7544525 -0.5150414 +v -0.4122941 1.067282 -0.2464055 +v -0.5812143 1.08709 0.5472714 +v -0.6090472 0.5163089 0.5764682 +v -0.5212339 0.5049348 0.1939074 +v 0.4507084 0.50392 -0.3354498 +v 0.155638 0.5372615 0.7504637 +v 0.2757911 0.7741761 -0.3648119 +v 0.2772971 0.69513 -0.3625352 +v 0.2798432 0.5386174 -0.3715788 +v 0.2803968 0.4992534 -0.3742023 +v -0.2834335 0.4838296 -0.5030366 +v -0.09908393 0.4888808 -0.4610898 +v 0.4436755 0.797369 -0.3130091 +v 0.2724682 0.7899524 -0.3598018 +v -0.1059432 0.7622817 -0.4556991 +v -0.09966186 0.5305802 -0.4596779 +v -0.1021474 0.6859365 -0.4546786 +v -0.09232777 0.531294 -0.4922233 +v -0.0948019 0.6866554 -0.4875131 +v 0.3975937 1.053478 -0.09383637 +v -0.3456057 1.042354 -0.2679906 +v -0.2959875 0.7768606 -0.4913464 +v -0.1044479 0.7818488 -0.4540471 +v 0.4339269 0.7763379 -0.262265 +v 0.2526036 0.7663509 -0.2985184 +v 0.3943933 1.030497 -0.07234269 +v -0.3496781 1.017315 -0.2452731 +v -0.3021108 0.7602191 -0.4601881 +v -0.1251749 0.7601131 -0.3974599 +v -0.1138718 0.6838963 -0.4245263 +v 0.2679231 0.6972684 -0.3368064 +v 0.287264 0.5393587 -0.4046453 +v 0.2847293 0.6958765 -0.3958909 +v 0.2827756 0.5543541 -0.428753 +v 0.2712333 0.5511163 -0.3812442 +v 0.2655188 0.6889468 -0.3732395 +v 0.2770611 0.6921844 -0.4207483 +v 0.1486049 0.5506989 -0.4615989 +v 0.1428904 0.6885294 -0.4535942 +v 0.1313481 0.6852916 -0.4060853 +v 0.1370626 0.5474612 -0.41409 +v 0.2618353 0.6740032 -0.4292558 +v 0.2652072 0.573444 -0.4341296 +v 0.1633011 0.6717079 -0.4500659 +v 0.166673 0.5711486 -0.4549397 +v 0.2298796 0.6466507 -0.4010039 +v 0.2320935 0.5932524 -0.4041051 +v 0.1778991 0.6452346 -0.413729 +v 0.180113 0.5918365 -0.4168302 +v 0.2325897 0.6453681 -0.4231924 +v 0.2345822 0.5973097 -0.4259835 +v 0.1858073 0.6440936 -0.4346451 +v 0.1877998 0.5960352 -0.4374361 +v 0.06078139 0.5466397 -0.4828128 +v 0.04823971 0.5444441 -0.4354981 +v 0.0444079 0.6824667 -0.4301091 +v 0.05694959 0.6846622 -0.4774238 +v -0.07274127 0.5443189 -0.5183133 +v -0.0765731 0.6823416 -0.5129243 +v -0.08911476 0.680146 -0.4656096 +v -0.08528298 0.5421233 -0.4709986 +v 0.04163027 0.6665493 -0.485909 +v 0.04360947 0.5658791 -0.488891 +v -0.05648887 0.6652948 -0.5086769 +v -0.05450967 0.5646245 -0.5116589 +v 0.008711338 0.640186 -0.4578231 +v 0.01019585 0.5867132 -0.4599109 +v -0.04301807 0.6392868 -0.4715767 +v -0.04153356 0.5858141 -0.4736645 +v 0.01184767 0.6384561 -0.4799249 +v 0.01318371 0.5903306 -0.4818039 +v -0.0347088 0.6376468 -0.4923032 +v -0.03337276 0.5895215 -0.4941822 +v 0.1867908 0.4901854 -0.4155942 +v 0.1753946 0.489127 -0.3656882 +v 0.1680754 0.6514027 -0.3639181 +v 0.1794717 0.6524611 -0.4138242 +v 0.01242307 0.4832618 -0.454714 +v 0.007312864 0.6456097 -0.4520476 +v -0.003042728 0.6444604 -0.4019173 +v 0.002067506 0.4821125 -0.4045837 +v 0.1722486 0.4725248 -0.4210636 +v 0.1608568 0.4731704 -0.3711278 +v 0.1558958 0.6054552 -0.4238482 +v 0.1560316 0.5065459 -0.4243006 +v 0.1357007 0.461248 -0.3755643 +v 0.03163406 0.4580656 -0.3989648 +v 0.005580932 0.4689329 -0.4019513 +v 0.1491416 0.4621056 -0.4250158 +v 0.04964283 0.4590629 -0.4473892 +v 0.02541885 0.4667916 -0.4499229 +v 0.03564894 0.6006886 -0.4484065 +v 0.03860381 0.5048156 -0.449549 +v 0.04825494 0.4907773 -0.4472547 +v 0.06235662 0.4858809 -0.4450545 +v 0.1341671 0.4884831 -0.4290205 +v 0.1479014 0.4953569 -0.4268061 +v 0.1446421 0.9502852 0.123109 +v 0.06173885 0.9537187 0.4825763 +v 0.05916119 1.098483 0.480599 +v 0.1420645 1.095049 0.1211318 +v -0.2147815 0.9427543 0.04028779 +v -0.2173592 1.087518 0.03831047 +v -0.3002624 1.090952 0.3977777 +v -0.2976848 0.9461877 0.3997551 +v 0.06336936 0.9461145 0.04433566 +v -0.1047785 0.9431093 0.005697429 +v -0.105906 1.087911 0.005265355 +v 0.06075957 1.090889 0.04356295 +v -0.1775986 0.6459372 -0.5268418 +v -0.1506565 0.6469468 -0.5209374 +v -0.1731157 0.6385967 -0.4170261 +v -0.2000578 0.6375871 -0.4229305 +v -0.1266009 0.6340728 -0.5167726 +v -0.1490601 0.6257226 -0.4128613 +v -0.1118775 0.6107647 -0.5154632 +v -0.1343367 0.6024146 -0.411552 +v -0.1104313 0.583268 -0.5173603 +v -0.1328906 0.5749179 -0.413449 +v -0.1226501 0.5589503 -0.5219553 +v -0.1451093 0.5506003 -0.4180441 +v -0.1452596 0.5443277 -0.5280172 +v -0.1677188 0.5359776 -0.4241059 +v -0.1722017 0.5433182 -0.5339215 +v -0.1946609 0.534968 -0.4300103 +v -0.1962573 0.5561922 -0.5380863 +v -0.2187165 0.547842 -0.4341751 +v -0.2109807 0.5795002 -0.5393956 +v -0.23344 0.5711501 -0.4354844 +v -0.2124268 0.6069969 -0.5374986 +v -0.2348861 0.5986468 -0.4335874 +v -0.2002081 0.6313145 -0.5329036 +v -0.2226674 0.6229645 -0.4289923 +v -0.1918447 0.6020259 -0.5319778 +v -0.1846297 0.6163852 -0.5292645 +v -0.1909908 0.5857893 -0.533098 +v -0.1822968 0.5720263 -0.5323249 +v -0.1680922 0.5644243 -0.5298656 +v -0.1521831 0.5650204 -0.5263791 +v -0.1388325 0.5736549 -0.5227996 +v -0.1316175 0.5880142 -0.5200863 +v -0.1324714 0.6042508 -0.5189661 +v -0.1411654 0.618014 -0.5197393 +v -0.15537 0.625616 -0.5221986 +v -0.171279 0.6250198 -0.525685 +v -0.1947137 0.6009593 -0.5187043 +v -0.1874987 0.6153185 -0.515991 +v -0.1938598 0.5847228 -0.5198244 +v -0.1851657 0.5709596 -0.5190513 +v -0.1709612 0.5633576 -0.516592 +v -0.1550521 0.5639538 -0.5131056 +v -0.1417014 0.5725883 -0.5095261 +v -0.1344864 0.5869476 -0.5068128 +v -0.1353403 0.6031841 -0.5056926 +v -0.1440344 0.6169473 -0.5064657 +v -0.158239 0.6245494 -0.508925 +v -0.1741481 0.6239532 -0.5124115 +v 0.3805911 0.6633475 -0.3912748 +v 0.4045253 0.6496874 -0.389752 +v 0.3873495 0.6311414 -0.2861532 +v 0.3634153 0.6448015 -0.2876759 +v 0.4187499 0.6261089 -0.3916147 +v 0.4015741 0.6075629 -0.2880158 +v 0.4194535 0.5989296 -0.3963636 +v 0.4022777 0.5803837 -0.2927647 +v 0.4064476 0.5754323 -0.4027263 +v 0.3892718 0.5568863 -0.2991274 +v 0.3832171 0.5619131 -0.4089979 +v 0.3660413 0.5433671 -0.305399 +v 0.3559865 0.5619944 -0.4134979 +v 0.3388107 0.5434484 -0.309899 +v 0.3320524 0.5756545 -0.4150206 +v 0.3148766 0.5571085 -0.3114217 +v 0.3178278 0.599233 -0.4131579 +v 0.300652 0.580687 -0.309559 +v 0.3171241 0.6264123 -0.4084091 +v 0.2999483 0.6078663 -0.3048102 +v 0.33013 0.6499096 -0.4020464 +v 0.3129542 0.6313636 -0.2984475 +v 0.3533606 0.6634288 -0.3957748 +v 0.3361848 0.6448828 -0.2921759 +v 0.3455255 0.6344105 -0.4007924 +v 0.3592429 0.6423935 -0.3970891 +v 0.3378456 0.6205356 -0.4045495 +v 0.3382611 0.6044866 -0.4073537 +v 0.3466606 0.5905637 -0.4084536 +v 0.3607934 0.5824975 -0.4075544 +v 0.3768728 0.5824494 -0.4048972 +v 0.3905902 0.5904324 -0.4011939 +v 0.39827 0.6043073 -0.3974368 +v 0.3978546 0.6203564 -0.3946326 +v 0.3894551 0.6342794 -0.3935328 +v 0.3753222 0.6423454 -0.3944319 +v 0.3433315 0.6320415 -0.3875588 +v 0.3570488 0.6400244 -0.3838555 +v 0.3356516 0.6181666 -0.3913159 +v 0.3360671 0.6021175 -0.39412 +v 0.3444665 0.5881946 -0.3952199 +v 0.3585994 0.5801286 -0.3943208 +v 0.3746788 0.5800805 -0.3916636 +v 0.3883961 0.5880634 -0.3879603 +v 0.396076 0.6019382 -0.3842031 +v 0.3956605 0.6179874 -0.381399 +v 0.387261 0.6319103 -0.3802991 +v 0.3731281 0.6399765 -0.3811982 +v 0.3900016 0.6851914 -0.2838205 +v 0.3887099 0.7540774 -0.2832757 +v 0.4005215 0.7560775 -0.3455777 +v 0.4017047 0.6872511 -0.346141 +v 0.3007512 0.6836258 -0.3006325 +v 0.3124543 0.6856855 -0.3629531 +v 0.311325 0.7536139 -0.3625672 +v 0.2995133 0.7516139 -0.3002654 +v -0.1511358 0.6710073 -0.403689 +v -0.1504267 0.739799 -0.4074889 +v -0.1333555 0.7375379 -0.4685504 +v -0.1341695 0.668807 -0.464782 +v -0.2386602 0.670543 -0.427979 +v -0.2216939 0.6683426 -0.489072 +v -0.2208379 0.7361649 -0.4929572 +v -0.237909 0.7384262 -0.4318957 +v -0.3443123 1.118508 0.1755366 +v -0.3564598 1.117149 0.1855029 +v -0.3596807 1.116173 0.1782014 +v -0.3499873 1.117762 0.1902327 +v -0.3419974 1.117847 0.1911232 +v -0.3346309 1.117383 0.1879359 +v -0.3298618 1.116493 0.1815247 +v -0.3289679 1.115415 0.1736076 +v -0.3321888 1.11444 0.1663061 +v -0.3386613 1.113827 0.1615763 +v -0.3466512 1.113741 0.1606858 +v -0.3540176 1.114206 0.1638731 +v -0.3587867 1.115096 0.1702843 +v -0.3671661 1.110526 0.1950031 +v -0.3732192 1.108692 0.1812806 +v -0.3550017 1.111678 0.2038921 +v -0.3399855 1.111839 0.2055656 +v -0.3261411 1.110965 0.1995754 +v -0.3171782 1.109293 0.1875264 +v -0.3154981 1.107268 0.1726473 +v -0.3215513 1.105434 0.1589246 +v -0.3337156 1.104283 0.1500357 +v -0.3487318 1.104122 0.1483621 +v -0.3625762 1.104995 0.1543524 +v -0.3715392 1.106668 0.1664013 +v -0.3751397 1.099438 0.2028911 +v -0.3832951 1.096968 0.1844026 +v -0.3587507 1.10099 0.2148672 +v -0.3385195 1.101207 0.217122 +v -0.319867 1.10003 0.2090513 +v -0.3077911 1.097776 0.1928179 +v -0.3055277 1.095049 0.1727712 +v -0.3136831 1.092578 0.1542827 +v -0.3300721 1.091027 0.1423067 +v -0.3503033 1.09081 0.1400519 +v -0.3689558 1.091986 0.1481225 +v -0.3810317 1.09424 0.1643561 +v -0.379419 1.085223 0.2082155 +v -0.3886929 1.082414 0.1871913 +v -0.3607821 1.086987 0.2218342 +v -0.337776 1.087234 0.2243983 +v -0.3165652 1.085896 0.2152207 +v -0.3028331 1.083333 0.1967607 +v -0.3002591 1.080231 0.1739644 +v -0.3095331 1.077422 0.1529402 +v -0.32817 1.075658 0.1393215 +v -0.3511761 1.075411 0.1367574 +v -0.3723869 1.076749 0.145935 +v -0.386119 1.079312 0.164395 +v -0.3794878 1.069595 0.2103342 +v -0.3887618 1.066785 0.18931 +v -0.3608509 1.071359 0.2239529 +v -0.3378448 1.071605 0.226517 +v -0.316634 1.070268 0.2173395 +v -0.3029019 1.067705 0.1988794 +v -0.300328 1.064603 0.1760831 +v -0.3096019 1.061793 0.1550589 +v -0.3282388 1.060029 0.1414402 +v -0.3512449 1.059783 0.1388761 +v -0.3724557 1.061121 0.1480537 +v -0.3861879 1.063684 0.1665139 +v -0.3753378 1.054439 0.2089917 +v -0.3834932 1.051968 0.1905033 +v -0.3589488 1.05599 0.2209677 +v -0.3387176 1.056206 0.2232226 +v -0.3200651 1.05503 0.215152 +v -0.3079893 1.052776 0.1989184 +v -0.3057258 1.050049 0.1788718 +v -0.3138812 1.047578 0.1603834 +v -0.3302703 1.046027 0.1484073 +v -0.3505014 1.04581 0.1461524 +v -0.3691539 1.046986 0.1542231 +v -0.3812298 1.04924 0.1704566 +v -0.3674696 1.041582 0.2043498 +v -0.3735228 1.039749 0.1906272 +v -0.3553053 1.042734 0.2132388 +v -0.3402891 1.042895 0.2149124 +v -0.3264447 1.042022 0.2089221 +v -0.3174817 1.040349 0.1968731 +v -0.3158017 1.038324 0.1819939 +v -0.3218549 1.03649 0.1682714 +v -0.3340192 1.035339 0.1593824 +v -0.3490354 1.035178 0.1577088 +v -0.3628798 1.036051 0.1636991 +v -0.3718428 1.037724 0.1757481 +v -0.3568322 1.032577 0.1969684 +v -0.360053 1.031601 0.1896668 +v -0.3503596 1.03319 0.2016981 +v -0.3423698 1.033275 0.2025886 +v -0.3350033 1.032811 0.1994013 +v -0.3302342 1.03192 0.1929901 +v -0.3293403 1.030843 0.1850731 +v -0.3325611 1.029867 0.1777715 +v -0.3390336 1.029255 0.1730418 +v -0.3470236 1.029169 0.1721513 +v -0.35439 1.029634 0.1753386 +v -0.3591591 1.030524 0.1817498 +v -0.3447086 1.028508 0.1877379 +v 0.2185965 1.131335 0.3191835 +v 0.2106636 1.129339 0.3326679 +v 0.205092 1.128733 0.3269034 +v 0.2183841 1.129749 0.3348736 +v 0.2261847 1.129852 0.3329298 +v 0.2319754 1.129621 0.3273571 +v 0.2342044 1.129118 0.3196489 +v 0.2322746 1.128477 0.3118704 +v 0.2267029 1.12787 0.306106 +v 0.2189825 1.12746 0.3039002 +v 0.2111818 1.127357 0.3058441 +v 0.2053912 1.127588 0.3114167 +v 0.2031621 1.128092 0.319125 +v 0.2038611 1.122125 0.3449325 +v 0.1933899 1.120985 0.3340989 +v 0.2183709 1.122895 0.349078 +v 0.2330313 1.123089 0.3454248 +v 0.2439141 1.122655 0.3349516 +v 0.2481034 1.121709 0.3204648 +v 0.2444764 1.120505 0.3058462 +v 0.2340052 1.119365 0.2950125 +v 0.2194955 1.118594 0.290867 +v 0.204835 1.1184 0.2945202 +v 0.1939522 1.118835 0.3049935 +v 0.189763 1.119781 0.3194802 +v 0.1990095 1.110562 0.3544981 +v 0.1849017 1.109026 0.3399021 +v 0.2185584 1.1116 0.3600834 +v 0.2383104 1.111861 0.3551614 +v 0.2529728 1.111276 0.3410509 +v 0.2586169 1.110002 0.321533 +v 0.2537304 1.108379 0.3018373 +v 0.2396226 1.106843 0.2872412 +v 0.2200736 1.105805 0.281656 +v 0.2003217 1.105544 0.2865779 +v 0.1856593 1.106129 0.3006883 +v 0.1800151 1.107404 0.3202063 +v 0.1966939 1.096045 0.3602111 +v 0.1806511 1.094299 0.3436131 +v 0.2189242 1.097225 0.3665624 +v 0.2413853 1.097522 0.3609653 +v 0.2580587 1.096857 0.3449195 +v 0.264477 1.095408 0.3227244 +v 0.2589203 1.093563 0.3003272 +v 0.2428774 1.091816 0.2837293 +v 0.2206472 1.090636 0.2773779 +v 0.1981861 1.090339 0.282975 +v 0.1815126 1.091004 0.2990208 +v 0.1750944 1.092454 0.3212159 +v 0.1971937 1.080326 0.3613822 +v 0.1811509 1.078579 0.3447842 +v 0.219424 1.081506 0.3677335 +v 0.2418851 1.081803 0.3621364 +v 0.2585585 1.081137 0.3460906 +v 0.2649768 1.079688 0.3238956 +v 0.25942 1.077843 0.3014984 +v 0.2433772 1.076096 0.2849004 +v 0.221147 1.074916 0.278549 +v 0.1986859 1.074619 0.2841461 +v 0.1820124 1.075284 0.3001919 +v 0.1755942 1.076734 0.322387 +v 0.2004486 1.065299 0.3578703 +v 0.1863408 1.063763 0.3432742 +v 0.2199975 1.066336 0.3634555 +v 0.2397495 1.066597 0.3585336 +v 0.2544119 1.066012 0.3444231 +v 0.260056 1.064738 0.3249051 +v 0.2551695 1.063115 0.3052093 +v 0.2410617 1.061579 0.2906134 +v 0.2215127 1.060542 0.285028 +v 0.2017608 1.06028 0.2899501 +v 0.1870984 1.060865 0.3040605 +v 0.1814543 1.06214 0.3235785 +v 0.2060659 1.052777 0.3500989 +v 0.1955947 1.051637 0.3392653 +v 0.2205757 1.053547 0.3542444 +v 0.2352361 1.053741 0.3505912 +v 0.246119 1.053307 0.340118 +v 0.2503082 1.052361 0.3256312 +v 0.2466813 1.051157 0.3110126 +v 0.2362101 1.050016 0.3001789 +v 0.2217003 1.049246 0.2960334 +v 0.2070399 1.049052 0.2996866 +v 0.196157 1.049487 0.3101599 +v 0.1919678 1.050433 0.3246467 +v 0.2133682 1.044271 0.3390054 +v 0.2077966 1.043665 0.3332409 +v 0.2210887 1.044681 0.3412113 +v 0.2288893 1.044784 0.3392673 +v 0.23468 1.044553 0.3336948 +v 0.236909 1.04405 0.3259864 +v 0.2349792 1.043409 0.318208 +v 0.2294076 1.042802 0.3124436 +v 0.2216871 1.042392 0.3102378 +v 0.2138865 1.042289 0.3121817 +v 0.2080958 1.04252 0.3177543 +v 0.2058668 1.043024 0.3254625 +v 0.2214747 1.040807 0.3259279 +v 0.4541928 0.2425866 -0.06686771 +v 0.2829399 0.4098065 0.4340615 +v 0.4056327 0.3850497 -0.09042078 +v -0.3738638 0.2181153 -0.2648895 +v -0.349559 0.36461 -0.2661188 +v -0.4722517 0.3893666 0.2583634 +v -0.4965565 0.2428721 0.2595927 +v 0.2252743 0.2414131 -0.1258322 +v 0.2008368 0.1468453 -0.1094399 +v 0.4273439 0.1480325 -0.05113071 +v -0.1470742 0.2313352 -0.2124605 +v -0.4671676 0.1479738 0.2533019 +v -0.3522857 0.1247929 -0.2377916 +v 0.3433507 0.2639384 0.460395 +v 0.323558 0.1680253 0.4425661 +v 0.1491649 -0.05721116 -0.07527322 +v -0.1045689 -0.06501508 -0.1349902 +v -0.3094623 -0.06041276 -0.1840134 +v -0.3045419 -0.139366 -0.1991172 +v -0.1087779 -0.1285228 -0.1483101 +v -0.4088433 -0.04035962 0.2408171 +v -0.4127679 -0.1175283 0.2635233 +v -0.1911447 -0.105994 0.3205889 +v 0.2842781 -0.02232242 0.4071832 +v 0.3740602 -0.03961742 -0.01989955 +v 0.3882061 -0.1206206 -0.03352177 +v 0.2904333 -0.1017863 0.4315714 +v 0.1553804 -0.1189193 -0.07753348 +v 0.1925926 -0.2016418 -0.09685838 +v 0.4113254 -0.1995342 -0.0413993 +v 0.04345661 -0.0937953 0.3842801 +v -0.3298851 -0.2244486 -0.2234506 +v -0.148368 -0.2131003 -0.1733711 +v -0.4498561 -0.2059143 0.2843813 +v -0.2327553 -0.199563 0.3354067 +v 0.07200316 -0.1852982 0.4216461 +v 0.3065067 -0.1892338 0.4627346 +v -0.1318287 0.1378413 -0.1868357 +v -0.1271805 0.1093369 -0.1790232 +v 0.1933863 0.1180134 -0.1044422 +v 0.4191582 0.1192049 -0.04633278 +v 0.3175236 0.138783 0.4371304 +v -0.4582075 0.1190411 0.251384 +v -0.345707 0.09634089 -0.2295299 +v -0.09086099 -0.04701102 -0.1324298 +v -0.1069528 0.09569299 -0.1707719 +v 0.1327969 -0.04154539 -0.07805377 +v 0.172286 0.104048 -0.106387 +v 0.3118262 -0.1476883 0.009765208 +v 0.2147464 -0.1366611 0.411786 +v 0.2132597 -0.07686567 0.4097869 +v 0.3103396 -0.08789277 0.007766068 +v -0.2923108 -0.1675678 -0.1355762 +v -0.2937975 -0.1077725 -0.1375754 +v -0.3908772 -0.09674537 0.2644454 +v -0.3893906 -0.1565406 0.2664444 +v 0.3412956 -0.2540666 -0.003882766 +v -0.4104694 -0.272027 0.2837203 +v 0.2429532 -0.2487397 0.4311474 +v -0.3665859 -0.2900223 -0.2149791 +v 0.4215185 -0.264089 -0.02537918 +v -0.4932278 -0.2756371 0.3094625 +v 0.2948767 -0.2497039 0.4990624 +v -0.3964825 -0.4197983 -0.2464097 +v 0.4704323 -0.3912716 -0.03784984 +v -0.5357887 -0.4039745 0.330476 +v 0.3311263 -0.3754479 0.5390359 +v -0.3937807 -0.5284659 -0.2427765 +v 0.473134 -0.4999392 -0.0342167 +v -0.5330869 -0.5126421 0.334109 +v 0.333828 -0.4841156 0.542669 +v -0.3121269 -0.2773539 -0.1513097 +v 0.6068763 -0.6143868 -0.1056728 +v 0.4380719 -0.589115 0.6466922 +v 0.4368468 -0.4832583 0.6428617 +v 0.6056512 -0.5085301 -0.1095033 +v -0.4859926 -0.6358817 -0.3501523 +v -0.4872176 -0.5300249 -0.3539829 +v -0.656022 -0.5047531 0.3983821 +v -0.6547968 -0.6106098 0.4022127 +v -0.420507 -0.6402307 -0.2390652 +v 0.4788514 -0.6274222 -0.05199987 +v 0.4354806 -0.3652067 0.6385897 +v 0.604285 -0.3904785 -0.1137752 +v 0.1817297 -0.5168679 -0.2043365 +v -0.07706738 -0.521958 -0.2622306 +v -0.2606609 -0.4969771 0.4868261 +v 0.02338871 -0.4913903 0.5503692 +v -0.6573882 -0.3867015 0.3941103 +v -0.3164426 -0.3787813 0.4821691 +v -0.4885839 -0.4119732 -0.3582548 +v -0.1328491 -0.4037622 -0.2668874 +v 0.0673053 -0.3732036 0.5554838 +v 0.2256463 -0.3986812 -0.1992218 +v -0.5806394 -0.6181933 0.3580973 +v 0.3699751 -0.6071183 0.5566581 +v -0.3888931 -0.7659467 -0.1939024 +v -0.04484811 -0.7687261 -0.1366368 +v 0.1076848 -0.765726 -0.1025145 +v 0.4293195 -0.7526191 -0.02524316 +v -0.5330122 -0.7461131 0.3435436 +v 0.3313309 -0.7343457 0.522549 +v -0.02823082 -0.7477641 0.4373233 +v -0.2001202 -0.7511449 0.3988708 +v -0.04341272 -0.8313103 -0.07766134 +v 0.07890341 -0.8289046 -0.05029869 +v -0.1679254 -0.817212 0.3517621 +v -0.03008726 -0.814501 0.3825971 +v 0.2311847 -0.3726382 -0.1601442 +v 0.2070415 -0.3758066 -0.06081533 +v 0.1999836 -0.2258795 -0.05774844 +v 0.2241268 -0.2227111 -0.1570773 +v -0.1547567 -0.3888771 -0.2544705 +v -0.1618145 -0.23895 -0.2514036 +v -0.1859578 -0.2421184 -0.1520748 +v -0.1789 -0.3920456 -0.1551417 +v 0.04048455 -0.4544656 -0.1938711 +v 0.01634127 -0.457634 -0.09454226 +v 0.004116505 -0.1499846 -0.1003039 +v 0.02825975 -0.1468161 -0.1996328 +v 0.2042826 -0.2314687 -0.1656163 +v 0.2105712 -0.3650538 -0.1683488 +v 0.02976507 -0.1638463 -0.2035332 +v -0.1395912 -0.2459376 -0.249661 +v -0.1333025 -0.3795226 -0.2523936 +v 0.04065734 -0.4379621 -0.1983995 +v -0.7742298 0.5249648 -0.09042823 +v -0.9202011 0.535741 0.400063 +v -0.8526692 0.5760334 0.3685293 +v -0.7344327 0.5673046 -0.0287686 +v -1.259702 0.5956521 -0.2364591 +v -1.19177 1.056875 -0.2421066 +v -1.264184 1.00184 -0.1889297 +v -1.313233 0.6785052 -0.1821778 +v -0.8482624 0.5363257 -0.111003 +v -0.8782009 0.4489933 -0.06270808 +v -0.8492035 0.4440498 -0.05806255 +v -0.7032228 0.9855983 -0.1070271 +v -0.8388994 0.9909415 0.3864996 +v -0.8729339 1.040868 0.303941 +v -0.7779509 1.041457 -0.05691659 +v -0.9949508 0.5569859 -0.156728 +v -1.405674 0.6064281 0.2540321 +v -1.327447 1.062218 0.2514201 +v -1.2299 1.095677 0.2100715 +v -1.134917 1.096265 -0.1507861 +v -1.355559 0.5093752 0.2181601 +v -1.238504 0.5007337 -0.1751647 +v -0.9662578 0.4526912 0.3352622 +v -1.024268 0.4698244 -0.1078031 +v -1.359612 1.004452 0.1718015 +v -1.416196 0.6850665 0.1764247 +v -0.7854379 0.9353917 0.3513642 +v -0.6755399 0.9310641 -0.04839236 +v -1.009466 0.4628382 -0.1472023 +v -0.8646027 0.4416136 -0.1042509 +v -0.8065615 0.7422342 0.2354841 +v -0.79838 0.8073497 0.2205697 +v -0.6339366 0.7963796 0.2628826 +v -0.6421181 0.7312642 0.277797 +v -0.7836791 0.8555171 0.1759247 +v -0.6192356 0.844547 0.2182377 +v -0.766398 0.8738301 0.1135117 +v -0.6019546 0.86286 0.1558246 +v -0.7511671 0.8573816 0.05005413 +v -0.5867236 0.8464117 0.09236711 +v -0.7420675 0.8105795 0.002555668 +v -0.577624 0.7996092 0.04486847 +v -0.7415375 0.7459636 -0.01625693 +v -0.577094 0.7349935 0.02605593 +v -0.7497189 0.6808484 -0.001342475 +v -0.5852754 0.6698781 0.04097033 +v -0.7644197 0.632681 0.04330248 +v -0.5999763 0.6217108 0.08561528 +v -0.7817008 0.614368 0.1057155 +v -0.6172575 0.6033977 0.1480283 +v -0.7969317 0.6308163 0.1691731 +v -0.6324884 0.6198461 0.2114858 +v -0.8060313 0.6776187 0.2166716 +v -0.641588 0.6666485 0.2589845 +v -1.260193 0.2014686 -0.1531973 +v -1.334873 0.1940364 0.1189685 +v -1.369083 0.1876634 0.2274744 +v -1.394687 -0.002414703 0.2263402 +v -1.2895 0.01003253 -0.1685334 +v -1.01913 -0.06496358 0.3515753 +v -0.9902651 0.1258458 0.3607126 +v -0.9708512 0.1279496 0.2879137 +v -0.881752 0.1389493 -0.05347204 +v -0.9073184 -0.05417609 -0.06629169 +v -1.310016 -0.1271212 -0.17798 +v -1.273539 -0.1340691 -0.1713875 +v -1.253752 0.003224015 -0.1624246 +v -1.222447 0.460268 -0.1381556 +v -1.297701 0.4524863 0.1382568 +v -0.9358795 -0.04904461 -0.0741204 +v -0.9334166 0.1476291 -0.06729341 +v -1.046384 -0.06011856 0.3410677 +v -1.372407 -0.006119967 0.2319015 +v -1.001125 0.142047 0.2265605 +v -0.9640989 0.4004463 0.2468496 +v -0.8919302 0.4047394 -0.04973525 +v -0.9992927 0.408469 0.1933221 +v -0.9466817 0.4115987 -0.02288818 +v -0.956395 -0.1861982 -0.08356714 +v -0.9278338 -0.1913297 -0.07573843 +v -0.9609214 -0.2626491 0.003154218 +v -1.016097 -0.2700661 0.2400414 +v -1.039187 -0.2022518 0.3431548 +v -1.066442 -0.1974068 0.3326473 +v -1.042591 -0.2651633 0.2267792 +v -0.9885749 -0.2574553 -0.00754869 +v -1.312621 -0.2050128 -0.08233744 +v -1.369211 -0.2122289 0.1342655 +v -1.391741 -0.1435411 0.2239677 +v -1.414744 -0.1397033 0.2179198 +v -1.395208 -0.2076479 0.1253982 +v -1.345203 -0.1986578 -0.09137595 +v -1.242489 0.4464061 0.114158 +v -1.187629 0.4520791 -0.08734673 +v -0.9798535 0.5471435 0.2000597 +v -0.9272425 0.5502732 -0.01615059 +v -1.223049 0.5850806 0.1208956 +v -1.16819 0.5907536 -0.08060914 +v -1.020276 -0.5521497 -0.09624964 +v -1.113777 -0.5678595 0.2771505 +v -1.05632 -0.1612188 0.2845866 +v -1.034554 -0.1062878 0.243363 +v -1.0155 -0.07218742 0.1899906 +v -0.9933921 -0.05696094 0.1110806 +v -0.9747868 -0.06394053 0.02942723 +v -0.9716868 -0.1017479 -0.02709323 +v -0.9718726 -0.1662931 -0.06425458 +v -1.330286 -0.5061049 -0.1719219 +v -1.281883 -0.1202486 -0.1399267 +v -1.281408 -0.05492234 -0.1033553 +v -1.28517 -0.02262056 -0.04729122 +v -1.303317 -0.01329982 0.03372955 +v -1.325883 -0.03086746 0.113272 +v -1.344961 -0.06178367 0.1685185 +v -1.366331 -0.1151741 0.2089145 +v -1.423788 -0.5218147 0.2014784 +v -1.285094 -0.5246137 -0.1289101 +v -1.064363 -0.5572549 -0.07499969 +v -1.360691 -0.5400277 0.1713464 +v -1.139959 -0.572669 0.2252567 +v -1.266157 -0.3760841 -0.1165171 +v -1.045425 -0.4087253 -0.06260669 +v -1.341754 -0.391498 0.1837392 +v -1.121022 -0.4241393 0.2376495 +v -1.16788 -0.8929822 -0.1663992 +v -1.176964 -0.9266856 0.2062523 +v -1.156654 -0.6247844 0.2340519 +v -1.14757 -0.5910809 -0.1385995 +v -1.317501 -0.8826667 -0.1691131 +v -1.297191 -0.5807654 -0.1413134 +v -1.306274 -0.6144689 0.231338 +v -1.326584 -0.9163702 0.2035382 +v -1.06252 -0.7356343 -0.2501286 +v -1.007791 -0.6771978 -0.1607426 +v -1.150375 -0.5477105 -0.1580937 +v -1.205105 -0.6061472 -0.2474796 +v -1.121804 -0.8025521 -0.1700821 +v -1.264389 -0.6730649 -0.1674331 +v -1.209659 -0.6146283 -0.07804722 +v -1.067075 -0.7441155 -0.08069617 +v -0.9881434 -0.8369412 -0.2055391 +v -0.9479952 -0.7992436 -0.1475133 +v -1.03661 -0.6917363 -0.1560446 +v -1.076759 -0.7294341 -0.2140704 +v -1.035139 -0.8713256 -0.1506839 +v -1.123755 -0.7638184 -0.1592152 +v -1.083606 -0.7261207 -0.1011894 +v -0.9949912 -0.8336279 -0.0926581 +v -0.9312706 -0.9392803 -0.1807495 +v -0.8811878 -0.9019834 -0.1026428 +v -0.9468284 -0.7685639 -0.1452079 +v -0.9936715 -0.8107529 -0.222834 +v -1.002624 -0.9295382 -0.1446933 +v -1.07874 -0.8456531 -0.1429135 +v -1.032496 -0.805553 -0.06383443 +v -0.9534543 -0.8890694 -0.06759179 +v -1.074536 -0.9822397 -0.1422859 +v -1.080528 -0.9879182 -0.05707377 +v -1.054887 -0.9159898 -0.04903555 +v -1.049054 -0.9102153 -0.134609 +v -1.306545 -0.898432 -0.158463 +v -1.281063 -0.8264075 -0.1507861 +v -1.286885 -0.8317379 -0.06289089 +v -1.312527 -0.9036664 -0.07092911 +v -1.060091 -0.9808716 -0.1217016 +v -1.060901 -0.9865411 -0.07203072 +v -1.004324 -0.8515621 -0.05570054 +v -1.003514 -0.8458925 -0.1053715 +v -1.106246 -0.9616989 -0.1202664 +v -1.04967 -0.8267199 -0.1039363 +v -1.05048 -0.8323895 -0.05426538 +v -1.107057 -0.9673685 -0.0705955 +v -1.039611 -0.897601 -0.04918879 +v -1.038207 -0.8859327 -0.1299134 +v -1.119423 -0.8560345 -0.1288754 +v -1.121106 -0.8670815 -0.0468806 +v -1.018422 -0.8382382 -0.04239649 +v -1.131731 -0.7984206 -0.03690445 +v -1.130601 -0.7868965 -0.1185654 +v -1.017184 -0.8266028 -0.1223595 +v -1.073844 -0.9937885 -0.04790527 +v -1.076514 -0.9950329 0.03765512 +v -1.049643 -0.9231807 0.0409745 +v -1.047146 -0.9218563 -0.04494518 +v -1.305208 -0.9074481 -0.05929303 +v -1.27851 -0.8355159 -0.05633295 +v -1.280899 -0.8362787 0.03188038 +v -1.307769 -0.908131 0.028561 +v -1.034148 -0.9050546 0.03927863 +v -1.035807 -0.8975317 -0.04193252 +v -1.116523 -0.8664066 -0.03926086 +v -1.115085 -0.8732402 0.04319674 +v -1.011938 -0.845747 0.04217499 +v -1.124414 -0.8040093 0.05003536 +v -1.126386 -0.796674 -0.03209203 +v -1.013733 -0.8382158 -0.03826785 +v -1.058575 -0.9915911 -0.02799886 +v -1.057481 -0.9947128 0.02189159 +v -0.9985558 -0.8599401 0.02903336 +v -0.999649 -0.8568183 -0.02085716 +v -1.104384 -0.9716813 -0.02574927 +v -1.045459 -0.8369086 -0.0186075 +v -1.044366 -0.8400303 0.03128296 +v -1.103291 -0.9748031 0.02414125 +v -1.082135 -0.9927227 0.03755969 +v -1.088377 -0.9937364 0.1193421 +v -1.062126 -0.9251409 0.1235753 +v -1.056032 -0.9240497 0.04144144 +v -1.302277 -0.9078617 0.01659727 +v -1.276174 -0.8391886 0.02047896 +v -1.282257 -0.8397387 0.1048121 +v -1.308508 -0.9083343 0.100579 +v -1.047052 -0.9079223 0.1225933 +v -1.045079 -0.9008451 0.0447793 +v -1.122156 -0.8702663 0.04382461 +v -1.124387 -0.8766788 0.1228214 +v -1.025361 -0.8513027 0.1262386 +v -1.132958 -0.8102504 0.1288708 +v -1.131248 -0.8033516 0.05016655 +v -1.023551 -0.844215 0.04915404 +v -1.068355 -0.9907244 0.05726701 +v -1.069481 -0.9936359 0.1050717 +v -1.012121 -0.8650496 0.1142547 +v -1.010995 -0.8621382 0.06644988 +v -1.11211 -0.9712174 0.05742401 +v -1.05475 -0.8426311 0.06660694 +v -1.055876 -0.8455426 0.1144117 +v -1.113236 -0.9741288 0.1052288 +v -1.090181 -0.9906855 0.1257047 +v -1.097459 -0.9935174 0.200476 +v -1.074021 -0.9305746 0.2064084 +v -1.066873 -0.9276648 0.1313141 +v -1.292151 -0.9140689 0.1041605 +v -1.268843 -0.8510481 0.1097699 +v -1.276027 -0.8535122 0.1868913 +v -1.299466 -0.916455 0.1809588 +v -1.060325 -0.9146664 0.2061887 +v -1.057083 -0.9064005 0.1351067 +v -1.127926 -0.878926 0.1334317 +v -1.131432 -0.8866118 0.2056071 +v -1.04096 -0.8627161 0.2112244 +v -1.139919 -0.8259503 0.2124813 +v -1.136899 -0.8178294 0.1405748 +v -1.037881 -0.8544581 0.1408077 +v -1.077948 -0.9892015 0.1440682 +v -1.079872 -0.9929631 0.1877711 +v -1.028492 -0.8749419 0.2001923 +v -1.026567 -0.8711804 0.1564893 +v -1.118194 -0.9716526 0.143806 +v -1.066813 -0.8536315 0.1562272 +v -1.068738 -0.8573931 0.1999301 +v -1.120119 -0.9754142 0.187509 +v -1.082357 -0.6037228 -0.06469816 +v -1.131231 -0.6148418 0.1798354 +v -1.118551 -0.5270303 0.1863627 +v -1.069677 -0.5159113 -0.05817097 +v -1.302306 -0.5688119 -0.1070711 +v -1.289626 -0.4810004 -0.1005439 +v -1.3385 -0.4921195 0.1439897 +v -1.35118 -0.579931 0.1374626 +v -0.4447965 0.3725203 -0.4176012 +v -0.4444318 0.4716048 -0.422141 +v -0.4505164 0.4717755 -0.4393033 +v -0.4509834 0.3727549 -0.4347298 +v -0.5390298 0.3746828 -0.3837963 +v -0.5452167 0.3749173 -0.4009249 +v -0.5448029 0.4730285 -0.4056027 +v -0.5387183 0.4728578 -0.3884404 +v -0.4447928 0.5015754 -0.4243411 +v -0.4450839 0.6005975 -0.4300863 +v -0.4516069 0.6005272 -0.4470874 +v -0.4514176 0.5015688 -0.4413067 +v -0.5381397 0.5036672 -0.3881562 +v -0.5447644 0.5036607 -0.4051218 +v -0.5450046 0.6017082 -0.4109944 +v -0.5384817 0.6017785 -0.3939932 +v -0.4432779 0.6230803 -0.4341578 +v -0.4434703 0.6992853 -0.4448478 +v -0.4508868 0.7000304 -0.4614621 +v -0.4509653 0.6228256 -0.4506673 +v -0.5341514 0.6252313 -0.3921492 +v -0.5418388 0.6249766 -0.4086586 +v -0.5420163 0.6911896 -0.4209098 +v -0.5345999 0.6904445 -0.4042954 +v -0.5373632 0.7187225 -0.3801876 +v -0.4465347 0.7385855 -0.4173752 +v -0.5448394 0.7295216 -0.3928002 +v -0.4540111 0.7493846 -0.4299878 +v 0.6067164 0.5175873 -0.2264404 +v 0.608317 0.6166995 -0.2257676 +v 0.594886 0.6158992 -0.2134972 +v 0.5932109 0.516727 -0.2142509 +v 0.6623026 0.6135604 -0.1394919 +v 0.6757336 0.6143607 -0.1517623 +v 0.6740358 0.5161533 -0.1523229 +v 0.6605304 0.5152931 -0.1401335 +v 0.6090829 0.6391732 -0.2279548 +v 0.6097698 0.7155221 -0.2312179 +v 0.5988889 0.7152824 -0.2216637 +v 0.5948278 0.6386031 -0.2166328 +v 0.662401 0.70272 -0.1452722 +v 0.6739902 0.7043304 -0.1552066 +v 0.6715874 0.6375039 -0.1497387 +v 0.6573324 0.6369339 -0.1384167 +v 0.5905747 0.7550008 -0.1984982 +v 0.6564581 0.7297745 -0.127433 +v 0.6661887 0.7403525 -0.1340163 +v 0.5994552 0.7642057 -0.2047614 +v 0.6048884 0.3886305 -0.2282464 +v 0.6053619 0.4877459 -0.2267852 +v 0.592254 0.486689 -0.2141892 +v 0.5917047 0.3875134 -0.2157298 +v 0.6615336 0.484545 -0.1419188 +v 0.6746414 0.4856019 -0.1545148 +v 0.6740631 0.3873892 -0.1558539 +v 0.6608795 0.3862722 -0.1433374 +v -0.6158732 -1.367947 -0.1246457 +v -0.5329592 -0.8038235 -0.1089368 +v -0.5668855 -0.8066301 0.273577 +v -0.6531804 -1.369803 0.257559 +v -0.1805288 -1.358332 -0.08155519 +v -0.2830725 -1.417126 -0.09127438 +v -0.320421 -1.426385 0.2908694 +v -0.2160176 -1.370192 0.3007534 +v -0.09771505 -0.8789554 -0.07069284 +v -0.1316414 -0.881762 0.3118209 +v -0.5571926 -1.386304 -0.05933583 +v -0.2896844 -1.420304 -0.03129947 +v -0.589103 -1.38986 0.2159531 +v -0.3157054 -1.429256 0.238938 +v -0.5372957 -1.462127 -0.02269131 +v -0.3413365 -1.492587 -0.01075047 +v -0.5613242 -1.464197 0.1779103 +v -0.3552971 -1.49851 0.1907523 +v -0.5568929 -1.303799 0.01592624 +v -0.5720272 -1.307969 0.1703066 +v -0.5338038 -0.9720777 0.1789393 +v -0.5186697 -0.9679075 0.0245589 +v -0.7553594 -1.136321 -0.003193557 +v -0.7211213 -0.9330126 0.005235612 +v -0.7362555 -0.9371828 0.1596161 +v -0.7704936 -1.140491 0.1511869 +v -0.353783 -2.880815 -0.2267357 +v -0.4250239 -2.9117 0.3732485 +v -0.3847977 -2.565937 0.3958032 +v -0.3576656 -2.332724 0.4110158 +v -0.2682101 -1.563813 0.4611726 +v -0.1969693 -1.532929 -0.1388114 +v -0.9900312 -2.813906 -0.1965709 +v -0.8451071 -1.464218 -0.1162148 +v -0.8878338 -1.481743 0.2924381 +v -1.04298 -2.830172 0.2108368 +v -0.8938615 -2.814046 -0.2874264 +v -0.9357136 -2.85649 0.3012287 +v -0.7891943 -1.507185 0.3850428 +v -0.7373204 -1.466126 -0.1995329 +v -0.8952398 -2.483765 0.3243813 +v -0.8706756 -2.257551 0.3384328 +v -0.8862749 -2.307306 0.4720077 +v -0.9000151 -2.439775 0.4642609 +v -0.3734367 -2.383522 0.5447174 +v -0.3891869 -2.516419 0.5389923 +v -0.2434281 -0.6714951 0.2403994 +v -0.1892637 -0.6892254 0.2282987 +v -0.3092134 -1.061731 0.237192 +v -0.3633778 -1.044001 0.2492927 +v -0.1483149 -0.7033415 0.1893305 +v -0.2682646 -1.075848 0.1982239 +v -0.1315541 -0.7100611 0.1339365 +v -0.2515038 -1.082567 0.1428298 +v -0.1434722 -0.7075837 0.07695931 +v -0.263422 -1.08009 0.08585268 +v -0.1808759 -0.696573 0.03366601 +v -0.3008256 -1.069079 0.04255933 +v -0.2337427 -0.6799794 0.01565695 +v -0.3536924 -1.052486 0.02455026 +v -0.2879072 -0.6622492 0.0277577 +v -0.4078569 -1.034755 0.03665102 +v -0.328856 -0.6481331 0.06672579 +v -0.4488057 -1.020639 0.07561916 +v -0.3456168 -0.6414135 0.1221198 +v -0.4655665 -1.01392 0.1310132 +v -0.3336986 -0.6438909 0.179097 +v -0.4536484 -1.016397 0.1879904 +v -0.296295 -0.6549016 0.2223904 +v -0.4162447 -1.027408 0.2312837 +v -0.954477 -2.805846 -0.0736919 +v -0.9728987 -2.817733 0.1085293 +v -0.8789179 -2.12183 0.1372127 +v -0.8604963 -2.109943 -0.04500854 +v -1.304628 -2.239115 -0.09945256 +v -1.263113 -2.030162 -0.08100355 +v -1.281535 -2.042049 0.1012177 +v -1.32305 -2.251002 0.08276874 +v -0.5587549 -1.557389 -0.2330058 +v -0.3487878 -1.58387 -0.2115325 +v -0.355947 -1.587056 -0.1445551 +v -0.5716634 -1.563179 -0.1604241 +v -0.2879662 -1.837204 -0.2128985 +v -0.2950644 -1.830719 -0.153992 +v -0.2977252 -2.18207 -0.2307897 +v -0.3001686 -2.182447 -0.1771621 +v -0.3872188 -2.547134 -0.2562094 +v -0.3961799 -2.552981 -0.2055939 +v -0.5219899 -2.805458 -0.2773248 +v -0.5217341 -2.809896 -0.2229494 +v -0.7310191 -2.781202 -0.3012931 +v -0.7365719 -2.786186 -0.2406957 +v -0.7850845 -2.509164 -0.3155569 +v -0.8017257 -2.518687 -0.2495239 +v -0.7660344 -2.120287 -0.2728491 +v -0.7753447 -2.111683 -0.2042544 +v -0.685576 -1.794273 -0.2646134 +v -0.6953295 -1.797156 -0.1885538 +v -0.5311284 -2.153475 -0.3702766 +v -0.455531 -1.427956 0.1042922 +v -0.4921652 -1.426997 0.1175285 +v -0.4938481 -1.425091 0.09782916 +v -0.481095 -1.430916 0.133548 +v -0.4636041 -1.435799 0.1415949 +v -0.4443789 -1.440336 0.1395134 +v -0.428571 -1.443313 0.1278612 +v -0.4204159 -1.443931 0.1097602 +v -0.4220989 -1.442026 0.09006089 +v -0.433169 -1.438106 0.07404155 +v -0.45066 -1.433223 0.0659945 +v -0.4698851 -1.428686 0.06807595 +v -0.4856931 -1.425709 0.07972831 +v -0.5275826 -1.439263 0.1281735 +v -0.5307457 -1.435681 0.09115088 +v -0.5067778 -1.446629 0.1582802 +v -0.4739055 -1.455806 0.1734037 +v -0.437774 -1.464334 0.1694917 +v -0.4080648 -1.469928 0.1475926 +v -0.3927383 -1.47109 0.1135741 +v -0.3959012 -1.467508 0.07655138 +v -0.4167062 -1.460142 0.04644477 +v -0.4495784 -1.450966 0.03132129 +v -0.4857099 -1.442438 0.0352332 +v -0.5154192 -1.436843 0.05713236 +v -0.5575117 -1.463276 0.1349433 +v -0.5617732 -1.45845 0.0850628 +v -0.5294813 -1.4732 0.1755058 +v -0.4851926 -1.485563 0.1958817 +v -0.4365129 -1.497053 0.1906111 +v -0.3964857 -1.50459 0.1611065 +v -0.3758363 -1.506156 0.1152734 +v -0.3800978 -1.50133 0.06539291 +v -0.4081282 -1.491406 0.0248304 +v -0.4524169 -1.479042 0.004454613 +v -0.5010967 -1.467553 0.009725153 +v -0.5411239 -1.460015 0.03922981 +v -0.5783424 -1.496138 0.1370212 +v -0.5831884 -1.49065 0.08029926 +v -0.5464674 -1.507424 0.1831473 +v -0.4961042 -1.521483 0.2063178 +v -0.4407476 -1.534548 0.2003244 +v -0.3952303 -1.54312 0.1667729 +v -0.3717488 -1.5449 0.1146535 +v -0.3765948 -1.539412 0.05793148 +v -0.4084698 -1.528126 0.01180547 +v -0.458833 -1.514067 -0.01136506 +v -0.5141896 -1.501002 -0.00537163 +v -0.5597069 -1.492431 0.02817988 +v -0.5875623 -1.533887 0.1341568 +v -0.5924083 -1.528399 0.07743472 +v -0.5556873 -1.545172 0.1802828 +v -0.505324 -1.559232 0.2034532 +v -0.4499674 -1.572297 0.1974599 +v -0.4044502 -1.580868 0.1639084 +v -0.3809686 -1.582649 0.1117889 +v -0.3858146 -1.577161 0.055067 +v -0.4176897 -1.565875 0.008940995 +v -0.4680528 -1.551816 -0.01422954 +v -0.5234095 -1.538751 -0.00823611 +v -0.5689267 -1.530179 0.02531534 +v -0.5840592 -1.571969 0.1266953 +v -0.5883207 -1.567143 0.07681483 +v -0.5560288 -1.581893 0.1672578 +v -0.5117401 -1.594257 0.1876337 +v -0.4630603 -1.605746 0.1823631 +v -0.4230331 -1.613284 0.1528584 +v -0.4023838 -1.614849 0.1070254 +v -0.4066453 -1.610023 0.05714494 +v -0.4346758 -1.600099 0.01658243 +v -0.4789644 -1.587736 -0.003793418 +v -0.5276442 -1.576246 0.001477122 +v -0.5676714 -1.568708 0.03098178 +v -0.5682558 -1.605791 0.1155369 +v -0.5714188 -1.602209 0.07851422 +v -0.5474509 -1.613157 0.1456434 +v -0.5145786 -1.622333 0.160767 +v -0.4784472 -1.630861 0.156855 +v -0.4487379 -1.636456 0.1349558 +v -0.4334113 -1.637618 0.1009374 +v -0.4365744 -1.634036 0.06391466 +v -0.4573793 -1.62667 0.03380811 +v -0.4902516 -1.617493 0.01868457 +v -0.526383 -1.608965 0.02259654 +v -0.5560923 -1.603371 0.0444957 +v -0.5420581 -1.631273 0.1020273 +v -0.5437411 -1.629367 0.08232796 +v -0.5309881 -1.635193 0.1180467 +v -0.5134971 -1.640075 0.1260937 +v -0.494272 -1.644613 0.1240123 +v -0.478464 -1.64759 0.1123599 +v -0.4703089 -1.648208 0.09425908 +v -0.4719919 -1.646302 0.07455975 +v -0.483062 -1.642383 0.05854034 +v -0.5005529 -1.6375 0.0504933 +v -0.5197781 -1.632962 0.05257481 +v -0.5355861 -1.629986 0.0642271 +v -0.508626 -1.645343 0.08779609 +v -0.4214745 -3.461729 -0.345679 +v -0.4544879 -3.467607 0.3744538 +v -0.4529554 -3.223449 0.3651482 +v -0.4547035 -3.036447 0.1724312 +v -0.4120658 -3.038171 -0.125487 +v -0.3828958 -3.143701 -0.2629814 +v -1.014592 -3.447351 -0.3847426 +v -1.00172 -3.117637 -0.299028 +v -1.018556 -3.027375 -0.1364036 +v -1.019067 -3.028457 0.1635783 +v -0.9984897 -3.176107 0.3331463 +v -1.039266 -3.424144 0.3235096 +v -0.5738416 -3.465664 -0.3154584 +v -0.8583434 -3.452357 -0.334682 +v -0.9226125 -3.438212 0.4447774 +v -0.5706358 -3.45375 0.4676551 +v -0.510096 -2.964686 -0.2453173 +v -0.5475549 -3.189425 -0.3233762 +v -0.4532587 -3.250051 -0.4883525 +v -0.4568768 -3.46126 -0.477878 +v -0.5568219 -3.152288 0.4598779 +v -0.5069692 -2.968092 0.3362212 +v -0.8375181 -3.178722 -0.3376727 +v -0.9300053 -3.234147 -0.5396259 +v -0.7884498 -3.273627 -0.5892735 +v -0.7934271 -3.225751 -0.4831432 +v -0.5810078 -3.229611 -0.4664589 +v -0.5783063 -3.273009 -0.5659125 +v -0.5966467 -3.459831 -0.4582286 +v -0.5900831 -3.46234 -0.5588088 +v -0.936147 -3.442348 -0.5222055 +v -0.8153718 -3.454529 -0.4726341 +v -0.8088082 -3.457037 -0.5732144 +v -0.6927749 -3.274688 -0.5722244 +v -0.7000893 -3.227482 -0.4659299 +v -0.6793219 -3.4578 -0.5647454 +v -0.6858854 -3.455292 -0.4641652 +v -0.7089403 -3.459479 -0.5547977 +v -0.7167174 -3.457565 -0.4542911 +v -0.6678396 -3.272837 -0.5676977 +v -0.670541 -3.229439 -0.468244 +v -0.9320593 -2.955604 0.309586 +v -0.9316524 -2.954109 -0.2562464 +v -0.9087992 -3.13675 0.4370002 +v -0.693797 -2.795969 0.01599675 +v -0.7492263 -2.799975 0.03056353 +v -0.7492884 -2.798398 0.001318932 +v -0.7346389 -2.803127 0.05576289 +v -0.7094351 -2.807011 0.0701648 +v -0.6803681 -2.810585 0.06991035 +v -0.6552263 -2.812893 0.05506772 +v -0.6407466 -2.813315 0.02961391 +v -0.6408087 -2.811739 0.0003693104 +v -0.6553961 -2.808586 -0.02483004 +v -0.6805999 -2.804703 -0.03923202 +v -0.709667 -2.801128 -0.03897756 +v -0.7348088 -2.79882 -0.02413487 +v -0.8004111 -2.823271 0.04231262 +v -0.8005279 -2.820308 -0.01264924 +v -0.7729958 -2.829195 0.08967191 +v -0.725628 -2.836495 0.1167387 +v -0.6709998 -2.843213 0.1162606 +v -0.6237488 -2.847549 0.0883655 +v -0.5965358 -2.848343 0.040528 +v -0.5966526 -2.84538 -0.01443392 +v -0.6240679 -2.839456 -0.06179321 +v -0.6714357 -2.832156 -0.08885998 +v -0.726064 -2.825438 -0.08838183 +v -0.773315 -2.821102 -0.06048673 +v -0.8411777 -2.863049 0.04982704 +v -0.8413351 -2.859057 -0.02422291 +v -0.8042412 -2.871031 0.113634 +v -0.7404227 -2.880865 0.150101 +v -0.6668223 -2.889916 0.1494568 +v -0.6031612 -2.895759 0.1118738 +v -0.5664973 -2.896828 0.04742253 +v -0.5666547 -2.892836 -0.02662742 +v -0.6035912 -2.884854 -0.09043443 +v -0.6674097 -2.87502 -0.1269014 +v -0.74101 -2.865969 -0.1262571 +v -0.8046712 -2.860126 -0.08867419 +v -0.8666091 -2.91451 0.05220026 +v -0.8667879 -2.909971 -0.0320062 +v -0.8246064 -2.923587 0.124759 +v -0.7520347 -2.93477 0.1662278 +v -0.6683395 -2.945062 0.1654951 +v -0.5959467 -2.951706 0.1227574 +v -0.5542541 -2.952922 0.04946601 +v -0.554433 -2.948383 -0.03474051 +v -0.5964357 -2.939306 -0.1072991 +v -0.6690073 -2.928123 -0.1487679 +v -0.7527026 -2.917831 -0.1480352 +v -0.8250954 -2.911186 -0.1052975 +v -0.8736378 -2.971447 0.04914618 +v -0.8738167 -2.966909 -0.03506029 +v -0.8316351 -2.980525 0.1217049 +v -0.7590635 -2.991708 0.1631736 +v -0.6753682 -3.002 0.162441 +v -0.6029754 -3.008644 0.1197032 +v -0.5612828 -3.00986 0.04641193 +v -0.5614618 -3.005321 -0.03779459 +v -0.6034644 -2.996244 -0.1103532 +v -0.6760361 -2.985061 -0.151822 +v -0.7597313 -2.974768 -0.1510894 +v -0.8321241 -2.968124 -0.1083515 +v -0.8614161 -3.026994 0.04103315 +v -0.8615735 -3.023003 -0.0330168 +v -0.8244796 -3.034976 0.1048402 +v -0.7606611 -3.044811 0.1413072 +v -0.6870607 -3.053862 0.1406628 +v -0.6233996 -3.059705 0.1030799 +v -0.5867357 -3.060773 0.03862864 +v -0.5868931 -3.056782 -0.03542131 +v -0.6238296 -3.0488 -0.09922832 +v -0.6876481 -3.038966 -0.1356953 +v -0.7612484 -3.029915 -0.135051 +v -0.8249096 -3.024072 -0.09746808 +v -0.831418 -3.07445 0.02883965 +v -0.8315349 -3.071488 -0.02612227 +v -0.8040029 -3.080375 0.07619894 +v -0.7566351 -3.087674 0.1032657 +v -0.7020068 -3.094392 0.1027876 +v -0.6547558 -3.098729 0.07489246 +v -0.6275429 -3.099522 0.02705497 +v -0.6276597 -3.09656 -0.02790695 +v -0.655075 -3.090635 -0.07526618 +v -0.7024428 -3.083336 -0.102333 +v -0.7570709 -3.076618 -0.1018548 +v -0.804322 -3.072281 -0.07395971 +v -0.787262 -3.108092 0.01403642 +v -0.7873242 -3.106516 -0.01520818 +v -0.7726747 -3.111244 0.03923577 +v -0.7474709 -3.115128 0.05363768 +v -0.7184038 -3.118703 0.05338323 +v -0.6932621 -3.12101 0.0385406 +v -0.6787823 -3.121432 0.0130868 +v -0.6788445 -3.119856 -0.01615781 +v -0.6934319 -3.116704 -0.0413571 +v -0.7186357 -3.11282 -0.05575907 +v -0.7477027 -3.109245 -0.05550462 +v -0.7728444 -3.106938 -0.04066199 +v -0.7342738 -3.123861 -0.001591027 +v 0.5336988 -3.129951 0.007344604 +v 0.4927141 -3.017892 0.1363997 +v 0.3678811 -2.999995 0.4096625 +v 0.2469726 -3.174141 0.5744868 +v 0.2230161 -3.416911 0.5882869 +v 0.5842959 -3.454238 -0.03444833 +v 0.7441115 -3.410806 0.8619135 +v 0.7252874 -3.160703 0.8426422 +v 0.8462278 -3.02541 0.7083049 +v 1.007707 -3.04309 0.4561096 +v 1.073847 -3.142228 0.312323 +v 1.103562 -3.476853 0.2542939 +v 0.2650713 -3.410509 0.7273554 +v 0.5739682 -3.412509 0.8983267 +v 0.9452149 -3.469618 0.2116491 +v 0.6953444 -3.465127 0.07369107 +v 0.7004666 -3.188866 0.04694641 +v 0.645584 -2.957882 0.08742148 +v 0.6853114 -3.46411 -0.1262555 +v 0.705422 -3.254119 -0.1414732 +v 0.2791574 -3.109758 0.7054226 +v 0.3065906 -2.945482 0.5880325 +v 0.9520401 -3.195961 0.1920604 +v 0.9896693 -3.249365 0.04697603 +v 1.038783 -3.303422 -0.04383188 +v 1.133888 -3.26921 0.0738371 +v 0.8501424 -3.289123 -0.1382603 +v 0.8023527 -3.239812 -0.0541991 +v 0.7919507 -3.469584 -0.03394169 +v 0.8404984 -3.478001 -0.1219078 +v 1.112394 -3.475915 0.09619313 +v 1.031989 -3.48634 -0.01542777 +v 0.9834416 -3.477924 0.07253844 +v 0.9020282 -3.244583 0.01081812 +v 0.9493272 -3.297848 -0.08141017 +v 0.8703067 -3.470623 0.009401739 +v 0.9188545 -3.47904 -0.07856441 +v 0.9381682 -3.481812 -0.05410379 +v 0.8906279 -3.474062 0.03447157 +v 0.9261441 -3.294271 -0.09117895 +v 0.8783544 -3.244959 -0.007117748 +v 1.005599 -2.972544 0.3067731 +v 0.6786689 -2.954095 0.7955191 +v 0.5880546 -3.111757 0.8763937 +v 0.7267464 -2.790666 0.4208061 +v 0.7107885 -2.790401 0.4453624 +v 0.6725308 -2.7841 0.4029681 +v 0.6847107 -2.791115 0.4586733 +v 0.6555008 -2.792617 0.457172 +v 0.6309853 -2.794504 0.441261 +v 0.617733 -2.796271 0.4152034 +v 0.6192952 -2.797443 0.3859815 +v 0.6352531 -2.797708 0.3614252 +v 0.6613308 -2.796994 0.3481144 +v 0.6905408 -2.795492 0.3496156 +v 0.7150563 -2.793605 0.3655266 +v 0.7283086 -2.791838 0.3915842 +v 0.7754028 -2.81635 0.437344 +v 0.7454118 -2.815853 0.4834947 +v 0.6964017 -2.817195 0.508511 +v 0.6415047 -2.820018 0.5056896 +v 0.5954306 -2.823564 0.4757865 +v 0.5705246 -2.826884 0.4268145 +v 0.5734605 -2.829088 0.3718951 +v 0.6034515 -2.829586 0.3257443 +v 0.6524615 -2.828243 0.3007283 +v 0.7073584 -2.825421 0.3035496 +v 0.7534326 -2.821874 0.3334526 +v 0.7783386 -2.818554 0.3824248 +v 0.8126311 -2.858056 0.4505871 +v 0.7722243 -2.857385 0.5127658 +v 0.7061932 -2.859194 0.5464701 +v 0.6322308 -2.862997 0.5426689 +v 0.5701551 -2.867774 0.5023805 +v 0.5365995 -2.872248 0.4364006 +v 0.540555 -2.875217 0.3624081 +v 0.5809618 -2.875887 0.3002294 +v 0.6469929 -2.874079 0.2665251 +v 0.7209553 -2.870276 0.2703263 +v 0.7830309 -2.865498 0.3106145 +v 0.8165865 -2.861025 0.3765946 +v 0.8339412 -2.910751 0.4589379 +v 0.7879924 -2.909988 0.529645 +v 0.7129046 -2.912045 0.5679721 +v 0.6287977 -2.916369 0.5636495 +v 0.5582078 -2.921803 0.5178354 +v 0.5200497 -2.926889 0.4428058 +v 0.5245477 -2.930266 0.3586646 +v 0.5704966 -2.931028 0.2879575 +v 0.6455843 -2.928972 0.2496304 +v 0.7296913 -2.924647 0.2539532 +v 0.800281 -2.919214 0.2997671 +v 0.8384392 -2.914127 0.3747969 +v 0.8367628 -2.96808 0.4613896 +v 0.7908139 -2.967318 0.5320966 +v 0.7157261 -2.969375 0.5704238 +v 0.6316192 -2.973699 0.5661011 +v 0.5610294 -2.979132 0.5202871 +v 0.5228713 -2.984219 0.4452574 +v 0.5273693 -2.987596 0.3611162 +v 0.5733182 -2.988358 0.2904091 +v 0.6484059 -2.986301 0.252082 +v 0.7325128 -2.981977 0.2564047 +v 0.8031027 -2.976543 0.3022187 +v 0.8412608 -2.971457 0.3772485 +v 0.8207555 -3.023129 0.4576461 +v 0.7803487 -3.022459 0.5198248 +v 0.7143177 -3.024267 0.5535291 +v 0.6403552 -3.02807 0.5497279 +v 0.5782796 -3.032848 0.5094396 +v 0.544724 -3.037321 0.4434596 +v 0.5486795 -3.040291 0.3694671 +v 0.5890862 -3.040961 0.3072883 +v 0.6551173 -3.039152 0.2735841 +v 0.7290796 -3.03535 0.2773854 +v 0.7911552 -3.030571 0.3176736 +v 0.824711 -3.026098 0.3836536 +v 0.78785 -3.069258 0.448159 +v 0.7578591 -3.06876 0.4943097 +v 0.708849 -3.070103 0.519326 +v 0.6539521 -3.072925 0.5165046 +v 0.6078779 -3.076472 0.4866015 +v 0.5829719 -3.079792 0.4376294 +v 0.5859078 -3.081996 0.3827102 +v 0.6158988 -3.082493 0.3365595 +v 0.6649088 -3.081151 0.3115433 +v 0.7198058 -3.078328 0.3143646 +v 0.7658799 -3.074782 0.3442677 +v 0.7907859 -3.071462 0.3932398 +v 0.7420152 -3.100903 0.4340727 +v 0.7260574 -3.100638 0.458629 +v 0.6999797 -3.101352 0.4719397 +v 0.6707697 -3.102854 0.4704385 +v 0.6462541 -3.104741 0.4545276 +v 0.633002 -3.106508 0.4284701 +v 0.6345641 -3.10768 0.3992481 +v 0.650522 -3.107945 0.3746918 +v 0.6765996 -3.107231 0.361381 +v 0.7058097 -3.105729 0.3628822 +v 0.7303252 -3.103842 0.3787933 +v 0.7435775 -3.102075 0.4048508 +v 0.6887797 -3.114247 0.4170861 +v 0.241905 -1.503451 0.03069258 +v 0.05667281 -1.530494 0.6059905 +v 0.1642385 -2.271345 0.6058444 +v 0.1991594 -2.51186 0.605797 +v 0.2520596 -2.876206 0.6057252 +v 0.4372917 -2.849164 0.03042716 +v 0.880391 -2.785961 0.7150409 +v 0.6891509 -1.439709 0.7102497 +v 0.8206227 -1.424711 0.3208653 +v 1.002069 -2.772373 0.3225372 +v 0.7455168 -2.813506 0.7527202 +v 0.9525892 -2.774403 0.1998549 +v 0.7574625 -1.428653 0.2002057 +v 0.5611826 -1.466235 0.7535295 +v 0.6603374 -2.190943 0.753094 +v 0.6933458 -2.432196 0.7529492 +v 0.6467695 -2.382179 0.910389 +v 0.6350996 -2.260138 0.897865 +v 0.1533808 -2.461206 0.7602474 +v 0.1360375 -2.336279 0.7585785 +v 0.8126585 -2.069792 0.3988106 +v 0.7535104 -2.080561 0.5722197 +v 0.8592448 -2.775066 0.5927002 +v 0.9183929 -2.764297 0.419291 +v 1.181369 -2.203158 0.7093696 +v 1.133434 -1.994784 0.7066128 +v 1.192582 -1.984015 0.5332035 +v 1.240517 -2.192389 0.5359603 +v 0.5917764 -1.528053 0.1676697 +v 0.3894176 -1.555161 0.09235972 +v 0.4108196 -1.552391 0.02847189 +v 0.6102611 -1.522794 0.09626311 +v 0.340959 -1.799769 0.06095892 +v 0.3591653 -1.806631 0.004533231 +v 0.3594927 -2.15148 0.04574364 +v 0.3796437 -2.151385 -0.004015446 +v 0.4630565 -2.520625 0.06386596 +v 0.4759623 -2.515148 0.01406765 +v 0.5874791 -2.775662 0.1031786 +v 0.6103461 -2.77147 0.05382293 +v 0.7898247 -2.748743 0.1764176 +v 0.810003 -2.744123 0.1189789 +v 0.8494991 -2.480321 0.1927496 +v 0.8618146 -2.471356 0.1256978 +v 0.8017455 -2.073565 0.2185896 +v 0.8220093 -2.082625 0.1524591 +v 0.7187029 -1.760233 0.1961612 +v 0.7415406 -1.757848 0.1229405 +v 0.6495972 -2.119855 -0.03371912 +v 0.4117234 -1.440559 0.3541865 +v 0.4017499 -1.441834 0.3713164 +v 0.374275 -1.443037 0.3437145 +v 0.3848281 -1.445193 0.38116 +v 0.3654921 -1.449737 0.3810797 +v 0.3489229 -1.454246 0.3710971 +v 0.3395603 -1.457515 0.3538869 +v 0.339913 -1.458665 0.3340606 +v 0.3498864 -1.45739 0.3169307 +v 0.3668082 -1.454031 0.3070871 +v 0.3861443 -1.449488 0.3071674 +v 0.4027134 -1.444978 0.3171499 +v 0.4120761 -1.44171 0.3343603 +v 0.4477412 -1.45153 0.3642135 +v 0.4289973 -1.453926 0.3964072 +v 0.3971946 -1.460239 0.4149072 +v 0.3608548 -1.468778 0.4147562 +v 0.329715 -1.477253 0.395995 +v 0.3121189 -1.483396 0.3636505 +v 0.3127818 -1.485558 0.3263893 +v 0.3315257 -1.483162 0.2941956 +v 0.3633284 -1.476849 0.2756956 +v 0.3996682 -1.46831 0.2758464 +v 0.430808 -1.459835 0.2946077 +v 0.448404 -1.453693 0.3269523 +v 0.4779842 -1.474626 0.3725861 +v 0.4527306 -1.477855 0.4159605 +v 0.409883 -1.486361 0.4408855 +v 0.3609224 -1.497864 0.4406822 +v 0.3189678 -1.509284 0.4154053 +v 0.2952609 -1.517559 0.3718275 +v 0.2961538 -1.520472 0.3216256 +v 0.3214074 -1.517244 0.2782511 +v 0.364255 -1.508738 0.2533264 +v 0.4132156 -1.497234 0.2535296 +v 0.4551703 -1.485815 0.2788065 +v 0.4788772 -1.47754 0.3223843 +v 0.4988046 -1.507063 0.3782944 +v 0.4700873 -1.510734 0.4276181 +v 0.4213627 -1.520406 0.4559616 +v 0.3656869 -1.533488 0.4557305 +v 0.3179779 -1.546473 0.4269865 +v 0.2910193 -1.555883 0.3774318 +v 0.2920347 -1.559197 0.3203444 +v 0.3207521 -1.555525 0.2710207 +v 0.3694766 -1.545853 0.2426773 +v 0.4251525 -1.532771 0.2429084 +v 0.4728615 -1.519786 0.2716523 +v 0.4998201 -1.510376 0.321207 +v 0.5076913 -1.544926 0.3806501 +v 0.4789739 -1.548598 0.4299737 +v 0.4302494 -1.55827 0.4583172 +v 0.3745734 -1.571351 0.4580861 +v 0.3268644 -1.584337 0.4293422 +v 0.299906 -1.593747 0.3797875 +v 0.3009214 -1.59706 0.3227 +v 0.3296388 -1.593389 0.2733764 +v 0.3783633 -1.583717 0.2450328 +v 0.4340391 -1.570635 0.245264 +v 0.4817481 -1.55765 0.2740079 +v 0.5087067 -1.548239 0.3235627 +v 0.5035722 -1.583651 0.3793687 +v 0.4783186 -1.586879 0.4227433 +v 0.4354709 -1.595385 0.4476681 +v 0.3865103 -1.606889 0.4474649 +v 0.3445557 -1.618308 0.422188 +v 0.3208488 -1.626583 0.3786103 +v 0.3217418 -1.629497 0.3284083 +v 0.3469955 -1.626268 0.2850339 +v 0.389843 -1.617762 0.260109 +v 0.4388036 -1.606259 0.2603123 +v 0.4807582 -1.594839 0.2855892 +v 0.5044652 -1.586564 0.3291669 +v 0.4869442 -1.618565 0.3746052 +v 0.4682003 -1.620961 0.4067989 +v 0.4363977 -1.627274 0.4252989 +v 0.4000578 -1.635813 0.425148 +v 0.3689179 -1.644288 0.4063868 +v 0.351322 -1.65043 0.3740422 +v 0.3519848 -1.652593 0.336781 +v 0.3707287 -1.650197 0.3045873 +v 0.4025314 -1.643883 0.2860873 +v 0.4388712 -1.635345 0.2862381 +v 0.4700111 -1.626869 0.3049994 +v 0.487607 -1.620727 0.337344 +v 0.459813 -1.645458 0.3669339 +v 0.4498396 -1.646733 0.3840638 +v 0.4329177 -1.650092 0.3939074 +v 0.4135817 -1.654635 0.393827 +v 0.3970126 -1.659145 0.3838444 +v 0.3876499 -1.662413 0.3666342 +v 0.3880026 -1.663564 0.346808 +v 0.397976 -1.662289 0.3296781 +v 0.4148979 -1.658929 0.3198344 +v 0.4342339 -1.654386 0.3199148 +v 0.4508031 -1.649876 0.3298973 +v 0.4601657 -1.646608 0.3471076 +v 0.425451 -1.661086 0.35728 +v 0.4850118 -1.34102 0.5642473 +v 0.4111425 -0.7771323 0.5262887 +v 0.5403516 -0.7874108 0.1647987 +v 0.6110024 -1.352218 0.2016502 +v 0.06993473 -1.337334 0.4204609 +v 0.1677638 -1.394451 0.4568283 +v 0.2938387 -1.398248 0.09405392 +v 0.197819 -1.338549 0.05823976 +v -0.001608163 -0.8483263 0.3809848 +v 0.1276009 -0.8586048 0.01949483 +v 0.2746992 -1.39938 0.1513531 +v 0.5300352 -1.36795 0.2369005 +v 0.4438209 -1.362132 0.5002409 +v 0.1851416 -1.399096 0.4077998 +v 0.3115761 -1.471209 0.1937296 +v 0.4951341 -1.442336 0.2640378 +v 0.4330249 -1.437581 0.4562419 +v 0.2398703 -1.470212 0.3826491 +v 0.4682857 -0.946673 0.2847605 +v 0.4173865 -0.9455687 0.4313478 +v 0.4490305 -1.281776 0.4492785 +v 0.4999296 -1.282881 0.3026913 +v 0.6405917 -1.116235 0.5101365 +v 0.610016 -0.9125587 0.497544 +v 0.6609151 -0.913663 0.3509567 +v 0.6914909 -1.11734 0.3635493 +v 0.2405573 -1.05689 0.3762349 +v 0.1977782 -1.071486 0.3394726 +v 0.1045911 -0.6935804 0.2978665 +v 0.1473703 -0.6789842 0.3346288 +v 0.1792516 -1.082025 0.2852482 +v 0.08606449 -0.7041188 0.243642 +v 0.1899418 -1.085682 0.2280912 +v 0.09675461 -0.7077756 0.186485 +v 0.2269842 -1.081477 0.1833166 +v 0.133797 -0.7035708 0.1417105 +v 0.2804534 -1.070537 0.162922 +v 0.1872663 -0.6926313 0.1213159 +v 0.3360225 -1.055794 0.1723719 +v 0.2428353 -0.6778883 0.1307657 +v 0.3788017 -1.041198 0.2091343 +v 0.2856145 -0.663292 0.1675281 +v 0.3973283 -1.03066 0.2633587 +v 0.3041411 -0.6527537 0.2217526 +v 0.3866382 -1.027003 0.3205158 +v 0.293451 -0.6490969 0.2789096 +v 0.3495957 -1.031208 0.3652902 +v 0.2564085 -0.6533016 0.323684 +v 0.2961265 -1.042147 0.3856849 +v 0.2029392 -0.6642412 0.3440787 +v 0.6461632 0.6473584 0.1921493 +v 0.5598984 0.5304041 0.5804555 +v 0.6069224 0.4773434 0.6268421 +v 0.7134221 0.6217315 0.1474515 +v 1.218581 0.7511503 0.3723558 +v 1.155835 1.0653 0.4384601 +v 1.113795 1.139111 0.3761314 +v 1.203416 0.6923158 0.277566 +v 0.7694585 0.5291035 0.1861269 +v 0.7967325 0.53282 0.1974929 +v 0.7872957 0.6325562 0.1688699 +v 0.6640137 1.104003 0.328762 +v 0.5753917 0.9906631 0.6730589 +v 0.5097843 0.9217865 0.7107236 +v 0.6263657 1.071404 0.2352988 +v 0.9361622 0.6536841 0.2066514 +v 0.9972134 0.9894941 0.8515562 +v 1.096916 0.5479276 0.7569564 +v 0.9290465 1.041331 0.7807692 +v 1.017668 1.154671 0.4364719 +v 1.162385 0.5857049 0.2904658 +v 1.076982 0.46992 0.6748888 +v 0.6840565 0.4133186 0.5705499 +v 0.9447427 0.5539776 0.2355524 +v 1.067435 0.9550109 0.783804 +v 1.137519 0.6446354 0.7206716 +v 0.4836178 0.8833973 0.6398718 +v 0.5780488 1.004587 0.2547777 +v 0.80513 0.5389845 0.1544039 +v 0.9510356 0.5599906 0.1937856 +v 1.238789 0.1118953 0.176014 +v 1.143747 -0.02348161 0.5498915 +v 1.107261 0.1594491 0.59452 +v 1.128517 0.1998929 0.4901316 +v 1.192195 0.2922845 0.2310647 +v 0.8597159 0.05187225 0.06051606 +v 0.8174788 0.2343013 0.1157519 +v 0.7337161 0.1171838 0.4380423 +v 0.7161997 0.09240592 0.5070369 +v 0.7594088 -0.08915508 0.4571025 +v 1.205034 0.1065218 0.1621088 +v 1.236402 -0.02334177 0.1237319 +v 1.271015 -0.0177536 0.1376225 +v 1.068385 0.4436473 0.5644156 +v 1.133559 0.5376551 0.3016563 +v 0.8687232 0.2424154 0.1313652 +v 0.8881106 0.05673003 0.06908929 +v 1.121837 -0.02682841 0.5428389 +v 0.7879547 -0.08368433 0.4627487 +v 0.7884724 0.1460365 0.4056581 +v 0.7279952 0.3894393 0.4808268 +v 0.8057297 0.4857463 0.2017719 +v 0.8404353 0.4800317 0.2520552 +v 0.7837669 0.4098239 0.4554861 +v 0.8919423 -0.07777667 0.02212447 +v 0.920337 -0.07291877 0.03069776 +v 0.7907543 -0.2191939 0.4193054 +v 0.824459 -0.251938 0.3028746 +v 0.8884249 -0.1714144 0.08233148 +v 0.8193002 -0.2137231 0.4249516 +v 0.9173888 -0.1655867 0.08810759 +v 0.8536463 -0.2455483 0.3058912 +v 1.152326 -0.1570771 0.5050628 +v 1.180194 -0.1946046 0.3997675 +v 1.233272 -0.1200651 0.1953222 +v 1.175093 -0.1535207 0.5120947 +v 1.26568 -0.1140141 0.20516 +v 1.206875 -0.1897613 0.4060997 +v 1.031911 0.4493417 0.5164225 +v 1.079423 0.5178733 0.324871 +v 0.8103348 0.6118318 0.2891569 +v 0.7536663 0.5416242 0.492588 +v 1.001811 0.5811417 0.5535242 +v 1.049322 0.6496735 0.3619727 +v 0.4775778 0.7518981 0.5245059 +v 0.4771754 0.8177342 0.5105477 +v 0.6457859 0.8234582 0.5326851 +v 0.6461885 0.7576222 0.5466432 +v 0.4813442 0.8678603 0.4658332 +v 0.6499548 0.8735845 0.4879707 +v 0.4889675 0.8888452 0.4023438 +v 0.6575781 0.8945694 0.4244812 +v 0.4980026 0.875066 0.3370914 +v 0.6666131 0.8807902 0.3592287 +v 0.5060283 0.830215 0.2875602 +v 0.6746389 0.8359389 0.3096976 +v 0.5108944 0.7663095 0.2670221 +v 0.6795051 0.7720337 0.2891595 +v 0.5112969 0.7004732 0.2809803 +v 0.6799076 0.7061975 0.3031177 +v 0.507128 0.6503471 0.3256946 +v 0.6757386 0.6560715 0.3478321 +v 0.4995047 0.6293622 0.3891841 +v 0.6681153 0.6350865 0.4113215 +v 0.4904697 0.6431415 0.4544366 +v 0.6590803 0.6488658 0.476574 +v 0.4824439 0.6879926 0.5039678 +v 0.6510544 0.693717 0.5261052 +v 0.896536 0.02740645 0.1154241 +v 0.8773026 -0.002072453 0.1810607 +v 0.8633908 -0.05398035 0.2228412 +v 0.8664653 -0.1362209 0.2398463 +v 0.8778182 -0.2186947 0.2357724 +v 0.8942174 -0.2776691 0.2107216 +v 0.9194121 -0.3273634 0.1650457 +v 1.057472 -0.3727447 -0.2191332 +v 1.025754 0.00975883 -0.2523299 +v 1.360161 -0.3384959 -0.1134961 +v 1.222101 -0.2931146 0.2706825 +v 1.197461 -0.2444597 0.3150067 +v 1.181985 -0.1839861 0.3368092 +v 1.169826 -0.1005687 0.3430163 +v 1.167558 -0.01927173 0.323878 +v 1.179654 0.03288364 0.2873511 +v 1.199225 0.06165528 0.2210611 +v 1.328443 0.04400778 -0.1466929 +v 1.065839 -0.01811743 -0.246218 +v 1.281391 0.006282806 -0.1711448 +v 1.307849 -0.3016569 -0.1470709 +v 1.092297 -0.3260572 -0.2221442 +v 1.015791 -0.01135552 -0.1047162 +v 1.231343 0.01304495 -0.02964312 +v 1.257801 -0.2948948 -0.00556922 +v 1.042249 -0.319295 -0.08064246 +v 1.05992 -0.03093278 -0.2035404 +v 1.068923 -0.2797176 -0.1852631 +v 1.099813 -0.2847179 -0.26854 +v 1.09081 -0.03593314 -0.2868174 +v 1.312248 -0.271301 -0.1905469 +v 1.281358 -0.2663006 -0.1072699 +v 1.272355 -0.01751578 -0.1255473 +v 1.303245 -0.02251601 -0.2088243 +v 1.164556 0.002239704 -0.2556238 +v 1.205451 -0.3683593 -0.2228895 +v 1.319542 -0.3806214 -0.5042481 +v 1.278647 -0.0100224 -0.5369823 +v 1.457597 -0.3605198 -0.4491428 +v 1.343507 -0.3482578 -0.1677842 +v 1.302612 0.02234125 -0.2005183 +v 1.416702 0.01007915 -0.481877 +v 1.217495 0.1135076 -0.2700831 +v 1.152221 0.02773929 -0.2173282 +v 1.058597 -0.002831459 -0.3828707 +v 1.123872 0.08293676 -0.4356256 +v 1.14068 -0.08456945 -0.4141981 +v 1.234303 -0.05399871 -0.2486557 +v 1.299577 0.03176963 -0.3014106 +v 1.205954 0.001198769 -0.4669531 +v 1.08434 0.03829956 -0.5226468 +v 1.031038 -0.03729665 -0.4846455 +v 1.014056 -0.1047001 -0.6228108 +v 1.068831 -0.02760673 -0.6553122 +v 1.080303 -0.1296937 -0.5827551 +v 1.128585 -0.1133753 -0.4796081 +v 1.180569 -0.03612339 -0.5160751 +v 1.135286 -0.05412686 -0.6183438 +v 1.137439 0.04981685 -0.4194925 +v 1.090772 -0.006387472 -0.386885 +v 1.041813 -0.03915083 -0.5134267 +v 1.088481 0.01705348 -0.5460342 +v 1.100421 -0.09289527 -0.5221865 +v 1.149379 -0.06013191 -0.3956448 +v 1.196047 -0.003927588 -0.4282523 +v 1.147088 -0.03669095 -0.554794 +v 1.194801 -0.23092 -0.5660819 +v 1.205659 -0.3112863 -0.551672 +v 1.252166 -0.3138096 -0.6086206 +v 1.241212 -0.2338158 -0.6230907 +v 1.431985 -0.2599685 -0.4641574 +v 1.385478 -0.2574452 -0.4072087 +v 1.374676 -0.1749871 -0.4224857 +v 1.421087 -0.177883 -0.4794946 +v 1.249012 -0.2971747 -0.4872752 +v 1.240288 -0.218747 -0.4949943 +v 1.177218 -0.2321641 -0.5471377 +v 1.185842 -0.3095469 -0.5403161 +v 1.139011 -0.230932 -0.4999334 +v 1.227868 -0.214753 -0.4284342 +v 1.236238 -0.2930157 -0.4213789 +v 1.147441 -0.3076156 -0.4932923 +v 1.133863 -0.2517856 -0.5177283 +v 1.138621 -0.2991356 -0.5122174 +v 1.233437 -0.3017657 -0.6166775 +v 1.228679 -0.2544156 -0.6221885 +v 1.268594 -0.2945399 -0.5849478 +v 1.173778 -0.2919098 -0.4804877 +v 1.16902 -0.2445598 -0.4859987 +v 1.263836 -0.2471898 -0.5904588 +v 1.211402 -0.3187475 -0.5513039 +v 1.223432 -0.3923221 -0.5394381 +v 1.265373 -0.3926904 -0.5922312 +v 1.253265 -0.3194586 -0.6041566 +v 1.430672 -0.3411999 -0.4612683 +v 1.38873 -0.3408315 -0.4084752 +v 1.376692 -0.2653269 -0.4211048 +v 1.418554 -0.2660379 -0.4739576 +v 1.263634 -0.3793058 -0.4807537 +v 1.253691 -0.3075545 -0.486544 +v 1.195566 -0.3205844 -0.533747 +v 1.205381 -0.3913678 -0.5287622 +v 1.161134 -0.3210582 -0.4900042 +v 1.243064 -0.3051674 -0.4253419 +v 1.25267 -0.3767663 -0.4201531 +v 1.170754 -0.3912029 -0.485172 +v 1.156684 -0.3400234 -0.5065594 +v 1.162232 -0.3833673 -0.5022778 +v 1.247829 -0.3819856 -0.5992028 +v 1.242281 -0.3386416 -0.6034844 +v 1.28027 -0.3749934 -0.5704538 +v 1.194672 -0.3763752 -0.4735288 +v 1.189124 -0.3330312 -0.4778104 +v 1.274722 -0.3316495 -0.5747354 +v 1.116387 -0.1663017 -0.5306395 +v 1.119233 -0.2159719 -0.5256618 +v 1.217625 -0.2213009 -0.6351038 +v 1.214779 -0.1716307 -0.6400814 +v 1.254719 -0.2158598 -0.6020208 +v 1.156327 -0.2105308 -0.4925788 +v 1.15348 -0.1608607 -0.4975564 +v 1.251872 -0.1661896 -0.6069984 +v 1.180704 -0.146512 -0.5810171 +v 1.188453 -0.2310228 -0.5673037 +v 1.236639 -0.2348306 -0.6269643 +v 1.228773 -0.1507031 -0.6407464 +v 1.427059 -0.1891118 -0.4760869 +v 1.378873 -0.1853042 -0.4164262 +v 1.371273 -0.09860122 -0.4310116 +v 1.419342 -0.1027921 -0.4907407 +v 1.234514 -0.2192969 -0.5000539 +v 1.228926 -0.1370111 -0.5068247 +v 1.162379 -0.1473227 -0.5611951 +v 1.167907 -0.2285002 -0.5553438 +v 1.122756 -0.1450778 -0.5117578 +v 1.216382 -0.1333585 -0.4372501 +v 1.221606 -0.2154458 -0.431168 +v 1.128114 -0.2255147 -0.506083 +v 1.173607 -0.05641496 -0.5843273 +v 1.185913 -0.1408443 -0.5738195 +v 1.232688 -0.140148 -0.6347079 +v 1.220283 -0.0561049 -0.6452949 +v 1.424383 -0.090029 -0.486873 +v 1.377607 -0.0907253 -0.4259847 +v 1.365319 -0.004070282 -0.437289 +v 1.411995 -0.003760219 -0.4982566 +v 1.233036 -0.129112 -0.5073101 +v 1.223175 -0.04703224 -0.5110122 +v 1.155858 -0.05883586 -0.564116 +v 1.16558 -0.139781 -0.5612918 +v 1.117449 -0.06030607 -0.5137011 +v 1.212247 -0.04641402 -0.4410728 +v 1.221717 -0.1282904 -0.438043 +v 1.126959 -0.1405144 -0.5110228 +v 1.111667 -0.0811646 -0.5331697 +v 1.117115 -0.1307677 -0.5300328 +v 1.212821 -0.1273298 -0.6419058 +v 1.207372 -0.07772672 -0.6450428 +v 1.25043 -0.1211519 -0.6095421 +v 1.154724 -0.1245898 -0.4976692 +v 1.149276 -0.0749867 -0.5008062 +v 1.244981 -0.07154882 -0.6126791 +v -1.58663 1.477146 0.1654351 +v -1.278174 1.415287 -0.4782438 +v -1.151053 1.40783 -0.4172237 +v -1.453471 1.462976 0.2497064 +v -1.195916 0.7330997 -0.7618582 +v -1.086728 0.7331032 -0.7086356 +v -1.167564 -0.165781 -0.9161121 +v -1.069091 -0.1642638 -0.8766071 +v -1.301573 -1.059211 -0.6239833 +v -1.216097 -1.071643 -0.570597 +v -1.513676 -1.717306 -0.2451326 +v -1.393672 -1.728942 -0.1843538 +v -1.808805 -1.662163 0.4469622 +v -1.69683 -1.670349 0.5017988 +v -1.893726 -1.002956 0.7443067 +v -1.776115 -1.030126 0.8253974 +v -1.913716 0.01232147 0.922903 +v -1.785483 0.03647041 0.9922679 +v -1.784627 0.8301015 0.6021728 +v -1.6414 0.8289864 0.6843824 +v -1.821532 -0.05538666 -0.1532868 +v -1.272907 1.250906 -0.4087452 +v -1.542361 1.300041 0.1854895 +v -1.215593 0.6497247 -0.6683931 +v -1.199879 -0.1498294 -0.8180558 +v -1.330861 -0.9583042 -0.5454007 +v -1.489081 -1.543958 -0.201258 +v -1.759194 -1.491752 0.4101037 +v -1.829837 -0.9213129 0.6984302 +v -1.838184 0.02902484 0.8471119 +v -1.709806 0.7351568 0.5727858 +v 1.275679 0.05731726 -0.8402237 +v 1.43939 0.0689708 -0.7706504 +v 1.447704 0.1738411 -0.8046964 +v 1.284227 0.1625794 -0.8740485 +v 1.053305 0.243611 -0.3166027 +v 1.060561 0.3483046 -0.351599 +v 1.222021 0.3610145 -0.2836545 +v 1.213127 0.2563095 -0.2490719 +v 1.195922 -0.0101161 -0.6311828 +v 1.356328 0.003143191 -0.5588342 +v 1.404853 0.1877407 -0.7726687 +v 1.289125 0.1826879 -0.8197705 +v 1.112213 0.06001139 -0.4340739 +v 1.271953 0.07300329 -0.364333 +v 1.216311 0.3469963 -0.3306737 +v 1.106104 0.3386022 -0.381285 +v 1.308053 0.1311311 -0.6624357 +v 1.304631 0.1556336 -0.5433691 +v 1.343575 2.397502 -1.195363 +v 1.348689 2.369918 -1.32368 +v 1.266749 2.39821 -1.230684 +v 1.210007 0.1652234 -0.5878527 +v 1.254656 0.1619291 -0.5658582 +v 1.211129 0.1948673 -0.4552015 +v 1.261635 2.435794 -1.102366 +v 1.303389 2.61935 -1.261688 +v 1.291045 0.09478498 -0.5005796 +v 1.29203 0.08599806 -0.5284441 +v 1.261581 -0.4114786 -0.3726411 +v 1.260597 -0.4026915 -0.3447768 +v 1.278298 0.07905376 -0.5533004 +v 1.24785 -0.4184229 -0.3974975 +v 1.253531 0.07581306 -0.5684886 +v 1.223083 -0.4216636 -0.4126858 +v 1.224364 0.07714391 -0.5699388 +v 1.193916 -0.4203328 -0.414136 +v 1.198612 0.08269012 -0.5572627 +v 1.168164 -0.4147865 -0.4014599 +v 1.183176 0.09096539 -0.5338566 +v 1.152728 -0.4065113 -0.3780537 +v 1.182191 0.09975231 -0.5059922 +v 1.151743 -0.3977243 -0.3501893 +v 1.195922 0.1066966 -0.4811358 +v 1.165474 -0.39078 -0.3253329 +v 1.22069 0.1099374 -0.4659476 +v 1.190242 -0.3875393 -0.3101448 +v 1.249857 0.1086065 -0.4644974 +v 1.219409 -0.3888701 -0.3086945 +v 1.275609 0.1030602 -0.4771736 +v 1.245161 -0.3944164 -0.3213707 +v 1.285907 -0.4336599 -0.3719037 +v 1.284466 -0.4207949 -0.3311074 +v 1.265803 -0.443827 -0.408296 +v 1.229542 -0.4485719 -0.430533 +v 1.186838 -0.4466233 -0.4326564 +v 1.149135 -0.4385031 -0.4140972 +v 1.126534 -0.4263875 -0.3798282 +v 1.125093 -0.4135224 -0.339032 +v 1.145196 -0.4033552 -0.3026398 +v 1.181458 -0.3986105 -0.2804028 +v 1.224162 -0.400559 -0.2782794 +v 1.261865 -0.4086792 -0.2968386 +v 1.284232 -0.447849 -0.367265 +v 1.282805 -0.435112 -0.3268746 +v 1.264329 -0.4579148 -0.4032951 +v 1.228428 -0.4626124 -0.425311 +v 1.186149 -0.4606833 -0.4274132 +v 1.148821 -0.4526441 -0.4090387 +v 1.126445 -0.4406488 -0.3751107 +v 1.125018 -0.4279117 -0.3347204 +v 1.144922 -0.4178456 -0.2986903 +v 1.180823 -0.4131482 -0.2766746 +v 1.223102 -0.4150774 -0.2745723 +v 1.26043 -0.4231168 -0.2929468 +v 1.281145 -0.4494289 -0.3226418 +v 1.282558 -0.462038 -0.3626263 +v 1.2543 -0.4775344 -0.3511704 +v 1.253373 -0.4692616 -0.3249365 +v 1.262854 -0.4720027 -0.3982943 +v 1.241372 -0.4840723 -0.3745721 +v 1.227314 -0.4766531 -0.4200889 +v 1.218054 -0.4871234 -0.3888715 +v 1.18546 -0.4747434 -0.42217 +v 1.190594 -0.4858704 -0.3902369 +v 1.148507 -0.4667848 -0.4039802 +v 1.166349 -0.4806488 -0.3783026 +v 1.126357 -0.4549102 -0.3703932 +v 1.151816 -0.4728578 -0.3562661 +v 1.124944 -0.442301 -0.3304087 +v 1.150889 -0.4645849 -0.3300323 +v 1.144647 -0.4323363 -0.2947407 +v 1.163817 -0.4580472 -0.3066306 +v 1.180188 -0.427686 -0.2729462 +v 1.187135 -0.454996 -0.2923313 +v 1.222041 -0.4295957 -0.2708651 +v 1.214595 -0.456249 -0.2909658 +v 1.258994 -0.4375544 -0.2890549 +v 1.23884 -0.4614707 -0.3029002 +v 1.265 -0.5004648 -0.3481727 +v 1.264012 -0.4909551 -0.3162717 +v 1.249234 -0.5080141 -0.3765187 +v 1.220939 -0.51158 -0.3937151 +v 1.187696 -0.5102074 -0.3951537 +v 1.158412 -0.5042634 -0.3804495 +v 1.140935 -0.4953415 -0.3535419 +v 1.139947 -0.4858315 -0.3216412 +v 1.155713 -0.4782823 -0.293295 +v 1.184009 -0.4747163 -0.2760988 +v 1.217252 -0.4760891 -0.2746599 +v 1.246535 -0.4820329 -0.2893645 +v 1.275825 -0.5305353 -0.3423135 +v 1.274642 -0.5191435 -0.3040995 +v 1.256939 -0.5395786 -0.3762692 +v 1.223044 -0.5438501 -0.3968688 +v 1.183222 -0.5422058 -0.3985922 +v 1.148143 -0.5350856 -0.3809779 +v 1.127207 -0.524398 -0.3487453 +v 1.126024 -0.5130061 -0.3105314 +v 1.14491 -0.5039629 -0.2765756 +v 1.178805 -0.4996912 -0.2559762 +v 1.218627 -0.5013356 -0.2542527 +v 1.253706 -0.5084557 -0.2718671 +v 1.273005 -0.5687129 -0.3308116 +v 1.271833 -0.5574352 -0.2929797 +v 1.254308 -0.5776659 -0.3644278 +v 1.220751 -0.5818946 -0.3848214 +v 1.181328 -0.5802668 -0.3865275 +v 1.1466 -0.5732178 -0.3690894 +v 1.125873 -0.562637 -0.3371792 +v 1.124702 -0.5513591 -0.2993473 +v 1.143399 -0.5424061 -0.265731 +v 1.176955 -0.5381774 -0.2453377 +v 1.216379 -0.5398052 -0.2436314 +v 1.251107 -0.5468542 -0.2610697 +v 1.251367 -0.5948839 -0.3180932 +v 1.250512 -0.5866624 -0.2905138 +v 1.237736 -0.6014106 -0.3425995 +v 1.213274 -0.6044934 -0.3574664 +v 1.184534 -0.6033067 -0.3587102 +v 1.159217 -0.5981679 -0.3459979 +v 1.144107 -0.5904545 -0.3227352 +v 1.143253 -0.582233 -0.2951559 +v 1.156884 -0.5757062 -0.2706496 +v 1.181346 -0.5726234 -0.2557828 +v 1.210086 -0.5738101 -0.2545389 +v 1.235403 -0.5789489 -0.2672515 +v 1.217811 -0.6100948 -0.3055552 +v 1.217471 -0.6068201 -0.2945705 +v 1.212382 -0.6126944 -0.315316 +v 1.202639 -0.6139221 -0.3212374 +v 1.191192 -0.6134496 -0.3217328 +v 1.181108 -0.6114028 -0.3166695 +v 1.17509 -0.6083305 -0.3074041 +v 1.17475 -0.6050559 -0.2964194 +v 1.180179 -0.6024563 -0.2866585 +v 1.189922 -0.6012285 -0.2807372 +v 1.20137 -0.6017011 -0.2802417 +v 1.211453 -0.6037478 -0.2853051 +v -0.44839 0.5065106 1.059252 +v -0.2331028 0.6173685 1.118435 +v -0.2562872 0.5409927 1.21151 +v -0.4649174 0.4184471 1.151537 +v -0.4598204 0.05373657 1.020239 +v -0.4716142 0.0218364 1.126413 +v -0.216962 0.01367807 1.145332 +v -0.2625297 0.06769955 1.052811 +v -0.4956665 0.4415541 1.368204 +v -0.2736058 0.5499948 1.411997 +v -0.2808518 0.260272 1.443 +v -0.5480461 0.1977397 1.412228 +v -0.0266121 0.5122323 1.121659 +v 0.01222882 0.1115944 1.088219 +v 0.0330984 0.00572896 1.163836 +v -0.04018912 0.4308898 1.225092 +v -0.03779784 0.1930152 1.465079 +v -0.06614622 0.1878954 1.481795 +v -0.2252544 0.2350224 1.473431 +v -0.06149223 0.4241043 1.42258 +v -0.5611548 0.09615123 1.519208 +v -0.5595126 -0.1451768 1.513121 +v -0.3464373 0.2342745 1.462014 +v -0.514376 0.1919558 1.438 +v -0.3205839 -0.1824596 1.580384 +v -0.2954216 0.1637048 1.566514 +v -0.4831768 -0.2349194 1.165253 +v -0.2148741 -0.2478313 1.220956 +v -0.06889328 -0.1474624 1.616804 +v -0.05718085 0.09508586 1.586082 +v -0.2148741 -0.2478313 1.220956 +v 0.0120469 -0.2693685 1.265059 +v -0.2971697 0.1623461 1.5667 +v -0.3214674 -0.1822925 1.583367 +v -0.5201752 -0.198876 1.439186 +v -0.2970151 -0.2308024 1.512 +v -0.4886741 -0.4113508 1.168717 +v -0.2249655 -0.4211785 1.222155 +v -0.3032804 -0.2340964 1.508598 +v -0.03934094 -0.1977289 1.538056 +v -0.2313425 -0.4130977 1.220243 +v 0.0001185834 -0.4340962 1.263325 +v -0.5222684 -0.3910154 1.452173 +v -0.5060079 -0.4098312 1.387063 +v -0.2908871 -0.3935395 1.513583 +v -0.2806426 -0.4124498 1.431429 +v -0.4508419 -0.4798656 1.168796 +v -0.2087697 -0.5263249 1.228795 +v -0.3042478 -0.3895379 1.513735 +v -0.2736094 -0.4033713 1.429877 +v -0.03551289 -0.3928407 1.537394 +v -0.02337167 -0.4039866 1.469887 +v -0.2275503 -0.5236757 1.231684 +v -0.01445526 -0.492042 1.253003 +v -0.4850094 -0.4611206 1.391184 +v -0.2719436 -0.4714194 1.429175 +v -0.2849793 -0.4719457 1.419411 +v -0.0388855 -0.4620771 1.464705 +v -0.3533951 0.161816 1.543663 +v -0.5265871 0.1254969 1.513478 +v -0.08305174 0.113746 1.567801 +v -0.2480999 0.160763 1.55982 +v -0.3738618 0.3708808 0.8246847 +v 0.01404253 0.3751665 0.893457 +v -0.05874535 0.3471506 1.305757 +v -0.4466496 0.3428648 1.236984 +v -0.3558519 -0.4333448 0.7732164 +v -0.4286397 -0.4613609 1.185516 +v -0.04073542 -0.4570752 1.254288 +v 0.03205243 -0.4290591 0.8419887 +v -0.4186727 0.6063542 0.6566189 +v -0.3766821 0.6394327 0.6297078 +v 0.1364942 0.6410177 0.7401999 +v 0.09798649 0.4694619 1.007316 +v -0.4782259 0.4599626 0.909058 +v -0.3919874 -0.5389823 0.5524822 +v -0.4917561 -0.5333518 1.087337 +v 0.06761685 -0.5338017 1.197974 +v 0.1783073 -0.5089111 0.6290237 +v -0.1185303 -0.5175402 0.5716061 +v 0.09670481 0.001228213 0.967192 +v -0.478523 0.02554548 0.8577561 +v -0.5214239 -0.1352885 1.103715 +v 0.0537807 -0.1589811 1.213176 +v -0.3025298 0.56536 1.364872 +v -0.2318631 0.5654172 1.370545 +v -0.2375309 0.5693104 1.441105 +v -0.3081976 0.5692531 1.435432 +v -0.3035791 0.2735932 1.380886 +v -0.3110286 0.2798955 1.448194 +v -0.3382273 0.1468874 1.585052 +v -0.3320492 0.1001717 1.538865 +v -0.2329124 0.2736505 1.386559 +v -0.2439139 0.2767888 1.455611 +v -0.2680318 0.1478801 1.594931 +v -0.2617567 0.1001623 1.548084 +v -0.3463987 -0.1407738 1.587937 +v -0.3263641 -0.1658307 1.524717 +v -0.2822605 -0.1505115 1.595069 +v -0.2589497 -0.1671762 1.546614 +v -0.4423815 0.6317468 0.5772662 +v -0.3804406 0.7469918 0.6143802 +v -0.4005685 0.7308472 0.7183493 +v -0.4642868 0.6097426 0.6798607 +v -0.4015057 -0.5705467 0.4057668 +v -0.4711811 -0.6258493 0.7620793 +v 0.1703846 -0.6165953 0.8896564 +v 0.2400606 -0.5612926 0.533344 +v 0.1880215 0.6327841 0.7084238 +v 0.1163331 0.7541573 0.713165 +v 0.100159 0.7380699 0.8179204 +v 0.1679575 0.6166408 0.8124056 +v 0.200672 -0.1340181 0.7023411 +v -0.4437264 -0.07827711 0.5842938 +v -0.4882605 -0.2339485 0.8195409 +v 0.1566076 -0.3004689 0.9360079 +v -0.5668983 -0.153164 1.372545 +v -0.5654945 -0.09694707 1.387292 +v -0.5352027 -0.09873223 1.391213 +v -0.5366067 -0.1549492 1.376466 +v -0.5602463 -0.0410521 1.372193 +v -0.5299547 -0.04283714 1.376114 +v -0.5525603 -0.0004557371 1.331296 +v -0.5222687 -0.002240896 1.335217 +v -0.5444958 0.01396394 1.275557 +v -0.5142041 0.0121789 1.279478 +v -0.5382137 -0.001656532 1.219913 +v -0.5079221 -0.003441811 1.223833 +v -0.5353975 -0.04313207 1.179272 +v -0.5051057 -0.04491711 1.183193 +v -0.5368013 -0.09934902 1.164526 +v -0.5065097 -0.1011341 1.168447 +v -0.5420495 -0.1552441 1.179624 +v -0.5117577 -0.1570292 1.183545 +v -0.5497354 -0.1958404 1.220522 +v -0.5194438 -0.1976254 1.224443 +v -0.5578001 -0.21026 1.276261 +v -0.5275083 -0.2120451 1.280182 +v -0.564082 -0.1946396 1.331905 +v -0.5337903 -0.1964245 1.335826 +v -0.0329057 -0.12406 1.469806 +v -0.03622153 -0.06709445 1.480928 +v -0.006471068 -0.06675661 1.488066 +v -0.00315541 -0.1237221 1.476944 +v -0.03250965 -0.01196694 1.462847 +v -0.002759278 -0.01162887 1.469985 +v -0.02276504 0.02655149 1.420407 +v 0.006985396 0.02688944 1.427545 +v -0.009598464 0.03813946 1.36498 +v 0.02015188 0.03847754 1.372118 +v 0.003461808 0.01969242 1.311418 +v 0.03321221 0.02003026 1.318556 +v 0.01291636 -0.02384722 1.274073 +v 0.04266688 -0.02350926 1.28121 +v 0.01623219 -0.08081281 1.26295 +v 0.04598251 -0.08047485 1.270088 +v 0.01252028 -0.1359404 1.281032 +v 0.04227075 -0.1356025 1.28817 +v 0.002775699 -0.1744587 1.323472 +v 0.03252605 -0.1741208 1.33061 +v -0.01039085 -0.1860468 1.378898 +v 0.01935959 -0.1857089 1.386036 +v -0.02345118 -0.1675997 1.432461 +v 0.006299257 -0.1672617 1.439598 +v -1.237007 -0.3354527 0.05446619 +v -1.242879 -0.3650843 0.06168467 +v -1.52143 -0.3277774 -0.01176876 +v -1.515558 -0.2981458 -0.01898724 +v -1.244681 -0.3949494 0.05335158 +v -1.523233 -0.3576425 -0.02010185 +v -1.241931 -0.4170459 0.03169978 +v -1.520483 -0.379739 -0.04175371 +v -1.235365 -0.4254528 0.002530754 +v -1.513917 -0.3881459 -0.07092267 +v -1.226743 -0.4179177 -0.02633953 +v -1.505294 -0.3806108 -0.09979302 +v -1.218375 -0.3964595 -0.04717547 +v -1.496926 -0.3591526 -0.1206289 +v -1.212503 -0.366828 -0.05439395 +v -1.491054 -0.3295211 -0.1278474 +v -1.2107 -0.3369628 -0.04606086 +v -1.489252 -0.2996559 -0.1195143 +v -1.21345 -0.3148664 -0.024409 +v -1.492002 -0.2775595 -0.09786248 +v -1.220016 -0.3064594 0.004759967 +v -1.498568 -0.2691525 -0.06869346 +v -1.228639 -0.3139945 0.03363031 +v -1.50719 -0.2766876 -0.03982311 +vn 0.9569639 -0.1907014 0.2187534 +vn -0.997901 -0.03356349 -0.0553817 +vn -0.06825111 -0.9591125 0.2746727 +vn 0.08373406 0.9507729 -0.2983614 +vn 0.713724 -0.3234625 -0.621265 +vn -0.1765566 0.2993769 0.9376573 +vn -0.4085218 -0.2245084 -0.8847067 +vn 0.7972381 0.03173991 -0.60283 +vn -0.8444199 0.1885533 0.5014008 +vn -0.2437157 -0.8758306 0.4165615 +vn 0.02290267 0.9547629 -0.2964849 +vn -0.5684606 -0.2458833 -0.7851077 +vn 0.5680075 0.2450975 0.7856811 +vn 0.7832585 -0.4430157 -0.436169 +vn -0.8382075 0.2212178 0.4984685 +vn 0.1030978 -0.9298757 0.3531319 +vn 0.5092837 0.5031076 -0.6982213 +vn -0.55529 -0.2357195 -0.7975522 +vn 0.5340253 0.2563642 0.8056639 +vn 0.9766218 -0.1298008 -0.1713525 +vn -0.8103972 0.2230306 0.5417691 +vn -0.09330811 -0.9582981 0.270108 +vn 0.09074469 0.9580565 -0.2718332 +vn -0.5386893 -0.2496945 -0.804653 +vn 0.5997282 0.2081006 0.7726709 +vn 0.7867218 -0.2834809 -0.548368 +vn -0.7229251 0.4477072 0.5262486 +vn -0.0265629 -0.9609848 0.2753229 +vn -0.1789014 0.9790759 -0.09697782 +vn -0.6509994 -0.1659666 -0.7407125 +vn 0.6673695 0.2410789 0.7046268 +vn 0.652649 -0.1235939 -0.7475117 +vn -0.3983943 0.3901295 0.8301091 +vn 0.05856571 -0.9843767 0.16605 +vn -0.008142552 0.9854042 -0.170036 +vn -0.8355413 -0.2221299 -0.5025228 +vn 0.7576169 0.1170607 0.6421164 +vn 0.9948064 -0.002502957 0.1017544 +vn -0.9779248 0.07752381 0.1940444 +vn -0.009136375 -0.9244196 0.3812676 +vn -0.03570751 0.9446403 -0.326159 +vn -0.3791707 -0.1742797 -0.9087663 +vn 0.1965775 0.3352261 0.9214016 +vn -0.9612636 -0.00370929 -0.2756059 +vn 0.8362456 0.08932716 0.5410305 +vn -0.1415781 -0.9099243 0.3898633 +vn 0.1628876 0.9323508 -0.3227841 +vn 0.6883982 -0.2052624 -0.6956834 +vn -0.5221746 0.3674582 0.7696157 +vn -0.7991133 -0.1212622 -0.5888239 +vn 0.5641338 0.1983463 0.801506 +vn -0.1698395 -0.9211485 0.3502001 +vn 0.1686204 0.9213292 -0.3503138 +vn 0.7704202 -0.328422 -0.5464356 +vn -0.780626 0.3070168 0.544393 +vn -0.538388 0.08585525 -0.8383121 +vn 0.6220954 0.07974066 0.7788702 +vn -0.04604406 -0.874482 0.4828677 +vn 0.2004509 0.9311816 -0.3045003 +vn 0.7608867 -0.3546334 -0.5434029 +vn -0.7609707 0.3542849 0.5435126 +vn -0.3288772 -0.1538423 -0.9317577 +vn 0.1324522 0.3597076 0.9236162 +vn -0.1235548 -0.9780371 0.1678624 +vn 0.07959764 0.9786155 -0.1896736 +vn 0.9600133 -0.2247096 -0.1669734 +vn -0.9410123 0.1365451 0.3095988 +vn -0.5288213 -0.3070584 -0.7912415 +vn 0.4792973 0.4700584 0.7411607 +vn -0.08632459 -0.9502222 0.2993759 +vn 0.2108686 0.9757826 -0.05816047 +vn 0.878283 -0.1895195 -0.4389776 +vn -0.879386 0.2631918 0.3967498 +vn -0.5838803 -0.4738283 -0.6592197 +vn 0.5739762 0.2002345 0.7940136 +vn -0.1286851 -0.9191621 0.372265 +vn -0.1580988 0.5379184 -0.828039 +vn 0.8124277 -0.3566538 -0.4612585 +vn -0.7624003 0.360582 0.5373327 +vn 0.9578111 -0.1017457 0.2687857 +vn -0.9498115 -0.1505654 -0.2742049 +vn -0.05979262 -0.9783897 0.1979352 +vn -0.03043159 0.9622679 0.270397 +vn 0.2082945 -0.04713537 -0.9769297 +vn -0.1851656 0.07116599 0.9801271 +vn 0.7648863 -0.1612633 0.6236531 +vn -0.9425254 -0.1888786 0.275628 +vn -0.05391086 -0.9813643 0.1844389 +vn 0.2700432 0.9595919 -0.07912095 +vn 0.3715066 -0.2266721 -0.9003348 +vn -0.1051258 0.143549 0.9840438 +vn -0.1436638 -0.1758625 -0.9738753 +vn -0.1869752 0.9748594 -0.1212 +vn 0.8836125 -0.1284499 -0.4502551 +vn -0.7040639 -0.1793405 -0.6871179 +vn 0.3061898 -0.9519531 -0.005769216 +vn 0.1024381 0.9546047 -0.2797077 +vn -0.3323967 -0.1711053 -0.9274887 +vn 0.522625 0.09601502 0.8471388 +vn 0.5391164 0.6144133 -0.5760641 +vn 0.8348259 0.1375037 0.5330653 +vn 0.7154112 -0.2916345 -0.6349301 +vn -0.7870606 -0.1597664 -0.5958275 +vn 0.5109242 0.3213387 -0.7973067 +vn 0.888683 0.09115248 0.4493704 +vn -0.07262835 -0.9921252 0.1020431 +vn -0.2768868 0.153784 0.9485169 +vn 0.9000731 0.3596458 0.2460153 +vn -0.003120532 0.04147346 0.9991347 +vn -0.7845577 -0.2598333 -0.5629885 +vn -0.2173309 0.9332414 -0.2860556 +vn -0.7779116 -0.3097503 -0.546725 +vn 0.2964228 -0.06462295 -0.952868 +vn 0.9970614 0.07614405 -0.008414578 +vn -0.7929625 -0.2191869 -0.5684784 +vn -0.205377 0.08233131 0.9752138 +vn 0.9513153 -0.2600529 -0.1654439 +vn -0.8872751 0.2602253 0.3808225 +vn 0.5416715 -0.8405892 -0.001347121 +vn 0.1896248 0.9621233 -0.1958604 +vn -0.3279684 -0.1544053 -0.9319849 +vn 0.3276524 0.1520554 0.9324822 +vn -0.3214529 -0.9255535 0.200047 +vn -0.6801062 -0.659434 0.3203163 +vn 0.1152634 -0.9895819 0.08626735 +vn 0.2594464 0.4182883 0.8704726 +vn 0.7736753 0.3463944 0.5305069 +vn 0.8888605 0.4569146 0.03400309 +vn 0.8816017 0.293419 -0.3697077 +vn 0.5491626 0.2540382 -0.796169 +vn 0.2791437 0.2665445 -0.9225144 +vn -0.03712798 0.2397894 -0.9701147 +vn -0.5489843 0.2877129 -0.7847531 +vn -0.7382878 0.4670341 -0.4866316 +vn -0.9427112 0.3335676 0.005311821 +vn -0.6999025 0.4046099 0.5885808 +vn -0.2542983 0.4751005 0.8423847 +vn 0.03616728 0.9693331 -0.2430748 +vn -0.1224053 -0.8798252 0.4592652 +vn 0.2814868 0.2309431 -0.9313595 +vn -0.3105949 -0.3914313 0.8662058 +vn 0.1424959 -0.9866365 -0.07901628 +vn 0.1007047 -0.8829123 -0.4586114 +vn 0.1051642 -0.2231308 -0.9690992 +vn 0.342038 0.1204604 -0.9319331 +vn 0.2297945 0.5980837 -0.7677827 +vn 0.04238184 0.9455265 -0.3227744 +vn -0.08608557 0.9962184 0.01174881 +vn -0.2907363 0.7927412 0.5357555 +vn -0.3755775 0.386466 0.8423691 +vn -0.3607908 -0.1215903 0.9246869 +vn 0.9587274 0.05255775 0.2794271 +vn -0.2479478 -0.388518 0.8874546 +vn -0.01280787 -0.9398778 -0.3412707 +vn -0.2032908 -0.9666933 -0.1554896 +vn 0.07860322 -0.944998 -0.3174908 +vn 0.3898046 -0.2237834 -0.8932936 +vn -0.1219485 0.07233988 -0.9898968 +vn -0.2591425 0.5039212 -0.8239591 +vn -0.4064011 0.8043746 -0.4333818 +vn -0.5406004 0.8369554 -0.08518676 +vn -0.7026407 0.629146 0.3323725 +vn -0.7426439 0.2934644 0.6019625 +vn -0.5777324 0.02432563 0.8158637 +vn -0.4745902 -0.3708549 0.7982674 +vn 0.6458075 -0.7634127 -0.01157211 +vn 0.564117 -0.7478698 -0.3499469 +vn 0.0971847 -0.9729032 -0.2097965 +vn -0.2822013 0.06839196 -0.9569144 +vn -0.3099881 0.0527762 -0.9492745 +vn -0.5334349 0.407487 -0.7412164 +vn -0.6909351 0.5879517 -0.4206204 +vn -0.7809463 0.6203087 -0.07307547 +vn -0.7990696 0.5308568 0.2822748 +vn -0.7097847 0.2972081 0.6386493 +vn -0.6865622 0.1114024 0.7184858 +vn -0.5238314 -0.488323 0.6979551 +vn -0.5736969 -0.8088176 0.1291745 +vn -0.1895764 -0.8570529 -0.4790837 +vn 0.8475209 -0.5151644 0.1277263 +vn -0.6669855 -0.07933044 -0.7408354 +vn -0.6286703 0.02426152 -0.7772934 +vn -0.795304 0.2587953 -0.5481939 +vn -0.8750882 0.3704489 -0.3114294 +vn -0.9138495 0.3997962 -0.07100711 +vn -0.9150165 0.3559845 0.1897892 +vn -0.8348122 0.2111809 0.5084203 +vn -0.6917177 0.04163839 0.7209666 +vn -0.2936977 -0.694295 0.6570359 +vn 0.3061173 -0.9241852 0.2284162 +vn 0.8010122 -0.5983925 0.0174874 +vn -0.5289966 -0.7518154 -0.3936192 +vn -0.7820408 -0.2517728 -0.5701075 +vn -0.8486776 -0.04526364 -0.5269701 +vn -0.8977574 0.1252444 -0.42231 +vn -0.9543985 0.2189714 -0.2029167 +vn -0.9501351 0.2806826 -0.1358699 +vn -0.8720165 0.4096165 0.2679583 +vn -0.6263434 0.2756543 0.7291836 +vn -0.6241481 -0.04149199 0.7802036 +vn -0.980978 -0.1205835 -0.1521245 +vn -0.131306 0.08601528 -0.9876032 +vn -0.1798311 -0.3880226 0.9039354 +vn -0.02038096 -0.9916708 -0.1271756 +vn -0.4391864 -0.6911865 -0.5739133 +vn -0.395452 -0.2206697 -0.8915843 +vn 0.2043079 0.1168857 -0.9719033 +vn 0.1831488 0.5972299 -0.7808797 +vn 0.1013086 0.9426147 -0.3181415 +vn 0.02137449 0.9974149 0.06860507 +vn -0.0882466 0.7986546 0.5952843 +vn -0.1574966 0.3926252 0.9061127 +vn -0.1845614 -0.1168058 0.9758553 +vn -0.959183 -0.008718266 -0.2826517 +vn -0.2441586 -0.3890994 0.8882501 +vn 0.2482487 -0.9314392 -0.2660707 +vn 0.3106926 -0.9504866 -0.006734466 +vn 0.220974 -0.9288582 -0.2973094 +vn 0.3036656 -0.2095039 -0.9294597 +vn 0.6289793 0.09661943 -0.7713947 +vn 0.6305524 0.5324109 -0.5647499 +vn 0.5395035 0.8252919 -0.1668215 +vn 0.4627521 0.8574224 0.2251384 +vn 0.3771839 0.662674 0.6469897 +vn 0.285906 0.3251753 0.9013983 +vn 0.04800707 0.04326273 0.9979097 +vn -0.00649249 -0.3568368 0.9341443 +vn -0.4934278 -0.7990519 -0.343577 +vn -0.2441948 -0.772887 -0.5856745 +vn -0.2753344 -0.9458377 -0.1719946 +vn 0.7560341 0.005630754 -0.6545081 +vn 0.7667314 0.08721796 -0.6360157 +vn 0.8228472 0.4505127 -0.3463537 +vn 0.7732289 0.6341008 0.005768128 +vn 0.6609248 0.6654854 0.3468541 +vn 0.4909603 0.5710017 0.6579628 +vn 0.2383507 0.3263738 0.9146962 +vn 0.1867976 0.1381647 0.9726341 +vn 0.09556214 -0.4694911 0.8777505 +vn 0.4609715 -0.7765412 0.4295219 +vn 0.4661811 -0.8361545 -0.2889999 +vn 0.2923394 -0.9502561 -0.107476 +vn 0.9429393 -0.1356806 -0.3040663 +vn 0.9446517 0.07410719 -0.3195957 +vn 0.9486176 0.3137986 -0.04068321 +vn 0.8824588 0.4256917 0.2001326 +vn 0.7845659 0.4529996 0.4233768 +vn 0.6483379 0.4047558 0.6448494 +vn 0.4184449 0.2499969 0.8731583 +vn 0.1938632 0.06878059 0.9786145 +vn -0.06439419 -0.6876373 0.7231932 +vn -0.3265753 -0.9441634 0.04363554 +vn -0.6493086 -0.6437927 -0.4048818 +vn 0.1855994 -0.7814402 -0.5957383 +vn 0.9465916 -0.2634735 -0.185866 +vn 0.999858 0.01299718 0.0107318 +vn 0.9752107 0.1841871 0.1226345 +vn 0.9111453 0.3258781 0.2522256 +vn 0.7905333 0.4298989 0.4361697 +vn 0.5671177 0.4544374 0.6869238 +vn 0.1208076 0.298458 0.9467462 +vn 0.1100323 -0.0191333 0.9937438 +vn 0.9140515 -0.06838518 0.3997916 +vn 0.6333415 0.05256424 -0.7720852 +vn -0.6937799 -0.2941662 -0.6573703 +vn 0.5217542 0.2911025 0.8018927 +vn -0.4233564 -0.8599198 -0.2851442 +vn -0.08199181 0.9552971 -0.2840507 +vn 0.7918658 -0.1384253 -0.5948001 +vn -0.7917988 0.1360864 0.5954287 +vn 0.1884336 -0.913923 0.3594962 +vn 0.4125747 -0.6352954 0.6528261 +vn -0.1110479 -0.9934953 0.0252093 +vn 0.8828279 0.1376091 -0.4490866 +vn 0.5614013 -0.008814199 -0.8274968 +vn 0.08954754 -0.1528759 -0.98418 +vn -0.3526057 -0.2575428 -0.8996338 +vn -0.8828551 -0.3070641 -0.355357 +vn -0.9677017 -0.2471594 -0.04965634 +vn -0.8828282 -0.1376069 0.4490867 +vn -0.561402 0.008816739 0.8274963 +vn -0.5569816 0.1156667 0.822431 +vn 0.9756944 0.1999871 0.08958601 +vn 0.7932801 0.2904859 0.5350931 +vn 0.9677014 0.2471606 0.04965596 +vn -0.2300537 0.9619527 -0.1473849 +vn 0.8195742 0.322347 -0.4736988 +vn 0.5043724 0.1787606 -0.84478 +vn 0.0416578 0.03749076 -0.9984283 +vn -0.4939647 -0.1235908 -0.8606534 +vn -0.6836811 -0.07228705 -0.726192 +vn -0.9811441 0.1382372 -0.1350804 +vn -0.8241057 0.1634132 0.5423522 +vn -0.6348011 0.1983894 0.7467725 +vn -0.540383 0.2185716 0.8125348 +vn 0.8296632 0.2919251 0.4758559 +vn 0.7317619 0.472261 0.4914204 +vn 0.9028047 0.4297756 0.01538504 +vn 0.9026744 -0.2539032 -0.3474366 +vn 0.5968202 -0.42432 -0.680998 +vn 0.1688481 -0.5976713 -0.7837598 +vn -0.4157919 -0.6725658 -0.6121866 +vn -0.5437439 -0.6505999 -0.5301532 +vn -0.8994291 -0.4294101 -0.08145104 +vn -0.8401269 -0.2853164 0.4612824 +vn -0.4604787 -0.5232947 0.7170231 +vn -0.317858 -0.4376669 0.8410791 +vn 0.6394975 -0.1709088 0.7495553 +vn 0.8132748 -0.09686562 0.5737606 +vn 0.98402 -0.1334713 0.1178564 +vn 0.07962442 -0.9883968 0.1293509 +vn -0.5937051 -0.8044296 0.02018264 +vn -0.5671104 -0.6602652 0.4923776 +vn 0.8592532 -0.2957645 -0.4173815 +vn 0.7729281 -0.2723204 -0.5730826 +vn 0.2264371 -0.1138085 -0.9673541 +vn -0.263468 0.05329967 -0.9631946 +vn -0.6827769 0.2061252 -0.7009481 +vn -0.9191363 0.3037204 -0.250883 +vn -0.7878867 0.2229834 -0.5740322 +vn -0.9830768 0.1645647 -0.0804893 +vn 0.1492681 0.2514231 0.9562979 +vn 0.2634686 -0.0532974 0.9631945 +vn 0.6827776 -0.2061238 0.7009478 +vn 0.9191368 -0.3037193 0.2508828 +vn 0.2735424 0.9618543 -0.003290199 +vn 0.8531747 -0.1047382 -0.5110019 +vn 0.8314531 -0.1274988 -0.540768 +vn 0.2851885 0.07366648 -0.9556364 +vn -0.1952281 0.2375386 -0.9515573 +vn -0.6064155 0.387405 -0.6943901 +vn -0.8381972 0.4831096 -0.2530426 +vn -0.9198918 0.3894306 -0.04629117 +vn -0.9668205 0.1658053 0.1943369 +vn 0.1940005 0.2193468 0.9561646 +vn 0.3624122 0.1339697 0.9223391 +vn 0.5285686 0.1585983 0.8339436 +vn 0.9677399 0.09441177 0.2335939 +vn 0.7436109 -0.6241788 -0.2396742 +vn 0.6269392 -0.6193944 -0.4725441 +vn 0.06232002 -0.5447932 -0.8362516 +vn -0.3688914 -0.3747455 -0.8505792 +vn -0.7503211 -0.2254583 -0.6214395 +vn -0.9671555 -0.1401587 -0.2120514 +vn -0.955731 -0.1430994 0.2571011 +vn -0.8673134 -0.2739823 0.4155734 +vn 0.04419371 -0.4454787 0.8942012 +vn 0.2577844 -0.5677313 0.781811 +vn 0.1987766 -0.7024765 0.6833848 +vn 0.8917593 -0.3626915 0.2705928 +vn -0.2493092 -0.9683961 0.007350747 +vn 0.5165515 -0.8303983 0.2088379 +vn 0.5159529 -0.1204325 0.8481089 +vn -0.6299688 -0.08923091 -0.7714772 +vn 0.9706381 -0.1520688 -0.1863782 +vn -0.285652 -0.9462283 -0.1518388 +vn 0.06124417 0.9590147 -0.2766585 +vn 0.7226025 -0.1824465 -0.6667526 +vn -0.8716927 0.09690373 0.4803765 +vn -0.2603956 0.5723444 -0.7775706 +vn -0.9884087 0.1493208 0.02741331 +vn -0.2780218 -0.3253585 -0.9037952 +vn 0.9878373 -0.1265848 -0.09029935 +vn -0.08379549 0.3739423 -0.9236588 +vn -0.9939454 0.1043043 -0.03454401 +vn 0.0980069 -0.9942534 0.04306883 +vn -0.2995829 0.1489956 0.9423643 +vn -0.8997366 0.3749575 -0.2233404 +vn -0.5795504 0.07614571 0.8113711 +vn 0.9402246 -0.3397105 -0.02396892 +vn 0.3642892 0.9225503 -0.1272573 +vn 0.926274 -0.3713961 -0.0638864 +vn 0.3752969 -0.006948556 -0.9268786 +vn -0.8617621 0.09639674 -0.49807 +vn 0.9812765 -0.1793001 -0.0703423 +vn -0.451594 0.03722082 0.8914468 +vn 0.9631375 0.01624409 0.2685187 +vn -0.9817946 -0.1526918 0.1129804 +vn -0.6226451 -0.7706311 0.1357972 +vn 0.4804576 0.8621594 -0.1607535 +vn -0.1646126 -0.1991352 -0.9660476 +vn 0.1603379 0.1884737 0.9689012 +vn 0.1165098 0.100903 0.9880506 +vn 0.5054644 0.8249774 -0.2528203 +vn -0.4795905 0.8690587 -0.1213669 +vn -0.1183005 -0.1006353 -0.9878651 +vn 0.8318335 -0.5529154 0.04834879 +vn 0.5116499 0.8322884 -0.2133319 +vn -0.9633177 -0.02070295 -0.267564 +vn 0.7801582 -0.1341638 0.6110265 +vn 0.4860114 -0.7611365 0.4294928 +vn -0.3712068 0.8506512 -0.3722876 +vn 0.6772631 -0.1619225 -0.7177018 +vn -0.6773779 0.1482252 0.7205473 +vn -0.6429244 0.0556304 0.7639068 +vn -0.3248316 0.8184577 -0.473932 +vn 0.4241752 0.888117 0.1769849 +vn 0.6443058 -0.05531485 -0.7627649 +vn -0.6941881 -0.5804876 -0.425602 +vn -0.3519673 0.8239062 -0.4441818 +vn 0.1599807 0.1261739 0.9790232 +vn 0.6316993 0.1192186 0.7659915 +vn 0.9341545 0.08031878 0.347713 +vn 0.9863037 0.01989762 -0.1637347 +vn 0.7741737 -0.04585509 -0.6313101 +vn 0.3546042 -0.099321 -0.9297264 +vn -0.159981 -0.1261739 -0.9790231 +vn -0.6316994 -0.1192186 -0.7659914 +vn -0.9341545 -0.08031879 -0.3477131 +vn -0.9863037 -0.01989762 0.1637348 +vn -0.7741737 0.04585509 0.6313101 +vn -0.3546042 0.099321 0.9297264 +vn -0.04013929 0.9918086 -0.1212625 +vn 0.0401393 -0.9918086 0.1212625 +vn -0.3990347 -0.0595824 -0.914998 +vn -0.01338026 0.9998582 -0.01022459 +vn 0.2022116 -0.03916629 -0.9785584 +vn -0.2080069 0.01494504 0.9780132 +vn 0.1683753 0.5623946 -0.8095443 +vn -0.4083847 0.4433169 -0.7979299 +vn -0.4657318 0.8782639 -0.1083813 +vn -0.814423 0.003664196 0.58026 +vn -0.1783462 -0.9828898 -0.04604651 +vn -0.9775478 -0.006963463 -0.210599 +vn 0.4918742 0.02394796 0.8703369 +vn 0.4176182 0.9046533 0.08483835 +vn 0.6778042 0.461762 -0.5721515 +vn 0.7702473 -0.007588817 -0.6377001 +vn 0.9776739 0.007750587 0.2099852 +vn -0.1718569 -0.9837051 -0.05281642 +vn -0.1751666 -0.982601 -0.06174104 +vn -0.002523149 -0.9873918 0.1582754 +vn 0.07630099 -0.9918707 0.1018366 +vn 0.1840316 -0.9821115 0.03986715 +vn 0.1560892 -0.9865077 -0.04938409 +vn 0.04523071 -0.9794973 -0.1963147 +vn 0.3540121 -0.5460834 0.7592552 +vn 0.8814769 -0.4420881 0.1660018 +vn 0.6418251 -0.4647792 -0.6099516 +vn 0.1860847 -0.3300672 -0.9254341 +vn -0.3128679 -0.4470152 -0.8380281 +vn -0.864633 -0.469575 -0.1786317 +vn -0.6644459 -0.509901 0.5463631 +vn -0.1704779 -0.4252155 0.8888921 +vn 0.01940467 -0.9996309 -0.01901759 +vn 0.9782429 -0.002971517 0.2074419 +vn -0.9758518 0.0218596 -0.2173371 +vn 0.6629324 -0.722019 0.1980134 +vn -0.01192129 0.999671 -0.02271271 +vn 0.163876 0.05212319 -0.985103 +vn -0.2014272 0.08373904 0.9759175 +vn -0.5365512 -0.82895 -0.157971 +vn 0.01877784 -0.9991844 0.03574713 +vn 0.1989034 0.4749347 -0.8572482 +vn 0.2403417 0.02404431 -0.9703906 +vn -0.9756305 -0.008721746 -0.2192464 +vn 0.1190946 0.6464674 -0.7535891 +vn 0.1478037 0.6742202 -0.7235891 +vn 0.02544496 0.6504396 -0.7591317 +vn 0.1975959 0.2753682 -0.9408125 +vn 0.6126228 0.01989609 -0.790125 +vn -0.8746667 -0.03059844 -0.4837583 +vn -0.1257378 0.9325943 0.3383164 +vn -0.9824607 -0.01588858 -0.1857915 +vn 0.1769565 -0.6810078 -0.7105736 +vn 0.9800665 0.01620169 0.1980082 +vn -0.112421 0.922565 0.3691007 +vn 0.9349399 0.01686107 0.3544053 +vn -0.02682251 0.9995696 -0.01188359 +vn -0.9447438 -0.0345492 -0.3259842 +vn 0.1824922 0.6045764 -0.7753605 +vn 0.2046297 0.4324653 -0.8781233 +vn 0.223173 0.05157282 -0.9734136 +vn 0.02503035 -0.9995499 -0.0165402 +vn 0.9758765 0.00342779 0.2182963 +vn -0.02808888 0.9994797 0.01585608 +vn 0.2285231 0.04565391 -0.9724675 +vn 0.970978 0.026452 0.2377017 +vn -0.970978 -0.02645206 -0.2377017 +vn 0.04135545 -0.9974637 -0.05793056 +vn -0.04135469 0.9974638 0.05792952 +vn 0.3905745 0.0644966 -0.9183092 +vn -0.2355666 -0.06607796 0.9696093 +vn 0.2173458 0.1689505 -0.9613618 +vn 0.2500047 0.0617302 -0.9662749 +vn 0.2238886 0.02876874 -0.9741901 +vn -0.6680044 0.01430377 -0.7440199 +vn 0.1545963 -0.7790121 -0.6076514 +vn 0.9358899 0.05200448 -0.3484331 +vn 0.08781133 0.8672341 -0.4900962 +vn 0.9922783 0.03421587 0.1192191 +vn -0.01268942 0.9981627 -0.05924756 +vn -0.9355484 -0.0183028 -0.3527241 +vn 0.06941644 -0.9822506 -0.1742561 +vn 0.2355663 0.06607737 -0.9696094 +vn 0.9662886 0.01679523 0.2569131 +vn -0.9662886 -0.01679528 -0.256913 +vn 0.02773085 -0.9988543 -0.03900109 +vn -0.02773007 0.9988544 0.03900006 +vn 0.4098687 0.04193353 -0.9111801 +vn -0.2559638 -0.04480912 0.9656473 +vn 0.2391069 0.1480685 -0.9596372 +vn 0.270266 0.04031539 -0.9619413 +vn 0.2438289 0.007594484 -0.9697886 +vn -0.6526273 0.01025307 -0.7576097 +vn 0.1552234 -0.7922173 -0.5901675 +vn 0.943373 0.03205821 -0.3301815 +vn 0.1104833 0.8567069 -0.5038323 +vn 0.9900791 0.02206833 0.1387678 +vn 0.003292202 0.9969821 -0.07756222 +vn -0.928437 -0.0112773 -0.3713187 +vn 0.05834693 -0.986192 -0.1549874 +vn 0.2559636 0.04480854 -0.9656474 +vn 0.9738737 0.04148941 0.2232679 +vn -0.9788284 -0.02747927 -0.20283 +vn 0.7198377 -0.6750921 0.1615065 +vn -0.04296271 0.998996 0.0127046 +vn 0.3172083 0.01712207 -0.9482014 +vn -0.2155804 -0.02347395 0.9762039 +vn 0.03247585 -0.9994363 -0.008505574 +vn -0.3328381 -0.9353716 -0.1195775 +vn -0.819069 -0.5178697 -0.2468544 +vn 0.4038076 -0.9094764 0.09895489 +vn 0.206298 0.07840636 -0.9753428 +vn 0.1676867 0.01977602 -0.985642 +vn 0.216515 -0.06549805 -0.9740797 +vn 0.1257317 0.009706109 -0.9920168 +vn 0.2193863 -0.02129879 -0.9754056 +vn 0.1858401 -0.04591358 -0.9815067 +vn 0.2820674 0.04326404 -0.9584186 +vn 0.2049689 0.0120775 -0.978694 +vn 0.9742609 0.02041406 0.2244971 +vn -0.9742609 -0.02041402 -0.2244971 +vn 0.01714918 -0.9997243 0.01604234 +vn -0.01714949 0.9997241 -0.01605312 +vn 0.6929902 0.005568612 -0.7209255 +vn -0.2247193 0.009307652 0.9743791 +vn 0.2239702 -0.001164356 -0.9745953 +vn -0.2920373 -0.0116943 -0.9563354 +vn -0.05239519 0.9962583 0.06873262 +vn 0.4427071 0.8810746 0.1664874 +vn 0.8191861 0.5298075 0.2196319 +vn 0.9761647 0.03657937 0.2139263 +vn 0.8715809 -0.4664506 0.1508992 +vn 0.5334574 -0.8444957 0.0474388 +vn 0.05239463 -0.9962584 -0.06873275 +vn -0.442707 -0.8810745 -0.1664874 +vn -0.8191861 -0.5298075 -0.2196319 +vn -0.9761647 -0.03657931 -0.2139263 +vn -0.8715808 0.4664508 -0.1508992 +vn -0.5334574 0.8444955 -0.0474388 +vn 0.2692526 0.04647991 -0.9619473 +vn -0.2106116 -0.07830304 0.9744288 +vn 0.2763472 0.08060417 -0.9576718 +vn 0.2656986 0.1140637 -0.9572846 +vn 0.2401593 0.1378933 -0.9608897 +vn 0.2065716 0.1457075 -0.9675214 +vn 0.1739376 0.1354121 -0.9754022 +vn 0.1509995 0.1097665 -0.9824208 +vn 0.1439046 0.07564086 -0.9866965 +vn 0.1545542 0.04218143 -0.9870834 +vn 0.1800942 0.01835206 -0.9834782 +vn 0.2136806 0.01053847 -0.9768468 +vn 0.2463152 0.0208337 -0.9689658 +vn 0.8715807 -0.4664503 0.1509015 +vn 0.9761643 0.03657786 0.2139281 +vn 0.8191859 0.5298073 0.2196333 +vn 0.4427079 0.8810741 0.1664877 +vn -0.05239537 0.9962583 0.06873184 +vn -0.5334566 0.8444961 -0.04744032 +vn -0.8715803 0.4664512 -0.1509014 +vn -0.9761644 -0.03657817 -0.213928 +vn -0.819186 -0.5298071 -0.2196333 +vn -0.4427072 -0.8810745 -0.1664878 +vn 0.05239563 -0.9962584 -0.06873211 +vn 0.5334608 -0.8444932 0.04744177 +vn 0.2106116 0.07830299 -0.9744288 +vn 0.4712287 0.851351 0.2305321 +vn 0.8416862 0.4898266 0.2272317 +vn 0.9866143 -0.00294642 0.1630446 +vn 0.86718 -0.4949294 0.05517009 +vn 0.5153854 -0.854297 -0.06748737 +vn 0.02549338 -0.9847563 -0.1720617 +vn -0.4712293 -0.8513507 -0.2305321 +vn -0.8416862 -0.4898266 -0.2272317 +vn -0.9866143 0.002946366 -0.1630447 +vn -0.86718 0.4949295 -0.0551701 +vn -0.5153853 0.8542971 0.06748743 +vn -0.02549341 0.9847563 0.1720617 +vn 0.195658 0.1155609 -0.9738396 +vn -0.1610662 -0.173915 0.9714995 +vn 0.2195228 0.1399395 -0.9655189 +vn 0.2276253 0.1733144 -0.9582009 +vn 0.2177941 0.2067432 -0.9538465 +vn 0.1926624 0.2312691 -0.9536225 +vn 0.1589659 0.2403188 -0.957589 +vn 0.1257323 0.2314692 -0.9646831 +vn 0.1018666 0.2070896 -0.9730042 +vn 0.09376489 0.1737143 -0.9803221 +vn 0.1035968 0.1402853 -0.9846765 +vn 0.1287278 0.1157606 -0.9849004 +vn 0.1624247 0.1067104 -0.9809338 +vn 0.5153856 -0.8542972 -0.06748508 +vn 0.867179 -0.4949309 0.05517169 +vn 0.9866141 -0.002946826 0.163046 +vn 0.8416867 0.4898257 0.2272318 +vn 0.4712285 0.8513513 0.2305313 +vn -0.0254926 0.9847565 0.1720601 +vn -0.5153848 0.8542976 0.06748521 +vn -0.8671792 0.4949306 -0.05517164 +vn -0.9866141 0.002947046 -0.1630459 +vn -0.8416863 -0.4898263 -0.227232 +vn -0.4712283 -0.8513513 -0.2305316 +vn 0.02549773 -0.9847566 -0.172059 +vn 0.1610662 0.173915 -0.9714995 +vn 0.9824358 0.01616033 0.1859002 +vn -0.9824376 -0.01608029 -0.1858976 +vn -0.1858848 -0.009981853 0.9825209 +vn 0.1858852 0.009962445 -0.982521 +vn 0.02293995 -0.9993243 -0.02872028 +vn -0.03253003 0.9991349 0.02590801 +vn 0.9633333 0.004094298 0.2682765 +vn -0.9633329 -0.004014234 -0.268279 +vn -0.2681911 0.05716073 0.9616685 +vn 0.268191 -0.05718011 -0.9616674 +vn -0.00435109 -0.9993854 0.03478466 +vn -0.004969433 0.9992504 -0.03839353 +vn -0.160246 0.9851928 -0.06096327 +vn -0.1022317 0.9946993 0.01104421 +vn -0.01567445 0.9988784 0.04468108 +vn 0.07623269 0.9966101 0.03093464 +vn 0.1488634 0.9885023 -0.02651195 +vn 0.1827563 0.9767275 -0.1122658 +vn 0.16883 0.9644408 -0.2033481 +vn 0.1108158 0.9549342 -0.2753552 +vn 0.02425859 0.9507552 -0.3089923 +vn -0.06764852 0.9530234 -0.2952459 +vn -0.1402793 0.9611313 -0.2377992 +vn -0.1741722 0.9729061 -0.1520455 +vn -0.4663357 0.8802114 0.08808468 +vn -0.3005906 0.9073713 0.293807 +vn -0.05329906 0.9193107 0.3899064 +vn 0.2092776 0.9128304 0.3506332 +vn 0.4167818 0.8896667 0.1865107 +vn 0.5136131 0.8560264 -0.05848486 +vn 0.4738257 0.8209233 -0.3187071 +vn 0.3080807 0.7937633 -0.5244294 +vn 0.06078908 0.781824 -0.6205288 +vn -0.2017876 0.7883043 -0.5812557 +vn -0.4092918 0.811468 -0.4171331 +vn -0.5061231 0.8451083 -0.1721375 +vn -0.709053 0.6688336 0.2233956 +vn -0.4580804 0.7099595 0.5349019 +vn -0.08362934 0.7280381 0.6804165 +vn 0.3139664 0.7182254 0.6209489 +vn 0.6281709 0.6831509 0.3724328 +vn 0.7747939 0.6322123 0.001458674 +vn 0.7145473 0.579059 -0.392572 +vn 0.4635746 0.5379333 -0.7040785 +vn 0.08912379 0.5198545 -0.849593 +vn -0.3084719 0.5296671 -0.7901253 +vn -0.6226766 0.5647418 -0.5416093 +vn -0.7692994 0.6156803 -0.1706349 +vn -0.8629302 0.3831677 0.329445 +vn -0.5581607 0.433109 0.7077241 +vn -0.1034444 0.4550629 0.8844303 +vn 0.3793772 0.443147 0.8122153 +vn 0.7609327 0.4005539 0.5104293 +vn 0.9389848 0.3386966 0.05993507 +vn 0.8658243 0.2741494 -0.4185575 +vn 0.5610547 0.224208 -0.7968366 +vn 0.1063386 0.2022543 -0.9735427 +vn -0.376483 0.2141702 -0.9013277 +vn -0.7580387 0.2567631 -0.5995415 +vn -0.9360908 0.3186204 -0.1490473 +vn -0.91624 0.05777932 0.3964413 +vn -0.5931842 0.1107173 0.7974172 +vn -0.1111851 0.1339884 0.9847258 +vn 0.4006059 0.1213574 0.908178 +vn 0.805055 0.07620876 0.5882847 +vn 0.9937901 0.01063999 0.1107608 +vn 0.91624 -0.05777977 -0.3964415 +vn 0.5931841 -0.1107175 -0.7974173 +vn 0.1111852 -0.1339887 -0.9847258 +vn -0.400606 -0.1213577 -0.908178 +vn -0.805055 -0.07620908 -0.5882846 +vn -0.9937901 -0.01064039 -0.1107608 +vn -0.8658244 -0.2741494 0.4185574 +vn -0.5610546 -0.2242083 0.7968364 +vn -0.1063387 -0.2022543 0.9735427 +vn 0.3764831 -0.2141702 0.9013277 +vn 0.7580387 -0.2567632 0.5995416 +vn 0.9360908 -0.3186206 0.1490474 +vn 0.8629303 -0.3831674 -0.3294451 +vn 0.5581604 -0.4331089 -0.7077243 +vn 0.1034446 -0.4550628 -0.8844303 +vn -0.3793772 -0.4431469 -0.8122153 +vn -0.7609329 -0.4005536 -0.5104293 +vn -0.9389849 -0.3386964 -0.05993514 +vn -0.7145473 -0.5790591 0.3925721 +vn -0.4635746 -0.5379332 0.7040784 +vn -0.08912387 -0.5198545 0.849593 +vn 0.308472 -0.5296672 0.7901251 +vn 0.6226766 -0.5647418 0.5416094 +vn 0.7692994 -0.6156802 0.1706351 +vn 0.7090529 -0.6688337 -0.2233955 +vn 0.45808 -0.7099596 -0.5349019 +vn 0.08362951 -0.7280382 -0.6804165 +vn -0.3139665 -0.7182255 -0.6209486 +vn -0.6281709 -0.6831509 -0.3724329 +vn -0.7747937 -0.6322125 -0.001458513 +vn -0.4738257 -0.8209234 0.3187068 +vn -0.3080806 -0.7937633 0.5244293 +vn -0.06078907 -0.781824 0.6205288 +vn 0.2017877 -0.7883044 0.5812556 +vn 0.4092918 -0.811468 0.417133 +vn 0.5061232 -0.8451083 0.1721376 +vn 0.4663357 -0.8802114 -0.0880847 +vn 0.3005906 -0.9073713 -0.2938071 +vn 0.05329907 -0.9193107 -0.3899065 +vn -0.2092776 -0.9128304 -0.3506333 +vn -0.4167818 -0.8896667 -0.1865106 +vn -0.5136131 -0.8560264 0.05848479 +vn -0.1688298 -0.9644408 0.2033483 +vn -0.1108157 -0.9549343 0.2753552 +vn -0.02425861 -0.9507552 0.3089919 +vn 0.06764852 -0.9530234 0.2952458 +vn 0.1402791 -0.9611313 0.2377991 +vn 0.1741721 -0.972906 0.1520461 +vn 0.1602457 -0.9851928 0.06096302 +vn 0.1022315 -0.9946994 -0.01104416 +vn 0.01567453 -0.9988784 -0.04468038 +vn -0.0762326 -0.9966101 -0.0309343 +vn -0.1488633 -0.9885023 0.0265118 +vn -0.1827562 -0.9767275 0.1122651 +vn -0.1605157 0.9856929 0.05142185 +vn -0.0809629 0.9917759 0.09912364 +vn 0.01193042 0.9948462 0.1006915 +vn 0.09327364 0.994081 0.05570566 +vn 0.1412709 0.9896854 -0.02378023 +vn 0.1430614 0.9828371 -0.1164679 +vn 0.09816597 0.9753712 -0.1975206 +vn 0.01861338 0.9692882 -0.2452221 +vn -0.07428003 0.966218 -0.2467901 +vn -0.1556233 0.9669832 -0.2018044 +vn -0.2036205 0.9713789 -0.1223183 +vn -0.205411 0.9782271 -0.02963081 +vn -0.3967242 0.8702987 0.2918735 +vn -0.1694447 0.8876777 0.4281552 +vn 0.09594892 0.8964493 0.4326344 +vn 0.3283447 0.894263 0.3041109 +vn 0.4654721 0.8817047 0.0770225 +vn 0.470588 0.8621396 -0.1877828 +vn 0.3423216 0.8408098 -0.4193506 +vn 0.1150421 0.8234307 -0.5556324 +vn -0.1503515 0.8146591 -0.5601115 +vn -0.3827474 0.8168453 -0.4315881 +vn -0.5198748 0.8294036 -0.2044996 +vn -0.5249907 0.8489689 0.06030567 +vn -0.5794887 0.6499307 0.4917144 +vn -0.2353401 0.6762462 0.6980732 +vn 0.1665213 0.6895282 0.7048557 +vn 0.5184169 0.6862176 0.5102444 +vn 0.7260562 0.6672021 0.1663851 +vn 0.7338029 0.637576 -0.2345852 +vn 0.5395808 0.6052783 -0.5852271 +vn 0.195432 0.578963 -0.791586 +vn -0.206429 0.5656809 -0.7983685 +vn -0.5583247 0.5689912 -0.6037571 +vn -0.765964 0.5880071 -0.2598978 +vn -0.7737106 0.6176329 0.1410726 +vn -0.6899838 0.3576975 0.6292654 +vn -0.2720655 0.3896537 0.8798582 +vn 0.2159365 0.4057827 0.8880945 +vn 0.643262 0.4017628 0.6517674 +vn 0.8954096 0.3786708 0.2342007 +vn 0.9048167 0.3426947 -0.2527193 +vn 0.6689627 0.3034735 -0.6785225 +vn 0.2510442 0.2715171 -0.9291154 +vn -0.2369576 0.2553883 -0.9373516 +vn -0.664283 0.2594082 -0.7010245 +vn -0.9164309 0.2825 -0.2834578 +vn -0.925838 0.3184763 0.2034623 +vn -0.7202418 0.02873832 0.6931277 +vn -0.2772482 0.06261218 0.9587561 +vn 0.2400338 0.07970894 0.9674866 +vn 0.6929989 0.07544763 0.7169799 +vn 0.9602756 0.05097025 0.274359 +vn 0.9702471 0.01283536 -0.2417762 +vn 0.7202417 -0.02873877 -0.6931278 +vn 0.2772481 -0.06261237 -0.9587561 +vn -0.2400337 -0.0797092 -0.9674866 +vn -0.6929989 -0.07544799 -0.7169798 +vn -0.9602756 -0.05097058 -0.2743589 +vn -0.9702471 -0.01283576 0.2417762 +vn -0.6689627 -0.3034735 0.6785225 +vn -0.2510443 -0.2715174 0.9291152 +vn 0.2369575 -0.2553883 0.9373516 +vn 0.6642832 -0.2594081 0.7010245 +vn 0.9164308 -0.2825 0.2834578 +vn 0.9258379 -0.3184763 -0.2034622 +vn 0.6899838 -0.3576972 -0.6292655 +vn 0.2720652 -0.3896536 -0.8798583 +vn -0.2159363 -0.4057827 -0.8880945 +vn -0.643262 -0.4017628 -0.6517674 +vn -0.8954098 -0.3786706 -0.2342006 +vn -0.9048169 -0.3426944 0.2527193 +vn -0.5395808 -0.6052784 0.5852271 +vn -0.195432 -0.5789629 0.791586 +vn 0.206429 -0.5656809 0.7983685 +vn 0.5583247 -0.5689913 0.603757 +vn 0.765964 -0.588007 0.2598979 +vn 0.7737107 -0.6176329 -0.1410724 +vn 0.5794886 -0.6499308 -0.4917143 +vn 0.2353397 -0.6762463 -0.6980731 +vn -0.1665211 -0.6895282 -0.7048557 +vn -0.5184169 -0.6862178 -0.5102442 +vn -0.7260562 -0.6672021 -0.1663851 +vn -0.7338027 -0.6375762 0.2345853 +vn -0.3423218 -0.8408098 0.4193503 +vn -0.1150421 -0.8234307 0.5556322 +vn 0.1503515 -0.8146592 0.5601115 +vn 0.3827473 -0.8168454 0.4315878 +vn 0.5198747 -0.8294036 0.2044995 +vn 0.5249907 -0.8489688 -0.06030561 +vn 0.3967243 -0.8702986 -0.2918735 +vn 0.1694446 -0.8876777 -0.4281553 +vn -0.09594895 -0.8964493 -0.4326345 +vn -0.3283447 -0.894263 -0.3041109 +vn -0.465472 -0.8817048 -0.0770224 +vn -0.470588 -0.8621396 0.1877827 +vn -0.09816568 -0.9753712 0.1975207 +vn -0.01861328 -0.9692883 0.245222 +vn 0.07427987 -0.9662181 0.2467898 +vn 0.1556232 -0.9669832 0.2018042 +vn 0.2036203 -0.9713789 0.1223183 +vn 0.2054112 -0.9782271 0.02963142 +vn 0.1605154 -0.985693 -0.05142201 +vn 0.08096276 -0.991776 -0.09912354 +vn -0.01193011 -0.9948462 -0.1006909 +vn -0.09327342 -0.994081 -0.05570537 +vn -0.1412709 -0.9896854 0.02378007 +vn -0.1430616 -0.9828371 0.1164672 +vn 0.9172581 0.3454369 0.1982698 +vn -0.9599158 0.1573121 -0.2319797 +vn 0.2439957 -0.2263681 -0.9429865 +vn -0.01523236 0.9985978 -0.05069951 +vn 0.2275414 -0.04591337 -0.9726854 +vn -0.2275413 0.04591385 0.9726854 +vn -0.9384454 -0.2769384 -0.2064594 +vn -0.2273873 -0.1333704 0.9646281 +vn 0.9493031 -0.2347617 0.2090711 +vn 0.2291718 0.1895287 -0.9547561 +vn -0.9737476 -0.01726318 -0.2269749 +vn -0.2529002 0.2849131 0.9245897 +vn 0.9705976 0.1361125 0.1985288 +vn 0.230101 0.318344 -0.9196253 +vn 0.0370996 -0.9978266 0.05445878 +vn 0.2438111 0.1839153 -0.9522244 +vn -0.9144634 0.3337024 -0.2289092 +vn -0.2402129 0.2857901 0.9276971 +vn 0.8933634 -0.4168473 0.1677508 +vn 0.03458804 -0.9986615 0.03845821 +vn -0.9095783 -0.3640508 -0.2003357 +vn -0.1593744 0.3052734 0.9388333 +vn 0.9505993 0.243388 0.1926742 +vn -0.0214197 -0.9994188 0.02652074 +vn 0.2266197 -0.2229099 -0.9481323 +vn 0.2319569 -0.2215809 -0.9471526 +vn 0.2266196 -0.2229102 -0.9481322 +vn 0.2439249 -0.2263535 -0.9430084 +vn 0.9493036 -0.2347595 0.2090711 +vn -0.2275359 -0.1333734 0.9645926 +vn -0.9384453 -0.2769388 -0.2064592 +vn 0.2320565 -0.2215588 -0.9471333 +vn 0.320732 -0.2013122 -0.9255292 +vn 0.2494136 -0.2199371 -0.943091 +vn 0.9493033 -0.2347608 0.2090711 +vn -0.2277868 -0.1333788 0.9645327 +vn -0.9384456 -0.2769376 -0.2064593 +vn 0.2274679 -0.2163499 -0.9494478 +vn 0.2321145 0.01197731 -0.9726148 +vn 0.1133857 -0.2038764 -0.9724084 +vn 0.2260104 -0.2237021 -0.9480911 +vn 0.2294497 -0.2369517 -0.9440374 +vn 0.8986361 0.4033228 0.1725801 +vn -0.2336667 0.0781921 0.9691676 +vn 0.2490985 -0.07473077 -0.9655907 +vn 0.2439155 -0.2262139 -0.9430443 +vn 0.219596 0.1989647 -0.9550868 +vn -0.2314054 0.2690122 0.9349246 +vn 0.1858514 0.05465463 -0.9810566 +vn 0.1846779 0.1510472 -0.9711224 +vn 0.9473491 0.2587099 0.1886768 +vn -0.08094452 0.8232751 0.5618417 +vn 0.00423114 -0.9997641 0.02130677 +vn 0.2562452 0.06114506 -0.964676 +vn 0.02041075 -0.998035 0.05924256 +vn -0.1674614 0.3274871 0.9298973 +vn -0.2657682 0.2500699 0.9310383 +vn 0.9717627 0.0319766 0.2337838 +vn -0.9717627 -0.0319769 -0.2337837 +vn 0.2241184 0.1848499 -0.9568707 +vn -0.02484113 0.9991332 -0.03340427 +vn 0.2346492 -0.02665374 -0.9717147 +vn -0.2346493 0.02665262 0.9717147 +vn -0.9615751 0.1401983 -0.2360463 +vn -0.2356071 0.1857058 0.9539406 +vn 0.936679 0.2735117 0.2186866 +vn 0.0398553 0.9542962 -0.296193 +vn -0.0562528 0.9975765 -0.040947 +vn -0.03754571 0.9991064 0.0194091 +vn 0.04133636 0.9989935 -0.01741991 +vn 0.224463 0.18023 -0.9576709 +vn -0.9338109 0.2715403 -0.2329446 +vn -0.2347219 0.2323883 0.9438757 +vn 0.9187927 0.3325024 0.2127492 +vn 0.2346493 -0.02665376 -0.9717146 +vn -0.9717627 -0.03197675 -0.2337838 +vn -0.2346493 0.02665321 0.9717146 +vn 0.9717627 0.03197629 0.2337836 +vn 0.02484103 -0.9991332 0.03340429 +vn 0.2155783 0.1002896 -0.9713228 +vn -0.9544289 0.2035498 -0.2182497 +vn 0.01122388 0.9788314 -0.2043607 +vn -0.169937 0.9841619 -0.05046666 +vn 0.9485406 0.2356295 0.2115408 +vn 0.1284051 0.991578 0.01688543 +vn -0.222496 0.1113212 0.9685572 +vn -0.04682884 0.9976525 0.04996636 +vn 0.9757001 0.01919029 0.2182684 +vn -0.9757001 -0.01919053 -0.2182682 +vn 0.03685053 -0.9951676 -0.09101495 +vn 0.9757001 0.01919034 0.2182684 +vn 0.2188049 -0.03275791 -0.9752186 +vn -0.218805 0.03275768 0.9752186 +vn -0.01156481 0.9992791 -0.03616033 +vn -0.2326717 -0.01953347 0.9723592 +vn -0.9757001 -0.01918968 -0.2182683 +vn 0.2321076 0.0193922 -0.9724968 +vn 0.8825749 0.4244905 0.2021621 +vn -0.0136953 0.999234 -0.03665884 +vn -0.2197586 0.03610482 0.9748859 +vn -0.9148114 0.3487469 -0.2037051 +vn 0.2197346 -0.03609984 -0.9748916 +vn -0.01342327 0.9992412 -0.03656248 +vn -0.09117041 -0.9957545 0.01268521 +vn -0.0247193 -0.9821969 0.1862212 +vn 0.1446799 -0.9874972 0.06258576 +vn 0.2008253 -0.2262521 -0.9531417 +vn -0.9193689 -0.3155765 -0.2348878 +vn -0.1953326 -0.2311481 0.9531085 +vn 0.9275548 -0.3291631 0.1769007 +vn 0.02944361 -0.9987814 0.03960736 +vn 0.1740095 -0.6732327 -0.7186643 +vn -0.01656017 -0.9994058 0.03022928 +vn -0.9279877 -0.2665936 -0.2603205 +vn -0.1590036 -0.6233771 0.765584 +vn 0.9426012 -0.2270242 0.2448735 +vn 0.01156484 -0.9992791 0.0361604 +vn 0.9705973 0.04083893 0.2372197 +vn -0.9705973 -0.0408386 -0.2372196 +vn 0.3839431 -0.9211403 0.06394012 +vn 0.3378012 0.9345399 0.1119175 +vn 0.381229 0.03684267 -0.9237463 +vn -0.2372458 -0.004276593 0.9714403 +vn -0.418865 0.9051144 -0.07293916 +vn -0.2886545 -0.9521406 -0.1005332 +vn 0.2933841 0.2379899 -0.9258977 +vn 0.1486898 0.2332358 -0.9609851 +vn 0.08577748 0.02441209 -0.9960152 +vn 0.2051116 -0.2609799 -0.943302 +vn 0.2742203 -0.2571354 -0.9266524 +vn 0.2372457 0.004276647 -0.9714403 +vn 0.5660561 -0.8030853 0.1861035 +vn -0.6362056 0.08273843 -0.7670702 +vn 0.1320998 -0.4942878 -0.8592027 +vn 0.6594363 0.7313563 0.173959 +vn 0.2680247 -0.06448776 -0.9612513 +vn -0.2680981 0.06401628 0.9612623 +vn -0.02427714 0.8351024 0.5495586 +vn -0.3943004 0.9121891 -0.111527 +vn 0.2614067 0.8155825 -0.5162284 +vn 0.1416472 0.9891528 0.0388958 +vn -0.8940187 -0.3662774 -0.2580145 +vn -0.3163472 -0.4682854 0.825005 +vn 0.7580667 -0.6068321 0.2389347 +vn -0.1381058 -0.9902115 -0.02020067 +vn -0.6961044 0.6910205 -0.1947547 +vn -0.9456664 0.1670648 0.2789345 +vn -0.8865312 -0.388027 -0.2519874 +vn -0.952333 0.1518367 -0.2645893 +vn 0.4766867 -0.0538228 0.8774241 +vn 0.7666716 0.6087087 0.2041776 +vn 0.8545656 -0.1564138 -0.4952297 +vn 0.949612 -0.1516743 0.2742845 +vn 0.2719498 -0.1266505 -0.9539408 +vn -0.9245829 0.1055058 -0.3660807 +vn -0.1753134 -0.9781112 0.1120881 +vn 0.1823679 -0.5151024 -0.8375031 +vn 0.9338591 -0.1375799 0.3301196 +vn -0.2263126 0.2444007 0.942895 +vn -0.1352095 0.6954219 0.7057669 +vn -0.007877151 0.9601048 0.2795293 +vn 0.1215659 0.9675286 -0.221608 +vn 0.2184353 0.715704 -0.6633655 +vn 0.2567747 0.272107 -0.9273751 +vn 0.2263114 -0.2444018 -0.942895 +vn 0.135208 -0.6954218 -0.7057672 +vn 0.007875925 -0.9601048 -0.2795297 +vn -0.1215666 -0.9675286 0.2216078 +vn -0.2184356 -0.7157037 0.6633658 +vn -0.2567752 -0.2721062 0.9273752 +vn -0.9664392 0.06447192 -0.2486738 +vn 0.9664391 -0.06447195 0.248674 +vn -0.953595 0.1551981 -0.2580119 +vn 0.9566923 -0.1507967 0.2489982 +vn 0.1803478 0.03944124 -0.9828118 +vn -0.9540186 0.1551973 -0.2564418 +vn 0.2627979 0.04098207 -0.9639802 +vn -0.3222069 0.01296756 0.9465805 +vn 0.2022434 0.9764276 0.07541107 +vn -0.311996 -0.02793108 0.9496728 +vn 0.960689 -0.1628229 0.2248674 +vn 0.2595809 0.02114298 -0.9654899 +vn 0.1484542 0.9876331 0.05042007 +vn 0.2686283 0.02613948 -0.9628893 +vn -0.1429382 -0.9875703 -0.06537244 +vn 0.9578804 -0.1444845 0.2481723 +vn -0.3604285 -0.00455281 0.9327757 +vn -0.9583398 0.1439111 -0.2467274 +vn 0.07883199 -0.7498327 -0.6569144 +vn 0.9501715 -0.1416824 0.2776693 +vn -0.2516469 -0.0215181 0.9675799 +vn -0.9581112 0.1465019 -0.2460898 +vn -0.006394397 -0.7752903 -0.6315728 +vn -0.1604165 -0.9840993 -0.07625736 +vn -0.2973714 -0.7955645 0.5278707 +vn -0.3492652 -0.819978 0.4534865 +vn -0.1540132 -0.9857721 -0.06732946 +vn 0.1276074 0.9864249 0.1033551 +vn 0.1349068 0.9890677 0.059542 +vn 0.1373042 0.9883803 0.06520707 +vn 0.150932 0.986977 0.05564156 +vn 0.9617086 -0.1460781 0.2319003 +vn -0.3099164 -0.00274958 0.9507598 +vn -0.9555235 0.146383 -0.2560213 +vn 0.2600585 0.01045656 -0.9655362 +vn 0.1429493 0.9880525 0.05760014 +vn 0.9611241 -0.1471805 0.2336202 +vn -0.9611019 0.1473142 -0.2336269 +vn -0.05511182 -0.9375135 -0.3435568 +vn 0.276016 0.4734744 -0.8364431 +vn 0.2438044 0.04972815 -0.9685487 +vn -0.2349422 0.01542426 0.971887 +vn 0.07772834 0.9717089 0.223025 +vn 0.1511974 0.9863855 -0.06467757 +vn -0.00624194 0.8589792 0.5119725 +vn 0.2419137 0.8301989 -0.5022425 +vn -0.09725478 0.6233471 0.7758737 +vn -0.3059326 -0.944406 -0.1204268 +vn -0.1883583 -0.9643459 0.1858982 +vn 0.1438198 -0.9895571 -0.009617914 +vn -0.2439 -0.04971444 0.9685253 +vn 0.9615863 -0.1421932 0.234804 +vn 0.243899 0.04971389 -0.9685256 +vn -0.9615865 0.142193 -0.2348032 +vn -0.1260445 -0.9885894 -0.08248519 +vn 0.9974685 -0.06876983 0.01809325 +vn -0.9974685 0.06876983 -0.01809325 +vn -0.06684084 -0.9935603 -0.09148911 +vn 0.06684084 0.9935603 0.09148911 +vn 0.02426843 0.09004813 -0.9956417 +vn -0.02426843 -0.09004813 0.9956417 +vn 0.4940326 0.5576478 -0.6670539 +vn -0.4940326 -0.5576478 0.6670539 +vn 0.7402184 -0.6722259 -0.01375191 +vn -0.7402184 0.6722259 0.01375191 +vn -0.4560796 -0.4869716 -0.7448826 +vn 0.4560796 0.4869716 0.7448826 +vn 0.5874497 0.4298044 -0.6856903 +vn -0.5874497 -0.4298044 0.6856903 +vn 0.634859 -0.7702068 0.06112012 +vn -0.634859 0.7702068 -0.06112012 +vn -0.5018536 -0.4712216 -0.7253228 +vn 0.5018536 0.4712216 0.7253228 +vn 0.7854005 0.1939527 -0.5878167 +vn -0.5629063 -0.5423652 0.6236799 +vn 0.06226803 -0.9076992 0.4149758 +vn -0.5007827 0.8524486 -0.1501605 +vn -0.4815567 -0.4560398 -0.7484189 +vn 0.482218 0.4554787 0.7483348 +vn 0.9400238 -0.3384652 0.042386 +vn -0.9399883 0.338504 -0.04286006 +vn -0.3346571 -0.9387219 -0.08249775 +vn 0.3346503 0.9387172 0.08257782 +vn 0.09527642 0.07211488 -0.9928353 +vn -0.08818005 -0.07952762 0.9929248 +vn 0.9231144 -0.3834527 -0.02870347 +vn -0.9231144 0.3834527 0.02870347 +vn -0.3841835 -0.9165732 -0.1108897 +vn 0.3841835 0.9165732 0.1108897 +vn 0.01621212 0.1133913 -0.9934182 +vn -0.01621212 -0.1133913 0.9934182 +vn -0.3473173 -0.9278169 -0.1361119 +vn 0.3328353 0.9327539 0.1385311 +vn 0.9429227 -0.3314159 -0.03256089 +vn -0.9878513 -0.1507428 -0.03776902 +vn -0.006981731 -0.1293004 0.9915809 +vn 0.02400619 0.1358842 -0.9904338 +vn 0.9365027 -0.3499072 0.02297311 +vn -0.9364855 0.3499214 -0.02344958 +vn -0.3498067 -0.9365875 -0.02095926 +vn 0.349803 0.936587 0.02103967 +vn 0.05661809 0.02006229 -0.9981943 +vn -0.0496204 -0.02756629 0.9983877 +vn -0.3644481 -0.9282366 -0.07452775 +vn 0.350139 0.9335065 0.07725393 +vn 0.9365078 -0.3467254 -0.05229307 +vn -0.9904415 -0.1376608 0.00866816 +vn 0.03080848 -0.07855333 0.9964337 +vn -0.01366801 0.0849313 -0.9962931 +vn 0.9161963 -0.398196 -0.04499278 +vn -0.9161963 0.398196 0.04499278 +vn -0.4001328 -0.9151732 -0.04849593 +vn 0.4001328 0.9151732 0.04849593 +vn -0.02186531 0.06243491 -0.9978095 +vn 0.02186531 -0.06243491 0.9978095 +vn 0.9310498 -0.3589725 0.06546072 +vn -0.9310111 0.3589857 -0.06593598 +vn -0.3576942 -0.933172 -0.03528425 +vn 0.3576869 0.9331717 0.03536448 +vn 0.1015147 0.01763803 -0.9946777 +vn -0.09460676 -0.02520948 0.9951955 +vn -0.3698357 -0.9247795 -0.08946756 +vn 0.3554712 0.9301937 0.09154157 +vn 0.9344612 -0.3559318 -0.009733931 +vn -0.9911378 -0.1279867 -0.0355708 +vn -0.01467578 -0.07698146 0.9969245 +vn 0.03185448 0.08319227 -0.9960243 +vn 0.9133384 -0.4071882 -0.003278105 +vn -0.9133384 0.4071882 0.003278105 +vn -0.406522 -0.9113201 -0.06508137 +vn 0.406522 0.9113201 0.06508137 +vn 0.02351297 0.06077398 -0.9978746 +vn -0.02351297 -0.06077398 0.9978746 +vn 0.9324944 -0.353048 0.07623237 +vn -0.9324459 0.3530733 -0.07670634 +vn -0.34894 -0.9348338 -0.06577724 +vn 0.3489311 0.9348316 0.0658572 +vn 0.1221197 0.04309319 -0.9915795 +vn -0.1151599 -0.0506198 0.9920564 +vn -0.3600177 -0.9251981 -0.1199817 +vn 0.3455676 0.9304445 0.1218849 +vn 0.9374502 -0.3481172 0.001224138 +vn -0.9890555 -0.1349665 -0.05961011 +vn -0.03484569 -0.1017798 0.9941965 +vn 0.05194846 0.1081032 -0.9927815 +vn 0.916633 -0.3996852 0.005969518 +vn -0.916633 0.3996852 -0.005969518 +vn -0.3973187 -0.9126402 -0.09605086 +vn 0.3973187 0.9126402 0.09605086 +vn 0.04383813 0.08567154 -0.9953585 +vn -0.04383813 -0.08567154 0.9953585 +vn 0.9702308 -0.1539975 0.1869142 +vn -0.9702309 0.1539975 -0.1869141 +vn -0.1425353 -0.9870666 -0.07337018 +vn 0.1425353 0.9870666 0.0733705 +vn 0.1957956 0.04454462 -0.9796326 +vn -0.1957954 -0.04454481 0.9796326 +vn 0.9412761 -0.01945828 -0.3370768 +vn -0.9412757 0.0194859 0.3370762 +vn 0.3374984 0.04262408 0.9403606 +vn -0.3374988 -0.04262302 -0.9403605 +vn -0.02465601 -0.9996846 -0.004783918 +vn 0.01494805 0.9998775 0.004646275 +vn 0.9324253 -0.01874678 -0.3608763 +vn -0.9324251 0.01877439 0.3608754 +vn 0.3612372 0.05584722 0.9308001 +vn -0.3612376 -0.05584615 -0.9308 +vn -0.01932846 -0.9997817 0.007935719 +vn 0.009619266 0.9999232 -0.007826354 +vn 0.9080508 -0.057432 -0.4149041 +vn -0.9070636 0.07265853 0.4146762 +vn 0.4040777 0.1476051 0.902737 +vn -0.4042817 -0.1453851 -0.9030058 +vn -0.01360637 -0.9996707 0.02175473 +vn 0.4020944 -0.5333588 0.74421 +vn -0.8878708 -0.3276624 0.3229905 +vn -0.4062842 0.4945453 -0.7683477 +vn 0.8942654 0.2894047 -0.3413715 +vn 0.08284889 0.780723 0.6193606 +vn -0.6727208 0.01643542 -0.7397139 +vn 0.6727201 -0.01640783 0.7397152 +vn -0.7396156 0.008157443 0.6729802 +vn 0.7396159 -0.008156457 -0.6729799 +vn 0.02537732 -0.9987795 -0.04237335 +vn -0.01674014 0.9987634 0.04681321 +vn -0.6383418 -0.02189738 -0.7694415 +vn 0.6329845 0.0362002 0.7733177 +vn -0.766472 0.1020258 0.6341227 +vn 0.7691731 -0.05542167 -0.6366326 +vn 0.0140817 -0.9993699 -0.03258136 +vn -0.7201867 -0.4681819 0.5119932 +vn 0.6816733 -0.2717917 0.6793017 +vn 0.7164402 0.4521021 -0.5313353 +vn -0.6748421 0.2479443 -0.6950625 +vn -0.3619784 0.7228012 0.588668 +vn -0.691262 0.01450255 -0.7224587 +vn 0.6912625 -0.01447511 0.7224588 +vn -0.7224959 -0.00595815 0.6913496 +vn 0.7224962 0.005959551 -0.6913493 +vn 0.0358212 -0.9980385 -0.05134219 +vn -0.02708039 0.9980876 0.05556906 +vn -0.9844596 0.150324 -0.09078557 +vn 0.4839926 -0.8747969 0.02194761 +vn 0.1681726 0.9855087 0.02214678 +vn 0.09404253 0.009536807 -0.9955225 +vn -0.09405959 -0.009505616 0.9955212 +vn 0.9814438 -0.1714898 0.0857871 +vn -0.1244818 -0.9852264 -0.1176151 +vn -0.2916383 -0.9557508 -0.03856917 +vn -0.1659751 -0.9790538 0.1179237 +vn 0.9781918 -0.1872932 0.08978887 +vn 0.02940334 -0.365564 -0.9303217 +vn -0.947112 -0.2996389 -0.1148717 +vn -0.1408537 -0.5011485 0.8538212 +vn 0.8345015 -0.5484086 0.05343422 +vn -0.1569154 -0.9870113 -0.03444375 +vn 0.988929 -0.1149485 0.09384162 +vn -0.9813365 0.1690607 -0.09163579 +vn -0.6379874 -0.7655366 -0.08322236 +vn 0.1657269 0.9852399 0.04286029 +vn 0.1041682 0.01746706 -0.9944063 +vn -0.104168 -0.01746709 0.9944063 +vn 0.9863248 -0.1219795 0.1108352 +vn -0.9869892 0.1164245 -0.110895 +vn -0.1092727 -0.9914596 -0.07118508 +vn 0.1091893 0.9914701 0.07116756 +vn 0.1177492 0.05099297 -0.9917333 +vn -0.1450988 -0.04657526 0.9883204 +vn -0.6440868 0.1191067 -0.7556229 +vn -0.6601322 0.02779097 0.7506353 +vn -0.1479827 -0.04627266 0.9879069 +vn -0.99133 0.1102136 -0.07153853 +vn 0.08617279 0.9290981 0.359654 +vn 0.9901843 -0.1200713 0.07154008 +vn -0.1885863 -0.9342978 0.3025276 +vn -0.1474226 -0.03380017 0.9884959 +vn 0.2045574 -0.04252154 0.9779306 +vn 0.6419793 -0.1889818 0.743067 +vn 0.9073831 -0.2848045 0.3090993 +vn 0.9296544 -0.3043141 -0.2076912 +vn 0.7028257 -0.2422829 -0.6688312 +vn 0.2876751 -0.1153322 -0.9507584 +vn -0.2045577 0.04252163 -0.9779305 +vn -0.6419792 0.1889818 -0.743067 +vn -0.9073831 0.2848045 -0.3090993 +vn -0.9296544 0.3043141 0.2076913 +vn -0.7028257 0.2422829 0.6688312 +vn -0.287675 0.1153322 0.9507585 +vn 0.3064294 0.9516222 -0.02271935 +vn -0.3064294 -0.9516222 0.02271936 +vn 0.9864082 -0.136955 0.09078711 +vn -0.9757665 0.2014161 -0.08550625 +vn -0.8421963 -0.5257751 -0.1194403 +vn 0.1865891 0.9789491 0.08272395 +vn 0.1115572 0.03502611 -0.9931406 +vn -0.1115571 -0.03502603 0.9931406 +vn 0.1102208 0.9907165 0.07957459 +vn 0.9666183 0.2344589 0.1033349 +vn 0.9959585 -0.02631263 0.08587425 +vn 0.9640665 -0.2497502 0.09055774 +vn 0.8912637 -0.4525206 0.02956639 +vn -0.1036718 -0.9908888 -0.08597361 +vn -0.9563611 -0.2195739 -0.1927715 +vn -0.9791278 0.07669735 -0.1882187 +vn -0.9597708 0.2455395 -0.1361997 +vn -0.8723635 0.4774167 -0.1051439 +vn -0.366848 0.11386 -0.9232869 +vn -0.08677167 -0.05529577 0.9946924 +vn -0.3659452 0.1192894 -0.9229594 +vn -0.1101238 -0.07385629 -0.99117 +vn 0.09685839 -0.1391462 -0.9855236 +vn 0.3831748 -0.1251022 -0.9151648 +vn 0.5061297 -0.0641881 -0.8600656 +vn 0.5154567 0.02984243 -0.8563959 +vn 0.4358278 0.109453 -0.8933499 +vn 0.1274937 0.2281895 -0.9652331 +vn -0.160419 0.2144405 -0.9634734 +vn 0.05896413 0.9940908 0.09114118 +vn 0.08985896 0.9799789 0.1776702 +vn 0.159049 0.9586556 0.2359723 +vn 0.247995 0.9358346 0.2504238 +vn 0.3328638 0.9176307 0.2171536 +vn 0.3909152 0.9089217 0.1450747 +vn 0.4065939 0.9120411 0.05350254 +vn 0.3756991 0.926153 -0.03302666 +vn 0.306509 0.9474763 -0.09132866 +vn 0.2175632 0.9702973 -0.1057804 +vn 0.1326942 0.9885012 -0.07250951 +vn 0.07464289 0.9972103 -0.000430894 +vn -0.2934754 0.948796 0.1168689 +vn -0.20521 0.9084784 0.3640822 +vn -0.007535754 0.8475584 0.5306486 +vn 0.2465808 0.7823594 0.5719368 +vn 0.4890489 0.7303512 0.4768839 +vn 0.6548998 0.7054698 0.2709588 +vn 0.6996938 0.7143818 0.009338685 +vn 0.6114284 0.7546993 -0.2378747 +vn 0.4137542 0.8156193 -0.4044411 +vn 0.1596376 0.8808185 -0.4457294 +vn -0.08283069 0.9328265 -0.3506762 +vn -0.2486815 0.9577081 -0.1447512 +vn -0.6029391 0.7875003 0.1277021 +vn -0.4692867 0.7264512 0.5020347 +vn -0.1699666 0.6342056 0.7542511 +vn 0.2148189 0.5354804 0.8167703 +vn 0.5819663 0.4567295 0.6728399 +vn 0.8330992 0.4190535 0.3610264 +vn 0.9009265 0.4325484 -0.03512082 +vn 0.767274 0.4935976 -0.4094534 +vn 0.4679541 0.5858431 -0.6616697 +vn 0.0831686 0.6845682 -0.7241888 +vn -0.2839788 0.7633192 -0.5802585 +vn -0.5351116 0.800995 -0.2684448 +vn -0.8346311 0.5368441 0.1232453 +vn -0.6723298 0.4627088 0.5778177 +vn -0.3088493 0.3506899 0.8840978 +vn 0.1584161 0.2308028 0.9600179 +vn 0.604263 0.1351713 0.7852356 +vn 0.9092272 0.08941949 0.4065835 +vn 0.9915937 0.1058065 -0.07447893 +vn 0.8292922 0.179942 -0.5290514 +vn 0.4658118 0.2919609 -0.8353312 +vn -0.001453529 0.4118479 -0.9112514 +vn -0.4473006 0.5074795 -0.7364692 +vn -0.7522649 0.5532311 -0.3578169 +vn -0.9678993 0.2284497 0.1047937 +vn -0.79586 0.1498663 0.5866405 +vn -0.4105704 0.03112621 0.9112975 +vn 0.08473084 -0.09595404 0.9917729 +vn 0.5573286 -0.1973237 0.8065037 +vn 0.8805908 -0.2458205 0.4051322 +vn 0.9678992 -0.2284499 -0.1047939 +vn 0.7958598 -0.1498666 -0.5866406 +vn 0.4105703 -0.03112643 -0.9112975 +vn -0.08473075 0.09595381 -0.9917729 +vn -0.5573289 0.1973233 -0.8065036 +vn -0.8805909 0.2458202 -0.4051322 +vn -0.9915936 -0.1058066 0.07447887 +vn -0.8292924 -0.179942 0.5290511 +vn -0.4658119 -0.2919609 0.8353312 +vn 0.001453643 -0.4118479 0.9112515 +vn 0.4473005 -0.5074795 0.7364691 +vn 0.7522647 -0.5532312 0.3578171 +vn 0.8346312 -0.536844 -0.1232455 +vn 0.6723298 -0.4627088 -0.5778177 +vn 0.3088494 -0.3506899 -0.8840977 +vn -0.1584161 -0.2308028 -0.9600179 +vn -0.6042631 -0.1351711 -0.7852356 +vn -0.9092272 -0.08941934 -0.4065835 +vn -0.9009265 -0.4325484 0.03512067 +vn -0.7672741 -0.4935974 0.4094533 +vn -0.4679541 -0.5858431 0.6616697 +vn -0.08316857 -0.6845682 0.7241887 +vn 0.2839788 -0.7633191 0.5802585 +vn 0.5351115 -0.800995 0.268445 +vn 0.6029389 -0.7875004 -0.1277023 +vn 0.4692865 -0.7264512 -0.5020347 +vn 0.1699667 -0.6342055 -0.7542511 +vn -0.214819 -0.5354804 -0.8167702 +vn -0.5819662 -0.4567295 -0.6728399 +vn -0.8330991 -0.4190536 -0.3610263 +vn -0.6996938 -0.7143819 -0.009338794 +vn -0.6114283 -0.7546993 0.2378748 +vn -0.4137541 -0.8156194 0.4044411 +vn -0.1596376 -0.8808185 0.4457293 +vn 0.08283059 -0.9328265 0.3506762 +vn 0.2486815 -0.9577081 0.144751 +vn 0.2934754 -0.948796 -0.116869 +vn 0.20521 -0.9084785 -0.3640821 +vn 0.007535716 -0.8475585 -0.5306486 +vn -0.2465809 -0.7823594 -0.5719368 +vn -0.489049 -0.7303513 -0.4768838 +vn -0.6548999 -0.7054698 -0.2709586 +vn -0.4065938 -0.9120411 -0.0535027 +vn -0.375699 -0.9261531 0.03302674 +vn -0.306509 -0.9474763 0.09132858 +vn -0.2175631 -0.9702974 0.1057798 +vn -0.1326943 -0.9885012 0.07250936 +vn -0.07464311 -0.9972102 0.0004314383 +vn -0.05896429 -0.9940908 -0.09114102 +vn -0.08985913 -0.9799789 -0.1776701 +vn -0.1590491 -0.9586557 -0.2359718 +vn -0.2479949 -0.9358346 -0.250424 +vn -0.3328637 -0.9176307 -0.2171534 +vn -0.3909149 -0.9089217 -0.1450755 +vn 0.9958858 -0.02588167 0.08684274 +vn -0.9991624 0.03909925 -0.01207814 +vn -0.05223295 -0.9985432 0.0135348 +vn 0.536699 0.4516805 -0.7126984 +vn 0.9613008 -0.03943664 -0.272664 +vn 0.6507016 0.005471341 0.7593139 +vn 0.8829706 0.2329366 0.407558 +vn 0.6909914 0.7221355 0.0324245 +vn 0.05720449 -0.024701 -0.9980569 +vn 0.167659 0.921329 -0.3507756 +vn -0.01086688 0.9294423 -0.3688075 +vn -0.9793943 0.08688896 0.1823104 +vn 0.00167431 -0.9999297 -0.01173991 +vn 0.5260717 -0.05745714 -0.8484971 +vn -0.9177536 0.0817814 -0.3886387 +vn -0.06295116 -0.9977882 -0.02135099 +vn 0.9497772 -0.07267494 0.304371 +vn -0.3597893 -0.05527939 -0.9313946 +vn 0.08648106 0.9111765 -0.402838 +vn -0.05221485 -0.9984046 0.02148949 +vn 0.1755996 -0.1064245 -0.9786923 +vn -0.0312276 -0.9993172 0.01975014 +vn -0.1802429 0.06253194 0.9816325 +vn 0.9933503 -0.07223783 0.08964898 +vn 0.04235953 -0.029463 -0.998668 +vn 0.009732121 0.9165913 -0.3997069 +vn -0.04234955 0.02982994 0.9986575 +vn -0.9960942 0.06400453 -0.06082527 +vn 0.0270466 0.9996254 0.004205366 +vn -0.03194302 0.5676621 0.8226418 +vn -0.06357482 0.02864853 0.9975658 +vn -0.6434174 0.7655139 0.001597139 +vn -0.8370954 0.3009977 0.4568061 +vn -0.7392836 0.07117753 0.6696219 +vn 0.04345784 0.3390278 -0.9397721 +vn -0.5002528 0.4133911 -0.7608252 +vn -0.05787661 0.99687 0.05385581 +vn -0.03380771 0.9891009 0.143306 +vn 0.03156853 0.9775404 0.2083704 +vn 0.1207346 0.9652864 0.2316146 +vn 0.2097985 0.9556223 0.2068106 +vn 0.2748958 0.9511376 0.1406044 +vn 0.2985838 0.953034 0.05073511 +vn 0.2745148 0.9608032 -0.03871494 +vn 0.2091386 0.9723636 -0.1037792 +vn 0.1199726 0.9846175 -0.1270236 +vn 0.0309086 0.9942816 -0.1022196 +vn -0.0341889 0.9987664 -0.03601247 +vn -0.4041852 0.9133048 0.05008734 +vn -0.3354212 0.8911083 0.3056447 +vn -0.148643 0.8580806 0.4915313 +vn 0.1061022 0.8230712 0.5579392 +vn 0.3605556 0.7954612 0.4870741 +vn 0.5465367 0.7826486 0.2979243 +vn 0.6142121 0.7880663 0.04117235 +vn 0.5454481 0.8102627 -0.2143849 +vn 0.3586698 0.8432904 -0.4002714 +vn 0.1039247 0.8782997 -0.466679 +vn -0.1505287 0.9059097 -0.3958141 +vn -0.33651 0.9187225 -0.2066643 +vn -0.6939993 0.7188514 0.04022189 +vn -0.5898761 0.6852413 0.4271892 +vn -0.3070548 0.6352304 0.7086605 +vn 0.07868268 0.5822191 0.8092157 +vn 0.4639785 0.5404118 0.701911 +vn 0.745593 0.5210105 0.4154989 +vn 0.8480675 0.529214 0.026723 +vn 0.7439443 0.5628241 -0.3602444 +vn 0.4611231 0.612835 -0.6417155 +vn 0.07538564 0.6658462 -0.7422707 +vn -0.3099102 0.7076537 -0.6349662 +vn -0.5915247 0.727055 -0.3485537 +vn -0.89573 0.4438477 0.02582737 +vn -0.7692876 0.4030333 0.4957427 +vn -0.4258424 0.3423023 0.8375484 +vn 0.04257889 0.2779279 0.9596578 +vn 0.5104644 0.2271589 0.8293521 +vn 0.8524439 0.203599 0.4815463 +vn 0.9768842 0.2135609 0.009435244 +vn 0.8504418 0.2543756 -0.4604801 +vn 0.5069968 0.3151065 -0.8022857 +vn 0.03857538 0.3794809 -0.924395 +vn -0.42931 0.4302499 -0.7940894 +vn -0.7712898 0.4538099 -0.4462834 +vn -0.9924858 0.1220518 0.008687613 +vn -0.8584568 0.07878844 0.5067981 +vn -0.4944047 0.01441353 0.8691123 +vn 0.002121612 -0.05382318 0.9985483 +vn 0.4980806 -0.1076382 0.8604242 +vn 0.860579 -0.1326118 0.4917498 +vn 0.9924856 -0.1220522 -0.00868784 +vn 0.8584567 -0.07878879 -0.5067983 +vn 0.4944047 -0.01441406 -0.8691124 +vn -0.002121763 0.05382279 -0.9985483 +vn -0.4980806 0.107638 -0.8604242 +vn -0.8605791 0.1326115 -0.4917497 +vn -0.9768842 -0.213561 -0.009435507 +vn -0.8504418 -0.2543756 0.4604801 +vn -0.5069967 -0.3151064 0.8022857 +vn -0.03857542 -0.3794808 0.9243951 +vn 0.4293101 -0.4302499 0.7940894 +vn 0.7712898 -0.4538097 0.4462835 +vn 0.89573 -0.4438477 -0.02582747 +vn 0.7692875 -0.4030332 -0.4957429 +vn 0.4258425 -0.3423023 -0.8375484 +vn -0.04257888 -0.2779279 -0.9596578 +vn -0.5104644 -0.2271591 -0.8293521 +vn -0.8524441 -0.2035991 -0.4815461 +vn -0.8480674 -0.5292141 -0.02672316 +vn -0.7439442 -0.5628241 0.3602443 +vn -0.461123 -0.6128351 0.6417155 +vn -0.07538562 -0.6658463 0.7422706 +vn 0.3099102 -0.7076538 0.634966 +vn 0.5915246 -0.7270551 0.3485537 +vn 0.6939991 -0.7188514 -0.04022204 +vn 0.5898758 -0.6852413 -0.4271894 +vn 0.3070548 -0.6352305 -0.7086604 +vn -0.0786827 -0.5822192 -0.8092157 +vn -0.4639784 -0.5404118 -0.7019111 +vn -0.745593 -0.5210105 -0.4154988 +vn -0.6142119 -0.7880664 -0.04117259 +vn -0.5454478 -0.8102628 0.2143848 +vn -0.3586698 -0.8432905 0.4002713 +vn -0.1039246 -0.8782998 0.4666789 +vn 0.1505287 -0.9059098 0.3958139 +vn 0.3365098 -0.9187225 0.2066643 +vn 0.404185 -0.9133049 -0.05008725 +vn 0.335421 -0.8911084 -0.3056446 +vn 0.1486429 -0.8580807 -0.491531 +vn -0.1061023 -0.8230715 -0.5579388 +vn -0.3605555 -0.7954614 -0.4870739 +vn -0.5465367 -0.7826487 -0.297924 +vn -0.2985838 -0.953034 -0.05073532 +vn -0.2745149 -0.9608032 0.03871492 +vn -0.2091387 -0.9723635 0.1037795 +vn -0.1199725 -0.9846175 0.1270235 +vn -0.03090844 -0.9942816 0.1022192 +vn 0.0341889 -0.9987664 0.03601264 +vn 0.05787661 -0.9968701 -0.05385559 +vn 0.03380783 -0.9891008 -0.1433061 +vn -0.03156846 -0.9775404 -0.2083704 +vn -0.1207346 -0.9652864 -0.2316144 +vn -0.2097987 -0.9556223 -0.2068104 +vn -0.2748962 -0.9511377 -0.1406033 +vn -0.8834927 0.03756888 -0.4669361 +vn 0.8470032 -0.01990775 0.5312151 +vn -0.04368636 -0.9974083 0.05716801 +vn -0.02787298 0.4366028 -0.8992225 +vn -0.6617084 -0.0004643569 -0.7497612 +vn -0.9662257 0.08365338 0.2437415 +vn -0.9475362 0.2582121 -0.1884187 +vn -0.5114442 0.7902746 -0.3374772 +vn 0.4883952 -0.08379377 -0.8685901 +vn 0.1250311 0.9057384 -0.4049756 +vn 0.2850257 0.9023104 -0.3234136 +vn 0.7295386 0.04103144 0.6827078 +vn -0.07788413 -0.9969088 0.01034353 +vn 0.01211819 -0.07979523 -0.9967377 +vn 0.9854472 0.003767913 0.16994 +vn -0.01836936 -0.9991354 0.03729611 +vn -0.9660712 0.001889363 -0.2582691 +vn 0.7993242 -0.1343359 -0.5856918 +vn 0.2202977 0.8876414 -0.4044276 +vn -0.05052601 -0.9964421 0.06745522 +vn 0.3719716 -0.15712 -0.9148499 +vn -0.06724995 -0.9962397 0.0546254 +vn -0.373302 0.1133023 0.920765 +vn -0.8867212 -0.008589105 -0.4622249 +vn 0.5007694 -0.08943968 -0.8609475 +vn 0.2833686 0.8887689 -0.3602668 +vn -0.5007421 0.0898054 0.8609253 +vn 0.8727902 0.002031558 0.4880915 +vn 0.03586493 0.999332 -0.007019805 +vn -0.3879876 0.5822589 0.7144511 +vn -0.4820328 0.08616265 0.8719062 +vn 0.53767 0.7815753 0.3163085 +vn 0.4505364 0.2939276 0.8429849 +vn 0.2328006 0.07453357 0.9696642 +vn 0.4985981 0.2814552 -0.8198677 +vn 0.8638319 0.335134 -0.376138 +vn 0.1020083 0.9932296 0.05558037 +vn 0.0329418 0.992491 0.1177981 +vn -0.05789365 0.98885 0.1372009 +vn -0.1461592 0.9832827 0.1085941 +vn -0.2082154 0.9772795 0.03963586 +vn -0.2274205 0.9724507 -0.05118139 +vn -0.1986338 0.970089 -0.1395428 +vn -0.1295751 0.9708275 -0.2017532 +vn -0.03873662 0.9744687 -0.2211567 +vn 0.04953675 0.9800365 -0.1925476 +vn 0.111584 0.9860387 -0.123599 +vn 0.1307913 0.9908682 -0.03277103 +vn 0.387309 0.8895944 0.2421023 +vn 0.1899953 0.8874838 0.4198503 +vn -0.06952158 0.8770818 0.4752834 +vn -0.3217067 0.8611748 0.3935514 +vn -0.4989873 0.8440256 0.1965518 +vn -0.5538595 0.8302288 -0.0629264 +vn -0.471621 0.8234815 -0.31536 +vn -0.2743095 0.8255919 -0.4931047 +vn -0.01479117 0.835994 -0.5485392 +vn 0.2373958 0.8519011 -0.466806 +vn 0.4146743 0.8690501 -0.2698094 +vn 0.4695469 0.8828472 -0.01032871 +vn 0.6193768 0.6783792 0.3951886 +vn 0.3206026 0.6751843 0.6643344 +vn -0.07236046 0.6594335 0.7482724 +vn -0.4542236 0.6353472 0.6245117 +vn -0.7226622 0.6093793 0.3262151 +vn -0.8057505 0.5884882 -0.06669067 +vn -0.6812245 0.5782719 -0.4489263 +vn -0.3824518 0.5814672 -0.7180715 +vn 0.01051294 0.5972181 -0.8020101 +vn 0.3923751 0.6213045 -0.6782498 +vn 0.6608139 0.6472718 -0.3799529 +vn 0.7439026 0.6681626 0.01295258 +vn 0.7734061 0.3917487 0.4983733 +vn 0.4105892 0.3878689 0.8252117 +vn -0.06660845 0.3687418 0.9271423 +vn -0.5303235 0.3394919 0.7768542 +vn -0.8563036 0.3079582 0.4146155 +vn -0.9572022 0.2825888 -0.06251055 +vn -0.8059839 0.2701823 -0.5266798 +vn -0.4431679 0.2740628 -0.8535174 +vn 0.03403081 0.2931897 -0.9554484 +vn 0.4977453 0.3224396 -0.8051599 +vn 0.823725 0.3539738 -0.4429217 +vn 0.9246238 0.3793427 0.0342051 +vn 0.837077 0.06443033 0.543278 +vn 0.4524915 0.06031746 0.8897265 +vn -0.05333901 0.04004234 0.9977733 +vn -0.5448763 0.009038413 0.8384677 +vn -0.8904155 -0.02438774 0.4544949 +vn -0.997368 -0.05127921 -0.05125924 +vn -0.8370767 -0.06443103 -0.5432783 +vn -0.4524913 -0.06031785 -0.8897266 +vn 0.05333905 -0.04004241 -0.9977733 +vn 0.5448763 -0.009038284 -0.8384678 +vn 0.8904156 0.02438771 -0.4544945 +vn 0.997368 0.05127917 0.05125958 +vn 0.8059839 -0.2701826 0.5266795 +vn 0.4431679 -0.2740629 0.8535173 +vn -0.03403041 -0.2931903 0.9554483 +vn -0.4977452 -0.3224396 0.80516 +vn -0.823725 -0.353974 0.4429216 +vn -0.9246237 -0.3793428 -0.03420501 +vn -0.773406 -0.3917486 -0.4983737 +vn -0.4105898 -0.3878685 -0.8252116 +vn 0.06660888 -0.3687417 -0.9271423 +vn 0.5303234 -0.3394929 -0.7768537 +vn 0.8563033 -0.3079585 -0.4146158 +vn 0.9572021 -0.282589 0.06251105 +vn 0.6812247 -0.5782719 0.448926 +vn 0.3824523 -0.5814667 0.7180715 +vn -0.01051294 -0.5972176 0.8020104 +vn -0.3923748 -0.6213043 0.67825 +vn -0.6608141 -0.6472718 0.3799527 +vn -0.7439025 -0.6681626 -0.01295264 +vn -0.6193761 -0.67838 -0.3951886 +vn -0.320603 -0.6751855 -0.664333 +vn 0.07236153 -0.6594338 -0.7482719 +vn 0.4542238 -0.6353467 -0.6245121 +vn 0.7226621 -0.6093792 -0.3262153 +vn 0.8057505 -0.5884884 0.06669075 +vn 0.4716212 -0.8234814 0.3153599 +vn 0.2743101 -0.8255919 0.4931045 +vn 0.01479062 -0.8359941 0.5485391 +vn -0.2373955 -0.8519011 0.4668061 +vn -0.4146743 -0.8690503 0.2698089 +vn -0.469547 -0.8828471 0.01032901 +vn -0.387309 -0.8895939 -0.2421041 +vn -0.1899959 -0.8874837 -0.4198504 +vn 0.06952128 -0.877082 -0.475283 +vn 0.3217069 -0.8611749 -0.3935513 +vn 0.4989878 -0.8440253 -0.1965517 +vn 0.5538596 -0.8302289 0.06292631 +vn 0.1986344 -0.970089 0.1395415 +vn 0.1295746 -0.9708276 0.2017531 +vn 0.03873606 -0.9744687 0.2211566 +vn -0.0495361 -0.9800366 0.1925477 +vn -0.1115838 -0.9860388 0.1235983 +vn -0.1307912 -0.9908682 0.03277152 +vn -0.1020081 -0.9932297 -0.05558059 +vn -0.03294115 -0.992491 -0.1177986 +vn 0.05789246 -0.9888501 -0.1372008 +vn 0.1461596 -0.9832826 -0.1085942 +vn 0.2082153 -0.9772796 -0.03963589 +vn 0.2274206 -0.9724507 0.05118118 +vn -0.9410666 -0.1365744 -0.3094208 +vn 0.941762 0.13103 0.3097022 +vn 0.1409169 -0.9899837 -0.00864601 +vn -0.1408337 0.9899954 0.00866497 +vn 0.3061835 0.04464295 -0.9509252 +vn -0.2771253 -0.03947008 0.9600227 +vn 0.8991397 0.1255054 -0.4192807 +vn 0.2863371 0.04134078 0.9572366 +vn -0.279932 -0.03983243 0.9591932 +vn 0.9632522 0.126535 0.2369266 +vn 0.05513291 -0.9453192 0.321453 +vn -0.9613428 -0.1385432 -0.2379622 +vn -0.245558 0.8994852 0.3614246 +vn -0.2830477 0.0218525 0.9588569 +vn -0.9325973 -0.151641 -0.3275168 +vn 0.9199489 0.2159551 0.3271966 +vn 0.8214716 -0.5133457 0.2483158 +vn -0.2158396 0.9763425 -0.0129873 +vn 0.3125892 0.02876667 -0.9494528 +vn -0.3125895 -0.02876656 0.9494526 +vn -0.1452695 0.9892647 0.0158816 +vn -0.9243137 0.2200862 -0.3117794 +vn -0.940556 -0.04118147 -0.3371329 +vn -0.9108438 -0.2640801 -0.3172148 +vn -0.8168014 -0.4659879 -0.3401336 +vn 0.1419909 -0.9895665 -0.02442748 +vn 0.9521312 -0.2057698 0.2260645 +vn 0.9673586 0.09083336 0.2365726 +vn 0.9260346 0.2595953 0.2739896 +vn 0.8308613 0.4902454 0.2633041 +vn 0.7172292 0.1152426 -0.687242 +vn -0.3355161 -0.04940631 0.940738 +vn 0.7162069 0.120659 -0.6873785 +vn 0.5145206 -0.07669522 -0.8540412 +vn 0.3248616 -0.1451235 -0.9345609 +vn 0.03515601 -0.1351476 -0.9902017 +vn -0.100297 -0.07587372 -0.9920604 +vn -0.111434 0.01801874 -0.9936085 +vn -0.02461228 0.09867024 -0.9948158 +vn 0.2841416 0.2217887 -0.9327772 +vn 0.5452027 0.2124625 -0.8109338 +vn -0.07456353 0.9967411 0.03078056 +vn -0.1397168 0.9855148 0.09612356 +vn -0.2275545 0.9663709 0.119776 +vn -0.3145345 0.9444401 0.09539855 +vn -0.3773556 0.9255977 0.0295224 +vn -0.3991822 0.9148933 -0.0601999 +vn -0.3741674 0.9151945 -0.149726 +vn -0.3090116 0.9264212 -0.2150709 +vn -0.2211776 0.9455643 -0.2387228 +vn -0.1341954 0.9674957 -0.214345 +vn -0.07137477 0.986338 -0.1484694 +vn -0.04954793 0.9970425 -0.05874804 +vn 0.2322125 0.9506096 0.2059581 +vn 0.04606772 0.9185359 0.3926444 +vn -0.2048777 0.8638427 0.4602185 +vn -0.4533815 0.8011855 0.3905727 +vn -0.6328586 0.7473534 0.2023682 +vn -0.6952172 0.7167711 -0.0539669 +vn -0.6237491 0.7176316 -0.3097448 +vn -0.4376036 0.7497057 -0.4964319 +vn -0.1866592 0.8043985 -0.5640048 +vn 0.06184587 0.8670555 -0.494358 +vn 0.2413223 0.9208875 -0.3061531 +vn 0.303681 0.9514704 -0.04981911 +vn 0.5044438 0.7882698 0.3523737 +vn 0.2225817 0.7397034 0.6350563 +vn -0.1574027 0.6568879 0.7373756 +vn -0.5336886 0.5620131 0.631916 +vn -0.8054536 0.4805 0.3469356 +vn -0.8998784 0.43419 -0.0412067 +vn -0.7916602 0.435495 -0.428507 +vn -0.5097974 0.4840613 -0.71119 +vn -0.1298148 0.5668762 -0.8135106 +vn 0.2464723 0.6617513 -0.7080514 +vn 0.5182373 0.7432646 -0.4230697 +vn 0.612661 0.7895737 -0.03492725 +vn 0.7113198 0.5365015 0.4540818 +vn 0.3690397 0.4775244 0.7973583 +vn -0.09239523 0.3769543 0.921612 +vn -0.5493401 0.261741 0.7935473 +vn -0.8793594 0.162757 0.4474788 +vn -0.9940238 0.1065236 -0.02386403 +vn -0.8626096 0.1081055 -0.4941842 +vn -0.5203274 0.1670828 -0.837462 +vn -0.0588938 0.2676516 -0.9617141 +vn 0.3980509 0.3828636 -0.8336492 +vn 0.7280704 0.4818488 -0.487581 +vn 0.8427349 0.5380839 -0.01623897 +vn 0.8341829 0.2270493 0.5025809 +vn 0.4713644 0.1645333 0.8664551 +vn -0.01775544 0.05793023 0.9981628 +vn -0.5021179 -0.06419268 0.8624134 +vn -0.8519376 -0.1691178 0.495582 +vn -0.9734819 -0.2287284 -0.004041061 +vn -0.8341824 -0.2270501 -0.5025812 +vn -0.4713641 -0.1645343 -0.8664551 +vn 0.01775487 -0.05793106 -0.9981627 +vn 0.5021175 0.06419424 -0.8624136 +vn 0.8519379 0.1691177 -0.4955815 +vn 0.9734822 0.228727 0.004041399 +vn 0.8626094 -0.1081058 0.4941843 +vn 0.5203277 -0.1670825 0.8374619 +vn 0.05889393 -0.2676508 0.9617144 +vn -0.3980511 -0.3828637 0.8336491 +vn -0.7280707 -0.4818481 0.4875813 +vn -0.8427351 -0.5380835 0.01623905 +vn -0.7113199 -0.5365007 -0.4540826 +vn -0.3690389 -0.4775239 -0.797359 +vn 0.0923937 -0.3769559 -0.9216115 +vn 0.5493405 -0.2617436 -0.7935461 +vn 0.8793596 -0.162758 -0.4474779 +vn 0.9940239 -0.1065226 0.02386365 +vn 0.7916609 -0.4354939 0.4285069 +vn 0.5097981 -0.4840601 0.7111904 +vn 0.1298143 -0.5668759 0.813511 +vn -0.2464724 -0.6617514 0.7080512 +vn -0.5182369 -0.7432648 0.4230698 +vn -0.6126608 -0.7895739 0.03492664 +vn -0.5044436 -0.78827 -0.3523735 +vn -0.2225805 -0.7397031 -0.6350569 +vn 0.1574011 -0.6568874 -0.7373764 +vn 0.5336891 -0.5620115 -0.6319169 +vn 0.8054545 -0.4804985 -0.3469357 +vn 0.8998781 -0.4341906 0.0412066 +vn 0.6237491 -0.7176321 0.3097442 +vn 0.4376032 -0.7497065 0.496431 +vn 0.1866588 -0.8043994 0.5640038 +vn -0.06184572 -0.8670559 0.4943574 +vn -0.241322 -0.9208876 0.3061531 +vn -0.3036813 -0.9514703 0.04981947 +vn -0.2322135 -0.9506094 -0.2059577 +vn -0.04606741 -0.9185356 -0.3926452 +vn 0.2048773 -0.863843 -0.4602181 +vn 0.453381 -0.8011863 -0.3905717 +vn 0.6328585 -0.747354 -0.2023665 +vn 0.6952172 -0.716771 0.05396685 +vn 0.3741682 -0.9151941 0.1497265 +vn 0.3090115 -0.9264209 0.2150726 +vn 0.2211774 -0.9455641 0.2387239 +vn 0.1341951 -0.9674955 0.214346 +vn 0.07137331 -0.9863381 0.1484694 +vn 0.0495466 -0.9970425 0.05874941 +vn 0.07456291 -0.9967412 -0.03078002 +vn 0.1397182 -0.9855145 -0.09612488 +vn 0.227555 -0.9663706 -0.1197774 +vn 0.3145347 -0.9444399 -0.09539957 +vn 0.3773564 -0.9255974 -0.02952304 +vn 0.3991832 -0.9148928 0.06019992 +vn 0.9349838 0.1412807 0.3253385 +vn -0.4661057 -0.8706416 -0.157254 +vn -0.1423919 0.9866567 -0.07895005 +vn 0.3311024 -0.02448578 -0.9432771 +vn -0.3310858 0.02451681 0.9432821 +vn -0.9305754 -0.1626248 -0.3279978 +vn 0.1426439 -0.9894325 -0.02600431 +vn 0.2619758 -0.9582145 0.1148637 +vn 0.08194871 -0.9753287 0.2049839 +vn -0.9296094 -0.1782998 -0.3225455 +vn 0.3550798 -0.3974708 -0.8461297 +vn 0.9021929 -0.3090199 0.3009231 +vn -0.2391074 -0.4720175 0.8485442 +vn -0.7910955 -0.5412984 -0.284893 +vn 0.1372815 -0.988519 0.06311927 +vn -0.9396173 -0.1057947 -0.3254639 +vn 0.9328757 0.1599945 0.3227145 +vn 0.5989653 -0.7717086 0.2137906 +vn -0.1488384 0.9870929 -0.05911685 +vn 0.3215978 -0.01646215 -0.9467333 +vn -0.3215979 0.01646217 0.9467332 +vn -0.6357793 -0.07216752 0.7684898 +vn -0.9177226 -0.1877608 0.3500443 +vn -0.9537621 -0.2530434 -0.1621941 +vn -0.7342424 -0.2505235 -0.6309723 +vn -0.3179815 -0.1808755 -0.9306836 +vn 0.1834801 -0.06276263 -0.9810178 +vn 0.63578 0.07216786 -0.7684891 +vn 0.9177224 0.1877608 -0.3500449 +vn 0.9537621 0.2530436 0.1621939 +vn 0.7342415 0.2505234 0.6309735 +vn 0.3179823 0.1808758 0.9306832 +vn -0.1834805 0.06276256 0.9810177 +vn -0.2380605 0.965417 -0.1062891 +vn 0.2380603 -0.965417 0.1062892 +vn -0.5276551 -0.7738655 -0.3503033 +vn 0.917082 0.2507168 -0.310003 +vn 0.3286626 -0.2102576 -0.9207457 +vn -0.7127507 0.6999012 0.04609512 +vn 0.2276119 0.2401661 -0.94367 +vn -0.2275194 -0.2406246 0.9435755 +vn -0.2998684 0.6340361 0.7127953 +vn 0.3338534 0.8700606 0.3626795 +vn -0.04112996 0.9489377 -0.3127708 +vn -0.2129595 0.9430298 0.255623 +vn 0.9324287 -0.3464212 0.1028063 +vn -0.08249716 -0.7122553 0.6970558 +vn -0.7350404 -0.5866253 -0.3399802 +vn 0.201025 -0.9491964 -0.2421057 +vn 0.6537099 0.6590283 0.3719476 +vn 0.6839991 0.001423976 0.7294815 +vn 0.9245415 -0.3683018 0.09786166 +vn 0.9498448 0.1446487 0.2772572 +vn -0.8319096 -0.2682107 0.4857875 +vn -0.8124086 0.582875 -0.01578309 +vn -0.5018802 0.06433789 -0.862541 +vn -0.9520904 -0.1475375 -0.2678742 +vn 0.2251073 0.1791002 -0.9577316 +vn 0.977166 0.1322884 0.1662721 +vn 0.1697537 -0.9791998 -0.111137 +vn 0.2757515 -0.2323453 -0.9327255 +vn -0.9658852 -0.1516383 -0.2099323 +vn 0.9475786 0.1458351 0.2843007 +vn -0.946312 -0.1387636 -0.291956 +vn 0.3073345 0.3384112 -0.889395 +vn 0.947202 0.145343 0.285804 +vn 0.2259972 0.3410737 -0.9124659 +vn -0.1694783 -0.2893928 0.9420875 +vn -0.2825539 0.9251745 0.2534079 +vn -0.1769935 -0.3284517 0.9277892 +vn -0.9374645 -0.1428766 -0.3174061 +vn 0.2309453 0.3223418 -0.9180197 +vn -0.2243053 0.9387768 0.2615058 +vn 0.2214235 0.32708 -0.9186894 +vn 0.226591 -0.9339157 -0.2765105 +vn -0.9474083 -0.13241 -0.2913507 +vn -0.1281596 -0.3051694 0.9436349 +vn 0.9471633 0.1314053 0.2925991 +vn 0.297141 -0.5170718 -0.8027105 +vn -0.9549032 -0.1389534 -0.2623963 +vn -0.2388707 -0.3226655 0.9158754 +vn 0.9464751 0.1337079 0.2937807 +vn 0.3615661 -0.5556213 -0.7487022 +vn 0.2468474 -0.9288528 -0.2762225 +vn 0.06567929 -0.9361594 0.3453866 +vn 0.1483285 -0.9419725 0.3011421 +vn 0.2371016 -0.9325287 -0.2723473 +vn -0.2311682 0.920521 0.314964 +vn -0.2168814 0.9363905 0.2759264 +vn -0.2216312 0.9342798 0.2792865 +vn -0.2289185 0.9368314 0.2644679 +vn -0.9428983 -0.1288806 -0.3071361 +vn -0.1811232 -0.3045966 0.9351018 +vn 0.9489469 0.1366967 0.2842779 +vn 0.2313087 0.3122069 -0.9214246 +vn -0.2229324 0.9366397 0.2701988 +vn -0.1342474 0.2047406 0.9695664 +vn -0.119252 0.6664303 0.7359685 +vn -0.07230292 0.949549 0.3051707 +vn -0.005980101 0.9782379 -0.2074006 +vn 0.06194509 0.7448082 -0.6643972 +vn 0.1132723 0.3118088 -0.9433688 +vn 0.1342484 -0.2047416 -0.969566 +vn 0.1192533 -0.6664308 -0.7359679 +vn 0.07230397 -0.9495491 -0.3051698 +vn 0.005980481 -0.9782377 0.207401 +vn -0.06194431 -0.7448087 0.6643967 +vn -0.1132715 -0.3118073 0.9433694 +vn 0.9909297 0.03364179 0.1301024 +vn -0.9909297 -0.0336418 -0.1301021 +vn -0.9373771 -0.1056949 -0.3318928 +vn 0.9373301 0.1057194 0.3320178 +vn 0.2975471 0.2276099 -0.9271782 +vn -0.2230068 0.9143046 0.3381051 +vn -0.08529826 0.993326 -0.07763849 +vn 0.06315515 -0.9882161 0.1394291 +vn -0.3063056 -0.1020671 0.9464456 +vn -0.3326363 0.1931385 0.9230659 +vn -0.2504254 -0.4107123 0.8766999 +vn -0.3166727 0.619594 0.7182073 +vn -0.1590189 -0.7091531 0.6868879 +vn 0.5042707 -0.02909919 -0.8630552 +vn 0.3440776 -0.3153473 -0.884402 +vn 0.06064015 -0.07743575 -0.9951515 +vn 0.08539144 -0.9933155 0.07767043 +vn -0.9390168 -0.1062479 -0.3270458 +vn -0.08539031 0.9933155 -0.07767101 +vn 0.9390169 0.1062472 0.3270457 +vn 0.3331117 -0.04500731 -0.9418126 +vn -0.9370877 -0.0591847 -0.3440406 +vn 0.9370877 0.05918469 0.3440405 +vn 0.3472267 -0.05620743 -0.9360953 +vn -0.3472265 0.05620709 0.9360954 +vn -0.03606514 0.9966634 -0.07322147 +vn 0.03606464 -0.9966635 0.07322112 +vn -0.9203701 -0.1340102 -0.3673692 +vn 0.9203702 0.1340102 0.3673691 +vn 0.3754738 -0.0403545 -0.9259541 +vn -0.3754739 0.04035458 0.925954 +vn -0.1092624 0.990158 -0.08745871 +vn 0.1092623 -0.990158 0.08745868 +vn -0.6840189 0.6811497 0.261062 +vn 0.6840188 -0.6811498 -0.2610618 +vn -0.4860407 -0.1587067 -0.8594048 +vn 0.4860409 0.1587063 0.8594048 +vn 0.5439511 0.7147359 -0.4396247 +vn -0.5439511 -0.7147358 0.4396248 +vn -0.8387755 0.5216132 -0.1561266 +vn 0.7417679 -0.6289632 -0.2327785 +vn 0.2551872 -0.5409256 -0.8014232 +vn 0.1925147 0.3194406 0.9278448 +vn 0.5579571 0.7252252 -0.403401 +vn -0.5584078 -0.725291 0.4026584 +vn -0.7325894 0.6718058 0.1094981 +vn 0.7325892 -0.6718059 -0.1094978 +vn -0.3507521 -0.234724 -0.9065747 +vn 0.3507521 0.2347238 0.9065747 +vn 0.5833402 0.7025536 -0.4075939 +vn -0.5833399 -0.7025537 0.407594 +vn -0.7620662 -0.2137286 -0.611208 +vn 0.7619978 0.2141943 0.6111302 +vn 0.634507 -0.05622521 -0.7708694 +vn -0.6344954 0.05614708 0.7708846 +vn -0.1591228 0.970921 -0.1788639 +vn 0.155039 -0.973218 0.1697338 +vn 0.6401775 -0.0004167669 -0.7682269 +vn -0.6282022 0.0006610583 0.7780498 +vn -0.7706093 -0.1396379 -0.6218221 +vn 0.9762564 0.1232958 0.1781058 +vn 0.09608682 -0.9906376 0.09697675 +vn -0.1142674 0.9887741 -0.0962742 +vn -0.7338771 -0.1508321 -0.6623248 +vn 0.7338772 0.1508325 0.6623247 +vn 0.6719819 -0.01863975 -0.740333 +vn -0.6719819 0.01863965 0.7403331 +vn -0.09931978 0.9883838 -0.1150355 +vn 0.09931997 -0.9883837 0.1150358 +vn -0.7647035 -0.2236686 -0.6043187 +vn 0.7646221 0.2241332 0.6042494 +vn 0.6249967 -0.02736909 -0.7801476 +vn -0.6249828 0.02729117 0.7801613 +vn -0.1865671 0.9691918 -0.1608105 +vn 0.1824176 -0.9714479 0.1516999 +vn 0.6292623 0.0285182 -0.7766696 +vn -0.6171625 -0.02812024 0.7863331 +vn -0.7753004 -0.1496647 -0.6136039 +vn 0.9751287 0.1457746 0.1669549 +vn 0.1229313 -0.9892285 0.07946712 +vn -0.141046 0.9868819 -0.07855068 +vn -0.7388566 -0.1592516 -0.6547747 +vn 0.7388567 0.1592513 0.6547748 +vn 0.6619101 0.01068555 -0.7495072 +vn -0.6619104 -0.01068499 0.749507 +vn -0.1263554 0.9871805 -0.09751459 +vn 0.1263553 -0.9871805 0.09751464 +vn -0.7418641 -0.1088218 -0.6616611 +vn 0.7418641 0.1088218 0.6616611 +vn 0.668129 -0.03618596 -0.7431651 +vn -0.6681291 0.03618573 0.7431649 +vn -0.05692966 0.9934024 -0.099553 +vn 0.05692967 -0.9934024 0.09955294 +vn -0.7725757 -0.1712245 -0.6113992 +vn 0.7725275 0.171694 0.6113285 +vn 0.6289664 -0.0716456 -0.7741242 +vn -0.6289582 0.0715667 0.7741382 +vn -0.1176385 0.9795206 -0.1634033 +vn 0.1134295 -0.9814984 0.1542554 +vn 0.63705 -0.01618141 -0.7706527 +vn -0.6250434 0.01575707 0.780431 +vn -0.7779462 -0.09667943 -0.6208485 +vn 0.9812459 0.07832552 0.1761299 +vn 0.05354207 -0.9952363 0.08147388 +vn -0.07178479 0.9941478 -0.08072851 +vn -0.7784413 -0.1891302 -0.5985475 +vn 0.7783678 0.1895983 0.5984948 +vn 0.6117644 -0.01297262 -0.7909336 +vn -0.6117519 0.01289382 0.7909447 +vn -0.1705269 0.9773178 -0.1255817 +vn 0.1661903 -0.9791912 0.1164707 +vn 0.6171551 0.04267897 -0.7856833 +vn -0.6048962 -0.04282838 0.7951518 +vn -0.7877665 -0.114673 -0.605206 +vn 0.9802939 0.1219576 0.1554034 +vn 0.105223 -0.993444 0.04469194 +vn -0.1233627 0.9914055 -0.04355215 +vn -0.7521781 -0.1235582 -0.6472724 +vn 0.752178 0.1235582 0.6472724 +vn 0.649887 0.0233448 -0.7596723 +vn -0.6498867 -0.02334462 0.7596725 +vn -0.1089739 0.9920628 -0.06273868 +vn 0.1089739 -0.9920628 0.06273868 +vn 0.1048206 0.9936923 -0.03985542 +vn 0.4102408 0.3930538 -0.8229284 +vn 0.4006273 0.1717078 -0.9000079 +vn 0.4068078 -0.3445025 -0.8460647 +vn 0.3569407 -0.54642 -0.7576401 +vn -0.1034352 -0.9939433 0.03712145 +vn -0.5090334 -0.4226422 0.7498391 +vn -0.5176325 -0.1471626 0.8428522 +vn -0.474091 0.3888108 0.7899772 +vn -0.3901592 0.5953352 0.7023901 +vn -0.9884976 0.1198711 -0.09221406 +vn 0.74001 -0.5540264 0.3813659 +vn -0.9963655 -0.004655632 -0.08505336 +vn -0.9875246 -0.0619093 -0.1447838 +vn -0.9138829 -0.148405 -0.3778811 +vn -0.7745415 -0.1090439 -0.6230529 +vn -0.7625173 -0.09488188 -0.6399726 +vn -0.749804 0.0888666 -0.6556652 +vn -0.7827482 0.1560795 -0.6024487 +vn -0.8701771 0.2245894 -0.438579 +vn -0.9686691 0.1833204 -0.1675527 +vn 0.4621994 -0.3141007 0.8292843 +vn 0.3882289 -0.1621784 0.9071805 +vn 0.4186906 0.2285707 0.8788934 +vn 0.5035026 0.3325598 0.7974266 +vn 0.8275182 0.456653 0.3266218 +vn 0.9515433 0.2242147 -0.2104596 +vn 0.9371362 0.06195954 -0.3434191 +vn 0.905176 -0.2865277 -0.3139402 +vn 0.8908999 -0.4050209 -0.2055614 +vn 0.9271932 -0.04189358 0.3722334 +vn 0.3898067 -0.3112207 -0.8667136 +vn -0.3896568 0.317329 0.8645634 +vn 0.1761853 -0.9560049 -0.2345497 +vn 0.08405526 0.9391387 -0.3330965 +vn -0.9257001 -0.05593031 -0.3741003 +vn 0.9229807 0.05304081 0.3811736 +vn -0.06103565 -0.9479061 0.3126477 +vn -0.2828142 -0.5768438 0.7663337 +vn 0.09097788 0.9488904 -0.3022084 +vn 0.04485694 0.9607377 -0.2738083 +vn -0.02564619 0.9384377 -0.3444952 +vn 0.07643766 0.9485452 -0.3072772 +vn 0.9993261 -0.007199171 0.03599528 +vn -0.7032453 -0.184882 -0.6864871 +vn -0.2070327 -0.9594116 0.1914858 +vn -0.1745452 -0.9619395 0.2102532 +vn 0.7434484 0.1724351 0.6461816 +vn -0.2112116 -0.9564223 0.2016088 +vn -0.1772766 -0.9601502 0.2160661 +vn -0.9849192 0.1514677 -0.08361699 +vn 0.983942 0.1784869 0.0008448898 +vn 0.7732676 0.306091 0.5553067 +vn -0.9996347 0.01820179 -0.0199804 +vn -0.7453899 0.0301366 -0.6659473 +vn 0.9977304 -0.04552829 0.04961145 +vn 0.8808985 -0.1897185 -0.4336181 +vn 0.5280315 -0.2830729 -0.8006575 +vn 0.03367837 -0.3005785 -0.9531623 +vn -0.469699 -0.2375443 -0.8502679 +vn -0.8472201 -0.1108608 -0.519546 +vn -0.9977304 0.04552889 -0.04960942 +vn -0.8808986 0.1897185 0.4336182 +vn -0.5280313 0.2830729 0.8006576 +vn -0.03367779 0.3005785 0.9531623 +vn 0.4696995 0.2375443 0.8502678 +vn 0.8472212 0.1108601 0.5195444 +vn 0.05830825 0.9526699 -0.2983627 +vn 0.6630234 0.7203425 -0.2037321 +vn 0.5907494 0.631144 -0.5026654 +vn 0.3724627 0.5733952 -0.7297189 +vn 0.06664374 0.5625668 -0.8240615 +vn -0.2447482 0.6015599 -0.7604105 +vn -0.4782904 0.679929 -0.5558191 +vn -0.5713961 0.7766734 -0.2651131 +vn -0.4991221 0.8658715 0.03381873 +vn -0.2808322 0.9236217 0.260876 +vn 0.0249759 0.9344505 0.3552161 +vn 0.3363763 0.8954561 0.2915637 +vn 0.5699149 0.8170876 0.08697695 +vn 0.9932477 -0.09586927 0.06533004 +vn 0.8765785 -0.2398569 -0.4172274 +vn 0.5242094 -0.3330806 -0.7837486 +vn 0.03054597 -0.3505602 -0.9360419 +vn -0.4721259 -0.2876134 -0.8332921 +vn -0.8491178 -0.1611061 -0.5030348 +vn -0.999418 -0.004935438 -0.03375444 +vn -0.8827506 0.1390522 0.4487939 +vn -0.5303742 0.232274 0.8153232 +vn -0.03671725 0.2497535 0.967613 +vn 0.4659557 0.1868062 0.8648634 +vn 0.8429492 0.06029746 0.5346036 +vn 0.5447702 -0.7940484 0.2696524 +vn 0.4754808 -0.8795632 -0.01693667 +vn 0.2662083 -0.9349279 -0.2346125 +vn -0.02697134 -0.9453101 -0.3250561 +vn -0.3255098 -0.9079261 -0.2640335 +vn -0.5494009 -0.8327956 -0.06789842 +vn -0.6386647 -0.7400454 0.2108086 +vn -0.569378 -0.6545317 0.4973902 +vn -0.3601025 -0.5991666 0.7150704 +vn -0.06691923 -0.5887862 0.8055139 +vn 0.2316122 -0.6261701 0.744491 +vn 0.4555079 -0.7013013 0.5483512 +vn 0.9075079 0.4090956 -0.09523802 +vn 0.7958857 0.3034389 -0.5239186 +vn 0.4860707 0.2263508 -0.8440975 +vn 0.05370096 0.1958518 -0.979162 +vn -0.3971888 0.2209682 -0.890738 +vn -0.7489365 0.298325 -0.5916895 +vn -0.899137 0.4093631 -0.154837 +vn -0.7976609 0.5232909 0.2998395 +vn -0.4693023 0.606709 0.6416071 +vn -0.008195763 0.6352689 0.7722477 +vn 0.452884 0.6018683 0.6577618 +vn 0.7860268 0.5181778 0.3371256 +vn 0.9428632 0.3261617 -0.06802596 +vn 0.8328992 0.1992234 -0.5163225 +vn 0.5050513 0.11652 -0.8551878 +vn 0.04714758 0.100203 -0.9938494 +vn -0.4180957 0.1546434 -0.8951433 +vn -0.766034 0.2652569 -0.5855175 +vn -0.9034305 0.4024025 -0.1479376 +vn -0.7934694 0.5293349 0.300351 +vn -0.4656118 0.6120413 0.639227 +vn -0.007720041 0.6283605 0.7778841 +vn 0.457533 0.5739198 0.6791757 +vn 0.8054704 0.463306 0.3695469 +vn 0.9970775 -0.05904312 0.04848281 +vn 0.8781917 -0.1962774 -0.4361817 +vn 0.5237429 -0.2856936 -0.8025414 +vn 0.02869533 -0.303338 -0.9524509 +vn -0.4742999 -0.2444814 -0.8457354 +vn -0.8504641 -0.1248953 -0.5109912 +vn -0.9990077 0.02338089 -0.03790681 +vn -0.8801256 0.1606131 0.4467466 +vn -0.5256678 0.2500318 0.8131159 +vn -0.03062726 0.267676 0.9630221 +vn 0.4723713 0.2088178 0.8563063 +vn 0.848536 0.08923041 0.52156 +vn 0.8002613 -0.5674238 0.1939385 +vn 0.7014976 -0.6814308 -0.2086941 +vn 0.4070363 -0.7557142 -0.5130474 +vn -0.004213849 -0.7703727 -0.6375799 +vn -0.4220807 -0.7214789 -0.5489228 +vn -0.7345709 -0.6221347 -0.2708394 +vn -0.8579718 -0.4989572 0.1221718 +vn -0.7592124 -0.3849524 0.5247936 +vn -0.4647524 -0.3106669 0.829151 +vn -0.05349943 -0.2960072 0.9536863 +vn 0.3643628 -0.3449001 0.865034 +vn 0.6768605 -0.4442465 0.5869455 +vn 0.4784004 -0.8373775 0.2644466 +vn 0.4161551 -0.9092309 0.01068452 +vn 0.2305656 -0.9560483 -0.1811391 +vn -0.02861883 -0.9652861 -0.2596224 +vn -0.2919896 -0.9344673 -0.2037474 +vn -0.4889347 -0.8718551 -0.02848786 +vn -0.5667084 -0.7942211 0.2192133 +vn -0.5044656 -0.7223707 0.472964 +vn -0.318881 -0.6755508 0.6647902 +vn -0.05968183 -0.6663128 0.7432802 +vn 0.2036766 -0.6971295 0.6874055 +vn 0.400626 -0.7597445 0.5121398 +vn -0.0518235 -0.9574749 0.2838242 +vn -0.8491176 -0.1611106 -0.5030333 +vn -0.999418 -0.004937463 -0.03375439 +vn -0.88275 0.1390491 0.4487959 +vn -0.5303742 0.2322722 0.8153238 +vn -0.03671725 0.2497536 0.967613 +vn 0.4659569 0.1868074 0.8648625 +vn 0.8429493 0.06030077 0.5346029 +vn 0.9932477 -0.09586918 0.06533056 +vn 0.8765781 -0.2398593 -0.417227 +vn 0.5242094 -0.3330815 -0.7837482 +vn 0.03054632 -0.3505614 -0.9360415 +vn -0.4721261 -0.2876149 -0.8332914 +vn -0.5212067 0.690787 0.5011556 +vn 0.05780857 -0.912706 -0.4045072 +vn 0.1888442 0.09433257 -0.9774658 +vn -0.2026748 0.1585362 0.9663278 +vn -0.991922 0.03046695 -0.1231363 +vn 0.9882594 0.1239429 0.08933946 +vn 0.3335184 0.7037867 0.6272558 +vn 0.09274381 0.1041446 -0.9902286 +vn 0.2151169 0.8728898 0.4379362 +vn -0.01191552 0.1393659 0.9901693 +vn -0.4466802 0.8866481 -0.1197165 +vn 0.4804388 0.8760343 0.04174497 +vn 0.9813564 0.1413031 0.1302807 +vn 0.1204135 -0.695197 -0.708662 +vn -0.9757755 -0.03108662 -0.2165543 +vn -0.9675494 0.08220088 -0.2389377 +vn -0.2622872 0.8653129 0.4271289 +vn 0.9808398 -0.02820727 0.1927629 +vn 0.1293848 -0.216103 -0.9677598 +vn -0.2225796 0.02182319 0.9746703 +vn 0.9780445 0.003528901 0.2083661 +vn 0.1043861 -0.3146189 -0.9434609 +vn -0.9801457 0.02767909 -0.1963376 +vn -0.1006153 0.08616508 0.9911872 +vn -0.9780712 -0.06514011 -0.1978221 +vn -0.2703362 -0.8350254 0.479219 +vn 0.9599501 0.08571907 0.2667362 +vn 0.2000128 -0.0219731 -0.9795468 +vn -0.9604868 -0.06289339 -0.2711267 +vn 0.04523531 -0.8253412 0.5628194 +vn 0.9766951 0.04008282 0.2108557 +vn 0.186063 -0.008728519 -0.9824991 +vn -0.9921008 -0.008209618 -0.1251751 +vn -0.2804977 0.03619138 0.9591722 +vn 0.9681841 -0.03232796 0.2481424 +vn 0.2220619 0.03138097 -0.9745275 +vn -0.9633751 0.01849882 -0.2675186 +vn -0.09994777 0.01188704 0.9949217 +vn 0.9869663 -0.01399671 0.1603176 +vn 0.143721 -0.01576561 -0.9894927 +vn -0.06568963 -0.9694037 0.2365191 +vn -0.02652754 -0.9874855 0.1554631 +vn -0.8932673 -0.4415932 -0.08407721 +vn -0.1854643 -0.03332768 0.9820857 +vn 0.9553397 0.1516929 0.2536045 +vn -0.1513242 -0.9791211 0.1357308 +vn -0.9677162 0.03957724 -0.2489159 +vn -0.1672035 -0.08584949 0.9821777 +vn 0.9524481 -0.266663 0.1474226 +vn 0.05752709 -0.9757156 0.2113522 +vn -0.1921522 0.7672222 0.6119214 +vn -0.2720745 0.5728799 0.773165 +vn -0.4128616 0.697773 0.5853702 +vn -0.2684759 0.7376975 0.6194539 +vn 0.1670222 0.7436115 0.6474145 +vn 0.1643957 0.7390921 0.6532359 +vn 0.05299171 0.7674747 0.6388855 +vn 0.1771086 0.7253213 0.665238 +vn -0.02234343 0.9977094 0.06385058 +vn 0.02234324 -0.9977093 -0.06385081 +vn 0.173465 0.06676661 -0.9825743 +vn -0.1734652 -0.06676674 0.9825742 +vn -0.9845866 -0.01087753 -0.1745592 +vn 0.9845866 0.0108776 0.1745593 +vn -0.1165481 0.8494959 0.5145613 +vn 0.02940244 -0.9994055 -0.01800394 +vn -0.03599199 0.06581627 -0.9971824 +vn -0.177875 -0.09885509 0.9790751 +vn -0.9739093 -0.02218798 -0.2258505 +vn 0.981564 0.006725925 0.1910154 +vn -0.06709577 0.8408762 0.5370525 +vn -0.1912376 -0.05081697 0.9802275 +vn 0.2008267 0.09763931 -0.9747488 +vn 0.9810395 0.02930091 0.1915805 +vn 0.003590679 0.9984907 -0.05480393 +vn -0.989143 0.04513388 -0.1398536 +vn 0.07994743 -0.05491546 -0.9952853 +vn -0.09341957 0.04808163 0.9944652 +vn -0.9954888 0.001949666 -0.09485981 +vn 0.9928888 -0.006420273 0.1188722 +vn -0.07427427 0.7304431 0.6789229 +vn 0.9876905 -0.01845496 0.1553284 +vn 0.07703658 -0.6822969 -0.7270051 +vn -0.9710497 0.009216699 -0.2386996 +vn -0.1249889 0.009893041 0.9921088 +vn 0.9509574 -0.01992559 0.3086796 +vn 0.2205893 0.03205731 -0.9748399 +vn -0.1449415 -0.9439951 0.2964208 +vn -0.8679637 0.4890724 -0.08629759 +vn 0.043091 -0.9884934 -0.1449961 +vn 0.1959537 0.1502985 -0.9690266 +vn -0.1958627 -0.1501088 0.9690744 +vn -0.978559 -0.008271944 -0.2058008 +vn 0.9813563 0.0146701 0.1916369 +vn -0.0240602 0.8261293 0.5629668 +vn -0.1907222 -0.1505411 0.9700322 +vn 0.8495873 0.4787253 0.2214126 +vn -0.04311991 0.9884706 0.145143 +vn 0.9808434 0.01386075 0.194304 +vn -0.1387204 -0.2480348 0.9587677 +vn -0.1080615 0.2686929 0.9571452 +vn -0.04844614 0.7134221 0.699058 +vn 0.02415128 0.9669928 0.2536568 +vn 0.09027611 0.9614581 -0.2597087 +vn 0.1322117 0.6983002 -0.7034891 +vn 0.1387188 0.248035 -0.9587678 +vn 0.1080615 -0.2686906 -0.9571459 +vn 0.04844603 -0.7134236 -0.6990564 +vn -0.02415215 -0.9669927 -0.2536572 +vn -0.09027526 -0.9614581 0.2597089 +vn -0.1322098 -0.6983003 0.7034894 +vn -0.9900375 0.05834066 -0.1281492 +vn 0.9900375 -0.05834062 0.1281492 +vn -0.2264803 -0.1993276 0.9534019 +vn -0.224655 0.3173134 0.9213264 +vn -0.1626323 0.7489282 0.6423841 +vn -0.05703126 0.9798707 0.1913134 +vn 0.06384971 0.9482573 -0.3110168 +vn 0.1676228 0.6625575 -0.7300138 +vn 0.2264787 0.1993277 -0.9534023 +vn 0.224655 -0.3173111 -0.9213272 +vn 0.1626321 -0.7489296 -0.6423824 +vn 0.05703043 -0.9798707 -0.1913139 +vn -0.06384888 -0.9482572 0.3110171 +vn -0.167621 -0.6625575 0.7300143 +vn -0.9723452 -0.01104703 -0.2332872 +vn 0.9723451 0.01104707 0.2332873 +vn -0.2114041 0.2706835 0.9391692 +vn -0.2776151 -0.2426126 0.9295532 +vn -0.2694393 -0.6909009 0.670864 +vn -0.1890675 -0.9540627 0.2324175 +vn -0.05803523 -0.9615843 -0.2683051 +vn 0.08854754 -0.7114502 -0.6971356 +vn 0.2114041 -0.2706833 -0.9391692 +vn 0.2776151 0.2426127 -0.9295532 +vn 0.2694393 0.6909008 -0.670864 +vn 0.1890675 0.9540626 -0.2324176 +vn 0.05803519 0.9615842 0.2683052 +vn -0.08854759 0.71145 0.6971357 +vn 0.9589379 -0.1284324 0.2528702 +vn -0.9589379 0.1284324 -0.2528702 +vt 0.2302454 0.1055482 +vt 0.2437578 0.09945662 +vt 0.2509518 0.1182785 +vt 0.237287 0.1240202 +vt -0.2313432 0.1129072 +vt -0.2403006 0.1304303 +vt -0.2540777 0.1249227 +vt -0.2452316 0.1066728 +vt 0.1484847 -0.07918357 +vt 0.1380162 -0.08428311 +vt 0.1404614 -0.095838 +vt 0.1552442 -0.09949584 +vt 0.1622034 -0.08480038 +vt -0.1543305 -0.07789168 +vt -0.1683124 -0.0828153 +vt -0.1609301 -0.1037873 +vt -0.1467519 -0.09940808 +vt -0.1436483 -0.08591584 +vt -0.0364392 0.1985857 +vt -0.04624205 0.2157199 +vt -0.05713014 0.2080505 +vt -0.04608393 0.1921471 +vt 0.1669572 0.09967295 +vt 0.1766145 0.08661684 +vt 0.1942481 0.09661308 +vt 0.180795 0.1142978 +vt -0.2413608 0.02936007 +vt -0.2490104 0.01781204 +vt -0.2319795 0.007937975 +vt -0.2256865 0.01793944 +vt -0.1017065 0.228629 +vt -0.09854753 0.231919 +vt -0.10647 0.2383407 +vt -0.1095287 0.2349573 +vt 0.0131713 0.2322272 +vt 0.01643624 0.2384249 +vt 0.0124987 0.2407231 +vt 0.009258145 0.2345667 +vt 0.1714853 -0.108933 +vt 0.176139 -0.1186464 +vt 0.1802985 -0.1167746 +vt 0.1754323 -0.106647 +vt -0.1447532 -0.07876769 +vt -0.1489211 -0.07691488 +vt -0.1526348 -0.08431943 +vt -0.1484354 -0.08609962 +vt -0.2406374 0.00419911 +vt -0.2500769 0.007653742 +vt -0.254564 0.000799139 +vt -0.2486698 -0.002962676 +vt 0.2404836 0.004369817 +vt 0.2488623 -0.003103156 +vt 0.2545652 0.0008588979 +vt 0.2500752 0.007805848 +vt 0.02470088 0.1812674 +vt 0.02867677 0.1835012 +vt 0.02685326 0.1887722 +vt 0.0228254 0.1866336 +vt 0.002810753 0.2174404 +vt 0.00990904 0.2284979 +vt 0.006417024 0.2308215 +vt -0.0007208874 0.2202094 +vt 0.1644336 -0.0514053 +vt 0.1673488 -0.056258 +vt 0.1720251 -0.05568034 +vt 0.168521 -0.04939819 +vt -0.2583836 0.01323629 +vt -0.260072 0.01744797 +vt -0.2688441 0.01283173 +vt -0.2679745 0.008501338 +vt -0.2356069 -0.001623444 +vt -0.2393581 0.002602363 +vt -0.2496837 -0.0001565481 +vt -0.2381766 -0.006635626 +vt 0.2326578 -0.002271512 +vt 0.236353 -0.008411761 +vt 0.2459622 0.000126754 +vt 0.2362324 0.001957277 +vt 0.1398082 0.207221 +vt 0.1440298 0.2070613 +vt 0.1438982 0.2140692 +vt 0.1395714 0.214226 +vt 0.02862835 0.2260953 +vt 0.03260588 0.231866 +vt 0.02866035 0.2342131 +vt 0.02484835 0.2283317 +vt 0.1335049 -0.08883905 +vt 0.1363457 -0.09646089 +vt 0.1404301 -0.09484304 +vt 0.1377271 -0.08899216 +vt -0.1337226 -0.08833999 +vt -0.1380526 -0.08831543 +vt -0.1406832 -0.09425988 +vt -0.13651 -0.09617557 +vt -0.2393325 0.01163652 +vt -0.245062 0.01567422 +vt -0.2498182 0.008851913 +vt -0.2439855 0.004964821 +vt 0.2466791 0.01097975 +vt 0.2505575 0.005832173 +vt 0.2561545 0.01005186 +vt 0.2522425 0.0152436 +vt -0.02158367 0.2026674 +vt -0.01775203 0.2051164 +vt -0.02036005 0.2088118 +vt -0.02399519 0.2070504 +vt 0.006987888 0.1722889 +vt 0.008205526 0.1740467 +vt 0.004392715 0.1765484 +vt 0.003082273 0.1746431 +vt 0.1371035 -0.0786214 +vt 0.141801 -0.08670844 +vt 0.1457451 -0.08441744 +vt 0.1410476 -0.0763304 +vt -0.1065014 -0.03165983 +vt -0.1104016 -0.03057245 +vt -0.1146566 -0.03876092 +vt -0.1105623 -0.04075923 +vt -0.2407838 0.004045073 +vt -0.2443452 0.007570289 +vt -0.2474442 -0.00190035 +vt -0.2461631 -0.003602724 +vt 0.235765 -0.00779337 +vt 0.2409291 -0.01559073 +vt 0.2425159 -0.01390622 +vt 0.23948 -0.005189148 +vt -0.1229424 0.1819549 +vt -0.1198376 0.1852962 +vt -0.12359 0.1887831 +vt -0.1266949 0.1854418 +vt 0.1235015 0.1186602 +vt 0.1286685 0.1217972 +vt 0.125585 0.124912 +vt 0.1218105 0.1216875 +vt 0.1167917 -0.06824552 +vt 0.1220909 -0.07294119 +vt 0.1231369 -0.06940599 +vt 0.1205438 -0.06565718 +vt -0.1144718 -0.0794811 +vt -0.1182364 -0.07690578 +vt -0.1208117 -0.08067041 +vt -0.1170471 -0.08324572 +vt -0.2485551 -0.01113315 +vt -0.2529301 -0.008548888 +vt -0.2552972 -0.01239343 +vt -0.2517615 -0.01741455 +vt 0.2503973 0.004851981 +vt 0.2528442 0.001002648 +vt 0.2571671 0.003750615 +vt 0.2547202 0.007599949 +vt 0.2241106 0.108812 +vt 0.2288838 0.1072189 +vt 0.2301808 0.1103834 +vt 0.2266209 0.1119804 +vt -0.136992 0.1982901 +vt -0.136712 0.2016995 +vt -0.1401214 0.2019796 +vt -0.1404015 0.1985702 +vt 0.1631867 -0.0641629 +vt 0.1648664 -0.06841354 +vt 0.1682762 -0.06816918 +vt 0.1681004 -0.06524281 +vt -0.1530104 -0.0587926 +vt -0.1567545 -0.05989272 +vt -0.1568322 -0.06285241 +vt -0.1534145 -0.06299497 +vt -0.225926 0.02539864 +vt -0.2294853 0.02724823 +vt -0.2314735 0.02355829 +vt -0.2286206 0.02173961 +vt 0.1979784 0.03252465 +vt 0.1993927 0.02995361 +vt 0.2023349 0.03169888 +vt 0.2009069 0.03429272 +vt -0.2442566 0.07197939 +vt -0.2476004 0.06996886 +vt -0.2459349 0.06698178 +vt -0.241386 0.06913334 +vt 0.2516826 0.01735 +vt 0.2539137 0.01994325 +vt 0.2513204 0.02217433 +vt 0.2490894 0.01958108 +vt 0.1673304 -0.09036562 +vt 0.1692069 -0.08811323 +vt 0.1666059 -0.08589492 +vt 0.1627331 -0.0883221 +vt -0.1481516 -0.09701265 +vt -0.1506192 -0.09938157 +vt -0.1486021 -0.1015488 +vt -0.1450673 -0.09989545 +vt -0.0832736 0.1955234 +vt -0.08557905 0.1979996 +vt -0.08884773 0.1953758 +vt -0.08638391 0.1922104 +vt 0.1003773 0.1550235 +vt 0.09818308 0.1570116 +vt 0.09580582 0.1545517 +vt 0.09798098 0.1525821 +vt -0.2626272 0.02730382 +vt -0.2655386 0.02449559 +vt -0.2606741 0.0194488 +vt -0.2578093 0.0222124 +vt 0.2471232 0.01367051 +vt 0.2524154 0.01826368 +vt 0.2495227 0.02115913 +vt 0.2443893 0.0163892 +vt 0.1559098 -0.102238 +vt 0.1616187 -0.09925002 +vt 0.1598369 -0.09582989 +vt 0.1531503 -0.09937334 +vt -0.1600781 -0.0954752 +vt -0.1616464 -0.09925644 +vt -0.1559434 -0.1023731 +vt -0.1531679 -0.09943433 +vt -0.01679066 0.2140287 +vt -0.02017037 0.2201684 +vt -0.02711648 0.2162718 +vt -0.02339496 0.2103331 +vt 0.02636126 0.2204785 +vt 0.02083644 0.223904 +vt 0.01714121 0.2179478 +vt 0.02261903 0.2145517 +vt -0.2630793 0.04846127 +vt -0.2664188 0.04535461 +vt -0.2598848 0.03752446 +vt -0.2566402 0.04073004 +vt 0.2572469 0.02447448 +vt 0.2626058 0.02936815 +vt 0.2593765 0.03258875 +vt 0.2539347 0.02760984 +vt 0.1956372 -0.06131239 +vt 0.2040327 -0.05460586 +vt 0.2012111 -0.05102249 +vt 0.1930899 -0.05752911 +vt -0.1514194 -0.102846 +vt -0.1535053 -0.1069023 +vt -0.1459117 -0.1102121 +vt -0.1438965 -0.1061203 +vt -0.008072126 0.2120264 +vt -0.0110803 0.2187452 +vt -0.01838036 0.215029 +vt -0.01597369 0.2052705 +vt 0.01846247 0.2150357 +vt 0.01106984 0.2187443 +vt 0.008000389 0.2121843 +vt 0.01609088 0.2051279 +vt -0.227859 0.03854366 +vt -0.2303379 0.0347149 +vt -0.2260381 0.03193092 +vt -0.2235591 0.03575969 +vt 0.1854203 0.04197855 +vt 0.1896055 0.04477178 +vt 0.1872845 0.04857921 +vt 0.1830797 0.04455362 +vt 0.113927 -0.0974158 +vt 0.1184794 -0.09718014 +vt 0.1200736 -0.09394534 +vt 0.1136859 -0.09286372 +vt -0.1268785 -0.08231238 +vt -0.1272163 -0.08686107 +vt -0.1226676 -0.08719888 +vt -0.1223298 -0.0826502 +vt 0.1463282 0.1871608 +vt 0.1448006 0.1928305 +vt 0.1402825 0.1930811 +vt 0.1399282 0.1880031 +vt -0.09093355 0.2240395 +vt -0.09546506 0.2245593 +vt -0.09604881 0.2194702 +vt -0.09151731 0.2189504 +vt -0.2232571 0.000414283 +vt -0.2251919 -0.003131614 +vt -0.2216267 -0.005914943 +vt -0.2189956 -0.002205977 +vt 0.1939054 -0.02787609 +vt 0.1957896 -0.02653555 +vt 0.1932276 -0.02276295 +vt 0.1914894 -0.02400835 +vt 0.145601 -0.08656996 +vt 0.1546005 -0.08402543 +vt 0.1533595 -0.07963628 +vt 0.14436 -0.08218081 +vt -0.07780896 -0.1137145 +vt -0.07823144 -0.1182508 +vt -0.06902458 -0.118875 +vt -0.06792498 -0.1149782 +vt 0.03513049 0.2265587 +vt 0.03371397 0.2281503 +vt 0.02381835 0.2269783 +vt 0.0265726 0.222792 +vt -0.04440302 0.2160689 +vt -0.05358536 0.2170114 +vt -0.05485826 0.2150787 +vt -0.0460797 0.2118533 +vt -0.2058343 -0.03746452 +vt -0.20831 -0.04129479 +vt -0.2027084 -0.04472445 +vt -0.2003446 -0.04082411 +vt 0.2376533 0.004469708 +vt 0.2465958 0.01360787 +vt 0.2436256 0.01655384 +vt 0.2349525 0.006978541 +vt 0.1683509 -0.08824479 +vt 0.1746734 -0.08510829 +vt 0.1716755 -0.0825121 +vt 0.1662081 -0.08422871 +vt -0.2595445 0.0346159 +vt -0.2618607 0.03088356 +vt -0.2552915 0.02277291 +vt -0.2522475 0.02610602 +vt 0.02920899 0.20429 +vt 0.02502059 0.2165781 +vt 0.01972538 0.2067058 +vt 0.02401715 0.201971 +vt 0.01028326 0.2020382 +vt 0.007196441 0.2120172 +vt -0.0004274258 0.2016578 +vt 0.005390946 0.1976846 +vt 0.2391295 0.1045976 +vt 0.2419582 0.1026787 +vt 0.2480907 0.1096601 +vt 0.2465418 0.1124917 +vt -0.2585205 0.04791613 +vt -0.26777 0.05382686 +vt -0.2686642 0.05047341 +vt -0.2607824 0.04537218 +vt 0.1137393 -0.08025415 +vt 0.1122181 -0.08331825 +vt 0.1152822 -0.0848394 +vt 0.1168033 -0.08177529 +vt 0.002472912 -0.02753815 +vt 0.0001658918 -0.02979906 +vt 0.003604724 -0.03470867 +vt 0.006111208 -0.03228465 +vt -0.2190975 0.107216 +vt -0.2277528 0.1137248 +vt -0.2309403 0.1086644 +vt -0.2208677 0.1042888 +vt 0.2181416 0.1050368 +vt 0.2199252 0.102119 +vt 0.2287567 0.1053215 +vt 0.225683 0.110467 +vt 0.2578593 0.06049587 +vt 0.2598172 0.05848733 +vt 0.2634001 0.06308807 +vt 0.2614557 0.06508602 +vt -0.1217517 0.2362687 +vt -0.1220813 0.2420907 +vt -0.1247818 0.2419014 +vt -0.1245648 0.2360741 +vt 0.11568 -0.07707448 +vt 0.1120158 -0.08143555 +vt 0.1110129 -0.08767366 +vt 0.1138318 -0.08767524 +vt 0.1174451 -0.07925401 +vt -0.06556829 -0.1276292 +vt -0.06700349 -0.1300178 +vt -0.06427131 -0.135625 +vt -0.06014308 -0.1335921 +vt -0.1682407 0.1427405 +vt -0.1716916 0.147431 +vt -0.177987 0.142404 +vt -0.1717709 0.1382809 +vt 0.2131494 0.09683149 +vt 0.2179694 0.08904647 +vt 0.2235519 0.09070417 +vt 0.2215304 0.0968594 +vt 0.2170271 0.1011714 +vt -0.2344187 0.06352104 +vt -0.2367535 0.05626048 +vt -0.2311298 0.05474191 +vt -0.2277894 0.06009827 +vt -0.1167488 -0.02323423 +vt -0.1145376 -0.0293241 +vt -0.1118318 -0.02928851 +vt -0.1124174 -0.02167991 +vt 0.004660109 0.2437454 +vt 0.007265028 0.2450757 +vt 0.006131908 0.2493647 +vt 0.002906821 0.2477461 +vt -0.2600468 0.002507175 +vt -0.2661904 0.005826091 +vt -0.2693531 0.004446038 +vt -0.2603984 -0.0001056722 +vt -0.25202 -0.005633869 +vt 0.0908675 0.003577902 +vt 0.09098475 -0.001939634 +vt 0.0952483 -0.000988544 +vt 0.09365211 0.004474681 +vt -0.1355413 -0.1002304 +vt -0.1390737 -0.0994755 +vt -0.1407664 -0.1048148 +vt -0.1365737 -0.1060508 +vt -0.2442081 0.03182123 +vt -0.2478503 0.03423205 +vt -0.2514485 0.02954508 +vt -0.2452031 0.02639332 +vt 0.257956 0.02394569 +vt 0.2586789 0.01830147 +vt 0.265147 0.02161532 +vt 0.2618221 0.02611852 +vt -0.2532443 -0.07361731 +vt -0.256017 -0.0702918 +vt -0.2581087 -0.0715487 +vt -0.2558439 -0.07593338 +vt 0.2729117 0.01624721 +vt 0.2667022 0.01247325 +vt 0.2581652 0.005164243 +vt 0.275404 0.0164605 +vt -0.06452478 0.2022541 +vt -0.06822734 0.2001315 +vt -0.06086978 0.191427 +vt -0.05728987 0.1937029 +vt -0.2562471 -0.001637495 +vt -0.2643968 0.004222206 +vt -0.2702441 -0.002300974 +vt -0.2604386 -0.008316576 +vt -0.2643239 0.08430821 +vt -0.2638385 0.08923839 +vt -0.2720062 0.08929341 +vt -0.2729492 0.08426385 +vt 0.276242 0.03420211 +vt 0.2599114 0.02166162 +vt 0.2634631 0.01686249 +vt 0.2711776 0.02245171 +vt 0.2797241 0.02923308 +vt 0.0938636 -0.09966546 +vt 0.09042294 -0.1023235 +vt 0.09490641 -0.1088098 +vt 0.09748666 -0.1044873 +vt 0.19678 0.100526 +vt 0.2069089 0.105973 +vt 0.2017729 0.1095775 +vt 0.1937085 0.1045061 +vt 0.2676234 -0.03779791 +vt 0.2698449 -0.04353505 +vt 0.2757703 -0.03706487 +vt 0.2507934 0.06957863 +vt 0.2528868 0.06197703 +vt 0.2718177 0.06443433 +vt 0.2685716 0.07630762 +vt -0.2712141 -0.02092846 +vt -0.2763824 -0.0113877 +vt -0.2857477 -0.009246795 +vt -0.290053 -0.01781908 +vt -0.162118 -0.03730877 +vt -0.1645061 -0.03079709 +vt -0.1703717 -0.03265209 +vt -0.1681584 -0.04477691 +vt -0.2665817 -0.03274313 +vt -0.2634809 -0.02289379 +vt -0.2721035 -0.02338944 +vt -0.2314452 0.1180429 +vt -0.2407108 0.1231185 +vt -0.2426193 0.1165545 +vt -0.2335682 0.1135159 +vt 0.24208 0.1404687 +vt 0.2530377 0.1559987 +vt 0.2474622 0.1585032 +vt 0.2423501 0.1492099 +vt -0.2617425 -0.006956989 +vt -0.2706324 -0.002237621 +vt -0.2743799 -0.0118589 +vt -0.2673805 -0.01366116 +vt 0.2259005 0.09151432 +vt 0.2327606 0.09361802 +vt 0.2302845 0.1010795 +vt 0.2210124 0.09535989 +vt 0.1271901 0.2091772 +vt 0.1329891 0.2089654 +vt 0.1331627 0.2106365 +vt 0.1273748 0.2110515 +vt -0.03876793 0.2327011 +vt -0.03826874 0.2346931 +vt -0.04396627 0.235794 +vt -0.04444986 0.2338799 +vt 0.1108785 0.07370006 +vt 0.1110907 0.07090881 +vt 0.1168487 0.07106324 +vt 0.1166729 0.07355693 +vt -0.1043639 -0.1181004 +vt -0.1101579 -0.1184215 +vt -0.1107695 -0.1318132 +vt -0.1050378 -0.1327192 +vt -0.248381 0.0423106 +vt -0.249826 0.04351489 +vt -0.2590665 0.03216784 +vt -0.2574902 0.0308526 +vt -0.2531953 0.03257551 +vt -0.2500518 0.0353264 +vt -0.2483772 0.03949772 +vt 0.249087 0.04196883 +vt 0.2485587 0.03951006 +vt 0.2499004 0.03558483 +vt 0.2532361 0.03220742 +vt 0.2572336 0.03146609 +vt 0.2587767 0.0326964 +vt 0.2503246 0.04310085 +vt 0.09502709 -0.1555725 +vt 0.09530141 -0.1597416 +vt 0.1010629 -0.159859 +vt 0.100793 -0.1551203 +vt 0.1298176 -0.2186719 +vt 0.1302949 -0.2232564 +vt 0.1359354 -0.221962 +vt 0.1355199 -0.2179393 +vt 0.09763722 -0.04439687 +vt 0.0977713 -0.04888942 +vt 0.1035345 -0.04838964 +vt 0.1034009 -0.0442442 +vt 0.2222557 0.02471173 +vt 0.2170445 0.03122881 +vt 0.2133182 0.02824917 +vt 0.2185294 0.02173209 +vt 0.2651075 -0.03071494 +vt 0.2608761 -0.02731055 +vt 0.255889 -0.02799273 +vt 0.2616823 -0.03395203 +vt 0.2509534 -0.1056023 +vt 0.2468892 -0.09831637 +vt 0.2416297 -0.09901831 +vt 0.2459013 -0.1061846 +vt -0.01689563 0.2831557 +vt -0.02370871 0.283676 +vt -0.01965745 0.2730976 +vt -0.01369365 0.2789286 +vt -0.2509169 0.1347022 +vt -0.2558522 0.1300242 +vt -0.2461484 0.1242769 +vt -0.2408776 0.1239056 +vt -0.2398842 0.1321637 +vt -0.2725919 0.09020484 +vt -0.2744968 0.08474045 +vt -0.2634539 0.08197268 +vt -0.2622314 0.08574254 +vt -0.2798709 0.06523066 +vt -0.2787254 0.05869106 +vt -0.2697355 0.0529156 +vt -0.2647679 0.0595851 +vt -0.2686996 0.06304181 +vt -0.2775028 0.05374734 +vt -0.2779525 0.04681075 +vt -0.2750675 0.04308601 +vt -0.2684147 0.04811229 +vt -0.2446921 0.07987038 +vt -0.2526046 0.07722063 +vt -0.2500278 0.07362075 +vt -0.2420224 0.07597497 +vt -0.179467 0.1789923 +vt -0.1854106 0.1805629 +vt -0.1857538 0.1758785 +vt -0.177486 0.1751229 +vt 0.04526334 0.2068284 +vt 0.03878977 0.2120936 +vt 0.03577927 0.2083922 +vt 0.04225285 0.2031271 +vt 0.1533223 0.1113378 +vt 0.1479582 0.1177296 +vt 0.1443035 0.1146626 +vt 0.1496675 0.1082707 +vt -0.1505171 -0.09298798 +vt -0.1434673 -0.09736452 +vt -0.1379014 -0.09651303 +vt -0.1308442 -0.09244521 +vt -0.1297246 -0.08671187 +vt -0.1325363 -0.08165713 +vt -0.135344 -0.07659702 +vt -0.1387395 -0.07153077 +vt -0.144064 -0.06959245 +vt -0.1511439 -0.07366871 +vt -0.1545196 -0.07743102 +vt -0.1545625 -0.08569182 +vt 0.214657 -0.08402123 +vt 0.2132296 -0.07579982 +vt 0.2078828 -0.06939356 +vt 0.2000491 -0.06651901 +vt 0.1918277 -0.0679464 +vt 0.1854215 -0.07329325 +vt 0.1825469 -0.08112688 +vt 0.1839743 -0.08934829 +vt 0.1893212 -0.09575454 +vt 0.1971548 -0.09862909 +vt 0.2053762 -0.0972017 +vt 0.2117825 -0.09185485 +vt -0.2603769 0.0888991 +vt -0.2567431 0.08509787 +vt -0.2537405 0.0928828 +vt -0.2590481 0.09263269 +vt 0.2933051 0.06657588 +vt 0.2780739 0.06343348 +vt 0.2934893 0.06531157 +vt 0.07803941 -0.0344357 +vt 0.07089476 -0.02757994 +vt 0.06999394 -0.0286339 +vt -0.03541834 0.005915443 +vt -0.04372357 0.01384874 +vt -0.04412314 0.01246111 +vt -0.03636188 0.004924455 +vt -0.217508 0.1029388 +vt -0.2264711 0.107428 +vt -0.2272099 0.1060734 +vt -0.2180934 0.1016712 +vt -0.2566632 0.1243607 +vt -0.2657366 0.1283688 +vt -0.2663269 0.1268037 +vt -0.2572251 0.1228605 +vt -0.2853234 -0.003465424 +vt -0.2952414 -0.003624784 +vt -0.2950678 -0.005306316 +vt -0.2851502 -0.00512911 +vt -0.1700372 -0.08229072 +vt -0.178868 -0.08637271 +vt -0.1779961 -0.08777389 +vt -0.1691324 -0.08371828 +vt -0.08641173 -0.04800007 +vt -0.09418442 -0.05389345 +vt -0.09315764 -0.05507284 +vt -0.08533321 -0.04924947 +vt 0.04255717 0.07655593 +vt 0.03503898 0.07008545 +vt 0.03606214 0.06905331 +vt 0.04365218 0.0754394 +vt 0.1538911 0.1557339 +vt 0.1460435 0.1496672 +vt 0.1468933 0.1486201 +vt 0.1548046 0.1546036 +vt 0.262904 0.1345018 +vt 0.2538576 0.1304334 +vt 0.2543445 0.1292522 +vt 0.2634198 0.1332558 +vt 0.3044707 0.06060793 +vt 0.3095196 0.06914541 +vt 0.3096232 0.07906374 +vt 0.3041494 0.0871321 +vt 0.2962159 0.09275468 +vt 0.2862975 0.09285881 +vt 0.2776561 0.08798981 +vt 0.2706318 0.08085719 +vt 0.2725036 0.06953399 +vt 0.2772623 0.06094242 +vt 0.2806906 0.052179 +vt 0.2958294 0.05573893 +vt 0.2943946 0.06103092 +vt 0.2789589 0.05932977 +vt 0.2806008 0.05224553 +vt 0.2941794 0.05418437 +vt -0.003470184 -0.05228028 +vt -0.01129527 -0.04697178 +vt -0.01707522 -0.05167086 +vt -0.008337552 -0.05760464 +vt 0.0144582 -0.1159897 +vt 0.006988352 -0.109465 +vt 0.00256597 -0.1161272 +vt 0.008915213 -0.1210486 +vt -0.0004683336 -0.02071371 +vt -0.008282769 -0.01346968 +vt -0.01359657 -0.0194188 +vt -0.004982224 -0.02704143 +vt -0.1819152 0.1533405 +vt -0.1907064 0.1583793 +vt -0.1857717 0.1461084 +vt -0.2751658 0.07423507 +vt -0.2845627 0.07741055 +vt -0.2853141 0.06799854 +vt -0.2776911 0.06546085 +vt -0.2858824 0.04268172 +vt -0.2958007 0.04255452 +vt -0.2935117 0.0333671 +vt -0.2854781 0.03324819 +vt -0.222495 0.03456786 +vt -0.2316284 0.03117771 +vt -0.2270705 0.02328425 +vt -0.219392 0.02562816 +vt -0.1558114 0.07910571 +vt -0.1638882 0.07365679 +vt -0.1579483 0.06720981 +vt -0.151066 0.07133037 +vt -0.06134783 0.1810507 +vt -0.0683635 0.1740393 +vt -0.06210459 0.1686767 +vt -0.05610044 0.1740145 +vt 0.04662817 0.2478443 +vt 0.04012707 0.2403528 +vt 0.04608568 0.2354215 +vt 0.05159689 0.2412678 +vt 0.1920332 0.2034803 +vt 0.1844081 0.1973272 +vt 0.1871858 0.1912588 +vt 0.1953522 0.1966669 +vt 0.2872255 0.0822127 +vt 0.273881 0.07908534 +vt 0.274882 0.07484655 +vt 0.2859823 0.07692403 +vt 0.1444469 0.08626116 +vt 0.1365516 0.09291633 +vt 0.1330716 0.08610128 +vt 0.1417204 0.08380345 +vt 0.04050908 0.1111004 +vt 0.03389045 0.1144751 +vt 0.03149139 0.1081673 +vt 0.03862137 0.1039303 +vt 0.02655064 -0.03511399 +vt 0.01758085 -0.02770388 +vt 0.01627305 -0.03679276 +vt 0.02411944 -0.04207821 +vt -0.271836 0.0523374 +vt -0.2819107 0.05433544 +vt -0.2819642 0.04550842 +vt -0.2750924 0.04372533 +vt -0.2818033 0.0526924 +vt -0.2894436 0.05517675 +vt -0.2879981 0.04601824 +vt -0.2818578 0.04386378 +vt -0.2836216 0.05697352 +vt -0.2916535 0.05709978 +vt -0.2886735 0.04816328 +vt -0.2821769 0.04781589 +vt -0.242119 0.08966423 +vt -0.2498171 0.08737265 +vt -0.2458906 0.07898103 +vt -0.2395883 0.0805911 +vt -0.1772431 0.1423462 +vt -0.1840129 0.138023 +vt -0.1797614 0.130278 +vt -0.1741713 0.133605 +vt -0.08296375 0.201164 +vt -0.08873211 0.1955725 +vt -0.08483975 0.1883569 +vt -0.08009256 0.192807 +vt 0.06925534 0.2339892 +vt 0.06351663 0.228366 +vt 0.06604613 0.221331 +vt 0.070668 0.2259126 +vt 0.1318138 0.2325311 +vt 0.1246082 0.2257375 +vt 0.1273162 0.221024 +vt 0.1331545 0.2251933 +vt 0.2950813 0.02422589 +vt 0.2839473 0.02430293 +vt 0.2848558 0.01944726 +vt 0.2912183 0.0210027 +vt 0.04583462 -0.2309601 +vt 0.03838008 -0.2254577 +vt 0.03590504 -0.2307659 +vt 0.04079524 -0.2326445 +vt -0.08380871 -0.07240234 +vt -0.0920026 -0.0696234 +vt -0.09169652 -0.07275678 +vt -0.08801002 -0.07606 +vt 0.1883719 0.1274291 +vt 0.181666 0.1340274 +vt 0.1821156 0.129027 +vt 0.1880973 0.124018 +vt -0.2777603 0.02265443 +vt -0.28464 0.02431261 +vt -0.2830749 0.01886173 +vt -0.2751457 0.01823892 +vt -0.286605 0.03495849 +vt -0.2927161 0.03719645 +vt -0.2901678 0.03107351 +vt -0.2851548 0.02944325 +vt -0.27813 0.07691455 +vt -0.2846263 0.07730461 +vt -0.2816655 0.07069202 +vt -0.276397 0.0705129 +vt -0.2471251 0.1214261 +vt -0.2533981 0.1196941 +vt -0.2500858 0.1130047 +vt -0.2450285 0.1144911 +vt -0.2014105 0.1679307 +vt -0.2068009 0.1642854 +vt -0.2034148 0.1578545 +vt -0.1990727 0.1608421 +vt -0.1302407 0.2186067 +vt -0.1344798 0.2136702 +vt -0.1315868 0.207647 +vt -0.1281537 0.2116454 +vt 0.01250034 0.2589808 +vt 0.008560204 0.2538026 +vt 0.009799521 0.2481546 +vt 0.01302809 0.2523198 +vt 0.1512735 0.2255389 +vt 0.1452113 0.2216703 +vt 0.1447381 0.2162917 +vt 0.1502298 0.2198502 +vt 0.2708646 -0.06234111 +vt 0.2641014 -0.06143627 +vt 0.2642029 -0.06379987 +vt 0.2688906 -0.06439076 +vt 0.1657887 -0.01994074 +vt 0.1606665 -0.0192898 +vt 0.1606887 -0.02051066 +vt 0.1650836 -0.02205967 +vt 0.1583469 0.1245262 +vt 0.1537694 0.1271405 +vt 0.1543227 0.1254815 +vt 0.1583754 0.1230148 +vt -0.1468133 -0.1327111 +vt -0.1497016 -0.1254081 +vt -0.1497823 -0.1313294 +vt -0.145932 -0.133975 +vt -0.2703863 -0.01008861 +vt -0.2783546 -0.009770899 +vt -0.2773623 -0.01232124 +vt -0.2735597 -0.01515367 +vt -0.2853894 0.03706315 +vt -0.2903204 0.03892539 +vt -0.2893001 0.03592309 +vt -0.2848129 0.03438407 +vt -0.2773984 0.08119728 +vt -0.2826673 0.08133695 +vt -0.281579 0.07805122 +vt -0.2768356 0.07807716 +vt -0.246096 0.1363529 +vt -0.2511482 0.1348656 +vt -0.2503863 0.130799 +vt -0.2455794 0.1329367 +vt -0.2299218 0.1522669 +vt -0.2339462 0.1488783 +vt -0.2326442 0.1456574 +vt -0.2295046 0.1481577 +vt -0.09339498 0.2119772 +vt -0.09715272 0.2082802 +vt -0.09663797 0.2051168 +vt -0.09330027 0.2084885 +vt 0.1142176 0.201115 +vt 0.1100549 0.1978814 +vt 0.1094573 0.1951963 +vt 0.1132358 0.1980647 +vt 0.1978621 0.1915687 +vt 0.1919243 0.1889091 +vt 0.1929726 0.1863223 +vt 0.1966964 0.189177 +vt -0.2833697 0.06646114 +vt -0.2786265 0.06655808 +vt -0.2745671 0.06901368 +vt -0.2722793 0.07316991 +vt -0.2723761 0.0779132 +vt -0.2748316 0.08197249 +vt -0.2789878 0.08426017 +vt -0.2837311 0.0841632 +vt -0.2878094 0.08085544 +vt -0.2900783 0.07755138 +vt -0.2899814 0.0728081 +vt -0.287526 0.06874879 +vt -0.2763917 0.07301037 +vt -0.2788839 0.06422642 +vt -0.2688197 0.06216632 +vt 0.2949514 0.05692086 +vt 0.2801874 0.05210584 +vt 0.295319 0.05569723 +vt 0.03991709 -0.06650133 +vt 0.03912443 -0.06763887 +vt 0.04756064 -0.07282324 +vt -0.1630716 -0.06933276 +vt -0.1698014 -0.06056704 +vt -0.170554 -0.06275269 +vt -0.1639573 -0.07012597 +vt -0.2522836 0.03569914 +vt -0.2606432 0.04126326 +vt -0.2614319 0.04018989 +vt -0.2537427 0.03398713 +vt -0.2646055 0.1058645 +vt -0.2735558 0.1101403 +vt -0.2743487 0.1086675 +vt -0.265368 0.1044557 +vt -0.2847049 0.001955648 +vt -0.2946179 0.002304841 +vt -0.2948206 0.0006265661 +vt -0.284907 0.0002952243 +vt -0.1659532 -0.09633266 +vt -0.1748834 -0.1008355 +vt -0.1743043 -0.1023812 +vt -0.1653612 -0.09791607 +vt -0.0573274 -0.07393845 +vt -0.06485279 -0.0798191 +vt -0.06402075 -0.08114325 +vt -0.05643569 -0.07532751 +vt 0.08529337 0.02962891 +vt 0.07813574 0.02276165 +vt 0.07905312 0.02163446 +vt 0.08628701 0.02842129 +vt 0.1920632 0.1068935 +vt 0.1843587 0.100646 +vt 0.1851717 0.09957007 +vt 0.1929418 0.1057358 +vt 0.2762929 0.1041404 +vt 0.2673209 0.09991034 +vt 0.2678939 0.09876836 +vt 0.2768959 0.1029342 +vt -0.2931097 0.06665261 +vt -0.2781107 0.06254472 +vt -0.274362 0.0711811 +vt -0.2692985 0.07959084 +vt -0.2690415 0.08950658 +vt -0.2737765 0.09822209 +vt -0.282235 0.1034021 +vt -0.2921503 0.1036586 +vt -0.3006001 0.09831832 +vt -0.3060461 0.09046388 +vt -0.3063032 0.08054815 +vt -0.3015681 0.07183262 +vt 0.290919 0.06751688 +vt 0.2777973 0.06352219 +vt 0.2793104 0.05640931 +vt 0.2940137 0.06140587 +vt 0.05017262 0.01105412 +vt 0.0429786 0.01878735 +vt 0.03921355 0.01235979 +vt 0.04565074 0.005433395 +vt 0.1150808 0.01212911 +vt 0.1088675 0.01722123 +vt 0.1033591 0.01142476 +vt 0.111385 0.0055977 +vt 0.02621573 0.02033664 +vt 0.01768303 0.02724126 +vt 0.01234679 0.02189536 +vt 0.02068057 0.01474498 +vt -0.192747 0.1421229 +vt -0.2056901 0.1426761 +vt -0.1978341 0.1363581 +vt -0.2054446 0.1963608 +vt -0.2115916 0.2015342 +vt -0.2192238 0.1959755 +vt -0.2116061 0.1896228 +vt -0.2870348 -0.02164657 +vt -0.2950587 -0.02123326 +vt -0.297951 -0.03024895 +vt -0.2880629 -0.03103263 +vt -0.06625025 -0.2171357 +vt -0.07167199 -0.223061 +vt -0.06682453 -0.2306151 +vt -0.05951783 -0.2237896 +vt 0.07509571 -0.1578024 +vt 0.07058602 -0.1644441 +vt 0.07669985 -0.1707347 +vt 0.08236947 -0.1630558 +vt 0.1828023 -0.04667074 +vt 0.177945 -0.05306987 +vt 0.1837758 -0.05889514 +vt 0.1902234 -0.05135807 +vt 0.2474819 0.03362925 +vt 0.2413568 0.02842967 +vt 0.2459713 0.02222255 +vt 0.253791 0.02832507 +vt 0.2655764 0.08264627 +vt 0.2571372 0.07767458 +vt 0.2613753 0.07251899 +vt 0.270247 0.07667775 +vt 0.289324 0.06096815 +vt 0.2785751 0.05750506 +vt 0.2797148 0.05330143 +vt 0.2929372 0.05691099 +vt -0.09650821 -0.1405658 +vt -0.09835456 -0.1318095 +vt -0.1053409 -0.1349315 +vt -0.09910397 -0.1431612 +vt -0.1086532 -0.04520885 +vt -0.1130124 -0.03815285 +vt -0.1192779 -0.04066011 +vt -0.1157899 -0.04721968 +vt 0.001972406 -0.1163893 +vt -0.003647593 -0.1103604 +vt -0.01277389 -0.1123803 +vt -0.004540171 -0.1196549 +vt -0.1160661 0.2409552 +vt -0.1214866 0.2500075 +vt -0.1299687 0.2475633 +vt -0.1253172 0.2390643 +vt -0.1394071 0.2471143 +vt -0.1434616 0.2522041 +vt -0.1525858 0.2505564 +vt -0.1477264 0.2441586 +vt -0.2809331 -0.05814621 +vt -0.2874236 -0.05859367 +vt -0.2902654 -0.06757503 +vt -0.2822365 -0.06732501 +vt 0.1381238 -0.2154227 +vt 0.1379841 -0.2219259 +vt 0.1470473 -0.2238482 +vt 0.1475344 -0.2158311 +vt 0.1808269 -0.1330948 +vt 0.1791444 -0.1393787 +vt 0.1877535 -0.1413651 +vt 0.1900739 -0.1336752 +vt 0.2087671 -0.04678064 +vt 0.2052675 -0.0522663 +vt 0.2130765 -0.054763 +vt 0.2175099 -0.04806342 +vt 0.2354743 0.04369644 +vt 0.230481 0.03952283 +vt 0.2372489 0.03634715 +vt 0.2433836 0.0415354 +vt 0.2555099 0.06337029 +vt 0.2499574 0.05882742 +vt 0.2537973 0.05497966 +vt 0.2622407 0.06015497 +vt 0.287802 0.04342699 +vt 0.2812523 0.04337601 +vt 0.2815612 0.03844574 +vt 0.292337 0.04124859 +vt 0.2291243 0.0377713 +vt 0.225641 0.04168408 +vt 0.2215476 0.03749515 +vt 0.2293265 0.03246173 +vt 0.0644447 0.08745816 +vt 0.06089674 0.09090977 +vt 0.05774977 0.09100051 +vt 0.06108337 0.08301619 +vt 0.09105773 0.02415734 +vt 0.08818035 0.02803181 +vt 0.08135666 0.02814212 +vt 0.08813635 0.02374958 +vt 0.1035947 0.2482153 +vt 0.102515 0.2533118 +vt 0.09831992 0.2570898 +vt 0.0966573 0.2467 +vt 0.09998193 0.2670831 +vt 0.1008405 0.2722842 +vt 0.09657615 0.2773634 +vt 0.09575204 0.2709079 +vt 0.2845554 0.02921699 +vt 0.289785 0.02855397 +vt 0.2937621 0.03461003 +vt 0.2872867 0.03526054 +vt 0.2622421 -0.07564563 +vt 0.265038 -0.08011432 +vt 0.2719557 -0.07730993 +vt 0.2684137 -0.07185052 +vt 0.2497009 -0.07053195 +vt 0.2497647 -0.07580219 +vt 0.2569712 -0.07485919 +vt 0.25684 -0.06835319 +vt 0.2489426 -0.03390006 +vt 0.24668 -0.03865964 +vt 0.2533588 -0.03886152 +vt 0.2561522 -0.0329848 +vt 0.2541835 0.0250237 +vt 0.2502428 0.02152458 +vt 0.2559609 0.02066462 +vt 0.2608648 0.02494125 +vt 0.2592212 0.06617907 +vt 0.2541004 0.06210486 +vt 0.25935 0.06084217 +vt 0.2649464 0.06535855 +vt 0.2752462 -0.002658057 +vt 0.2705407 -0.002231068 +vt 0.2699353 -0.004518079 +vt 0.2767353 -0.005082997 +vt 0.07428323 -0.1517596 +vt 0.07126454 -0.1482096 +vt 0.07011651 -0.1486256 +vt 0.07255675 -0.1531761 +vt -0.1682056 -0.1181587 +vt -0.1693996 -0.1135672 +vt -0.1708288 -0.1125592 +vt -0.1696447 -0.1176959 +vt -0.04866622 0.05770112 +vt -0.05164689 0.061392 +vt -0.05356287 0.06253265 +vt -0.05025694 0.05842687 +vt 0.1451274 0.2160003 +vt 0.1448496 0.2207364 +vt 0.1432446 0.2229587 +vt 0.143691 0.2177062 +vt 0.2430185 0.1501829 +vt 0.2464718 0.1534353 +vt 0.2461634 0.1565912 +vt 0.2424389 0.1528614 +vt 0.2818353 0.05937875 +vt 0.2865636 0.05900013 +vt 0.2878933 0.06219584 +vt 0.2826286 0.06244838 +vt 0.2783183 -0.02791007 +vt 0.2813244 -0.03157968 +vt 0.2840528 -0.02926956 +vt 0.2805886 -0.02529687 +vt 0.251836 -0.06391893 +vt 0.2518918 -0.06866284 +vt 0.2551765 -0.06748389 +vt 0.2549801 -0.06221616 +vt 0.2303606 -0.03297164 +vt 0.2280848 -0.03713439 +vt 0.2312632 -0.03672265 +vt 0.2337306 -0.03206437 +vt 0.2203117 0.06666748 +vt 0.2167656 0.06351624 +vt 0.2195157 0.06358232 +vt 0.2234945 0.06703971 +vt 0.2621098 0.0782657 +vt 0.2578423 0.07631516 +vt 0.2596356 0.07417633 +vt 0.2647689 0.07817386 +vt 0.2877899 0.06532811 +vt 0.2902807 0.069366 +vt 0.2904188 0.07410832 +vt 0.2881674 0.07828438 +vt 0.2841294 0.08077512 +vt 0.2793871 0.0809133 +vt 0.2752111 0.07866178 +vt 0.2727203 0.07462391 +vt 0.2725821 0.0698816 +vt 0.2748337 0.06570561 +vt 0.2788716 0.06321476 +vt 0.2836139 0.06307665 +vt -0.1865729 0.197281 +vt -0.1930133 0.2045217 +vt -0.199502 0.1980978 +vt -0.251334 -0.0005703322 +vt -0.2540306 -0.005579908 +vt -0.252556 -0.006313907 +vt -0.2496854 -0.001402011 +vt 0.2427423 0.01077914 +vt 0.2444254 0.01173484 +vt 0.2419007 0.0168333 +vt 0.2401479 0.01584255 +vt -0.07948055 -0.1266435 +vt -0.07703236 -0.1267599 +vt -0.07700995 -0.1211126 +vt -0.0797506 -0.1209671 +vt -0.1614693 -0.03779892 +vt -0.1635083 -0.04311039 +vt -0.1518361 -0.04915254 +vt -0.1487245 -0.0443894 +vt -0.06244448 0.2388432 +vt -0.05845641 0.2407183 +vt -0.05594185 0.2439509 +vt -0.05449865 0.2482523 +vt -0.05587526 0.2497207 +vt -0.06645847 0.2400338 +vt -0.06519791 0.2386876 +vt 0.0665577 0.2404381 +vt 0.0568694 0.2493186 +vt 0.05557507 0.2478804 +vt 0.05606679 0.2439248 +vt 0.05917708 0.2404626 +vt 0.06294018 0.2389199 +vt 0.06537743 0.2392932 +vt 0.1797179 -0.01994806 +vt 0.1838416 -0.01779165 +vt 0.1808447 -0.01300205 +vt 0.1771982 -0.01486826 +vt 0.2494042 0.03990179 +vt 0.2525412 0.0423267 +vt 0.2496463 0.04720656 +vt 0.2460688 0.04444561 +vt 0.06873427 -0.09426304 +vt 0.07260657 -0.09302165 +vt 0.07117079 -0.08753482 +vt 0.06697775 -0.08889002 +vt -0.03688131 0.2981876 +vt -0.04266495 0.2939757 +vt -0.04087767 0.2915215 +vt -0.03509403 0.2957333 +vt -0.2070798 0.1884255 +vt -0.2097717 0.1817965 +vt -0.2069587 0.1806542 +vt -0.2042668 0.1872832 +vt -0.2466774 0.09330195 +vt -0.2486238 0.08641708 +vt -0.2457023 0.08559112 +vt -0.2437559 0.092476 +vt -0.2651308 0.02057082 +vt -0.267727 0.01211836 +vt -0.2647587 0.01148096 +vt -0.262199 0.01978264 +vt -0.2928272 -0.02495116 +vt -0.2948512 -0.03073746 +vt -0.2920415 -0.03188524 +vt -0.2899932 -0.02603758 +vt -0.2976119 0.0531776 +vt -0.3021892 0.04767871 +vt -0.2998558 0.04573631 +vt -0.2952784 0.0512352 +vt 0.04266417 0.2939757 +vt 0.03688052 0.2981876 +vt 0.03509323 0.2957333 +vt 0.04087689 0.2915215 +vt 0.2097709 0.1817969 +vt 0.2070791 0.188426 +vt 0.204266 0.1872837 +vt 0.2069579 0.1806547 +vt 0.1799467 0.1929145 +vt 0.1716429 0.205287 +vt 0.1691325 0.2039737 +vt 0.1772443 0.1915658 +vt 0.3101284 0.04814472 +vt 0.304538 0.05718732 +vt 0.3022898 0.05515345 +vt 0.3083956 0.04588782 +vt 0.2900056 -0.03116778 +vt 0.287606 -0.02442743 +vt 0.2847458 -0.02544568 +vt 0.2871453 -0.03218603 +vt 0.3021893 0.04767811 +vt 0.2976119 0.05317699 +vt 0.2952785 0.0512346 +vt 0.2998558 0.04573571 +vt -0.1523392 -0.02067276 +vt -0.15702 -0.02608279 +vt -0.1668511 -0.02976154 +vt -0.1560259 -0.03986884 +vt -0.1506174 -0.04455091 +vt -0.1435931 -0.0459007 +vt -0.1368353 -0.04355651 +vt -0.1319303 -0.03988402 +vt -0.1308052 -0.03112024 +vt -0.1331487 -0.02436043 +vt -0.1385572 -0.01967836 +vt -0.1455814 -0.01832858 +vt -0.1986398 0.2266792 +vt -0.2010702 0.2199499 +vt -0.1802511 0.2111716 +vt -0.1770162 0.2201283 +vt -0.2554043 0.1427817 +vt -0.2566362 0.1357338 +vt -0.2346141 0.1306823 +vt -0.2329743 0.140063 +vt -0.2713267 0.08034588 +vt -0.2728019 0.07334489 +vt -0.2509678 0.06753396 +vt -0.2490043 0.07685229 +vt -0.2818628 0.020229 +vt -0.2845939 0.01205391 +vt -0.2652271 0.005487536 +vt -0.2599314 0.01490652 +vt -0.2934734 0.01310791 +vt -0.2958472 0.007958614 +vt -0.2830984 0.0004188711 +vt -0.2747012 0.005314803 +vt -0.2499732 0.1378051 +vt -0.2562283 0.134336 +vt -0.2495937 0.1207488 +vt -0.2407805 0.1259269 +vt 0.03870691 0.2535608 +vt 0.03289451 0.2575229 +vt 0.01902027 0.2397383 +vt 0.03250726 0.2398309 +vt 0.1318028 0.2068503 +vt 0.1278162 0.2127821 +vt 0.1085295 0.2003495 +vt 0.1137488 0.1932696 +vt 0.154264 0.1868248 +vt 0.1454204 0.1987053 +vt 0.1288294 0.1844956 +vt 0.1342691 0.1755836 +vt 0.2919183 -0.04360797 +vt 0.2899324 -0.03355578 +vt 0.2697434 -0.04276047 +vt 0.2733995 -0.05440409 +vt 0.252365 -0.08383299 +vt 0.2511153 -0.07678825 +vt 0.2286923 -0.07956345 +vt 0.2303557 -0.08894001 +vt 0.2780091 -0.09450833 +vt 0.2763419 -0.08755054 +vt 0.254124 -0.09165649 +vt 0.256343 -0.1009173 +vt 0.08012909 0.2357733 +vt 0.07103547 0.2329463 +vt 0.07765467 0.2198405 +vt 0.08368831 0.2212025 +vt -0.06749214 0.1818077 +vt -0.07364936 0.1745443 +vt -0.06139804 0.167591 +vt -0.0568091 0.1717363 +vt -0.1261583 0.07157196 +vt -0.1297647 0.06276109 +vt -0.1165898 0.06023672 +vt -0.1134259 0.06554722 +vt -0.1698278 -0.06753544 +vt -0.1724813 -0.07803387 +vt -0.158635 -0.07666136 +vt -0.1568409 -0.07079975 +vt -0.184594 -0.1010681 +vt -0.1912922 -0.1084799 +vt -0.1806914 -0.1091025 +vt -0.171014 -0.1061452 +vt -0.1706928 -0.1000475 +vt -0.2675215 -0.08684425 +vt -0.269803 -0.09680803 +vt -0.259432 -0.09905382 +vt -0.2576552 -0.09109306 +vt 0.1455332 0.2500997 +vt 0.1328239 0.2547998 +vt 0.1361048 0.2452272 +vt 0.289543 0.005775411 +vt 0.2922428 0.0141446 +vt 0.2790996 0.01745651 +vt 0.2783069 0.01144864 +vt 0.2893018 0.04386066 +vt 0.2901476 0.05428895 +vt 0.2745103 0.05157327 +vt 0.2758838 0.04580163 +vt 0.2936804 0.02261985 +vt 0.2886782 0.03452379 +vt 0.2756558 0.02830523 +vt 0.277942 0.02065438 +vt 0.2889819 0.03704973 +vt 0.2837576 0.04500995 +vt 0.2723836 0.03536519 +vt 0.2761348 0.0304497 +vt 0.2502845 0.1306726 +vt 0.2419026 0.135192 +vt 0.2367535 0.1211044 +vt 0.2421869 0.1181491 +vt 0.1325038 -0.05517829 +vt 0.1263864 -0.05607619 +vt 0.1215366 -0.05991371 +vt 0.1192538 -0.06566253 +vt 0.1201497 -0.07178232 +vt 0.1239842 -0.07663323 +vt 0.12973 -0.07891551 +vt 0.1358474 -0.07801761 +vt 0.1407954 -0.07453527 +vt 0.1442635 -0.06984052 +vt 0.1420841 -0.0623115 +vt 0.1382495 -0.05746057 +vt -0.01387479 -0.2344937 +vt -0.007581139 -0.2260857 +vt -0.01204136 -0.2218063 +vt -0.01962468 -0.2287104 +vt 0.2541815 -0.1205719 +vt 0.2463773 -0.1107069 +vt 0.2413529 -0.1142652 +vt 0.2447493 -0.1241884 +vt 0.05639926 0.2545504 +vt 0.05034033 0.254262 +vt 0.05044716 0.251228 +vt 0.05651034 0.2515166 +vt -0.02417305 0.2532621 +vt -0.03179979 0.2516016 +vt -0.03112869 0.2486408 +vt -0.02349313 0.2503033 +vt -0.223762 0.1393451 +vt -0.2292443 0.1347478 +vt -0.2272934 0.1324214 +vt -0.2218111 0.1370187 +vt -0.280608 0.06916942 +vt -0.2855549 0.06400047 +vt -0.2833615 0.06190126 +vt -0.2784146 0.0670702 +vt -0.2940852 0.06365119 +vt -0.2992177 0.05866649 +vt -0.2971025 0.0564885 +vt -0.29197 0.06147323 +vt -0.2557425 0.1341219 +vt -0.2617762 0.1302767 +vt -0.2601445 0.1277163 +vt -0.2541109 0.1315615 +vt -0.2990028 0.06868909 +vt -0.3015369 0.06276582 +vt -0.299632 0.06040268 +vt -0.2969685 0.0664364 +vt -0.2519328 0.1593678 +vt -0.2605078 0.1537969 +vt -0.260335 0.1508537 +vt -0.2506102 0.1566718 +vt 0.2487253 0.0503703 +vt 0.2373699 0.06543632 +vt 0.2353534 0.0632991 +vt 0.2463255 0.04877349 +vt 0.2855548 0.06400041 +vt 0.2806078 0.06916934 +vt 0.2784144 0.06707013 +vt 0.2833614 0.06190118 +vt 0.2992177 0.05866639 +vt 0.2940852 0.06365112 +vt 0.29197 0.06147314 +vt 0.2971025 0.05648842 +vt 0.2617763 0.1302767 +vt 0.2557427 0.1341219 +vt 0.254111 0.1315615 +vt 0.2601446 0.1277163 +vt -0.07257994 -0.1339994 +vt -0.07528798 -0.1406083 +vt -0.07432215 -0.1476853 +vt -0.06815236 -0.165387 +vt -0.05932027 -0.1602165 +vt -0.05623028 -0.1550813 +vt -0.05057402 -0.1507113 +vt -0.047866 -0.1441025 +vt -0.04883181 -0.1370254 +vt -0.05321269 -0.1313765 +vt -0.060862 -0.1298254 +vt -0.06692368 -0.1296295 +vt -0.003584784 0.2769035 +vt -0.009465153 0.2755574 +vt -0.0002460149 0.2571562 +vt 0.003649914 0.2646298 +vt -0.02304809 0.2713028 +vt -0.03068545 0.269677 +vt -0.0277333 0.2472787 +vt -0.01312455 0.2532617 +vt -0.2467296 0.1347527 +vt -0.25184 0.1297453 +vt -0.2368944 0.1128006 +vt -0.2300925 0.1194655 +vt -0.28667 0.06680034 +vt -0.2914959 0.06151829 +vt -0.2756372 0.04542496 +vt -0.2692139 0.0524554 +vt -0.2849792 0.06446936 +vt -0.2902555 0.05963712 +vt -0.2758899 0.04219804 +vt -0.2688671 0.04862972 +vt -0.2340963 0.1253241 +vt -0.2403477 0.1218442 +vt -0.2304082 0.1015539 +vt -0.2220875 0.1061856 +vt -0.2089126 0.1697497 +vt -0.212523 0.1650717 +vt -0.2088867 0.145695 +vt -0.2004521 0.1490053 +vt -0.1616848 0.2340927 +vt -0.1724447 0.2316893 +vt -0.1725177 0.2100255 +vt -0.1610909 0.2143483 +vt 0.2553252 0.04379907 +vt 0.2443695 0.05835648 +vt 0.2283413 0.04127317 +vt 0.2361788 0.03332077 +vt 0.2683343 0.04076657 +vt 0.2633671 0.04590767 +vt 0.2463107 0.03109255 +vt 0.2523877 0.02360909 +vt 0.2706224 0.0233812 +vt 0.2665651 0.02890453 +vt 0.2552512 0.02094588 +vt 0.2536466 0.008613205 +vt 0.2908039 0.0591438 +vt 0.2860268 0.06446855 +vt 0.2761086 0.05421889 +vt 0.2829371 0.04758243 +vt 0.1089391 0.1657507 +vt 0.1030916 0.1598335 +vt 0.09601809 0.1462079 +vt 0.1021845 0.1457302 +vt 0.109323 0.1544623 +vt 0.02780064 0.1617167 +vt 0.01259437 0.1576518 +vt 0.01666711 0.145767 +vt 0.02251981 0.1473339 +vt -0.1440783 0.06862719 +vt -0.151848 0.06312235 +vt -0.1434037 0.05341882 +vt -0.1385652 0.05727039 +vt -0.222472 0.01184872 +vt -0.2288855 0.004810072 +vt -0.2182053 -0.002856013 +vt -0.2142847 0.001927145 +vt -0.2677345 -0.006589042 +vt -0.2734097 -0.01423589 +vt -0.2616773 -0.02068607 +vt -0.2581599 -0.01559842 +vt -0.2815575 0.04933435 +vt -0.2876552 0.04201965 +vt -0.2760753 0.03504993 +vt -0.2721375 0.03982008 +vt -0.1568518 0.240524 +vt -0.1659597 0.2377433 +vt -0.1599544 0.2256585 +vt -0.1539946 0.2273139 +vt 0.06386031 0.2853033 +vt 0.0522879 0.2898708 +vt 0.04871617 0.2741677 +vt 0.05947126 0.272603 +vt 0.294145 0.03136687 +vt 0.2877001 0.04046099 +vt 0.2758078 0.03480171 +vt 0.2780864 0.02976469 +vt 0.2849277 0.0228714 +vt 0.2795541 0.0308237 +vt 0.2701629 0.02211052 +vt 0.2726659 0.01811274 +vt 0.2689716 0.01123902 +vt 0.2630794 0.01590795 +vt 0.2547423 0.007130249 +vt 0.2591849 0.003013178 +vt 0.2533857 0.1137578 +vt 0.2450678 0.1183789 +vt 0.2412577 0.1076138 +vt 0.2479926 0.1035919 +vt 0.07051855 -0.1280396 +vt 0.06438455 -0.1272708 +vt 0.05868559 -0.1296729 +vt 0.05494869 -0.134602 +vt 0.05417518 -0.1407374 +vt 0.05657229 -0.1464353 +vt 0.06149773 -0.1501688 +vt 0.06763176 -0.1509375 +vt 0.07785023 -0.1474997 +vt 0.07882334 -0.142116 +vt 0.07784113 -0.1374709 +vt 0.075444 -0.131773 +vt 0.1882642 0.05468936 +vt 0.1805719 0.04637043 +vt 0.1861115 0.04361888 +vt 0.1954218 0.05145764 +vt 0.2765945 0.03514385 +vt 0.2778332 0.04768805 +vt 0.2701097 0.03914853 +vt -0.258875 0.03287162 +vt -0.2611621 0.03021859 +vt -0.2572394 0.02814218 +vt -0.2554982 0.03009738 +vt 0.1444784 0.2000446 +vt 0.1445917 0.2093198 +vt 0.146075 0.2194451 +vt 0.1434502 0.217532 +vt 0.1422889 0.2106353 +vt -0.003951236 -0.1175088 +vt 0.001731887 -0.117729 +vt 0.001626178 -0.1133674 +vt -0.004028034 -0.1149043 +vt -0.1488234 -0.07195903 +vt -0.1504076 -0.07603266 +vt -0.1451475 -0.07795675 +vt -0.1433528 -0.07494795 +vt -0.07730265 0.2213928 +vt -0.08102258 0.2273124 +vt -0.0855931 0.2230832 +vt -0.08289707 0.2196555 +vt 0.005714932 0.2548162 +vt 0.0006961097 0.2572952 +vt -0.001425556 0.2503442 +vt 0.004257696 0.2506277 +vt -0.2609438 0.04023852 +vt -0.2628583 0.03632728 +vt -0.260679 0.03513484 +vt -0.2581107 0.0386515 +vt -0.1992343 0.1796152 +vt -0.1924409 0.1601853 +vt -0.1945665 0.1712587 +vt -0.1973557 0.1779674 +vt -0.204342 0.02782119 +vt -0.2026289 0.03218742 +vt -0.211255 0.03862364 +vt -0.2131192 0.03482092 +vt 0.1862748 0.1735924 +vt 0.189741 0.1851785 +vt 0.1803361 0.1855743 +vt 0.1789099 0.1764089 +vt -0.2761934 0.06567611 +vt -0.2778298 0.06106292 +vt -0.2712767 0.05620757 +vt -0.2690351 0.05991068 +vt -0.225912 0.1565773 +vt -0.221285 0.1466961 +vt -0.2172657 0.1380861 +vt -0.2119771 0.1408034 +vt -0.2205922 0.1594699 +vt 0.1076079 -0.04330469 +vt 0.1104134 -0.03923873 +vt 0.1026954 -0.03762997 +vt 0.1016575 -0.04232984 +vt 0.1788111 0.1273459 +vt 0.1865005 0.1329435 +vt 0.1857195 0.1391767 +vt 0.1762938 0.1315994 +vt -0.228142 0.1367518 +vt -0.227512 0.128001 +vt -0.2222093 0.1311205 +vt 0.1714281 0.2109013 +vt 0.1612541 0.2178971 +vt 0.153423 0.2016639 +vt 0.1592596 0.1962838 +vt 0.1964367 0.191582 +vt 0.1885521 0.1935952 +vt 0.1822125 0.1864617 +vt 0.187005 0.1762237 +vt -0.09654482 -0.1559986 +vt -0.08649475 -0.1631695 +vt -0.08203546 -0.1589338 +vt -0.08879758 -0.1535121 +vt 0.1680623 0.1919878 +vt 0.1617933 0.1852371 +vt 0.1732969 0.1819683 +vt -0.2140787 0.1566559 +vt -0.2189678 0.1646685 +vt -0.2252788 0.1589818 +vt -0.2167472 0.1528804 +vt -0.2755067 0.07155764 +vt -0.2830132 0.07905124 +vt -0.2876661 0.07508786 +vt -0.2728036 0.06324051 +vt 0.1888253 0.1818331 +vt 0.1934906 0.187946 +vt 0.182253 0.1920356 +vt 0.1794192 0.1821977 +vt 0.1861265 0.1587099 +vt 0.1950416 0.1649195 +vt 0.1899345 0.170879 +vt 0.1853396 0.164828 +vt 0.2574553 0.09645472 +vt 0.2603572 0.09407201 +vt 0.2672256 0.101839 +vt 0.2642137 0.1041896 +vt -0.2269733 0.1965593 +vt -0.2291049 0.2015125 +vt -0.2324707 0.2003393 +vt -0.2303664 0.1954678 +vt 0.01105605 -0.2169705 +vt -0.004048746 -0.2503418 +vt -0.001079603 -0.2522381 +vt 0.01363109 -0.2196501 +vt -0.05459387 -0.1891402 +vt -0.05764098 -0.1914338 +vt -0.0551755 -0.2001253 +vt -0.05183139 -0.1989166 +vt -0.2379745 0.06587155 +vt -0.24688 0.0709843 +vt -0.2552645 0.06524351 +vt -0.2649023 0.059478 +vt -0.2764609 0.05261016 +vt -0.2713748 0.0508224 +vt 0.2398058 0.06542967 +vt 0.2728224 0.0516993 +vt 0.2778599 0.05335858 +vt 0.2660796 0.06026682 +vt 0.2564291 0.06598689 +vt 0.2487246 0.0707107 +vt 0.2634453 0.07326491 +vt 0.2730444 0.06746214 +vt 0.2731346 0.07980319 +vt 0.2684762 0.08252352 +vt -0.09523163 -0.2136514 +vt -0.09336905 -0.2271802 +vt -0.08993953 -0.2262086 +vt -0.09176566 -0.2128881 +vt -0.1347362 0.05094013 +vt -0.1312149 0.05136718 +vt -0.1333992 0.06343175 +vt -0.1369295 0.06308682 +vt -0.2727202 0.06713919 +vt -0.2631386 0.07299376 +vt -0.2682419 0.08232068 +vt -0.2730591 0.07939345 +vt 0.1549672 0.1597956 +vt 0.1584914 0.1592631 +vt 0.1606238 0.1695851 +vt 0.157115 0.170211 +vt -0.07626558 -0.2066362 +vt -0.07545345 -0.2119745 +vt -0.07198334 -0.2112304 +vt -0.07283966 -0.2056539 +vt -0.2647348 0.1034917 +vt -0.2674971 0.1010724 +vt -0.2605296 0.09324491 +vt -0.2576232 0.09562084 +vt 0.2897005 0.08311461 +vt 0.2943187 0.08717732 +vt 0.2917528 0.08965147 +vt 0.2870473 0.08549498 +vt 0.2024851 0.04834563 +vt 0.2286836 0.07171439 +vt 0.2258917 0.07387819 +vt 0.1990613 0.04981335 +vt -0.1903314 0.0351151 +vt -0.1928396 0.03260115 +vt -0.1858991 0.02681186 +vt -0.18264 0.02848026 +vt -0.1162834 0.2475806 +vt -0.1193856 0.2530389 +vt -0.1238313 0.2403503 +vt -0.1275751 0.2297617 +vt -0.1315427 0.2204066 +vt -0.124491 0.2124831 +vt 0.1339133 0.2212944 +vt 0.1309894 0.2298516 +vt 0.1274102 0.2404833 +vt 0.123112 0.2534457 +vt 0.119954 0.2481684 +vt 0.126682 0.2137095 +vt 0.1782651 0.2183667 +vt 0.1772079 0.2236566 +vt 0.1655087 0.2275855 +vt 0.1678735 0.216621 +vt -0.2189476 0.03459185 +vt -0.2290478 0.0434664 +vt -0.2317507 0.04114274 +vt -0.221497 0.03212281 +vt 0.06095961 -0.1451415 +vt 0.06173464 -0.14168 +vt 0.05002877 -0.1380334 +vt 0.04917334 -0.1414758 +vt -0.1765611 0.2239055 +vt -0.1777681 0.2183994 +vt -0.1672903 0.2165962 +vt -0.1648591 0.2275585 +vt -0.2272964 -0.07673504 +vt -0.2280322 -0.08022249 +vt -0.2176639 -0.08211702 +vt -0.2168357 -0.07865036 +vt -0.2053932 0.03136705 +vt -0.2098334 0.03484777 +vt -0.2121834 0.03218832 +vt -0.2079292 0.0288629 +vt 0.2425711 0.04734167 +vt 0.2402837 0.05217578 +vt 0.2119466 0.03876735 +vt 0.214234 0.03393323 +vt 0.2678065 0.002273764 +vt 0.2653731 0.007036059 +vt 0.237457 -0.007228241 +vt 0.2398904 -0.01199053 +vt 0.2793891 0.03175709 +vt 0.2760908 0.03596687 +vt 0.2514137 0.01663262 +vt 0.254712 0.01242284 +vt 0.1907463 0.198716 +vt 0.1855625 0.2000308 +vt 0.1778552 0.1696437 +vt 0.183039 0.1683289 +vt -0.08546377 0.240807 +vt -0.08956475 0.2373744 +vt -0.069443 0.213335 +vt -0.06534205 0.2167676 +vt -0.1969919 0.1375383 +vt -0.1996994 0.1329264 +vt -0.1726644 0.1170554 +vt -0.1699569 0.1216673 +vt -0.2402837 0.05217574 +vt -0.2425711 0.04734162 +vt -0.214234 0.03393319 +vt -0.2119466 0.03876732 +vt -0.2653731 0.007036067 +vt -0.2678065 0.002273774 +vt -0.2398905 -0.01199053 +vt -0.2374571 -0.007228233 +vt -0.2760908 0.03596684 +vt -0.2793891 0.03175707 +vt -0.254712 0.01242281 +vt -0.2514137 0.01663259 +vt -0.1855624 0.2000308 +vt -0.1907463 0.198716 +vt -0.183039 0.1683289 +vt -0.1778551 0.1696437 +vt 0.08956474 0.2373744 +vt 0.08546378 0.2408071 +vt 0.06534205 0.2167677 +vt 0.06944301 0.2133351 +vt 0.1996994 0.1329264 +vt 0.1969919 0.1375383 +vt 0.169957 0.1216674 +vt 0.1726644 0.1170554 +vt -0.1318506 -0.0818838 +vt -0.1269335 -0.08398684 +vt -0.1216236 -0.08334958 +vt -0.1173437 -0.08014275 +vt -0.1152407 -0.07522564 +vt -0.115878 -0.06991576 +vt -0.1190848 -0.0656359 +vt -0.1240019 -0.06353285 +vt -0.1293118 -0.06417011 +vt -0.1335916 -0.06737694 +vt -0.1356947 -0.07229407 +vt -0.1350574 -0.07760394 +vt 0.1350574 -0.07760394 +vt 0.1356947 -0.07229406 +vt 0.1335916 -0.06737694 +vt 0.1293118 -0.06417011 +vt 0.1240019 -0.06353285 +vt 0.1190848 -0.0656359 +vt 0.115878 -0.06991576 +vt 0.1152407 -0.07522564 +vt 0.1173437 -0.08014275 +vt 0.1216236 -0.08334958 +vt 0.1269335 -0.08398684 +vt 0.1318506 -0.0818838 +vt -0.1749148 -0.01847732 +vt -0.2107846 -0.00107875 +vt -0.2156806 -0.01590194 +vt -0.18114 -0.03342753 +vt -0.089711 -0.0122463 +vt -0.1613282 -0.05634863 +vt -0.1075932 -0.1436082 +vt -0.03597597 -0.09950591 +vt -0.1149094 0.1044817 +vt -0.1486429 0.1234651 +vt -0.1983793 0.03387488 +vt -0.1632094 0.01513203 +vt 0.1137228 0.1033585 +vt 0.1635206 0.01379578 +vt 0.228302 0.04776224 +vt 0.1794323 0.1378347 +vt -0.187785 0.05446183 +vt -0.2275259 0.05820488 +vt -0.2371354 -0.04382134 +vt -0.1973945 -0.04756439 +vt -0.1944107 -0.006451666 +vt -0.2342119 -0.003480271 +vt -0.2327881 -0.01761234 +vt -0.1996439 -0.02116076 +vt -0.09477664 0.00108527 +vt -0.1687235 -0.03898844 +vt -0.1523792 -0.04540538 +vt -0.09248228 -0.0129457 +vt 0.05998669 0.2241885 +vt 0.02119484 0.1621746 +vt 0.03573105 0.1527193 +vt 0.07088705 0.2104303 +vt 0.1378654 -0.09036665 +vt 0.1362985 -0.07454814 +vt 0.1281964 -0.07792672 +vt 0.1295925 -0.092021 +vt -0.1600183 0.0474293 +vt -0.1876549 0.07457233 +vt -0.2205026 0.08027734 +vt -0.2659314 0.02950884 +vt -0.2163835 -0.01644323 +vt 0.1704505 -0.01245287 +vt 0.238062 0.01813185 +vt 0.2252138 0.0309447 +vt 0.1617828 0.0008719591 +vt -0.07711297 -0.1620724 +vt -0.01558996 -0.104723 +vt -0.02867817 -0.09752822 +vt -0.07851182 -0.1439812 +vt -0.2237726 0.06635033 +vt -0.1856067 0.05468757 +vt -0.1843738 0.07070936 +vt -0.2171177 0.07969499 +vt -0.06096091 0.1932251 +vt -0.03809512 0.1619688 +vt -0.02403532 0.1689612 +vt -0.04677305 0.2008097 +vt 0.1591162 0.04829596 +vt 0.2151845 -0.01757196 +vt 0.2669934 0.02979275 +vt 0.2215753 0.08057074 +vt 0.1881548 0.07452019 +vt 0.1355504 -0.07350186 +vt 0.06455407 -0.02408269 +vt 0.06418249 -0.0328285 +vt 0.1274402 -0.07686099 +vt 0.06288175 -0.02441401 +vt 0.04773 -0.02854819 +vt 0.04895494 -0.03684087 +vt 0.06245516 -0.03315731 +vt 0.09070845 -0.003831474 +vt 0.04567348 -0.0948789 +vt 0.05323571 -0.09277342 +vt 0.09326129 -0.01181256 +vt 0.03943713 -0.08211675 +vt 0.04074272 -0.09827111 +vt 0.04816798 -0.09462387 +vt 0.04703799 -0.08014879 +vt 0.03561624 -0.07943875 +vt 0.1097907 -0.1213319 +vt 0.1090761 -0.113205 +vt 0.04307468 -0.07585654 +vt 0.09077512 -0.1237407 +vt 0.107301 -0.1184679 +vt 0.1049982 -0.1108995 +vt 0.09027364 -0.1155975 +vt 0.06867133 -0.1320284 +vt 0.1276584 -0.04822975 +vt 0.1193472 -0.04967985 +vt 0.06678978 -0.1243445 +vt 0.2197465 0.01745821 +vt 0.2120513 0.02934777 +vt 0.199955 0.02325888 +vt 0.2067311 0.012614 +vt 0.2091371 0.04764665 +vt 0.14483 0.09012777 +vt 0.1403679 0.07802887 +vt 0.1977604 0.04032316 +vt 0.01539091 0.1374175 +vt 0.001891037 0.1337333 +vt 0.005755133 0.1212086 +vt 0.01771868 0.1247201 +vt -0.08570472 0.09470914 +vt -0.1359983 0.0196938 +vt -0.1244817 0.01617736 +vt -0.07885598 0.08353411 +vt -0.150434 -0.0335584 +vt -0.1556566 -0.04710673 +vt -0.1423396 -0.04906273 +vt -0.1389007 -0.03702234 +vt -0.171523 -0.06955756 +vt -0.1739518 -0.1453542 +vt -0.1585982 -0.1417932 +vt -0.1585461 -0.07312086 +vt 0.2172872 -0.01160824 +vt 0.2216581 0.003216119 +vt 0.2068578 0.008091142 +vt 0.2029277 -0.005106668 +vt 0.216112 -0.01537357 +vt 0.1953668 0.07354098 +vt 0.1832422 0.06683641 +vt 0.2008093 -0.01259361 +vt 0.141797 -0.0569623 +vt 0.139594 -0.04466628 +vt 0.08054553 -0.009605726 +vt 0.06889759 -0.01367767 +vt 0.02736397 -0.08362806 +vt 0.02814678 -0.09608833 +vt 0.0871953 -0.1311489 +vt 0.1002634 -0.1269127 +vt 0.1661123 0.08159548 +vt 0.2473035 0.003748379 +vt 0.2779087 0.03664487 +vt 0.2235148 0.09511005 +vt 0.1840991 0.0933816 +vt -0.1623419 0.07894895 +vt -0.1792128 0.09315479 +vt -0.2208089 0.094102 +vt -0.2771495 0.03567503 +vt -0.2374127 -0.005488905 +vt -0.2100374 0.02266162 +vt 0.1194075 0.09429885 +vt 0.1166231 0.08546778 +vt 0.2132271 0.02766363 +vt 0.219738 0.04344855 +vt -0.08676553 -0.01804558 +vt -0.1552266 -0.05915313 +vt -0.1106767 -0.1362905 +vt -0.04108249 -0.09451727 +vt -0.1503156 0.1022848 +vt -0.1694414 0.1118686 +vt -0.1795962 0.09013014 +vt -0.1724865 0.08671893 +vt -0.158468 0.07969675 +vt -0.1549472 0.07791711 +vt -0.147499 0.09369103 +vt 0.1346875 0.1092277 +vt 0.1314243 0.09249879 +vt 0.1700966 0.02426429 +vt 0.2180116 0.05551259 +vt 0.1731453 0.1324621 +vt -0.0818528 -0.1243554 +vt -0.08925267 -0.1294414 +vt -0.04313033 -0.1870278 +vt 0.06181487 -0.009431804 +vt 0.05270433 -0.02434131 +vt 0.03235345 -0.05754476 +vt 0.02249195 -0.07368319 +vt 0.08101659 -0.1184282 +vt 0.1145005 -0.1389406 +vt 0.1554061 -0.07199811 +vt -0.1961738 0.03901399 +vt -0.1924277 0.06276442 +vt -0.195536 0.05672442 +vt -0.19784 0.03911216 +vt -0.191415 0.06374256 +vt -0.2031334 0.04078356 +vt -0.1838166 0.03013719 +vt -0.1758447 0.03424272 +vt -0.1671832 0.05105158 +vt -0.1708513 0.05304003 +vt -0.1845356 0.06041424 +vt -0.1782073 0.08436234 +vt -0.166113 0.07459527 +vt -0.1639816 0.0771628 +vt -0.1760577 0.08695173 +vt -0.1861322 0.03288617 +vt -0.2255677 0.03397058 +vt -0.2221606 0.02719903 +vt -0.188151 0.0264152 +vt -0.2230971 0.02441406 +vt -0.2212487 -0.06464116 +vt -0.2170926 -0.05853195 +vt -0.2195238 0.01776567 +vt -0.2245016 -0.04854964 +vt -0.1828987 -0.04915453 +vt -0.1852072 -0.04266546 +vt -0.220254 -0.04244478 +vt -0.2127347 0.009082772 +vt -0.204841 0.03361924 +vt -0.2065821 0.03444153 +vt -0.2128492 0.01595941 +vt -0.1590239 0.1192828 +vt -0.1529537 0.114636 +vt -0.1603783 0.1207125 +vt -0.1890328 0.05409359 +vt -0.1957477 0.05827302 +vt -0.1974094 0.05857181 +vt 0.00954341 0.02217827 +vt -0.001765884 0.03587681 +vt -0.006257758 0.03257057 +vt 0.004516808 0.01751016 +vt -0.1858721 0.09329596 +vt -0.2198896 0.09386861 +vt -0.2196407 0.09071591 +vt -0.1877784 0.08805318 +vt -0.07168113 0.09054194 +vt -0.120528 0.03187366 +vt -0.1178573 0.02976103 +vt -0.06916012 0.088632 +vt 0.2192443 0.09352535 +vt 0.1841994 0.09305386 +vt 0.1850581 0.08957314 +vt 0.2188985 0.09013765 +vt 0.05269696 -0.02309479 +vt 0.04113812 -0.007368116 +vt 0.03664015 -0.01191892 +vt 0.04985127 -0.02525226 +vt 0.1964279 0.06797608 +vt 0.1885115 0.06255598 +vt 0.1902118 0.05979628 +vt 0.1981288 0.06179969 +vt -0.02934596 -0.05529497 +vt -0.05049117 -0.02245646 +vt -0.05261911 -0.02418059 +vt -0.03180648 -0.05739505 +vt -0.1857837 0.06672908 +vt -0.193763 0.07188172 +vt -0.1955637 0.06526139 +vt -0.1875438 0.06462087 +vt -0.193575 0.01240921 +vt -0.1929656 0.0308845 +vt -0.2248577 0.03316196 +vt -0.2281803 -0.04316126 +vt -0.1944634 -0.04533047 +vt -0.1946576 -0.02663072 +vt -0.2065839 0.008315691 +vt -0.1985541 0.006995589 +vt -0.191024 0.04545639 +vt -0.1989559 0.04661437 +vt -0.1733439 0.04962248 +vt -0.1696384 0.04770495 +vt -0.152458 0.08265429 +vt -0.1559487 0.08449229 +vt 0.0231809 -0.05417623 +vt 0.04434441 -0.02145609 +vt 0.04148557 -0.01963478 +vt 0.02036816 -0.05238082 +vt 0.166241 0.07562342 +vt 0.1786285 0.08523559 +vt 0.1764319 0.08785451 +vt 0.1640628 0.07822058 +vt -0.04533541 -0.02100595 +vt -0.02381805 -0.05360248 +vt -0.02097717 -0.05179826 +vt -0.04244842 -0.01917585 +vt -0.1865059 0.05761074 +vt -0.172713 0.05044318 +vt -0.1551598 0.08522964 +vt -0.1690301 0.09253629 +vt 0.1664147 0.07490024 +vt 0.1692518 0.07090537 +vt 0.1805178 0.07890635 +vt 0.1776807 0.0829012 +vt -0.1664147 0.07490024 +vt -0.1776807 0.08290121 +vt -0.1805178 0.07890634 +vt -0.1692518 0.07090537 +vt 0.03290246 -0.01440367 +vt 0.02510325 -0.02581035 +vt 0.02914797 -0.02857589 +vt 0.03694717 -0.01716921 +vt -0.03290258 -0.01440386 +vt -0.0369473 -0.0171694 +vt -0.0291481 -0.02857607 +vt -0.02510338 -0.02581053 +vt -0.1500873 0.09809683 +vt -0.1621463 0.1048432 +vt -0.1614362 0.1024269 +vt -0.1526625 0.09747799 +vt 0.1581461 0.08421941 +vt 0.1641819 0.07178927 +vt 0.1766121 0.07782511 +vt 0.1705762 0.09025525 +vt -0.1785468 0.07986885 +vt -0.1837675 0.06707622 +vt -0.181398 0.0682899 +vt -0.1775085 0.07758037 +vt -0.1757034 0.07939922 +vt -0.1633141 0.07328016 +vt -0.164239 0.07593165 +vt -0.1732471 0.08043966 +vt -0.1619578 0.0733345 +vt -0.1557189 0.08566257 +vt -0.1582655 0.08495548 +vt -0.1628545 0.07598998 +vt -0.1765977 0.04739208 +vt -0.1858038 0.05148124 +vt -0.1853232 0.04643704 +vt -0.1804044 0.04432406 +vt -0.06064793 0.05389111 +vt -0.0669453 0.04602918 +vt -0.06232369 0.04504058 +vt -0.05888378 0.04914175 +vt 0.02780573 0.1907381 +vt 0.02778867 0.1806648 +vt 0.03176083 0.1828626 +vt 0.03180309 0.1882156 +vt -0.1230265 -0.04104825 +vt -0.1256261 -0.0313162 +vt -0.1289779 -0.03487528 +vt -0.1274443 -0.04000412 +vt 0.1636486 0.09112344 +vt 0.1676881 0.09463646 +vt 0.1660273 0.09613818 +vt 0.1623918 0.09297646 +vt -0.05317097 -0.03010025 +vt -0.05034908 -0.03464954 +vt -0.04860112 -0.03325031 +vt -0.05114082 -0.02915595 +vt -0.181298 0.06488954 +vt -0.1767229 0.06210972 +vt -0.1757973 0.06414847 +vt -0.1799149 0.06665032 +vt 0.01137014 -0.01199199 +vt 0.01454687 -0.007683002 +vt 0.01259876 -0.006579343 +vt 0.009739703 -0.01045743 +vt -0.1641597 0.08213706 +vt -0.1684938 0.08424163 +vt -0.1705984 0.07990751 +vt -0.1662643 0.07780295 +vt 0.1668125 0.073457 +vt 0.1697131 0.06950797 +vt 0.1808499 0.0776879 +vt 0.1779493 0.08163692 +vt -0.1668125 0.07345702 +vt -0.1779493 0.08163695 +vt -0.1808499 0.07768792 +vt -0.1697131 0.06950799 +vt 0.02253473 -0.03664875 +vt 0.01456609 -0.04793771 +vt 0.01856907 -0.05076333 +vt 0.02653771 -0.03947437 +vt -0.02253486 -0.03664894 +vt -0.02653784 -0.03947455 +vt -0.0185692 -0.05076351 +vt -0.01456622 -0.0479379 +vt -0.1577079 0.08256672 +vt -0.1695587 0.08967249 +vt -0.1689215 0.08723595 +vt -0.1603006 0.08202557 +vt 0.16576 0.06685295 +vt 0.1721202 0.0545856 +vt 0.1843875 0.06094579 +vt 0.1780273 0.07321314 +vt -0.1853449 0.06242188 +vt -0.1908892 0.04976611 +vt -0.1884895 0.05091916 +vt -0.1843651 0.06010773 +vt -0.1835129 0.06266601 +vt -0.1712907 0.05621996 +vt -0.1721447 0.05889507 +vt -0.1810299 0.06364083 +vt -0.1701053 0.0560878 +vt -0.1635468 0.06824882 +vt -0.166111 0.06760845 +vt -0.1709324 0.05876576 +vt -0.1816357 0.03479455 +vt -0.1907655 0.03905136 +vt -0.1903772 0.03399921 +vt -0.1854979 0.03179666 +vt -0.07195552 0.03467266 +vt -0.07842 0.02694755 +vt -0.07382064 0.02586009 +vt -0.07029359 0.02988658 +vt 0.02452018 0.1888123 +vt 0.02415836 0.1787455 +vt 0.0282034 0.180806 +vt 0.02842886 0.1861545 +vt -0.1190431 -0.06456389 +vt -0.1216441 -0.0548322 +vt -0.1249954 -0.05839176 +vt -0.123461 -0.06352039 +vt 0.1625004 0.09152584 +vt 0.1664926 0.09509249 +vt 0.164812 0.09657189 +vt 0.161219 0.0933619 +vt -0.04351252 -0.05289885 +vt -0.04063215 -0.05741134 +vt -0.03890239 -0.05598966 +vt -0.04149472 -0.05192842 +vt -0.1829823 0.06142092 +vt -0.1784557 0.05856287 +vt -0.1774952 0.06058542 +vt -0.1815692 0.06315766 +vt 0.0003007377 -0.03360485 +vt 0.003548545 -0.02934918 +vt 0.001619024 -0.02821334 +vt -0.001304005 -0.03204345 +vt -0.1718262 0.06492925 +vt -0.1761035 0.0671469 +vt -0.1783212 0.06286954 +vt -0.1740439 0.06065189 +vt 0.1640787 0.06779116 +vt 0.1672162 0.06374489 +vt 0.180054 0.07369928 +vt 0.1769166 0.07774556 +vt -0.1615423 0.07285066 +vt -0.1740976 0.08315913 +vt -0.1773467 0.07920189 +vt -0.1647913 0.06889343 +vt 0.1040045 0.07836504 +vt 0.1026404 0.07644958 +vt 0.1070847 0.07390347 +vt 0.1083827 0.07571106 +vt -0.03880787 -0.02604907 +vt -0.04312732 -0.02879833 +vt -0.03380882 -0.04366107 +vt -0.02943338 -0.04100183 +vt -0.1488811 0.08389957 +vt -0.1632126 0.09154774 +vt -0.1604432 0.08696799 +vt -0.1519081 0.08197115 +vt 0.1544466 0.07425468 +vt 0.1537703 0.07214145 +vt 0.1539386 0.06933086 +vt 0.1587334 0.05979752 +vt 0.1609357 0.0580233 +vt 0.1622811 0.05829656 +vt 0.176774 0.06563534 +vt 0.1690441 0.08138286 +vt 0.03677008 -0.031276 +vt 0.03132737 -0.03990591 +vt 0.03528618 -0.04322707 +vt 0.04097875 -0.03420097 +vt -0.02068756 -0.08818492 +vt -0.02217508 -0.09025951 +vt -0.018988 -0.09436118 +vt -0.01729776 -0.09208347 +vt -0.1529358 -0.05586643 +vt -0.1550621 -0.05583239 +vt -0.1546091 -0.0609218 +vt -0.1532649 -0.06104108 +vt 0.07475896 0.02867978 +vt 0.07362372 0.02637941 +vt 0.07798505 0.02368746 +vt 0.0792457 0.0262087 +vt -0.1735988 0.0769216 +vt -0.1808989 0.06085424 +vt -0.1756025 0.06137817 +vt -0.1705073 0.07255289 +vt -0.1783844 0.06163338 +vt -0.1638147 0.0544484 +vt -0.1644739 0.05781461 +vt -0.1730777 0.0620563 +vt -0.1555718 0.06257307 +vt -0.1534468 0.06290386 +vt -0.1543441 0.06610198 +vt -0.1560561 0.0659681 +vt -0.1625062 0.0520886 +vt -0.1606925 0.05388801 +vt -0.1624713 0.05627474 +vt -0.163566 0.05523724 +vt -0.1549217 0.06303906 +vt -0.1501317 0.07204758 +vt -0.1531909 0.07200997 +vt -0.1566113 0.06549023 +vt -0.1497196 0.07005959 +vt -0.1494607 0.07261185 +vt -0.1526859 0.0715779 +vt -0.152779 0.07002898 +vt -0.1521827 0.07667721 +vt -0.1529856 0.07888781 +vt -0.1559602 0.07687617 +vt -0.1553906 0.07559168 +vt -0.1569504 0.07196074 +vt -0.1656381 0.07668845 +vt -0.1710909 0.06568325 +vt -0.1625433 0.06132992 +vt -0.1608365 0.06152945 +vt -0.1597239 0.06254649 +vt -0.1564341 0.06913243 +vt -0.1563723 0.07068119 +vt 0.2321965 0.05948471 +vt 0.2562066 0.03147529 +vt 0.2672003 0.04089927 +vt 0.2431901 0.06890866 +vt -0.2321965 0.05948473 +vt -0.2431901 0.06890868 +vt -0.2672003 0.04089927 +vt -0.2562066 0.03147531 +vt 0.09271818 -0.05258368 +vt 0.08260922 -0.05768908 +vt 0.07345344 -0.07231528 +vt 0.07312323 -0.08384152 +vt 0.104381 -0.1034364 +vt 0.1239759 -0.07217856 +vt -0.09275037 -0.05260422 +vt -0.1240082 -0.07219895 +vt -0.1044134 -0.1034569 +vt -0.07315557 -0.08386214 +vt -0.07367921 -0.07224941 +vt -0.0827542 -0.05775211 +vt -0.1109604 0.1935131 +vt -0.1212027 0.2037485 +vt -0.1290337 0.1956787 +vt -0.1188488 0.185386 +vt 0.1870675 0.1060887 +vt 0.2045586 0.07360675 +vt 0.2173077 0.080472 +vt 0.1998166 0.1129539 +vt -0.2054313 0.1038387 +vt -0.213523 0.0887704 +vt -0.2008287 0.08180307 +vt -0.1926651 0.09700543 +vt -0.2378437 0.03244168 +vt -0.2427701 0.02191264 +vt -0.2295958 0.01590444 +vt -0.2247078 0.02634821 +vt -0.005785592 -0.05076145 +vt -0.007291598 -0.04844855 +vt -0.01622798 -0.05426731 +vt -0.01472197 -0.05658022 +vt 0.06795779 -0.1119629 +vt 0.06598433 -0.1100334 +vt 0.05852925 -0.1176583 +vt 0.0605027 -0.1195878 +vt 0.1734483 -0.0603012 +vt 0.170722 -0.05987126 +vt 0.1690609 -0.0704049 +vt 0.1717872 -0.07083483 +vt 0.1712267 0.08083092 +vt 0.1689705 0.07924123 +vt 0.1751126 0.07052394 +vt 0.1773688 0.07211364 +vt 0.1101642 0.09639949 +vt 0.1085433 0.09416564 +vt 0.1171742 0.08790269 +vt 0.1187951 0.09013654 +vt 0.05916823 0.03584341 +vt 0.05775798 0.03347091 +vt 0.06692463 0.02802211 +vt 0.06833489 0.03039462 +vt 0.007291532 -0.04844864 +vt 0.005785525 -0.05076154 +vt 0.0147219 -0.05658031 +vt 0.01622791 -0.05426741 +vt -0.06598432 -0.1100334 +vt -0.06795779 -0.1119629 +vt -0.0605027 -0.1195878 +vt -0.05852924 -0.1176583 +vt -0.170722 -0.05987126 +vt -0.1734483 -0.0603012 +vt -0.1717872 -0.07083483 +vt -0.1690609 -0.0704049 +vt -0.1689705 0.07924123 +vt -0.1712267 0.08083094 +vt -0.1773688 0.07211365 +vt -0.1751126 0.07052395 +vt -0.1085433 0.09416561 +vt -0.1101642 0.09639944 +vt -0.1187951 0.09013651 +vt -0.1171741 0.08790265 +vt -0.05775798 0.03347092 +vt -0.05916824 0.03584342 +vt -0.06833489 0.03039462 +vt -0.06692464 0.02802212 +vt -0.1855063 0.04871812 +vt -0.1839882 0.04641315 +vt -0.1825336 0.04804785 +vt -0.18343 0.04940892 +vt 0.1893864 0.04355879 +vt 0.1882355 0.04606738 +vt 0.1859845 0.04766443 +vt 0.1832366 0.04792202 +vt 0.180728 0.04677112 +vt 0.1791309 0.04452012 +vt 0.1788733 0.04177217 +vt 0.1800242 0.03926358 +vt 0.1822752 0.03766653 +vt 0.1850232 0.03740894 +vt 0.1875318 0.03855983 +vt 0.1891288 0.04081084 +vt -0.1857937 0.04406711 +vt -0.1833066 0.04287045 +vt -0.1828993 0.04502038 +vt -0.1843679 0.04572699 +vt -0.1853792 0.03871584 +vt -0.1826324 0.03898479 +vt -0.1834008 0.0410336 +vt -0.1850228 0.04087479 +vt -0.1843003 0.03458283 +vt -0.1820902 0.03623604 +vt -0.1838089 0.03759029 +vt -0.1851139 0.03661408 +vt -0.183043 0.03308167 +vt -0.1819882 0.03563217 +vt -0.1841577 0.03591781 +vt -0.1847805 0.03441177 +vt -0.1821772 0.03441991 +vt -0.1825433 0.03715551 +vt -0.1845636 0.03631494 +vt -0.1843474 0.0346996 +vt -0.1819622 0.03778984 +vt -0.1836282 0.03999035 +vt -0.1849724 0.03826379 +vt -0.1839887 0.03696442 +vt -0.1822833 0.04204256 +vt -0.1848092 0.04315485 +vt -0.1851439 0.04099243 +vt -0.1836524 0.04033563 +vt -0.1828603 0.04619792 +vt -0.1856091 0.04594969 +vt -0.1848562 0.04389515 +vt -0.183233 0.04404172 +vt -0.1834904 0.04953928 +vt -0.1857751 0.04799091 +vt -0.1841214 0.04655799 +vt -0.1827722 0.04747229 +vt -0.1841415 0.05144474 +vt -0.1853795 0.048978 +vt -0.1832367 0.04853483 +vt -0.1825056 0.04999141 +vt -0.1848476 0.05129667 +vt -0.184701 0.04854058 +vt -0.1826201 0.0492172 +vt -0.1827066 0.05084465 +vt 0.1099488 0.09585761 +vt 0.1089916 0.09453855 +vt 0.1100941 0.09373853 +vt 0.1110513 0.09505758 +vt 0.1708473 0.08038809 +vt 0.169515 0.07944939 +vt 0.1702996 0.07833586 +vt 0.1716319 0.07927456 +vt 0.1728678 -0.06035463 +vt 0.1712579 -0.06010075 +vt 0.1710458 -0.06144632 +vt 0.1726556 -0.06170018 +vt 0.06745367 -0.1116704 +vt 0.06628835 -0.110531 +vt 0.06533605 -0.111505 +vt 0.06650136 -0.1126444 +vt -0.006214288 -0.05036614 +vt -0.007103569 -0.04900039 +vt -0.008245094 -0.04974367 +vt -0.007355813 -0.05110943 +vt -0.05817022 0.03388318 +vt -0.05900296 0.03528411 +vt -0.0601739 0.03458809 +vt -0.05934116 0.03318715 +vt -0.1089915 0.09453848 +vt -0.1099487 0.09585754 +vt -0.1110512 0.09505751 +vt -0.110094 0.09373845 +vt -0.1695151 0.07944937 +vt -0.1708473 0.08038808 +vt -0.1716319 0.07927454 +vt -0.1702997 0.07833583 +vt -0.171258 -0.0601007 +vt -0.1728678 -0.06035457 +vt -0.1726557 -0.06170012 +vt -0.1710458 -0.06144626 +vt -0.06628825 -0.110531 +vt -0.06745356 -0.1116703 +vt -0.06650126 -0.1126443 +vt -0.06533594 -0.111505 +vt 0.00710354 -0.04900033 +vt 0.006214261 -0.05036608 +vt 0.007355783 -0.05110937 +vt 0.008245064 -0.04974362 +vt 0.05900351 0.03528488 +vt 0.05817077 0.03388394 +vt 0.05934171 0.03318791 +vt 0.06017445 0.03458885 +vt -0.1870817 0.04157033 +vt -0.1861387 0.04024114 +vt -0.1846574 0.03956155 +vt -0.1830347 0.03971365 +vt -0.1817055 0.04065669 +vt -0.1810259 0.04213799 +vt -0.181178 0.04376063 +vt -0.1821211 0.04508982 +vt -0.1836024 0.04576942 +vt -0.185225 0.04561731 +vt -0.1865542 0.04467427 +vt -0.1872338 0.04319297 +vt 0.05176785 -0.07469152 +vt 0.04982445 -0.07273172 +vt 0.04225237 -0.0802404 +vt 0.04419576 -0.0822002 +vt 0.1550101 -0.04538054 +vt 0.152298 -0.04486848 +vt 0.1503196 -0.05534714 +vt 0.1530316 -0.05585922 +vt 0.1653411 0.09350613 +vt 0.1630603 0.09195195 +vt 0.1690652 0.08313956 +vt 0.171346 0.08469374 +vt 0.1115777 0.1259125 +vt 0.1099498 0.1236837 +vt 0.118561 0.1173938 +vt 0.120189 0.1196225 +vt 0.06515554 0.07901359 +vt 0.06374994 0.07663833 +vt 0.07292725 0.07120751 +vt 0.07433286 0.07358278 +vt 0.01771698 -0.001710162 +vt 0.01622605 -0.00403282 +vt 0.02520011 -0.009793303 +vt 0.02669103 -0.007470646 +vt -0.04982455 -0.07273176 +vt -0.05176795 -0.07469156 +vt -0.04419586 -0.08220025 +vt -0.04225247 -0.08024045 +vt -0.152298 -0.04486848 +vt -0.1550101 -0.04538054 +vt -0.1530316 -0.05585922 +vt -0.1503196 -0.05534715 +vt -0.1630603 0.09195192 +vt -0.1653411 0.09350611 +vt -0.171346 0.08469372 +vt -0.1690652 0.08313954 +vt -0.1099498 0.1236837 +vt -0.1115777 0.1259125 +vt -0.120189 0.1196225 +vt -0.118561 0.1173938 +vt -0.06374992 0.0766383 +vt -0.06515552 0.07901356 +vt -0.07433284 0.07358275 +vt -0.07292724 0.07120748 +vt -0.01622605 -0.004032814 +vt -0.01771697 -0.001710158 +vt -0.02669103 -0.007470644 +vt -0.02520011 -0.009793299 +vt -0.1698413 0.08932386 +vt -0.1696449 0.08657084 +vt -0.1675765 0.08728494 +vt -0.1676925 0.08891056 +vt 0.1736204 0.0848174 +vt 0.1713982 0.08645428 +vt 0.1686553 0.08676074 +vt 0.1661266 0.08565469 +vt 0.1644897 0.08343248 +vt 0.1641833 0.08068956 +vt 0.1652893 0.07816087 +vt 0.1675115 0.076524 +vt 0.1702545 0.07621752 +vt 0.1727831 0.07732358 +vt 0.17442 0.07954579 +vt 0.1747265 0.08228873 +vt -0.1705483 0.08616488 +vt -0.1689881 0.08388824 +vt -0.1675638 0.08554945 +vt -0.1684851 0.08689378 +vt -0.170957 0.08130936 +vt -0.1684481 0.08015921 +vt -0.1680809 0.08231635 +vt -0.1695624 0.0829955 +vt -0.1707243 0.07623453 +vt -0.1679829 0.07655441 +vt -0.1687892 0.0785886 +vt -0.1704079 0.07839973 +vt -0.1698482 0.07276355 +vt -0.1676686 0.0744568 +vt -0.1694118 0.07577946 +vt -0.1706988 0.07477961 +vt -0.1687474 0.07206343 +vt -0.1677382 0.07463231 +vt -0.1699124 0.07487927 +vt -0.1705083 0.07336237 +vt -0.1679303 0.07408499 +vt -0.1683441 0.0768138 +vt -0.1703494 0.07593817 +vt -0.1701051 0.07432683 +vt -0.1676382 0.07786255 +vt -0.1693417 0.08003412 +vt -0.1706561 0.07828473 +vt -0.1696502 0.07700244 +vt -0.1677889 0.08219884 +vt -0.1703335 0.08326777 +vt -0.1706312 0.08109994 +vt -0.1691286 0.08046874 +vt -0.1681638 0.08613063 +vt -0.1709079 0.0858352 +vt -0.1701198 0.08379389 +vt -0.1684994 0.08396834 +vt -0.1686202 0.08898342 +vt -0.1708777 0.08739557 +vt -0.1691993 0.08599162 +vt -0.1678662 0.08692923 +vt -0.1691638 0.09020813 +vt -0.170358 0.08771987 +vt -0.1682077 0.08731467 +vt -0.1675025 0.08878396 +vt 0.06499152 0.07845408 +vt 0.06416153 0.07705152 +vt 0.06533384 0.07635779 +vt 0.06616382 0.07776035 +vt 0.1113603 0.1253713 +vt 0.110399 0.1240552 +vt 0.111499 0.1232517 +vt 0.1124603 0.1245678 +vt 0.1649549 0.09306924 +vt 0.1636081 0.09215152 +vt 0.1643752 0.09102583 +vt 0.165722 0.09194355 +vt 0.1544284 -0.04541635 +vt 0.1528269 -0.04511398 +vt 0.1525742 -0.04645252 +vt 0.1541756 -0.04675489 +vt 0.05126793 -0.07439129 +vt 0.05012037 -0.07323405 +vt 0.04915313 -0.07419321 +vt 0.05030068 -0.07535045 +vt -0.01665222 -0.003634952 +vt -0.01753259 -0.002263446 +vt -0.01867893 -0.002999287 +vt -0.01779855 -0.004370791 +vt -0.06416145 0.07705139 +vt -0.06499144 0.07845395 +vt -0.06616375 0.07776023 +vt -0.06533376 0.07635766 +vt -0.1103991 0.1240552 +vt -0.1113603 0.1253713 +vt -0.1124603 0.1245678 +vt -0.111499 0.1232518 +vt -0.1636081 0.09215157 +vt -0.1649549 0.0930693 +vt -0.165722 0.09194361 +vt -0.1643752 0.09102588 +vt -0.1528268 -0.04511414 +vt -0.1544282 -0.0454165 +vt -0.1541755 -0.04675505 +vt -0.1525741 -0.04645268 +vt -0.05012038 -0.07323398 +vt -0.05126793 -0.07439123 +vt -0.05030069 -0.07535039 +vt -0.04915313 -0.07419313 +vt 0.01753319 -0.002262624 +vt 0.01665282 -0.00363413 +vt 0.01779916 -0.00436997 +vt 0.01867953 -0.002998465 +vt -0.1725677 0.08196127 +vt -0.1723867 0.08034161 +vt -0.1714202 0.07902941 +vt -0.169927 0.0783763 +vt -0.1683073 0.07855727 +vt -0.1669952 0.07952382 +vt -0.166342 0.08101699 +vt -0.166523 0.08263665 +vt -0.1674896 0.08394885 +vt -0.1689827 0.08460197 +vt -0.1706024 0.08442099 +vt -0.1719146 0.08345445 +vt 0.1802262 0.08289114 +vt 0.1853899 0.08745287 +vt 0.1812866 0.09229168 +vt 0.1761277 0.08773392 +vt -0.1802179 0.08289348 +vt -0.176119 0.08773594 +vt -0.1811986 0.09224757 +vt -0.1853022 0.08740909 +vt 0.1612303 0.1015259 +vt 0.1654071 0.09345983 +vt 0.1714445 0.09658877 +vt 0.1673478 0.1046958 +vt -0.1613581 0.1015871 +vt -0.1674651 0.104764 +vt -0.1715619 0.09665693 +vt -0.165535 0.09352108 +vt 0.05384299 -0.01351719 +vt 0.04839361 -0.01026837 +vt 0.04374218 -0.0180704 +vt 0.04919156 -0.02131921 +vt -0.05492399 -0.01171053 +vt -0.050279 -0.0195164 +vt -0.04482696 -0.01627208 +vt -0.04947194 -0.008466216 +vt 0.1846615 0.07116212 +vt 0.1897627 0.07579361 +vt 0.1855941 0.0805762 +vt 0.1804975 0.07594875 +vt -0.1846519 0.07115994 +vt -0.1804876 0.07594628 +vt -0.1855054 0.08052646 +vt -0.1896744 0.07574416 +vt 0.1766535 0.06463535 +vt 0.181377 0.05687679 +vt 0.1871841 0.06041495 +vt 0.1825376 0.06821994 +vt -0.1767769 0.06470541 +vt -0.1826501 0.06829617 +vt -0.1872966 0.06049122 +vt -0.1815005 0.05694688 +vt 0.03504222 -0.068366 +vt 0.02980145 -0.06479039 +vt 0.02468215 -0.07229374 +vt 0.02992291 -0.07586934 +vt -0.03637006 -0.06668998 +vt -0.03126124 -0.07420047 +vt -0.0260155 -0.07063217 +vt -0.03112431 -0.06312169 +vt -0.1054276 -0.06845924 +vt -0.1060132 -0.06992363 +vt -0.1052152 -0.07002203 +vt -0.08265749 -0.07909699 +vt -0.08385966 -0.08011786 +vt -0.08320023 -0.08057781 +vt -0.06591334 -0.09768485 +vt -0.06745498 -0.09801763 +vt -0.06709063 -0.09873432 +vt -0.06014206 -0.1195839 +vt -0.06165197 -0.1191283 +vt -0.06168035 -0.1199318 +vt -0.06847085 -0.1383467 +vt -0.06954074 -0.1371879 +vt -0.06997292 -0.1378659 +vt -0.0902587 -0.1472475 +vt -0.09054127 -0.1456959 +vt -0.0912694 -0.1460367 +vt -0.1186776 -0.1424486 +vt -0.118054 -0.1409999 +vt -0.1188491 -0.1408808 +vt -0.1430494 -0.1267321 +vt -0.141735 -0.1258605 +vt -0.1423354 -0.1253259 +vt -0.1562579 -0.1071805 +vt -0.1546818 -0.1071225 +vt -0.1549152 -0.1063531 +vt -0.1570744 -0.08913175 +vt -0.1556758 -0.08986074 +vt -0.1554982 -0.08907662 +vt -0.1470249 -0.07519723 +vt -0.1461431 -0.07650483 +vt -0.1456131 -0.07590026 +vt -0.1285808 -0.06752212 +vt -0.1284151 -0.06909055 +vt -0.1276635 -0.06880508 +vt -0.09461023 0.01620509 +vt -0.09540871 0.01629902 +vt -0.09593934 0.01481381 +vt -0.09443869 0.01463731 +vt -0.0306681 -0.006802423 +vt -0.03134488 -0.006368409 +vt -0.03247218 -0.007471404 +vt -0.03120026 -0.008287085 +vt 0.01928141 -0.05614129 +vt 0.01884465 -0.05546629 +vt 0.01736217 -0.05600444 +vt 0.01818299 -0.05727305 +vt 0.04564314 -0.1163118 +vt 0.04551696 -0.1155178 +vt 0.04394352 -0.1154099 +vt 0.04418066 -0.1169022 +vt 0.03908581 -0.1739663 +vt 0.03933009 -0.1732004 +vt 0.03797314 -0.1723966 +vt 0.03751406 -0.1738361 +vt -0.0233451 -0.213299 +vt -0.02269561 -0.2128251 +vt -0.02331597 -0.2113751 +vt -0.0245366 -0.2122657 +vt -0.1416746 -0.1870908 +vt -0.1408907 -0.1872691 +vt -0.1402051 -0.1858487 +vt -0.1416785 -0.1855137 +vt -0.2130202 -0.1153852 +vt -0.212572 -0.1160527 +vt -0.2110989 -0.1154894 +vt -0.2119412 -0.114235 +vt -0.2292941 -0.07095121 +vt -0.2292449 -0.07175368 +vt -0.2276892 -0.0720126 +vt -0.2277815 -0.07050442 +vt -0.2228919 -0.04366372 +vt -0.2231822 -0.04441343 +vt -0.2218767 -0.04529827 +vt -0.2213309 -0.0438893 +vt -0.1993248 -0.01693704 +vt -0.199894 -0.01750491 +vt -0.1990586 -0.01884263 +vt -0.197989 -0.01777538 +vt -0.1557035 0.00830113 +vt -0.1564603 0.008029897 +vt -0.1562746 0.006463733 +vt -0.1548521 0.006973482 +vt -0.08351026 0.1000712 +vt -0.08500911 0.1002624 +vt -0.08546617 0.09875292 +vt -0.08344676 0.09849532 +vt 0.02015682 0.06915237 +vt 0.01890207 0.06999423 +vt 0.01781772 0.068849 +vt 0.01950824 0.06771477 +vt 0.09428538 -0.004552568 +vt 0.09341616 -0.003316611 +vt 0.09199315 -0.003996629 +vt 0.09316424 -0.005661817 +vt 0.1377428 -0.08344325 +vt 0.1372696 -0.08200829 +vt 0.1357105 -0.0822462 +vt 0.1363481 -0.08417954 +vt 0.156061 -0.1491883 +vt 0.1560115 -0.1476782 +vt 0.1544485 -0.1474669 +vt 0.1545152 -0.1495015 +vt 0.1238877 -0.2149001 +vt 0.1245091 -0.2135228 +vt 0.1231995 -0.212644 +vt 0.1223622 -0.2144996 +vt -0.2094533 -0.155059 +vt -0.2081668 -0.1558514 +vt -0.2071277 -0.1546649 +vt -0.2088611 -0.1535973 +vt -0.2625361 -0.01476984 +vt -0.2623179 -0.016265 +vt -0.2607412 -0.01630003 +vt -0.2610352 -0.01428561 +vt -0.2620544 -0.009248221 +vt -0.2623275 -0.01073435 +vt -0.2608454 -0.01127344 +vt -0.2604775 -0.009271196 +vt -0.2560894 -0.007624184 +vt -0.2567623 -0.008977063 +vt -0.2554867 -0.009904588 +vt -0.2545801 -0.008081851 +vt -0.2348768 0.01915454 +vt -0.2359463 0.01808712 +vt -0.2350333 0.01680105 +vt -0.2335925 0.01823918 +vt -0.1802547 0.06919146 +vt -0.181665 0.06864925 +vt -0.1813519 0.06710352 +vt -0.1794517 0.06783401 +vt -0.06881408 0.1731387 +vt -0.07082441 0.1734595 +vt -0.07120986 0.1719302 +vt -0.06892379 0.1715653 +vt 0.07676274 0.1301647 +vt 0.0751744 0.1314381 +vt 0.07408283 0.1302997 +vt 0.07588903 0.1288517 +vt 0.1590911 0.03719049 +vt 0.1579517 0.03887751 +vt 0.1565717 0.03811391 +vt 0.1578674 0.03619551 +vt 0.204315 -0.04130649 +vt 0.2034672 -0.0394557 +vt 0.2019808 -0.03998307 +vt 0.202945 -0.04208771 +vt 0.2348131 -0.07729539 +vt 0.2341017 -0.07538799 +vt 0.232581 -0.07580619 +vt 0.23339 -0.0779752 +vt 0.2612502 -0.03140884 +vt 0.2603375 -0.0295891 +vt 0.2588707 -0.03016857 +vt 0.2599085 -0.03223789 +vt -0.07142505 0.2497039 +vt -0.07303015 0.2484517 +vt -0.07217395 0.2471272 +vt -0.07034869 0.2485512 +vt -0.226084 0.1123782 +vt -0.2268161 0.1104786 +vt -0.2254004 0.1097834 +vt -0.2245679 0.1119436 +vt -0.2513402 0.04042021 +vt -0.2520992 0.0385312 +vt -0.2506935 0.03781601 +vt -0.2498305 0.03996413 +vt -0.261773 0.005588776 +vt -0.2627491 0.003802293 +vt -0.2614375 0.002926527 +vt -0.2603275 0.004958022 +vt -0.2567761 0.02343516 +vt -0.258124 0.02190952 +vt -0.2570391 0.02076478 +vt -0.2555064 0.02249968 +vt -0.2071085 0.1026755 +vt -0.208948 0.1018034 +vt -0.2084012 0.1003241 +vt -0.2063094 0.1013158 +vt -0.04076327 0.2290775 +vt -0.04300915 0.229639 +vt -0.04339162 0.2281089 +vt -0.04114573 0.2275475 +vt 0.1465843 0.1551278 +vt 0.1450695 0.1568784 +vt 0.1438769 0.1558464 +vt 0.1453917 0.1540958 +vt 0.2133539 0.0545962 +vt 0.2122062 0.05660663 +vt 0.2108365 0.0558247 +vt 0.2119842 0.05381426 +vt 0.2451481 -0.008590805 +vt 0.2440602 -0.006547374 +vt 0.242668 -0.007288548 +vt 0.243756 -0.009331966 +vt 0.2624526 -0.01099517 +vt 0.2611695 -0.00906833 +vt 0.2598568 -0.009942501 +vt 0.2611399 -0.01186934 +vt 0.2421764 0.08698834 +vt 0.2403 0.08834429 +vt 0.2393763 0.087066 +vt 0.2412526 0.08571006 +vt 0.04300909 0.2296389 +vt 0.04076321 0.2290775 +vt 0.04114568 0.2275475 +vt 0.04339156 0.2281089 +vt -0.1450695 0.1568784 +vt -0.1465843 0.1551278 +vt -0.1453917 0.1540958 +vt -0.1438769 0.1558464 +vt -0.2122061 0.05660664 +vt -0.2133538 0.0545962 +vt -0.2119842 0.05381428 +vt -0.2108365 0.05582471 +vt -0.2440601 -0.006547406 +vt -0.2451481 -0.008590823 +vt -0.2437559 -0.009331998 +vt -0.242668 -0.007288566 +vt -0.2611695 -0.009068366 +vt -0.2624526 -0.01099521 +vt -0.2611399 -0.01186939 +vt -0.2598568 -0.009942537 +vt -0.2403001 0.08834423 +vt -0.2421764 0.08698829 +vt -0.2412526 0.08571 +vt -0.2393763 0.08706594 +vt 0.07302117 0.2482135 +vt 0.07119592 0.2496374 +vt 0.07033971 0.2483129 +vt 0.07194482 0.2470607 +vt 0.2266859 0.1102787 +vt 0.2258535 0.1124388 +vt 0.2244378 0.1117437 +vt 0.2251699 0.1098441 +vt 0.2519718 0.03832958 +vt 0.2511088 0.0404777 +vt 0.2497031 0.03976252 +vt 0.2504621 0.0378735 +vt 0.2626464 0.003587079 +vt 0.2615364 0.005618575 +vt 0.2602248 0.004742808 +vt 0.2612009 0.002956326 +vt 0.2580715 0.02167689 +vt 0.2565388 0.02341179 +vt 0.2554539 0.02226705 +vt 0.2568018 0.02074141 +vt 0.2089914 0.1015689 +vt 0.2068996 0.1025606 +vt 0.2063527 0.1010813 +vt 0.2081923 0.1002092 +vt 0.07099272 0.1732906 +vt 0.06870665 0.1729258 +vt 0.06909209 0.1713965 +vt 0.07110243 0.1717173 +vt -0.07494465 0.1313746 +vt -0.07675084 0.1299265 +vt -0.07565928 0.1287882 +vt -0.07407094 0.1300616 +vt -0.1577133 0.03888503 +vt -0.1590091 0.03696663 +vt -0.1576291 0.03620303 +vt -0.1564896 0.03789005 +vt -0.2032333 -0.03940927 +vt -0.2041974 -0.04151391 +vt -0.2027111 -0.04204129 +vt -0.2018632 -0.0401905 +vt -0.2338718 -0.07532469 +vt -0.2346808 -0.07749371 +vt -0.2331602 -0.0779119 +vt -0.2324487 -0.07600451 +vt -0.2601022 -0.02955081 +vt -0.26114 -0.03162012 +vt -0.2596731 -0.03219959 +vt -0.2587605 -0.03037985 +vt 0.2077865 -0.1557343 +vt 0.2095198 -0.1546666 +vt 0.2084808 -0.1534801 +vt 0.2071942 -0.1542726 +vt 0.261984 -0.01648141 +vt 0.262278 -0.01446699 +vt 0.2607012 -0.01450202 +vt 0.260483 -0.01599718 +vt 0.2620806 -0.01104647 +vt 0.2617127 -0.009044226 +vt 0.2602306 -0.00958332 +vt 0.2605037 -0.01106944 +vt 0.2566113 -0.009345246 +vt 0.2557046 -0.007522509 +vt 0.254429 -0.008450034 +vt 0.255102 -0.009802914 +vt 0.2359206 0.01769 +vt 0.2344797 0.01912813 +vt 0.2335668 0.01784205 +vt 0.2346363 0.01677464 +vt 0.1818026 0.06827582 +vt 0.1799024 0.06900631 +vt 0.1795893 0.06746058 +vt 0.1809997 0.06691837 +vt 0.08530724 0.09999873 +vt 0.08328784 0.09974113 +vt 0.0837449 0.09823168 +vt 0.08524375 0.09842288 +vt -0.01851754 0.06989188 +vt -0.02020807 0.06875766 +vt -0.01912371 0.06761242 +vt -0.01786897 0.06845428 +vt -0.09302045 -0.003274091 +vt -0.09419154 -0.004939278 +vt -0.09276854 -0.005619296 +vt -0.09189931 -0.00438334 +vt -0.1369032 -0.08185286 +vt -0.1375408 -0.0837862 +vt -0.1359817 -0.08402412 +vt -0.1355084 -0.08258913 +vt -0.1557038 -0.1474257 +vt -0.1557705 -0.1494604 +vt -0.1542076 -0.1492491 +vt -0.1541581 -0.1477389 +vt -0.1243441 -0.2131607 +vt -0.1235068 -0.2150163 +vt -0.1221972 -0.2141375 +vt -0.1228186 -0.2127602 +vt 0.1404868 -0.187088 +vt 0.1419602 -0.1867529 +vt 0.1412746 -0.1853326 +vt 0.1404907 -0.1855108 +vt 0.212154 -0.1161978 +vt 0.2129962 -0.1149433 +vt 0.2115231 -0.1143801 +vt 0.2110749 -0.1150476 +vt 0.2289576 -0.07209027 +vt 0.22905 -0.07058209 +vt 0.2274942 -0.07084101 +vt 0.2274451 -0.07164349 +vt 0.2230617 -0.04483923 +vt 0.2225159 -0.04343025 +vt 0.2212103 -0.0443151 +vt 0.2215007 -0.0450648 +vt 0.1999561 -0.01794305 +vt 0.1988865 -0.0168758 +vt 0.1980512 -0.01821352 +vt 0.1986203 -0.01878139 +vt 0.1567033 0.007660036 +vt 0.1552809 0.008169785 +vt 0.1550951 0.006603616 +vt 0.155852 0.006332387 +vt 0.09579089 0.01607594 +vt 0.09429024 0.01589944 +vt 0.09482087 0.01441423 +vt 0.09561934 0.01450815 +vt 0.03178614 -0.00640167 +vt 0.03051423 -0.00721735 +vt 0.03164152 -0.008320346 +vt 0.0323183 -0.007886332 +vt -0.01842912 -0.05531409 +vt -0.01924994 -0.05658271 +vt -0.01776746 -0.05712087 +vt -0.0173307 -0.05644586 +vt -0.04519856 -0.1152104 +vt -0.0454357 -0.1167027 +vt -0.04386226 -0.1165948 +vt -0.04373608 -0.1158008 +vt -0.03918382 -0.1727827 +vt -0.03872474 -0.1742223 +vt -0.03736779 -0.1734185 +vt -0.03761207 -0.1726525 +vt 0.02256694 -0.2124017 +vt 0.02378756 -0.2132923 +vt 0.02440793 -0.2118423 +vt 0.02375844 -0.2113684 +vt 0.1182644 -0.1424033 +vt 0.1190595 -0.1422841 +vt 0.118436 -0.1408355 +vt 0.1426788 -0.1269203 +vt 0.1432792 -0.1263856 +vt 0.1419647 -0.125514 +vt 0.1560397 -0.1075344 +vt 0.1562731 -0.1067651 +vt 0.154697 -0.1067071 +vt 0.1570598 -0.08954722 +vt 0.1568822 -0.0887631 +vt 0.1554836 -0.08949209 +vt 0.1472102 -0.0755694 +vt 0.1466802 -0.07496484 +vt 0.1457984 -0.07627244 +vt 0.1289191 -0.06776395 +vt 0.1281675 -0.06747849 +vt 0.1280018 -0.0690469 +vt 0.1058394 -0.06851526 +vt 0.1050415 -0.06861365 +vt 0.1056271 -0.07007804 +vt 0.08304782 -0.07895397 +vt 0.08238839 -0.07941392 +vt 0.08359057 -0.08043478 +vt 0.06619017 -0.09737455 +vt 0.06582581 -0.09809124 +vt 0.06736745 -0.09842402 +vt 0.06023387 -0.1191784 +vt 0.06026224 -0.1199819 +vt 0.06177216 -0.1195263 +vt 0.06834407 -0.1379507 +vt 0.06877626 -0.1386286 +vt 0.06984615 -0.1374699 +vt 0.08993936 -0.146981 +vt 0.0906675 -0.1473219 +vt 0.09095006 -0.1457703 +vt -0.110018 -0.01501926 +vt -0.111023 -0.01623476 +vt -0.1102932 -0.0165722 +vt -0.09194477 -0.03146497 +vt -0.09340535 -0.03206002 +vt -0.09292226 -0.03270268 +vt -0.08259452 -0.05375289 +vt -0.0841613 -0.05357246 +vt -0.08404666 -0.05436824 +vt -0.08557603 -0.07561433 +vt -0.08684524 -0.07467814 +vt -0.08714182 -0.07542542 +vt -0.1015348 -0.08959199 +vt -0.102128 -0.08813064 +vt -0.1027712 -0.08861291 +vt -0.1260848 -0.08997507 +vt -0.1257881 -0.0884261 +vt -0.1265902 -0.08848111 +vt -0.1502465 -0.07707568 +vt -0.1491516 -0.07594053 +vt -0.1498534 -0.07554831 +vt -0.1661436 -0.057363 +vt -0.1646142 -0.05697771 +vt -0.1650029 -0.0562739 +vt -0.1710767 -0.0375754 +vt -0.1695611 -0.0380117 +vt -0.1695429 -0.03720792 +vt -0.1656885 -0.02133701 +vt -0.1645732 -0.02245211 +vt -0.1641684 -0.02175744 +vt -0.15167 -0.01072249 +vt -0.1512172 -0.01223324 +vt -0.1505313 -0.01181373 +vt -0.1317035 -0.00799018 +vt -0.1320167 -0.009535908 +vt -0.1312141 -0.00948946 +vt -0.07442383 0.06198618 +vt -0.07515891 0.06231183 +vt -0.07610469 0.06104974 +vt -0.07472319 0.0604377 +vt -0.020736 0.02134101 +vt -0.02125807 0.02195243 +vt -0.02265649 0.02122318 +vt -0.02167531 0.0200741 +vt 0.01235553 -0.03996766 +vt 0.01213085 -0.03919571 +vt 0.01055628 -0.0392858 +vt 0.01097853 -0.0407366 +vt 0.01686965 -0.1063144 +vt 0.01699818 -0.1055208 +vt 0.01553743 -0.1049261 +vt 0.01529589 -0.1064177 +vt -0.02193485 -0.1600376 +vt -0.02140884 -0.1594295 +vt -0.02233996 -0.1581566 +vt -0.02332854 -0.1592993 +vt -0.1168862 -0.1618836 +vt -0.1160862 -0.161804 +vt -0.1158867 -0.1602395 +vt -0.1173902 -0.1603892 +vt -0.2014431 -0.09380651 +vt -0.2008274 -0.09432349 +vt -0.1995683 -0.09337367 +vt -0.2007255 -0.09240208 +vt -0.2294071 -0.03341029 +vt -0.2291876 -0.03418372 +vt -0.2276125 -0.03410412 +vt -0.228025 -0.03265053 +vt -0.2308783 0.0009995539 +vt -0.2310246 0.0002089873 +vt -0.2295776 -0.0004182696 +vt -0.2293026 0.001067511 +vt -0.2174508 0.02722496 +vt -0.2179086 0.02656406 +vt -0.2168464 0.02539822 +vt -0.215986 0.02664031 +vt -0.1865322 0.05344947 +vt -0.1872278 0.0530463 +vt -0.1867629 0.05153924 +vt -0.1854556 0.05229697 +vt -0.1357434 0.07087097 +vt -0.1365461 0.07082576 +vt -0.1368126 0.0692713 +vt -0.135304 0.06935627 +vt -0.03664202 0.1375792 +vt -0.03800283 0.138236 +vt -0.03891509 0.1369495 +vt -0.03708168 0.1360646 +vt 0.04742455 0.0787449 +vt 0.0464467 0.07989682 +vt 0.0450913 0.07909042 +vt 0.04640876 0.07753844 +vt 0.0983209 -0.006158766 +vt 0.09776056 -0.004755509 +vt 0.09621898 -0.005088564 +vt 0.09697393 -0.006979167 +vt 0.1217938 -0.09223834 +vt 0.1216608 -0.09073321 +vt 0.1200885 -0.09060878 +vt 0.1202678 -0.09263663 +vt 0.1078727 -0.17391 +vt 0.1083054 -0.1724623 +vt 0.1068905 -0.1717656 +vt 0.1063075 -0.1737161 +vt -0.08503333 -0.222842 +vt -0.08356059 -0.2225042 +vt -0.08365253 -0.2209297 +vt -0.08563676 -0.2213849 +vt -0.2540577 -0.01252949 +vt -0.253429 -0.0139035 +vt -0.2519056 -0.01349505 +vt -0.2527527 -0.01164385 +vt -0.2566318 0.03452279 +vt -0.2566534 0.03301195 +vt -0.2551021 0.03272737 +vt -0.255073 0.03476292 +vt -0.2553867 0.03939961 +vt -0.2558493 0.03796115 +vt -0.2544491 0.0372353 +vt -0.2538259 0.03917333 +vt -0.2467069 0.0521848 +vt -0.247586 0.05095587 +vt -0.2464738 0.04983766 +vt -0.2452894 0.0514934 +vt -0.2150494 0.09095694 +vt -0.216331 0.09015659 +vt -0.2157298 0.08869853 +vt -0.2140031 0.08977684 +vt -0.1400249 0.1375729 +vt -0.141533 0.1374788 +vt -0.1416981 0.1359104 +vt -0.1396663 0.1360371 +vt 0.01174122 0.1975889 +vt 0.01000125 0.1986457 +vt 0.009066407 0.1973755 +vt 0.01104503 0.1961738 +vt 0.1142166 0.1212084 +vt 0.1130015 0.1228418 +vt 0.1116577 0.1220162 +vt 0.1130394 0.1201588 +vt 0.1676773 0.03013946 +vt 0.1668293 0.03199022 +vt 0.165343 0.03146277 +vt 0.1663073 0.02935818 +vt 0.2007354 -0.04328009 +vt 0.2001099 -0.04134282 +vt 0.1985721 -0.04169267 +vt 0.1992834 -0.04389567 +vt 0.2288109 -0.07517854 +vt 0.2282433 -0.07322353 +vt 0.2266957 -0.0735275 +vt 0.2273412 -0.07575066 +vt 0.2268707 0.1253501 +vt 0.2251116 0.1263746 +vt 0.2242003 0.1250873 +vt 0.2262008 0.1239223 +vt -0.2030573 0.1628951 +vt -0.2036673 0.1609528 +vt -0.2022103 0.160349 +vt -0.2015167 0.1625576 +vt -0.2334854 0.1035707 +vt -0.2340781 0.1016231 +vt -0.2326158 0.1010322 +vt -0.2319419 0.1032469 +vt -0.2486058 0.05993888 +vt -0.2493897 0.05806008 +vt -0.2479937 0.05732634 +vt -0.2471023 0.05946283 +vt -0.2558948 0.0467016 +vt -0.257008 0.04499718 +vt -0.2557691 0.04402124 +vt -0.2545032 0.04595945 +vt -0.239846 0.09091645 +vt -0.2414555 0.08966997 +vt -0.240604 0.08834244 +vt -0.2387737 0.08975988 +vt -0.1461099 0.183915 +vt -0.1481391 0.1837521 +vt -0.1481526 0.182175 +vt -0.1458451 0.1823603 +vt 0.08676768 0.2234025 +vt 0.08509969 0.2250078 +vt 0.08400605 0.2238715 +vt 0.08567404 0.2222662 +vt 0.1792527 0.1326876 +vt 0.1781284 0.1347112 +vt 0.1767497 0.1339453 +vt 0.177874 0.1319216 +vt 0.218517 0.05443989 +vt 0.2175427 0.05653986 +vt 0.2161121 0.0558761 +vt 0.2170864 0.05377613 +vt 0.2437377 0.0101121 +vt 0.2426741 0.01216827 +vt 0.2412733 0.01144364 +vt 0.2423369 0.00938747 +vt 0.2569247 0.03772805 +vt 0.2554376 0.03950216 +vt 0.2542289 0.03848898 +vt 0.2557161 0.03671488 +vt 0.1611139 0.20164 +vt 0.1588192 0.2019454 +vt 0.1586111 0.200382 +vt 0.1609059 0.2000766 +vt -0.08509963 0.2250078 +vt -0.08676763 0.2234025 +vt -0.08567398 0.2222662 +vt -0.084006 0.2238714 +vt -0.1781284 0.1347112 +vt -0.1792526 0.1326876 +vt -0.177874 0.1319216 +vt -0.1767497 0.1339453 +vt -0.2175427 0.05653987 +vt -0.218517 0.0544399 +vt -0.2170864 0.05377613 +vt -0.216112 0.0558761 +vt -0.242674 0.01216823 +vt -0.2437377 0.01011206 +vt -0.2423368 0.009387426 +vt -0.2412732 0.0114436 +vt -0.2554376 0.03950207 +vt -0.2569248 0.03772797 +vt -0.2557161 0.0367148 +vt -0.2542289 0.0384889 +vt -0.1588192 0.2019454 +vt -0.161114 0.2016399 +vt -0.1609059 0.2000766 +vt -0.1586112 0.200382 +vt 0.2035246 0.1607617 +vt 0.202831 0.1629704 +vt 0.2013741 0.1623665 +vt 0.201984 0.1604243 +vt 0.2339338 0.1014332 +vt 0.2332599 0.1036479 +vt 0.2317976 0.103057 +vt 0.2323902 0.1011094 +vt 0.249265 0.05785679 +vt 0.2483737 0.05999328 +vt 0.2469776 0.05925953 +vt 0.2477615 0.05738074 +vt 0.2569225 0.04477457 +vt 0.2556565 0.04671278 +vt 0.2544176 0.04573684 +vt 0.2555308 0.04403241 +vt 0.2414475 0.08943165 +vt 0.2396172 0.09084908 +vt 0.2387657 0.08952156 +vt 0.2403753 0.08827507 +vt 0.1482629 0.1835482 +vt 0.1459553 0.1837334 +vt 0.1459688 0.1821563 +vt 0.147998 0.1819935 +vt -0.009781639 0.198553 +vt -0.01176026 0.1973512 +vt -0.01082542 0.196081 +vt -0.009085448 0.1971378 +vt -0.1127631 0.1228384 +vt -0.1141448 0.120981 +vt -0.1128011 0.1201553 +vt -0.111586 0.1217887 +vt -0.1665954 0.03203664 +vt -0.1675597 0.02993205 +vt -0.1660734 0.0294046 +vt -0.1652254 0.03125535 +vt -0.1998831 -0.04126935 +vt -0.2005944 -0.04347235 +vt -0.1990566 -0.0438222 +vt -0.198431 -0.04188492 +vt -0.2280188 -0.07314326 +vt -0.2286643 -0.07536642 +vt -0.2271167 -0.07567041 +vt -0.2265491 -0.07371538 +vt -0.2248935 0.1262781 +vt -0.2268939 0.1251131 +vt -0.2259827 0.1238258 +vt -0.2242235 0.1248503 +vt 0.2530477 -0.01401767 +vt 0.2538947 -0.01216647 +vt 0.2523714 -0.01175802 +vt 0.2517427 -0.01313202 +vt 0.2563579 0.03274532 +vt 0.2563288 0.03478087 +vt 0.2547776 0.0344963 +vt 0.2547992 0.03298546 +vt 0.2556448 0.03761976 +vt 0.2550216 0.03955779 +vt 0.2536214 0.03883194 +vt 0.2540839 0.03739348 +vt 0.2474953 0.05056838 +vt 0.2463109 0.05222412 +vt 0.2451987 0.05110591 +vt 0.2460778 0.04987698 +vt 0.2163951 0.08976382 +vt 0.2146683 0.09084214 +vt 0.2140671 0.08938407 +vt 0.2153488 0.08858372 +vt 0.1417763 0.1371638 +vt 0.1397445 0.1372906 +vt 0.1399096 0.1357221 +vt 0.1414176 0.135628 +vt 0.0383692 0.1380806 +vt 0.0365358 0.1371957 +vt 0.03744806 0.1359092 +vt 0.03880886 0.1365659 +vt -0.04604883 0.07990314 +vt -0.04736628 0.07835115 +vt -0.04601088 0.07754476 +vt -0.04503303 0.07869668 +vt -0.09738536 -0.004622773 +vt -0.09814031 -0.006513376 +vt -0.09659874 -0.006846431 +vt -0.09603839 -0.005443174 +vt -0.1213396 -0.09049824 +vt -0.1215189 -0.09252609 +vt -0.1199466 -0.09240167 +vt -0.1198136 -0.09089653 +vt -0.1080938 -0.1721252 +vt -0.1075109 -0.1740757 +vt -0.106096 -0.173379 +vt -0.1065287 -0.1719313 +vt 0.0833719 -0.2221538 +vt 0.08535613 -0.222609 +vt 0.08544807 -0.2210345 +vt 0.08397532 -0.2206967 +vt 0.2003854 -0.09434699 +vt 0.2015426 -0.0933754 +vt 0.2002835 -0.09242558 +vt 0.1996678 -0.09294257 +vt 0.2288349 -0.03445113 +vt 0.2292475 -0.03299754 +vt 0.2276724 -0.03291794 +vt 0.2274528 -0.03369137 +vt 0.2308271 -0.0001870609 +vt 0.2305522 0.00129872 +vt 0.2291052 0.0006714626 +vt 0.2292515 -0.0001191041 +vt 0.217891 0.02612187 +vt 0.2170306 0.02736395 +vt 0.2159684 0.02619811 +vt 0.2164262 0.02553722 +vt 0.1874001 0.05263868 +vt 0.1860928 0.05339641 +vt 0.1856279 0.05188935 +vt 0.1863235 0.05148617 +vt 0.1368841 0.07054008 +vt 0.1353755 0.07062505 +vt 0.135642 0.06907058 +vt 0.1364447 0.06902537 +vt 0.07558995 0.06221164 +vt 0.07420845 0.0615996 +vt 0.07515423 0.06033751 +vt 0.07588931 0.06066316 +vt 0.02169006 0.02204838 +vt 0.02070888 0.02089929 +vt 0.0221073 0.02017005 +vt 0.02262937 0.02078147 +vt -0.01177648 -0.03893068 +vt -0.01219872 -0.04038148 +vt -0.01062415 -0.04047157 +vt -0.01039948 -0.03969962 +vt -0.01679188 -0.1051293 +vt -0.01655034 -0.1066208 +vt -0.0150896 -0.1060262 +vt -0.01521811 -0.1052325 +vt 0.02137894 -0.158988 +vt 0.02236752 -0.1601307 +vt 0.02329863 -0.1588578 +vt 0.02277263 -0.1582498 +vt 0.1157608 -0.1615041 +vt 0.1172643 -0.1616538 +vt 0.1170648 -0.1600893 +vt 0.1162648 -0.1600097 +vt 0.1498439 -0.07717922 +vt 0.1505457 -0.07678701 +vt 0.1494509 -0.07565185 +vt 0.1658565 -0.05766367 +vt 0.1662451 -0.05695986 +vt 0.1647158 -0.05657456 +vt 0.1709798 -0.03797973 +vt 0.1709616 -0.03717594 +vt 0.169446 -0.03761225 +vt 0.1657993 -0.0217377 +vt 0.1653945 -0.02104304 +vt 0.1642792 -0.02215813 +vt 0.1519577 -0.01102269 +vt 0.1512718 -0.01060318 +vt 0.150819 -0.01211392 +vt 0.1320989 -0.008119182 +vt 0.1312962 -0.008072734 +vt 0.1316094 -0.00961846 +vt 0.1104273 -0.01494678 +vt 0.1096975 -0.01528421 +vt 0.1107025 -0.01649972 +vt 0.09227103 -0.03120736 +vt 0.09178794 -0.03185002 +vt 0.09324852 -0.03244506 +vt 0.08275691 -0.05337008 +vt 0.08264226 -0.05416585 +vt 0.08420905 -0.05398543 +vt 0.08552635 -0.07520156 +vt 0.08582292 -0.07594885 +vt 0.08709214 -0.07501265 +vt 0.1012767 -0.08926606 +vt 0.10192 -0.08974833 +vt 0.1025131 -0.08828699 +vt 0.1256908 -0.08984192 +vt 0.1264929 -0.08989692 +vt 0.1261962 -0.08834795 +vt 0.1442189 -0.04132299 +vt 0.1756117 -0.08711267 +vt 0.1584868 -0.03598324 +vt -0.1469756 0.04407602 +vt -0.1565037 0.05546654 +vt -0.1978626 0.02086999 +vt -0.1883345 0.009479471 +vt -0.08477197 0.094672 +vt -0.09833203 0.07530855 +vt -0.09153719 0.06810299 +vt -0.07812316 0.08726368 +vt -0.0852869 -0.02233591 +vt -0.131334 -0.05039203 +vt -0.09097652 -0.1166287 +vt -0.04492943 -0.08857258 +vt -0.1234578 0.09736478 +vt -0.1610618 0.02952701 +vt -0.149615 0.02006657 +vt -0.1389368 0.04079212 +vt -0.1203962 0.07423965 +vt 0.1496149 0.02006655 +vt 0.1610617 0.02952699 +vt 0.1234577 0.09736476 +vt -0.171557 -0.01306257 +vt -0.1943817 -0.06191451 +vt -0.1847717 -0.06451012 +vt -0.1634 -0.01876811 +vt 0.1711115 0.01577557 +vt 0.1363285 0.09484668 +vt 0.1285624 0.08861966 +vt 0.1612885 0.01416363 +vt 0.1970417 0.03275793 +vt 0.1537683 0.06492767 +vt 0.1492958 0.05603461 +vt 0.1898144 0.02591284 +vt -0.1199336 0.04818476 +vt -0.1295145 0.02393159 +vt -0.1382292 0.004745471 +vt -0.1307779 0.001690138 +vt -0.1238578 0.02072463 +vt -0.1429184 0.0101503 +vt -0.1725707 -0.02191738 +vt -0.168152 -0.02865046 +vt -0.1358606 0.006271254 +vt 0.08756931 0.008458237 +vt 0.06823131 0.0228347 +vt 0.08099602 0.0038051 +vt 0.167762 -0.04229875 +vt 0.1418863 -0.007112888 +vt 0.1342052 -0.01034901 +vt 0.1623838 -0.04866641 +vt -0.1243787 0.03866618 +vt -0.1151092 0.03896258 +vt -0.1083611 0.0604964 +vt 0.06243441 -0.06695426 +vt 0.1045642 -0.08924007 +vt 0.1179018 -0.06887978 +vt -0.1230017 0.02238293 +vt -0.130069 0.003402404 +vt -0.1233247 -0.002861034 +vt -0.1169076 0.01487749 +vt -0.1177839 0.01604895 +vt -0.156845 -0.0110894 +vt -0.1534538 -0.02029405 +vt -0.1108902 0.009948915 +vt 0.08211671 0.001839645 +vt 0.06940671 0.02090347 +vt 0.06380158 0.01221127 +vt 0.07645234 -0.006163587 +vt 0.1556734 0.003028292 +vt 0.1143495 0.02677129 +vt 0.1077675 0.01970173 +vt 0.152104 -0.006674019 +vt 0.05622957 -0.07025587 +vt 0.04571336 -0.08591358 +vt 0.09016418 -0.1133056 +vt 0.1018667 -0.094313 +vt -0.1201247 -0.05718458 +vt -0.1340533 -0.1026851 +vt -0.1252277 -0.1079718 +vt -0.1108638 -0.05668596 +vt 0.04608269 0.04828985 +vt 0.03731712 0.04483581 +vt 0.05111676 0.02543152 +vt 0.1498003 -0.07363494 +vt 0.1195972 -0.0340561 +vt 0.1428589 -0.08000538 +vt 0.07078245 -0.0461601 +vt 0.1158213 -0.0745865 +vt 0.1273929 -0.0537765 +vt -0.1001954 0.07335815 +vt -0.1211251 0.04135125 +vt -0.112059 0.03759549 +vt -0.09335982 0.06619126 +vt -0.1208769 0.04201794 +vt -0.1330637 0.022142 +vt -0.1236443 0.01892274 +vt -0.1118139 0.03825463 +vt -0.1120589 0.03759549 +vt -0.1092948 0.03645044 +vt -0.09127574 0.06400621 +vt -0.09335978 0.06619126 +vt -0.0915448 0.06809519 +vt -0.08947313 0.0658984 +vt -0.07610408 0.0849976 +vt -0.07813123 0.0872562 +vt 0.1492958 0.05603445 +vt 0.1479323 0.05332313 +vt 0.1876109 0.02382568 +vt 0.1898144 0.02591263 +vt 0.1285518 0.0886404 +vt 0.1261841 0.08674179 +vt 0.1582862 0.01369413 +vt 0.161281 0.0141857 +vt -0.1847717 -0.06451021 +vt -0.1818418 -0.06530155 +vt -0.1609131 -0.0205077 +vt -0.1634 -0.01876819 +vt -0.1236397 0.01893521 +vt -0.1207679 0.01795367 +vt -0.1090458 0.03711951 +vt -0.111809 0.03826691 +vt -0.1043105 0.04832146 +vt -0.08796619 0.04049041 +vt -0.08857842 0.04267805 +vt -0.1019117 0.04924564 +vt -0.08979125 0.06668626 +vt -0.07717179 0.05342544 +vt -0.06526069 0.07336693 +vt 0.1479322 0.05332323 +vt 0.1404197 0.03838559 +vt 0.1754711 0.01232809 +vt 0.1876109 0.0238258 +vt 0.1261666 0.08677663 +vt 0.1131228 0.07631571 +vt 0.1417742 0.01102175 +vt 0.1582736 0.01373114 +vt -0.1818419 -0.06530122 +vt -0.1656999 -0.06966107 +vt -0.1472118 -0.03009103 +vt -0.1609131 -0.02050741 +vt -0.121603 0.01746541 +vt -0.1057651 0.01210637 +vt -0.09343011 0.02919129 +vt -0.1099404 0.03666715 +vt -0.1151466 0.03051447 +vt -0.1031947 0.05369255 +vt -0.1053689 0.05300335 +vt -0.1160455 0.03260487 +vt -0.08842753 0.03912474 +vt -0.1015077 0.05192919 +vt -0.101444 0.04940308 +vt -0.09061752 0.03852517 +vt -0.09123043 0.063917 +vt -0.1092534 0.03636377 +vt -0.1068691 0.03733797 +vt -0.09125166 0.06137938 +vt -0.1051706 0.03747161 +vt -0.09176084 0.03106097 +vt -0.0789555 0.05019473 +vt -0.0894183 0.06142455 +vt 0.134763 -0.05831997 +vt 0.1457991 -0.1110995 +vt 0.1612945 -0.1070875 +vt 0.1174607 0.09781501 +vt 0.1015934 0.09571002 +vt 0.1448834 0.02095665 +vt -0.1157737 0.07692911 +vt -0.1034492 0.09710149 +vt -0.1183837 0.1001096 +vt -0.06495365 0.07255793 +vt -0.07612263 0.08500078 +vt -0.08949062 0.06590085 +vt -0.1057414 0.06668528 +vt -0.1137768 0.06889986 +vt -0.1210989 0.04685619 +vt 0.09190775 0.006066524 +vt 0.05167666 0.06493639 +vt 0.04429629 0.06106317 +vt -0.1039683 0.04607822 +vt -0.09300192 0.06708334 +vt -0.1097266 0.04839296 +vt -0.09446143 0.06391902 +vt -0.1026117 0.06526534 +vt -0.1125116 0.04373704 +vt 0.1475879 -0.07728075 +vt 0.1261926 -0.03480134 +vt 0.1182464 -0.03705905 +vt 0.008305185 -0.07023524 +vt -0.04309345 -0.01876036 +vt -0.0270531 -0.03814298 +vt 0.1278245 -0.05099701 +vt 0.08359199 -0.02461665 +vt 0.07120125 -0.04347697 +vt -0.1129392 0.02833885 +vt -0.101013 0.05296766 +vt -0.1067327 0.05537627 +vt 0.1178188 -0.0707363 +vt 0.07726108 -0.04584911 +vt 0.06235194 -0.06879534 +vt 0.04698395 0.02491209 +vt 0.05690665 0.02762855 +vt 0.04177998 0.04773235 +vt 0.09121402 0.01232407 +vt 0.05857427 0.04717762 +vt 0.0720145 0.02688496 +vt 0.1381668 -0.00254911 +vt 0.1650752 -0.03397532 +vt 0.1696212 -0.03008288 +vt 0.1427128 0.001343339 +vt -0.1381668 -0.002549134 +vt -0.1427128 0.001343312 +vt -0.1696211 -0.03008291 +vt -0.1650752 -0.03397533 +vt -0.1052913 0.06108164 +vt -0.1280499 0.003227875 +vt -0.0943392 0.05914222 +vt -0.08745877 -0.03336003 +vt -0.1224865 -0.05537646 +vt -0.08940297 -0.1080119 +vt -0.0543752 -0.08599545 +vt -0.0822857 0.06506361 +vt -0.0875557 0.06789984 +vt -0.1170183 0.0131553 +vt -0.1117483 0.01031908 +vt 0.08228586 0.06506365 +vt 0.1117484 0.0103191 +vt 0.1170184 0.01315531 +vt 0.08755585 0.06789987 +vt -0.1312391 0.008959958 +vt -0.1620624 -0.01863698 +vt -0.1556357 -0.02861176 +vt 0.09167933 0.006012286 +vt 0.05848201 0.05857603 +vt 0.08286765 -0.001934606 +vt 0.1416004 -0.08279331 +vt 0.1247956 -0.04498767 +vt 0.1312994 -0.08837983 +vt -0.1097165 -0.02776621 +vt -0.07515734 -0.093151 +vt -0.1089676 -0.01943425 +vt -0.09231274 -0.1074866 +vt -0.09216406 -0.1161598 +vt -0.04625533 -0.08778328 +vt -0.08334537 -0.1096433 +vt -0.1274897 -0.05052378 +vt -0.08296555 -0.1183094 +vt -0.1203383 -0.0609862 +vt -0.08330856 -0.02882763 +vt -0.1284771 -0.05836814 +vt -0.08939389 0.06534006 +vt -0.1193057 -0.01004281 +vt -0.1086539 -0.018632 +vt -0.07575093 0.06428915 +vt -0.1111268 0.004108722 +vt -0.1538699 -0.0288438 +vt -0.1478166 -0.04111539 +vt -0.1007992 -0.004867622 +vt 0.08004369 -0.0112624 +vt 0.03554162 0.05653775 +vt 0.02239105 0.0527566 +vt 0.07134332 -0.02182357 +vt 0.1190792 -0.1071784 +vt 0.1019236 -0.05600682 +vt 0.08834695 -0.05771232 +vt 0.107218 -0.114001 +vt -0.05424052 0.06532459 +vt -0.09651826 -0.01323185 +vt -0.08694099 -0.01838618 +vt -0.04466324 0.06017026 +vt -0.1136498 -0.01169613 +vt -0.1522624 -0.05679163 +vt -0.1440009 -0.06386546 +vt -0.1053883 -0.01876996 +vt 0.09651833 -0.01323183 +vt 0.05424059 0.06532463 +vt 0.0446633 0.0601703 +vt 0.08694105 -0.01838616 +vt 0.1522624 -0.05679154 +vt 0.1136498 -0.01169605 +vt 0.1053883 -0.01876989 +vt 0.1440009 -0.06386538 +vt 0.08703593 -0.0171246 +vt 0.0395622 -0.09265452 +vt 0.08982581 -0.1242473 +vt 0.1372996 -0.04871739 +vt -0.1225504 0.005748264 +vt -0.1136451 -0.001153003 +vt -0.08625408 0.06001981 +vt -0.1533947 -0.02333121 +vt -0.1190614 0.005142139 +vt -0.1271563 0.01297822 +vt -0.1021596 -0.02979307 +vt -0.07190442 -0.08960113 +vt -0.06428935 -0.09331748 +vt -0.05186014 -0.07675608 +vt -0.059627 -0.07336842 +vt -0.09822805 -0.09571718 +vt 0.1289762 -0.03669678 +vt 0.1182646 -0.03969207 +vt 0.1381995 -0.07959328 +vt -0.1120037 -0.07176994 +vt -0.07517479 -0.04660762 +vt -0.07615509 -0.0382997 +vt 0.0708967 0.06038877 +vt 0.05964996 0.05709758 +vt 0.0932299 -0.0009090549 +vt -0.07962735 -0.1085481 +vt -0.1162089 -0.05238615 +vt -0.1243869 -0.04989302 +vt 0.09113828 -0.01634684 +vt 0.1430529 -0.07341467 +vt 0.1508889 -0.06628622 +vt 0.09897431 -0.0092184 +vt -0.09113827 -0.01634683 +vt -0.09897432 -0.009218385 +vt -0.1508889 -0.06628621 +vt -0.1430529 -0.07341466 +vt 0.07705905 -0.00287942 +vt 0.01444023 -0.09574877 +vt 0.02717749 -0.09371778 +vt 0.07743324 -0.01681345 +vt 0.0989743 -0.009218406 +vt 0.1508889 -0.06628624 +vt 0.1596277 -0.05833657 +vt 0.1077131 -0.001268746 +vt -0.02962319 0.06306542 +vt -0.03889678 0.06818584 +vt -0.05989792 0.03015067 +vt -0.07271877 0.006930813 +vt -0.09303768 -0.02986878 +vt -0.08376408 -0.0349892 +vt 0.02962319 0.06306544 +vt 0.08376407 -0.03498919 +vt 0.09303766 -0.02986877 +vt 0.07345141 0.005603902 +vt 0.05937956 0.03108947 +vt 0.03889678 0.06818585 +vt -0.1279443 -0.07939464 +vt -0.112839 -0.1042816 +vt -0.0476746 -0.06295644 +vt -0.06143705 -0.04028199 +vt 0.07936838 0.009625521 +vt 0.0982004 -0.02624799 +vt 0.1086506 -0.02077263 +vt 0.09240447 0.01047312 +vt -0.1508889 -0.06628615 +vt -0.09897428 -0.009218353 +vt -0.107713 -0.001268684 +vt -0.1596277 -0.05833648 +vt -0.09519988 -0.02919598 +vt -0.07566668 0.008021584 +vt -0.08870294 0.008867648 +vt -0.1056505 -0.02372121 +vt 0.08346863 -0.06128325 +vt 0.09595036 -0.1374303 +vt 0.1089998 -0.1365658 +vt 0.09651808 -0.06041881 +vt -0.1112165 -0.1092186 +vt -0.09198068 -0.1387244 +vt -0.02600809 -0.09873085 +vt -0.0460297 -0.06792887 +vt 0.03826127 0.06813361 +vt 0.05881092 0.03107424 +vt 0.06683697 0.0408113 +vt 0.0485928 0.07386255 +vt -0.1590015 -0.03323426 +vt -0.09494407 0.009773387 +vt -0.101969 0.02025576 +vt -0.1660264 -0.02275188 +vt -0.05959483 0.03019714 +vt -0.03852547 0.06819455 +vt -0.04885706 0.0739234 +vt -0.06762097 0.03993412 +vt -0.08405879 -0.002972964 +vt -0.150028 -0.04297207 +vt -0.1303905 -0.07521496 +vt -0.06386527 -0.03613286 +vt 0.01987918 -0.1042623 +vt 0.08460926 -0.146237 +vt 0.08304246 -0.137718 +vt 0.03257126 -0.1019413 +vt 0.1074259 -0.1353917 +vt 0.1587017 -0.03580928 +vt 0.1480977 -0.04007107 +vt 0.1049705 -0.1270891 +vt 0.1545214 -0.03270994 +vt 0.08751593 0.005527155 +vt 0.08879582 -0.008355211 +vt 0.1438005 -0.03667021 +vt -0.01663336 0.04440501 +vt -0.06706194 -0.03238683 +vt -0.05395994 -0.03639844 +vt -0.0344767 -0.007508101 +vt -0.02591906 0.005572305 +vt -0.008262101 0.03354911 +vt -0.09562577 -0.05556542 +vt -0.1172678 -0.1135217 +vt -0.1036566 -0.1153025 +vt -0.08417878 -0.06314187 +vt 0.10918 -0.03053577 +vt 0.07453681 0.06019465 +vt 0.06411966 0.05126596 +vt 0.07624979 0.01634437 +vt 0.08235442 -0.0001795839 +vt 0.0954863 -0.03124967 +vt 0.1542874 -0.02732389 +vt 0.1023079 0.006223634 +vt 0.09765451 -0.006690779 +vt 0.1444361 -0.03688355 +vt 0.08587434 -0.02150087 +vt 0.06835373 -0.04958896 +vt 0.1153266 -0.07951813 +vt 0.1347977 -0.04808324 +vt 0.01256522 -0.02059119 +vt 0.002696444 -0.03271568 +vt 0.01011441 -0.03706808 +vt 0.01802818 -0.02734545 +vt 0.058587 -0.06534887 +vt 0.04196729 -0.09601337 +vt 0.08811006 -0.1271734 +vt 0.1041778 -0.09749435 +vt -0.07607912 -0.05957506 +vt -0.09886138 -0.110495 +vt -0.09047108 -0.1080848 +vt -0.072202 -0.06725214 +vt 0.1232472 -0.02385444 +vt 0.1227823 -0.006243534 +vt 0.1143243 -0.00797104 +vt 0.1146971 -0.02209323 +vt 0.1333182 -0.05801819 +vt 0.0901112 -0.02287049 +vt 0.09021173 -0.03155691 +vt 0.1248594 -0.05974184 +vt 0.07155649 -0.05492771 +vt 0.0650519 -0.06564441 +vt 0.101794 -0.09116073 +vt 0.1091241 -0.07908407 +vt 0.1116588 -0.006368296 +vt 0.1177617 -0.0145748 +vt 0.1298082 -0.005616287 +vt 0.1237054 0.002590217 +vt -0.1116588 -0.006368261 +vt -0.1237054 0.002590261 +vt -0.1298082 -0.005616239 +vt -0.1177617 -0.01457477 +vt 0.08026183 -0.005440598 +vt 0.07080165 -0.02421566 +vt 0.07958823 -0.02944898 +vt 0.08904841 -0.01067392 +vt -0.03068602 -0.07291688 +vt -0.03825621 -0.0797932 +vt -0.02403593 -0.09582856 +vt -0.01646574 -0.08895224 +vt -0.06654233 0.05696026 +vt -0.07967884 0.064227 +vt -0.08003995 0.06192405 +vt -0.06833531 0.05544938 +vt 0.0714253 0.04392654 +vt 0.07374988 0.02307113 +vt 0.08944915 0.008482782 +vt 0.102826 0.01528519 +vt 0.1012271 0.03696891 +vt 0.08480215 0.05072894 +vt -0.08618712 -0.01589589 +vt -0.074865 -0.03446415 +vt -0.06607126 -0.0292429 +vt -0.07739338 -0.01067463 +vt 0.03025276 -0.07724015 +vt 0.01519661 -0.09254523 +vt 0.02296422 -0.09919773 +vt 0.03802037 -0.08389267 +vt -0.1028846 0.04883537 +vt -0.1174645 0.03312626 +vt -0.1158235 0.03250803 +vt -0.1028328 0.04650485 +vt -0.1208439 0.02217347 +vt -0.1192122 0.0004868699 +vt -0.1177282 0.002291051 +vt -0.1191821 0.02161382 +vt -0.1097842 0.001787013 +vt -0.09609922 -0.004385119 +vt -0.09596018 -0.002039554 +vt -0.1081535 0.003459804 +vt -0.07118961 0.003038244 +vt -0.05396058 0.01584814 +vt -0.0554078 0.01676171 +vt -0.07075886 0.005348105 +vt -0.05009078 0.0222252 +vt -0.04530282 0.04269648 +vt -0.04725737 0.04140136 +vt -0.05152343 0.02316144 +vt -0.07340433 0.04250474 +vt -0.0853231 0.04856567 +vt -0.09995776 0.03630548 +vt -0.1013824 0.01698528 +vt -0.08946358 0.01092436 +vt -0.07547553 0.02392256 +vt 0.1128563 -0.03264064 +vt 0.1563442 -0.05963805 +vt 0.1558722 -0.05117866 +vt 0.1206471 -0.02931078 +vt -0.233508 -0.06597634 +vt -0.2717973 -0.03937455 +vt -0.271109 -0.04988761 +vt -0.2444106 -0.06878625 +vt -0.1431175 -0.02090676 +vt -0.1487853 -0.02621303 +vt -0.1418909 -0.03402149 +vt -0.1398015 -0.03191176 +vt 0.1430468 -0.186768 +vt 0.1208714 -0.2329016 +vt 0.1306262 -0.2298173 +vt 0.1473338 -0.1964518 +vt -0.1882416 0.01185118 +vt -0.2241146 0.04164811 +vt -0.2568866 0.002332402 +vt -0.2210249 -0.02745512 +vt -0.2031348 -0.006023833 +vt -0.1932573 0.005920837 +vt 0.1868839 0.009937775 +vt 0.2196589 -0.02937549 +vt 0.2544996 0.001030213 +vt 0.2217355 0.04035255 +vt 0.06950314 -0.09297369 +vt 0.1069219 -0.1278995 +vt 0.1066827 -0.1167951 +vt 0.07956802 -0.09116082 +vt -0.118064 -0.106062 +vt -0.0742592 -0.07958397 +vt -0.08508608 -0.07585557 +vt -0.1171158 -0.09499691 +vt -0.1676704 -0.1995764 +vt -0.1774241 -0.1493278 +vt -0.1843087 -0.157375 +vt -0.1777358 -0.1941064 +vt -0.01349664 -0.1637525 +vt -0.04324567 -0.186278 +vt -0.02072014 -0.2160271 +vt 0.009028876 -0.1935015 +vt -0.2381667 -0.05384146 +vt -0.2512887 -0.1033174 +vt -0.2400155 -0.101061 +vt -0.2294929 -0.06138632 +vt 0.2560139 -0.08914894 +vt 0.2407749 -0.04028355 +vt 0.2324338 -0.04819564 +vt 0.2446539 -0.08738082 +vt 0.182767 -0.02184055 +vt 0.1401438 0.006502205 +vt 0.1386516 -0.004896555 +vt 0.1728312 -0.02762461 +vt 0.0208003 -0.1636317 +vt 0.01927225 -0.1661866 +vt 0.009590721 -0.178199 +vt -0.004724899 -0.1957763 +vt 0.02741966 -0.2213015 +vt 0.05294486 -0.1891569 +vt -0.1267801 0.004063047 +vt -0.1702102 -0.02302637 +vt -0.1602811 -0.02593812 +vt -0.1285382 -0.006323081 +vt -0.07808654 0.1851601 +vt -0.07203545 0.1393117 +vt -0.06502949 0.1479182 +vt -0.06905636 0.1801062 +vt -0.2489338 -0.1114069 +vt -0.2375226 -0.06150886 +vt -0.2477314 -0.06625436 +vt -0.2557974 -0.1026867 +vt -0.1963518 0.03859648 +vt -0.2177677 0.063318 +vt -0.2446806 0.03747381 +vt -0.223452 0.01294877 +vt 0.2358533 -0.08070011 +vt 0.2734974 -0.05381371 +vt 0.2657007 -0.05050627 +vt 0.236254 -0.07224033 +vt 0.1865651 -0.2004907 +vt 0.1971439 -0.1504094 +vt 0.1893506 -0.1537332 +vt 0.1807817 -0.1942991 +vt -0.04193272 0.1920795 +vt -0.03088189 0.1467718 +vt -0.02503726 0.1528975 +vt -0.0341945 0.1886437 +vt 0.1955477 0.03571562 +vt 0.2255306 0.007082987 +vt 0.248706 0.03540639 +vt 0.2189333 0.06425755 +vt -0.1861174 0.008114828 +vt -0.1963672 -0.003516192 +vt -0.1890794 -0.009723326 +vt -0.1789451 0.001682387 +vt -0.2028455 0.01419886 +vt -0.1996977 0.004269375 +vt -0.1964689 0.007058036 +vt 0.03606772 -0.1849677 +vt 0.03937908 -0.1876578 +vt 0.04810959 -0.1749374 +vt 0.04455521 -0.1722883 +vt -0.1515145 -0.03048404 +vt -0.1721523 -0.04928607 +vt -0.1614547 -0.05349312 +vt -0.1446305 -0.03830019 +vt 0.1957706 0.023451 +vt 0.1894867 0.01614745 +vt 0.1929764 0.01341363 +vt 0.178406 0.0173438 +vt 0.1836366 0.02157877 +vt 0.1729295 0.03480303 +vt 0.1676989 0.03056807 +vt 0.1009468 -0.03996498 +vt 0.1057972 -0.03529933 +vt 0.09400117 -0.02303644 +vt 0.08915086 -0.0277021 +vt 0.009231071 -0.122156 +vt 0.01434267 -0.1177782 +vt 0.003274381 -0.1048547 +vt -0.001837232 -0.1092325 +vt -0.1063299 -0.1668592 +vt -0.1003625 -0.1637473 +vt -0.1082302 -0.1486602 +vt -0.1141976 -0.1517721 +vt -0.220521 -0.1092112 +vt -0.2137984 -0.1088966 +vt -0.2145936 -0.09189983 +vt -0.2213164 -0.09221441 +vt -0.2410126 -0.001790018 +vt -0.2348534 -0.004502764 +vt -0.2279949 0.01106916 +vt -0.2341541 0.01378189 +vt -0.1836365 0.0215785 +vt -0.178406 0.01734355 +vt -0.1676988 0.03056781 +vt -0.1729294 0.03480278 +vt -0.1057974 -0.03529958 +vt -0.1009471 -0.03996522 +vt -0.08915108 -0.02770234 +vt -0.09400139 -0.02303669 +vt -0.01434292 -0.1177784 +vt -0.009231309 -0.1221562 +vt 0.001836983 -0.1092327 +vt -0.003274624 -0.1048549 +vt 0.1003624 -0.1637474 +vt 0.1063298 -0.1668594 +vt 0.1141975 -0.1517722 +vt 0.1082301 -0.1486603 +vt 0.2137984 -0.1088966 +vt 0.2205211 -0.1092111 +vt 0.2213164 -0.09221432 +vt 0.2145937 -0.09189976 +vt 0.2348534 -0.004502566 +vt 0.2410125 -0.001789848 +vt 0.234154 0.01378207 +vt 0.2279948 0.01106934 +vt -0.2268604 0.02485953 +vt -0.2201383 0.02518651 +vt -0.2144802 0.02883075 +vt -0.2114023 0.03481578 +vt -0.2117293 0.0415379 +vt -0.2153736 0.04719593 +vt -0.2213586 0.05027382 +vt -0.2280807 0.04994682 +vt -0.2337387 0.04630258 +vt -0.2368166 0.04031757 +vt -0.2364896 0.03359544 +vt -0.2328454 0.0279374 +vt 0.2328454 0.02793732 +vt 0.2364897 0.03359536 +vt 0.2368167 0.04031748 +vt 0.2337388 0.04630251 +vt 0.2280807 0.04994676 +vt 0.2213586 0.05027374 +vt 0.2153736 0.04719586 +vt 0.2117294 0.04153783 +vt 0.2114024 0.03481571 +vt 0.2144802 0.02883068 +vt 0.2201383 0.02518644 +vt 0.2268604 0.02485945 +vt -0.1638348 0.005959619 +vt -0.1836446 -0.01415596 +vt -0.191346 -0.02254646 +vt -0.1784553 -0.03674028 +vt -0.1498547 -0.007528497 +vt 0.1797439 -0.03657037 +vt 0.1931891 -0.02269722 +vt 0.1878845 -0.01734262 +vt 0.1631024 0.007794323 +vt 0.1492048 -0.005916561 +vt -0.1701029 -0.08378735 +vt -0.1677748 -0.08082053 +vt -0.1789871 -0.07260492 +vt -0.181267 -0.07550627 +vt -0.182126 0.02487526 +vt -0.2022455 0.004467412 +vt -0.1834731 -0.01378352 +vt -0.1636421 0.006311182 +vt -0.1765539 -0.06093186 +vt -0.156185 -0.03446125 +vt -0.1543176 -0.03210629 +vt -0.169939 -0.02039828 +vt -0.1732609 -0.02467853 +vt -0.1941653 -0.0517637 +vt -0.1788914 -0.0637688 +vt 0.1847844 -0.03831228 +vt 0.1585579 -0.007282785 +vt 0.1438592 -0.0198193 +vt 0.1457964 -0.02205575 +vt 0.1683375 -0.04857147 +vt 0.1698453 -0.05033169 +vt -0.001497391 -0.1723824 +vt -0.004941554 -0.1682107 +vt -0.03241813 -0.1903689 +vt -0.02544773 -0.1907112 +vt 0.2108992 -0.02511382 +vt 0.1889136 0.002716731 +vt 0.1685636 -0.01375751 +vt 0.1905385 -0.0415741 +vt 0.1999297 0.01080734 +vt 0.177571 0.03159062 +vt 0.1595346 0.01272269 +vt 0.1815757 -0.00786397 +vt -0.1920691 -0.007945034 +vt -0.213589 -0.03511705 +vt -0.1929519 -0.05125353 +vt -0.1717847 -0.02437329 +vt -0.01228576 -0.1674746 +vt -0.03684258 -0.185609 +vt -0.03050161 -0.186823 +vt -0.01259969 -0.173603 +vt -0.14389 -0.04175477 +vt -0.1419989 -0.03941863 +vt -0.1528942 -0.03078699 +vt -0.1547853 -0.03312312 +vt 0.02144952 -0.2166046 +vt 0.04462822 -0.1906433 +vt 0.01074497 -0.1642033 +vt -0.01018976 -0.1902314 +vt 0.1397098 -0.01552027 +vt 0.1408106 -0.02660217 +vt 0.1579072 -0.04390428 +vt 0.1702085 -0.04633786 +vt 0.1800546 -0.03652742 +vt 0.1496171 -0.005772964 +vt 0.1323459 -0.0210261 +vt 0.1342935 -0.02325628 +vt 0.1448296 -0.01418979 +vt 0.142882 -0.01195961 +vt -0.1699541 -0.04577501 +vt -0.1574499 -0.04314794 +vt -0.1405566 -0.0260315 +vt -0.1396603 -0.01516493 +vt -0.1495616 -0.005411597 +vt -0.179794 -0.03595848 +vt -0.06101462 -0.1099663 +vt -0.05860852 -0.1081597 +vt -0.06606365 -0.0998853 +vt -0.06831905 -0.1018697 +vt 0.142884 -0.02078139 +vt 0.1445488 -0.03270096 +vt 0.1598458 -0.04904624 +vt 0.1712152 -0.05079804 +vt 0.1812485 -0.04117855 +vt 0.1529761 -0.01122478 +vt 0.1654478 -0.07168013 +vt 0.166937 -0.07357392 +vt 0.1779008 -0.06502939 +vt 0.1764625 -0.06320143 +vt -0.1682453 -0.04367063 +vt -0.1567287 -0.04205708 +vt -0.1411937 -0.02612185 +vt -0.1395014 -0.01447462 +vt -0.149383 -0.004700671 +vt -0.1780654 -0.0338337 +vt -0.08984821 -0.147675 +vt -0.08723813 -0.1454358 +vt -0.0950347 -0.1362648 +vt -0.0977133 -0.1389178 +vt -0.00834877 -0.2001283 +vt 0.009537066 -0.213388 +vt 0.01142521 -0.2113415 +vt -0.006162913 -0.1974718 +vt 0.1351705 -0.180925 +vt 0.1465767 -0.1832659 +vt 0.1469338 -0.180884 +vt 0.135731 -0.178198 +vt 0.1289712 -0.1560795 +vt 0.1412115 -0.1598007 +vt 0.1421726 -0.1570013 +vt 0.1301672 -0.153326 +vt 0.01607319 -0.1702688 +vt 0.03547998 -0.1844901 +vt 0.0377791 -0.1825582 +vt 0.01818705 -0.1681255 +vt -0.01166297 -0.2148206 +vt -0.003094474 -0.2073091 +vt -0.02684708 -0.1809953 +vt -0.03381423 -0.180654 +vt -0.03967163 -0.1853881 +vt -0.03604429 -0.1833192 +vt -0.01278742 -0.2100966 +vt -0.01274677 -0.2040418 +vt -0.02970103 -0.1845212 +vt -0.01108318 -0.2101458 +vt 0.01144056 -0.192427 +vt 0.005354571 -0.191174 +vt -0.01106524 -0.204091 +vt 0.01053963 -0.194847 +vt -0.01083236 -0.1675584 +vt -0.01112392 -0.1736878 +vt 0.004456269 -0.1935813 +vt 0.1829666 0.0272215 +vt 0.1990337 0.0118236 +vt 0.2087338 0.02194523 +vt 0.1926667 0.03734313 +vt 0.189075 -0.0007368393 +vt 0.2053841 -0.0207997 +vt 0.2162625 -0.01195666 +vt 0.1999534 0.008106201 +vt -0.2005232 0.007218516 +vt -0.1859321 0.02217036 +vt -0.1957984 0.03213003 +vt -0.2103895 0.01717818 +vt -0.2097462 -0.03071929 +vt -0.1939425 -0.01100291 +vt -0.205003 -0.002388701 +vt -0.2208066 -0.02210508 +vt -0.01132462 -0.1724917 +vt -0.02918942 -0.1857605 +vt -0.0122186 -0.2052659 +vt 0.004238423 -0.1923977 +vt 0.1131939 -0.04012419 +vt 0.1402525 -0.06754681 +vt 0.1678041 -0.03708445 +vt 0.1683202 -0.02990554 +vt 0.1665592 -0.02353085 +vt 0.1616266 -0.01681215 +vt 0.1550207 -0.01161766 +vt 0.1482965 -0.0106668 +vt 0.1412144 -0.01297107 +vt -0.1130641 -0.04021516 +vt -0.1410825 -0.01305989 +vt -0.1481716 -0.01065331 +vt -0.1544959 -0.01199028 +vt -0.1612104 -0.01696244 +vt -0.1660353 -0.02390256 +vt -0.1681495 -0.03016691 +vt -0.1676741 -0.03717118 +vt -0.1401249 -0.06763569 +vt -0.02022685 -0.1519621 +vt -0.04222467 -0.1755338 +vt -0.03599107 -0.1736652 +vt -0.02033051 -0.1568816 +vt -0.1630837 -0.07767636 +vt -0.1701648 -0.0753686 +vt -0.1803217 -0.1059659 +vt -0.1732044 -0.1082884 +vt -0.1173636 -0.06883749 +vt -0.1488893 -0.0458452 +vt -0.1679581 -0.07184349 +vt -0.1364324 -0.09483574 +vt 0.1120363 -0.07097016 +vt 0.131898 -0.09636782 +vt 0.1643201 -0.07114998 +vt 0.1444584 -0.04575233 +vt -0.001651522 -0.163522 +vt -0.007944681 -0.1689863 +vt 0.01302786 -0.1934699 +vt 0.01941148 -0.1879304 +vt -0.04332349 -0.174437 +vt -0.05041799 -0.1789398 +vt -0.03289769 -0.2060037 +vt -0.02584512 -0.2015257 +vt 0.03752273 -0.1373253 +vt 0.03293777 -0.1420885 +vt 0.05573491 -0.1648834 +vt 0.06031803 -0.160121 +vt -0.1229215 -0.1500288 +vt -0.1296822 -0.1507896 +vt -0.1234503 -0.182419 +vt -0.1170107 -0.1817206 +vt 0.07822032 -0.09862205 +vt 0.07351707 -0.1040796 +vt 0.09691739 -0.1262597 +vt 0.1014964 -0.1209284 +vt -0.02960087 -0.1944192 +vt -0.0009693599 -0.2201948 +vt -0.0003773349 -0.2129952 +vt -0.0234523 -0.1922928 +vt 0.06344026 -0.211773 +vt 0.07858415 -0.1833091 +vt 0.07285781 -0.1844159 +vt 0.06207037 -0.2046785 +vt 0.06537776 -0.1680518 +vt 0.03306892 -0.1470688 +vt 0.03365321 -0.1519523 +vt 0.05960972 -0.1689023 +vt 0.1188131 -0.07230634 +vt 0.1323786 -0.0908244 +vt 0.1444989 -0.08194567 +vt 0.1309334 -0.0634276 +vt 0.1151107 -0.04309255 +vt 0.1365959 -0.06544095 +vt 0.1474269 -0.05502831 +vt 0.1259417 -0.03267993 +vt -0.1323777 -0.09082335 +vt -0.1188122 -0.07230527 +vt -0.1309325 -0.06342652 +vt -0.144498 -0.08194459 +vt -0.1365966 -0.06544159 +vt -0.1151114 -0.0430932 +vt -0.1259424 -0.03268059 +vt -0.1474276 -0.05502896 +vt 0.01025661 -0.1694277 +vt -0.003656739 -0.1876859 +vt 0.02100182 -0.2064747 +vt 0.03491517 -0.1882165 +vt 0.07436521 -0.0238867 +vt 0.1035885 -0.04727204 +vt 0.1225737 -0.02354736 +vt 0.0933504 -0.0001620275 +vt -0.07436521 -0.0238867 +vt -0.0933504 -0.0001620279 +vt -0.1225737 -0.02354737 +vt -0.1035885 -0.04727204 +vt 0.003879007 -0.1710783 +vt -0.002209637 -0.184787 +vt 0.03199654 -0.1999795 +vt 0.03808519 -0.1862708 +vt -0.003879011 -0.1710783 +vt -0.03808518 -0.1862708 +vt -0.03199654 -0.1999795 +vt 0.002209639 -0.184787 +vt -0.0994296 -0.1218319 +vt -0.1259976 -0.1070861 +vt -0.1332769 -0.1202014 +vt -0.1067089 -0.1349472 +vt 0.0994296 -0.1218319 +vt 0.1067089 -0.1349472 +vt 0.1332769 -0.1202014 +vt 0.1259976 -0.1070861 +vt -0.1048354 -0.09170412 +vt -0.1130703 -0.0829756 +vt -0.1270813 -0.09619425 +vt -0.1188465 -0.1049228 +vt 0.1048354 -0.09170412 +vt 0.1188465 -0.1049228 +vt 0.1270813 -0.09619425 +vt 0.1130703 -0.08297561 +vt 0.03921255 -0.07815777 +vt 0.04394154 -0.08918667 +vt 0.05497044 -0.0844577 +vt 0.05024146 -0.07342879 +vt -0.03921255 -0.07815777 +vt -0.05024145 -0.07342879 +vt -0.05497044 -0.08445769 +vt -0.04394153 -0.08918668 +vt -0.09629522 -0.1331117 +vt -0.1141519 -0.1403352 +vt -0.1096518 -0.1514595 +vt -0.09179512 -0.1442359 +vt 0.09629522 -0.1331117 +vt 0.09179512 -0.1442359 +vt 0.1096518 -0.1514595 +vt 0.1141519 -0.1403352 +vt -0.09980096 -0.04881899 +vt -0.1032418 -0.04159674 +vt -0.115843 -0.04760017 +vt -0.1124022 -0.05482242 +vt 0.09980096 -0.04881899 +vt 0.1124022 -0.05482242 +vt 0.115843 -0.04760017 +vt 0.1032418 -0.04159674 +vt 0.04508605 -0.1014554 +vt 0.04841029 -0.1087321 +vt 0.05568692 -0.1054078 +vt 0.05236268 -0.09813119 +vt -0.04508605 -0.1014554 +vt -0.05236267 -0.09813119 +vt -0.05568692 -0.1054078 +vt -0.04841029 -0.1087321 +vt -0.08494468 -0.1321031 +vt -0.09858361 -0.1350716 +vt -0.09688228 -0.1428886 +vt -0.08324336 -0.1399201 +vt 0.08494468 -0.1321032 +vt 0.08324336 -0.1399201 +vt 0.09688228 -0.1428886 +vt 0.09858362 -0.1350716 +vt -0.05486394 0.02203647 +vt -0.05129822 0.03137891 +vt -0.06625007 0.03533494 +vt -0.06927398 0.02580332 +vt 0.09321599 -0.06922247 +vt 0.1020124 -0.07635929 +vt 0.1083032 -0.06858742 +vt 0.09936856 -0.06134068 +vt 0.06067083 -0.1383661 +vt 0.06352862 -0.1458939 +vt 0.07272231 -0.1419635 +vt 0.06983222 -0.134361 +vt -0.04719128 -0.1182958 +vt -0.05658485 -0.1148674 +vt -0.06152073 -0.1262216 +vt -0.05206089 -0.1294627 +vt -0.07340517 -0.1320676 +vt -0.08820237 -0.1303945 +vt -0.0878678 -0.1425691 +vt -0.07704101 -0.139248 +vt 0.07259412 -0.1323442 +vt 0.07656556 -0.1394386 +vt 0.08746792 -0.1431035 +vt 0.08797434 -0.1307359 +vt 0.06085981 -0.06001091 +vt 0.0682253 -0.06437463 +vt 0.07226188 -0.05784288 +vt 0.06486614 -0.05346056 +vt -0.06040348 -0.05980244 +vt -0.06441205 -0.05325346 +vt -0.0720341 -0.05770128 +vt -0.06799529 -0.06423165 +vt -0.001657661 -0.1633703 +vt -0.01489867 -0.1842464 +vt -0.007376952 -0.1887935 +vt 0.005670683 -0.167796 +vt 0.001557027 -0.1634515 +vt -0.005811661 -0.167879 +vt 0.007237233 -0.1888758 +vt 0.01479929 -0.1843268 +vt -0.08601945 -0.1107135 +vt -0.09137823 -0.1052143 +vt -0.1090833 -0.1224674 +vt -0.1037245 -0.1279666 +vt 0.08640107 -0.1111742 +vt 0.1040757 -0.1284584 +vt 0.1094442 -0.1229687 +vt 0.09176956 -0.1056844 +vt 0.05512984 -0.05838183 +vt 0.05954273 -0.06073264 +vt 0.06646659 -0.04773536 +vt 0.0620537 -0.04538454 +vt -0.05512984 -0.05838183 +vt -0.0620537 -0.04538454 +vt -0.06646659 -0.04773536 +vt -0.05954273 -0.06073264 +vt -0.005749757 -0.1623108 +vt -0.00824763 -0.1666421 +vt -0.003916274 -0.16914 +vt -0.001418406 -0.1648087 +vt 0.005749758 -0.1623108 +vt 0.001418402 -0.1648087 +vt 0.003916274 -0.16914 +vt 0.008247625 -0.1666421 +vt -0.0880179 -0.1161652 +vt -0.09801044 -0.1053477 +vt -0.1016832 -0.1087404 +vt -0.0916907 -0.1195579 +vt 0.0880179 -0.1161652 +vt 0.0916907 -0.1195579 +vt 0.1016832 -0.1087404 +vt 0.09801044 -0.1053477 +vt -0.00132609 -0.1673055 +vt -0.008427175 -0.1632906 +vt -0.01284721 -0.1707318 +vt -0.005669386 -0.1748498 +vt 0.0007174831 -0.1673137 +vt 0.00643552 -0.1778896 +vt 0.01364373 -0.1738812 +vt 0.007779934 -0.1633854 +vt 0.06674538 -0.04641612 +vt 0.06977902 -0.04084945 +vt 0.06281818 -0.03674379 +vt 0.0597179 -0.04227361 +vt -0.10139 -0.03089871 +vt -0.09682857 -0.02399416 +vt -0.102801 -0.02019385 +vt -0.1072975 -0.02710813 +vt 0.09608694 -0.1112465 +vt 0.1022235 -0.1174201 +vt 0.1089841 -0.1155361 +vt 0.1006623 -0.1068596 +vt -0.09612919 -0.1097502 +vt -0.1007156 -0.1053749 +vt -0.1090154 -0.1140724 +vt -0.1021859 -0.115932 +vt 0.06691866 -0.06412007 +vt 0.07461347 -0.06787273 +vt 0.07810761 -0.06103542 +vt 0.07038115 -0.05726668 +vt -0.0664431 -0.06395078 +vt -0.06990803 -0.05709863 +vt -0.07786531 -0.06091443 +vt -0.07436873 -0.06775049 +vt 0.01300948 -0.1660451 +vt 0.001100256 -0.1877086 +vt 0.008891681 -0.1917763 +vt 0.02060031 -0.1700037 +vt -0.0131141 -0.1661205 +vt -0.02074529 -0.1700785 +vt -0.009035185 -0.1918503 +vt -0.001203414 -0.1877832 +vt -0.08379148 -0.1144501 +vt -0.08901543 -0.1088227 +vt -0.1071334 -0.1256416 +vt -0.1019094 -0.1312691 +vt 0.0842849 -0.114842 +vt 0.1023839 -0.1316814 +vt 0.1076142 -0.1260598 +vt 0.08951521 -0.1092204 +vt 0.01301451 -0.1703112 +vt 0.005693994 -0.1667119 +vt 0.001709817 -0.1743953 +vt 0.00911288 -0.1780931 +vt -0.0135498 -0.1703739 +vt -0.008447004 -0.18126 +vt -0.001020995 -0.1776711 +vt -0.006273913 -0.1668567 +vt 0.07225189 -0.04984215 +vt 0.07481379 -0.04404324 +vt 0.06753665 -0.04052854 +vt 0.06490529 -0.04629627 +vt -0.1036001 -0.02564044 +vt -0.09817627 -0.01939054 +vt -0.1036014 -0.01484299 +vt -0.1089621 -0.02111103 +vt 0.0947545 -0.1143493 +vt 0.1010709 -0.1203388 +vt 0.1077728 -0.1182557 +vt 0.09919816 -0.109829 +vt -0.09476054 -0.1127404 +vt -0.09921505 -0.1082308 +vt -0.1077694 -0.1166781 +vt -0.1009981 -0.1187397 +vt 0.06154757 -0.06298044 +vt 0.06613228 -0.06497554 +vt 0.07200846 -0.05147222 +vt 0.06742375 -0.04947711 +vt -0.06154757 -0.06298043 +vt -0.06742375 -0.04947711 +vt -0.07200846 -0.05147222 +vt -0.06613228 -0.06497554 +vt 0.008744177 -0.1652048 +vt 0.006512361 -0.1696791 +vt 0.01098663 -0.1719109 +vt 0.01321844 -0.1674366 +vt -0.008744176 -0.1652048 +vt -0.01321844 -0.1674366 +vt -0.01098662 -0.1719109 +vt -0.006512365 -0.169679 +vt -0.08663905 -0.1196301 +vt -0.09632017 -0.108533 +vt -0.1000879 -0.11182 +vt -0.09040678 -0.1229171 +vt 0.08663905 -0.1196301 +vt 0.09040678 -0.1229171 +vt 0.1000879 -0.11182 +vt 0.09632017 -0.108533 +vt 0.0774125 -0.07381919 +vt 0.08462933 -0.07771803 +vt 0.08824655 -0.07131181 +vt 0.08100007 -0.0673963 +vt -0.07696332 -0.07364224 +vt -0.08055299 -0.06722052 +vt -0.08801867 -0.07119008 +vt -0.08439935 -0.07759513 +vt 0.01808144 -0.1708146 +vt 0.005472108 -0.1908654 +vt 0.01269566 -0.1951943 +vt 0.02511927 -0.1750278 +vt -0.01817693 -0.1708936 +vt -0.02525339 -0.1751085 +vt -0.01282846 -0.1952742 +vt -0.005566273 -0.1909436 +vt -0.08289376 -0.1098142 +vt -0.08780111 -0.1043331 +vt -0.1054478 -0.1201327 +vt -0.1005404 -0.1256137 +vt 0.08349993 -0.110274 +vt 0.1011213 -0.1261019 +vt 0.1060374 -0.1206286 +vt 0.08841605 -0.1048008 +vt 0.01739218 -0.1756593 +vt 0.01059006 -0.1718096 +vt 0.006352021 -0.1789375 +vt 0.01322763 -0.182886 +vt -0.01808763 -0.1756704 +vt -0.0126092 -0.1858036 +vt -0.005702717 -0.1819631 +vt -0.0113208 -0.1719067 +vt 0.08319934 -0.05967438 +vt 0.08590595 -0.05423655 +vt 0.0790951 -0.05055312 +vt 0.07632338 -0.05595805 +vt -0.1107933 -0.04218378 +vt -0.1058463 -0.03598759 +vt -0.1112185 -0.03184714 +vt -0.1161043 -0.0380582 +vt 0.09453675 -0.1109572 +vt 0.1006658 -0.1166135 +vt 0.1070595 -0.1145309 +vt 0.09873535 -0.106569 +vt -0.09450903 -0.109063 +vt -0.09871747 -0.1046842 +vt -0.1070237 -0.1126648 +vt -0.1005635 -0.1147287 +vt 0.07252555 -0.07167362 +vt 0.07682912 -0.07377829 +vt 0.08302799 -0.061103 +vt 0.07872441 -0.05899834 +vt -0.07252555 -0.07167362 +vt -0.07872441 -0.05899833 +vt -0.08302798 -0.061103 +vt -0.07682912 -0.07377829 +vt 0.01318397 -0.170493 +vt 0.01078936 -0.1746422 +vt 0.0149386 -0.1770369 +vt 0.01733321 -0.1728876 +vt -0.01318397 -0.170493 +vt -0.01733321 -0.1728876 +vt -0.0149386 -0.1770369 +vt -0.01078936 -0.1746422 +vt -0.08660285 -0.116018 +vt -0.09572483 -0.1052533 +vt -0.0993797 -0.1083504 +vt -0.09025772 -0.1191151 +vt 0.08660285 -0.116018 +vt 0.09025772 -0.1191151 +vt 0.0993797 -0.1083504 +vt 0.09572483 -0.1052533 +vt 0.08624276 -0.07856464 +vt 0.09270554 -0.08240517 +vt 0.09625784 -0.07667415 +vt 0.08976851 -0.07281724 +vt -0.08584032 -0.07839381 +vt -0.08936793 -0.07264754 +vt -0.09605598 -0.0765621 +vt -0.09250184 -0.08229199 +vt 0.02236528 -0.1766506 +vt 0.01022716 -0.1946485 +vt 0.01671739 -0.1988256 +vt 0.02868876 -0.1807163 +vt -0.02244972 -0.1767263 +vt -0.02880857 -0.1807946 +vt -0.01683609 -0.1989032 +vt -0.0103105 -0.1947235 +vt -0.08407193 -0.1065521 +vt -0.08862962 -0.1015831 +vt -0.1046277 -0.1162569 +vt -0.10007 -0.1212259 +vt 0.08476005 -0.1071056 +vt 0.1007297 -0.1218105 +vt 0.105297 -0.1168503 +vt 0.08932737 -0.1021455 +vt 0.02091123 -0.1814993 +vt 0.01478298 -0.1777901 +vt 0.01070923 -0.1842063 +vt 0.01690216 -0.1880081 +vt -0.02169707 -0.1814277 +vt -0.01640744 -0.1905645 +vt -0.01018289 -0.1868617 +vt -0.01559842 -0.1777989 +vt 0.09166268 -0.06450782 +vt 0.09434979 -0.05963223 +vt 0.0882544 -0.05599794 +vt 0.08550893 -0.0608409 +vt -0.1166681 -0.05543676 +vt -0.1124996 -0.0494845 +vt -0.1176518 -0.04600631 +vt -0.1217635 -0.05196866 +vt 0.09596369 -0.1093962 +vt 0.1015031 -0.1146633 +vt 0.1073908 -0.1128421 +vt 0.09987121 -0.1054321 +vt -0.09593533 -0.1073165 +vt -0.09985197 -0.1033614 +vt -0.1073545 -0.1107886 +vt -0.1014061 -0.1125915 +vt 0.08144 -0.07535711 +vt 0.08530394 -0.0774423 +vt 0.09144545 -0.06606188 +vt 0.08758152 -0.06397669 +vt -0.08144 -0.0753571 +vt -0.08758152 -0.06397668 +vt -0.09144545 -0.06606188 +vt -0.08530393 -0.0774423 +vt 0.01698631 -0.1767832 +vt 0.01467619 -0.180517 +vt 0.01841001 -0.1828272 +vt 0.02072013 -0.1790933 +vt -0.0169863 -0.1767832 +vt -0.02072012 -0.1790933 +vt -0.01841001 -0.1828272 +vt -0.01467619 -0.180517 +vt -0.08839071 -0.1137746 +vt -0.09689115 -0.1040291 +vt -0.1002 -0.1069152 +vt -0.09169955 -0.1166607 +vt 0.08839071 -0.1137746 +vt 0.09169955 -0.1166607 +vt 0.1002 -0.1069152 +vt 0.09689115 -0.1040291 +vt 0.1088701 -0.03971246 +vt 0.1271375 -0.05672397 +vt 0.1332003 -0.05021361 +vt 0.1149329 -0.03320208 +vt -0.1088701 -0.03971242 +vt -0.1149329 -0.03320205 +vt -0.1332003 -0.05021357 +vt -0.1271375 -0.05672394 +vt 0.01133824 -0.1719655 +vt -0.001500723 -0.1906491 +vt 0.01907192 -0.2047862 +vt 0.03191087 -0.1861025 +vt -0.0113382 -0.1719655 +vt -0.03191084 -0.1861026 +vt -0.01907188 -0.2047862 +vt 0.001500761 -0.1906491 +vt -0.1166552 -0.08207594 +vt -0.1238135 -0.07679377 +vt -0.1372738 -0.09503485 +vt -0.1301155 -0.100317 +vt 0.1166553 -0.08207595 +vt 0.1301155 -0.100317 +vt 0.1372738 -0.09503488 +vt 0.1238136 -0.07679379 +vt 0.01661049 0.1564431 +vt 0.01617812 0.1663526 +vt 0.0143572 0.1663666 +vt 0.01478929 0.1564633 +vt -0.01661624 0.1564616 +vt -0.01479504 0.1564817 +vt -0.01435151 0.1662941 +vt -0.01617242 0.1662801 +vt 0.182072 -0.01729192 +vt 0.1865288 -0.02625911 +vt 0.1953417 -0.02190796 +vt 0.1909661 -0.01290095 +vt -0.1821651 -0.01725226 +vt -0.1910488 -0.01285427 +vt -0.1954244 -0.02186127 +vt -0.1866219 -0.02621945 +vt 0.01434717 -0.09661008 +vt 0.01252585 -0.09660553 +vt 0.01247623 -0.1066191 +vt 0.01429754 -0.1066236 +vt -0.01454168 -0.09509598 +vt -0.01449843 -0.1051095 +vt -0.0126775 -0.1050972 +vt -0.01272075 -0.09508365 +vt 0.004794934 0.1698831 +vt 0.003719143 0.1797435 +vt 0.001901173 0.1796391 +vt 0.002976274 0.1697848 +vt -0.00480009 0.1699019 +vt -0.002981439 0.1698036 +vt -0.001900872 0.1795663 +vt -0.003718838 0.1796707 +vt 0.1936405 -0.01226687 +vt 0.1980794 -0.02124296 +vt 0.206901 -0.01690945 +vt 0.2025433 -0.007893705 +vt -0.1937337 -0.01222739 +vt -0.2026261 -0.007847177 +vt -0.2069838 -0.01686291 +vt -0.1981725 -0.02120348 +vt 0.01653906 -0.09643538 +vt 0.01471855 -0.0964895 +vt 0.01499147 -0.1064995 +vt 0.01681198 -0.1064453 +vt -0.01671142 -0.09480257 +vt -0.01698923 -0.1048123 +vt -0.01516885 -0.1048584 +vt -0.01489103 -0.09484862 +vt -0.02101755 0.176557 +vt -0.02320629 0.1839343 +vt -0.02501429 0.1837175 +vt -0.022811 0.1762398 +vt 0.01997156 0.1745505 +vt 0.02176621 0.1742402 +vt 0.02391058 0.1806234 +vt 0.02210172 0.1808328 +vt 0.2025822 -0.01027242 +vt 0.20691 -0.01930131 +vt 0.212742 -0.01614383 +vt 0.2093993 -0.006705851 +vt -0.2028868 -0.01011152 +vt -0.2097809 -0.006475607 +vt -0.2131259 -0.01591279 +vt -0.2072173 -0.01913908 +vt 0.01909625 -0.09594265 +vt 0.01728408 -0.09612508 +vt 0.01826256 -0.1060908 +vt 0.02007471 -0.1059084 +vt 0.1861333 -0.0133315 +vt 0.1894325 -0.02278437 +vt 0.1931458 -0.02252771 +vt 0.190902 -0.01277027 +vt -0.003914942 0.2134782 +vt -0.002096707 0.2134998 +vt -0.004437213 0.2176456 +vt -0.005931788 0.2166099 +vt -0.1930364 -0.0208964 +vt -0.1896862 -0.01146105 +vt -0.1954815 -0.01059294 +vt -0.1977635 -0.02034193 +vt -0.017315 0.2091478 +vt -0.01550109 0.2092897 +vt -0.0136141 0.2137079 +vt -0.01519315 0.2146118 +vt 0.1219807 -0.03981311 +vt 0.1231209 -0.04976161 +vt 0.1249295 -0.04954981 +vt 0.1237893 -0.03960133 +vt -0.1670431 0.05534277 +vt -0.175815 0.05995962 +vt -0.1765794 0.05830685 +vt -0.167802 0.0536871 +vt 0.1765127 0.05828006 +vt 0.1757483 0.05993284 +vt 0.1670635 0.05534453 +vt 0.1678224 0.05368887 +vt 0.06379746 0.1827265 +vt 0.05585214 0.1888212 +vt 0.04982047 0.1810611 +vt 0.05771049 0.1748949 +vt -0.04987807 0.1811442 +vt -0.05591456 0.1888928 +vt -0.06385987 0.1827981 +vt -0.0577681 0.1749781 +vt 0.07492618 0.00722883 +vt 0.07425465 0.008921821 +vt 0.06495559 0.005206833 +vt 0.06562713 0.003513832 +vt -0.06345497 0.004310712 +vt -0.07276147 0.008006862 +vt -0.07343777 0.006316131 +vt -0.06413127 0.002619983 +vt -0.1752658 0.05932925 +vt -0.1820005 0.06294115 +vt -0.1826183 0.06163195 +vt -0.1760204 0.05767205 +vt 0.1803322 0.06000022 +vt 0.1798102 0.06144335 +vt 0.1740296 0.05803777 +vt 0.1747758 0.05637661 +vt 0.0414382 0.1957293 +vt 0.03229136 0.1998017 +vt 0.02868636 0.1942352 +vt 0.03734815 0.1892129 +vt -0.03659897 0.1948457 +vt -0.04049023 0.2003089 +vt -0.04942743 0.1957953 +vt -0.04507483 0.1895159 +vt 0.07556698 0.004892831 +vt 0.07499978 0.006623575 +vt 0.06549178 0.003481685 +vt 0.06605898 0.001750937 +vt 0.1914041 0.04511448 +vt 0.1898229 0.0550022 +vt 0.1866065 0.0542925 +vt 0.186807 0.04428117 +vt 0.1930766 0.08142777 +vt 0.1933736 0.08297886 +vt 0.1891302 0.08272681 +vt 0.1897838 0.08133985 +vt -0.1869698 0.07010498 +vt -0.1891965 0.06034223 +vt -0.1837068 0.05906727 +vt -0.1828532 0.06904427 +vt -0.1932418 0.08153754 +vt -0.1930081 0.08013418 +vt -0.1883438 0.07986283 +vt -0.1876219 0.08111666 +vt 0.01413424 0.1156579 +vt 0.004454239 0.1182209 +vt 0.003983653 0.1167119 +vt 0.01370266 0.1143009 +vt -0.156022 0.04855155 +vt -0.1648395 0.05308063 +vt -0.1655874 0.05142031 +vt -0.1567643 0.04688839 +vt 0.1655205 0.05139413 +vt 0.1647726 0.05305444 +vt 0.1560425 0.04855304 +vt 0.1567848 0.04688989 +vt 0.06394724 0.1698301 +vt 0.05627825 0.1762689 +vt 0.04991043 0.1687822 +vt 0.05752103 0.1622744 +vt -0.04997175 0.1688628 +vt -0.05634386 0.1763377 +vt -0.06401284 0.1698988 +vt -0.05758234 0.1623549 +vt 0.07428157 0.008823806 +vt 0.07357064 0.01050064 +vt 0.06436099 0.006569232 +vt 0.06507193 0.004892396 +vt -0.06296887 0.005736119 +vt -0.07218573 0.009650445 +vt -0.07290167 0.00797612 +vt -0.0636848 0.004061789 +vt -0.05307295 -0.07303499 +vt -0.08644287 -0.02677504 +vt -0.1177524 -0.0490111 +vt -0.08440728 -0.09523602 +vt 0.06027732 -0.07791437 +vt 0.05574046 -0.08887137 +vt 0.09100857 -0.1040793 +vt 0.09556573 -0.09309009 +vt -0.05538667 -0.07926802 +vt -0.08950299 -0.09689849 +vt -0.06913272 -0.1362749 +vt -0.0350164 -0.1186444 +vt -0.009397691 -0.04882556 +vt -0.0481882 -0.01944779 +vt -0.07488162 -0.05484361 +vt -0.02857946 -0.08815449 +vt -0.008889562 -0.06067475 +vt 0.008636756 -0.04914539 +vt 0.008445468 -0.06104142 +vt 0.02879175 -0.08817758 +vt 0.07485339 -0.05460777 +vt 0.04815944 -0.01921235 +vt 0.08927529 -0.08912275 +vt 0.1172595 -0.04819677 +vt 0.08555922 -0.02652082 +vt 0.05809366 -0.06668828 +vt 0.04896483 -0.09155732 +vt 0.03181724 -0.1206906 +vt 0.04035503 -0.1179579 +vt 0.05416016 -0.09462661 +vt 0.03179184 -0.1150668 +vt 0.06479514 -0.1347008 +vt 0.06393463 -0.1268517 +vt 0.04033059 -0.1123274 +vt 0.07633315 -0.1266658 +vt 0.08939256 -0.09536587 +vt 0.0845898 -0.09335609 +vt 0.07423215 -0.1190624 +vt 0.08537853 -0.09552076 +vt 0.05394466 -0.07345144 +vt 0.05878208 -0.07707153 +vt 0.08088107 -0.09286671 +vt 0.01070069 -0.08138372 +vt -0.006652581 -0.1022057 +vt 0.001582962 -0.1047977 +vt 0.01445347 -0.08967422 +vt -0.04254059 -0.08390586 +vt -0.05259288 -0.1097341 +vt -0.04383736 -0.1088462 +vt -0.03644136 -0.09004392 +vt 0.06045265 -0.06711133 +vt 0.05097557 -0.04106437 +vt 0.043928 -0.04716175 +vt 0.05166722 -0.06660375 +vt 0.08610949 -0.0950127 +vt 0.06177735 -0.08294015 +vt 0.0604044 -0.09195179 +vt 0.07866149 -0.1006096 +vt 0.05685082 -0.09558233 +vt 0.04811472 -0.1134253 +vt 0.06573392 -0.1233136 +vt 0.07496641 -0.1045348 +vt 0.06826615 -0.07423224 +vt 0.08047894 -0.08380537 +vt 0.1010118 -0.05693556 +vt 0.08879901 -0.04736242 +vt -0.07573135 -0.06438605 +vt -0.08781047 -0.04765669 +vt -0.1003731 -0.05676595 +vt -0.08829395 -0.07349531 +vt 0.02231997 -0.114019 +vt 0.002734417 -0.1311782 +vt 0.01314567 -0.1426848 +vt 0.03273122 -0.1255256 +vt -0.04760448 -0.1204738 +vt -0.0612607 -0.127843 +vt -0.05142496 -0.1459823 +vt -0.03776873 -0.1386131 +vt -0.03125849 -0.07753163 +vt -0.05935875 -0.05871823 +vt -0.07175897 -0.07521052 +vt -0.05526714 -0.08761135 +vt 0.03108145 -0.07750659 +vt 0.05509011 -0.0875863 +vt 0.07158194 -0.07518546 +vt 0.05918172 -0.05869317 +vt -0.0463281 -0.1831336 +vt -0.0001477562 -0.2222165 +vt 0.02238524 -0.1955885 +vt 0.03758346 -0.1776282 +vt 0.08769254 -0.1184125 +vt 0.0415122 -0.0793296 +vt 0.03929257 -0.1894409 +vt -0.04847998 -0.08558092 +vt -0.08003111 -0.1119543 +vt 0.007745883 -0.2158043 +vt 0.05114321 -0.08058701 +vt 0.02423023 -0.1282721 +vt 0.02889649 -0.1406458 +vt 0.06444672 -0.1612897 +vt 0.07712369 -0.1547813 +vt 0.1038296 -0.1103201 +vt -0.05064661 -0.07948452 +vt -0.1033339 -0.1092161 +vt -0.07584352 -0.1544728 +vt -0.0633025 -0.160097 +vt -0.02723347 -0.1403529 +vt -0.02372139 -0.1271944 +vt 0.1169999 -0.1306398 +vt 0.003698813 -0.05544639 +vt -0.02659293 -0.101094 +vt 0.08672341 -0.1762643 +vt -0.1183364 -0.1283122 +vt -0.09005012 -0.1717895 +vt -0.05875044 -0.1510214 +vt -0.08942533 -0.1087947 +vt -0.0376205 -0.1269699 +vt -0.04423352 -0.1388634 +vt 0.07225697 -0.209011 +vt 0.07866546 -0.1974561 +vt -0.01042203 -0.03451522 +vt -0.02186882 -0.02687576 +vt -0.06783535 -0.08692277 +vt -0.08169296 -0.1050252 +vt -0.1045257 -0.1348521 +vt -0.09267351 -0.1427947 +vt -0.03987464 -0.1380928 +vt 0.02310445 -0.09623303 +vt -0.005821249 -0.05187573 +vt -0.07007952 -0.0953301 +vt -0.02558678 -0.189251 +vt -0.03975102 -0.1713874 +vt -0.04781385 -0.1832449 +vt -0.03955916 -0.1937247 +vt -0.07857469 -0.1770415 +vt -0.111096 -0.1360129 +vt -0.1229876 -0.1441147 +vt -0.09042694 -0.1851121 +vt 0.04253835 -0.1750079 +vt 0.02800192 -0.1935079 +vt 0.04259175 -0.1976166 +vt 0.05063349 -0.1869042 +vt 0.06991269 -0.05868582 +vt 0.05490084 -0.1086723 +vt 0.06914879 -0.1121642 +vt 0.08462636 -0.06232002 +vt -0.05601139 -0.1482863 +vt -0.04490234 -0.140901 +vt -0.07541986 -0.098361 +vt -0.08648266 -0.1059126 +vt 0.08802859 -0.05115702 +vt 0.08406539 -0.04688634 +vt 0.05537255 -0.07351337 +vt 0.05933576 -0.07778405 +vt 0.1095926 -0.07092936 +vt 0.1055507 -0.06673305 +vt 0.07735758 -0.09388863 +vt 0.08139946 -0.09808494 +vt 0.1176302 -0.04812828 +vt 0.1129034 -0.04472194 +vt 0.09001773 -0.07647918 +vt 0.09474453 -0.07988553 +vt 0.09193373 0.01107011 +vt 0.08623179 0.01226745 +vt 0.07818743 -0.02604138 +vt 0.08388937 -0.02723872 +vt 0.01741857 0.03778093 +vt 0.01193134 0.03582234 +vt 0.02509029 -0.001043916 +vt 0.03057752 0.0009146795 +vt -0.04707496 -0.0003900972 +vt -0.05156211 -0.004106449 +vt -0.0265936 -0.03425362 +vt -0.02210645 -0.03053727 +vt -0.08406541 -0.04688635 +vt -0.08802862 -0.05115704 +vt -0.05933578 -0.07778408 +vt -0.05537256 -0.07351339 +vt -0.1055507 -0.06673305 +vt -0.1095926 -0.07092936 +vt -0.08139946 -0.09808494 +vt -0.07735758 -0.09388863 +vt -0.1129035 -0.04472195 +vt -0.1176303 -0.04812829 +vt -0.09474453 -0.07988553 +vt -0.09001774 -0.07647918 +vt -0.08623178 0.01226746 +vt -0.09193373 0.01107012 +vt -0.08388937 -0.02723872 +vt -0.07818743 -0.02604138 +vt -0.01193134 0.03582234 +vt -0.01741857 0.03778093 +vt -0.03057752 0.0009146814 +vt -0.02509029 -0.001043917 +vt 0.05156212 -0.004106463 +vt 0.04707498 -0.0003901153 +vt 0.02210646 -0.03053728 +vt 0.02659361 -0.03425363 +vt -0.0714394 -0.1182712 +vt -0.06592963 -0.1201655 +vt -0.06021089 -0.1190511 +vt -0.05581553 -0.1152266 +vt -0.05392126 -0.1097169 +vt -0.05503566 -0.1039981 +vt -0.05886013 -0.09960275 +vt -0.06436989 -0.09770849 +vt -0.07008862 -0.09882288 +vt -0.07448399 -0.1026473 +vt -0.07637826 -0.1081571 +vt -0.07526386 -0.1138759 +vt 0.07526385 -0.1138758 +vt 0.07637826 -0.1081571 +vt 0.074484 -0.1026473 +vt 0.07008862 -0.09882288 +vt 0.0643699 -0.09770849 +vt 0.05886013 -0.09960274 +vt 0.05503566 -0.1039981 +vt 0.05392126 -0.1097168 +vt 0.05581553 -0.1152266 +vt 0.0602109 -0.1190511 +vt 0.06592963 -0.1201655 +vt 0.0714394 -0.1182712 +vt -0.02557305 -0.1969329 +vt -0.01135903 -0.2085439 +vt 0.03105628 -0.1525054 +vt 0.01684227 -0.1408945 +vt -0.006093261 -0.1625355 +vt -0.0189281 -0.1454324 +vt -0.03363957 -0.1564062 +vt -0.02080473 -0.1735094 +vt 0.08561338 -0.08856906 +vt 0.0199532 -0.1001139 +vt 0.02386465 -0.1180458 +vt 0.0895248 -0.106501 +vt -0.04085049 -0.1341521 +vt -0.0567715 -0.1432831 +vt -0.03623057 -0.1789998 +vt -0.02030957 -0.1698689 +vt 0.08366168 -0.180291 +vt 0.02593389 -0.1402103 +vt 0.0005267098 -0.17264 +vt 0.01723916 -0.1859644 +vt -0.08424108 -0.1803566 +vt -0.0178186 -0.18603 +vt -0.001106144 -0.1727056 +vt -0.02651333 -0.1402759 +vt -0.02827152 -0.1090557 +vt -0.03863245 -0.09047836 +vt -0.04452548 -0.09375354 +vt -0.03448649 -0.1130604 +vt 0.01871731 -0.07585429 +vt -0.004318058 -0.08802629 +vt -0.0008255602 -0.09286582 +vt 0.02177227 -0.08186557 +vt 0.01465548 -0.09631541 +vt -0.008853031 -0.121629 +vt -0.00476849 -0.125106 +vt 0.01960757 -0.09964006 +vt 0.003582795 -0.1308317 +vt -0.01768557 -0.1619261 +vt -0.01368462 -0.1651955 +vt 0.008154997 -0.1336331 +vt -0.0007544044 -0.1663775 +vt -0.01395551 -0.1924349 +vt -0.009097538 -0.1948878 +vt 0.003567738 -0.1691945 +vt 0.04051586 -0.09663363 +vt 0.02995467 -0.1149917 +vt 0.03534127 -0.1178659 +vt 0.04555144 -0.09873279 +vt 0.07979389 -0.1319241 +vt 0.05537332 -0.1187078 +vt 0.05296601 -0.125127 +vt 0.07753495 -0.1375717 +vt 0.0377381 -0.1536406 +vt 0.00812942 -0.1280017 +vt 0.002504498 -0.1321153 +vt 0.03347978 -0.1590302 +vt 0.001179771 -0.1375432 +vt -0.01764737 -0.1097264 +vt -0.0238122 -0.1142927 +vt -0.004996032 -0.140782 +vt -0.02010812 -0.1216815 +vt -0.03420674 -0.09859063 +vt -0.04037612 -0.1026666 +vt -0.02674842 -0.1255265 +vt -0.001417455 -0.1338924 +vt 0.02519425 -0.1543883 +vt 0.03907076 -0.1328201 +vt 0.01120652 -0.09252582 +vt -0.0004933941 -0.07417805 +vt -0.02503808 -0.07958331 +vt -0.05635012 -0.09577625 +vt -0.08531647 -0.120959 +vt -0.1027791 -0.1436558 +vt -0.09113514 -0.1619518 +vt -0.0642855 -0.1560638 +vt -0.02894124 -0.1353113 +vt -0.0042967 -0.1141536 +vt 0.02508768 -0.1543091 +vt 0.06042518 -0.1712024 +vt 0.03896234 -0.1327398 +vt 0.06439759 -0.168219 +vt 0.09112851 -0.1757537 +vt 0.04405569 -0.129152 +vt 0.09044348 -0.1732353 +vt 0.1031334 -0.1562787 +vt 0.04529887 -0.1247633 +vt 0.1006562 -0.1488443 +vt 0.08771574 -0.1226537 +vt 0.04534409 -0.1130865 +vt 0.08724829 -0.1138023 +vt 0.06448554 -0.08378349 +vt 0.04514647 -0.10311 +vt 0.06349452 -0.07378954 +vt 0.03633188 -0.05244313 +vt 0.04546725 -0.09434509 +vt 0.03129179 -0.05166231 +vt 0.006399314 -0.04397102 +vt 0.04507615 -0.09227292 +vt -0.005724734 -0.06539402 +vt -0.01605622 -0.08398826 +vt 0.04117249 -0.1057626 +vt -0.01913038 -0.1037728 +vt -0.001564639 -0.1243497 +vt 0.03892265 -0.1232431 +vt -0.06200135 -0.1145458 +vt -0.06180949 -0.1184374 +vt -0.05991609 -0.1178372 +vt -0.05801078 -0.1173946 +vt -0.05960078 -0.1209518 +vt -0.05764069 -0.1212734 +vt -0.05373729 -0.1194584 +vt -0.05676955 -0.1219053 +vt -0.0551694 -0.1230821 +vt -0.05036639 -0.1203146 +vt -0.05418644 -0.1210821 +vt -0.05331178 -0.1228654 +vt -0.04918632 -0.1190523 +vt -0.05290403 -0.117886 +vt -0.05299591 -0.1198701 +vt -0.05110443 -0.115009 +vt -0.05369421 -0.1120978 +vt -0.05479273 -0.1137526 +vt -0.0558259 -0.1087158 +vt -0.05637651 -0.1048585 +vt -0.05820636 -0.1056312 +vt -0.06126735 -0.102606 +vt -0.05950166 -0.0991326 +vt -0.06144322 -0.09871354 +vt -0.06507216 -0.09995204 +vt -0.06165922 -0.09807225 +vt -0.0630293 -0.09663413 +vt -0.06666182 -0.1017506 +vt -0.06277035 -0.1019466 +vt -0.06317939 -0.1000029 +vt -0.06651686 -0.1061333 +vt -0.06322068 -0.1082111 +vt -0.06262477 -0.1063163 +vt -0.06493534 -0.1107782 +vt -0.06299048 -0.1141545 +vt -0.06157889 -0.1127571 +vt -0.06351076 -0.1160637 +vt -0.06542192 -0.1166048 +vt -0.0652279 -0.1204963 +vt -0.06163608 -0.1194795 +vt -0.0550738 -0.1179428 +vt -0.05703876 -0.1176525 +vt -0.05845763 -0.1212813 +vt -0.05476472 -0.1218268 +vt -0.04360174 -0.1228386 +vt -0.04528322 -0.1217813 +vt -0.04804385 -0.124531 +vt -0.04488368 -0.1265181 +vt -0.03255381 -0.1292627 +vt -0.03369918 -0.1276399 +vt -0.03730514 -0.129116 +vt -0.03515255 -0.1321658 +vt -0.02530071 -0.1309772 +vt -0.02573801 -0.1290396 +vt -0.02963436 -0.1290237 +vt -0.02881251 -0.1326651 +vt -0.02585547 -0.1224086 +vt -0.02540007 -0.1204753 +vt -0.02889593 -0.1187546 +vt -0.0297518 -0.1223881 +vt -0.04225869 -0.0999619 +vt -0.04069042 -0.09874295 +vt -0.04233118 -0.09520887 +vt -0.04527856 -0.09749975 +vt -0.06660608 -0.0636292 +vt -0.06475298 -0.06434426 +vt -0.06257118 -0.06111602 +vt -0.06605386 -0.05977215 +vt -0.06850202 -0.05808163 +vt -0.06772147 -0.05990811 +vt -0.06388651 -0.05921899 +vt -0.06535345 -0.05578633 +vt -0.06744811 -0.07886904 +vt -0.06763445 -0.08084655 +vt -0.06393589 -0.0820723 +vt -0.06358568 -0.07835579 +vt -0.06783158 -0.09997907 +vt -0.06877606 -0.1017264 +vt -0.06585085 -0.1043003 +vt -0.06407581 -0.1010164 +vt -0.06735285 -0.1121406 +vt -0.06889157 -0.1133967 +vt -0.06716692 -0.1168906 +vt -0.06427507 -0.11453 +vt -0.06429686 -0.1085298 +vt -0.06788368 -0.1095642 +vt -0.06744196 -0.1134354 +vt -0.06260945 -0.1120419 +vt -0.05225901 -0.102049 +vt -0.05594983 -0.1014895 +vt -0.05716657 -0.105191 +vt -0.05219395 -0.1059448 +vt -0.0330731 -0.1094873 +vt -0.03624994 -0.107527 +vt -0.03881919 -0.1104563 +vt -0.03453905 -0.1130974 +vt -0.01432999 -0.1258801 +vt -0.01671417 -0.1230077 +vt -0.02008455 -0.1249627 +vt -0.01687235 -0.1288327 +vt 0.0006244252 -0.135412 +vt -0.0009485404 -0.1320266 +vt -0.004706029 -0.1330577 +vt -0.002586775 -0.1376188 +vt 0.01151426 -0.1263286 +vt 0.01073504 -0.1226778 +vt 0.006842287 -0.1228459 +vt 0.007892115 -0.1277645 +vt 0.01517851 -0.0968198 +vt 0.01542887 -0.09309521 +vt 0.0116389 -0.09219077 +vt 0.01130161 -0.09720888 +vt -0.05284381 0.02726562 +vt -0.05186998 0.0236619 +vt -0.04799183 0.02403842 +vt -0.04930387 0.02889369 +vt -0.04883485 -0.01900845 +vt -0.04935409 -0.02270514 +vt -0.04563952 -0.02388148 +vt -0.04493995 -0.01890094 +vt -0.05477588 -0.06898471 +vt -0.05610617 -0.07247262 +vt -0.05274733 -0.07444745 +vt -0.05095504 -0.06974822 +vt -0.06129942 -0.1027249 +vt -0.06343104 -0.1057894 +vt -0.06064709 -0.1085155 +vt -0.05777518 -0.1043866 +vt -0.06591199 -0.1142994 +vt -0.06885792 -0.1165922 +vt -0.06700972 -0.1200223 +vt -0.06304069 -0.1169333 +vt -0.06484133 -0.09379183 +vt -0.06961198 -0.09538431 +vt -0.06871027 -0.09917492 +vt -0.06328528 -0.09736402 +vt -0.04915008 -0.07270905 +vt -0.05410253 -0.0718325 +vt -0.05511858 -0.07559408 +vt -0.04948685 -0.07659086 +vt -0.02111463 -0.08387027 +vt -0.02526323 -0.08102699 +vt -0.02774183 -0.08403338 +vt -0.02302421 -0.08726663 +vt 0.003334039 -0.1133293 +vt 6.85162E-05 -0.1095042 +vt -0.003107181 -0.1117618 +vt 0.0006062373 -0.1161116 +vt 0.02268629 -0.1325234 +vt 0.01996428 -0.1282943 +vt 0.01651406 -0.1301047 +vt 0.01960942 -0.134914 +vt 0.04116437 -0.1236287 +vt 0.03849093 -0.1193687 +vt 0.03502022 -0.1211396 +vt 0.03806034 -0.1259839 +vt 0.06456676 -0.0722761 +vt 0.06079494 -0.06894916 +vt 0.05796896 -0.07163163 +vt 0.06225811 -0.07541488 +vt 0.03646635 0.01820019 +vt 0.03195343 0.01598011 +vt 0.03335712 0.01234536 +vt 0.03848902 0.01486994 +vt -0.01501647 -0.01998325 +vt -0.01784299 -0.02414329 +vt -0.01482662 -0.02660974 +vt -0.01161243 -0.02187912 +vt -0.03621833 -0.07556836 +vt -0.03886048 -0.07984786 +vt -0.03573928 -0.08218024 +vt -0.03273474 -0.07731377 +vt -0.05046447 -0.1108325 +vt -0.05352103 -0.1148265 +vt -0.05064852 -0.1174591 +vt -0.04717273 -0.1129172 +vt -0.061588 -0.1157345 +vt -0.06544101 -0.1189671 +vt -0.06321077 -0.122162 +vt -0.05882929 -0.1184861 +vt -0.06488471 -0.07661875 +vt -0.07008667 -0.07899559 +vt -0.0684674 -0.08253957 +vt -0.06326543 -0.08016273 +vt -0.04454961 -0.0330525 +vt -0.05010381 -0.03168844 +vt -0.05103311 -0.03547239 +vt -0.0454789 -0.03683644 +vt -0.005513026 -0.05211142 +vt -0.009801687 -0.04832761 +vt -0.0123795 -0.05124937 +vt -0.008090844 -0.05503318 +vt 0.02084773 -0.09622222 +vt 0.01733109 -0.09171189 +vt 0.01425831 -0.09410768 +vt 0.01777495 -0.09861802 +vt 0.03999405 -0.1249666 +vt 0.03657213 -0.120384 +vt 0.03345012 -0.1227153 +vt 0.03687203 -0.1272979 +vt 0.05736399 -0.1210333 +vt 0.05339394 -0.1169165 +vt 0.05058922 -0.1196211 +vt 0.05455927 -0.123738 +vt 0.07008668 -0.07899558 +vt 0.06488471 -0.07661875 +vt 0.06326543 -0.08016272 +vt 0.06846739 -0.08253954 +vt 0.05010381 -0.03168848 +vt 0.0445496 -0.03305253 +vt 0.0454789 -0.03683648 +vt 0.0510331 -0.03547242 +vt 0.009801708 -0.04832763 +vt 0.005513048 -0.05211145 +vt 0.008090866 -0.0550332 +vt 0.01237953 -0.05124939 +vt -0.01733107 -0.09171189 +vt -0.02084771 -0.09622223 +vt -0.01777493 -0.09861802 +vt -0.01425829 -0.09410769 +vt -0.03657211 -0.120384 +vt -0.03999403 -0.1249666 +vt -0.03687201 -0.1272979 +vt -0.03345009 -0.1227153 +vt -0.05339393 -0.1169165 +vt -0.05736398 -0.1210333 +vt -0.05455925 -0.123738 +vt -0.05058921 -0.1196212 +vt -0.06022032 -0.06907921 +vt -0.06450948 -0.07286246 +vt -0.06168349 -0.07554492 +vt -0.05791168 -0.07221799 +vt -0.0318548 0.01539931 +vt -0.0369867 0.01792389 +vt -0.03839039 0.01428913 +vt -0.03387747 0.01206905 +vt 0.01764177 -0.024697 +vt 0.01442758 -0.01996638 +vt 0.01141121 -0.02243282 +vt 0.01423773 -0.02659286 +vt 0.03863527 -0.08039227 +vt 0.03563073 -0.0755258 +vt 0.03250953 -0.07785816 +vt 0.03515168 -0.08213767 +vt 0.05335135 -0.1153907 +vt 0.04987556 -0.1108488 +vt 0.04700305 -0.1134814 +vt 0.05005961 -0.1174755 +vt 0.06539828 -0.1195547 +vt 0.06101678 -0.1158787 +vt 0.05878654 -0.1190737 +vt 0.06263955 -0.1223062 +vt 0.06978793 -0.09594654 +vt 0.06436294 -0.09413563 +vt 0.06346123 -0.09792624 +vt 0.06823189 -0.09951873 +vt 0.05452541 -0.07224269 +vt 0.04889368 -0.07323947 +vt 0.04990973 -0.07700105 +vt 0.05486218 -0.0761245 +vt 0.02581775 -0.08122595 +vt 0.02110014 -0.08445921 +vt 0.02357874 -0.0874656 +vt 0.02772734 -0.08462232 +vt 0.0005186823 -0.109552 +vt -0.003194734 -0.1139017 +vt -1.904032E-05 -0.1161593 +vt 0.003246483 -0.1123342 +vt -0.019376 -0.1282627 +vt -0.02247136 -0.1330719 +vt -0.01902114 -0.1348824 +vt -0.01629913 -0.1306532 +vt -0.03790305 -0.1193304 +vt -0.04094317 -0.1241748 +vt -0.03747246 -0.1259456 +vt -0.03479903 -0.1216856 +vt -0.01473482 -0.09239888 +vt -0.01439752 -0.09741698 +vt -0.01060756 -0.09651254 +vt -0.01085791 -0.09278797 +vt 0.05098724 0.02322904 +vt 0.05229927 0.02808431 +vt 0.04842112 0.02846082 +vt 0.0474473 0.02485711 +vt 0.04871225 -0.02344988 +vt 0.04801269 -0.01846934 +vt 0.04429812 -0.01964568 +vt 0.04481735 -0.02334238 +vt 0.05564653 -0.07334171 +vt 0.05385423 -0.06864247 +vt 0.05049539 -0.07061731 +vt 0.05182568 -0.07410521 +vt 0.06319436 -0.1067436 +vt 0.06032246 -0.1026148 +vt 0.0575385 -0.1053409 +vt 0.05967011 -0.1084054 +vt 0.06891547 -0.1175736 +vt 0.06494644 -0.1144847 +vt 0.06309824 -0.1179148 +vt 0.06604417 -0.1202075 +vt 0.06830171 -0.110454 +vt 0.0634692 -0.1090605 +vt 0.06302748 -0.1129317 +vt 0.06661431 -0.1139661 +vt 0.05670151 -0.1021232 +vt 0.05172889 -0.102877 +vt 0.05294564 -0.1065785 +vt 0.05663645 -0.106019 +vt 0.03718975 -0.1078156 +vt 0.03290961 -0.1104567 +vt 0.03547886 -0.113386 +vt 0.03865571 -0.1114257 +vt 0.01769697 -0.122981 +vt 0.01448476 -0.126851 +vt 0.01785515 -0.128806 +vt 0.02023933 -0.1259336 +vt 0.001892047 -0.1317502 +vt -0.000227205 -0.1363113 +vt 0.003530284 -0.1373424 +vt 0.005103248 -0.133957 +vt -0.009876821 -0.1221982 +vt -0.01092665 -0.1271168 +vt -0.007033893 -0.1272849 +vt -0.006254678 -0.1236341 +vt 0.04040447 -0.09768772 +vt 0.04335185 -0.09997859 +vt 0.0449926 -0.0964445 +vt 0.04342434 -0.09522556 +vt 0.06370141 -0.06404506 +vt 0.0671841 -0.06270118 +vt 0.06500229 -0.05947294 +vt 0.06314919 -0.060188 +vt 0.06677346 -0.06045275 +vt 0.06824043 -0.05702009 +vt 0.06440546 -0.05633097 +vt 0.0636249 -0.05815746 +vt 0.0670616 -0.08177777 +vt 0.06671137 -0.07806125 +vt 0.06301281 -0.07928701 +vt 0.06319915 -0.08126451 +vt 0.06861275 -0.1028075 +vt 0.06683771 -0.0995235 +vt 0.0639125 -0.1020974 +vt 0.06485698 -0.1038448 +vt 0.06915222 -0.1144584 +vt 0.06626038 -0.1120979 +vt 0.06453572 -0.1155918 +vt 0.06607445 -0.1168478 +vt 0.0660831 -0.1174755 +vt 0.06249128 -0.1164587 +vt 0.06229726 -0.1203502 +vt 0.06420843 -0.1208913 +vt 0.05799884 -0.1181755 +vt 0.05430593 -0.118721 +vt 0.05572481 -0.1223499 +vt 0.05768976 -0.1220596 +vt 0.04637267 -0.1218732 +vt 0.0432125 -0.1238603 +vt 0.04597311 -0.12661 +vt 0.04765461 -0.1255527 +vt 0.03474014 -0.1273056 +vt 0.03258755 -0.1303554 +vt 0.0361935 -0.1318316 +vt 0.03733887 -0.1302088 +vt 0.02657185 -0.1283325 +vt 0.02575 -0.1319739 +vt 0.02964636 -0.131958 +vt 0.03008365 -0.1300204 +vt 0.02584003 -0.1194744 +vt 0.0266959 -0.1231079 +vt 0.03019175 -0.1213872 +vt 0.02973635 -0.1194538 +vt 0.05501278 -0.1080884 +vt 0.05684264 -0.108861 +vt 0.05739326 -0.1050037 +vt 0.06024133 -0.1025596 +vt 0.0621829 -0.1021405 +vt 0.06041721 -0.09866718 +vt 0.06419758 -0.1004905 +vt 0.06556765 -0.09905241 +vt 0.06215471 -0.09717263 +vt 0.06620111 -0.1026686 +vt 0.06661015 -0.1007249 +vt 0.0627187 -0.1009209 +vt 0.06656509 -0.1071593 +vt 0.06596918 -0.1052645 +vt 0.062673 -0.1073422 +vt 0.06545698 -0.1116629 +vt 0.06404539 -0.1102655 +vt 0.06210053 -0.1136418 +vt 0.06286897 -0.1150954 +vt 0.06097555 -0.1144952 +vt 0.0607837 -0.1183869 +vt 0.0590332 -0.1174921 +vt 0.05707312 -0.1178137 +vt 0.05866311 -0.1213709 +vt 0.05469247 -0.1190809 +vt 0.05309232 -0.1202577 +vt 0.05612459 -0.1227046 +vt 0.05103875 -0.1195382 +vt 0.05016408 -0.1213216 +vt 0.05398414 -0.122089 +vt 0.04940189 -0.1180481 +vt 0.04949377 -0.1200323 +vt 0.05321149 -0.1188659 +vt 0.05077325 -0.1140368 +vt 0.05187177 -0.1156917 +vt 0.05446155 -0.1127805 +vt -0.09959262 -0.2129951 +vt -0.04486409 -0.2598252 +vt -0.02984502 -0.2405605 +vt -0.03248694 -0.2139388 +vt -0.05554019 -0.1946634 +vt -0.07297732 -0.1936987 +vt 0.08636893 -0.2183985 +vt 0.06065276 -0.1960175 +vt 0.04215684 -0.1978327 +vt 0.01747026 -0.2148732 +vt 0.01179835 -0.2365423 +vt 0.02665714 -0.2565993 +vt 0.02541757 -0.08117105 +vt 0.02310505 -0.09648722 +vt 0.01165844 -0.1226375 +vt 0.001656084 -0.1356505 +vt 0.06745183 -0.162053 +vt 0.08281844 -0.1551202 +vt 0.09689421 -0.1227423 +vt 0.09206329 -0.1086027 +vt 0.1271165 -0.03277499 +vt 0.1124552 -0.02567338 +vt 0.1064053 -0.04028689 +vt 0.1275913 -0.04964944 +vt 0.0008164124 -0.2306505 +vt 0.01387227 -0.2002499 +vt -0.01091027 -0.2077547 +vt -0.01274548 -0.2288239 +vt -0.1367601 -0.2312552 +vt -0.128841 -0.2439341 +vt -0.1025994 -0.2290189 +vt -0.1152614 -0.2196536 +vt -0.1068621 -0.1867293 +vt -0.1187211 -0.2105442 +vt -0.1061779 -0.2193523 +vt -0.09462111 -0.2001132 +vt -0.1073109 -0.01118221 +vt -0.1257309 -0.03491028 +vt -0.1309376 -0.05256698 +vt -0.09027486 -0.01103172 +vt 0.1357054 -0.1710108 +vt 0.1213363 -0.1962584 +vt 0.1446461 -0.210742 +vt 0.1590183 -0.1860791 +vt 0.032895 -0.08092438 +vt 0.03012735 -0.09858514 +vt 0.05506331 -0.08662464 +vt 0.05854332 -0.07151582 +vt 0.04720234 -0.07412753 +vt 0.02416489 -0.07528936 +vt 0.03377935 -0.09054296 +vt 0.04888746 -0.09169193 +vt 0.05957898 -0.08985548 +vt 0.04979562 -0.07866008 +vt 0.01912984 -0.2087345 +vt 0.02645928 -0.2355075 +vt 0.04018966 -0.2309523 +vt 0.03435975 -0.2086129 +vt 0.02406498 -0.1100696 +vt 0.02641509 -0.09471346 +vt 0.01278054 -0.09353445 +vt 0.0006322744 -0.1032984 +vt 0.009860616 -0.107343 +vt 0.1455416 -0.1838105 +vt 0.1290847 -0.1705262 +vt 0.121477 -0.1833286 +vt 0.1357018 -0.195898 +vt 0.08979833 -0.2075501 +vt 0.1205271 -0.2222022 +vt 0.1296976 -0.2094212 +vt 0.1144964 -0.1951905 +vt 0.007420457 -0.1362129 +vt 0.01766032 -0.1233971 +vt 0.006309246 -0.1144575 +vt -0.002841472 -0.1102454 +vt -0.002656891 -0.1240184 +vt -0.1150603 -0.219771 +vt -0.09494738 -0.2010988 +vt -0.1084646 -0.1927054 +vt -0.1247001 -0.2090061 +vt 0.135175 -0.1952479 +vt 0.1252171 -0.2071387 +vt 0.1435995 -0.2170841 +vt 0.1507422 -0.2052838 +vt 0.05681045 -0.09241349 +vt 0.06828736 -0.09039281 +vt 0.06552937 -0.08107367 +vt 0.05409407 -0.08331779 +vt 0.007547247 -0.0931835 +vt -0.001709891 -0.08918814 +vt -0.005258489 -0.09741014 +vt 0.00399865 -0.1014055 +vt 0.1242389 -0.2020219 +vt 0.1391633 -0.2129937 +vt 0.1446051 -0.2044162 +vt 0.1293325 -0.1937449 +vt -0.01131265 -0.1140328 +vt -0.002044123 -0.1180016 +vt 0.002965048 -0.1093015 +vt -0.006255664 -0.1052229 +vt -0.1423346 -0.2090206 +vt -0.1234853 -0.1958289 +vt -0.1283919 -0.1877026 +vt -0.147627 -0.2004898 +vt -0.08786929 -0.1962755 +vt -0.09916724 -0.1934212 +vt -0.1091237 -0.2091687 +vt -0.1010677 -0.2152304 +vt 0.1568924 -0.1886638 +vt 0.1406101 -0.1789068 +vt 0.1364704 -0.1868451 +vt 0.1523599 -0.1963846 +vt 0.06415622 -0.08590408 +vt 0.05342776 -0.08755252 +vt 0.05472233 -0.09641357 +vt 0.06545082 -0.09476513 +vt -0.1370845 -0.176929 +vt -0.1568195 -0.1889135 +vt -0.1522861 -0.1966337 +vt -0.132944 -0.1848669 +vt 0.09828741 -0.2143703 +vt 0.1065239 -0.2085554 +vt 0.09576053 -0.1934668 +vt 0.08518402 -0.1959064 +vt -0.087402 -0.1206354 +vt -0.07033817 -0.15968 +vt -0.01718738 -0.140272 +vt -0.03265211 -0.101026 +vt -0.1527371 -0.2032259 +vt -0.1320974 -0.2318706 +vt -0.1120113 -0.2222567 +vt -0.1364546 -0.1873542 +vt -0.1623377 -0.1820297 +vt -0.1445703 -0.2125395 +vt -0.1184835 -0.1973478 +vt -0.1362509 -0.166838 +vt -0.0478965 -0.2392313 +vt -0.03048555 -0.245462 +vt -0.002016261 -0.2360065 +vt 0.00582714 -0.2214702 +vt -0.1022797 -0.2205472 +vt -0.09009595 -0.2278173 +vt -0.07129346 -0.2154179 +vt -0.08645924 -0.2049552 +vt -0.1466233 -0.1846407 +vt -0.1321474 -0.1933127 +vt -0.1204642 -0.1710435 +vt -0.1293523 -0.1598887 +vt 0.1068106 -0.1265278 +vt 0.09203117 -0.1660345 +vt 0.1176936 -0.1652192 +vt 0.1279575 -0.1380451 +vt 0.07784437 -0.2059936 +vt 0.07520995 -0.2203133 +vt 0.09196542 -0.21763 +vt 0.102298 -0.2052091 +vt -0.05232736 -0.1429665 +vt -0.05176584 -0.1486842 +vt -0.04902038 -0.1476645 +vt -0.06054365 -0.1464805 +vt -0.0626884 -0.1518102 +vt -0.05978248 -0.1521749 +vt -0.06776127 -0.1440089 +vt -0.07213021 -0.1477396 +vt -0.0697235 -0.1494085 +vt -0.07260956 -0.1360103 +vt -0.07821735 -0.1372589 +vt -0.07687323 -0.139861 +vt -0.07423736 -0.1232343 +vt -0.07975087 -0.1216195 +vt -0.07983048 -0.1245471 +vt -0.07199066 -0.1075287 +vt -0.07591589 -0.1033336 +vt -0.07747379 -0.1058135 +vt -0.06547355 -0.09305899 +vt -0.0665105 -0.08740822 +vt -0.06916122 -0.0886536 +vt -0.05576388 -0.0858811 +vt -0.05345915 -0.08061854 +vt -0.05635273 -0.08016624 +vt -0.04631998 -0.08979733 +vt -0.04149165 -0.08668386 +vt -0.04365375 -0.08470836 +vt -0.04080956 -0.1027229 +vt -0.03506574 -0.102601 +vt -0.03587212 -0.09978553 +vt -0.04060293 -0.1189916 +vt -0.03554857 -0.1217229 +vt -0.03485897 -0.1188765 +vt -0.0450039 -0.1334282 +vt -0.04184859 -0.1382293 +vt -0.03989194 -0.1360501 +vt -0.03836906 -0.1878797 +vt -0.04113867 -0.1888318 +vt -0.04053617 -0.1945452 +vt -0.035331 -0.1927558 +vt -0.06314547 -0.1914903 +vt -0.06605418 -0.1911485 +vt -0.0679865 -0.196559 +vt -0.06251992 -0.1972013 +vt -0.08280549 -0.1853695 +vt -0.08529047 -0.1838196 +vt -0.08934613 -0.1878887 +vt -0.08467589 -0.1908016 +vt -0.09471116 -0.1718756 +vt -0.0963565 -0.1694527 +vt -0.1017118 -0.1715328 +vt -0.0986196 -0.1760863 +vt -0.1001722 -0.1479306 +vt -0.100718 -0.1450532 +vt -0.1064588 -0.1448314 +vt -0.1054331 -0.1502392 +vt -0.1002666 -0.1077336 +vt -0.09947549 -0.1049138 +vt -0.1045185 -0.1021616 +vt -0.1060052 -0.1074611 +vt -0.08857308 -0.04937288 +vt -0.0862533 -0.04758514 +vt -0.08865099 -0.04236428 +vt -0.09301075 -0.04572412 +vt -0.04621288 -0.006437218 +vt -0.04337062 -0.007143565 +vt -0.04077056 -0.002020472 +vt -0.04611226 -0.0006929821 +vt -0.004910769 -0.03217552 +vt -0.003385658 -0.03467579 +vt 0.002064802 -0.03285955 +vt -0.0008014551 -0.02816056 +vt 0.00709868 -0.0859188 +vt 0.007161736 -0.08884683 +vt 0.01278711 -0.09001373 +vt 0.01266859 -0.08451082 +vt 0.001478589 -0.1350725 +vt 0.000333498 -0.1377681 +vt 0.004983261 -0.1411424 +vt 0.00713532 -0.1360764 +vt -0.01494991 -0.1698125 +vt -0.01707167 -0.1718312 +vt -0.01414521 -0.1767751 +vt -0.01015759 -0.1729811 +vt -0.02461906 -0.214272 +vt -0.02979461 -0.2161454 +vt -0.02876519 -0.2217975 +vt -0.02179218 -0.2192735 +vt -0.06569111 -0.2103044 +vt -0.07115273 -0.2096212 +vt -0.07280429 -0.2151238 +vt -0.06544587 -0.2160443 +vt -0.09367746 -0.2005659 +vt -0.09831464 -0.1976006 +vt -0.1021718 -0.2018584 +vt -0.09592412 -0.2058535 +vt -0.1054267 -0.1926739 +vt -0.1087427 -0.1882807 +vt -0.1138401 -0.1909308 +vt -0.1093724 -0.1968497 +vt -0.1083204 -0.1778927 +vt -0.110271 -0.1727458 +vt -0.1159071 -0.1738597 +vt -0.113279 -0.1807941 +vt -0.1083581 -0.1429812 +vt -0.1088783 -0.1375017 +vt -0.1146084 -0.1370856 +vt -0.1139075 -0.1444682 +vt -0.1100995 -0.0711881 +vt -0.1084077 -0.06595036 +vt -0.1135047 -0.0632996 +vt -0.1157841 -0.07035637 +vt 0.003603484 0.07398832 +vt 0.007832738 0.07046562 +vt 0.0121928 0.07420678 +vt 0.006494733 0.07895289 +vt 0.05785713 -0.02020973 +vt 0.05818533 -0.02570411 +vt 0.0638973 -0.02632041 +vt 0.06345512 -0.01891784 +vt 0.05380954 -0.1001486 +vt 0.05252067 -0.1054997 +vt 0.05780442 -0.1077555 +vt 0.05954092 -0.1005459 +vt 0.03863889 -0.1611485 +vt 0.0359809 -0.1659684 +vt 0.04048007 -0.169541 +vt 0.04406118 -0.1630472 +vt 0.01291242 -0.1994031 +vt 0.008888047 -0.2031581 +vt 0.01205404 -0.2079522 +vt 0.01747605 -0.202893 +vt -0.008280289 -0.2190466 +vt -0.01507822 -0.22201 +vt -0.01325763 -0.227459 +vt -0.005527321 -0.2240891 +vt -0.06939481 -0.2018246 +vt -0.07672555 -0.2007049 +vt -0.07809238 -0.206285 +vt -0.06975617 -0.2075584 +vt -0.1022444 -0.1874173 +vt -0.108189 -0.1829839 +vt -0.1120178 -0.1872672 +vt -0.1052578 -0.1923087 +vt -0.1075132 -0.1930301 +vt -0.1119241 -0.1870688 +vt -0.1168268 -0.1900637 +vt -0.111811 -0.1968427 +vt -0.1023703 -0.1984584 +vt -0.1057892 -0.1918778 +vt -0.1111018 -0.1940647 +vt -0.107214 -0.201548 +vt -0.0908727 -0.1869614 +vt -0.09392211 -0.1802016 +vt -0.09934759 -0.1820911 +vt -0.09587993 -0.1897781 +vt -0.05891849 -0.1627424 +vt -0.06304038 -0.1565777 +vt -0.06808021 -0.1593357 +vt -0.06339295 -0.1663459 +vt 0.1035371 -0.08640837 +vt 0.09714197 -0.09016286 +vt 0.09960064 -0.09535529 +vt 0.1068729 -0.09108584 +vt 0.1030431 -0.07524358 +vt 0.09980343 -0.08191427 +vt 0.1047289 -0.08487172 +vt 0.1084129 -0.0772861 +vt 0.08723627 -0.1335047 +vt 0.08408637 -0.1402182 +vt 0.08905102 -0.1431093 +vt 0.09263297 -0.135475 +vt 0.0686496 -0.1842457 +vt 0.06478603 -0.1905755 +vt 0.06940562 -0.193991 +vt 0.07379912 -0.186793 +vt 0.04020467 -0.2134769 +vt 0.03505344 -0.2188115 +vt 0.03881678 -0.2231524 +vt 0.04467455 -0.2170862 +vt 0.01640652 -0.2018928 +vt 0.009293655 -0.2064227 +vt 0.01237981 -0.2112686 +vt 0.01949269 -0.2067386 +vt -0.07659906 -0.1662092 +vt -0.08481972 -0.1643291 +vt -0.08610056 -0.1699297 +vt -0.07787991 -0.1718097 +vt -0.1074055 -0.1465536 +vt -0.1132709 -0.1404946 +vt -0.1173987 -0.1444906 +vt -0.1115333 -0.1505495 +vt -0.1013035 -0.173869 +vt -0.1058534 -0.1667689 +vt -0.1106906 -0.1698687 +vt -0.1061406 -0.1769688 +vt -0.08716388 -0.2030536 +vt -0.09149645 -0.1958188 +vt -0.09642535 -0.1987705 +vt -0.09209277 -0.2060053 +vt -0.06302502 -0.2143486 +vt -0.0680885 -0.207605 +vt -0.07268269 -0.2110547 +vt -0.06761921 -0.2177982 +vt -0.009293579 -0.2064228 +vt -0.01640646 -0.2018928 +vt -0.01949262 -0.2067386 +vt -0.01237974 -0.2112686 +vt 0.08481972 -0.1643292 +vt 0.07659908 -0.1662093 +vt 0.07787993 -0.1718098 +vt 0.08610056 -0.1699297 +vt 0.1132709 -0.1404947 +vt 0.1074055 -0.1465536 +vt 0.1115333 -0.1505496 +vt 0.1173987 -0.1444907 +vt 0.1058534 -0.166769 +vt 0.1013035 -0.1738691 +vt 0.1061406 -0.1769688 +vt 0.1106906 -0.1698687 +vt 0.09149646 -0.1958188 +vt 0.08716388 -0.2030536 +vt 0.09209277 -0.2060053 +vt 0.09642535 -0.1987705 +vt 0.06808853 -0.207605 +vt 0.06302506 -0.2143485 +vt 0.06761924 -0.2177982 +vt 0.07268272 -0.2110547 +vt 0.06390852 -0.1565463 +vt 0.05922128 -0.1635566 +vt 0.06426112 -0.1663146 +vt 0.068383 -0.1601499 +vt -0.09705992 -0.09102765 +vt -0.1043322 -0.08675821 +vt -0.1067908 -0.09195063 +vt -0.1003957 -0.09570512 +vt -0.1002147 -0.08267941 +vt -0.1038987 -0.07509379 +vt -0.1088242 -0.07805124 +vt -0.1055845 -0.08472192 +vt -0.0845079 -0.1409777 +vt -0.08808985 -0.1333434 +vt -0.09305451 -0.1362345 +vt -0.08990459 -0.142948 +vt -0.06512217 -0.1913765 +vt -0.06951568 -0.1841785 +vt -0.07413527 -0.187594 +vt -0.07027169 -0.1939238 +vt -0.03520678 -0.2196666 +vt -0.04106455 -0.2136002 +vt -0.04482789 -0.2179412 +vt -0.03967666 -0.2232758 +vt 0.015263 -0.2228587 +vt 0.007532679 -0.2194889 +vt 0.005712101 -0.2249379 +vt 0.01251003 -0.2279013 +vt 0.07733465 -0.2013242 +vt 0.06899845 -0.2025975 +vt 0.07036529 -0.2081777 +vt 0.07769601 -0.2070579 +vt 0.1090177 -0.1832444 +vt 0.1022577 -0.1882859 +vt 0.1060865 -0.1925692 +vt 0.1120311 -0.1881358 +vt 0.1127927 -0.1870788 +vt 0.1077769 -0.1938578 +vt 0.1126796 -0.1968528 +vt 0.1170905 -0.1908914 +vt 0.1066486 -0.1917511 +vt 0.1027608 -0.1992344 +vt 0.1080734 -0.2014213 +vt 0.1114923 -0.1948407 +vt 0.09477317 -0.1800275 +vt 0.09130552 -0.1877145 +vt 0.09673101 -0.1896041 +vt 0.09978041 -0.1828443 +vt 0.1091511 -0.06470585 +vt 0.1114304 -0.07176263 +vt 0.1165275 -0.06911186 +vt 0.1148357 -0.06387413 +vt -0.009264661 0.07069138 +vt -0.003566591 0.07543749 +vt -0.007926652 0.07917865 +vt -0.01215591 0.07565596 +vt -0.05933027 -0.02659321 +vt -0.05888808 -0.01919065 +vt -0.06460006 -0.01980695 +vt -0.06492826 -0.02530133 +vt -0.05335646 -0.1066841 +vt -0.05509296 -0.09947454 +vt -0.0603767 -0.1017303 +vt -0.05908784 -0.1070815 +vt -0.03647371 -0.1673316 +vt -0.04005482 -0.1608379 +vt -0.044554 -0.1644105 +vt -0.041896 -0.1692304 +vt -0.008932775 -0.2046071 +vt -0.01435478 -0.1995479 +vt -0.01752078 -0.2043419 +vt -0.01349641 -0.208097 +vt 0.0303224 -0.2174955 +vt 0.02334939 -0.2149715 +vt 0.02231997 -0.2206236 +vt 0.02749552 -0.222497 +vt 0.07223643 -0.2105841 +vt 0.06487802 -0.2115045 +vt 0.06652958 -0.2170071 +vt 0.07199119 -0.2163239 +vt 0.09970703 -0.198004 +vt 0.09345938 -0.201999 +vt 0.09731652 -0.2062568 +vt 0.1019537 -0.2032916 +vt 0.1101884 -0.1881745 +vt 0.1057208 -0.1940934 +vt 0.1108182 -0.1967434 +vt 0.1141342 -0.1923503 +vt 0.1116289 -0.1722383 +vt 0.1090008 -0.1791728 +vt 0.1146369 -0.1802867 +vt 0.1165876 -0.1751397 +vt 0.1100537 -0.1366532 +vt 0.1093528 -0.1440357 +vt 0.1150829 -0.1436196 +vt 0.1156031 -0.1381401 +vt 0.08582527 -0.04603103 +vt 0.09018503 -0.04939087 +vt 0.09258272 -0.04417 +vt 0.09026293 -0.04238228 +vt 0.04188704 -0.006513063 +vt 0.04722873 -0.005185582 +vt 0.04462868 -6.248464E-05 +vt 0.04178642 -0.0007688221 +vt 0.001887216 -0.03527018 +vt 0.004753475 -0.03057119 +vt -0.0006969904 -0.02875494 +vt -0.002222097 -0.03125521 +vt -0.008158982 -0.09011339 +vt -0.008040463 -0.08461048 +vt -0.01366584 -0.08577738 +vt -0.01372889 -0.08870541 +vt -0.000722538 -0.1393325 +vt -0.002874597 -0.1342664 +vt -0.007524361 -0.1376408 +vt -0.006379275 -0.1403364 +vt 0.01733614 -0.1734214 +vt 0.01334853 -0.1696273 +vt 0.01042206 -0.1745712 +vt 0.01254382 -0.17659 +vt 0.04204118 -0.1901675 +vt 0.036836 -0.188378 +vt 0.0362335 -0.1940915 +vt 0.03900312 -0.1950436 +vt 0.06744628 -0.1919614 +vt 0.06197971 -0.1926037 +vt 0.06391203 -0.1980141 +vt 0.06682073 -0.1976723 +vt 0.08689629 -0.1839609 +vt 0.08222604 -0.1868738 +vt 0.0862817 -0.1909429 +vt 0.08876668 -0.189393 +vt 0.09788217 -0.1689321 +vt 0.09478997 -0.1734856 +vt 0.1001453 -0.1755657 +vt 0.1017906 -0.1731429 +vt 0.1019107 -0.1439687 +vt 0.100885 -0.1493765 +vt 0.1066258 -0.1491547 +vt 0.1071716 -0.1462773 +vt 0.1000613 -0.1034119 +vt 0.1015481 -0.1087115 +vt 0.1065911 -0.1059593 +vt 0.1058 -0.1031394 +vt 0.06431235 -0.09208696 +vt 0.06696308 -0.09333234 +vt 0.06800003 -0.08768158 +vt 0.05425749 -0.08572586 +vt 0.05715107 -0.08527357 +vt 0.05484634 -0.080011 +vt 0.04497853 -0.09050007 +vt 0.04714063 -0.08852457 +vt 0.0423123 -0.08541109 +vt 0.0400353 -0.1040244 +vt 0.04084168 -0.1012089 +vt 0.03509786 -0.101087 +vt 0.04057262 -0.1205058 +vt 0.03988302 -0.1176594 +vt 0.03482866 -0.1203906 +vt 0.04569499 -0.1347757 +vt 0.04373835 -0.1325965 +vt 0.04058304 -0.1373976 +vt 0.05356567 -0.1438382 +vt 0.05082021 -0.1428185 +vt 0.0502587 -0.1485361 +vt 0.06204469 -0.1466811 +vt 0.05913877 -0.1470458 +vt 0.06128351 -0.1523756 +vt 0.06918459 -0.1434917 +vt 0.06677787 -0.1451605 +vt 0.0711468 -0.1488913 +vt 0.07362456 -0.1348864 +vt 0.07228043 -0.1374885 +vt 0.07788823 -0.1387371 +vt 0.07458342 -0.12176 +vt 0.07466301 -0.1246876 +vt 0.08017652 -0.1230728 +vt 0.07153849 -0.1060831 +vt 0.07309639 -0.1085631 +vt 0.07702162 -0.104368 +vt 0.1172933 -0.1656145 +vt 0.1004901 -0.1703722 +vt 0.08221445 -0.1942259 +vt 0.08546313 -0.2207803 +vt 0.1043344 -0.2362908 +vt 0.1474866 -0.178618 +vt -0.1177844 -0.2237444 +vt -0.09686221 -0.2101309 +vt -0.09461854 -0.1878445 +vt -0.1118096 -0.1632626 +vt -0.1285104 -0.1551091 +vt -0.1604187 -0.167113 +vt 0.1263297 -0.04791604 +vt 0.1408659 -0.04835921 +vt 0.1668783 -0.02448772 +vt 0.1688485 -0.007235566 +vt 0.1224628 0.04637107 +vt 0.1134156 0.03267723 +vt 0.09241788 0.01333937 +vt 0.07868639 0.006169682 +vt 0.1393775 -0.01145083 +vt 0.1162447 -0.01027705 +vt 0.1150706 -0.02604975 +vt 0.1313592 -0.02630614 +vt 0.1887381 -0.1262874 +vt 0.1711448 -0.1145505 +vt 0.1497962 -0.1292044 +vt 0.181687 -0.1380153 +vt -0.102759 -0.2205501 +vt -0.1171386 -0.2165383 +vt -0.1137486 -0.2465288 +vt -0.09933016 -0.2447343 +vt -0.01864444 -0.2174826 +vt -0.01858202 -0.2374911 +vt -0.004200916 -0.2362339 +vt -0.0009693188 -0.2098554 +vt -0.01231393 -0.08050601 +vt -0.05420008 -0.1240989 +vt -0.03648049 -0.1157664 +vt -0.01254113 -0.09758276 +vt 0.2262994 -0.08685403 +vt 0.2446192 -0.06496344 +vt 0.223083 -0.04795418 +vt 0.2042122 -0.0700404 +vt -0.01406345 0.08795136 +vt -0.004321379 0.09431776 +vt -0.01762568 0.1022791 +vt -0.04352891 0.09259001 +vt -0.02887845 0.08234663 +vt -0.02094705 0.09135406 +vt -0.02316579 0.1060554 +vt -0.03147772 0.09908447 +vt -0.0403664 0.08681393 +vt -0.03494197 0.06961841 +vt -0.1696046 -0.1219172 +vt -0.1891033 -0.1342799 +vt -0.1821676 -0.1469752 +vt -0.1585487 -0.1323925 +vt 0.09862616 0.02685666 +vt 0.09205118 0.03449148 +vt 0.0862828 0.02001246 +vt 0.09141169 0.007324466 +vt 0.1054018 0.01407817 +vt 0.2273506 -0.0668119 +vt 0.2110429 -0.05709637 +vt 0.2011693 -0.06824492 +vt 0.2188383 -0.07986843 +vt -0.09281867 -0.2016788 +vt -0.1060194 -0.2177826 +vt -0.09524985 -0.2292485 +vt -0.0667114 -0.2106878 +vt 0.110505 0.04462611 +vt 0.09731806 0.04064681 +vt 0.1040947 0.03319328 +vt 0.1160423 0.02506815 +vt 0.1251716 0.03869734 +vt 0.1248172 -0.204356 +vt 0.1089249 -0.1877205 +vt 0.09523572 -0.1958303 +vt 0.1149551 -0.2149177 +vt 0.1960798 -0.1559749 +vt 0.2080449 -0.1491119 +vt 0.1985348 -0.1305005 +vt 0.1864129 -0.1401759 +vt -0.01158231 0.09977612 +vt -0.001752486 0.1060353 +vt -0.006180362 0.1146867 +vt -0.01588626 0.108237 +vt 0.08998746 0.03458646 +vt 0.08313399 0.04198156 +vt 0.07656581 0.03589446 +vt 0.08341928 0.02849935 +vt 0.2212972 -0.06377254 +vt 0.2360991 -0.07508756 +vt 0.2426213 -0.06729989 +vt 0.2276386 -0.05640777 +vt 0.09046894 0.04488708 +vt 0.09733669 0.03750531 +vt 0.1039223 0.04508244 +vt 0.09714267 0.05254526 +vt -0.236517 -0.07006998 +vt -0.2179415 -0.05634232 +vt -0.2239099 -0.04896063 +vt -0.2427343 -0.06218778 +vt 0.1606954 -0.1707701 +vt 0.1667327 -0.1626957 +vt 0.1527663 -0.1503645 +vt 0.1427189 -0.1562672 +vt 0.2327902 -0.07963143 +vt 0.2185486 -0.06777151 +vt 0.2124172 -0.07429524 +vt 0.2269935 -0.08645431 +vt -0.01655834 0.1149815 +vt -0.02515772 0.1083582 +vt -0.01964108 0.101304 +vt -0.0110417 0.1079273 +vt -0.2154944 -0.06516653 +vt -0.2329714 -0.07955869 +vt -0.2271731 -0.08638027 +vt -0.2093614 -0.07168877 +vt -0.1450422 -0.1523284 +vt -0.1543422 -0.1467315 +vt -0.1692513 -0.1577422 +vt -0.163222 -0.1658232 +vt -0.1021449 -0.001384496 +vt -0.1349876 0.02508546 +vt -0.1698847 -0.02227539 +vt -0.1377529 -0.05025958 +vt -0.1883114 -0.1285006 +vt -0.2219209 -0.1023079 +vt -0.2310631 -0.1199855 +vt -0.2035146 -0.142067 +vt -0.2001878 -0.07310352 +vt -0.2225151 -0.04575365 +vt -0.2459001 -0.06484424 +vt -0.2235727 -0.09219407 +vt -0.2115314 -0.01661934 +vt -0.2249601 -0.02621298 +vt -0.2308492 -0.05561988 +vt -0.2231719 -0.07428221 +vt -0.1784395 -0.1303687 +vt -0.1919842 -0.1155155 +vt -0.1991494 -0.1368421 +vt -0.1886649 -0.1473371 +vt -0.1739299 -0.1063288 +vt -0.1844431 -0.09570076 +vt -0.2076781 -0.1053295 +vt -0.2002711 -0.1210684 +vt 0.187957 0.01199245 +vt 0.1988551 0.03891842 +vt 0.180557 0.05692965 +vt 0.1646081 0.01788043 +vt 0.2041405 -0.09754702 +vt 0.2161124 -0.08669737 +vt 0.2180832 -0.06984322 +vt 0.203888 -0.07308212 +vt -0.1484266 -0.006003954 +vt -0.1500924 -0.00841277 +vt -0.1446903 -0.01036819 +vt -0.1542736 -0.02337321 +vt -0.1544894 -0.02629396 +vt -0.1488413 -0.02524298 +vt -0.1523686 -0.03806221 +vt -0.1511344 -0.04071819 +vt -0.1467135 -0.03704922 +vt -0.1435784 -0.04830509 +vt -0.1412268 -0.05005072 +vt -0.1390914 -0.04471721 +vt -0.1294345 -0.05244862 +vt -0.1265365 -0.0528711 +vt -0.1271841 -0.0471626 +vt -0.1127809 -0.04871347 +vt -0.1100284 -0.04771286 +vt -0.1133027 -0.0429921 +vt -0.09769387 -0.03658441 +vt -0.09574623 -0.03439716 +vt -0.100869 -0.0317964 +vt -0.08845364 -0.0181859 +vt -0.08779517 -0.01533217 +vt -0.09353752 -0.01550999 +vt -0.08832426 0.001569541 +vt -0.08916172 0.004375962 +vt -0.09406638 0.00138419 +vt -0.09838141 0.01601842 +vt -0.1005483 0.01798869 +vt -0.1032022 0.01289329 +vt -0.1159943 0.01929139 +vt -0.1188811 0.01978512 +vt -0.1183743 0.01406241 +vt -0.134779 0.01031445 +vt -0.1374689 0.009156071 +vt -0.1339267 0.00463291 +vt -0.1887514 -0.01841401 +vt -0.1908222 -0.02351379 +vt -0.1851501 -0.02442713 +vt -0.1840483 -0.0217136 +vt -0.193313 -0.05115015 +vt -0.1928134 -0.05663161 +vt -0.1873545 -0.05484095 +vt -0.1876203 -0.05192433 +vt -0.1881872 -0.07167908 +vt -0.18546 -0.07646017 +vt -0.1812347 -0.07256754 +vt -0.1826857 -0.07002358 +vt -0.171315 -0.09089569 +vt -0.1668138 -0.09406357 +vt -0.1646444 -0.08874378 +vt -0.1670395 -0.08705818 +vt -0.1384173 -0.1074754 +vt -0.1329686 -0.1082548 +vt -0.1334505 -0.10253 +vt -0.1363497 -0.1021153 +vt -0.0932215 -0.1080355 +vt -0.08803269 -0.1061991 +vt -0.09111468 -0.1013506 +vt -0.09387557 -0.1023278 +vt -0.04955677 -0.08236678 +vt -0.04571572 -0.07842439 +vt -0.05062462 -0.07543957 +vt -0.0526684 -0.07753727 +vt -0.01987463 -0.03420454 +vt -0.01802422 -0.02902072 +vt -0.0237302 -0.02835122 +vt -0.02471478 -0.03110947 +vt -0.01141855 0.02449889 +vt -0.01194137 0.02997817 +vt -0.01739269 0.02816444 +vt -0.0171145 0.02524897 +vt -0.03397703 0.07684092 +vt -0.03717593 0.08132011 +vt -0.04098381 0.07701821 +vt -0.03928173 0.07463489 +vt -0.09781686 0.08970185 +vt -0.103164 0.09100714 +vt -0.1032408 0.08526254 +vt -0.1003956 0.08456801 +vt -0.1635859 0.03835362 +vt -0.1682541 0.03543749 +vt -0.1641956 0.03137115 +vt -0.1617117 0.03292279 +vt -0.2021701 -0.07199024 +vt -0.2027326 -0.07938463 +vt -0.1970114 -0.07886131 +vt -0.1965938 -0.073373 +vt -0.2038337 -0.08265143 +vt -0.2020909 -0.08985952 +vt -0.1968092 -0.08759918 +vt -0.1981027 -0.08224914 +vt -0.2038817 -0.0858044 +vt -0.2000485 -0.09215264 +vt -0.195693 -0.0884062 +vt -0.1985381 -0.08369435 +vt -0.1914404 -0.1055254 +vt -0.1855324 -0.1100075 +vt -0.1828699 -0.1049165 +vt -0.187255 -0.1015898 +vt -0.1473125 -0.1439016 +vt -0.1399896 -0.1450718 +vt -0.1400395 -0.1393269 +vt -0.1454747 -0.1384583 +vt -0.07070735 -0.161785 +vt -0.06380323 -0.1590782 +vt -0.06676082 -0.1541529 +vt -0.07188527 -0.1561619 +vt 0.0003761759 -0.1298688 +vt 0.005445241 -0.124456 +vt 0.000656993 -0.1212813 +vt -0.003105412 -0.1252988 +vt 0.04602141 -0.06358658 +vt 0.04898959 -0.05679074 +vt 0.04341555 -0.05539918 +vt 0.0412125 -0.06044323 +vt 0.06866267 0.01675616 +vt 0.0695128 0.02412303 +vt 0.06377552 0.02382297 +vt 0.06314452 0.01835508 +vt 0.06330694 0.09948965 +vt 0.0615216 0.1066873 +vt 0.05625327 0.1043957 +vt 0.05757841 0.09905346 +vt -0.04539953 0.1600062 +vt -0.05194321 0.1634953 +vt -0.05376523 0.1580468 +vt -0.04890834 0.1554571 +vt -0.1987217 -0.004766459 +vt -0.2029592 -0.01085226 +vt -0.1977639 -0.01330501 +vt -0.1946187 -0.008787955 +vt -0.1733539 -0.1337325 +vt -0.1712645 -0.1419024 +vt -0.1658464 -0.1399918 +vt -0.1676838 -0.1328073 +vt -0.1889422 -0.102079 +vt -0.1860813 -0.1100118 +vt -0.1808707 -0.107592 +vt -0.1833865 -0.100616 +vt -0.2014486 -0.07661752 +vt -0.1972986 -0.08395855 +vt -0.1925673 -0.0806996 +vt -0.1962168 -0.07424401 +vt -0.2041337 -0.08663638 +vt -0.1979937 -0.09241679 +vt -0.1944414 -0.08790153 +vt -0.1998409 -0.08281831 +vt -0.158363 -0.1558616 +vt -0.1501071 -0.1575805 +vt -0.1494385 -0.1518744 +vt -0.1566986 -0.1503628 +vt -0.03825257 -0.2024803 +vt -0.03072435 -0.1986803 +vt -0.03375703 -0.1938008 +vt -0.04037722 -0.1971425 +vt 0.05470068 -0.1642357 +vt 0.05992461 -0.1576157 +vt 0.05511723 -0.1544699 +vt 0.05052339 -0.1602915 +vt 0.1040676 -0.09270079 +vt 0.1076129 -0.08504934 +vt 0.1022068 -0.08310495 +vt 0.09908911 -0.08983351 +vt 0.1338803 -0.01612067 +vt 0.1363629 -0.008061504 +vt 0.1307443 -0.006862795 +vt 0.128561 -0.0139499 +vt 0.1575571 0.04567674 +vt 0.1595037 0.05388186 +vt 0.1538183 0.05470803 +vt 0.1521065 0.04749256 +vt 0.1957007 0.02784462 +vt 0.199584 0.03533021 +vt 0.19427 0.03751395 +vt 0.1908552 0.03093123 +vt -0.1453391 -0.1605241 +vt -0.143135 -0.1686638 +vt -0.1377443 -0.1666773 +vt -0.1396826 -0.1595193 +vt -0.1185422 -0.1646495 +vt -0.1144569 -0.1720267 +vt -0.109431 -0.1692435 +vt -0.1135163 -0.1618663 +vt -0.1553566 -0.1026844 +vt -0.1519816 -0.1104125 +vt -0.1467167 -0.1081132 +vt -0.1500916 -0.1003851 +vt -0.1801232 -0.04762913 +vt -0.1765808 -0.05528191 +vt -0.1713671 -0.05286855 +vt -0.1749095 -0.04521577 +vt -0.2017206 -0.03056422 +vt -0.1969374 -0.03750931 +vt -0.1922059 -0.03425062 +vt -0.1969891 -0.02730552 +vt -0.1774907 -0.1317287 +vt -0.1695426 -0.1345467 +vt -0.1676227 -0.1291318 +vt -0.1755708 -0.1263138 +vt 0.021717 -0.221159 +vt 0.02818089 -0.2157431 +vt 0.02449119 -0.2113394 +vt 0.01802729 -0.2167553 +vt 0.114457 -0.1720267 +vt 0.1185424 -0.1646495 +vt 0.1135164 -0.1618662 +vt 0.1094311 -0.1692434 +vt 0.1519817 -0.1104125 +vt 0.1553566 -0.1026844 +vt 0.1500917 -0.1003851 +vt 0.1467167 -0.1081132 +vt 0.1765808 -0.05528193 +vt 0.1801232 -0.04762915 +vt 0.1749095 -0.04521578 +vt 0.1713671 -0.05286857 +vt 0.1969374 -0.03750926 +vt 0.2017206 -0.03056416 +vt 0.1969891 -0.02730547 +vt 0.1922058 -0.03425056 +vt 0.1695425 -0.1345468 +vt 0.1774906 -0.1317288 +vt 0.1755708 -0.1263139 +vt 0.1676226 -0.1291319 +vt -0.02818099 -0.2157431 +vt -0.02171709 -0.221159 +vt -0.0180274 -0.2167553 +vt -0.02449128 -0.2113394 +vt -0.06016231 -0.1584512 +vt -0.05556846 -0.1642727 +vt -0.0507611 -0.1611269 +vt -0.05598501 -0.154507 +vt -0.108038 -0.08580686 +vt -0.1049203 -0.09253543 +vt -0.09951423 -0.09059104 +vt -0.1030595 -0.08293958 +vt -0.1368861 -0.008754841 +vt -0.1347029 -0.01584195 +vt -0.1290842 -0.01464323 +vt -0.1315669 -0.006584073 +vt -0.1600715 0.05322447 +vt -0.1583597 0.046009 +vt -0.1526743 0.04683516 +vt -0.1546209 0.05504029 +vt -0.1999748 0.03455469 +vt -0.1965599 0.02797197 +vt -0.191246 0.03015571 +vt -0.1951293 0.0376413 +vt 0.1439477 -0.168357 +vt 0.145886 -0.161199 +vt 0.1404953 -0.1592124 +vt 0.1382912 -0.1673522 +vt 0.1720728 -0.1415842 +vt 0.1739102 -0.1343996 +vt 0.1684921 -0.132489 +vt 0.1664026 -0.140659 +vt 0.1869163 -0.1097723 +vt 0.1894321 -0.1027964 +vt 0.1842215 -0.1003766 +vt 0.1813606 -0.1083094 +vt 0.1981619 -0.08386237 +vt 0.2018114 -0.07740678 +vt 0.1970801 -0.07414782 +vt 0.19293 -0.08148885 +vt 0.1988467 -0.09258105 +vt 0.2042462 -0.08749784 +vt 0.2006939 -0.08298257 +vt 0.1945538 -0.08876297 +vt 0.1507486 -0.1581662 +vt 0.1580087 -0.1566546 +vt 0.1573401 -0.1509485 +vt 0.1490843 -0.1526675 +vt 0.03086093 -0.1995381 +vt 0.03748111 -0.2028798 +vt 0.04051379 -0.1980003 +vt 0.03298559 -0.1942003 +vt -0.00558737 -0.1258987 +vt -0.001824975 -0.1299162 +vt 0.002963283 -0.1267415 +vt -0.002105783 -0.1213287 +vt -0.04960591 -0.058103 +vt -0.04740285 -0.06314706 +vt -0.04182881 -0.0617555 +vt -0.04479699 -0.05495967 +vt -0.07048608 0.02304854 +vt -0.06985509 0.01758065 +vt -0.06411781 0.0172806 +vt -0.06496795 0.02464746 +vt -0.06280963 0.106022 +vt -0.06413476 0.1006797 +vt -0.05886643 0.09838814 +vt -0.05708109 0.1055858 +vt 0.05058717 0.1640074 +vt 0.04573028 0.1614177 +vt 0.04755229 0.1559691 +vt 0.05409597 0.1594582 +vt 0.2033075 -0.009445065 +vt 0.2001623 -0.004928012 +vt 0.194967 -0.007380758 +vt 0.1992045 -0.01346657 +vt 0.2037469 -0.07834873 +vt 0.2033294 -0.07286041 +vt 0.1976082 -0.0723371 +vt 0.1981707 -0.07973149 +vt 0.203375 -0.08918648 +vt 0.2046684 -0.08383646 +vt 0.1993867 -0.08157612 +vt 0.1976439 -0.0887842 +vt 0.2014755 -0.09189782 +vt 0.2043206 -0.08718597 +vt 0.1999651 -0.08343954 +vt 0.1961319 -0.08978778 +vt 0.1869527 -0.1102981 +vt 0.1913377 -0.1069714 +vt 0.1886752 -0.1018805 +vt 0.1827672 -0.1063626 +vt 0.1411055 -0.1459972 +vt 0.1465407 -0.1451286 +vt 0.1465906 -0.1393837 +vt 0.1392677 -0.1405539 +vt 0.06429525 -0.1604418 +vt 0.06941968 -0.1624508 +vt 0.07237728 -0.1575255 +vt 0.06547315 -0.1548187 +vt 0.04591976 -0.08002351 +vt 0.04796354 -0.0821212 +vt 0.05287242 -0.07913637 +vt 0.04903139 -0.07519399 +vt 0.01754388 -0.03055971 +vt 0.01852847 -0.03331795 +vt 0.02423445 -0.03264845 +vt 0.02238402 -0.02746464 +vt 0.01085373 0.02878849 +vt 0.01057553 0.02587302 +vt 0.01602685 0.02405928 +vt 0.01654968 0.02953858 +vt 0.03563835 0.08083574 +vt 0.03393627 0.07845242 +vt 0.03774416 0.07415053 +vt 0.04094306 0.07862971 +vt 0.1016832 0.09164374 +vt 0.09883803 0.09094922 +vt 0.09891479 0.08520462 +vt 0.1042619 0.0865099 +vt 0.1676757 0.03694226 +vt 0.1651918 0.0384939 +vt 0.1611333 0.03442756 +vt 0.1658015 0.03151144 +vt 0.1912363 -0.02195618 +vt 0.1901345 -0.01924265 +vt 0.1844624 -0.02015598 +vt 0.1865332 -0.02525576 +vt 0.1938961 -0.05543725 +vt 0.1941619 -0.05252063 +vt 0.188703 -0.05072997 +vt 0.1882034 -0.05621142 +vt 0.1869404 -0.07582201 +vt 0.1883915 -0.07327805 +vt 0.1841661 -0.06938542 +vt 0.181439 -0.07416652 +vt 0.168425 -0.09411547 +vt 0.17082 -0.09242988 +vt 0.1686507 -0.08711007 +vt 0.1641495 -0.09027796 +vt 0.1343806 -0.1090326 +vt 0.1372798 -0.1086178 +vt 0.1377617 -0.102893 +vt 0.132313 -0.1036724 +vt 0.08892312 -0.1075429 +vt 0.09168401 -0.1085201 +vt 0.09476601 -0.1036716 +vt 0.08957721 -0.1018352 +vt 0.09643193 -0.03574762 +vt 0.1015547 -0.03314687 +vt 0.09960704 -0.03095962 +vt 0.08774839 -0.01684583 +vt 0.09349076 -0.01702365 +vt 0.09283228 -0.01416992 +vt 0.0883732 0.003083189 +vt 0.09327785 9.141681E-05 +vt 0.09411532 0.002897838 +vt 0.09920523 0.01728908 +vt 0.1018591 0.01219367 +vt 0.104026 0.01416395 +vt 0.1173727 0.01991855 +vt 0.1168658 0.01419583 +vt 0.1197526 0.01468956 +vt 0.1362766 0.01008976 +vt 0.1327344 0.005566602 +vt 0.1354243 0.004408223 +vt 0.1495769 -0.006988816 +vt 0.1441748 -0.008944235 +vt 0.1458406 -0.01135305 +vt 0.1547665 -0.02480536 +vt 0.1491183 -0.02375438 +vt 0.1493341 -0.02667513 +vt 0.1521016 -0.03955271 +vt 0.1476806 -0.03588372 +vt 0.1464465 -0.03853972 +vt 0.1426327 -0.0494878 +vt 0.1404973 -0.04415429 +vt 0.1381457 -0.04589992 +vt 0.1280411 -0.05304178 +vt 0.1286887 -0.04733328 +vt 0.1257907 -0.04775576 +vt 0.1112729 -0.04857598 +vt 0.1145472 -0.04385522 +vt 0.1117947 -0.0428546 +vt -0.01925859 -0.09492543 +vt -0.04739582 -0.1484828 +vt 0.01887481 -0.183304 +vt 0.04038937 -0.1946086 +vt 0.07298087 -0.2117334 +vt 0.1011181 -0.158176 +vt -0.07584015 -0.2038095 +vt 0.04388116 -0.1393391 +vt 0.02418621 -0.1032401 +vt -0.09553461 -0.1677214 +vt 0.1315396 -0.08233778 +vt 0.1614594 -0.03997254 +vt 0.1623041 -0.02574751 +vt 0.1290792 -0.001538218 +vt 0.1158744 -0.00225692 +vt 0.08308788 -0.04611148 +vt -0.1146819 -0.002224355 +vt -0.1281394 -0.0001328378 +vt -0.1607505 -0.02517925 +vt -0.1606603 -0.03892335 +vt -0.1303294 -0.08232759 +vt -0.08187822 -0.04610057 +vt 0.1761872 0.00281665 +vt 0.0495329 0.05231286 +vt 0.0296003 0.001283635 +vt 0.1562646 -0.04818683 +vt -0.02803462 -0.002995746 +vt -0.04778508 0.04613861 +vt -0.1158895 0.01945323 +vt -0.09795283 -0.02974924 +vt 0.1598823 -0.1181283 +vt 0.1725521 -0.1143785 +vt 0.1293396 0.01455333 +vt 0.1162949 0.01067727 +vt -0.1496373 -0.06816731 +vt -0.1461256 -0.08199582 +vt -0.1094933 -0.07019547 +vt -0.08631604 -0.06272942 +vt -0.01669354 -0.040302 +vt -0.02005536 -0.02695702 +vt -0.1387375 0.01089135 +vt -0.1745611 -0.003174862 +vt -0.1551686 -0.05128222 +vt -0.1207927 -0.03810034 +vt -0.004697493 -0.1857733 +vt -0.02549088 -0.1984441 +vt -0.01226941 -0.2093877 +vt -0.00250714 -0.2018675 +vt 0.11838 0.002467749 +vt 0.09373878 -0.04352144 +vt 0.1089817 -0.05078863 +vt 0.1338667 -0.004930898 +vt 0.03094996 -0.1966942 +vt 0.009991273 -0.1843896 +vt 0.007221079 -0.2009944 +vt 0.01800471 -0.2075378 +vt -0.1463661 -0.106612 +vt -0.178599 -0.06533841 +vt -0.1917697 -0.07483739 +vt -0.1600052 -0.1164726 +vt -0.1319706 0.009080201 +vt -0.1432129 0.004068629 +vt -0.1234977 -0.04423406 +vt -0.1119088 -0.03929095 +vt 0.03374007 -0.1410401 +vt 0.02583661 -0.1576048 +vt 0.08810279 -0.1901975 +vt 0.09600628 -0.1736328 +vt -0.06148138 -0.1647419 +vt -0.04154611 -0.1570065 +vt -0.04823479 -0.1399152 +vt -0.06817006 -0.1476506 +vt 0.05140932 -0.1468431 +vt 0.09211431 -0.094045 +vt 0.07804716 -0.08225654 +vt 0.03734215 -0.1350547 +vt -0.1537635 0.01624836 +vt -0.1683891 0.005160266 +vt -0.1435366 -0.02770256 +vt -0.128911 -0.01661446 +vt 0.1455823 0.06265985 +vt 0.1251772 0.0690218 +vt 0.1125808 0.02979761 +vt 0.1781429 0.004488161 +vt -0.1129602 0.0293547 +vt -0.1255565 0.06857891 +vt -0.1459617 0.06221696 +vt -0.1785222 0.00404527 +vt -0.1060857 -0.01845221 +vt -0.09235871 -0.03533731 +vt -0.08701126 -0.03123129 +vt -0.09994084 -0.01434067 +vt -0.04765669 -0.08376999 +vt -0.02907115 -0.1006888 +vt -0.02435714 -0.09702863 +vt -0.04303253 -0.07886229 +vt -0.002151884 -0.1088079 +vt 0.02796456 -0.1271303 +vt 0.03101487 -0.122718 +vt 0.001775936 -0.1043192 +vt 0.05886701 -0.1189734 +vt 0.0951404 -0.1315192 +vt 0.09643458 -0.126517 +vt 0.06089861 -0.114011 +vt 0.1270796 -0.09876398 +vt 0.1556626 -0.1006532 +vt 0.1559694 -0.09521968 +vt 0.1268031 -0.09361227 +vt 0.09717285 -0.03477595 +vt 0.1107512 -0.01786583 +vt 0.1059907 -0.01404294 +vt 0.09326299 -0.03097114 +vt -0.01803527 -0.1654639 +vt 8.364061E-05 -0.1447224 +vt -0.004552825 -0.1396722 +vt -0.0222452 -0.1610735 +vt -0.05364933 -0.1537718 +vt -0.01826955 -0.1329835 +vt -0.02304618 -0.1279096 +vt -0.05684879 -0.1476936 +vt -0.05818768 -0.1262471 +vt -0.02810534 -0.1139677 +vt -0.03086279 -0.1068086 +vt -0.06166584 -0.1202029 +vt -0.07696769 -0.09582 +vt -0.05035503 -0.09605492 +vt -0.04994784 -0.08867188 +vt -0.07699749 -0.08814688 +vt 0.1178641 0.003530652 +vt 0.131897 0.02499735 +vt 0.1023295 0.04093549 +vt -0.07787333 0.03500807 +vt -0.1093543 0.02701109 +vt -0.1466562 0.01002723 +vt -0.1669122 -0.008554081 +vt -0.1586389 -0.02860087 +vt -0.1300283 -0.02736481 +vt -0.09276924 -0.01814641 +vt -0.06151628 -0.001839681 +vt -0.04298054 0.01513339 +vt -0.05126414 0.03525578 +vt 0.1175996 0.004641907 +vt 0.1615023 0.001095054 +vt 0.1314568 0.02622249 +vt 0.1165258 -0.009088234 +vt 0.1784379 -0.0326355 +vt 0.1605096 -0.01142486 +vt 0.1131621 -0.01443155 +vt 0.1662572 -0.05340553 +vt 0.1762188 -0.03471524 +vt 0.103598 -0.02271854 +vt 0.1301205 -0.05711979 +vt 0.1593251 -0.05782629 +vt 0.09542285 -0.02701929 +vt 0.08605707 -0.05270578 +vt 0.1228762 -0.0606824 +vt 0.08825872 -0.02265114 +vt 0.04734813 -0.03551789 +vt 0.07936139 -0.04850363 +vt 0.08508834 -0.01132901 +vt 0.02324355 -0.009280944 +vt 0.04431035 -0.02461004 +vt 0.08629104 0.02017425 +vt 0.02959051 0.04328914 +vt 0.02446169 0.02264499 +vt 0.1001771 0.02972987 +vt 0.0740367 0.06066729 +vt 0.04698851 0.060065 +vt -0.1184706 -0.04032069 +vt -0.1197462 -0.0418433 +vt -0.1162202 -0.04350149 +vt -0.1197873 -0.04466743 +vt -0.1201214 -0.04662539 +vt -0.1162404 -0.04628028 +vt -0.1201339 -0.04726885 +vt -0.119463 -0.0491384 +vt -0.1162522 -0.0469311 +vt -0.1193659 -0.04891987 +vt -0.1178705 -0.05022722 +vt -0.1161383 -0.04673702 +vt -0.1170554 -0.04998279 +vt -0.1151128 -0.05039687 +vt -0.1152987 -0.04650491 +vt -0.1132533 -0.04959914 +vt -0.1113554 -0.04901346 +vt -0.1134153 -0.04570612 +vt -0.108995 -0.04652991 +vt -0.1076218 -0.0450948 +vt -0.1110306 -0.04320754 +vt -0.1059377 -0.04075522 +vt -0.1054364 -0.03883323 +vt -0.1093328 -0.03884345 +vt -0.1054465 -0.03420634 +vt -0.1059579 -0.03228703 +vt -0.1093428 -0.03421679 +vt -0.1078053 -0.02996314 +vt -0.1092189 -0.02856787 +vt -0.1111587 -0.03194707 +vt -0.1119008 -0.03028392 +vt -0.113835 -0.02983206 +vt -0.113725 -0.03372689 +vt -0.1158529 -0.03468866 +vt -0.117734 -0.03532633 +vt -0.1155839 -0.03857575 +vt -0.1163258 -0.0531723 +vt -0.1182761 -0.05635528 +vt -0.114582 -0.0575945 +vt -0.1135443 -0.05590086 +vt -0.114796 -0.05659211 +vt -0.1150177 -0.06031851 +vt -0.1111753 -0.05967222 +vt -0.1110573 -0.05768945 +vt -0.1169073 -0.0506005 +vt -0.1155067 -0.05406078 +vt -0.1123145 -0.05182658 +vt -0.1130597 -0.0499854 +vt -0.1203961 -0.0475342 +vt -0.1176032 -0.050011 +vt -0.1157372 -0.04659051 +vt -0.1172232 -0.04527263 +vt -0.1195086 -0.05407436 +vt -0.1158645 -0.05488396 +vt -0.1158936 -0.05098768 +vt -0.1178326 -0.05055691 +vt -0.1095557 -0.06348974 +vt -0.1060012 -0.06234902 +vt -0.1079932 -0.05900028 +vt -0.1098844 -0.05960725 +vt -0.09452452 -0.06165493 +vt -0.09194899 -0.05895276 +vt -0.09530023 -0.05696506 +vt -0.09667065 -0.05840286 +vt -0.08289598 -0.04405475 +vt -0.08176804 -0.04049627 +vt -0.08565168 -0.04018144 +vt -0.08625184 -0.04207487 +vt -0.08008452 -0.01812288 +vt -0.08060517 -0.01442639 +vt -0.08424349 -0.01582082 +vt -0.08396646 -0.01778769 +vt -0.08882825 0.001638857 +vt -0.09107651 0.004618864 +vt -0.09358182 0.001634712 +vt -0.09238555 4.908415E-05 +vt -0.1064724 -0.002648555 +vt -0.1100473 -0.001574047 +vt -0.110304 -0.005461973 +vt -0.1084017 -0.006033706 +vt -0.1173572 -0.03110122 +vt -0.1207772 -0.03259752 +vt -0.118455 -0.0357263 +vt -0.1166353 -0.03493014 +vt -0.09792487 -0.07962084 +vt -0.09944297 -0.08441568 +vt -0.09558443 -0.0849574 +vt -0.09445766 -0.08139854 +vt -0.09482317 -0.06815417 +vt -0.09453769 -0.0731755 +vt -0.09073859 -0.07231022 +vt -0.09095048 -0.06858326 +vt -0.101584 -0.04320369 +vt -0.09971651 -0.04787354 +vt -0.09638982 -0.04584501 +vt -0.09777594 -0.04237892 +vt -0.1141176 -0.02844466 +vt -0.1106105 -0.03204958 +vt -0.1083086 -0.0289058 +vt -0.1109117 -0.02623014 +vt -0.1212315 -0.04503378 +vt -0.116371 -0.04632639 +vt -0.11601 -0.04244677 +vt -0.1196176 -0.04148735 +vt -0.1029894 -0.07879646 +vt -0.09829292 -0.07699695 +vt -0.1002729 -0.07364114 +vt -0.1037588 -0.0749768 +vt -0.07224508 -0.08362933 +vt -0.06902823 -0.07976317 +vt -0.07239627 -0.07780406 +vt -0.0747839 -0.08067361 +vt -0.05104605 -0.05434688 +vt -0.04945697 -0.0495751 +vt -0.05330705 -0.04897617 +vt -0.05448651 -0.05251792 +vt -0.04308198 -0.007437879 +vt -0.04308359 -0.002408448 +vt -0.04692546 -0.003057904 +vt -0.04692427 -0.00679088 +vt -0.05225741 0.03717922 +vt -0.05415642 0.04183635 +vt -0.05746935 0.0397854 +vt -0.05605984 0.03632876 +vt -0.0931121 0.03868244 +vt -0.09760255 0.04094763 +vt -0.09875421 0.03722533 +vt -0.09542128 0.03554405 +vt -0.1141178 -0.04638098 +vt -0.118162 -0.04937097 +vt -0.1153566 -0.05207501 +vt -0.1123549 -0.04985575 +vt -0.0583641 -0.1057352 +vt -0.05830439 -0.1114542 +vt -0.05442711 -0.1110687 +vt -0.05447962 -0.1060396 +vt -0.06378214 -0.07360884 +vt -0.06285661 -0.07925271 +vt -0.0590825 -0.07828429 +vt -0.05989638 -0.07332115 +vt -0.07590272 -0.02858683 +vt -0.07402284 -0.03398829 +vt -0.07047077 -0.03238685 +vt -0.07212391 -0.02763688 +vt -0.0968169 0.004476152 +vt -0.09351604 -0.0001944261 +vt -0.09054566 0.002327199 +vt -0.09344837 0.006434439 +vt -0.1212493 -0.01997952 +vt -0.1159135 -0.02203822 +vt -0.1148382 -0.01829312 +vt -0.1195305 -0.01648274 +vt -0.08863503 -0.09739234 +vt -0.08363094 -0.09462306 +vt -0.08581197 -0.09139429 +vt -0.09021249 -0.09382956 +vt -0.03947185 -0.105857 +vt -0.03647403 -0.1009864 +vt -0.03996002 -0.0992458 +vt -0.04259626 -0.103529 +vt -0.01391982 -0.06691176 +vt -0.01222908 -0.06144813 +vt -0.01603867 -0.06063029 +vt -0.01752548 -0.06543492 +vt -0.0008041254 -0.00773139 +vt -2.665558E-05 -0.002065227 +vt -0.003918602 -0.001879346 +vt -0.004602302 -0.006862089 +vt 0.003750438 0.05390183 +vt 0.003633196 0.05961988 +vt -0.000240004 0.05919548 +vt -0.0001369035 0.05416711 +vt -0.02233339 0.09953071 +vt -0.02460578 0.1047791 +vt -0.02803034 0.1029206 +vt -0.02603202 0.09830518 +vt -0.06969444 -0.1040455 +vt -0.07123743 -0.1095527 +vt -0.06740721 -0.1102676 +vt -0.06605032 -0.1054247 +vt -0.007953277 -0.1133921 +vt -0.006152455 -0.1188205 +vt -0.002454261 -0.1175936 +vt -0.004255082 -0.1121653 +vt -0.02678531 -0.07096986 +vt -0.02539336 -0.07651714 +vt -0.02161414 -0.07556885 +vt -0.02300608 -0.07002155 +vt -0.04137872 -0.01275816 +vt -0.03995419 -0.01829717 +vt -0.03618061 -0.01732668 +vt -0.03760513 -0.01178767 +vt -0.06099595 0.04116375 +vt -0.05904111 0.03578895 +vt -0.0553794 0.03712073 +vt -0.05733424 0.04249554 +vt -0.1082244 0.03714041 +vt -0.103918 0.03337681 +vt -0.101354 0.03631065 +vt -0.1056604 0.04007425 +vt -0.04482549 -0.1241528 +vt -0.04122779 -0.1197068 +vt -0.0442567 -0.1172558 +vt -0.0478544 -0.1217018 +vt 0.006152604 -0.1188204 +vt 0.00795342 -0.1133921 +vt 0.004255225 -0.1121652 +vt 0.002454409 -0.1175936 +vt 0.02539349 -0.07651715 +vt 0.02678543 -0.07096987 +vt 0.0230062 -0.07002158 +vt 0.02161426 -0.07556885 +vt 0.03995427 -0.01829729 +vt 0.04137879 -0.01275828 +vt 0.0376052 -0.01178779 +vt 0.03618068 -0.0173268 +vt 0.05904088 0.03578909 +vt 0.06099571 0.0411639 +vt 0.05733399 0.04249567 +vt 0.05537916 0.03712087 +vt 0.1039181 0.03337665 +vt 0.1082245 0.03714025 +vt 0.1056605 0.0400741 +vt 0.1013541 0.03631051 +vt 0.04122806 -0.1197067 +vt 0.04482576 -0.1241527 +vt 0.04785467 -0.1217016 +vt 0.04425696 -0.1172557 +vt 0.03624807 -0.1015305 +vt 0.03888432 -0.1058136 +vt 0.04237031 -0.104073 +vt 0.0393725 -0.09920242 +vt 0.01187474 -0.06191884 +vt 0.01336156 -0.06672348 +vt 0.01717114 -0.06590564 +vt 0.0154804 -0.06044201 +vt -0.0003997443 -0.002471909 +vt 0.0002839572 -0.007454651 +vt 0.004175904 -0.007268771 +vt 0.003398428 -0.001602605 +vt -0.004117774 0.05928485 +vt -0.004220875 0.05425648 +vt -0.0003476736 0.05383208 +vt -0.0002304319 0.05955013 +vt 0.02402999 0.1046525 +vt 0.0220317 0.1000371 +vt 0.02545625 0.09817854 +vt 0.02772862 0.103427 +vt 0.07160417 -0.1090918 +vt 0.07024729 -0.1042488 +vt 0.06641706 -0.1049638 +vt 0.06796005 -0.110471 +vt 0.05878545 -0.1111143 +vt 0.05883796 -0.1060851 +vt 0.05496069 -0.1056997 +vt 0.05490097 -0.1114187 +vt 0.06338374 -0.07898952 +vt 0.06419762 -0.07402639 +vt 0.0604235 -0.07305796 +vt 0.05949799 -0.07870182 +vt 0.07458737 -0.03381977 +vt 0.07624052 -0.0290698 +vt 0.07268845 -0.02746836 +vt 0.07080856 -0.03286983 +vt 0.0941054 -0.0001887299 +vt 0.09700812 0.003918503 +vt 0.09403773 0.006440133 +vt 0.09073688 0.001769562 +vt 0.1164072 -0.02235989 +vt 0.1210995 -0.02054951 +vt 0.1200243 -0.01680442 +vt 0.1146884 -0.01886311 +vt 0.08370144 -0.095208 +vt 0.08810195 -0.09764326 +vt 0.09028299 -0.0944145 +vt 0.08527891 -0.09164521 +vt 0.06887458 -0.08073436 +vt 0.0712622 -0.08360391 +vt 0.07463025 -0.08164479 +vt 0.07141339 -0.07777865 +vt 0.04896037 -0.05042376 +vt 0.05013983 -0.05396551 +vt 0.05398991 -0.05336659 +vt 0.05240083 -0.0485948 +vt 0.04234412 -0.003056366 +vt 0.04234292 -0.006789345 +vt 0.0461848 -0.007438801 +vt 0.04618641 -0.002409371 +vt 0.05322722 0.04151522 +vt 0.05181772 0.03805858 +vt 0.05513063 0.03600763 +vt 0.05702965 0.04066475 +vt 0.09669086 0.04131561 +vt 0.09335794 0.03963432 +vt 0.09450961 0.03591203 +vt 0.09900004 0.03817721 +vt 0.1180802 -0.04839133 +vt 0.1150785 -0.04617207 +vt 0.1122731 -0.0488761 +vt 0.1163173 -0.05186611 +vt 0.09995203 -0.08357454 +vt 0.09882526 -0.08001568 +vt 0.09496672 -0.08055739 +vt 0.09648482 -0.08535223 +vt 0.09531248 -0.07257019 +vt 0.09552437 -0.06884323 +vt 0.09172527 -0.06797796 +vt 0.0914398 -0.07299928 +vt 0.1006434 -0.04754616 +vt 0.1020295 -0.04408007 +vt 0.09870285 -0.04205155 +vt 0.09683532 -0.0467214 +vt 0.1115922 -0.03210023 +vt 0.1141953 -0.02942456 +vt 0.1118935 -0.02628079 +vt 0.1083864 -0.02988571 +vt 0.1171874 -0.0468741 +vt 0.120795 -0.04591469 +vt 0.120434 -0.04203507 +vt 0.1155735 -0.04332768 +vt 0.09863378 -0.07791909 +vt 0.1021196 -0.07925474 +vt 0.1040996 -0.07589893 +vt 0.09940316 -0.07409943 +vt 0.0920755 -0.06003872 +vt 0.09344592 -0.06147652 +vt 0.09679717 -0.05948881 +vt 0.09422164 -0.05678665 +vt 0.08140508 -0.0415275 +vt 0.08200524 -0.04342094 +vt 0.08588888 -0.0431061 +vt 0.08476095 -0.0395476 +vt 0.07983223 -0.01519949 +vt 0.07955518 -0.01716634 +vt 0.0831935 -0.01856078 +vt 0.08371416 -0.01486429 +vt 0.09002554 0.004317738 +vt 0.08882927 0.002732111 +vt 0.0913346 -0.0002520515 +vt 0.09358285 0.002727961 +vt 0.1090216 -0.00119558 +vt 0.1071194 -0.001767317 +vt 0.1073761 -0.005655243 +vt 0.110951 -0.004580739 +vt 0.1202407 -0.03164484 +vt 0.118421 -0.03084868 +vt 0.1160988 -0.03397747 +vt 0.1195188 -0.03547377 +vt 0.1183806 -0.05526698 +vt 0.1173429 -0.05357335 +vt 0.1136488 -0.05481256 +vt 0.1155991 -0.05799554 +vt 0.1156223 -0.05940764 +vt 0.1155043 -0.05742487 +vt 0.1116619 -0.05677858 +vt 0.1118837 -0.06050498 +vt 0.116444 -0.05349801 +vt 0.1171893 -0.05165683 +vt 0.113997 -0.04942262 +vt 0.1125965 -0.05288291 +vt 0.118693 -0.04992367 +vt 0.1201791 -0.04860578 +vt 0.1183131 -0.04518529 +vt 0.1155201 -0.04766209 +vt 0.1168597 -0.05533666 +vt 0.1187987 -0.05490589 +vt 0.1188277 -0.05100961 +vt 0.1151836 -0.05181919 +vt 0.1066318 -0.06324215 +vt 0.1085231 -0.06384911 +vt 0.110515 -0.06050037 +vt 0.1069606 -0.05935965 +vt 0.1081192 -0.04599337 +vt 0.1115281 -0.04410611 +vt 0.1101548 -0.042671 +vt 0.1054337 -0.0398602 +vt 0.10933 -0.03987041 +vt 0.1088288 -0.03794842 +vt 0.1054492 -0.03317923 +vt 0.1088341 -0.03510899 +vt 0.1093455 -0.03318969 +vt 0.1083282 -0.02907911 +vt 0.110268 -0.03245831 +vt 0.1116816 -0.03106304 +vt 0.1128084 -0.029803 +vt 0.1126984 -0.03369783 +vt 0.1146326 -0.03324596 +vt 0.1168774 -0.03475943 +vt 0.1147273 -0.03800885 +vt 0.1166084 -0.03864652 +vt 0.1193091 -0.04091385 +vt 0.1157832 -0.04257206 +vt 0.1170587 -0.04409465 +vt 0.1202124 -0.04560243 +vt 0.1163314 -0.04525731 +vt 0.1166655 -0.04721528 +vt 0.1200449 -0.0482921 +vt 0.116834 -0.0460848 +vt 0.1161632 -0.04795434 +vt 0.1187905 -0.04977063 +vt 0.1170584 -0.04628044 +vt 0.115563 -0.04758779 +vt 0.1161387 -0.05044588 +vt 0.1163246 -0.04655394 +vt 0.1143819 -0.04696801 +vt 0.1122271 -0.04955648 +vt 0.1142871 -0.04624914 +vt 0.1123891 -0.04566346 +vt 0.04763446 -0.1268007 +vt 0.09661673 -0.09765668 +vt 0.07673758 -0.06480025 +vt 0.02771856 -0.09396652 +vt 0.09311175 -0.09792099 +vt 0.1029102 -0.09117419 +vt 0.08068778 -0.05984876 +vt 0.07091654 -0.066569 +vt -0.1101001 -0.01061499 +vt -0.1410073 -0.03340761 +vt -0.1147101 -0.06909938 +vt -0.08380288 -0.04630678 +vt 0.03116373 0.009928353 +vt 0.04501501 0.04076616 +vt -0.00706139 0.06403745 +vt -0.02423326 0.02316533 +vt 0.02066617 0.004409058 +vt 0.02442112 0.02302219 +vt 0.007248781 0.06389411 +vt -0.04492988 0.04095955 +vt -0.03170482 0.009727502 +vt -0.02132595 0.003911066 +vt -0.03181524 -0.09116915 +vt -0.07404795 -0.06699935 +vt -0.09312285 -0.1003296 +vt -0.0500926 -0.1249558 +vt 0.09475888 -0.04606941 +vt 0.1112465 -0.02454989 +vt 0.110593 -0.01560926 +vt 0.08997145 -0.04239624 +vt 0.1082337 -0.02128381 +vt 0.1312471 -0.036727 +vt 0.138745 -0.034251 +vt 0.1071807 -0.01237845 +vt 0.1301612 -0.02741311 +vt 0.1146507 -0.05038095 +vt 0.1190037 -0.05323704 +vt 0.1376385 -0.02490025 +vt -0.03884246 -0.1250261 +vt -0.02631976 -0.1009214 +vt -0.02365235 -0.09550014 +vt -0.0416454 -0.1294323 +vt 0.07177257 -0.01831868 +vt 0.08319161 -0.002071376 +vt 0.0786201 0.00525282 +vt 0.0628065 -0.0167613 +vt 0.07401023 -0.0758534 +vt 0.08941635 -0.08892536 +vt 0.09755147 -0.08556864 +vt 0.07648306 -0.06756114 +vt 0.03257636 0.04840033 +vt 0.03241096 0.02747524 +vt 0.04118943 0.0243472 +vt 0.0405803 0.05205799 +vt 0.04262082 -0.1229679 +vt 0.04219233 -0.1027666 +vt 0.03340794 -0.1003315 +vt 0.03446617 -0.1274734 +vt 0.114647 -0.05392838 +vt 0.1275724 -0.03747192 +vt 0.1110272 -0.02587573 +vt 0.09873018 -0.0414794 +vt -0.07469438 -0.08083861 +vt -0.08292872 -0.09399129 +vt -0.0544889 -0.1122878 +vt -0.04625456 -0.09913511 +vt 0.05722575 -0.1096761 +vt 0.07526475 -0.09965758 +vt 0.06775793 -0.08607651 +vt 0.04971893 -0.09609508 +vt 0.1215574 -0.04231191 +vt 0.1359962 -0.02064274 +vt 0.1232221 -0.0118326 +vt 0.1087832 -0.03350177 +vt -0.1294313 -0.006633808 +vt -0.1419211 -0.01584267 +vt -0.1297093 -0.03247546 +vt -0.1172195 -0.02326659 +vt 0.03040331 0.06382088 +vt 0.01131862 0.07166533 +vt 0.00347345 0.05258093 +vt 0.03400034 0.03803178 +vt -0.003542327 0.05241593 +vt -0.0113875 0.07150033 +vt -0.03047219 0.06365587 +vt -0.03406923 0.03786677 +vt -0.02594484 0.06933172 +vt -0.02357323 0.06400996 +vt 0.01218136 0.07994381 +vt 0.009809746 0.08526556 +vt -0.1063443 0.0332952 +vt -0.1007181 0.03178152 +vt -0.09054838 0.06958173 +vt -0.09617463 0.07109541 +vt -0.06264389 -0.1021499 +vt -0.05978769 -0.09707175 +vt -0.0939057 -0.07788219 +vt -0.09676191 -0.08296036 +vt -0.03204493 -0.09149511 +vt -0.03037773 -0.08591244 +vt -0.06788523 -0.07471128 +vt -0.06955242 -0.08029395 +vt -0.01615712 -0.04623475 +vt -0.01475128 -0.0405806 +vt -0.05273898 -0.03113535 +vt -0.05414483 -0.0367895 +vt -0.00127189 0.01237704 +vt 0.0002804474 0.01799274 +vt -0.03744892 0.0284222 +vt -0.03900125 0.02280651 +vt 0.02357329 0.06401004 +vt 0.02594491 0.06933181 +vt -0.009809682 0.08526566 +vt -0.0121813 0.07994389 +vt 0.100718 0.03178178 +vt 0.1063442 0.03329547 +vt 0.09617442 0.07109565 +vt 0.09054817 0.06958196 +vt 0.05978767 -0.09707176 +vt 0.06264388 -0.1021499 +vt 0.0967619 -0.08296038 +vt 0.0939057 -0.07788222 +vt 0.03037769 -0.08591235 +vt 0.03204488 -0.09149502 +vt 0.06955238 -0.08029386 +vt 0.06788518 -0.07471119 +vt 0.01475128 -0.0405807 +vt 0.01615712 -0.04623484 +vt 0.05414483 -0.0367896 +vt 0.05273899 -0.03113544 +vt -0.0002804709 0.01799279 +vt 0.001271869 0.01237709 +vt 0.03900123 0.02280656 +vt 0.03744889 0.02842224 +vt -0.1197207 -0.04592466 +vt -0.1148807 -0.0491681 +vt -0.1090674 -0.04955697 +vt -0.1038385 -0.04698709 +vt -0.1005951 -0.04214707 +vt -0.1002062 -0.03633375 +vt -0.1027761 -0.03110484 +vt -0.1076161 -0.02786141 +vt -0.1134294 -0.02747254 +vt -0.1186583 -0.03004242 +vt -0.1219018 -0.03488244 +vt -0.1222906 -0.04069576 +vt 0.1222906 -0.04069576 +vt 0.1219017 -0.03488246 +vt 0.1186583 -0.03004242 +vt 0.1134294 -0.02747254 +vt 0.1076161 -0.02786142 +vt 0.1027761 -0.03110485 +vt 0.1002062 -0.03633376 +vt 0.1005951 -0.04214707 +vt 0.1038385 -0.0469871 +vt 0.1090674 -0.04955699 +vt 0.1148807 -0.04916811 +vt 0.1197207 -0.04592467 +vt -0.03754407 -0.08451729 +vt -0.0119699 -0.1171513 +vt -0.003509426 -0.1166991 +vt -0.0350825 -0.07641021 +vt 0.161051 0.1671961 +vt 0.1679755 0.199165 +vt 0.1613826 0.2073828 +vt 0.1511131 0.1619046 +vt -0.0755796 0.1503879 +vt -0.07404654 0.1529308 +vt -0.08330698 0.1577004 +vt -0.08706173 0.1509046 +vt -0.1664839 0.1411649 +vt -0.1949203 0.1170036 +vt -0.1955969 0.1067952 +vt -0.1560585 0.1393032 +vt -0.1640416 0.1334818 +vt -0.1604248 0.1485536 +vt -0.1540362 0.1757297 +vt -0.1993922 0.1865092 +vt -0.2111404 0.1366924 +vt -0.1657702 0.1259096 +vt 0.2087188 0.1354567 +vt 0.1969874 0.1852774 +vt 0.1517453 0.1757101 +vt 0.163463 0.1258861 +vt -0.000834542 0.1151756 +vt -0.02344374 0.1448597 +vt -0.03445989 0.146277 +vt -0.003706226 0.1053602 +vt -0.03685765 -0.06862216 +vt -0.01114316 -0.04158405 +vt -0.01240017 -0.03020239 +vt -0.04786047 -0.06711458 +vt -0.209548 0.03545836 +vt -0.1916959 0.002690944 +vt -0.1812905 0.0007202808 +vt -0.2051178 0.04602275 +vt -0.1090317 0.08127375 +vt -0.1383436 0.05818238 +vt -0.1152522 0.0288704 +vt -0.08594029 0.05196179 +vt 0.1945256 0.1183551 +vt 0.2221766 0.08801976 +vt 0.2332181 0.09122286 +vt 0.1987363 0.1290522 +vt 0.2213877 0.09151869 +vt 0.2139441 0.05115283 +vt 0.2231721 0.04429565 +vt 0.2324546 0.09463339 +vt -0.07257438 -0.1236667 +vt -0.08889367 -0.08600392 +vt -0.1003766 -0.0854549 +vt -0.08002578 -0.1324219 +vt 0.1207736 0.02209052 +vt 0.1449952 0.05522844 +vt 0.1118573 0.07945007 +vt 0.09870739 0.06098447 +vt 0.08969367 0.04846319 +vt 0.08763568 0.04631213 +vt 0.07504915 -0.0847731 +vt 0.05721877 -0.1175518 +vt 0.06067494 -0.1273047 +vt 0.08532222 -0.08244355 +vt 0.2216471 0.04172448 +vt 0.1897259 0.03595232 +vt 0.1836051 0.02669532 +vt 0.2291677 0.03461629 +vt 0.2340119 0.1052966 +vt 0.2087451 0.132755 +vt 0.1975337 0.1317337 +vt 0.2324541 0.09430921 +vt 0.2111511 -0.02955879 +vt 0.2422669 -0.02039698 +vt 0.2335904 0.01589282 +vt 0.2022109 0.006666915 +vt 0.02982512 0.22648 +vt 0.05437964 0.2536196 +vt 0.0518639 0.2617065 +vt 0.02136741 0.2269226 +vt -0.2063407 0.1118637 +vt -0.17553 0.1396075 +vt -0.1765591 0.1480173 +vt -0.214597 0.1137657 +vt -0.222398 0.06435262 +vt -0.186294 0.05672755 +vt -0.1804229 0.062828 +vt -0.2261606 0.07193734 +vt -0.2353688 0.01846658 +vt -0.2452127 -0.02180623 +vt -0.2105159 -0.03344477 +vt -0.2003778 0.006754976 +vt -0.1465493 0.1356213 +vt -0.1424901 0.150329 +vt -0.1516626 0.1530685 +vt -0.155848 0.1381413 +vt 0.1911738 0.01752995 +vt 0.1931435 0.01374543 +vt 0.1997379 0.02180867 +vt 0.1050954 0.03855851 +vt 0.1088469 0.03619674 +vt 0.1175693 0.04892271 +vt 0.1138671 0.051043 +vt -0.06963306 0.1587884 +vt -0.05898583 0.1788013 +vt -0.06566723 0.1881553 +vt -0.07888825 0.1635658 +vt -0.1893817 0.005180431 +vt -0.18755 0.009217359 +vt -0.1964976 0.01279098 +vt 0.1376798 -0.00878633 +vt 0.1454557 -0.04892179 +vt 0.1640334 -0.04417777 +vt 0.1622285 -0.03293257 +vt 0.1567778 -0.005231366 +vt -0.1376841 -0.007401187 +vt -0.1568384 -0.003627115 +vt -0.1636504 -0.03826256 +vt -0.1651228 -0.04565459 +vt -0.1462564 -0.04981355 +vt -0.1096937 0.1540182 +vt -0.1101766 0.15036 +vt -0.09646509 0.1480782 +vt -0.09596911 0.1518167 +vt 0.1567288 -0.005093081 +vt 0.1621672 -0.0327967 +vt 0.1878959 -0.0279456 +vt 0.1823899 0.0001783877 +vt -0.1139362 0.1491936 +vt -0.1331981 0.1517219 +vt -0.1379502 0.1178395 +vt -0.1386883 0.1124719 +vt -0.1193959 0.1094875 +vt -0.1190175 0.1124691 +vt -0.1143305 0.145539 +vt 0.1083266 0.1455957 +vt 0.1087015 0.1433086 +vt 0.1144601 0.1089862 +vt 0.1149225 0.1060638 +vt 0.1339802 0.1092295 +vt 0.1271436 0.1492785 +vt -0.1165969 0.04248785 +vt -0.1177851 0.03561094 +vt -0.09016101 0.05758492 +vt -0.09347977 0.06185703 +vt 0.1340264 0.1482206 +vt 0.139331 0.1131703 +vt 0.1652636 0.1167793 +vt 0.1599561 0.1518469 +vt -0.1608281 -0.03433891 +vt -0.1551139 -0.004725296 +vt -0.1807986 -7.700261E-05 +vt -0.186654 -0.03003647 +vt -0.1354193 0.1198774 +vt -0.1301389 0.1536815 +vt -0.1560078 0.1578135 +vt -0.1612619 0.1235524 +vt -0.0954657 0.0543163 +vt -0.1126602 0.04018849 +vt -0.1130329 0.03374313 +vt -0.08944646 0.05312285 +vt -0.1175115 0.1132611 +vt -0.1179183 0.1102832 +vt -0.1041666 0.1082572 +vt -0.1037598 0.1112352 +vt 0.1061188 0.07926904 +vt 0.08576064 0.05278756 +vt 0.1194443 0.02609376 +vt 0.1392085 0.05474021 +vt -0.1382752 -0.006160717 +vt -0.1471594 -0.04850866 +vt -0.1335658 -0.05140822 +vt -0.1245525 -0.0426903 +vt -0.1195771 -0.01888054 +vt -0.1246645 -0.008974047 +vt 0.1194295 0.1009374 +vt 0.1190202 0.1038699 +vt 0.1052679 0.1018483 +vt 0.1056772 0.09891584 +vt 0.1471737 -0.0479813 +vt 0.138365 -0.005915588 +vt 0.1247551 -0.008732138 +vt 0.1196091 -0.01834487 +vt 0.1245054 -0.04189015 +vt 0.133581 -0.05088418 +vt 0.01247086 0.1032091 +vt 0.01078934 0.1007197 +vt 0.01994432 0.09437704 +vt 0.02143041 0.09699328 +vt -0.1399328 -0.007355803 +vt -0.1488057 -0.04757806 +vt -0.1352562 -0.05067828 +vt -0.1264008 -0.04333554 +vt -0.1216713 -0.02145411 +vt -0.1263651 -0.01037187 +vt 0.1105235 0.1491371 +vt 0.1101658 0.1514353 +vt 0.09644113 0.1492337 +vt 0.09681235 0.1468533 +vt 0.1465459 -0.04600533 +vt 0.1384849 -0.00592503 +vt 0.1248653 -0.00869705 +vt 0.1199072 -0.01937127 +vt 0.1241877 -0.04121033 +vt 0.1329433 -0.04886377 +vt 0.04746811 0.1351918 +vt 0.04509358 0.1322636 +vt 0.05499186 0.1254139 +vt 0.05696146 0.128233 +vt 0.1148334 0.07574914 +vt 0.1323226 0.06175488 +vt 0.1338889 0.06405704 +vt 0.1169266 0.07847933 +vt 0.1672449 0.05854324 +vt 0.1778579 0.05406207 +vt 0.178983 0.05619165 +vt 0.1684109 0.06107131 +vt 0.1497671 0.02721854 +vt 0.1610895 0.02179263 +vt 0.1622782 0.02450332 +vt 0.1507518 0.0300545 +vt 0.09161895 0.04617844 +vt 0.1102174 0.03048621 +vt 0.1115608 0.03317202 +vt 0.09321104 0.04873332 +vt -0.1122715 0.02665248 +vt -0.1063867 0.03135266 +vt -0.1052193 0.03822978 +vt -0.1257992 0.06709275 +vt -0.13498 0.06034335 +vt -0.1098154 0.0397841 +vt -0.1246856 0.06093549 +vt -0.1305724 0.0623522 +vt -0.1101743 0.03333795 +vt -0.1244365 0.06199468 +vt -0.1080003 0.07489077 +vt -0.1077773 0.08110042 +vt -0.1303236 0.0634103 +vt -0.1108301 0.0752293 +vt -0.0952724 0.0553183 +vt -0.08925299 0.05412571 +vt -0.1105941 0.08143847 +vt -0.1970912 0.002706328 +vt -0.2018249 -0.01903853 +vt -0.1881264 -0.02202054 +vt -0.1833928 -0.0002756967 +vt 0.1745137 0.1265451 +vt 0.1702063 0.1520393 +vt 0.156383 0.1497038 +vt 0.1606903 0.1242096 +vt 0.2021942 -0.01882714 +vt 0.1979624 0.001631367 +vt 0.1842838 -0.001440217 +vt 0.1885156 -0.02189872 +vt -0.1689606 0.1566147 +vt -0.172984 0.1316687 +vt -0.1591763 0.1292431 +vt -0.1551528 0.1541891 +vt -0.1095135 0.07467864 +vt -0.1259638 0.06180171 +vt -0.1111152 0.04063592 +vt -0.09393744 0.05478289 +vt 0.1229663 0.1119246 +vt 0.1287889 0.1152997 +vt 0.1202558 0.1300208 +vt 0.1144332 0.1266457 +vt 0.02787518 0.06237542 +vt 0.03339209 0.06622998 +vt 0.02364673 0.08017816 +vt 0.01812981 0.07632358 +vt -0.0711685 -0.003299249 +vt -0.06547554 0.0002901892 +vt -0.07455057 0.0146835 +vt -0.08024354 0.01109406 +vt -0.1680926 -0.02833479 +vt -0.1618297 -0.02587108 +vt -0.1680586 -0.0100368 +vt -0.1743215 -0.01250051 +vt -0.2293334 0.02354984 +vt -0.222612 0.02389164 +vt -0.2234761 0.04088508 +vt -0.2301975 0.04054328 +vt -0.2085004 0.1004245 +vt -0.2020636 0.0984593 +vt -0.1970952 0.1147332 +vt -0.203532 0.1166983 +vt -0.1287886 0.1152998 +vt -0.122966 0.1119247 +vt -0.1144329 0.1266458 +vt -0.1202555 0.1300209 +vt -0.03339177 0.06623014 +vt -0.02787488 0.06237558 +vt -0.01812952 0.07632376 +vt -0.02364642 0.08017833 +vt 0.06547586 0.0002903285 +vt 0.07116883 -0.003299105 +vt 0.08024386 0.01109421 +vt 0.0745509 0.01468364 +vt 0.1618298 -0.02587098 +vt 0.1680927 -0.02833469 +vt 0.1743216 -0.01250041 +vt 0.1680587 -0.0100367 +vt 0.2226119 0.02389158 +vt 0.2293333 0.02354977 +vt 0.2301975 0.0405432 +vt 0.2234761 0.04088501 +vt 0.2020635 0.09845936 +vt 0.2085003 0.1004245 +vt 0.2035318 0.1166984 +vt 0.1970951 0.1147332 +vt 0.2368823 0.03564519 +vt 0.2406615 0.04121393 +vt 0.2411501 0.04792627 +vt 0.238217 0.05398358 +vt 0.2326483 0.05776284 +vt 0.2259359 0.05825137 +vt 0.2198786 0.05531831 +vt 0.2160994 0.04974954 +vt 0.2156109 0.04303723 +vt 0.2185439 0.03697992 +vt 0.2241127 0.03320067 +vt 0.230825 0.03271212 +vt -0.230825 0.03271217 +vt -0.2241127 0.03320072 +vt -0.2185439 0.03697997 +vt -0.2156108 0.04303728 +vt -0.2160994 0.04974959 +vt -0.2198786 0.05531837 +vt -0.2259359 0.05825144 +vt -0.2326483 0.05776288 +vt -0.238217 0.05398364 +vt -0.2411501 0.04792633 +vt -0.2406615 0.04121401 +vt -0.2368823 0.03564524 +vt -0.1379121 -0.006389601 +vt -0.1389415 -0.01376572 +vt -0.1368287 -0.02021975 +vt -0.1305584 -0.0258148 +vt -0.1230802 -0.02949552 +vt -0.1164957 -0.03011391 +vt -0.1095179 -0.02834958 +vt -0.08434673 0.004107502 +vt -0.1160812 0.02595 +vt 0.0842748 0.004244292 +vt 0.1094427 -0.02821527 +vt 0.1162554 -0.02991018 +vt 0.1227932 -0.02892599 +vt 0.1304712 -0.02539129 +vt 0.1365426 -0.01965161 +vt 0.1389667 -0.01365929 +vt 0.1378391 -0.00625816 +vt 0.1160114 0.02608361 +vt -0.08417952 0.1260876 +vt -0.0779686 0.1481866 +vt -0.07960873 0.1544842 +vt -0.0883299 0.1234444 +vt -0.1044373 0.07784341 +vt -0.1100646 0.07290541 +vt -0.08867775 0.04878156 +vt -0.08307787 0.05369176 +vt -0.1109246 0.07614602 +vt -0.1423512 0.05301844 +vt -0.1231708 0.02710238 +vt -0.09174416 0.05022999 +vt 0.1282898 0.02583403 +vt 0.1468758 0.05217962 +vt 0.1132504 0.07576905 +vt 0.09466434 0.04942347 +vt 0.05484192 0.1557564 +vt 0.04692913 0.1527858 +vt 0.05845275 0.1226777 +vt 0.06625631 0.1256046 +vt 0.009797527 0.1526036 +vt 0.002653292 0.1482733 +vt 0.01912124 0.1205565 +vt 0.02630628 0.1249133 +vt 0.1040669 0.1386532 +vt 0.0974872 0.1380269 +vt 0.1011554 0.1059979 +vt 0.1077369 0.1066251 +vt -0.05518378 0.1192464 +vt -0.05981365 0.1147165 +vt -0.03934328 0.08981226 +vt -0.0344613 0.09455056 +vt 0.1444521 0.09875127 +vt 0.1376626 0.1005662 +vt 0.1308719 0.06904767 +vt 0.1378352 0.06719869 +vt -0.02647427 0.1645773 +vt 0.0001053331 0.1486222 +vt 0.006811374 0.1513081 +vt -0.02625291 0.1710794 +vt 0.01773436 0.1352156 +vt 0.004762732 0.1162768 +vt 0.006431194 0.1106882 +vt 0.02465759 0.1372838 +vt -0.03705547 0.1062545 +vt -0.06551266 0.1185521 +vt -0.06990808 0.1163452 +vt -0.03458258 0.1009745 +vt 0.1053001 0.04478646 +vt 0.118944 0.06324685 +vt 0.1068614 0.07217692 +vt 0.09321756 0.05371653 +vt -0.1215537 0.01232012 +vt -0.09590171 -0.005087896 +vt -0.08746505 0.007344139 +vt -0.1131171 0.02475216 +vt -0.1189431 0.06324556 +vt -0.1052992 0.04478515 +vt -0.09321669 0.05371521 +vt -0.1068606 0.07217561 +vt 0.09590088 -0.005088407 +vt 0.1215529 0.01231961 +vt 0.1131162 0.02475166 +vt 0.0874642 0.007343619 +vt -0.02417152 0.1224303 +vt -0.01388075 0.1429496 +vt -0.04159145 0.1568486 +vt -0.05188219 0.1363293 +vt -0.1163543 0.02809447 +vt -0.09636042 0.01315004 +vt -0.09103434 0.0202757 +vt -0.1110282 0.03522015 +vt 0.09103434 0.0202757 +vt 0.09636043 0.01315003 +vt 0.1163543 0.02809449 +vt 0.1110282 0.03522016 +vt -0.02612792 0.1246463 +vt -0.01477136 0.1442663 +vt -0.03637509 0.1567711 +vt -0.04773163 0.1371511 +vt 0.03637513 0.1567711 +vt 0.01477141 0.1442663 +vt 0.02612796 0.1246463 +vt 0.04773168 0.1371511 +vt -0.1021679 0.06944185 +vt -0.1092017 0.06399494 +vt -0.0953216 0.04607122 +vt -0.08828785 0.05151814 +vt 0.09532157 0.04607118 +vt 0.1092017 0.06399488 +vt 0.1021679 0.0694418 +vt 0.08828783 0.05151808 +vt -0.1081349 0.02590448 +vt -0.0761532 0.006461107 +vt -0.06036826 0.03242519 +vt -0.09234999 0.05186855 +vt 0.06036827 0.03242517 +vt 0.07615319 0.006461082 +vt 0.1081349 0.02590445 +vt 0.09234999 0.05186854 +vt -0.01236932 0.1308632 +vt -0.005800515 0.1443484 +vt -0.03944904 0.160739 +vt -0.04601785 0.1472538 +vt 0.03944902 0.160739 +vt 0.005800494 0.1443484 +vt 0.01236931 0.1308632 +vt 0.04601784 0.1472538 +vt -0.08240658 0.09700637 +vt -0.1061196 0.07800665 +vt -0.09674039 0.06630068 +vt -0.07302736 0.08530038 +vt 0.09674039 0.06630068 +vt 0.1061196 0.07800665 +vt 0.08240657 0.09700636 +vt 0.07302734 0.08530038 +vt -0.08513773 0.1372626 +vt -0.08798469 0.1256052 +vt -0.06927218 0.1210353 +vt -0.06642523 0.1326926 +vt 0.06927219 0.1210352 +vt 0.0879847 0.1256052 +vt 0.08513774 0.1372626 +vt 0.06642524 0.1326926 +vt -0.08362372 0.07491252 +vt -0.0725309 0.07948956 +vt -0.07710794 0.09058239 +vt -0.08820076 0.08600533 +vt 0.07710798 0.09058239 +vt 0.07253093 0.07948957 +vt 0.08362375 0.07491253 +vt 0.08820081 0.08600534 +vt -0.1013297 0.01729527 +vt -0.1179062 0.0271066 +vt -0.1240184 0.01677988 +vt -0.1074419 0.006968555 +vt 0.1240184 0.01677993 +vt 0.1179062 0.02710664 +vt 0.1013297 0.0172953 +vt 0.1074419 0.006968589 +vt -0.09435661 0.1142987 +vt -0.09393249 0.1043079 +vt -0.07846643 0.1042131 +vt -0.07946298 0.1141631 +vt 0.05515666 0.1184476 +vt 0.06652214 0.120228 +vt 0.06498449 0.1301079 +vt 0.05379376 0.1283531 +vt -0.01984639 0.1113829 +vt -0.01250179 0.1148767 +vt -0.01642576 0.1240732 +vt -0.02369541 0.120611 +vt 0.05289934 0.1057003 +vt 0.04820561 0.09687076 +vt 0.05956708 0.09195158 +vt 0.06408443 0.1008727 +vt -0.08116271 0.0027896 +vt -0.09166908 0.007016351 +vt -0.09303425 -0.00508613 +vt -0.07814847 -0.004673041 +vt 0.09263804 -0.004942753 +vt 0.09110127 0.007339431 +vt 0.08054278 0.0027775 +vt 0.07717726 -0.0046236 +vt -0.08307274 0.1258952 +vt -0.0841323 0.1179657 +vt -0.07029705 0.116117 +vt -0.06923749 0.1240465 +vt 0.07029705 0.116117 +vt 0.08413231 0.1179657 +vt 0.08307275 0.1258952 +vt 0.06923749 0.1240465 +vt -0.07105903 0.08539985 +vt -0.06364006 0.08839298 +vt -0.06663319 0.09581195 +vt -0.07405216 0.09281883 +vt 0.06663321 0.09581196 +vt 0.06364008 0.08839299 +vt 0.07105906 0.08539985 +vt 0.07405218 0.09281883 +vt -0.08890134 0.002112088 +vt -0.1021517 0.006500701 +vt -0.104667 -0.001093595 +vt -0.09141662 -0.005482208 +vt 0.104667 -0.001093545 +vt 0.1021517 0.006500752 +vt 0.08890134 0.002112137 +vt 0.09141663 -0.005482158 +vt -0.06205052 0.05341439 +vt -0.05460511 0.0498918 +vt -0.05158318 0.05659941 +vt -0.0589976 0.06010795 +vt 0.05185686 0.05666674 +vt 0.05487686 0.04995825 +vt 0.06249545 0.05362581 +vt 0.05944446 0.06032027 +vt -0.003462554 0.1251946 +vt 0.009132086 0.1452547 +vt 0.002055332 0.1498196 +vt -0.01035349 0.1296441 +vt -0.002160683 0.1497585 +vt -0.009256067 0.1451598 +vt 0.003337014 0.1250987 +vt 0.01024656 0.129582 +vt -0.08530183 0.1009883 +vt -0.08969478 0.0950869 +vt -0.07069486 0.08094348 +vt -0.06630191 0.08684485 +vt 0.07019994 0.08035836 +vt 0.08928765 0.0943831 +vt 0.08493156 0.1003117 +vt 0.06584387 0.08628699 +vt -0.003738456 0.1302362 +vt -0.01028087 0.1347152 +vt -0.01486141 0.1278025 +vt -0.008439933 0.1233468 +vt 0.01631898 0.127962 +vt 0.009870285 0.1375071 +vt 0.003330963 0.1330703 +vt 0.00991109 0.1236153 +vt -0.0673781 0.057111 +vt -0.07003312 0.0516478 +vt -0.06299637 0.04841677 +vt -0.06027592 0.0538477 +vt 0.08245368 0.02161267 +vt 0.08853001 0.02666506 +vt 0.08424544 0.03192306 +vt 0.07818564 0.02680991 +vt 0.07032194 0.06810678 +vt 0.07983292 0.07460489 +vt 0.0738643 0.07770211 +vt 0.06689505 0.07312088 +vt -0.07408273 0.07923669 +vt -0.08012749 0.07616182 +vt -0.07064708 0.06961919 +vt -0.06719671 0.07461717 +vt -0.06581512 0.05482125 +vt -0.06147989 0.0527826 +vt -0.05547544 0.06555115 +vt -0.05981068 0.0675898 +vt 0.05547541 0.0655511 +vt 0.06147986 0.05278255 +vt 0.06581509 0.0548212 +vt 0.05981065 0.06758975 +vt -0.004706996 0.122759 +vt -0.001805435 0.126571 +vt -0.005617436 0.1294726 +vt -0.008518997 0.1256606 +vt 0.005617463 0.1294726 +vt 0.001805465 0.126571 +vt 0.004707026 0.122759 +vt 0.008519024 0.1256606 +vt -0.06598134 0.08274151 +vt -0.07339738 0.0707377 +vt -0.06932178 0.06821977 +vt -0.06190575 0.08022358 +vt 0.0693218 0.0682198 +vt 0.07339739 0.07073772 +vt 0.06598135 0.08274154 +vt 0.06190576 0.08022361 +vt -0.05323056 0.04856402 +vt -0.04629602 0.04558086 +vt -0.04374731 0.05182327 +vt -0.050653 0.05479457 +vt 0.04399696 0.0518753 +vt 0.04654381 0.04563213 +vt 0.05364172 0.04874235 +vt 0.05106605 0.05497367 +vt 0.0002814291 0.1207828 +vt 0.01098779 0.1396675 +vt 0.004320663 0.143556 +vt -0.006210813 0.1245732 +vt -0.004418864 0.143505 +vt -0.01110444 0.1395863 +vt -0.0003996188 0.1207006 +vt 0.006111074 0.1245213 +vt -0.08355264 0.1014229 +vt -0.08759282 0.09602468 +vt -0.07021292 0.08301701 +vt -0.06617273 0.08841521 +vt 0.06980793 0.08249214 +vt 0.08726402 0.09539741 +vt 0.08325565 0.1008193 +vt 0.06579956 0.087914 +vt -0.0007231167 0.1255992 +vt -0.006909901 0.129411 +vt -0.01079823 0.1228807 +vt -0.004723173 0.119085 +vt 0.01212967 0.1231171 +vt 0.006642926 0.132137 +vt 0.0004626424 0.1283608 +vt 0.00607365 0.1194177 +vt -0.05874686 0.05196418 +vt -0.06100951 0.0468777 +vt -0.05446384 0.0441362 +vt -0.05214025 0.04919514 +vt 0.07443439 0.01306967 +vt 0.0801879 0.01746885 +vt 0.07646121 0.02244425 +vt 0.07072055 0.0179888 +vt 0.07036637 0.0714402 +vt 0.07904697 0.07744855 +vt 0.07355957 0.08025394 +vt 0.06719778 0.07601653 +vt -0.07373536 0.08159269 +vt -0.07929187 0.0788071 +vt -0.07063833 0.07275984 +vt -0.06744922 0.0773219 +vt -0.05695149 0.05049162 +vt -0.05291798 0.04875704 +vt -0.04780912 0.06063693 +vt -0.05184264 0.06237151 +vt 0.04780912 0.06063696 +vt 0.05291798 0.04875706 +vt 0.0569515 0.05049164 +vt 0.05184265 0.06237154 +vt -0.001105785 0.1181761 +vt 0.001382183 0.1217938 +vt -0.002235568 0.1242818 +vt -0.004723535 0.120664 +vt 0.002235487 0.1242818 +vt -0.00138226 0.1217938 +vt 0.001105712 0.1181761 +vt 0.004723457 0.1206641 +vt -0.06623095 0.08483818 +vt -0.07308734 0.07387359 +vt -0.06936459 0.07154568 +vt -0.0625082 0.08251027 +vt 0.06936459 0.07154568 +vt 0.07308734 0.07387358 +vt 0.06623095 0.08483817 +vt 0.06250821 0.08251026 +vt -0.07633736 0.06105092 +vt -0.07189986 0.05874686 +vt -0.06511374 0.07181658 +vt -0.06955123 0.07412063 +vt 0.06511373 0.07181659 +vt 0.07189988 0.05874687 +vt 0.07633737 0.06105093 +vt 0.06955124 0.07412065 +vt -0.01093675 0.1275531 +vt -0.007701059 0.131365 +vt -0.01151294 0.1346007 +vt -0.01474862 0.1307888 +vt 0.01151293 0.1346006 +vt 0.007701068 0.131365 +vt 0.01093675 0.1275531 +vt 0.01474862 0.1307888 +vt -0.06358086 0.07843344 +vt -0.07126524 0.06587081 +vt -0.0669999 0.06326178 +vt -0.05931554 0.0758244 +vt 0.0669999 0.06326177 +vt 0.07126522 0.06587081 +vt 0.06358086 0.07843344 +vt 0.05931553 0.0758244 +vt -0.07263678 0.06006506 +vt -0.06502651 0.05606687 +vt -0.06158259 0.06292962 +vt -0.06916115 0.06691179 +vt 0.06186831 0.06301133 +vt 0.06531033 0.05614763 +vt 0.0730948 0.06030465 +vt 0.06962108 0.06715236 +vt -0.009968972 0.1296544 +vt 0.004203475 0.1499097 +vt -0.002935817 0.1550365 +vt -0.01692057 0.1346511 +vt 0.002828572 0.1549664 +vt -0.004328343 0.1498034 +vt 0.009842625 0.1295471 +vt 0.01681185 0.13458 +vt -0.08449186 0.09792271 +vt -0.08907027 0.09175861 +vt -0.0692245 0.0770181 +vt -0.0646461 0.0831822 +vt 0.06861152 0.07637797 +vt 0.08855496 0.09098609 +vt 0.08401768 0.09718053 +vt 0.06407425 0.08257242 +vt -0.00952577 0.1345527 +vt -0.01609304 0.1395876 +vt -0.02125449 0.1326401 +vt -0.01481195 0.1276363 +vt 0.02282831 0.1326842 +vt 0.01557596 0.1422732 +vt 0.00900762 0.1372849 +vt 0.01639195 0.1277972 +vt -0.07750736 0.06411749 +vt -0.08050292 0.05853024 +vt -0.07329856 0.05486869 +vt -0.07023611 0.06041957 +vt 0.09058906 0.03423078 +vt 0.09667705 0.03979514 +vt 0.09195318 0.0450675 +vt 0.08588541 0.03944061 +vt 0.06786557 0.06314705 +vt 0.07782748 0.06987716 +vt 0.07161503 0.07314222 +vt 0.06431633 0.06839888 +vt -0.07189139 0.07491453 +vt -0.0781842 0.07167386 +vt -0.06825556 0.06489478 +vt -0.06468049 0.07012908 +vt -0.08028148 0.06091579 +vt -0.07241179 0.05745608 +vt -0.06945307 0.06454153 +vt -0.07729001 0.06798749 +vt 0.06974559 0.06460018 +vt 0.07270221 0.05751384 +vt 0.0807568 0.06111972 +vt 0.07776744 0.06819231 +vt -0.02445548 0.1338157 +vt -0.01206291 0.1552064 +vt -0.01961357 0.1597053 +vt -0.03180804 0.1382011 +vt 0.01950212 0.1596441 +vt 0.01193076 0.1551106 +vt 0.0243216 0.133719 +vt 0.03169487 0.1381389 +vt -0.08409219 0.1033988 +vt -0.08869409 0.0972522 +vt -0.06890471 0.08243604 +vt -0.06430282 0.08858263 +vt 0.06820034 0.08183145 +vt 0.08807759 0.09652949 +vt 0.08351238 0.1027034 +vt 0.06363513 0.08800532 +vt -0.02536601 0.138262 +vt -0.03236727 0.1426735 +vt -0.03686994 0.135282 +vt -0.02999573 0.13089 +vt 0.03836025 0.1352177 +vt 0.03200976 0.1454264 +vt 0.0250151 0.141056 +vt 0.03150622 0.1309361 +vt -0.08512126 0.06515675 +vt -0.08774187 0.05938413 +vt -0.08031175 0.0562056 +vt -0.07762198 0.06194633 +vt 0.09587884 0.03271354 +vt 0.1023812 0.03778746 +vt 0.09808178 0.04341131 +vt 0.09159469 0.03827347 +vt 0.06677123 0.068803 +vt 0.07666039 0.07563956 +vt 0.07041328 0.07883782 +vt 0.06316586 0.07401648 +vt -0.07071874 0.08068646 +vt -0.07704468 0.07751096 +vt -0.06718658 0.0706297 +vt -0.06355764 0.07582681 +vt -0.08375756 0.06227123 +vt -0.07917918 0.06026164 +vt -0.07326036 0.07374632 +vt -0.07783873 0.07575591 +vt 0.07326035 0.07374632 +vt 0.07917918 0.06026164 +vt 0.08375755 0.06227123 +vt 0.07783873 0.07575591 +vt -0.02597418 0.1312776 +vt -0.02309975 0.1353688 +vt -0.02719091 0.1382432 +vt -0.03006535 0.134152 +vt 0.02719092 0.1382432 +vt 0.02309976 0.1353688 +vt 0.02597419 0.1312776 +vt 0.03006535 0.134152 +vt -0.06249828 0.08394826 +vt -0.07030083 0.0714587 +vt -0.06606032 0.06880954 +vt -0.05825777 0.0812991 +vt 0.06606032 0.06880953 +vt 0.07030083 0.07145869 +vt 0.06249828 0.08394826 +vt 0.05825777 0.08129911 +vt -0.03436729 -0.2489508 +vt 0.01594877 -0.1979497 +vt 0.005939869 -0.1879954 +vt -0.04676756 -0.2391299 +vt -0.3058197 -0.06654496 +vt -0.2344576 -0.08736026 +vt -0.2318538 -0.07549615 +vt -0.302094 -0.05292522 +vt -0.2440483 -0.03675211 +vt -0.1633554 -0.07934701 +vt -0.1588619 -0.06974316 +vt -0.238885 -0.02576513 +vt -0.1521582 -0.04724045 +vt -0.08385125 -0.1131869 +vt -0.07574238 -0.1071057 +vt -0.1450346 -0.03939961 +vt -0.07723235 -0.1236569 +vt -0.02650632 -0.1840127 +vt -0.0157577 -0.1758473 +vt -0.068689 -0.1181779 +vt -0.002737874 -0.1927968 +vt 0.05251867 -0.2441588 +vt 0.0614481 -0.2354199 +vt 0.007021106 -0.1834669 +vt 0.07218739 -0.09620234 +vt 0.1422094 -0.07627351 +vt 0.1377659 -0.06248313 +vt 0.06894886 -0.08419845 +vt 0.1036812 -0.06544562 +vt 0.1896394 -0.008518292 +vt 0.1845045 0.005291122 +vt 0.09446014 -0.05425993 +vt 0.08205746 -0.06247332 +vt 0.1441036 0.00103351 +vt 0.1316237 0.01184414 +vt 0.07265601 -0.05107683 +vt 0.1057173 -0.05403285 +vt 0.1589884 0.006368011 +vt 0.1456534 0.0148828 +vt 0.09267674 -0.04390055 +vt -0.241538 0.04416929 +vt -0.2195589 -0.04185324 +vt -0.1284167 0.01650578 +vt 0.245399 -0.01022151 +vt 0.1877649 0.03528935 +vt 0.1793943 0.01725087 +vt 0.2307464 -0.02329929 +vt -0.2314417 -0.04099589 +vt -0.1505293 -0.1049022 +vt -0.1462481 0.02574772 +vt -0.1537822 -0.1238615 +vt -0.08400566 -0.1446707 +vt -0.1653429 0.006346401 +vt -0.07724377 -0.1933964 +vt -0.03707581 -0.129538 +vt -0.1950375 -0.06871059 +vt -0.03833046 -0.1687792 +vt -0.07936575 -0.1014579 +vt -0.2004134 -0.1199839 +vt -0.0791763 -0.1040273 +vt -0.1462627 -0.03683691 +vt -0.2002647 -0.1222853 +vt -0.1310975 -0.03858044 +vt -0.2157532 -0.004532546 +vt -0.1915054 -0.1196268 +vt -0.2034224 0.006293225 +vt -0.2762765 0.02106226 +vt -0.1838574 -0.1096889 +vt -0.2449636 0.06179767 +vt -0.2959435 0.01145893 +vt -0.1643955 -0.07657117 +vt -0.2517328 0.09680144 +vt -0.2473354 0.0163853 +vt -0.1335755 -0.008522114 +vt 0.2831104 -0.03204127 +vt 0.2107509 -0.04643748 +vt 0.2088772 -0.06219396 +vt 0.2733495 -0.04936694 +vt 0.2279718 -0.04833972 +vt 0.1423083 -0.07995751 +vt 0.1497817 -0.09226881 +vt 0.226108 -0.06409736 +vt 0.1585141 -0.0736162 +vt 0.0837173 -0.1351901 +vt 0.09897038 -0.1410088 +vt 0.1656143 -0.08614647 +vt 0.08413116 -0.1302137 +vt 0.03167009 -0.1883121 +vt 0.05255067 -0.1880306 +vt 0.09929349 -0.1362649 +vt 0.03185027 -0.1278343 +vt 0.04690563 -0.2015552 +vt 0.06614237 -0.1930763 +vt 0.05272805 -0.127391 +vt 0.08401002 -0.03623243 +vt 0.141138 0.007872777 +vt 0.1343728 0.02408089 +vt 0.08347173 -0.01521684 +vt 0.08639082 0.03588055 +vt 0.09957704 0.1430335 +vt 0.08415262 0.141976 +vt 0.07240368 0.04650276 +vt 0.1076178 0.04192324 +vt 0.08428138 0.1249399 +vt 0.07137548 0.1153061 +vt 0.09216821 0.04133826 +vt 0.1198514 0.07670729 +vt 0.0916521 0.1506453 +vt 0.08101687 0.134134 +vt 0.1061425 0.06825528 +vt 0.1567154 -0.16934 +vt 0.2410977 -0.1231643 +vt 0.2791569 -0.05642993 +vt 0.2987387 0.01129214 +vt 0.2555798 0.06037609 +vt 0.1917106 0.04493007 +vt 0.1191415 0.008154238 +vt 0.07288397 -0.06471272 +vt 0.04899818 -0.130239 +vt 0.09339503 -0.1804101 +vt -0.03904797 0.1503249 +vt -0.02790755 0.1642413 +vt -0.03646377 0.1712449 +vt -0.04760861 0.1573739 +vt 0.03746742 0.1510482 +vt 0.04609422 0.1579735 +vt 0.03518729 0.1717398 +vt 0.02666578 0.1646854 +vt 0.02151512 0.1113489 +vt 0.03827176 0.09506206 +vt 0.05100458 0.1072791 +vt 0.03415202 0.1239212 +vt -0.06074846 0.07015975 +vt -0.07044156 0.08508097 +vt -0.07311443 0.08024438 +vt -0.06653045 0.0696138 +vt -0.08659813 0.09040093 +vt -0.09358243 0.09901369 +vt -0.1400029 0.0613326 +vt -0.1330912 0.05269503 +vt -0.1105372 0.05374338 +vt -0.09303558 0.06793718 +vt 0.08687461 0.09095808 +vt 0.09362622 0.06825569 +vt 0.1109729 0.05420591 +vt 0.1333918 0.0532819 +vt 0.1402979 0.06192392 +vt 0.09383484 0.09954965 +vt 0.07519153 0.06255326 +vt 0.09417787 0.05041701 +vt 0.1040672 0.06482857 +vt 0.08534545 0.07698579 +vt 0.112095 0.0870972 +vt 0.1346497 0.08606505 +vt 0.135821 0.1034222 +vt 0.1134102 0.1045258 +vt -0.06784644 0.08336877 +vt -0.1176542 0.05029757 +vt -0.1127307 0.05069409 +vt -0.07040916 0.07847156 +vt -0.1155229 0.05581813 +vt -0.1054369 0.04143976 +vt -0.1033293 0.04654335 +vt -0.1106059 0.05628086 +vt -0.1143588 0.054357 +vt -0.06316229 0.08523835 +vt -0.06895505 0.08480451 +vt -0.1119994 0.05934991 +vt -0.06426966 0.07017345 +vt -0.07104301 0.08068476 +vt -0.1135115 0.05313252 +vt -0.1064178 0.04326095 +vt 0.09792214 0.09464466 +vt 0.1088388 0.08928648 +vt 0.1945376 0.3064997 +vt 0.1826971 0.312185 +vt -0.08814992 0.09050842 +vt -0.278421 0.2258089 +vt -0.2857114 0.2154566 +vt -0.09630466 0.08073252 +vt 0.06491035 0.04869872 +vt 0.07304558 0.04063108 +vt 0.07647872 0.04494876 +vt 0.06753256 0.05395131 +vt 0.07263853 0.04223348 +vt 0.07583871 0.04605976 +vt 0.09477893 0.07917002 +vt 0.1036266 0.06907348 +vt 0.2913274 0.2076352 +vt 0.28291 0.2174893 +vt 0.07401914 0.04017717 +vt 0.08385184 0.03272312 +vt 0.07741961 0.04452062 +vt 0.07318559 0.04193279 +vt 0.08633757 0.03849929 +vt 0.0763701 0.04577213 +vt -0.185186 0.3484594 +vt -0.1880369 0.3239631 +vt -0.1753114 0.3280986 +vt 0.2338904 0.2454734 +vt 0.2464844 0.2653152 +vt 0.223327 0.2532797 +vt 0.2901544 0.1693691 +vt 0.3035833 0.190054 +vt 0.2824383 0.1797975 +vt -0.1969179 0.3095163 +vt -0.1174106 0.09017693 +vt -0.1049415 0.09557898 +vt -0.1843286 0.3140381 +vt -0.2674094 0.2586959 +vt -0.2929478 0.2640721 +vt -0.2758793 0.2492149 +vt 0.1081 0.0872636 +vt 0.1053399 0.08822698 +vt 0.08813146 0.03892471 +vt 0.09089153 0.03796134 +vt 0.04772833 0.1503302 +vt 0.04505666 0.1491435 +vt 0.06625412 0.1014201 +vt 0.06892579 0.1026068 +vt -0.0157626 0.1594201 +vt -0.0177112 0.1572409 +vt 0.02121588 0.1224339 +vt 0.02316447 0.1246131 +vt -0.05164115 0.1349587 +vt -0.05326805 0.1325299 +vt -0.009882642 0.1034687 +vt -0.008255735 0.1058975 +vt -0.07697134 0.09661268 +vt -0.07861761 0.09419694 +vt -0.03546575 0.06479008 +vt -0.03381947 0.06720582 +vt -0.09906688 0.0671156 +vt -0.1010843 0.06499992 +vt -0.06329218 0.02896376 +vt -0.06127478 0.03107946 +vt -0.1053399 0.08822723 +vt -0.1080999 0.08726386 +vt -0.09089158 0.03796154 +vt -0.08813152 0.0389249 +vt -0.04505665 0.1491435 +vt -0.04772832 0.1503301 +vt -0.06892578 0.1026068 +vt -0.06625411 0.1014201 +vt 0.0177112 0.1572409 +vt 0.01576262 0.1594201 +vt -0.02316446 0.1246131 +vt -0.02121587 0.1224339 +vt 0.05326809 0.1325298 +vt 0.05164117 0.1349587 +vt 0.008255768 0.1058975 +vt 0.009882673 0.1034687 +vt 0.07861762 0.09419691 +vt 0.07697134 0.09661265 +vt 0.0338195 0.06720577 +vt 0.03546578 0.06479004 +vt 0.1010843 0.06499986 +vt 0.09906694 0.06711555 +vt 0.0612749 0.03107937 +vt 0.06329229 0.02896367 +vt -0.09340543 0.06639911 +vt -0.09425236 0.06360113 +vt -0.09358683 0.06075453 +vt -0.09158717 0.05862207 +vt -0.08878917 0.05777514 +vt -0.08594258 0.05844067 +vt -0.08381012 0.06044034 +vt -0.08296319 0.06323834 +vt -0.08362873 0.06608492 +vt -0.08562839 0.06821738 +vt -0.08842638 0.06906431 +vt -0.09127297 0.06839877 +vt -0.07692716 -0.01540215 +vt -0.07445334 -0.01384453 +vt -0.07559615 -0.01075634 +vt -0.07921809 -0.01303687 +vt -0.08615427 0.06005556 +vt -0.08390623 0.05818678 +vt -0.08132474 0.06023098 +vt -0.08461609 0.06296708 +vt -0.07180683 0.09695926 +vt -0.07127884 0.09408398 +vt -0.06798708 0.09399872 +vt -0.06876011 0.09820842 +vt -0.07174172 0.1021274 +vt -0.0723988 0.09927888 +vt -0.0694115 0.0978936 +vt -0.06844947 0.1020642 +vt -0.07799246 0.09513778 +vt -0.07960175 0.09269725 +vt -0.07728513 0.09035711 +vt -0.07492898 0.0939303 +vt -0.08527412 0.08724862 +vt -0.08766856 0.08557152 +vt -0.08637565 0.08254308 +vt -0.08286993 0.08499853 +vt -0.08835505 0.08546564 +vt -0.09122447 0.08490662 +vt -0.09127414 0.08161412 +vt -0.08707303 0.08243258 +vt -0.08311617 0.08675543 +vt -0.08595176 0.08746639 +vt -0.0873934 0.08450586 +vt -0.08324182 0.08346496 +vt -0.07122843 0.08016569 +vt -0.07353882 0.08195682 +vt -0.07604919 0.07982584 +vt -0.07266654 0.07720345 +vt -0.05849274 0.05877557 +vt -0.05999321 0.06128447 +vt -0.06310681 0.06021276 +vt -0.06090996 0.05653948 +vt -0.0499853 0.02494475 +vt -0.05051363 0.02781998 +vt -0.0538054 0.02790483 +vt -0.0530319 0.02369523 +vt -0.05162372 -0.01060145 +vt -0.05092005 -0.007764047 +vt -0.05388426 -0.006330035 +vt -0.05491451 -0.01048428 +vt 0.09148094 0.04233861 +vt 0.08740912 0.04365753 +vt 0.08696653 0.04222203 +vt 0.09099784 0.04091624 +vt 0.07218187 0.1011762 +vt 0.06822547 0.09954333 +vt 0.06881817 0.09816305 +vt 0.0727352 0.09977965 +vt 0.02891759 0.1225462 +vt 0.02598194 0.1194315 +vt 0.02708956 0.1184168 +vt 0.02999601 0.1215005 +vt -0.002529102 0.1034449 +vt -0.004938898 0.09990768 +vt -0.003685588 0.09907959 +vt -0.001299783 0.1025816 +vt -0.02829733 0.06343123 +vt -0.03066617 0.05986644 +vt -0.02940338 0.05905287 +vt -0.02705812 0.0625822 +vt -0.05631202 0.02478191 +vt -0.05916781 0.02159385 +vt -0.05803483 0.02060753 +vt -0.05520744 0.02376386 +vt -0.08638649 0.03117382 +vt -0.09038806 0.02965506 +vt -0.08983517 0.02825835 +vt -0.08587341 0.02976201 +vt -0.06395471 0.09998965 +vt -0.06780986 0.1018489 +vt -0.06844316 0.1004868 +vt -0.06462637 0.09864601 +vt -0.01762995 0.1221335 +vt -0.0203892 0.1254054 +vt -0.0215237 0.1244209 +vt -0.0187919 0.1211815 +vt 0.01300053 0.1039809 +vt 0.01065154 0.1075588 +vt 0.009407633 0.1067167 +vt 0.01173325 0.1031744 +vt 0.03830742 0.0667637 +vt 0.03586112 0.07027578 +vt 0.03464079 0.06939982 +vt 0.03706275 0.06592269 +vt 0.06574856 0.03308808 +vt 0.06270912 0.03610153 +vt 0.06166673 0.0350199 +vt 0.06467593 0.03203643 +vt 0.09325673 0.0922207 +vt 0.08913892 0.09302139 +vt 0.08920883 0.08960174 +vt 0.09191052 0.0890764 +vt 0.08499403 0.09401614 +vt 0.08092465 0.09299756 +vt 0.0824362 0.08992932 +vt 0.08510612 0.09059761 +vt 0.07050137 0.08684118 +vt 0.06719048 0.08426525 +vt 0.06981287 0.08206934 +vt 0.07198514 0.0837594 +vt 0.05581655 0.06468675 +vt 0.05369701 0.06106669 +vt 0.05694674 0.05999982 +vt 0.05833737 0.06237494 +vt 0.04608316 0.03020767 +vt 0.04541861 0.02606574 +vt 0.04883409 0.02624827 +vt 0.0492701 0.02896579 +vt 0.047312 -0.006094624 +vt 0.04849195 -0.01012019 +vt 0.0514975 -0.008487573 +vt 0.05072334 -0.005846399 +vt 0.07224779 -0.01420558 +vt 0.07588726 -0.01629164 +vt 0.07692408 -0.01303222 +vt 0.07453622 -0.01166355 +vt 0.08920819 0.04960067 +vt 0.09255631 0.052128 +vt 0.08996627 0.05436195 +vt 0.08776958 0.05270377 +vt 0.08099937 0.08918536 +vt 0.08191912 0.09327822 +vt 0.07849889 0.09330751 +vt 0.07789545 0.09062219 +vt 0.08175397 0.09864191 +vt 0.08089574 0.1027481 +vt 0.07777061 0.101358 +vt 0.07833369 0.09866393 +vt 0.08736894 0.09584302 +vt 0.08508803 0.09936364 +vt 0.08267422 0.09694033 +vt 0.08417074 0.09463045 +vt 0.09290297 0.09167026 +vt 0.08946989 0.09408092 +vt 0.08813888 0.09093016 +vt 0.09039132 0.08934854 +vt 0.0427849 -0.06019804 +vt 0.04153802 -0.05774439 +vt 0.03910131 -0.0584896 +vt 0.04056239 -0.06148227 +vt 0.003482914 0.1091054 +vt 0.002606032 0.1064965 +vt 0.004860401 0.1053538 +vt 0.005957604 0.1084981 +vt -0.02426125 0.1209287 +vt -0.0250784 0.1183006 +vt -0.02277924 0.1172942 +vt -0.02177584 0.1204697 +vt -0.04005065 0.110988 +vt -0.04122809 0.1085003 +vt -0.03906291 0.1072511 +vt -0.03764715 0.1102654 +vt -0.0561536 0.0867715 +vt -0.05779717 0.0845639 +vt -0.05588998 0.08294681 +vt -0.05392642 0.08563656 +vt -0.07417401 0.0640706 +vt -0.07636542 0.0624055 +vt -0.07497274 0.0603142 +vt -0.07234737 0.06236308 +vt -0.08768789 0.06584163 +vt -0.09037044 0.06522617 +vt -0.08999887 0.0627207 +vt -0.08676247 0.06350566 +vt -0.07811987 0.09261672 +vt -0.08075126 0.09342335 +vt -0.08175657 0.09107412 +vt -0.07856496 0.09012326 +vt -0.05055778 0.1029883 +vt -0.05264951 0.1047771 +vt -0.054579 0.1030745 +vt -0.05204673 0.1009116 +vt -0.02551898 0.08050387 +vt -0.02711036 0.08274942 +vt -0.0294388 0.08163403 +vt -0.0275334 0.07890274 +vt -0.006070842 0.034664 +vt -0.007304169 0.03712448 +vt -0.009785043 0.03641905 +vt -0.008334003 0.0334215 +vt 0.01155299 -0.01958068 +vt 0.01055761 -0.01701471 +vt 0.008032715 -0.01747701 +vt 0.009184481 -0.02060173 +vt 0.06426508 -0.03945938 +vt 0.06196703 -0.03704903 +vt 0.05940009 -0.03904108 +vt 0.06215293 -0.04192841 +vt 0.03575387 0.1048196 +vt 0.03368705 0.1022083 +vt 0.03601715 0.09994381 +vt 0.038493 0.1030719 +vt -0.008416477 0.1227639 +vt -0.009791782 0.1197309 +vt -0.006983922 0.1180959 +vt -0.005336448 0.1217292 +vt -0.03050731 0.1099863 +vt -0.03203632 0.1070278 +vt -0.02931601 0.1052509 +vt -0.0274844 0.1087949 +vt -0.05047245 0.08277588 +vt -0.05243623 0.08008625 +vt -0.05001988 0.077914 +vt -0.04766747 0.08113591 +vt -0.07145027 0.05959477 +vt -0.07406096 0.05752716 +vt -0.07231243 0.05478855 +vt -0.06918506 0.05726534 +vt -0.08677798 0.06313787 +vt -0.09001561 0.06235785 +vt -0.08957884 0.05913813 +vt -0.08570048 0.06007252 +vt -0.07846848 0.09025668 +vt -0.08165897 0.09121136 +vt -0.08290132 0.08820905 +vt -0.07907944 0.08706543 +vt -0.05223542 0.1005673 +vt -0.05476945 0.1027282 +vt -0.0571176 0.1004824 +vt -0.0540821 0.09789385 +vt -0.02681638 0.07929459 +vt -0.02872236 0.08202549 +vt -0.03156167 0.08044572 +vt -0.02927851 0.07717437 +vt -0.004973608 0.03528951 +vt -0.006470324 0.03826452 +vt -0.009506035 0.03710613 +vt -0.007713112 0.03354239 +vt 0.0183127 -0.01619129 +vt 0.01692679 -0.01316314 +vt 0.01385041 -0.01420868 +vt 0.01551058 -0.01783614 +vt 0.08762749 0.02830748 +vt 0.083865 0.02963356 +vt 0.08255513 0.02585706 +vt 0.08627999 0.02454422 +vt 0.07406463 0.09218921 +vt 0.07040697 0.09059666 +vt 0.07202096 0.08693975 +vt 0.07564203 0.08851639 +vt 0.03239858 0.1168935 +vt 0.02973539 0.1139233 +vt 0.03272478 0.1112697 +vt 0.03536134 0.1142102 +vt 0.00215247 0.09931052 +vt -4.751495E-05 0.09598264 +vt 0.003297915 0.09379496 +vt 0.005475889 0.09708954 +vt -0.02306347 0.06010445 +vt -0.02526347 0.0567766 +vt -0.02191804 0.05458893 +vt -0.01974003 0.05788351 +vt -0.05126139 0.02139669 +vt -0.05394677 0.0184465 +vt -0.05097738 0.0157706 +vt -0.04831884 0.01869128 +vt -0.08332222 0.02524131 +vt -0.08705998 0.02384707 +vt -0.0856443 0.02010893 +vt -0.08194391 0.02148924 +vt -0.06905587 0.09084514 +vt -0.07267956 0.09251353 +vt -0.07433313 0.08887439 +vt -0.07074568 0.08722266 +vt -0.02688305 0.114994 +vt -0.02948671 0.1180165 +vt -0.03250219 0.1153926 +vt -0.02992454 0.1124003 +vt 0.002864379 0.09743021 +vt 0.0006850425 0.1007716 +vt -0.002652063 0.09857128 +vt -0.0004945299 0.09526327 +vt 0.02800114 0.05910344 +vt 0.02577559 0.06241429 +vt 0.02246935 0.06016783 +vt 0.02467265 0.05689008 +vt 0.05642611 0.02231808 +vt 0.05367899 0.02521082 +vt 0.05079427 0.02244382 +vt 0.05351393 0.01958002 +vt 0.09086756 0.07395006 +vt 0.08700706 0.07478353 +vt 0.08677331 0.07116492 +vt 0.08958761 0.07055731 +vt 0.08411083 0.09042142 +vt 0.08029662 0.08939679 +vt 0.0817439 0.08607198 +vt 0.08452446 0.08681893 +vt 0.06367358 0.09445817 +vt 0.06058324 0.09199893 +vt 0.06323524 0.08952586 +vt 0.06548809 0.09131865 +vt 0.04209415 0.07296094 +vt 0.03987775 0.06969209 +vt 0.04314654 0.06812231 +vt 0.04476229 0.0705053 +vt 0.02416769 0.03074277 +vt 0.02274016 0.02706036 +vt 0.02627759 0.02626302 +vt 0.02731827 0.02894749 +vt 0.01002503 -0.0208535 +vt 0.00931255 -0.02473816 +vt 0.01293673 -0.02485878 +vt 0.01345612 -0.02202686 +vt 0.0032122 -0.06919147 +vt 0.003400644 -0.07313643 +vt 0.006957511 -0.07243074 +vt 0.006820134 -0.06955489 +vt 0.02708589 0.100466 +vt 0.02712657 0.1044153 +vt 0.02353476 0.1039171 +vt 0.0235051 0.1010381 +vt 0.03522453 0.1140258 +vt 0.03443557 0.1178956 +vt 0.03102829 0.1166549 +vt 0.03160343 0.1138338 +vt 0.04841889 0.1066163 +vt 0.04691139 0.1102667 +vt 0.04380074 0.1084031 +vt 0.04489971 0.105742 +vt 0.06402581 0.08731341 +vt 0.06171822 0.09051858 +vt 0.05912028 0.08798881 +vt 0.06080252 0.08565223 +vt 0.08051315 0.07136379 +vt 0.0773299 0.07370149 +vt 0.07563837 0.07049404 +vt 0.07795895 0.06878987 +vt 0.09064145 0.08308627 +vt 0.08781769 0.08364828 +vt 0.08792667 0.07975812 +vt 0.08905136 0.07953428 +vt 0.08674561 0.08282213 +vt 0.0839514 0.082128 +vt 0.08570674 0.07865468 +vt 0.08681966 0.07893115 +vt 0.07759099 0.07617371 +vt 0.07533192 0.07438876 +vt 0.07836376 0.07194884 +vt 0.07926355 0.07265978 +vt 0.06760427 0.05818069 +vt 0.0662234 0.05565434 +vt 0.06996806 0.05459467 +vt 0.07051805 0.05560093 +vt 0.06145325 0.03120212 +vt 0.06118142 0.02833585 +vt 0.06504034 0.02883998 +vt 0.06514861 0.0299816 +vt 0.06427157 0.005814911 +vt 0.06537402 0.003155189 +vt 0.06854728 0.005408128 +vt 0.06810819 0.006467488 +vt 0.08043778 0.00717958 +vt 0.08304518 0.005958563 +vt 0.08386979 0.009761901 +vt 0.08283126 0.01024822 +vt 0.08664487 0.05244082 +vt 0.08912116 0.05390964 +vt 0.0864406 0.05673096 +vt 0.0854543 0.05614594 +vt 0.07866438 0.08416796 +vt 0.07960367 0.08688958 +vt 0.0757346 0.08730857 +vt 0.07536049 0.08622456 +vt 0.07784525 0.09237306 +vt 0.0774432 0.09522397 +vt 0.07380725 0.09383646 +vt 0.0739674 0.09270093 +vt 0.08245565 0.08943197 +vt 0.08096845 0.09189728 +vt 0.07816716 0.0891958 +vt 0.07875951 0.0882139 +vt 0.08817925 0.08457788 +vt 0.08584307 0.08626061 +vt 0.08432842 0.0826758 +vt 0.08525892 0.08200556 +vt 0.08935203 0.06526195 +vt 0.08823644 0.06552745 +vt 0.08713755 0.0651996 +vt 0.08634983 0.06436621 +vt 0.08608432 0.06325062 +vt 0.08641218 0.06215174 +vt 0.08724556 0.06136401 +vt 0.08836115 0.0610985 +vt 0.08946003 0.06142636 +vt 0.09024777 0.06225973 +vt 0.09051327 0.06337534 +vt 0.09018541 0.06447421 +vt -0.05803452 0.02060705 +vt -0.05690152 0.01962072 +vt -0.05410257 0.02274535 +vt -0.05520714 0.02376338 +vt -0.08983514 0.02825805 +vt -0.08928224 0.02686133 +vt -0.0853603 0.02834988 +vt -0.08587338 0.02976171 +vt -0.06844284 0.100487 +vt -0.06907614 0.09912484 +vt -0.06529772 0.09730254 +vt -0.06462605 0.09864618 +vt -0.02152352 0.1244209 +vt -0.02265804 0.1234364 +vt -0.0199537 0.1202295 +vt -0.01879172 0.1211815 +vt 0.009407623 0.1067167 +vt 0.008163722 0.1058746 +vt 0.01046596 0.1023679 +vt 0.01173324 0.1031744 +vt 0.03464074 0.06939963 +vt 0.03342041 0.06852368 +vt 0.03581804 0.06508148 +vt 0.0370627 0.06592249 +vt 0.06166651 0.03501953 +vt 0.06062412 0.03393792 +vt 0.06360307 0.03098442 +vt 0.0646757 0.03203606 +vt 0.08696652 0.042222 +vt 0.08652394 0.04078652 +vt 0.09051473 0.03949385 +vt 0.09099783 0.0409162 +vt 0.06881823 0.09816309 +vt 0.06941094 0.0967828 +vt 0.07328858 0.09838315 +vt 0.07273526 0.09977968 +vt 0.02708963 0.1184168 +vt 0.02819728 0.1174021 +vt 0.03107451 0.1204548 +vt 0.02999609 0.1215005 +vt -0.003685486 0.09907957 +vt -0.002432176 0.0982515 +vt -7.03409E-05 0.1017183 +vt -0.00129968 0.1025816 +vt -0.02940328 0.05905275 +vt -0.0281405 0.05823921 +vt -0.02581881 0.06173306 +vt -0.02705802 0.06258209 +vt -0.08087132 0.02307194 +vt -0.09235214 0.04519076 +vt -0.101387 0.03692324 +vt -0.09046401 0.01452369 +vt 0.07619389 -0.1210575 +vt 0.08544368 -0.1271098 +vt 0.09901066 -0.1055099 +vt 0.08749741 -0.1045675 +vt -0.1903427 0.04421009 +vt -0.1503575 0.02259302 +vt -0.1427825 0.04113917 +vt -0.190629 0.06912739 +vt 0.12633 0.03497311 +vt 0.1231422 0.05982497 +vt 0.09868941 0.04402979 +vt 0.1076404 0.01794769 +vt -0.2649454 -0.01050543 +vt -0.265981 -0.02332422 +vt -0.2375969 -0.0511459 +vt -0.2318055 -0.04162226 +vt 0.2642913 -0.04376142 +vt 0.2312144 -0.06689705 +vt 0.2276695 -0.07950697 +vt 0.2648945 -0.056899 +vt 0.05825292 -0.138362 +vt 0.04001116 -0.1240733 +vt 0.02994933 -0.1326557 +vt 0.04955298 -0.1469963 +vt -0.1531347 0.02160594 +vt -0.1454403 0.04857393 +vt -0.1833828 0.06241178 +vt -0.201734 0.04826939 +vt -0.06399111 -0.1715798 +vt -0.08095443 -0.1527915 +vt -0.08099052 -0.156106 +vt -0.07017399 -0.1687139 +vt 0.1544368 0.01394564 +vt 0.1331981 0.02649642 +vt 0.1114581 0.01732304 +vt 0.1292385 -0.0006713561 +vt -0.2267697 -0.04850291 +vt -0.245576 -0.05567182 +vt -0.2339892 -0.07791909 +vt -0.21361 -0.06965816 +vt -0.1143359 -0.2067512 +vt -0.1303422 -0.2185063 +vt -0.1164087 -0.2388718 +vt -0.1004199 -0.2266452 +vt 0.2216193 -0.09450926 +vt 0.2552283 -0.1078804 +vt 0.2715784 -0.09084443 +vt 0.2603142 -0.0744742 +vt 0.04572224 -0.03469582 +vt 0.03377688 -0.0296121 +vt 0.01987693 -0.05387001 +vt 0.03123795 -0.05505484 +vt -0.2333829 -0.08558401 +vt -0.2658514 -0.09698637 +vt -0.264905 -0.1117496 +vt -0.245982 -0.1267224 +vt -0.2667161 -0.04511071 +vt -0.2836851 -0.05897606 +vt -0.2698965 -0.08012077 +vt -0.2367337 -0.07112543 +vt -0.1144163 -0.09247233 +vt -0.1271509 -0.06797236 +vt -0.1265835 -0.07525156 +vt -0.1182683 -0.09062971 +vt 0.2732371 -0.07185888 +vt 0.2343669 -0.06710802 +vt 0.2513086 -0.1128928 +vt 0.2749402 -0.08746444 +vt -0.07967269 0.01263565 +vt -0.09363922 -0.008694343 +vt -0.07201906 -0.02303088 +vt -0.05604617 -0.000788239 +vt 0.1062449 0.0174715 +vt 0.1271864 0.0294258 +vt 0.1196839 0.05619386 +vt 0.09067421 0.03712417 +vt 0.2637151 -0.08514316 +vt 0.2291481 -0.0745002 +vt 0.2485942 -0.1193555 +vt 0.2645423 -0.100797 +vt -0.04811102 0.01769229 +vt -0.06216517 -0.003058519 +vt -0.0388132 -0.01700654 +vt -0.02404007 0.0008689419 +vt -0.2341977 -0.06796463 +vt -0.2730547 -0.07285204 +vt -0.2746355 -0.08859576 +vt -0.2512111 -0.1140226 +vt 0.1209524 0.0195749 +vt 0.103374 0.03731727 +vt 0.08247457 0.02462209 +vt 0.09195785 0.0007439845 +vt -0.2322644 -0.08866246 +vt -0.2441142 -0.1299791 +vt -0.2347908 -0.1271671 +vt -0.2148201 -0.1078253 +vt 0.2544311 -0.1022679 +vt 0.2602841 -0.07786015 +vt 0.2521599 -0.07475029 +vt 0.2456804 -0.09753664 +vt 0.2303845 -0.1526866 +vt 0.2211198 -0.1047393 +vt 0.203661 -0.125627 +vt 0.2222832 -0.1495154 +vt -0.0872574 0.03131893 +vt -0.1018384 0.008082136 +vt -0.08669408 -0.000992418 +vt -0.07262741 0.02196559 +vt -0.223241 -0.1002734 +vt -0.2336433 -0.1482675 +vt -0.2249635 -0.1450516 +vt -0.2061992 -0.121494 +vt 0.2613333 -0.07545657 +vt 0.2663867 -0.05024372 +vt 0.2570881 -0.04715735 +vt 0.2522617 -0.07352453 +vt 0.2437187 -0.1286121 +vt 0.2259022 -0.08309273 +vt 0.2113119 -0.108583 +vt 0.2345066 -0.1254341 +vt -0.07857589 0.04835561 +vt -0.09161728 0.02914795 +vt -0.07792776 0.01974391 +vt -0.0647289 0.03935243 +vt -0.2221727 -0.0796307 +vt -0.2444879 -0.0963358 +vt -0.2320226 -0.1110151 +vt -0.2259322 -0.1077177 +vt -0.2101599 -0.0925526 +vt 0.08933015 0.03024436 +vt 0.0743982 0.04862595 +vt 0.0601715 0.0407225 +vt 0.07279481 0.02038955 +vt 0.238721 -0.1215156 +vt 0.2173815 -0.1000341 +vt 0.2046527 -0.1118389 +vt 0.2196861 -0.1274486 +vt 0.2265801 -0.1323086 +vt -0.08097799 0.03042987 +vt -0.09460509 0.007216382 +vt -0.08680288 0.007209494 +vt -0.07091281 0.02697556 +vt -0.2148881 -0.1055533 +vt -0.2353215 -0.1276708 +vt -0.2237784 -0.1380891 +vt -0.2169928 -0.1321696 +vt -0.2024748 -0.1165108 +vt 0.10404 0.005624688 +vt 0.09487648 0.0308132 +vt 0.07744215 0.02205145 +vt 0.09030399 -0.001662494 +vt 0.2457698 -0.1026232 +vt 0.2210733 -0.08804744 +vt 0.2094299 -0.09972172 +vt 0.2262535 -0.1122647 +vt 0.2318902 -0.1163266 +vt -0.06812967 0.02987969 +vt -0.08118591 0.01019643 +vt -0.07119026 0.005400714 +vt -0.06380244 0.02572929 +vt 0.2130079 -0.1426458 +vt 0.2192158 -0.1458095 +vt 0.2303304 -0.1246062 +vt 0.2223647 -0.121668 +vt 0.2151074 -0.1285871 +vt 0.2224692 -0.1338241 +vt 0.2319 -0.1085467 +vt 0.2256368 -0.1055364 +vt -0.1122163 -0.2074818 +vt -0.1133667 -0.2293525 +vt -0.1078436 -0.2298581 +vt -0.104398 -0.2075477 +vt 0.09849523 0.001723981 +vt 0.08757921 0.02193422 +vt 0.08197307 0.01990489 +vt 0.09296268 0.001232487 +vt 0.1923067 -0.1659069 +vt 0.1804139 -0.1477887 +vt 0.1713957 -0.1534702 +vt 0.1869812 -0.1685915 +vt 0.1901265 -0.1264517 +vt 0.1776377 -0.1484679 +vt 0.1979365 -0.1582055 +vt 0.2077826 -0.1389798 +vt -0.2057566 -0.1102739 +vt -0.220783 -0.1254823 +vt -0.2151572 -0.1295536 +vt -0.1982329 -0.1183939 +vt 0.1016516 0.02194513 +vt 0.09042989 0.04466544 +vt 0.08592401 0.04065851 +vt 0.09602145 0.01774367 +vt 0.2405278 -0.07307332 +vt 0.2216692 -0.06382047 +vt 0.2175926 -0.06830915 +vt 0.2368706 -0.07787388 +vt 0.210089 -0.08805786 +vt 0.2024893 -0.1082792 +vt 0.2201099 -0.1182633 +vt 0.2302633 -0.09541531 +vt -0.07118751 -0.05808396 +vt -0.08402599 -0.0671901 +vt -0.07956678 -0.07152572 +vt -0.0705485 -0.06535007 +vt -0.03643002 -0.009624454 +vt -0.02375951 -0.03439388 +vt -0.02345675 -0.02984316 +vt -0.03213022 -0.01412885 +vt -0.09632598 -0.03541286 +vt -0.08457677 -0.02639934 +vt -0.08843855 -0.02457757 +vt -0.09638725 -0.03085169 +vt -0.06736542 -0.05926494 +vt -0.07550647 -0.04379165 +vt -0.08451255 -0.04999911 +vt -0.07538358 -0.06545579 +vt -0.02821531 -0.116671 +vt -0.04037201 -0.1265826 +vt -0.0367958 -0.1274046 +vt -0.02803425 -0.1199889 +vt -0.03899446 -0.1250941 +vt -0.02115887 -0.1426091 +vt -0.02341422 -0.1382009 +vt -0.03541831 -0.1259128 +vt -0.04493251 -0.1214957 +vt -0.03225816 -0.1119645 +vt -0.0385055 -0.1092393 +vt -0.04710295 -0.1170488 +vt -0.008586488 -0.1306645 +vt -0.02038382 -0.1189648 +vt -0.02909367 -0.1264445 +vt -0.01701507 -0.1386615 +vt -0.1248413 -0.1241607 +vt -0.1451423 -0.09039611 +vt -0.1811038 -0.1120179 +vt -0.1608029 -0.1457826 +vt 0.1248413 -0.1241608 +vt 0.1608028 -0.1457826 +vt 0.1811038 -0.112018 +vt 0.1451422 -0.09039618 +vt -0.1715207 0.03704377 +vt -0.09910982 0.00162928 +vt -0.0818006 0.03702093 +vt -0.1542115 0.07243542 +vt 0.1715207 0.03704382 +vt 0.1542115 0.07243547 +vt 0.08180061 0.03702098 +vt 0.09910982 0.001629328 +vt -0.2400413 -0.02513179 +vt -0.26652 -0.05768351 +vt -0.2039882 -0.108549 +vt -0.1775095 -0.07599735 +vt 0.2400413 -0.02513181 +vt 0.1775095 -0.07599736 +vt 0.2039883 -0.1085491 +vt 0.26652 -0.05768353 +vt -0.008601127 -0.06346448 +vt -0.007184749 -0.05772567 +vt -0.04036811 -0.01705076 +vt -0.06624682 -0.03583368 +vt -0.0313075 -0.08269701 +vt 0.1092295 -0.1187717 +vt 0.1561483 -0.1462646 +vt 0.1855412 -0.0974258 +vt 0.1357647 -0.06764713 +vt 0.1202949 -0.09363779 +vt -0.2091782 0.004849212 +vt -0.1039156 -0.0414731 +vt -0.09438716 -0.01582768 +vt -0.2101793 0.01006942 +vt 0.1892623 0.03403734 +vt 0.1646006 0.08703673 +vt 0.1226758 0.06581571 +vt 0.150312 0.01414114 +vt -0.2482166 -0.01222531 +vt -0.2536355 -0.04150812 +vt -0.2171421 -0.06553122 +vt -0.220782 -0.09498879 +vt -0.1887618 -0.1188228 +vt -0.1534918 -0.07745935 +vt 0.2476623 0.003036452 +vt 0.1547922 -0.06579764 +vt 0.2159106 -0.05709856 +vt 0.2531415 -0.02844642 +vt -0.07265222 -0.05719757 +vt -0.09612527 -0.07534122 +vt -0.0587005 -0.1204347 +vt -0.03520067 -0.1022745 +vt 0.09884084 0.06091751 +vt 0.0650153 0.0446405 +vt 0.09122386 -0.006000176 +vt 0.1278335 0.009991693 +vt -0.08362395 0.01992314 +vt -0.07108142 0.04744262 +vt -0.1757313 0.0965613 +vt -0.1986101 0.04931757 +vt 0.1531187 -0.06933692 +vt 0.1893482 -0.114649 +vt 0.2187585 -0.09132172 +vt 0.2144241 -0.0619723 +vt -0.2016999 -0.1384999 +vt -0.2044517 -0.1319663 +vt -0.2109852 -0.134718 +vt -0.2082335 -0.1412516 +vt -0.2720222 -0.04945767 +vt -0.2774564 -0.05354343 +vt -0.2787848 -0.07277403 +vt -0.2721963 -0.07308745 +vt -0.16836 0.03473003 +vt -0.1426414 0.02085905 +vt -0.1392761 0.02709879 +vt -0.1649947 0.04096977 +vt 0.1682556 0.03848346 +vt 0.1648894 0.04472197 +vt 0.1393703 0.03033561 +vt 0.1428626 0.02454894 +vt -0.2904046 -0.02218674 +vt -0.2959325 -0.02662422 +vt -0.2775715 -0.04902624 +vt -0.2721114 -0.04497272 +vt 0.2903598 -0.02881724 +vt 0.2715975 -0.05121719 +vt 0.2769129 -0.05576275 +vt 0.2957922 -0.03336408 +vt -0.0350677 -0.07748015 +vt -0.03916184 -0.07210619 +vt -0.05421784 -0.08391128 +vt -0.05003292 -0.08962942 +vt 0.276043 -0.06347888 +vt 0.270836 -0.05880163 +vt 0.2703745 -0.08267607 +vt 0.2770903 -0.08258374 +vt 0.01996876 -0.05891944 +vt 0.01596797 -0.06477067 +vt 0.03453293 -0.07939099 +vt 0.03873609 -0.07368334 +vt -0.2645674 -0.1051173 +vt -0.2711354 -0.1055513 +vt -0.2497171 -0.1247681 +vt -0.2434905 -0.1214099 +vt 0.136258 0.02745482 +vt 0.1330124 0.03375681 +vt 0.1073391 0.01848372 +vt 0.1112313 0.01324597 +vt 0.2661138 -0.1156246 +vt 0.2594718 -0.1149716 +vt 0.2384299 -0.1314478 +vt 0.2430421 -0.1345858 +vt -0.1264049 0.05847611 +vt -0.1297643 0.05226729 +vt -0.1061849 0.03987829 +vt -0.102745 0.04604287 +vt 0.2409269 -0.1258175 +vt 0.2471388 -0.129228 +vt 0.2488637 -0.1229369 +vt 0.2443324 -0.1196029 +vt -0.1951656 0.04524951 +vt -0.2038592 0.05570768 +vt -0.2124392 0.04929417 +vt -0.2033681 0.03834937 +vt 0.08118201 -0.1142292 +vt 0.1117539 -0.1345781 +vt 0.1480574 -0.08015623 +vt 0.1174855 -0.05980731 +vt -0.2088354 0.03857223 +vt -0.09789886 -0.01101186 +vt -0.07171331 0.04893716 +vt -0.1824104 0.0972895 +vt -0.1964595 0.09604256 +vt -0.2167353 0.04962321 +vt 0.2083147 0.03821505 +vt 0.2166718 0.04969532 +vt 0.1962307 0.09648248 +vt 0.1823404 0.0973648 +vt 0.112753 0.06696224 +vt 0.1449686 0.009647743 +vt -0.2445681 0.002427292 +vt -0.2498829 -0.006881104 +vt -0.191924 -0.04521855 +vt -0.1961582 -0.07345907 +vt -0.1628717 -0.09499468 +vt -0.1429245 -0.0641628 +vt 0.2442128 0.003482128 +vt 0.1431906 -0.06274711 +vt 0.1865763 -0.04711296 +vt 0.2500842 -0.005477831 +vt -0.05506998 -0.04675543 +vt -0.07774682 -0.06486614 +vt -0.03404715 -0.1141464 +vt -0.01179515 -0.09625255 +vt 0.1014111 0.06099879 +vt 0.07208547 0.04824137 +vt 0.09818217 -0.01174732 +vt 0.134537 0.004067997 +vt 0.1700892 -0.1564296 +vt 0.1561048 -0.1546026 +vt 0.1546955 -0.1652204 +vt 0.1684947 -0.1670299 +vt -0.0855812 -0.1075569 +vt -0.1136934 -0.06541859 +vt -0.1228454 -0.07100262 +vt -0.09450947 -0.1134764 +vt 0.1430765 -0.06292642 +vt 0.163163 -0.09367132 +vt 0.1899348 -0.07617822 +vt 0.186486 -0.0473584 +vt 0.1723676 0.001163186 +vt 0.1776577 0.00357412 +vt 0.1763888 0.006358268 +vt 0.1710987 0.003947312 +vt 0.07321875 -0.03389043 +vt 0.07792471 -0.03047701 +vt 0.07612824 -0.02800028 +vt 0.07142226 -0.0314137 +vt -0.02617955 -0.111171 +vt -0.02164119 -0.1075377 +vt -0.02355338 -0.1051492 +vt -0.02809174 -0.1087825 +vt -0.1245466 -0.1667934 +vt -0.1196974 -0.1635866 +vt -0.1213851 -0.1610345 +vt -0.1262343 -0.1642413 +vt -0.2135284 -0.1481248 +vt -0.2080324 -0.1462297 +vt -0.2090298 -0.1433371 +vt -0.2145258 -0.1452323 +vt -0.2421796 -0.05505912 +vt -0.2363779 -0.05543068 +vt -0.2361823 -0.05237727 +vt -0.241984 -0.05200573 +vt -0.1776579 0.003573715 +vt -0.1723678 0.001162783 +vt -0.1710989 0.003946919 +vt -0.176389 0.006357868 +vt -0.07792524 -0.03047679 +vt -0.07321928 -0.03389023 +vt -0.0714228 -0.0314135 +vt -0.07612877 -0.02800007 +vt 0.02164157 -0.107538 +vt 0.02617996 -0.1111713 +vt 0.02809216 -0.1087828 +vt 0.02355379 -0.1051495 +vt 0.1196972 -0.1635867 +vt 0.1245464 -0.1667934 +vt 0.1262341 -0.1642413 +vt 0.1213849 -0.1610346 +vt 0.2080325 -0.1462295 +vt 0.2135285 -0.1481247 +vt 0.2145259 -0.1452322 +vt 0.2090299 -0.143337 +vt 0.2363778 -0.05543081 +vt 0.2421795 -0.05505925 +vt 0.241984 -0.05200586 +vt 0.2361823 -0.05237741 +vt -0.2394152 -0.07901822 +vt -0.2341648 -0.07652213 +vt -0.2308658 -0.07173524 +vt -0.2304022 -0.06594016 +vt -0.2328983 -0.06068973 +vt -0.2376852 -0.05739073 +vt -0.2434803 -0.05692716 +vt -0.2487307 -0.05942325 +vt -0.2520297 -0.06421013 +vt -0.2524933 -0.07000519 +vt -0.2499972 -0.07525565 +vt -0.2452103 -0.07855465 +vt 0.2452103 -0.07855467 +vt 0.2499972 -0.07525568 +vt 0.2524933 -0.07000522 +vt 0.2520297 -0.06421015 +vt 0.2487307 -0.05942326 +vt 0.2434803 -0.05692718 +vt 0.2376852 -0.05739075 +vt 0.2328983 -0.06068974 +vt 0.2304022 -0.0659402 +vt 0.2308658 -0.07173526 +vt 0.2341648 -0.07652216 +vt 0.2394152 -0.07901823 +vt 0.1362517 0.07344802 +vt 0.1416353 0.07564212 +vt 0.1404805 0.07847549 +vt 0.1350969 0.07628138 +vt 0.01615361 0.03222154 +vt 0.02085907 0.03563566 +vt 0.01906224 0.03811213 +vt 0.01435676 0.034698 +vt -0.08639602 -0.05159588 +vt -0.08196457 -0.04783288 +vt -0.08394502 -0.04550064 +vt -0.08837647 -0.04926364 +vt -0.1740401 -0.1090062 +vt -0.1693786 -0.1055323 +vt -0.1712069 -0.103079 +vt -0.1758684 -0.1065529 +vt -0.2409347 -0.08826087 +vt -0.2356166 -0.08591235 +vt -0.2368526 -0.08311346 +vt -0.2421707 -0.08546199 +vt -0.2398717 0.01187983 +vt -0.2340592 0.01199411 +vt -0.2341193 0.01505318 +vt -0.2399318 0.0149389 +vt -0.1416355 0.07564171 +vt -0.1362519 0.0734476 +vt -0.1350971 0.07628097 +vt -0.1404808 0.07847509 +vt -0.02085967 0.03563591 +vt -0.01615421 0.03222179 +vt -0.01435736 0.03469826 +vt -0.01906284 0.03811237 +vt 0.08196498 -0.04783321 +vt 0.08639641 -0.05159619 +vt 0.08837687 -0.04926397 +vt 0.08394545 -0.04550097 +vt 0.1693784 -0.1055324 +vt 0.17404 -0.1090063 +vt 0.1758683 -0.1065529 +vt 0.1712068 -0.1030791 +vt 0.2356167 -0.08591221 +vt 0.2409348 -0.08826074 +vt 0.2421708 -0.08546185 +vt 0.2368527 -0.08311333 +vt 0.2340592 0.01199399 +vt 0.2398716 0.01187973 +vt 0.2399318 0.01493878 +vt 0.2341193 0.01505306 +vt -0.2312342 -0.1125774 +vt -0.2262681 -0.1095548 +vt -0.2234787 -0.1044542 +vt -0.2236132 -0.09864216 +vt -0.2266358 -0.09367611 +vt -0.2317365 -0.09088665 +vt -0.2375485 -0.09102122 +vt -0.2425145 -0.09404378 +vt -0.245304 -0.09914441 +vt -0.2451694 -0.1049564 +vt -0.2421469 -0.1099225 +vt -0.2370462 -0.112712 +vt 0.2370462 -0.112712 +vt 0.2421468 -0.1099225 +vt 0.2451694 -0.1049565 +vt 0.245304 -0.09914444 +vt 0.2425145 -0.0940438 +vt 0.2375484 -0.09102124 +vt 0.2317365 -0.09088667 +vt 0.2266358 -0.09367612 +vt 0.2236132 -0.09864219 +vt 0.2234786 -0.1044542 +vt 0.2262681 -0.1095548 +vt 0.2312342 -0.1125774 +vt 0.1194078 -0.08273835 +vt 0.1171349 -0.08485498 +vt 0.1369311 -0.1061127 +vt 0.139204 -0.1039961 +vt 0.1537901 -0.07733002 +vt 0.1510696 -0.07882828 +vt 0.1650824 -0.1042728 +vt 0.1678029 -0.1027745 +vt 0.141309 -0.138765 +vt 0.138204 -0.1388353 +vt 0.1388611 -0.1678757 +vt 0.1419661 -0.1678055 +vt 0.0620204 -0.1911418 +vt 0.05925532 -0.1897274 +vt 0.04602673 -0.2155882 +vt 0.0487918 -0.2170026 +vt -0.01500074 -0.1781325 +vt -0.01729941 -0.1760439 +vt -0.0368336 -0.1975426 +vt -0.03453494 -0.1996312 +vt -0.07152886 -0.1310734 +vt -0.07365776 -0.128812 +vt -0.09480808 -0.1487229 +vt -0.09267918 -0.1509843 +vt -0.1171349 -0.08485499 +vt -0.1194078 -0.08273836 +vt -0.139204 -0.1039961 +vt -0.1369311 -0.1061127 +vt -0.1510696 -0.07882829 +vt -0.1537902 -0.07733004 +vt -0.1678029 -0.1027745 +vt -0.1650824 -0.1042728 +vt -0.138204 -0.1388353 +vt -0.1413091 -0.138765 +vt -0.1419661 -0.1678055 +vt -0.1388611 -0.1678757 +vt -0.05925532 -0.1897274 +vt -0.06202039 -0.1911418 +vt -0.0487918 -0.2170026 +vt -0.04602673 -0.2155882 +vt 0.01729942 -0.1760438 +vt 0.01500075 -0.1781324 +vt 0.03453495 -0.1996312 +vt 0.03683361 -0.1975426 +vt 0.07365778 -0.128812 +vt 0.07152889 -0.1310734 +vt 0.09267921 -0.1509843 +vt 0.0948081 -0.1487229 +vt 0.1432665 -0.04025992 +vt 0.1416567 -0.03760387 +vt 0.1389345 -0.03610859 +vt 0.1358293 -0.03617473 +vt 0.1331733 -0.03778457 +vt 0.131678 -0.04050675 +vt 0.1317441 -0.04361188 +vt 0.133354 -0.04626792 +vt 0.1360762 -0.04776321 +vt 0.1391813 -0.04769707 +vt 0.1418373 -0.04608723 +vt 0.1433326 -0.04336504 +vt -0.1433326 -0.04336505 +vt -0.1418373 -0.04608723 +vt -0.1391813 -0.04769707 +vt -0.1360762 -0.04776321 +vt -0.133354 -0.04626793 +vt -0.1317441 -0.04361188 +vt -0.131678 -0.04050676 +vt -0.1331733 -0.03778457 +vt -0.1358293 -0.03617473 +vt -0.1389345 -0.03610859 +vt -0.1416567 -0.03760388 +vt -0.1432665 -0.04025992 +o group1527737228 +g mesh1527737228 +usemtl mat23 +f 505/1702/401 504/1701/401 503/1700/401 502/1699/401 +f 504/1706/402 507/1705/402 506/1704/402 503/1703/402 +f 507/1710/403 509/1709/403 508/1708/403 506/1707/403 +f 509/1714/404 511/1713/404 510/1712/404 508/1711/404 +f 511/1718/405 513/1717/405 512/1716/405 510/1715/405 +f 513/1722/406 515/1721/406 514/1720/406 512/1719/406 +f 515/1726/407 517/1725/407 516/1724/407 514/1723/407 +f 517/1730/408 519/1729/408 518/1728/408 516/1727/408 +f 519/1734/409 521/1733/409 520/1732/409 518/1731/409 +f 521/1738/410 523/1737/410 522/1736/410 520/1735/410 +f 523/1742/411 525/1741/411 524/1740/411 522/1739/411 +f 525/1746/412 505/1745/412 502/1744/412 524/1743/412 +f 502/1758/413 503/1757/413 506/1756/413 508/1755/413 510/1754/413 512/1753/413 514/1752/413 516/1751/413 518/1750/413 520/1749/413 522/1748/413 524/1747/413 +f 525/1770/414 523/1769/414 521/1768/414 519/1767/414 517/1766/414 515/1765/414 513/1764/414 511/1763/414 509/1762/414 507/1761/414 504/1760/414 505/1759/414 +o group1395465497 +g mesh1395465497 +usemtl mat23 +f 669/2268/532 668/2267/532 667/2266/532 666/2265/532 +f 673/2272/533 672/2271/533 671/2270/533 670/2269/533 +f 667/2278/534 673/2277/534 670/2276/534 675/2275/534 674/2274/534 666/2273/534 +f 677/2284/535 676/2283/535 671/2282/535 672/2281/535 668/2280/535 669/2279/535 +f 674/2288/536 677/2287/536 669/2286/536 666/2285/536 +f 668/2292/537 672/2291/537 673/2290/537 667/2289/537 +f 674/2296/538 675/2295/538 676/2294/538 677/2293/538 +f 675/2300/539 670/2299/539 671/2298/539 676/2297/539 +o group2119099679 +g mesh2119099679 +usemtl mat15 +f 792/2687/628 791/2686/628 790/2685/628 +f 791/2690/629 793/2689/629 790/2688/629 +f 793/2693/630 794/2692/630 790/2691/630 +f 794/2696/631 795/2695/631 790/2694/631 +f 795/2699/632 796/2698/632 790/2697/632 +f 796/2702/633 797/2701/633 790/2700/633 +f 797/2705/634 798/2704/634 790/2703/634 +f 798/2708/635 799/2707/635 790/2706/635 +f 799/2711/636 800/2710/636 790/2709/636 +f 800/2714/637 801/2713/637 790/2712/637 +f 801/2717/638 802/2716/638 790/2715/638 +f 802/2720/639 792/2719/639 790/2718/639 +f 804/2724/640 803/2723/640 791/2722/640 792/2721/640 +f 803/2728/641 805/2727/641 793/2726/641 791/2725/641 +f 805/2732/642 806/2731/642 794/2730/642 793/2729/642 +f 806/2736/643 807/2735/643 795/2734/643 794/2733/643 +f 807/2740/644 808/2739/644 796/2738/644 795/2737/644 +f 808/2744/645 809/2743/645 797/2742/645 796/2741/645 +f 809/2748/646 810/2747/646 798/2746/646 797/2745/646 +f 810/2752/647 811/2751/647 799/2750/647 798/2749/647 +f 811/2756/648 812/2755/648 800/2754/648 799/2753/648 +f 812/2760/649 813/2759/649 801/2758/649 800/2757/649 +f 813/2764/650 814/2763/650 802/2762/650 801/2761/650 +f 814/2768/651 804/2767/651 792/2766/651 802/2765/651 +f 816/2772/652 815/2771/652 803/2770/652 804/2769/652 +f 815/2776/653 817/2775/653 805/2774/653 803/2773/653 +f 817/2780/654 818/2779/654 806/2778/654 805/2777/654 +f 818/2784/655 819/2783/655 807/2782/655 806/2781/655 +f 819/2788/656 820/2787/656 808/2786/656 807/2785/656 +f 820/2792/657 821/2791/657 809/2790/657 808/2789/657 +f 821/2796/658 822/2795/658 810/2794/658 809/2793/658 +f 822/2800/659 823/2799/659 811/2798/659 810/2797/659 +f 823/2804/660 824/2803/660 812/2802/660 811/2801/660 +f 824/2808/661 825/2807/661 813/2806/661 812/2805/661 +f 825/2812/662 826/2811/662 814/2810/662 813/2809/662 +f 826/2816/663 816/2815/663 804/2814/663 814/2813/663 +f 828/2820/664 827/2819/664 815/2818/664 816/2817/664 +f 827/2824/665 829/2823/665 817/2822/665 815/2821/665 +f 829/2828/666 830/2827/666 818/2826/666 817/2825/666 +f 830/2832/667 831/2831/667 819/2830/667 818/2829/667 +f 831/2836/668 832/2835/668 820/2834/668 819/2833/668 +f 832/2840/669 833/2839/669 821/2838/669 820/2837/669 +f 833/2844/670 834/2843/670 822/2842/670 821/2841/670 +f 834/2848/671 835/2847/671 823/2846/671 822/2845/671 +f 835/2852/672 836/2851/672 824/2850/672 823/2849/672 +f 836/2856/673 837/2855/673 825/2854/673 824/2853/673 +f 837/2860/674 838/2859/674 826/2858/674 825/2857/674 +f 838/2864/675 828/2863/675 816/2862/675 826/2861/675 +f 840/2868/676 839/2867/676 827/2866/676 828/2865/676 +f 839/2872/677 841/2871/677 829/2870/677 827/2869/677 +f 841/2876/678 842/2875/678 830/2874/678 829/2873/678 +f 842/2880/679 843/2879/679 831/2878/679 830/2877/679 +f 843/2884/680 844/2883/680 832/2882/680 831/2881/680 +f 844/2888/681 845/2887/681 833/2886/681 832/2885/681 +f 845/2892/682 846/2891/682 834/2890/682 833/2889/682 +f 846/2896/683 847/2895/683 835/2894/683 834/2893/683 +f 847/2900/684 848/2899/684 836/2898/684 835/2897/684 +f 848/2904/685 849/2903/685 837/2902/685 836/2901/685 +f 849/2908/686 850/2907/686 838/2906/686 837/2905/686 +f 850/2912/687 840/2911/687 828/2910/687 838/2909/687 +f 852/2916/688 851/2915/688 839/2914/688 840/2913/688 +f 851/2920/689 853/2919/689 841/2918/689 839/2917/689 +f 853/2924/690 854/2923/690 842/2922/690 841/2921/690 +f 854/2928/691 855/2927/691 843/2926/691 842/2925/691 +f 855/2932/692 856/2931/692 844/2930/692 843/2929/692 +f 856/2936/693 857/2935/693 845/2934/693 844/2933/693 +f 857/2940/694 858/2939/694 846/2938/694 845/2937/694 +f 858/2944/695 859/2943/695 847/2942/695 846/2941/695 +f 859/2948/696 860/2947/696 848/2946/696 847/2945/696 +f 860/2952/697 861/2951/697 849/2950/697 848/2949/697 +f 861/2956/698 862/2955/698 850/2954/698 849/2953/698 +f 862/2960/699 852/2959/699 840/2958/699 850/2957/699 +f 864/2964/700 863/2963/700 851/2962/700 852/2961/700 +f 863/2968/701 865/2967/701 853/2966/701 851/2965/701 +f 865/2972/702 866/2971/702 854/2970/702 853/2969/702 +f 866/2976/703 867/2975/703 855/2974/703 854/2973/703 +f 867/2980/704 868/2979/704 856/2978/704 855/2977/704 +f 868/2984/705 869/2983/705 857/2982/705 856/2981/705 +f 869/2988/706 870/2987/706 858/2986/706 857/2985/706 +f 870/2992/707 871/2991/707 859/2990/707 858/2989/707 +f 871/2996/708 872/2995/708 860/2994/708 859/2993/708 +f 872/3000/709 873/2999/709 861/2998/709 860/2997/709 +f 873/3004/710 874/3003/710 862/3002/710 861/3001/710 +f 874/3008/711 864/3007/711 852/3006/711 862/3005/711 +f 876/3012/712 875/3011/712 863/3010/712 864/3009/712 +f 875/3016/713 877/3015/713 865/3014/713 863/3013/713 +f 877/3020/714 878/3019/714 866/3018/714 865/3017/714 +f 878/3024/715 879/3023/715 867/3022/715 866/3021/715 +f 879/3028/716 880/3027/716 868/3026/716 867/3025/716 +f 880/3032/717 881/3031/717 869/3030/717 868/3029/717 +f 881/3036/718 882/3035/718 870/3034/718 869/3033/718 +f 882/3040/719 883/3039/719 871/3038/719 870/3037/719 +f 883/3044/720 884/3043/720 872/3042/720 871/3041/720 +f 884/3048/721 885/3047/721 873/3046/721 872/3045/721 +f 885/3052/722 886/3051/722 874/3050/722 873/3049/722 +f 886/3056/723 876/3055/723 864/3054/723 874/3053/723 +f 887/3059/724 875/3058/724 876/3057/724 +f 887/3062/725 877/3061/725 875/3060/725 +f 887/3065/726 878/3064/726 877/3063/726 +f 887/3068/727 879/3067/727 878/3066/727 +f 887/3071/728 880/3070/728 879/3069/728 +f 887/3074/729 881/3073/729 880/3072/729 +f 887/3077/730 882/3076/730 881/3075/730 +f 887/3080/731 883/3079/731 882/3078/731 +f 887/3083/732 884/3082/732 883/3081/732 +f 887/3086/733 885/3085/733 884/3084/733 +f 887/3089/734 886/3088/734 885/3087/734 +f 887/3092/735 876/3091/735 886/3090/735 +o group87781031 +g mesh87781031 +usemtl mat15 +f 890/3095/736 889/3094/736 888/3093/736 +f 889/3098/737 891/3097/737 888/3096/737 +f 891/3101/738 892/3100/738 888/3099/738 +f 892/3104/739 893/3103/739 888/3102/739 +f 893/3107/740 894/3106/740 888/3105/740 +f 894/3110/741 895/3109/741 888/3108/741 +f 895/3113/742 896/3112/742 888/3111/742 +f 896/3116/743 897/3115/743 888/3114/743 +f 897/3119/744 898/3118/744 888/3117/744 +f 898/3122/745 899/3121/745 888/3120/745 +f 899/3125/746 900/3124/746 888/3123/746 +f 900/3128/747 890/3127/747 888/3126/747 +f 902/3132/748 901/3131/748 889/3130/748 890/3129/748 +f 901/3136/749 903/3135/749 891/3134/749 889/3133/749 +f 903/3140/750 904/3139/750 892/3138/750 891/3137/750 +f 904/3144/751 905/3143/751 893/3142/751 892/3141/751 +f 905/3148/752 906/3147/752 894/3146/752 893/3145/752 +f 906/3152/753 907/3151/753 895/3150/753 894/3149/753 +f 907/3156/754 908/3155/754 896/3154/754 895/3153/754 +f 908/3160/755 909/3159/755 897/3158/755 896/3157/755 +f 909/3164/756 910/3163/756 898/3162/756 897/3161/756 +f 910/3168/757 911/3167/757 899/3166/757 898/3165/757 +f 911/3172/758 912/3171/758 900/3170/758 899/3169/758 +f 912/3176/759 902/3175/759 890/3174/759 900/3173/759 +f 914/3180/760 913/3179/760 901/3178/760 902/3177/760 +f 913/3184/761 915/3183/761 903/3182/761 901/3181/761 +f 915/3188/762 916/3187/762 904/3186/762 903/3185/762 +f 916/3192/763 917/3191/763 905/3190/763 904/3189/763 +f 917/3196/764 918/3195/764 906/3194/764 905/3193/764 +f 918/3200/765 919/3199/765 907/3198/765 906/3197/765 +f 919/3204/766 920/3203/766 908/3202/766 907/3201/766 +f 920/3208/767 921/3207/767 909/3206/767 908/3205/767 +f 921/3212/768 922/3211/768 910/3210/768 909/3209/768 +f 922/3216/769 923/3215/769 911/3214/769 910/3213/769 +f 923/3220/770 924/3219/770 912/3218/770 911/3217/770 +f 924/3224/771 914/3223/771 902/3222/771 912/3221/771 +f 926/3228/772 925/3227/772 913/3226/772 914/3225/772 +f 925/3232/773 927/3231/773 915/3230/773 913/3229/773 +f 927/3236/774 928/3235/774 916/3234/774 915/3233/774 +f 928/3240/775 929/3239/775 917/3238/775 916/3237/775 +f 929/3244/776 930/3243/776 918/3242/776 917/3241/776 +f 930/3248/777 931/3247/777 919/3246/777 918/3245/777 +f 931/3252/778 932/3251/778 920/3250/778 919/3249/778 +f 932/3256/779 933/3255/779 921/3254/779 920/3253/779 +f 933/3260/780 934/3259/780 922/3258/780 921/3257/780 +f 934/3264/781 935/3263/781 923/3262/781 922/3261/781 +f 935/3268/782 936/3267/782 924/3266/782 923/3265/782 +f 936/3272/783 926/3271/783 914/3270/783 924/3269/783 +f 938/3276/784 937/3275/784 925/3274/784 926/3273/784 +f 937/3280/785 939/3279/785 927/3278/785 925/3277/785 +f 939/3284/786 940/3283/786 928/3282/786 927/3281/786 +f 940/3288/787 941/3287/787 929/3286/787 928/3285/787 +f 941/3292/788 942/3291/788 930/3290/788 929/3289/788 +f 942/3296/789 943/3295/789 931/3294/789 930/3293/789 +f 943/3300/790 944/3299/790 932/3298/790 931/3297/790 +f 944/3304/791 945/3303/791 933/3302/791 932/3301/791 +f 945/3308/792 946/3307/792 934/3306/792 933/3305/792 +f 946/3312/793 947/3311/793 935/3310/793 934/3309/793 +f 947/3316/794 948/3315/794 936/3314/794 935/3313/794 +f 948/3320/795 938/3319/795 926/3318/795 936/3317/795 +f 950/3324/796 949/3323/796 937/3322/796 938/3321/796 +f 949/3328/797 951/3327/797 939/3326/797 937/3325/797 +f 951/3332/798 952/3331/798 940/3330/798 939/3329/798 +f 952/3336/799 953/3335/799 941/3334/799 940/3333/799 +f 953/3340/800 954/3339/800 942/3338/800 941/3337/800 +f 954/3344/801 955/3343/801 943/3342/801 942/3341/801 +f 955/3348/802 956/3347/802 944/3346/802 943/3345/802 +f 956/3352/803 957/3351/803 945/3350/803 944/3349/803 +f 957/3356/804 958/3355/804 946/3354/804 945/3353/804 +f 958/3360/805 959/3359/805 947/3358/805 946/3357/805 +f 959/3364/806 960/3363/806 948/3362/806 947/3361/806 +f 960/3368/807 950/3367/807 938/3366/807 948/3365/807 +f 962/3372/808 961/3371/808 949/3370/808 950/3369/808 +f 961/3376/809 963/3375/809 951/3374/809 949/3373/809 +f 963/3380/810 964/3379/810 952/3378/810 951/3377/810 +f 964/3384/811 965/3383/811 953/3382/811 952/3381/811 +f 965/3388/812 966/3387/812 954/3386/812 953/3385/812 +f 966/3392/813 967/3391/813 955/3390/813 954/3389/813 +f 967/3396/814 968/3395/814 956/3394/814 955/3393/814 +f 968/3400/815 969/3399/815 957/3398/815 956/3397/815 +f 969/3404/816 970/3403/816 958/3402/816 957/3401/816 +f 970/3408/817 971/3407/817 959/3406/817 958/3405/817 +f 971/3412/818 972/3411/818 960/3410/818 959/3409/818 +f 972/3416/819 962/3415/819 950/3414/819 960/3413/819 +f 974/3420/820 973/3419/820 961/3418/820 962/3417/820 +f 973/3424/821 975/3423/821 963/3422/821 961/3421/821 +f 975/3428/822 976/3427/822 964/3426/822 963/3425/822 +f 976/3432/823 977/3431/823 965/3430/823 964/3429/823 +f 977/3436/824 978/3435/824 966/3434/824 965/3433/824 +f 978/3440/825 979/3439/825 967/3438/825 966/3437/825 +f 979/3444/826 980/3443/826 968/3442/826 967/3441/826 +f 980/3448/827 981/3447/827 969/3446/827 968/3445/827 +f 981/3452/828 982/3451/828 970/3450/828 969/3449/828 +f 982/3456/829 983/3455/829 971/3454/829 970/3453/829 +f 983/3460/830 984/3459/830 972/3458/830 971/3457/830 +f 984/3464/831 974/3463/831 962/3462/831 972/3461/831 +f 985/3467/832 973/3466/832 974/3465/832 +f 985/3470/833 975/3469/833 973/3468/833 +f 985/3473/834 976/3472/834 975/3471/834 +f 985/3476/835 977/3475/835 976/3474/835 +f 985/3479/836 978/3478/836 977/3477/836 +f 985/3482/837 979/3481/837 978/3480/837 +f 985/3485/838 980/3484/838 979/3483/838 +f 985/3488/839 981/3487/839 980/3486/839 +f 985/3491/840 982/3490/840 981/3489/840 +f 985/3494/841 983/3493/841 982/3492/841 +f 985/3497/842 984/3496/842 983/3495/842 +f 985/3500/843 974/3499/843 984/3498/843 +o group1334399928 +g mesh1334399928 +usemtl mat15 +f 988/3503/844 987/3502/844 986/3501/844 +f 992/3507/845 991/3506/845 990/3505/845 989/3504/845 +f 995/3511/846 994/3510/846 993/3509/846 986/3508/846 +f 990/3515/847 991/3514/847 987/3513/847 988/3512/847 +f 987/3523/849 991/3522/849 992/3521/849 +f 998/3527/850 997/3526/850 992/3525/850 989/3524/850 +f 997/3531/851 1000/3530/851 999/3529/851 992/3528/851 +f 1000/3535/852 995/3534/852 986/3533/852 999/3532/852 +f 1005/3540/853 1004/3539/853 1003/3538/853 1002/3537/853 1001/3536/853 +f 1004/3544/854 1007/3543/854 1006/3542/854 1003/3541/854 +f 1007/3547/855 1008/3546/855 1006/3545/855 +f 1012/3551/856 1011/3550/856 1010/3549/856 1009/3548/856 +f 1015/3554/857 1014/3553/857 1013/3552/857 +f 1016/3557/858 1008/3556/858 1005/3555/858 +f 1018/3561/859 1017/3560/859 1004/3559/859 1005/3558/859 +f 1017/3565/860 1019/3564/860 1007/3563/860 1004/3562/860 +f 1019/3569/861 1020/3568/861 1008/3567/861 1007/3566/861 +f 1020/3573/862 1018/3572/862 1005/3571/862 1008/3570/862 +f 1020/3577/863 1019/3576/863 1017/3575/863 1018/3574/863 +f 1014/3581/864 1021/3580/864 1016/3579/864 1013/3578/864 +f 1021/3584/865 1022/3583/865 1012/3582/865 +f 1022/3587/866 1015/3586/866 1012/3585/866 +f 1022/3590/867 1021/3589/867 1014/3588/867 +f 1023/3598/869 998/3597/869 989/3596/869 996/3595/869 +f 994/3602/870 1025/3601/870 1024/3600/870 1023/3599/870 +f 995/3606/871 1026/3605/871 1025/3604/871 994/3603/871 +f 1000/3610/872 1027/3609/872 1026/3608/872 995/3607/872 +f 997/3614/873 1028/3613/873 1027/3612/873 1000/3611/873 +f 998/3618/874 1029/3617/874 1028/3616/874 997/3615/874 +f 1023/3622/875 1024/3621/875 1029/3620/875 998/3619/875 +f 1010/3629/877 1001/3628/877 1025/3627/877 +f 1027/3633/878 1009/3632/878 1010/3631/878 1026/3630/878 +f 1028/3637/879 1006/3636/879 1009/3635/879 1027/3634/879 +f 1029/3641/880 1003/3640/880 1006/3639/880 1028/3638/880 +f 1024/3645/881 1002/3644/881 1003/3643/881 1029/3642/881 +f 987/3664/886 999/3663/886 986/3662/886 +f 992/3667/887 999/3666/887 987/3665/887 +f 1025/3673/889 1026/3672/889 1010/3671/889 +f 1001/3676/890 1010/3675/890 1011/3674/890 +f 1012/3679/891 1009/3678/891 1006/3677/891 +f 1001/3682/892 1011/3681/892 1013/3680/892 +f 1013/3685/893 1011/3684/893 1015/3683/893 +f 1015/3688/894 1011/3687/894 1012/3686/894 +f 1016/3691/895 1012/3690/895 1006/3689/895 +f 1014/3694/896 1015/3693/896 1022/3692/896 +f 1001/3697/897 1013/3696/897 1005/3695/897 +f 1005/3700/898 1013/3699/898 1016/3698/898 +f 1012/3703/899 1016/3702/899 1021/3701/899 +f 1008/3706/900 1016/3705/900 1006/3704/900 +usemtl mat23 +f 993/3520/848 996/3519/848 989/3518/848 990/3517/848 988/3516/848 +f 994/3594/868 1023/3593/868 996/3592/868 993/3591/868 +f 1031/3626/876 1030/3625/876 1002/3624/876 1024/3623/876 +f 1030/3649/882 1032/3648/882 1001/3647/882 1002/3646/882 +f 1032/3653/883 1033/3652/883 1025/3651/883 1001/3650/883 +f 1033/3657/884 1031/3656/884 1024/3655/884 1025/3654/884 +f 988/3670/888 986/3669/888 993/3668/888 +usemtl mat8 +f 1033/3661/885 1032/3660/885 1030/3659/885 1031/3658/885 +o group1666970172 +g mesh1666970172 +usemtl mat23 +f 1037/3710/901 1036/3709/901 1035/3708/901 1034/3707/901 +f 1041/3714/902 1040/3713/902 1039/3712/902 1038/3711/902 +f 1042/3717/903 1038/3716/903 1034/3715/903 +f 1039/3721/904 1040/3720/904 1036/3719/904 1037/3718/904 +f 1038/3725/905 1039/3724/905 1037/3723/905 1034/3722/905 +f 1036/3729/906 1040/3728/906 1041/3727/906 1035/3726/906 +f 1043/3732/907 1041/3731/907 1038/3730/907 +f 1043/3735/908 1035/3734/908 1041/3733/908 +f 1044/3738/909 1034/3737/909 1035/3736/909 +f 1046/3741/910 1045/3740/910 1042/3739/910 +f 1045/3744/911 1047/3743/911 1043/3742/911 +f 1047/3747/912 1048/3746/912 1043/3745/912 +f 1048/3750/913 1046/3749/913 1044/3748/913 +f 1050/3754/914 1049/3753/914 1045/3752/914 1046/3751/914 +f 1049/3758/915 1051/3757/915 1047/3756/915 1045/3755/915 +f 1051/3762/916 1052/3761/916 1048/3760/916 1047/3759/916 +f 1052/3766/917 1050/3765/917 1046/3764/917 1048/3763/917 +f 1054/3770/918 1053/3769/918 1049/3768/918 1050/3767/918 +f 1053/3774/919 1055/3773/919 1051/3772/919 1049/3771/919 +f 1055/3778/920 1056/3777/920 1052/3776/920 1051/3775/920 +f 1056/3782/921 1054/3781/921 1050/3780/921 1052/3779/921 +f 1056/3786/922 1055/3785/922 1053/3784/922 1054/3783/922 +f 1042/3789/923 1057/3788/923 1038/3787/923 +f 1038/3792/924 1057/3791/924 1043/3790/924 +f 1045/3795/925 1057/3794/925 1042/3793/925 +f 1043/3798/926 1057/3797/926 1045/3796/926 +f 1044/3801/927 1042/3800/927 1034/3799/927 +f 1046/3804/928 1042/3803/928 1044/3802/928 +f 1043/3807/929 1044/3806/929 1035/3805/929 +f 1048/3810/930 1044/3809/930 1043/3808/930 +o group964939918 +g mesh964939918 +usemtl mat23 +f 1061/3814/931 1060/3813/931 1059/3812/931 1058/3811/931 +f 1065/3818/932 1064/3817/932 1063/3816/932 1062/3815/932 +f 1067/3822/933 1066/3821/933 1062/3820/933 1058/3819/933 +f 1069/3826/934 1068/3825/934 1060/3824/934 1061/3823/934 +f 1062/3832/935 1063/3831/935 1071/3830/935 1070/3829/935 1061/3828/935 1058/3827/935 +f 1060/3838/936 1073/3837/936 1072/3836/936 1064/3835/936 1065/3834/936 1059/3833/936 +f 1070/3842/937 1071/3841/937 1072/3840/937 1073/3839/937 +f 1075/3846/938 1074/3845/938 1064/3844/938 1072/3843/938 +f 1074/3850/939 1076/3849/939 1063/3848/939 1064/3847/939 +f 1076/3854/940 1077/3853/940 1071/3852/940 1063/3851/940 +f 1077/3858/941 1075/3857/941 1072/3856/941 1071/3855/941 +f 1077/3862/942 1076/3861/942 1074/3860/942 1075/3859/942 +f 1068/3866/943 1078/3865/943 1073/3864/943 1060/3863/943 +f 1078/3870/944 1079/3869/944 1070/3868/944 1073/3867/944 +f 1079/3874/945 1069/3873/945 1061/3872/945 1070/3871/945 +f 1079/3878/946 1078/3877/946 1068/3876/946 1069/3875/946 +f 1066/3882/947 1080/3881/947 1065/3880/947 1062/3879/947 +f 1080/3886/948 1081/3885/948 1059/3884/948 1065/3883/948 +f 1081/3890/949 1067/3889/949 1058/3888/949 1059/3887/949 +f 1085/3896/950 1084/3895/950 1083/3894/950 1082/3893/950 1066/3892/950 1067/3891/950 +f 1082/3900/951 1086/3899/951 1080/3898/951 1066/3897/951 +f 1086/3906/952 1089/3905/952 1088/3904/952 1087/3903/952 1081/3902/952 1080/3901/952 +f 1087/3910/953 1085/3909/953 1067/3908/953 1081/3907/953 +f 1087/3914/954 1088/3913/954 1084/3912/954 1085/3911/954 +f 1091/3918/955 1090/3917/955 1083/3916/955 1084/3915/955 +f 1089/3922/956 1086/3921/956 1082/3920/956 1083/3919/956 +f 1090/3926/957 1092/3925/957 1089/3924/957 1083/3923/957 +f 1092/3930/958 1093/3929/958 1088/3928/958 1089/3927/958 +f 1093/3934/959 1091/3933/959 1084/3932/959 1088/3931/959 +f 1093/3938/960 1092/3937/960 1090/3936/960 1091/3935/960 +o group1314690987 +g mesh1314690987 +usemtl mat23 +f 1097/3942/961 1096/3941/961 1095/3940/961 1094/3939/961 +f 1101/3946/962 1100/3945/962 1099/3944/962 1098/3943/962 +f 1095/3950/963 1103/3949/963 1102/3948/963 1094/3947/963 +f 1105/3954/964 1104/3953/964 1096/3952/964 1097/3951/964 +f 1107/3958/965 1106/3957/965 1097/3956/965 1094/3955/965 +f 1096/3964/966 1104/3963/966 1100/3962/966 1101/3961/966 1103/3960/966 1095/3959/966 +f 1105/3968/967 1099/3967/967 1100/3966/967 1104/3965/967 +f 1103/3972/968 1101/3971/968 1098/3970/968 1102/3969/968 +f 1106/3976/969 1108/3975/969 1105/3974/969 1097/3973/969 +f 1108/3980/970 1109/3979/970 1099/3978/970 1105/3977/970 +f 1109/3984/971 1110/3983/971 1098/3982/971 1099/3981/971 +f 1110/3988/972 1111/3987/972 1102/3986/972 1098/3985/972 +f 1111/3992/973 1107/3991/973 1094/3990/973 1102/3989/973 +usemtl mat12 +f 1111/3998/974 1110/3997/974 1109/3996/974 1108/3995/974 1106/3994/974 1107/3993/974 +o group336270405 +g mesh336270405 +usemtl mat23 +f 1115/4002/975 1114/4001/975 1113/4000/975 1112/3999/975 +f 1119/4006/976 1118/4005/976 1117/4004/976 1116/4003/976 +f 1122/4010/977 1121/4009/977 1120/4008/977 1112/4007/977 +f 1126/4014/978 1125/4013/978 1124/4012/978 1123/4011/978 +f 1120/4020/979 1127/4019/979 1116/4018/979 1117/4017/979 1123/4016/979 1112/4015/979 +f 1124/4024/980 1129/4023/980 1128/4022/980 1113/4021/980 +f 1125/4028/981 1130/4027/981 1129/4026/981 1124/4025/981 +f 1130/4032/982 1131/4031/982 1117/4030/982 1129/4029/982 +f 1131/4036/983 1126/4035/983 1123/4034/983 1117/4033/983 +f 1131/4040/984 1130/4039/984 1125/4038/984 1126/4037/984 +f 1133/4044/985 1132/4043/985 1128/4042/985 1116/4041/985 +f 1132/4048/986 1134/4047/986 1113/4046/986 1128/4045/986 +f 1134/4052/987 1122/4051/987 1112/4050/987 1113/4049/987 +f 1134/4058/988 1132/4057/988 1133/4056/988 1135/4055/988 1121/4054/988 1122/4053/988 +f 1118/4062/989 1136/4061/989 1129/4060/989 1117/4059/989 +f 1136/4066/990 1137/4065/990 1128/4064/990 1129/4063/990 +f 1137/4070/991 1119/4069/991 1116/4068/991 1128/4067/991 +f 1137/4074/992 1136/4073/992 1118/4072/992 1119/4071/992 +f 1114/4078/993 1138/4077/993 1124/4076/993 1113/4075/993 +f 1138/4082/994 1139/4081/994 1123/4080/994 1124/4079/994 +f 1139/4086/995 1115/4085/995 1112/4084/995 1123/4083/995 +f 1139/4090/996 1138/4089/996 1114/4088/996 1115/4087/996 +f 1141/4094/997 1140/4093/997 1127/4092/997 1120/4091/997 +f 1140/4097/998 1135/4096/998 1127/4095/998 +f 1141/4101/999 1121/4100/999 1135/4099/999 1140/4098/999 +f 1135/4105/1000 1133/4104/1000 1116/4103/1000 1127/4102/1000 +f 1121/4108/1001 1141/4107/1001 1120/4106/1001 +o group423114769 +g mesh423114769 +usemtl mat23 +f 1145/4112/1002 1144/4111/1002 1143/4110/1002 1142/4109/1002 +f 1144/4116/1003 1147/4115/1003 1146/4114/1003 1143/4113/1003 +f 1147/4120/1004 1149/4119/1004 1148/4118/1004 1146/4117/1004 +f 1149/4124/1005 1151/4123/1005 1150/4122/1005 1148/4121/1005 +f 1151/4128/1006 1153/4127/1006 1152/4126/1006 1150/4125/1006 +f 1153/4132/1007 1155/4131/1007 1154/4130/1007 1152/4129/1007 +f 1155/4136/1008 1157/4135/1008 1156/4134/1008 1154/4133/1008 +f 1157/4140/1009 1159/4139/1009 1158/4138/1009 1156/4137/1009 +f 1159/4144/1010 1161/4143/1010 1160/4142/1010 1158/4141/1010 +f 1161/4148/1011 1163/4147/1011 1162/4146/1011 1160/4145/1011 +f 1163/4152/1012 1165/4151/1012 1164/4150/1012 1162/4149/1012 +f 1165/4156/1013 1145/4155/1013 1142/4154/1013 1164/4153/1013 +f 1142/4168/1014 1143/4167/1014 1146/4166/1014 1148/4165/1014 1150/4164/1014 1152/4163/1014 1154/4162/1014 1156/4161/1014 1158/4160/1014 1160/4159/1014 1162/4158/1014 1164/4157/1014 +f 1165/4180/1015 1163/4179/1015 1161/4178/1015 1159/4177/1015 1157/4176/1015 1155/4175/1015 1153/4174/1015 1151/4173/1015 1149/4172/1015 1147/4171/1015 1144/4170/1015 1145/4169/1015 +o group2020161955 +g mesh2020161955 +usemtl mat15 +f 1170/4185/1016 1169/4184/1016 1168/4183/1016 1167/4182/1016 1166/4181/1016 +f 1175/4190/1017 1174/4189/1017 1173/4188/1017 1172/4187/1017 1171/4186/1017 +f 1170/4194/1018 1178/4193/1018 1177/4192/1018 1176/4191/1018 +f 1166/4198/1019 1167/4197/1019 1180/4196/1019 1179/4195/1019 +f 1170/4205/1020 1166/4204/1020 1182/4203/1020 1174/4202/1020 1175/4201/1020 1181/4200/1020 1178/4199/1020 +f 1169/4211/1021 1184/4210/1021 1183/4209/1021 1171/4208/1021 1172/4207/1021 1168/4206/1021 +f 1185/4215/1022 1173/4214/1022 1174/4213/1022 1182/4212/1022 +f 1167/4219/1023 1185/4218/1023 1186/4217/1023 1180/4216/1023 +f 1185/4223/1024 1182/4222/1024 1187/4221/1024 1186/4220/1024 +f 1182/4227/1025 1166/4226/1025 1179/4225/1025 1187/4224/1025 +f 1189/4231/1026 1188/4230/1026 1186/4229/1026 1187/4228/1026 +f 1181/4235/1027 1175/4234/1027 1191/4233/1027 1190/4232/1027 +f 1178/4239/1028 1181/4238/1028 1183/4237/1028 1184/4236/1028 +f 1175/4245/1029 1171/4244/1029 1194/4243/1029 1193/4242/1029 1192/4241/1029 1191/4240/1029 +f 1171/4249/1030 1183/4248/1030 1195/4247/1030 1194/4246/1030 +f 1183/4255/1031 1181/4254/1031 1190/4253/1031 1197/4252/1031 1196/4251/1031 1195/4250/1031 +f 1190/4259/1032 1191/4258/1032 1192/4257/1032 1197/4256/1032 +f 1178/4265/1033 1184/4264/1033 1200/4263/1033 1199/4262/1033 1198/4261/1033 1177/4260/1033 +f 1184/4269/1034 1169/4268/1034 1201/4267/1034 1200/4266/1034 +f 1169/4275/1035 1170/4274/1035 1176/4273/1035 1203/4272/1035 1202/4271/1035 1201/4270/1035 +f 1176/4279/1036 1177/4278/1036 1198/4277/1036 1203/4276/1036 +f 1198/4283/1037 1199/4282/1037 1202/4281/1037 1203/4280/1037 +f 1199/4287/1038 1200/4286/1038 1201/4285/1038 1202/4284/1038 +f 1193/4291/1039 1194/4290/1039 1195/4289/1039 1196/4288/1039 +f 1192/4295/1040 1193/4294/1040 1196/4293/1040 1197/4292/1040 +f 1172/4300/1041 1173/4299/1041 1185/4298/1041 1167/4297/1041 1168/4296/1041 +f 1188/4304/1042 1204/4303/1042 1180/4302/1042 1186/4301/1042 +f 1204/4308/1043 1205/4307/1043 1179/4306/1043 1180/4305/1043 +f 1205/4312/1044 1189/4311/1044 1187/4310/1044 1179/4309/1044 +f 1207/4316/1045 1206/4315/1045 1188/4314/1045 1189/4313/1045 +f 1206/4320/1046 1208/4319/1046 1204/4318/1046 1188/4317/1046 +f 1208/4324/1047 1209/4323/1047 1205/4322/1047 1204/4321/1047 +f 1209/4328/1048 1207/4327/1048 1189/4326/1048 1205/4325/1048 +f 1209/4332/1049 1208/4331/1049 1206/4330/1049 1207/4329/1049 +o group1246802682 +g mesh1246802682 +usemtl mat15 +f 1218/4341/1050 1217/4340/1050 1216/4339/1050 1215/4338/1050 1214/4337/1050 1213/4336/1050 1212/4335/1050 1211/4334/1050 1210/4333/1050 +f 1227/4350/1051 1226/4349/1051 1225/4348/1051 1224/4347/1051 1223/4346/1051 1222/4345/1051 1221/4344/1051 1220/4343/1051 1219/4342/1051 +f 1229/4354/1052 1228/4353/1052 1219/4352/1052 1210/4351/1052 +f 1220/4358/1053 1221/4357/1053 1217/4356/1053 1218/4355/1053 +f 1219/4362/1054 1220/4361/1054 1218/4360/1054 1210/4359/1054 +f 1212/4366/1055 1226/4365/1055 1227/4364/1055 1211/4363/1055 +f 1223/4370/1056 1224/4369/1056 1214/4368/1056 1215/4367/1056 +f 1222/4374/1057 1223/4373/1057 1215/4372/1057 1216/4371/1057 +f 1224/4378/1058 1225/4377/1058 1213/4376/1058 1214/4375/1058 +f 1221/4382/1059 1222/4381/1059 1216/4380/1059 1217/4379/1059 +f 1225/4386/1060 1226/4385/1060 1212/4384/1060 1213/4383/1060 +f 1228/4390/1061 1230/4389/1061 1227/4388/1061 1219/4387/1061 +f 1230/4394/1062 1231/4393/1062 1211/4392/1062 1227/4391/1062 +f 1231/4398/1063 1229/4397/1063 1210/4396/1063 1211/4395/1063 +f 1233/4402/1064 1232/4401/1064 1228/4400/1064 1229/4399/1064 +f 1232/4406/1065 1234/4405/1065 1230/4404/1065 1228/4403/1065 +f 1234/4410/1066 1235/4409/1066 1231/4408/1066 1230/4407/1066 +f 1235/4414/1067 1233/4413/1067 1229/4412/1067 1231/4411/1067 +f 1235/4418/1068 1234/4417/1068 1232/4416/1068 1233/4415/1068 +o group1123783002 +g mesh1123783002 +usemtl mat23 +f 1367/4806/1165 1366/4805/1165 1365/4804/1165 1364/4803/1165 +f 1371/4810/1166 1370/4809/1166 1369/4808/1166 1368/4807/1166 +f 1365/4814/1167 1371/4813/1167 1368/4812/1167 1364/4811/1167 +f 1369/4818/1168 1370/4817/1168 1366/4816/1168 1367/4815/1168 +f 1368/4822/1169 1369/4821/1169 1367/4820/1169 1364/4819/1169 +f 1366/4826/1170 1370/4825/1170 1371/4824/1170 1365/4823/1170 +o group755394958 +g mesh755394958 +usemtl mat23 +f 1477/5156/1250 1476/5155/1250 1475/5154/1250 1474/5153/1250 +f 1476/5160/1251 1479/5159/1251 1478/5158/1251 1475/5157/1251 +f 1479/5164/1252 1481/5163/1252 1480/5162/1252 1478/5161/1252 +f 1481/5168/1253 1483/5167/1253 1482/5166/1253 1480/5165/1253 +f 1483/5172/1254 1485/5171/1254 1484/5170/1254 1482/5169/1254 +f 1485/5176/1255 1487/5175/1255 1486/5174/1255 1484/5173/1255 +f 1487/5180/1256 1489/5179/1256 1488/5178/1256 1486/5177/1256 +f 1489/5184/1257 1491/5183/1257 1490/5182/1257 1488/5181/1257 +f 1491/5188/1258 1493/5187/1258 1492/5186/1258 1490/5185/1258 +f 1493/5192/1259 1495/5191/1259 1494/5190/1259 1492/5189/1259 +f 1495/5196/1260 1497/5195/1260 1496/5194/1260 1494/5193/1260 +f 1497/5200/1261 1477/5199/1261 1474/5198/1261 1496/5197/1261 +f 1474/5212/1262 1475/5211/1262 1478/5210/1262 1480/5209/1262 1482/5208/1262 1484/5207/1262 1486/5206/1262 1488/5205/1262 1490/5204/1262 1492/5203/1262 1494/5202/1262 1496/5201/1262 +f 1497/5224/1263 1495/5223/1263 1493/5222/1263 1491/5221/1263 1489/5220/1263 1487/5219/1263 1485/5218/1263 1483/5217/1263 1481/5216/1263 1479/5215/1263 1476/5214/1263 1477/5213/1263 +o group221277960 +g mesh221277960 +usemtl mat23 +f 1529/5331/1291 1528/5330/1291 1527/5329/1291 +f 1528/5334/1292 1530/5333/1292 1527/5332/1292 +f 1530/5337/1293 1531/5336/1293 1527/5335/1293 +f 1531/5340/1294 1532/5339/1294 1527/5338/1294 +f 1532/5343/1295 1533/5342/1295 1527/5341/1295 +f 1533/5346/1296 1534/5345/1296 1527/5344/1296 +f 1534/5349/1297 1535/5348/1297 1527/5347/1297 +f 1535/5352/1298 1536/5351/1298 1527/5350/1298 +f 1536/5355/1299 1537/5354/1299 1527/5353/1299 +f 1537/5358/1300 1538/5357/1300 1527/5356/1300 +f 1538/5361/1301 1539/5360/1301 1527/5359/1301 +f 1539/5364/1302 1529/5363/1302 1527/5362/1302 +f 1541/5368/1303 1540/5367/1303 1528/5366/1303 1529/5365/1303 +f 1540/5372/1304 1542/5371/1304 1530/5370/1304 1528/5369/1304 +f 1542/5376/1305 1543/5375/1305 1531/5374/1305 1530/5373/1305 +f 1543/5380/1306 1544/5379/1306 1532/5378/1306 1531/5377/1306 +f 1544/5384/1307 1545/5383/1307 1533/5382/1307 1532/5381/1307 +f 1545/5388/1308 1546/5387/1308 1534/5386/1308 1533/5385/1308 +f 1546/5392/1309 1547/5391/1309 1535/5390/1309 1534/5389/1309 +f 1547/5396/1310 1548/5395/1310 1536/5394/1310 1535/5393/1310 +f 1548/5400/1311 1549/5399/1311 1537/5398/1311 1536/5397/1311 +f 1549/5404/1312 1550/5403/1312 1538/5402/1312 1537/5401/1312 +f 1550/5408/1313 1551/5407/1313 1539/5406/1313 1538/5405/1313 +f 1551/5412/1314 1541/5411/1314 1529/5410/1314 1539/5409/1314 +f 1553/5416/1315 1552/5415/1315 1540/5414/1315 1541/5413/1315 +f 1552/5420/1316 1554/5419/1316 1542/5418/1316 1540/5417/1316 +f 1554/5424/1317 1555/5423/1317 1543/5422/1317 1542/5421/1317 +f 1555/5428/1318 1556/5427/1318 1544/5426/1318 1543/5425/1318 +f 1556/5432/1319 1557/5431/1319 1545/5430/1319 1544/5429/1319 +f 1557/5436/1320 1558/5435/1320 1546/5434/1320 1545/5433/1320 +f 1558/5440/1321 1559/5439/1321 1547/5438/1321 1546/5437/1321 +f 1559/5444/1322 1560/5443/1322 1548/5442/1322 1547/5441/1322 +f 1560/5448/1323 1561/5447/1323 1549/5446/1323 1548/5445/1323 +f 1561/5452/1324 1562/5451/1324 1550/5450/1324 1549/5449/1324 +f 1562/5456/1325 1563/5455/1325 1551/5454/1325 1550/5453/1325 +f 1563/5460/1326 1553/5459/1326 1541/5458/1326 1551/5457/1326 +f 1565/5464/1327 1564/5463/1327 1552/5462/1327 1553/5461/1327 +f 1564/5468/1328 1566/5467/1328 1554/5466/1328 1552/5465/1328 +f 1566/5472/1329 1567/5471/1329 1555/5470/1329 1554/5469/1329 +f 1567/5476/1330 1568/5475/1330 1556/5474/1330 1555/5473/1330 +f 1568/5480/1331 1569/5479/1331 1557/5478/1331 1556/5477/1331 +f 1569/5484/1332 1570/5483/1332 1558/5482/1332 1557/5481/1332 +f 1570/5488/1333 1571/5487/1333 1559/5486/1333 1558/5485/1333 +f 1571/5492/1334 1572/5491/1334 1560/5490/1334 1559/5489/1334 +f 1572/5496/1335 1573/5495/1335 1561/5494/1335 1560/5493/1335 +f 1573/5500/1336 1574/5499/1336 1562/5498/1336 1561/5497/1336 +f 1574/5504/1337 1575/5503/1337 1563/5502/1337 1562/5501/1337 +f 1575/5508/1338 1565/5507/1338 1553/5506/1338 1563/5505/1338 +f 1577/5512/1339 1576/5511/1339 1564/5510/1339 1565/5509/1339 +f 1576/5516/1340 1578/5515/1340 1566/5514/1340 1564/5513/1340 +f 1578/5520/1341 1579/5519/1341 1567/5518/1341 1566/5517/1341 +f 1579/5524/1342 1580/5523/1342 1568/5522/1342 1567/5521/1342 +f 1580/5528/1343 1581/5527/1343 1569/5526/1343 1568/5525/1343 +f 1581/5532/1344 1582/5531/1344 1570/5530/1344 1569/5529/1344 +f 1582/5536/1345 1583/5535/1345 1571/5534/1345 1570/5533/1345 +f 1583/5540/1346 1584/5539/1346 1572/5538/1346 1571/5537/1346 +f 1584/5544/1347 1585/5543/1347 1573/5542/1347 1572/5541/1347 +f 1585/5548/1348 1586/5547/1348 1574/5546/1348 1573/5545/1348 +f 1586/5552/1349 1587/5551/1349 1575/5550/1349 1574/5549/1349 +f 1587/5556/1350 1577/5555/1350 1565/5554/1350 1575/5553/1350 +f 1589/5560/1351 1588/5559/1351 1576/5558/1351 1577/5557/1351 +f 1588/5564/1352 1590/5563/1352 1578/5562/1352 1576/5561/1352 +f 1590/5568/1353 1591/5567/1353 1579/5566/1353 1578/5565/1353 +f 1591/5572/1354 1592/5571/1354 1580/5570/1354 1579/5569/1354 +f 1592/5576/1355 1593/5575/1355 1581/5574/1355 1580/5573/1355 +f 1593/5580/1356 1594/5579/1356 1582/5578/1356 1581/5577/1356 +f 1594/5584/1357 1595/5583/1357 1583/5582/1357 1582/5581/1357 +f 1595/5588/1358 1596/5587/1358 1584/5586/1358 1583/5585/1358 +f 1596/5592/1359 1597/5591/1359 1585/5590/1359 1584/5589/1359 +f 1597/5596/1360 1598/5595/1360 1586/5594/1360 1585/5593/1360 +f 1598/5600/1361 1599/5599/1361 1587/5598/1361 1586/5597/1361 +f 1599/5604/1362 1589/5603/1362 1577/5602/1362 1587/5601/1362 +f 1601/5608/1363 1600/5607/1363 1588/5606/1363 1589/5605/1363 +f 1600/5612/1364 1602/5611/1364 1590/5610/1364 1588/5609/1364 +f 1602/5616/1365 1603/5615/1365 1591/5614/1365 1590/5613/1365 +f 1603/5620/1366 1604/5619/1366 1592/5618/1366 1591/5617/1366 +f 1604/5624/1367 1605/5623/1367 1593/5622/1367 1592/5621/1367 +f 1605/5628/1368 1606/5627/1368 1594/5626/1368 1593/5625/1368 +f 1606/5632/1369 1607/5631/1369 1595/5630/1369 1594/5629/1369 +f 1607/5636/1370 1608/5635/1370 1596/5634/1370 1595/5633/1370 +f 1608/5640/1371 1609/5639/1371 1597/5638/1371 1596/5637/1371 +f 1609/5644/1372 1610/5643/1372 1598/5642/1372 1597/5641/1372 +f 1610/5648/1373 1611/5647/1373 1599/5646/1373 1598/5645/1373 +f 1611/5652/1374 1601/5651/1374 1589/5650/1374 1599/5649/1374 +f 1613/5656/1375 1612/5655/1375 1600/5654/1375 1601/5653/1375 +f 1612/5660/1376 1614/5659/1376 1602/5658/1376 1600/5657/1376 +f 1614/5664/1377 1615/5663/1377 1603/5662/1377 1602/5661/1377 +f 1615/5668/1378 1616/5667/1378 1604/5666/1378 1603/5665/1378 +f 1616/5672/1379 1617/5671/1379 1605/5670/1379 1604/5669/1379 +f 1617/5676/1380 1618/5675/1380 1606/5674/1380 1605/5673/1380 +f 1618/5680/1381 1619/5679/1381 1607/5678/1381 1606/5677/1381 +f 1619/5684/1382 1620/5683/1382 1608/5682/1382 1607/5681/1382 +f 1620/5688/1383 1621/5687/1383 1609/5686/1383 1608/5685/1383 +f 1621/5692/1384 1622/5691/1384 1610/5690/1384 1609/5689/1384 +f 1622/5696/1385 1623/5695/1385 1611/5694/1385 1610/5693/1385 +f 1623/5700/1386 1613/5699/1386 1601/5698/1386 1611/5697/1386 +f 1624/5703/1387 1612/5702/1387 1613/5701/1387 +f 1624/5706/1388 1614/5705/1388 1612/5704/1388 +f 1624/5709/1389 1615/5708/1389 1614/5707/1389 +f 1624/5712/1390 1616/5711/1390 1615/5710/1390 +f 1624/5715/1391 1617/5714/1391 1616/5713/1391 +f 1624/5718/1392 1618/5717/1392 1617/5716/1392 +f 1624/5721/1393 1619/5720/1393 1618/5719/1393 +f 1624/5724/1394 1620/5723/1394 1619/5722/1394 +f 1624/5727/1395 1621/5726/1395 1620/5725/1395 +f 1624/5730/1396 1622/5729/1396 1621/5728/1396 +f 1624/5733/1397 1623/5732/1397 1622/5731/1397 +f 1624/5736/1398 1613/5735/1398 1623/5734/1398 +o group890632551 +g mesh890632551 +usemtl mat23 +f 1960/7035/1728 1959/7034/1728 1958/7033/1728 +f 1960/7038/1729 1961/7037/1729 1959/7036/1729 +f 1960/7041/1730 1962/7040/1730 1961/7039/1730 +f 1960/7044/1731 1963/7043/1731 1962/7042/1731 +f 1960/7047/1732 1964/7046/1732 1963/7045/1732 +f 1960/7050/1733 1965/7049/1733 1964/7048/1733 +f 1960/7053/1734 1966/7052/1734 1965/7051/1734 +f 1960/7056/1735 1967/7055/1735 1966/7054/1735 +f 1960/7059/1736 1968/7058/1736 1967/7057/1736 +f 1960/7062/1737 1969/7061/1737 1968/7060/1737 +f 1960/7065/1738 1970/7064/1738 1969/7063/1738 +f 1960/7068/1739 1958/7067/1739 1970/7066/1739 +f 1958/7072/1740 1959/7071/1740 1972/7070/1740 1971/7069/1740 +f 1959/7076/1741 1961/7075/1741 1973/7074/1741 1972/7073/1741 +f 1961/7080/1742 1962/7079/1742 1974/7078/1742 1973/7077/1742 +f 1962/7084/1743 1963/7083/1743 1975/7082/1743 1974/7081/1743 +f 1963/7088/1744 1964/7087/1744 1976/7086/1744 1975/7085/1744 +f 1964/7092/1745 1965/7091/1745 1977/7090/1745 1976/7089/1745 +f 1965/7096/1746 1966/7095/1746 1978/7094/1746 1977/7093/1746 +f 1966/7100/1747 1967/7099/1747 1979/7098/1747 1978/7097/1747 +f 1967/7104/1748 1968/7103/1748 1980/7102/1748 1979/7101/1748 +f 1968/7108/1749 1969/7107/1749 1981/7106/1749 1980/7105/1749 +f 1969/7112/1750 1970/7111/1750 1982/7110/1750 1981/7109/1750 +f 1970/7116/1751 1958/7115/1751 1971/7114/1751 1982/7113/1751 +f 1971/7120/1752 1972/7119/1752 1984/7118/1752 1983/7117/1752 +f 1972/7124/1753 1973/7123/1753 1985/7122/1753 1984/7121/1753 +f 1973/7128/1754 1974/7127/1754 1986/7126/1754 1985/7125/1754 +f 1974/7132/1755 1975/7131/1755 1987/7130/1755 1986/7129/1755 +f 1975/7136/1756 1976/7135/1756 1988/7134/1756 1987/7133/1756 +f 1976/7140/1757 1977/7139/1757 1989/7138/1757 1988/7137/1757 +f 1977/7144/1758 1978/7143/1758 1990/7142/1758 1989/7141/1758 +f 1978/7148/1759 1979/7147/1759 1991/7146/1759 1990/7145/1759 +f 1979/7152/1760 1980/7151/1760 1992/7150/1760 1991/7149/1760 +f 1980/7156/1761 1981/7155/1761 1993/7154/1761 1992/7153/1761 +f 1981/7160/1762 1982/7159/1762 1994/7158/1762 1993/7157/1762 +f 1982/7164/1763 1971/7163/1763 1983/7162/1763 1994/7161/1763 +f 1983/7168/1764 1984/7167/1764 1996/7166/1764 1995/7165/1764 +f 1984/7172/1765 1985/7171/1765 1997/7170/1765 1996/7169/1765 +f 1985/7176/1766 1986/7175/1766 1998/7174/1766 1997/7173/1766 +f 1986/7180/1767 1987/7179/1767 1999/7178/1767 1998/7177/1767 +f 1987/7184/1768 1988/7183/1768 2000/7182/1768 1999/7181/1768 +f 1988/7188/1769 1989/7187/1769 2001/7186/1769 2000/7185/1769 +f 1989/7192/1770 1990/7191/1770 2002/7190/1770 2001/7189/1770 +f 1990/7196/1771 1991/7195/1771 2003/7194/1771 2002/7193/1771 +f 1991/7200/1772 1992/7199/1772 2004/7198/1772 2003/7197/1772 +f 1992/7204/1773 1993/7203/1773 2005/7202/1773 2004/7201/1773 +f 1993/7208/1774 1994/7207/1774 2006/7206/1774 2005/7205/1774 +f 1994/7212/1775 1983/7211/1775 1995/7210/1775 2006/7209/1775 +f 1995/7216/1776 1996/7215/1776 2008/7214/1776 2007/7213/1776 +f 1996/7220/1777 1997/7219/1777 2009/7218/1777 2008/7217/1777 +f 1997/7224/1778 1998/7223/1778 2010/7222/1778 2009/7221/1778 +f 1998/7228/1779 1999/7227/1779 2011/7226/1779 2010/7225/1779 +f 1999/7232/1780 2000/7231/1780 2012/7230/1780 2011/7229/1780 +f 2000/7236/1781 2001/7235/1781 2013/7234/1781 2012/7233/1781 +f 2001/7240/1782 2002/7239/1782 2014/7238/1782 2013/7237/1782 +f 2002/7244/1783 2003/7243/1783 2015/7242/1783 2014/7241/1783 +f 2003/7248/1784 2004/7247/1784 2016/7246/1784 2015/7245/1784 +f 2004/7252/1785 2005/7251/1785 2017/7250/1785 2016/7249/1785 +f 2005/7256/1786 2006/7255/1786 2018/7254/1786 2017/7253/1786 +f 2006/7260/1787 1995/7259/1787 2007/7258/1787 2018/7257/1787 +f 2007/7264/1788 2008/7263/1788 2020/7262/1788 2019/7261/1788 +f 2008/7268/1789 2009/7267/1789 2021/7266/1789 2020/7265/1789 +f 2009/7272/1790 2010/7271/1790 2022/7270/1790 2021/7269/1790 +f 2010/7276/1791 2011/7275/1791 2023/7274/1791 2022/7273/1791 +f 2011/7280/1792 2012/7279/1792 2024/7278/1792 2023/7277/1792 +f 2012/7284/1793 2013/7283/1793 2025/7282/1793 2024/7281/1793 +f 2013/7288/1794 2014/7287/1794 2026/7286/1794 2025/7285/1794 +f 2014/7292/1795 2015/7291/1795 2027/7290/1795 2026/7289/1795 +f 2015/7296/1796 2016/7295/1796 2028/7294/1796 2027/7293/1796 +f 2016/7300/1797 2017/7299/1797 2029/7298/1797 2028/7297/1797 +f 2017/7304/1798 2018/7303/1798 2030/7302/1798 2029/7301/1798 +f 2018/7308/1799 2007/7307/1799 2019/7306/1799 2030/7305/1799 +f 2019/7312/1800 2020/7311/1800 2032/7310/1800 2031/7309/1800 +f 2020/7316/1801 2021/7315/1801 2033/7314/1801 2032/7313/1801 +f 2021/7320/1802 2022/7319/1802 2034/7318/1802 2033/7317/1802 +f 2022/7324/1803 2023/7323/1803 2035/7322/1803 2034/7321/1803 +f 2023/7328/1804 2024/7327/1804 2036/7326/1804 2035/7325/1804 +f 2024/7332/1805 2025/7331/1805 2037/7330/1805 2036/7329/1805 +f 2025/7336/1806 2026/7335/1806 2038/7334/1806 2037/7333/1806 +f 2026/7340/1807 2027/7339/1807 2039/7338/1807 2038/7337/1807 +f 2027/7344/1808 2028/7343/1808 2040/7342/1808 2039/7341/1808 +f 2028/7348/1809 2029/7347/1809 2041/7346/1809 2040/7345/1809 +f 2029/7352/1810 2030/7351/1810 2042/7350/1810 2041/7349/1810 +f 2030/7356/1811 2019/7355/1811 2031/7354/1811 2042/7353/1811 +f 2031/7360/1812 2032/7359/1812 2044/7358/1812 2043/7357/1812 +f 2032/7364/1813 2033/7363/1813 2045/7362/1813 2044/7361/1813 +f 2033/7368/1814 2034/7367/1814 2046/7366/1814 2045/7365/1814 +f 2034/7372/1815 2035/7371/1815 2047/7370/1815 2046/7369/1815 +f 2035/7376/1816 2036/7375/1816 2048/7374/1816 2047/7373/1816 +f 2036/7380/1817 2037/7379/1817 2049/7378/1817 2048/7377/1817 +f 2037/7384/1818 2038/7383/1818 2050/7382/1818 2049/7381/1818 +f 2038/7388/1819 2039/7387/1819 2051/7386/1819 2050/7385/1819 +f 2039/7392/1820 2040/7391/1820 2052/7390/1820 2051/7389/1820 +f 2040/7396/1821 2041/7395/1821 2053/7394/1821 2052/7393/1821 +f 2041/7400/1822 2042/7399/1822 2054/7398/1822 2053/7397/1822 +f 2042/7404/1823 2031/7403/1823 2043/7402/1823 2054/7401/1823 +f 2043/7407/1824 2044/7406/1824 2055/7405/1824 +f 2044/7410/1825 2045/7409/1825 2055/7408/1825 +f 2045/7413/1826 2046/7412/1826 2055/7411/1826 +f 2046/7416/1827 2047/7415/1827 2055/7414/1827 +f 2047/7419/1828 2048/7418/1828 2055/7417/1828 +f 2048/7422/1829 2049/7421/1829 2055/7420/1829 +f 2049/7425/1830 2050/7424/1830 2055/7423/1830 +f 2050/7428/1831 2051/7427/1831 2055/7426/1831 +f 2051/7431/1832 2052/7430/1832 2055/7429/1832 +f 2052/7434/1833 2053/7433/1833 2055/7432/1833 +f 2053/7437/1834 2054/7436/1834 2055/7435/1834 +f 2054/7440/1835 2043/7439/1835 2055/7438/1835 +o group1836631065 +g mesh1836631065 +usemtl mat23 +f 2085/7530/1857 2084/7529/1857 2083/7528/1857 2082/7527/1857 +f 2084/7534/1858 2087/7533/1858 2086/7532/1858 2083/7531/1858 +f 2087/7538/1859 2089/7537/1859 2088/7536/1859 2086/7535/1859 +f 2089/7542/1860 2091/7541/1860 2090/7540/1860 2088/7539/1860 +f 2091/7546/1861 2093/7545/1861 2092/7544/1861 2090/7543/1861 +f 2093/7550/1862 2095/7549/1862 2094/7548/1862 2092/7547/1862 +f 2095/7554/1863 2097/7553/1863 2096/7552/1863 2094/7551/1863 +f 2097/7558/1864 2099/7557/1864 2098/7556/1864 2096/7555/1864 +f 2099/7562/1865 2101/7561/1865 2100/7560/1865 2098/7559/1865 +f 2101/7566/1866 2103/7565/1866 2102/7564/1866 2100/7563/1866 +f 2103/7570/1867 2105/7569/1867 2104/7568/1867 2102/7567/1867 +f 2105/7574/1868 2085/7573/1868 2082/7572/1868 2104/7571/1868 +f 2105/7586/1869 2103/7585/1869 2101/7584/1869 2099/7583/1869 2097/7582/1869 2095/7581/1869 2093/7580/1869 2091/7579/1869 2089/7578/1869 2087/7577/1869 2084/7576/1869 2085/7575/1869 +f 2082/7598/1870 2083/7597/1870 2086/7596/1870 2088/7595/1870 2090/7594/1870 2092/7593/1870 2094/7592/1870 2096/7591/1870 2098/7590/1870 2100/7589/1870 2102/7588/1870 2104/7587/1870 +o group1453925415 +g mesh1453925415 +usemtl mat23 +f 2109/7602/1871 2108/7601/1871 2107/7600/1871 2106/7599/1871 +f 2113/7606/1872 2112/7605/1872 2111/7604/1872 2110/7603/1872 +f 2109/7610/1873 2116/7609/1873 2115/7608/1873 2114/7607/1873 +f 2120/7614/1874 2119/7613/1874 2118/7612/1874 2117/7611/1874 +f 2109/7620/1875 2120/7619/1875 2112/7618/1875 2113/7617/1875 2121/7616/1875 2116/7615/1875 +f 2108/7624/1876 2123/7623/1876 2122/7622/1876 2119/7621/1876 +f 2119/7628/1877 2122/7627/1877 2124/7626/1877 2118/7625/1877 +f 2122/7632/1878 2112/7631/1878 2125/7630/1878 2124/7629/1878 +f 2112/7636/1879 2120/7635/1879 2117/7634/1879 2125/7633/1879 +f 2117/7640/1880 2118/7639/1880 2124/7638/1880 2125/7637/1880 +f 2113/7644/1881 2123/7643/1881 2127/7642/1881 2126/7641/1881 +f 2123/7648/1882 2108/7647/1882 2128/7646/1882 2127/7645/1882 +f 2108/7652/1883 2109/7651/1883 2114/7650/1883 2128/7649/1883 +f 2114/7658/1884 2115/7657/1884 2129/7656/1884 2126/7655/1884 2127/7654/1884 2128/7653/1884 +f 2112/7662/1885 2122/7661/1885 2130/7660/1885 2111/7659/1885 +f 2122/7666/1886 2123/7665/1886 2131/7664/1886 2130/7663/1886 +f 2123/7670/1887 2113/7669/1887 2110/7668/1887 2131/7667/1887 +f 2110/7674/1888 2111/7673/1888 2130/7672/1888 2131/7671/1888 +f 2108/7678/1889 2119/7677/1889 2132/7676/1889 2107/7675/1889 +f 2119/7682/1890 2120/7681/1890 2133/7680/1890 2132/7679/1890 +f 2120/7686/1891 2109/7685/1891 2106/7684/1891 2133/7683/1891 +f 2106/7690/1892 2107/7689/1892 2132/7688/1892 2133/7687/1892 +f 2116/7694/1893 2121/7693/1893 2135/7692/1893 2134/7691/1893 +f 2121/7697/1894 2129/7696/1894 2135/7695/1894 +f 2135/7701/1895 2129/7700/1895 2115/7699/1895 2134/7698/1895 +f 2121/7705/1896 2113/7704/1896 2126/7703/1896 2129/7702/1896 +f 2116/7708/1897 2134/7707/1897 2115/7706/1897 +o group21200505 +g mesh21200505 +usemtl mat15 +f 2140/7713/1898 2139/7712/1898 2138/7711/1898 2137/7710/1898 2136/7709/1898 +f 2145/7718/1899 2144/7717/1899 2143/7716/1899 2142/7715/1899 2141/7714/1899 +f 2148/7722/1900 2147/7721/1900 2146/7720/1900 2136/7719/1900 +f 2150/7726/1901 2149/7725/1901 2139/7724/1901 2140/7723/1901 +f 2146/7733/1902 2152/7732/1902 2141/7731/1902 2142/7730/1902 2151/7729/1902 2140/7728/1902 2136/7727/1902 +f 2138/7739/1903 2144/7738/1903 2145/7737/1903 2154/7736/1903 2153/7735/1903 2137/7734/1903 +f 2151/7743/1904 2142/7742/1904 2143/7741/1904 2155/7740/1904 +f 2149/7747/1905 2156/7746/1905 2155/7745/1905 2139/7744/1905 +f 2156/7751/1906 2157/7750/1906 2151/7749/1906 2155/7748/1906 +f 2157/7755/1907 2150/7754/1907 2140/7753/1907 2151/7752/1907 +f 2157/7759/1908 2156/7758/1908 2159/7757/1908 2158/7756/1908 +f 2161/7763/1909 2160/7762/1909 2141/7761/1909 2152/7760/1909 +f 2153/7767/1910 2154/7766/1910 2152/7765/1910 2146/7764/1910 +f 2160/7773/1911 2164/7772/1911 2163/7771/1911 2162/7770/1911 2145/7769/1911 2141/7768/1911 +f 2162/7777/1912 2165/7776/1912 2154/7775/1912 2145/7774/1912 +f 2165/7783/1913 2167/7782/1913 2166/7781/1913 2161/7780/1913 2152/7779/1913 2154/7778/1913 +f 2166/7787/1914 2164/7786/1914 2160/7785/1914 2161/7784/1914 +f 2147/7793/1915 2170/7792/1915 2169/7791/1915 2168/7790/1915 2153/7789/1915 2146/7788/1915 +f 2168/7797/1916 2171/7796/1916 2137/7795/1916 2153/7794/1916 +f 2171/7803/1917 2173/7802/1917 2172/7801/1917 2148/7800/1917 2136/7799/1917 2137/7798/1917 +f 2172/7807/1918 2170/7806/1918 2147/7805/1918 2148/7804/1918 +f 2172/7811/1919 2173/7810/1919 2169/7809/1919 2170/7808/1919 +f 2173/7815/1920 2171/7814/1920 2168/7813/1920 2169/7812/1920 +f 2167/7819/1921 2165/7818/1921 2162/7817/1921 2163/7816/1921 +f 2166/7823/1922 2167/7822/1922 2163/7821/1922 2164/7820/1922 +f 2138/7828/1923 2139/7827/1923 2155/7826/1923 2143/7825/1923 2144/7824/1923 +f 2156/7832/1924 2149/7831/1924 2174/7830/1924 2159/7829/1924 +f 2149/7836/1925 2150/7835/1925 2175/7834/1925 2174/7833/1925 +f 2150/7840/1926 2157/7839/1926 2158/7838/1926 2175/7837/1926 +f 2158/7844/1927 2159/7843/1927 2177/7842/1927 2176/7841/1927 +f 2159/7848/1928 2174/7847/1928 2178/7846/1928 2177/7845/1928 +f 2174/7852/1929 2175/7851/1929 2179/7850/1929 2178/7849/1929 +f 2175/7856/1930 2158/7855/1930 2176/7854/1930 2179/7853/1930 +f 2176/7860/1931 2177/7859/1931 2178/7858/1931 2179/7857/1931 +o group1018653311 +g mesh1018653311 +usemtl mat23 +f 2183/7864/1932 2182/7863/1932 2181/7862/1932 2180/7861/1932 +f 2182/7868/1933 2185/7867/1933 2184/7866/1933 2181/7865/1933 +f 2185/7872/1934 2187/7871/1934 2186/7870/1934 2184/7869/1934 +f 2187/7876/1935 2189/7875/1935 2188/7874/1935 2186/7873/1935 +f 2189/7880/1936 2191/7879/1936 2190/7878/1936 2188/7877/1936 +f 2191/7884/1937 2193/7883/1937 2192/7882/1937 2190/7881/1937 +f 2193/7888/1938 2195/7887/1938 2194/7886/1938 2192/7885/1938 +f 2195/7892/1939 2197/7891/1939 2196/7890/1939 2194/7889/1939 +f 2197/7896/1940 2199/7895/1940 2198/7894/1940 2196/7893/1940 +f 2199/7900/1941 2201/7899/1941 2200/7898/1941 2198/7897/1941 +f 2201/7904/1942 2203/7903/1942 2202/7902/1942 2200/7901/1942 +f 2203/7908/1943 2183/7907/1943 2180/7906/1943 2202/7905/1943 +f 2203/7920/1944 2201/7919/1944 2199/7918/1944 2197/7917/1944 2195/7916/1944 2193/7915/1944 2191/7914/1944 2189/7913/1944 2187/7912/1944 2185/7911/1944 2182/7910/1944 2183/7909/1944 +f 2180/7932/1945 2181/7931/1945 2184/7930/1945 2186/7929/1945 2188/7928/1945 2190/7927/1945 2192/7926/1945 2194/7925/1945 2196/7924/1945 2198/7923/1945 2200/7922/1945 2202/7921/1945 +o group1756523028 +g mesh1756523028 +usemtl mat15 +f 2212/7941/1946 2211/7940/1946 2210/7939/1946 2209/7938/1946 2208/7937/1946 2207/7936/1946 2206/7935/1946 2205/7934/1946 2204/7933/1946 +f 2221/7950/1947 2220/7949/1947 2219/7948/1947 2218/7947/1947 2217/7946/1947 2216/7945/1947 2215/7944/1947 2214/7943/1947 2213/7942/1947 +f 2212/7954/1948 2221/7953/1948 2223/7952/1948 2222/7951/1948 +f 2204/7958/1949 2205/7957/1949 2219/7956/1949 2220/7955/1949 +f 2212/7962/1950 2204/7961/1950 2220/7960/1950 2221/7959/1950 +f 2211/7966/1951 2213/7965/1951 2214/7964/1951 2210/7963/1951 +f 2207/7970/1952 2208/7969/1952 2216/7968/1952 2217/7967/1952 +f 2206/7974/1953 2207/7973/1953 2217/7972/1953 2218/7971/1953 +f 2208/7978/1954 2209/7977/1954 2215/7976/1954 2216/7975/1954 +f 2205/7982/1955 2206/7981/1955 2218/7980/1955 2219/7979/1955 +f 2209/7986/1956 2210/7985/1956 2214/7984/1956 2215/7983/1956 +f 2221/7990/1957 2213/7989/1957 2224/7988/1957 2223/7987/1957 +f 2213/7994/1958 2211/7993/1958 2225/7992/1958 2224/7991/1958 +f 2211/7998/1959 2212/7997/1959 2222/7996/1959 2225/7995/1959 +f 2222/8002/1960 2223/8001/1960 2227/8000/1960 2226/7999/1960 +f 2223/8006/1961 2224/8005/1961 2228/8004/1961 2227/8003/1961 +f 2224/8010/1962 2225/8009/1962 2229/8008/1962 2228/8007/1962 +f 2225/8014/1963 2222/8013/1963 2226/8012/1963 2229/8011/1963 +f 2226/8018/1964 2227/8017/1964 2228/8016/1964 2229/8015/1964 +o group2014627758 +g mesh2014627758 +usemtl mat23 +f 2233/8022/1965 2232/8021/1965 2231/8020/1965 2230/8019/1965 +f 2237/8026/1966 2236/8025/1966 2235/8024/1966 2234/8023/1966 +f 2233/8030/1967 2237/8029/1967 2234/8028/1967 2232/8027/1967 +f 2230/8034/1968 2231/8033/1968 2235/8032/1968 2236/8031/1968 +f 2233/8038/1969 2230/8037/1969 2236/8036/1969 2237/8035/1969 +f 2232/8042/1970 2234/8041/1970 2235/8040/1970 2231/8039/1970 +o group1618326935 +g mesh1618326935 +usemtl mat12 +f 2369/8430/2067 2368/8429/2067 2367/8428/2067 2366/8427/2067 +f 2368/8434/2068 2371/8433/2068 2370/8432/2068 2367/8431/2068 +f 2371/8438/2069 2373/8437/2069 2372/8436/2069 2370/8435/2069 +f 2373/8442/2070 2375/8441/2070 2374/8440/2070 2372/8439/2070 +f 2375/8446/2071 2377/8445/2071 2376/8444/2071 2374/8443/2071 +f 2377/8450/2072 2379/8449/2072 2378/8448/2072 2376/8447/2072 +f 2379/8454/2073 2381/8453/2073 2380/8452/2073 2378/8451/2073 +f 2381/8458/2074 2383/8457/2074 2382/8456/2074 2380/8455/2074 +f 2383/8462/2075 2385/8461/2075 2384/8460/2075 2382/8459/2075 +f 2385/8466/2076 2369/8465/2076 2366/8464/2076 2384/8463/2076 +f 2386/8469/2077 2382/8468/2077 2384/8467/2077 +f 2388/8473/2078 2387/8472/2078 2368/8471/2078 2369/8470/2078 +f 2386/8476/2079 2380/8475/2079 2382/8474/2079 +f 2386/8479/2080 2378/8478/2080 2380/8477/2080 +f 2386/8482/2081 2376/8481/2081 2378/8480/2081 +f 2386/8485/2082 2374/8484/2082 2376/8483/2082 +f 2386/8488/2083 2372/8487/2083 2374/8486/2083 +f 2386/8491/2084 2370/8490/2084 2372/8489/2084 +f 2386/8494/2085 2367/8493/2085 2370/8492/2085 +f 2386/8497/2086 2366/8496/2086 2367/8495/2086 +f 2386/8500/2087 2384/8499/2087 2366/8498/2087 +f 2387/8504/2088 2389/8503/2088 2371/8502/2088 2368/8501/2088 +f 2389/8508/2089 2390/8507/2089 2373/8506/2089 2371/8505/2089 +f 2390/8512/2090 2391/8511/2090 2375/8510/2090 2373/8509/2090 +f 2391/8516/2091 2392/8515/2091 2377/8514/2091 2375/8513/2091 +f 2392/8520/2092 2393/8519/2092 2379/8518/2092 2377/8517/2092 +f 2393/8524/2093 2394/8523/2093 2381/8522/2093 2379/8521/2093 +f 2394/8528/2094 2395/8527/2094 2383/8526/2094 2381/8525/2094 +f 2395/8532/2095 2396/8531/2095 2385/8530/2095 2383/8529/2095 +f 2396/8536/2096 2388/8535/2096 2369/8534/2096 2385/8533/2096 +f 2393/8546/2097 2392/8545/2097 2391/8544/2097 2390/8543/2097 2389/8542/2097 2387/8541/2097 2388/8540/2097 2396/8539/2097 2395/8538/2097 2394/8537/2097 +o group721553034 +g mesh721553034 +usemtl mat23 +f 2722/9700/2371 2721/9699/2371 2720/9698/2371 2719/9697/2371 +f 2721/9704/2372 2724/9703/2372 2723/9702/2372 2720/9701/2372 +f 2724/9708/2373 2726/9707/2373 2725/9706/2373 2723/9705/2373 +f 2726/9712/2374 2728/9711/2374 2727/9710/2374 2725/9709/2374 +f 2728/9716/2375 2730/9715/2375 2729/9714/2375 2727/9713/2375 +f 2730/9720/2376 2732/9719/2376 2731/9718/2376 2729/9717/2376 +f 2732/9724/2377 2734/9723/2377 2733/9722/2377 2731/9721/2377 +f 2734/9728/2378 2736/9727/2378 2735/9726/2378 2733/9725/2378 +f 2736/9732/2379 2738/9731/2379 2737/9730/2379 2735/9729/2379 +f 2738/9736/2380 2740/9735/2380 2739/9734/2380 2737/9733/2380 +f 2740/9740/2381 2742/9739/2381 2741/9738/2381 2739/9737/2381 +f 2742/9744/2382 2722/9743/2382 2719/9742/2382 2741/9741/2382 +f 2719/9756/2383 2720/9755/2383 2723/9754/2383 2725/9753/2383 2727/9752/2383 2729/9751/2383 2731/9750/2383 2733/9749/2383 2735/9748/2383 2737/9747/2383 2739/9746/2383 2741/9745/2383 +f 2742/9768/2384 2740/9767/2384 2738/9766/2384 2736/9765/2384 2734/9764/2384 2732/9763/2384 2730/9762/2384 2728/9761/2384 2726/9760/2384 2724/9759/2384 2721/9758/2384 2722/9757/2384 +o group2144887645 +g mesh2144887645 +usemtl mat23 +f 4/4/1 3/3/1 2/2/1 1/1/1 +f 8/8/2 7/7/2 6/6/2 5/5/2 +f 2/13/3 8/12/3 5/11/3 9/10/3 1/9/3 +f 10/18/4 6/17/4 7/16/4 3/15/4 4/14/4 +f 9/22/5 10/21/5 4/20/5 1/19/5 +f 3/26/6 7/25/6 8/24/6 2/23/6 +f 9/30/7 5/29/7 6/28/7 10/27/7 +f 129/380/94 128/379/94 127/378/94 126/377/94 +f 127/389/96 135/388/96 130/387/96 126/386/96 +f 131/393/97 136/392/97 128/391/97 129/390/97 +f 132/405/100 137/404/100 136/403/100 131/402/100 +f 138/413/102 134/412/102 130/411/102 135/410/102 +f 142/421/104 141/420/104 137/419/104 132/418/104 +f 147/449/111 148/448/111 150/447/111 149/446/111 +f 142/456/113 149/455/113 150/454/113 141/453/113 +f 154/472/117 153/471/117 152/470/117 151/469/117 +f 158/476/118 157/475/118 156/474/118 155/473/118 +f 152/480/119 160/479/119 159/478/119 151/477/119 +f 156/484/120 157/483/120 153/482/120 154/481/120 +f 153/498/122 157/497/122 158/496/122 164/495/122 163/494/122 160/493/122 152/492/122 +f 163/502/123 164/501/123 161/500/123 162/499/123 +f 164/506/124 158/505/124 155/504/124 161/503/124 +f 160/510/125 163/509/125 162/508/125 159/507/125 +f 190/584/139 188/583/139 186/582/139 184/581/139 181/580/139 182/579/139 177/578/139 174/577/139 172/576/139 170/575/139 167/574/139 168/573/139 +f 176/588/140 177/587/140 182/586/140 179/585/140 +f 193/591/141 192/590/141 191/589/141 +f 196/594/142 195/593/142 194/592/142 +f 196/598/143 198/597/143 197/596/143 195/595/143 +f 198/602/144 200/601/144 199/600/144 197/599/144 +f 200/606/145 202/605/145 201/604/145 199/603/145 +f 202/610/146 204/609/146 203/608/146 201/607/146 +f 204/614/147 206/613/147 205/612/147 203/611/147 +f 206/618/148 208/617/148 207/616/148 205/615/148 +f 208/622/149 210/621/149 209/620/149 207/619/149 +f 210/626/150 212/625/150 211/624/150 209/623/150 +f 212/630/151 193/629/151 191/628/151 211/627/151 +f 191/642/152 192/641/152 194/640/152 195/639/152 197/638/152 199/637/152 201/636/152 203/635/152 205/634/152 207/633/152 209/632/152 211/631/152 +f 214/646/153 213/645/153 192/644/153 193/643/153 +f 213/650/154 215/649/154 194/648/154 192/647/154 +f 215/654/155 216/653/155 196/652/155 194/651/155 +f 216/658/156 217/657/156 198/656/156 196/655/156 +f 217/661/157 200/660/157 198/659/157 +f 219/665/158 218/664/158 202/663/158 200/662/158 +f 218/669/159 220/668/159 204/667/159 202/666/159 +f 220/673/160 221/672/160 206/671/160 204/670/160 +f 221/677/161 222/676/161 208/675/161 206/674/161 +f 222/681/162 223/680/162 210/679/162 208/678/162 +f 223/685/163 224/684/163 212/683/163 210/682/163 +f 224/689/164 214/688/164 193/687/164 212/686/164 +f 226/693/165 225/692/165 213/691/165 214/690/165 +f 225/697/166 227/696/166 215/695/166 213/694/166 +f 227/701/167 228/700/167 216/699/167 215/698/167 +f 228/705/168 229/704/168 217/703/168 216/702/168 +f 229/709/169 230/708/169 219/707/169 217/706/169 +f 230/713/170 231/712/170 218/711/170 219/710/170 +f 231/717/171 232/716/171 220/715/171 218/714/171 +f 232/721/172 233/720/172 221/719/172 220/718/172 +f 233/725/173 234/724/173 222/723/173 221/722/173 +f 234/729/174 235/728/174 223/727/174 222/726/174 +f 235/733/175 236/732/175 224/731/175 223/730/175 +f 236/737/176 226/736/176 214/735/176 224/734/176 +f 238/741/177 237/740/177 225/739/177 226/738/177 +f 237/745/178 239/744/178 227/743/178 225/742/178 +f 239/749/179 240/748/179 228/747/179 227/746/179 +f 240/753/180 241/752/180 229/751/180 228/750/180 +f 241/757/181 242/756/181 230/755/181 229/754/181 +f 242/761/182 243/760/182 231/759/182 230/758/182 +f 243/765/183 244/764/183 232/763/183 231/762/183 +f 244/769/184 245/768/184 233/767/184 232/766/184 +f 245/773/185 246/772/185 234/771/185 233/770/185 +f 246/777/186 247/776/186 235/775/186 234/774/186 +f 247/781/187 248/780/187 236/779/187 235/778/187 +f 248/785/188 238/784/188 226/783/188 236/782/188 +f 250/789/189 249/788/189 237/787/189 238/786/189 +f 249/793/190 251/792/190 239/791/190 237/790/190 +f 251/797/191 252/796/191 240/795/191 239/794/191 +f 252/801/192 253/800/192 241/799/192 240/798/192 +f 253/805/193 254/804/193 242/803/193 241/802/193 +f 254/809/194 255/808/194 243/807/194 242/806/194 +f 255/813/195 256/812/195 244/811/195 243/810/195 +f 256/817/196 257/816/196 245/815/196 244/814/196 +f 257/821/197 258/820/197 246/819/197 245/818/197 +f 258/825/198 259/824/198 247/823/198 246/822/198 +f 259/829/199 260/828/199 248/827/199 247/826/199 +f 260/833/200 250/832/200 238/831/200 248/830/200 +f 260/845/201 259/844/201 258/843/201 257/842/201 256/841/201 255/840/201 254/839/201 253/838/201 252/837/201 251/836/201 249/835/201 250/834/201 +f 217/848/202 219/847/202 200/846/202 +f 263/851/203 262/850/203 261/849/203 +f 266/854/204 265/853/204 264/852/204 +f 265/858/205 268/857/205 267/856/205 264/855/205 +f 268/862/206 270/861/206 269/860/206 267/859/206 +f 270/866/207 272/865/207 271/864/207 269/863/207 +f 272/870/208 274/869/208 273/868/208 271/867/208 +f 274/874/209 276/873/209 275/872/209 273/871/209 +f 276/878/210 278/877/210 277/876/210 275/875/210 +f 278/882/211 280/881/211 279/880/211 277/879/211 +f 280/886/212 282/885/212 281/884/212 279/883/212 +f 282/890/213 263/889/213 261/888/213 281/887/213 +f 282/902/214 280/901/214 278/900/214 276/899/214 274/898/214 272/897/214 270/896/214 268/895/214 265/894/214 266/893/214 262/892/214 263/891/214 +f 261/906/215 262/905/215 284/904/215 283/903/215 +f 262/910/216 266/909/216 285/908/216 284/907/216 +f 266/914/217 264/913/217 286/912/217 285/911/217 +f 264/918/218 267/917/218 287/916/218 286/915/218 +f 267/921/219 269/920/219 287/919/219 +f 269/925/220 271/924/220 289/923/220 288/922/220 +f 271/929/221 273/928/221 290/927/221 289/926/221 +f 273/933/222 275/932/222 291/931/222 290/930/222 +f 275/937/223 277/936/223 292/935/223 291/934/223 +f 277/941/224 279/940/224 293/939/224 292/938/224 +f 279/945/225 281/944/225 294/943/225 293/942/225 +f 281/949/226 261/948/226 283/947/226 294/946/226 +f 283/953/227 284/952/227 296/951/227 295/950/227 +f 284/957/228 285/956/228 297/955/228 296/954/228 +f 285/961/229 286/960/229 298/959/229 297/958/229 +f 286/965/230 287/964/230 299/963/230 298/962/230 +f 287/969/231 288/968/231 300/967/231 299/966/231 +f 288/973/232 289/972/232 301/971/232 300/970/232 +f 289/977/233 290/976/233 302/975/233 301/974/233 +f 290/981/234 291/980/234 303/979/234 302/978/234 +f 291/985/235 292/984/235 304/983/235 303/982/235 +f 292/989/236 293/988/236 305/987/236 304/986/236 +f 293/993/237 294/992/237 306/991/237 305/990/237 +f 294/997/238 283/996/238 295/995/238 306/994/238 +f 295/1001/239 296/1000/239 308/999/239 307/998/239 +f 296/1005/240 297/1004/240 309/1003/240 308/1002/240 +f 297/1009/241 298/1008/241 310/1007/241 309/1006/241 +f 298/1013/242 299/1012/242 311/1011/242 310/1010/242 +f 299/1017/243 300/1016/243 312/1015/243 311/1014/243 +f 300/1021/244 301/1020/244 313/1019/244 312/1018/244 +f 301/1025/245 302/1024/245 314/1023/245 313/1022/245 +f 302/1029/246 303/1028/246 315/1027/246 314/1026/246 +f 303/1033/247 304/1032/247 316/1031/247 315/1030/247 +f 304/1037/248 305/1036/248 317/1035/248 316/1034/248 +f 305/1041/249 306/1040/249 318/1039/249 317/1038/249 +f 306/1045/250 295/1044/250 307/1043/250 318/1042/250 +f 307/1049/251 308/1048/251 320/1047/251 319/1046/251 +f 308/1053/252 309/1052/252 321/1051/252 320/1050/252 +f 309/1057/253 310/1056/253 322/1055/253 321/1054/253 +f 310/1061/254 311/1060/254 323/1059/254 322/1058/254 +f 311/1065/255 312/1064/255 324/1063/255 323/1062/255 +f 312/1069/256 313/1068/256 325/1067/256 324/1066/256 +f 313/1073/257 314/1072/257 326/1071/257 325/1070/257 +f 314/1077/258 315/1076/258 327/1075/258 326/1074/258 +f 315/1081/259 316/1080/259 328/1079/259 327/1078/259 +f 316/1085/260 317/1084/260 329/1083/260 328/1082/260 +f 317/1089/261 318/1088/261 330/1087/261 329/1086/261 +f 318/1093/262 307/1092/262 319/1091/262 330/1090/262 +f 319/1105/263 320/1104/263 321/1103/263 322/1102/263 323/1101/263 324/1100/263 325/1099/263 326/1098/263 327/1097/263 328/1096/263 329/1095/263 330/1094/263 +f 269/1108/264 288/1107/264 287/1106/264 +f 334/1112/265 333/1111/265 332/1110/265 331/1109/265 +f 338/1116/266 337/1115/266 336/1114/266 335/1113/266 +f 334/1120/267 340/1119/267 339/1118/267 333/1117/267 +f 331/1124/268 332/1123/268 336/1122/268 337/1121/268 +f 333/1138/270 339/1137/270 344/1136/270 343/1135/270 335/1134/270 336/1133/270 332/1132/270 +f 341/1142/271 342/1141/271 343/1140/271 344/1139/271 +f 342/1146/272 338/1145/272 335/1144/272 343/1143/272 +f 340/1150/273 341/1149/273 344/1148/273 339/1147/273 +f 348/1154/274 347/1153/274 346/1152/274 345/1151/274 +f 347/1158/275 350/1157/275 349/1156/275 346/1155/275 +f 350/1162/276 352/1161/276 351/1160/276 349/1159/276 +f 352/1166/277 354/1165/277 353/1164/277 351/1163/277 +f 354/1170/278 356/1169/278 355/1168/278 353/1167/278 +f 356/1174/279 358/1173/279 357/1172/279 355/1171/279 +f 358/1178/280 360/1177/280 359/1176/280 357/1175/280 +f 360/1182/281 362/1181/281 361/1180/281 359/1179/281 +f 362/1186/282 364/1185/282 363/1184/282 361/1183/282 +f 364/1190/283 366/1189/283 365/1188/283 363/1187/283 +f 366/1194/284 368/1193/284 367/1192/284 365/1191/284 +f 368/1198/285 348/1197/285 345/1196/285 367/1195/285 +f 345/1210/286 346/1209/286 349/1208/286 351/1207/286 353/1206/286 355/1205/286 357/1204/286 359/1203/286 361/1202/286 363/1201/286 365/1200/286 367/1199/286 +f 370/1214/287 369/1213/287 347/1212/287 348/1211/287 +f 369/1218/288 371/1217/288 350/1216/288 347/1215/288 +f 371/1222/289 372/1221/289 352/1220/289 350/1219/289 +f 372/1226/290 373/1225/290 354/1224/290 352/1223/290 +f 373/1230/291 374/1229/291 356/1228/291 354/1227/291 +f 374/1234/292 375/1233/292 358/1232/292 356/1231/292 +f 375/1238/293 376/1237/293 360/1236/293 358/1235/293 +f 376/1242/294 377/1241/294 362/1240/294 360/1239/294 +f 377/1246/295 378/1245/295 364/1244/295 362/1243/295 +f 378/1250/296 379/1249/296 366/1248/296 364/1247/296 +f 379/1254/297 380/1253/297 368/1252/297 366/1251/297 +f 380/1258/298 370/1257/298 348/1256/298 368/1255/298 +f 382/1262/299 381/1261/299 369/1260/299 370/1259/299 +f 381/1266/300 383/1265/300 371/1264/300 369/1263/300 +f 383/1270/301 384/1269/301 372/1268/301 371/1267/301 +f 384/1274/302 385/1273/302 373/1272/302 372/1271/302 +f 385/1279/303 387/1278/303 386/1277/303 374/1276/303 373/1275/303 +f 386/1283/304 388/1282/304 375/1281/304 374/1280/304 +f 388/1286/305 376/1285/305 375/1284/305 +f 390/1290/306 389/1289/306 377/1288/306 376/1287/306 +f 389/1294/307 391/1293/307 378/1292/307 377/1291/307 +f 391/1298/308 392/1297/308 379/1296/308 378/1295/308 +f 392/1302/309 393/1301/309 380/1300/309 379/1299/309 +f 393/1306/310 382/1305/310 370/1304/310 380/1303/310 +f 393/1318/311 392/1317/311 391/1316/311 389/1315/311 390/1314/311 394/1313/311 387/1312/311 385/1311/311 384/1310/311 383/1309/311 381/1308/311 382/1307/311 +f 386/1322/312 387/1321/312 394/1320/312 388/1319/312 +f 388/1326/313 394/1325/313 390/1324/313 376/1323/313 +f 398/1330/314 397/1329/314 396/1328/314 395/1327/314 +f 397/1334/315 400/1333/315 399/1332/315 396/1331/315 +f 400/1338/316 402/1337/316 401/1336/316 399/1335/316 +f 402/1342/317 404/1341/317 403/1340/317 401/1339/317 +f 404/1346/318 406/1345/318 405/1344/318 403/1343/318 +f 406/1350/319 408/1349/319 407/1348/319 405/1347/319 +f 408/1354/320 410/1353/320 409/1352/320 407/1351/320 +f 410/1358/321 412/1357/321 411/1356/321 409/1355/321 +f 412/1362/322 414/1361/322 413/1360/322 411/1359/322 +f 414/1366/323 416/1365/323 415/1364/323 413/1363/323 +f 416/1370/324 418/1369/324 417/1368/324 415/1367/324 +f 418/1374/325 398/1373/325 395/1372/325 417/1371/325 +f 395/1386/326 396/1385/326 399/1384/326 401/1383/326 403/1382/326 405/1381/326 407/1380/326 409/1379/326 411/1378/326 413/1377/326 415/1376/326 417/1375/326 +f 420/1390/327 419/1389/327 397/1388/327 398/1387/327 +f 419/1394/328 421/1393/328 400/1392/328 397/1391/328 +f 421/1398/329 422/1397/329 402/1396/329 400/1395/329 +f 422/1402/330 423/1401/330 404/1400/330 402/1399/330 +f 423/1406/331 424/1405/331 406/1404/331 404/1403/331 +f 424/1410/332 425/1409/332 408/1408/332 406/1407/332 +f 425/1414/333 426/1413/333 410/1412/333 408/1411/333 +f 426/1418/334 427/1417/334 412/1416/334 410/1415/334 +f 427/1422/335 428/1421/335 414/1420/335 412/1419/335 +f 428/1426/336 429/1425/336 416/1424/336 414/1423/336 +f 429/1430/337 430/1429/337 418/1428/337 416/1427/337 +f 430/1434/338 420/1433/338 398/1432/338 418/1431/338 +f 433/1439/339 432/1438/339 431/1437/339 419/1436/339 420/1435/339 +f 431/1443/340 434/1442/340 421/1441/340 419/1440/340 +f 434/1447/341 435/1446/341 422/1445/341 421/1444/341 +f 435/1451/342 436/1450/342 423/1449/342 422/1448/342 +f 436/1455/343 437/1454/343 424/1453/343 423/1452/343 +f 437/1459/344 438/1458/344 425/1457/344 424/1456/344 +f 438/1463/345 439/1462/345 426/1461/345 425/1460/345 +f 439/1467/346 440/1466/346 427/1465/346 426/1464/346 +f 440/1471/347 441/1470/347 428/1469/347 427/1468/347 +f 441/1475/348 442/1474/348 429/1473/348 428/1472/348 +f 442/1479/349 444/1478/349 443/1477/349 429/1476/349 +f 443/1483/350 433/1482/350 420/1481/350 430/1480/350 +f 444/1495/351 442/1494/351 441/1493/351 440/1492/351 439/1491/351 438/1490/351 437/1489/351 436/1488/351 435/1487/351 434/1486/351 431/1485/351 432/1484/351 +f 443/1499/352 444/1498/352 432/1497/352 433/1496/352 +f 443/1502/353 430/1501/353 429/1500/353 +f 448/1506/354 447/1505/354 446/1504/354 445/1503/354 +f 448/1515/356 453/1514/356 454/1513/356 447/1512/356 +f 445/1519/357 446/1518/357 455/1517/357 452/1516/357 +f 452/1531/360 455/1530/360 456/1529/360 451/1528/360 +f 454/1539/362 453/1538/362 449/1537/362 457/1536/362 +f 451/1547/364 456/1546/364 461/1545/364 460/1544/364 +f 468/1575/371 469/1574/371 465/1573/371 466/1572/371 +f 461/1582/373 469/1581/373 468/1580/373 460/1579/373 +usemtl mat21 +f 14/34/8 13/33/8 12/32/8 11/31/8 +f 18/38/9 17/37/9 16/36/9 15/35/9 +f 12/42/10 18/41/10 15/40/10 11/39/10 +f 16/46/11 17/45/11 13/44/11 14/43/11 +f 15/50/12 16/49/12 14/48/12 11/47/12 +f 13/54/13 17/53/13 18/52/13 12/51/13 +f 22/58/14 21/57/14 20/56/14 19/55/14 +f 26/62/15 25/61/15 24/60/15 23/59/15 +f 20/66/16 26/65/16 23/64/16 19/63/16 +f 24/70/17 25/69/17 21/68/17 22/67/17 +f 23/74/18 24/73/18 22/72/18 19/71/18 +f 21/78/19 25/77/19 26/76/19 20/75/19 +f 30/82/20 29/81/20 28/80/20 27/79/20 +f 34/86/21 33/85/21 32/84/21 31/83/21 +f 28/90/22 34/89/22 31/88/22 27/87/22 +f 32/94/23 33/93/23 29/92/23 30/91/23 +f 31/98/24 32/97/24 30/96/24 27/95/24 +f 29/102/25 33/101/25 34/100/25 28/99/25 +f 38/106/26 37/105/26 36/104/26 35/103/26 +f 42/110/27 41/109/27 40/108/27 39/107/27 +f 36/114/28 42/113/28 39/112/28 35/111/28 +f 40/118/29 41/117/29 37/116/29 38/115/29 +f 39/122/30 40/121/30 38/120/30 35/119/30 +f 37/126/31 41/125/31 42/124/31 36/123/31 +f 46/130/32 45/129/32 44/128/32 43/127/32 +f 50/134/33 49/133/33 48/132/33 47/131/33 +f 44/138/34 50/137/34 47/136/34 43/135/34 +f 48/142/35 49/141/35 45/140/35 46/139/35 +f 47/146/36 48/145/36 46/144/36 43/143/36 +f 45/150/37 49/149/37 50/148/37 44/147/37 +f 54/154/38 53/153/38 52/152/38 51/151/38 +f 58/158/39 57/157/39 56/156/39 55/155/39 +f 52/162/40 58/161/40 55/160/40 51/159/40 +f 56/166/41 57/165/41 53/164/41 54/163/41 +f 55/170/42 56/169/42 54/168/42 51/167/42 +f 53/174/43 57/173/43 58/172/43 52/171/43 +f 62/178/44 61/177/44 60/176/44 59/175/44 +f 66/182/45 65/181/45 64/180/45 63/179/45 +f 62/186/46 66/185/46 63/184/46 61/183/46 +f 59/190/47 60/189/47 64/188/47 65/187/47 +f 62/194/48 59/193/48 65/192/48 66/191/48 +f 61/198/49 63/197/49 64/196/49 60/195/49 +f 70/202/50 69/201/50 68/200/50 67/199/50 +f 74/206/51 73/205/51 72/204/51 71/203/51 +f 70/210/52 74/209/52 71/208/52 69/207/52 +f 67/214/53 68/213/53 72/212/53 73/211/53 +f 70/218/54 67/217/54 73/216/54 74/215/54 +f 69/222/55 71/221/55 72/220/55 68/219/55 +f 78/226/56 77/225/56 76/224/56 75/223/56 +f 82/230/57 81/229/57 80/228/57 79/227/57 +f 78/234/58 82/233/58 79/232/58 77/231/58 +f 75/238/59 76/237/59 80/236/59 81/235/59 +f 78/242/60 75/241/60 81/240/60 82/239/60 +f 77/246/61 79/245/61 80/244/61 76/243/61 +f 86/250/62 85/249/62 84/248/62 83/247/62 +f 90/254/63 89/253/63 88/252/63 87/251/63 +f 86/258/64 90/257/64 87/256/64 85/255/64 +f 83/262/65 84/261/65 88/260/65 89/259/65 +f 86/266/66 83/265/66 89/264/66 90/263/66 +f 85/270/67 87/269/67 88/268/67 84/267/67 +f 94/274/68 93/273/68 92/272/68 91/271/68 +f 98/278/69 97/277/69 96/276/69 95/275/69 +f 94/282/70 98/281/70 95/280/70 93/279/70 +f 91/286/71 92/285/71 96/284/71 97/283/71 +f 94/290/72 91/289/72 97/288/72 98/287/72 +f 93/294/73 95/293/73 96/292/73 92/291/73 +f 102/298/74 101/297/74 100/296/74 99/295/74 +f 106/302/75 105/301/75 104/300/75 103/299/75 +f 102/306/76 106/305/76 103/304/76 101/303/76 +f 99/310/77 100/309/77 104/308/77 105/307/77 +f 102/314/78 99/313/78 105/312/78 106/311/78 +f 101/318/79 103/317/79 104/316/79 100/315/79 +f 110/322/80 109/321/80 108/320/80 107/319/80 +f 114/326/81 113/325/81 112/324/81 111/323/81 +f 108/330/82 114/329/82 111/328/82 107/327/82 +f 112/334/83 113/333/83 109/332/83 110/331/83 +f 111/338/84 112/337/84 110/336/84 107/335/84 +f 109/342/85 113/341/85 114/340/85 108/339/85 +f 118/346/86 117/345/86 116/344/86 115/343/86 +f 122/350/87 121/349/87 120/348/87 119/347/87 +f 116/355/88 122/354/88 119/353/88 123/352/88 115/351/88 +f 125/359/89 124/358/89 117/357/89 118/356/89 +f 123/363/90 125/362/90 118/361/90 115/360/90 +f 117/368/91 124/367/91 121/366/91 122/365/91 116/364/91 +f 123/372/92 119/371/92 120/370/92 125/369/92 +f 125/376/93 120/375/93 121/374/93 124/373/93 +usemtl mat8 +f 134/385/95 133/384/95 132/383/95 131/382/95 130/381/95 +f 130/397/98 131/396/98 129/395/98 126/394/98 +f 128/401/99 136/400/99 135/399/99 127/398/99 +f 137/409/101 138/408/101 135/407/101 136/406/101 +f 140/417/103 139/416/103 133/415/103 134/414/103 +f 145/426/105 144/425/105 143/424/105 138/423/105 137/422/105 +f 143/430/106 140/429/106 134/428/106 138/427/106 +f 143/434/107 144/433/107 139/432/107 140/431/107 +f 141/437/108 145/436/108 137/435/108 +f 148/441/109 147/440/109 146/439/109 145/438/109 +f 147/445/110 149/444/110 142/443/110 146/442/110 +f 142/452/112 132/451/112 146/450/112 +f 141/460/114 150/459/114 148/458/114 145/457/114 +f 139/464/115 146/463/115 132/462/115 133/461/115 +f 144/468/116 145/467/116 146/466/116 139/465/116 +f 168/514/126 167/513/126 166/512/126 165/511/126 +f 167/518/127 170/517/127 169/516/127 166/515/127 +f 170/522/128 172/521/128 171/520/128 169/519/128 +f 172/526/129 174/525/129 173/524/129 171/523/129 +f 174/531/130 177/530/130 176/529/130 175/528/130 173/527/130 +f 176/535/131 179/534/131 178/533/131 175/532/131 +f 179/540/132 182/539/132 181/538/132 180/537/132 178/536/132 +f 181/544/133 184/543/133 183/542/133 180/541/133 +f 184/548/134 186/547/134 185/546/134 183/545/134 +f 186/552/135 188/551/135 187/550/135 185/549/135 +f 188/556/136 190/555/136 189/554/136 187/553/136 +f 190/560/137 168/559/137 165/558/137 189/557/137 +f 165/572/138 166/571/138 169/570/138 171/569/138 173/568/138 175/567/138 178/566/138 180/565/138 183/564/138 185/563/138 187/562/138 189/561/138 +f 453/1511/355 452/1510/355 451/1509/355 450/1508/355 449/1507/355 +f 448/1523/358 445/1522/358 452/1521/358 453/1520/358 +f 447/1527/359 454/1526/359 455/1525/359 446/1524/359 +f 455/1535/361 454/1534/361 457/1533/361 456/1532/361 +f 449/1543/363 450/1542/363 459/1541/363 458/1540/363 +f 456/1552/365 457/1551/365 464/1550/365 463/1549/365 462/1548/365 +f 457/1556/366 449/1555/366 458/1554/366 464/1553/366 +f 458/1560/367 459/1559/367 463/1558/367 464/1557/367 +f 456/1563/368 462/1562/368 461/1561/368 +f 462/1567/369 467/1566/369 466/1565/369 465/1564/369 +f 467/1571/370 460/1570/370 468/1569/370 466/1568/370 +f 467/1578/372 451/1577/372 460/1576/372 +f 462/1586/374 465/1585/374 469/1584/374 461/1583/374 +f 450/1590/375 451/1589/375 467/1588/375 459/1587/375 +f 459/1594/376 467/1593/376 462/1592/376 463/1591/376 +usemtl mat12 +f 159/491/121 162/490/121 161/489/121 155/488/121 156/487/121 154/486/121 151/485/121 +f 334/1131/269 331/1130/269 337/1129/269 338/1128/269 342/1127/269 341/1126/269 340/1125/269 +f 473/1598/377 472/1597/377 471/1596/377 470/1595/377 +f 477/1602/378 476/1601/378 475/1600/378 474/1599/378 +f 471/1606/379 477/1605/379 474/1604/379 470/1603/379 +f 479/1610/380 478/1609/380 472/1608/380 473/1607/380 +f 474/1616/381 475/1615/381 480/1614/381 479/1613/381 473/1612/381 470/1611/381 +f 472/1622/382 478/1621/382 481/1620/382 476/1619/382 477/1618/382 471/1617/382 +f 483/1626/383 482/1625/383 481/1624/383 478/1623/383 +f 480/1630/384 475/1629/384 476/1628/384 481/1627/384 +f 482/1634/385 484/1633/385 480/1632/385 481/1631/385 +f 484/1638/386 485/1637/386 479/1636/386 480/1635/386 +f 485/1642/387 483/1641/387 478/1640/387 479/1639/387 +f 485/1646/388 484/1645/388 482/1644/388 483/1643/388 +f 489/1650/389 488/1649/389 487/1648/389 486/1647/389 +f 493/1654/390 492/1653/390 491/1652/390 490/1651/390 +f 489/1658/391 493/1657/391 490/1656/391 488/1655/391 +f 486/1662/392 487/1661/392 495/1660/392 494/1659/392 +f 489/1668/393 486/1667/393 494/1666/393 496/1665/393 492/1664/393 493/1663/393 +f 488/1674/394 490/1673/394 491/1672/394 497/1671/394 495/1670/394 487/1669/394 +f 495/1678/395 497/1677/395 499/1676/395 498/1675/395 +f 497/1682/396 491/1681/396 492/1680/396 496/1679/396 +f 497/1686/397 496/1685/397 500/1684/397 499/1683/397 +f 496/1690/398 494/1689/398 501/1688/398 500/1687/398 +f 494/1694/399 495/1693/399 498/1692/399 501/1691/399 +f 498/1698/400 499/1697/400 500/1696/400 501/1695/400 +o group1580466885 +g mesh1580466885 +usemtl mat12 +f 529/1774/415 528/1773/415 527/1772/415 526/1771/415 +f 528/1794/420 538/1793/420 533/1792/420 527/1791/420 +f 538/1798/421 539/1797/421 532/1796/421 533/1795/421 +f 539/1802/422 540/1801/422 537/1800/422 532/1799/422 +f 541/1815/425 544/1814/425 531/1813/425 536/1812/425 +f 544/1819/426 545/1818/426 530/1817/426 531/1816/426 +f 545/1823/427 546/1822/427 535/1821/427 530/1820/427 +f 546/1827/428 547/1826/428 534/1825/428 535/1824/428 +f 555/1864/437 554/1863/437 542/1862/437 543/1861/437 +f 554/1868/438 556/1867/438 548/1866/438 542/1865/438 +f 556/1872/439 557/1871/439 549/1870/439 548/1869/439 +f 557/1876/440 558/1875/440 550/1874/440 549/1873/440 +f 558/1880/441 559/1879/441 551/1878/441 550/1877/441 +f 559/1884/442 560/1883/442 552/1882/442 551/1881/442 +f 560/1888/443 561/1887/443 553/1886/443 552/1885/443 +f 561/1892/444 555/1891/444 543/1890/444 553/1889/444 +usemtl mat23 +f 533/1778/416 532/1777/416 531/1776/416 530/1775/416 +f 526/1782/417 527/1781/417 535/1780/417 534/1779/417 +f 531/1786/418 532/1785/418 537/1784/418 536/1783/418 +f 527/1790/419 533/1789/419 530/1788/419 535/1787/419 +f 543/1806/423 542/1805/423 541/1804/423 536/1803/423 +f 540/1811/424 539/1810/424 538/1809/424 528/1808/424 529/1807/424 +f 546/1832/429 545/1831/429 544/1830/429 541/1829/429 547/1828/429 +f 542/1836/430 548/1835/430 547/1834/430 541/1833/430 +f 548/1840/431 549/1839/431 534/1838/431 547/1837/431 +f 549/1844/432 550/1843/432 526/1842/432 534/1841/432 +f 550/1848/433 551/1847/433 529/1846/433 526/1845/433 +f 551/1852/434 552/1851/434 540/1850/434 529/1849/434 +f 552/1856/435 553/1855/435 537/1854/435 540/1853/435 +f 553/1860/436 543/1859/436 536/1858/436 537/1857/436 +f 561/1900/445 560/1899/445 559/1898/445 558/1897/445 557/1896/445 556/1895/445 554/1894/445 555/1893/445 +f 665/2264/531 664/2263/531 663/2262/531 662/2261/531 661/2260/531 660/2259/531 652/2258/531 653/2257/531 +f 725/2468/577 724/2467/577 723/2466/577 722/2465/577 721/2464/577 720/2463/577 719/2462/577 718/2461/577 717/2460/577 716/2459/577 714/2458/577 715/2457/577 +f 773/2636/615 772/2635/615 771/2634/615 770/2633/615 769/2632/615 768/2631/615 767/2630/615 766/2629/615 765/2628/615 764/2627/615 762/2626/615 763/2625/615 +f 777/2640/616 776/2639/616 775/2638/616 774/2637/616 +f 781/2644/617 780/2643/617 779/2642/617 778/2641/617 +f 775/2648/618 781/2647/618 778/2646/618 774/2645/618 +f 779/2652/619 780/2651/619 776/2650/619 777/2649/619 +f 778/2656/620 779/2655/620 777/2654/620 774/2653/620 +f 776/2660/621 780/2659/621 781/2658/621 775/2657/621 +f 785/2664/622 784/2663/622 783/2662/622 782/2661/622 +f 789/2668/623 788/2667/623 787/2666/623 786/2665/623 +f 783/2672/624 789/2671/624 786/2670/624 782/2669/624 +f 787/2676/625 788/2675/625 784/2674/625 785/2673/625 +f 786/2680/626 787/2679/626 785/2678/626 782/2677/626 +f 784/2684/627 788/2683/627 789/2682/627 783/2681/627 +f 1375/4830/1171 1374/4829/1171 1373/4828/1171 1372/4827/1171 +f 1379/4834/1172 1378/4833/1172 1377/4832/1172 1376/4831/1172 +f 1373/4838/1173 1379/4837/1173 1376/4836/1173 1372/4835/1173 +f 1377/4842/1174 1378/4841/1174 1374/4840/1174 1375/4839/1174 +f 1376/4846/1175 1377/4845/1175 1375/4844/1175 1372/4843/1175 +f 1374/4850/1176 1378/4849/1176 1379/4848/1176 1373/4847/1176 +f 1383/4854/1177 1382/4853/1177 1381/4852/1177 1380/4851/1177 +f 1387/4858/1178 1386/4857/1178 1385/4856/1178 1384/4855/1178 +f 1381/4862/1179 1387/4861/1179 1384/4860/1179 1380/4859/1179 +f 1385/4866/1180 1386/4865/1180 1382/4864/1180 1383/4863/1180 +f 1384/4870/1181 1385/4869/1181 1383/4868/1181 1380/4867/1181 +f 1382/4874/1182 1386/4873/1182 1387/4872/1182 1381/4871/1182 +f 1391/4878/1183 1390/4877/1183 1389/4876/1183 1388/4875/1183 +f 1395/4882/1184 1394/4881/1184 1393/4880/1184 1392/4879/1184 +f 1389/4886/1185 1395/4885/1185 1392/4884/1185 1388/4883/1185 +f 1393/4890/1186 1394/4889/1186 1390/4888/1186 1391/4887/1186 +f 1392/4894/1187 1393/4893/1187 1391/4892/1187 1388/4891/1187 +f 1397/4898/1188 1396/4897/1188 1395/4896/1188 1389/4895/1188 +f 1396/4902/1189 1398/4901/1189 1394/4900/1189 1395/4899/1189 +f 1398/4906/1190 1399/4905/1190 1390/4904/1190 1394/4903/1190 +f 1399/4910/1191 1397/4909/1191 1389/4908/1191 1390/4907/1191 +f 1399/4914/1192 1398/4913/1192 1396/4912/1192 1397/4911/1192 +f 1403/4918/1193 1402/4917/1193 1401/4916/1193 1400/4915/1193 +f 1407/4922/1194 1406/4921/1194 1405/4920/1194 1404/4919/1194 +f 1403/4926/1195 1407/4925/1195 1404/4924/1195 1402/4923/1195 +f 1400/4930/1196 1401/4929/1196 1405/4928/1196 1406/4927/1196 +f 1403/4934/1197 1400/4933/1197 1406/4932/1197 1407/4931/1197 +f 1402/4938/1198 1404/4937/1198 1405/4936/1198 1401/4935/1198 +f 1411/4942/1199 1410/4941/1199 1409/4940/1199 1408/4939/1199 +f 1415/4946/1200 1414/4945/1200 1413/4944/1200 1412/4943/1200 +f 1411/4950/1201 1415/4949/1201 1412/4948/1201 1410/4947/1201 +f 1408/4954/1202 1409/4953/1202 1413/4952/1202 1414/4951/1202 +f 1411/4958/1203 1408/4957/1203 1414/4956/1203 1415/4955/1203 +f 1410/4962/1204 1412/4961/1204 1417/4960/1204 1416/4959/1204 +f 1412/4966/1205 1413/4965/1205 1418/4964/1205 1417/4963/1205 +f 1413/4970/1206 1409/4969/1206 1419/4968/1206 1418/4967/1206 +f 1409/4974/1207 1410/4973/1207 1416/4972/1207 1419/4971/1207 +f 1416/4978/1208 1417/4977/1208 1418/4976/1208 1419/4975/1208 +f 1423/4982/1209 1422/4981/1209 1421/4980/1209 1420/4979/1209 +f 1427/4986/1210 1426/4985/1210 1425/4984/1210 1424/4983/1210 +f 1423/4990/1211 1427/4989/1211 1424/4988/1211 1422/4987/1211 +f 1420/4994/1212 1421/4993/1212 1425/4992/1212 1426/4991/1212 +f 1423/4998/1213 1420/4997/1213 1426/4996/1213 1427/4995/1213 +f 1422/5002/1214 1424/5001/1214 1425/5000/1214 1421/4999/1214 +usemtl mat15 +f 566/1905/446 565/1904/446 564/1903/446 563/1902/446 562/1901/446 +f 572/1911/447 571/1910/447 570/1909/447 569/1908/447 568/1907/447 567/1906/447 +f 563/1915/448 574/1914/448 573/1913/448 562/1912/448 +f 569/1919/449 570/1918/449 564/1917/449 565/1916/449 +f 573/1926/450 578/1925/450 577/1924/450 576/1923/450 575/1922/450 566/1921/450 562/1920/450 +f 564/1931/451 570/1930/451 571/1929/451 574/1928/451 563/1927/451 +f 572/1934/452 567/1933/452 579/1932/452 +f 574/1941/453 571/1940/453 572/1939/453 579/1938/453 580/1937/453 578/1936/453 573/1935/453 +f 582/1945/454 581/1944/454 566/1943/454 575/1942/454 +f 585/1952/455 584/1951/455 580/1950/455 579/1949/455 567/1948/455 568/1947/455 583/1946/455 +f 587/1956/456 586/1955/456 584/1954/456 585/1953/456 +f 581/1960/457 588/1959/457 565/1958/457 566/1957/457 +f 588/1964/458 589/1963/458 569/1962/458 565/1961/458 +f 589/1968/459 590/1967/459 568/1966/459 569/1965/459 +f 590/1972/460 591/1971/460 583/1970/460 568/1969/460 +f 591/1975/461 585/1974/461 583/1973/461 +f 582/1978/462 575/1977/462 576/1976/462 +f 593/1982/463 592/1981/463 581/1980/463 582/1979/463 +f 592/1986/464 594/1985/464 588/1984/464 581/1983/464 +f 594/1990/465 595/1989/465 589/1988/465 588/1987/465 +f 595/1994/466 596/1993/466 590/1992/466 589/1991/466 +f 596/1998/467 597/1997/467 591/1996/467 590/1995/467 +f 597/2002/468 598/2001/468 585/2000/468 591/1999/468 +f 598/2006/469 599/2005/469 576/2004/469 585/2003/469 +f 599/2010/470 593/2009/470 582/2008/470 576/2007/470 +f 577/2024/473 578/2023/473 580/2022/473 584/2021/473 +f 586/2028/474 600/2027/474 577/2026/474 584/2025/474 +f 600/2032/475 601/2031/475 576/2030/475 577/2029/475 +f 601/2036/476 587/2035/476 585/2034/476 576/2033/476 +f 601/2040/477 600/2039/477 586/2038/477 587/2037/477 +f 605/2044/478 604/2043/478 603/2042/478 602/2041/478 +f 609/2048/479 608/2047/479 607/2046/479 606/2045/479 +f 603/2052/480 609/2051/480 606/2050/480 602/2049/480 +f 607/2056/481 608/2055/481 604/2054/481 605/2053/481 +f 611/2060/482 610/2059/482 605/2058/482 602/2057/482 +f 604/2064/483 608/2063/483 609/2062/483 603/2061/483 +f 610/2068/484 612/2067/484 607/2066/484 605/2065/484 +f 612/2072/485 613/2071/485 606/2070/485 607/2069/485 +f 613/2076/486 611/2075/486 602/2074/486 606/2073/486 +f 615/2080/487 614/2079/487 610/2078/487 611/2077/487 +f 614/2084/488 616/2083/488 612/2082/488 610/2081/488 +f 616/2088/489 617/2087/489 613/2086/489 612/2085/489 +f 617/2092/490 615/2091/490 611/2090/490 613/2089/490 +f 619/2096/491 618/2095/491 614/2094/491 615/2093/491 +f 618/2100/492 620/2099/492 616/2098/492 614/2097/492 +f 620/2104/493 621/2103/493 617/2102/493 616/2101/493 +f 621/2108/494 619/2107/494 615/2106/494 617/2105/494 +f 621/2112/495 620/2111/495 618/2110/495 619/2109/495 +f 625/2116/496 624/2115/496 623/2114/496 622/2113/496 +f 629/2120/497 628/2119/497 627/2118/497 626/2117/497 +f 623/2124/498 629/2123/498 626/2122/498 622/2121/498 +f 627/2128/499 628/2127/499 624/2126/499 625/2125/499 +f 631/2132/500 630/2131/500 625/2130/500 622/2129/500 +f 624/2136/501 628/2135/501 629/2134/501 623/2133/501 +f 630/2140/502 632/2139/502 627/2138/502 625/2137/502 +f 632/2144/503 633/2143/503 626/2142/503 627/2141/503 +f 633/2148/504 631/2147/504 622/2146/504 626/2145/504 +f 635/2152/505 634/2151/505 630/2150/505 631/2149/505 +f 634/2156/506 636/2155/506 632/2154/506 630/2153/506 +f 636/2160/507 637/2159/507 633/2158/507 632/2157/507 +f 637/2164/508 635/2163/508 631/2162/508 633/2161/508 +f 639/2168/509 638/2167/509 634/2166/509 635/2165/509 +f 638/2172/510 640/2171/510 636/2170/510 634/2169/510 +f 640/2176/511 641/2175/511 637/2174/511 636/2173/511 +f 641/2180/512 639/2179/512 635/2178/512 637/2177/512 +f 641/2184/513 640/2183/513 638/2182/513 639/2181/513 +f 645/2188/514 644/2187/514 643/2186/514 642/2185/514 +f 649/2192/515 648/2191/515 647/2190/515 646/2189/515 +f 643/2196/516 651/2195/516 650/2194/516 642/2193/516 +f 647/2200/517 648/2199/517 644/2198/517 645/2197/517 +f 653/2204/518 652/2203/518 645/2202/518 642/2201/518 +f 644/2212/519 648/2211/519 649/2210/519 656/2209/519 655/2208/519 654/2207/519 651/2206/519 643/2205/519 +f 654/2216/520 655/2215/520 658/2214/520 657/2213/520 +f 655/2220/521 656/2219/521 659/2218/521 658/2217/521 +f 656/2224/522 649/2223/522 646/2222/522 659/2221/522 +f 651/2228/523 654/2227/523 657/2226/523 650/2225/523 +f 652/2232/524 660/2231/524 647/2230/524 645/2229/524 +f 660/2236/525 661/2235/525 646/2234/525 647/2233/525 +f 661/2240/526 662/2239/526 659/2238/526 646/2237/526 +f 662/2244/527 663/2243/527 658/2242/527 659/2241/527 +f 663/2248/528 664/2247/528 657/2246/528 658/2245/528 +f 664/2252/529 665/2251/529 650/2250/529 657/2249/529 +f 665/2256/530 653/2255/530 642/2254/530 650/2253/530 +f 681/2304/540 680/2303/540 679/2302/540 678/2301/540 +f 680/2308/541 683/2307/541 682/2306/541 679/2305/541 +f 683/2312/542 685/2311/542 684/2310/542 682/2309/542 +f 685/2316/543 687/2315/543 686/2314/543 684/2313/543 +f 687/2320/544 689/2319/544 688/2318/544 686/2317/544 +f 689/2324/545 691/2323/545 690/2322/545 688/2321/545 +f 691/2328/546 693/2327/546 692/2326/546 690/2325/546 +f 693/2332/547 695/2331/547 694/2330/547 692/2329/547 +f 695/2336/548 697/2335/548 696/2334/548 694/2333/548 +f 697/2340/549 699/2339/549 698/2338/549 696/2337/549 +f 699/2344/550 701/2343/550 700/2342/550 698/2341/550 +f 701/2348/551 681/2347/551 678/2346/551 700/2345/551 +f 703/2352/552 702/2351/552 698/2350/552 700/2349/552 +f 701/2364/553 699/2363/553 697/2362/553 695/2361/553 693/2360/553 691/2359/553 689/2358/553 687/2357/553 685/2356/553 683/2355/553 680/2354/553 681/2353/553 +f 702/2368/554 704/2367/554 696/2366/554 698/2365/554 +f 704/2372/555 705/2371/555 694/2370/555 696/2369/555 +f 705/2376/556 706/2375/556 692/2374/556 694/2373/556 +f 706/2380/557 707/2379/557 690/2378/557 692/2377/557 +f 707/2384/558 708/2383/558 688/2382/558 690/2381/558 +f 708/2388/559 709/2387/559 686/2386/559 688/2385/559 +f 709/2392/560 710/2391/560 684/2390/560 686/2389/560 +f 710/2396/561 711/2395/561 682/2394/561 684/2393/561 +f 711/2400/562 712/2399/562 679/2398/562 682/2397/562 +f 712/2404/563 713/2403/563 678/2402/563 679/2401/563 +f 713/2408/564 703/2407/564 700/2406/564 678/2405/564 +f 715/2412/565 714/2411/565 702/2410/565 703/2409/565 +f 714/2416/566 716/2415/566 704/2414/566 702/2413/566 +f 716/2420/567 717/2419/567 705/2418/567 704/2417/567 +f 717/2424/568 718/2423/568 706/2422/568 705/2421/568 +f 718/2428/569 719/2427/569 707/2426/569 706/2425/569 +f 719/2432/570 720/2431/570 708/2430/570 707/2429/570 +f 720/2436/571 721/2435/571 709/2434/571 708/2433/571 +f 721/2440/572 722/2439/572 710/2438/572 709/2437/572 +f 722/2444/573 723/2443/573 711/2442/573 710/2441/573 +f 723/2448/574 724/2447/574 712/2446/574 711/2445/574 +f 724/2452/575 725/2451/575 713/2450/575 712/2449/575 +f 725/2456/576 715/2455/576 703/2454/576 713/2453/576 +f 729/2472/578 728/2471/578 727/2470/578 726/2469/578 +f 728/2476/579 731/2475/579 730/2474/579 727/2473/579 +f 731/2480/580 733/2479/580 732/2478/580 730/2477/580 +f 733/2484/581 735/2483/581 734/2482/581 732/2481/581 +f 735/2488/582 737/2487/582 736/2486/582 734/2485/582 +f 737/2492/583 739/2491/583 738/2490/583 736/2489/583 +f 739/2496/584 741/2495/584 740/2494/584 738/2493/584 +f 741/2500/585 743/2499/585 742/2498/585 740/2497/585 +f 743/2504/586 745/2503/586 744/2502/586 742/2501/586 +f 745/2508/587 747/2507/587 746/2506/587 744/2505/587 +f 747/2512/588 749/2511/588 748/2510/588 746/2509/588 +f 749/2516/589 729/2515/589 726/2514/589 748/2513/589 +f 751/2520/590 750/2519/590 746/2518/590 748/2517/590 +f 749/2532/591 747/2531/591 745/2530/591 743/2529/591 741/2528/591 739/2527/591 737/2526/591 735/2525/591 733/2524/591 731/2523/591 728/2522/591 729/2521/591 +f 750/2536/592 752/2535/592 744/2534/592 746/2533/592 +f 752/2540/593 753/2539/593 742/2538/593 744/2537/593 +f 753/2544/594 754/2543/594 740/2542/594 742/2541/594 +f 754/2548/595 755/2547/595 738/2546/595 740/2545/595 +f 755/2552/596 756/2551/596 736/2550/596 738/2549/596 +f 756/2556/597 757/2555/597 734/2554/597 736/2553/597 +f 757/2560/598 758/2559/598 732/2558/598 734/2557/598 +f 758/2564/599 759/2563/599 730/2562/599 732/2561/599 +f 759/2568/600 760/2567/600 727/2566/600 730/2565/600 +f 760/2572/601 761/2571/601 726/2570/601 727/2569/601 +f 761/2576/602 751/2575/602 748/2574/602 726/2573/602 +f 763/2580/603 762/2579/603 750/2578/603 751/2577/603 +f 762/2584/604 764/2583/604 752/2582/604 750/2581/604 +f 764/2588/605 765/2587/605 753/2586/605 752/2585/605 +f 765/2592/606 766/2591/606 754/2590/606 753/2589/606 +f 766/2596/607 767/2595/607 755/2594/607 754/2593/607 +f 767/2600/608 768/2599/608 756/2598/608 755/2597/608 +f 768/2604/609 769/2603/609 757/2602/609 756/2601/609 +f 769/2608/610 770/2607/610 758/2606/610 757/2605/610 +f 770/2612/611 771/2611/611 759/2610/611 758/2609/611 +f 771/2616/612 772/2615/612 760/2614/612 759/2613/612 +f 772/2620/613 773/2619/613 761/2618/613 760/2617/613 +f 773/2624/614 763/2623/614 751/2622/614 761/2621/614 +usemtl mat8 +f 597/2016/471 596/2015/471 595/2014/471 594/2013/471 592/2012/471 593/2011/471 +f 593/2020/472 599/2019/472 598/2018/472 597/2017/472 +o group273990889 +g mesh273990889 +usemtl mat23 +f 1239/4422/1069 1238/4421/1069 1237/4420/1069 1236/4419/1069 +f 1243/4426/1070 1242/4425/1070 1241/4424/1070 1240/4423/1070 +f 1237/4430/1071 1243/4429/1071 1240/4428/1071 1236/4427/1071 +f 1241/4434/1072 1242/4433/1072 1238/4432/1072 1239/4431/1072 +f 1240/4438/1073 1241/4437/1073 1239/4436/1073 1236/4435/1073 +f 1238/4442/1074 1242/4441/1074 1243/4440/1074 1237/4439/1074 +f 1247/4446/1075 1246/4445/1075 1245/4444/1075 1244/4443/1075 +f 1251/4450/1076 1250/4449/1076 1249/4448/1076 1248/4447/1076 +f 1245/4454/1077 1251/4453/1077 1248/4452/1077 1244/4451/1077 +f 1249/4458/1078 1250/4457/1078 1246/4456/1078 1247/4455/1078 +f 1248/4462/1079 1249/4461/1079 1247/4460/1079 1244/4459/1079 +f 1246/4466/1080 1250/4465/1080 1251/4464/1080 1245/4463/1080 +f 1255/4470/1081 1254/4469/1081 1253/4468/1081 1252/4467/1081 +f 1259/4474/1082 1258/4473/1082 1257/4472/1082 1256/4471/1082 +f 1253/4478/1083 1259/4477/1083 1256/4476/1083 1252/4475/1083 +f 1257/4482/1084 1258/4481/1084 1254/4480/1084 1255/4479/1084 +f 1256/4486/1085 1257/4485/1085 1255/4484/1085 1252/4483/1085 +f 1254/4490/1086 1258/4489/1086 1259/4488/1086 1253/4487/1086 +f 1263/4494/1087 1262/4493/1087 1261/4492/1087 1260/4491/1087 +f 1267/4498/1088 1266/4497/1088 1265/4496/1088 1264/4495/1088 +f 1261/4502/1089 1267/4501/1089 1264/4500/1089 1260/4499/1089 +f 1265/4506/1090 1266/4505/1090 1262/4504/1090 1263/4503/1090 +f 1264/4510/1091 1265/4509/1091 1263/4508/1091 1260/4507/1091 +f 1262/4514/1092 1266/4513/1092 1267/4512/1092 1261/4511/1092 +f 1271/4518/1093 1270/4517/1093 1269/4516/1093 1268/4515/1093 +f 1275/4522/1094 1274/4521/1094 1273/4520/1094 1272/4519/1094 +f 1269/4526/1095 1275/4525/1095 1272/4524/1095 1268/4523/1095 +f 1273/4530/1096 1274/4529/1096 1270/4528/1096 1271/4527/1096 +f 1272/4534/1097 1273/4533/1097 1271/4532/1097 1268/4531/1097 +f 1270/4538/1098 1274/4537/1098 1275/4536/1098 1269/4535/1098 +f 1279/4542/1099 1278/4541/1099 1277/4540/1099 1276/4539/1099 +f 1283/4546/1100 1282/4545/1100 1281/4544/1100 1280/4543/1100 +f 1277/4550/1101 1283/4549/1101 1280/4548/1101 1276/4547/1101 +f 1281/4554/1102 1282/4553/1102 1278/4552/1102 1279/4551/1102 +f 1280/4558/1103 1281/4557/1103 1279/4556/1103 1276/4555/1103 +f 1278/4562/1104 1282/4561/1104 1283/4560/1104 1277/4559/1104 +f 1287/4566/1105 1286/4565/1105 1285/4564/1105 1284/4563/1105 +f 1291/4570/1106 1290/4569/1106 1289/4568/1106 1288/4567/1106 +f 1285/4574/1107 1291/4573/1107 1288/4572/1107 1284/4571/1107 +f 1289/4578/1108 1290/4577/1108 1286/4576/1108 1287/4575/1108 +f 1288/4582/1109 1289/4581/1109 1287/4580/1109 1284/4579/1109 +f 1286/4586/1110 1290/4585/1110 1291/4584/1110 1285/4583/1110 +f 1295/4590/1111 1294/4589/1111 1293/4588/1111 1292/4587/1111 +f 1299/4594/1112 1298/4593/1112 1297/4592/1112 1296/4591/1112 +f 1293/4598/1113 1299/4597/1113 1296/4596/1113 1292/4595/1113 +f 1297/4602/1114 1298/4601/1114 1294/4600/1114 1295/4599/1114 +f 1296/4606/1115 1297/4605/1115 1295/4604/1115 1292/4603/1115 +f 1294/4610/1116 1298/4609/1116 1299/4608/1116 1293/4607/1116 +f 1303/4614/1117 1302/4613/1117 1301/4612/1117 1300/4611/1117 +f 1307/4618/1118 1306/4617/1118 1305/4616/1118 1304/4615/1118 +f 1301/4622/1119 1307/4621/1119 1304/4620/1119 1300/4619/1119 +f 1305/4626/1120 1306/4625/1120 1302/4624/1120 1303/4623/1120 +f 1304/4630/1121 1305/4629/1121 1303/4628/1121 1300/4627/1121 +f 1302/4634/1122 1306/4633/1122 1307/4632/1122 1301/4631/1122 +f 1311/4638/1123 1310/4637/1123 1309/4636/1123 1308/4635/1123 +f 1315/4642/1124 1314/4641/1124 1313/4640/1124 1312/4639/1124 +f 1309/4646/1125 1315/4645/1125 1312/4644/1125 1308/4643/1125 +f 1313/4650/1126 1314/4649/1126 1310/4648/1126 1311/4647/1126 +f 1312/4654/1127 1313/4653/1127 1311/4652/1127 1308/4651/1127 +f 1310/4658/1128 1314/4657/1128 1315/4656/1128 1309/4655/1128 +f 1319/4662/1129 1318/4661/1129 1317/4660/1129 1316/4659/1129 +f 1323/4666/1130 1322/4665/1130 1321/4664/1130 1320/4663/1130 +f 1317/4670/1131 1323/4669/1131 1320/4668/1131 1316/4667/1131 +f 1321/4674/1132 1322/4673/1132 1318/4672/1132 1319/4671/1132 +f 1320/4678/1133 1321/4677/1133 1319/4676/1133 1316/4675/1133 +f 1318/4682/1134 1322/4681/1134 1323/4680/1134 1317/4679/1134 +f 1327/4686/1135 1326/4685/1135 1325/4684/1135 1324/4683/1135 +f 1331/4690/1136 1330/4689/1136 1329/4688/1136 1328/4687/1136 +f 1325/4694/1137 1331/4693/1137 1328/4692/1137 1324/4691/1137 +f 1329/4698/1138 1330/4697/1138 1326/4696/1138 1327/4695/1138 +f 1328/4702/1139 1329/4701/1139 1327/4700/1139 1324/4699/1139 +f 1326/4706/1140 1330/4705/1140 1331/4704/1140 1325/4703/1140 +f 1335/4710/1141 1334/4709/1141 1333/4708/1141 1332/4707/1141 +f 1339/4714/1142 1338/4713/1142 1337/4712/1142 1336/4711/1142 +f 1333/4718/1143 1339/4717/1143 1336/4716/1143 1332/4715/1143 +f 1337/4722/1144 1338/4721/1144 1334/4720/1144 1335/4719/1144 +f 1336/4726/1145 1337/4725/1145 1335/4724/1145 1332/4723/1145 +f 1334/4730/1146 1338/4729/1146 1339/4728/1146 1333/4727/1146 +f 1343/4734/1147 1342/4733/1147 1341/4732/1147 1340/4731/1147 +f 1347/4738/1148 1346/4737/1148 1345/4736/1148 1344/4735/1148 +f 1341/4742/1149 1347/4741/1149 1344/4740/1149 1340/4739/1149 +f 1345/4746/1150 1346/4745/1150 1342/4744/1150 1343/4743/1150 +f 1344/4750/1151 1345/4749/1151 1343/4748/1151 1340/4747/1151 +f 1342/4754/1152 1346/4753/1152 1347/4752/1152 1341/4751/1152 +f 1351/4758/1153 1350/4757/1153 1349/4756/1153 1348/4755/1153 +f 1355/4762/1154 1354/4761/1154 1353/4760/1154 1352/4759/1154 +f 1349/4766/1155 1355/4765/1155 1352/4764/1155 1348/4763/1155 +f 1353/4770/1156 1354/4769/1156 1350/4768/1156 1351/4767/1156 +f 1352/4774/1157 1353/4773/1157 1351/4772/1157 1348/4771/1157 +f 1350/4778/1158 1354/4777/1158 1355/4776/1158 1349/4775/1158 +f 1359/4782/1159 1358/4781/1159 1357/4780/1159 1356/4779/1159 +f 1363/4786/1160 1362/4785/1160 1361/4784/1160 1360/4783/1160 +f 1357/4790/1161 1363/4789/1161 1360/4788/1161 1356/4787/1161 +f 1361/4794/1162 1362/4793/1162 1358/4792/1162 1359/4791/1162 +f 1360/4798/1163 1361/4797/1163 1359/4796/1163 1356/4795/1163 +f 1358/4802/1164 1362/4801/1164 1363/4800/1164 1357/4799/1164 +o group14747055 +g mesh14747055 +usemtl mat15 +f 1431/5006/1215 1430/5005/1215 1429/5004/1215 1428/5003/1215 +f 1429/5014/1217 1430/5013/1217 1437/5012/1217 1436/5011/1217 +f 1433/5019/1218 1428/5018/1218 1429/5017/1218 1436/5016/1218 1432/5015/1218 +f 1437/5024/1219 1430/5023/1219 1431/5022/1219 1434/5021/1219 1435/5020/1219 +f 1439/5032/1221 1438/5031/1221 1428/5030/1221 1433/5029/1221 +f 1438/5036/1222 1440/5035/1222 1431/5034/1222 1428/5033/1222 +f 1440/5040/1223 1441/5039/1223 1434/5038/1223 1431/5037/1223 +f 1441/5044/1224 1439/5043/1224 1433/5042/1224 1434/5041/1224 +f 1443/5048/1225 1442/5047/1225 1438/5046/1225 1439/5045/1225 +f 1442/5052/1226 1444/5051/1226 1440/5050/1226 1438/5049/1226 +f 1444/5056/1227 1445/5055/1227 1441/5054/1227 1440/5053/1227 +f 1445/5060/1228 1443/5059/1228 1439/5058/1228 1441/5057/1228 +f 1445/5064/1229 1444/5063/1229 1442/5062/1229 1443/5061/1229 +f 1449/5068/1230 1448/5067/1230 1447/5066/1230 1446/5065/1230 +f 1453/5072/1231 1452/5071/1231 1451/5070/1231 1450/5069/1231 +f 1447/5076/1232 1453/5075/1232 1450/5074/1232 1446/5073/1232 +f 1451/5080/1233 1452/5079/1233 1448/5078/1233 1449/5077/1233 +f 1450/5084/1234 1451/5083/1234 1449/5082/1234 1446/5081/1234 +f 1448/5088/1235 1452/5087/1235 1453/5086/1235 1447/5085/1235 +usemtl mat23 +f 1435/5010/1216 1434/5009/1216 1433/5008/1216 1432/5007/1216 +f 1432/5028/1220 1436/5027/1220 1437/5026/1220 1435/5025/1220 +o group347898074 +g mesh347898074 +usemtl mat23 +f 1459/5094/1236 1458/5093/1236 1457/5092/1236 1456/5091/1236 1455/5090/1236 1454/5089/1236 +f 1463/5098/1237 1462/5097/1237 1461/5096/1237 1460/5095/1237 +f 1455/5104/1238 1465/5103/1238 1463/5102/1238 1460/5101/1238 1464/5100/1238 1454/5099/1238 +f 1467/5110/1239 1461/5109/1239 1462/5108/1239 1466/5107/1239 1458/5106/1239 1459/5105/1239 +f 1464/5114/1240 1467/5113/1240 1459/5112/1240 1454/5111/1240 +f 1456/5118/1241 1468/5117/1241 1465/5116/1241 1455/5115/1241 +f 1464/5122/1242 1460/5121/1242 1461/5120/1242 1467/5119/1242 +f 1463/5128/1243 1465/5127/1243 1468/5126/1243 1469/5125/1243 1466/5124/1243 1462/5123/1243 +f 1457/5132/1244 1458/5131/1244 1466/5130/1244 1469/5129/1244 +f 1471/5136/1245 1470/5135/1245 1469/5134/1245 1468/5133/1245 +f 1470/5140/1246 1472/5139/1246 1457/5138/1246 1469/5137/1246 +f 1472/5144/1247 1473/5143/1247 1456/5142/1247 1457/5141/1247 +f 1473/5148/1248 1471/5147/1248 1468/5146/1248 1456/5145/1248 +f 1473/5152/1249 1472/5151/1249 1470/5150/1249 1471/5149/1249 +usemtl mat15 +f 1501/5228/1264 1500/5227/1264 1499/5226/1264 1498/5225/1264 +f 1505/5232/1265 1504/5231/1265 1503/5230/1265 1502/5229/1265 +f 1499/5236/1266 1505/5235/1266 1502/5234/1266 1498/5233/1266 +f 1503/5240/1267 1504/5239/1267 1500/5238/1267 1501/5237/1267 +f 1502/5244/1268 1503/5243/1268 1501/5242/1268 1498/5241/1268 +f 1500/5248/1269 1504/5247/1269 1505/5246/1269 1499/5245/1269 +usemtl mat12 +f 1509/5252/1270 1508/5251/1270 1507/5250/1270 1506/5249/1270 +f 1508/5256/1271 1511/5255/1271 1510/5254/1271 1507/5253/1271 +f 1511/5260/1272 1513/5259/1272 1512/5258/1272 1510/5257/1272 +f 1513/5264/1273 1515/5263/1273 1514/5262/1273 1512/5261/1273 +f 1515/5268/1274 1517/5267/1274 1516/5266/1274 1514/5265/1274 +f 1517/5272/1275 1519/5271/1275 1518/5270/1275 1516/5269/1275 +f 1519/5276/1276 1521/5275/1276 1520/5274/1276 1518/5273/1276 +f 1521/5280/1277 1523/5279/1277 1522/5278/1277 1520/5277/1277 +f 1523/5284/1278 1525/5283/1278 1524/5282/1278 1522/5281/1278 +f 1525/5288/1279 1509/5287/1279 1506/5286/1279 1524/5285/1279 +f 1526/5291/1280 1522/5290/1280 1524/5289/1280 +f 1525/5301/1281 1523/5300/1281 1521/5299/1281 1519/5298/1281 1517/5297/1281 1515/5296/1281 1513/5295/1281 1511/5294/1281 1508/5293/1281 1509/5292/1281 +f 1526/5304/1282 1520/5303/1282 1522/5302/1282 +f 1526/5307/1283 1518/5306/1283 1520/5305/1283 +f 1526/5310/1284 1516/5309/1284 1518/5308/1284 +f 1526/5313/1285 1514/5312/1285 1516/5311/1285 +f 1526/5316/1286 1512/5315/1286 1514/5314/1286 +f 1526/5319/1287 1510/5318/1287 1512/5317/1287 +f 1526/5322/1288 1507/5321/1288 1510/5320/1288 +f 1526/5325/1289 1506/5324/1289 1507/5323/1289 +f 1526/5328/1290 1524/5327/1290 1506/5326/1290 +o group1478810441 +g mesh1478810441 +usemtl mat23 +f 1630/5742/1399 1629/5741/1399 1628/5740/1399 1627/5739/1399 1626/5738/1399 1625/5737/1399 +f 1636/5748/1400 1635/5747/1400 1634/5746/1400 1633/5745/1400 1632/5744/1400 1631/5743/1400 +f 1626/5756/1401 1640/5755/1401 1639/5754/1401 1636/5753/1401 1631/5752/1401 1638/5751/1401 1637/5750/1401 1625/5749/1401 +f 1642/5760/1402 1641/5759/1402 1629/5758/1402 1630/5757/1402 +f 1644/5764/1403 1643/5763/1403 1630/5762/1403 1625/5761/1403 +f 1627/5768/1404 1645/5767/1404 1640/5766/1404 1626/5765/1404 +f 1646/5772/1405 1645/5771/1405 1627/5770/1405 1628/5769/1405 +f 1641/5776/1406 1646/5775/1406 1628/5774/1406 1629/5773/1406 +f 1637/5780/1407 1638/5779/1407 1647/5778/1407 1642/5777/1407 +f 1650/5785/1408 1649/5784/1408 1648/5783/1408 1632/5782/1408 1647/5781/1408 +f 1643/5790/1409 1652/5789/1409 1651/5788/1409 1642/5787/1409 1630/5786/1409 +f 1651/5794/1410 1653/5793/1410 1637/5792/1410 1642/5791/1410 +f 1653/5799/1411 1654/5798/1411 1644/5797/1411 1625/5796/1411 1637/5795/1411 +f 1654/5803/1412 1652/5802/1412 1643/5801/1412 1644/5800/1412 +f 1648/5807/1413 1655/5806/1413 1631/5805/1413 1632/5804/1413 +f 1655/5812/1414 1657/5811/1414 1656/5810/1414 1638/5809/1414 1631/5808/1414 +f 1656/5816/1415 1650/5815/1415 1647/5814/1415 1638/5813/1415 +f 1657/5820/1416 1655/5819/1416 1648/5818/1416 1649/5817/1416 +f 1659/5824/1417 1658/5823/1417 1649/5822/1417 1650/5821/1417 +f 1661/5828/1418 1660/5827/1418 1654/5826/1418 1653/5825/1418 +f 1658/5832/1419 1662/5831/1419 1657/5830/1419 1649/5829/1419 +f 1662/5836/1420 1663/5835/1420 1656/5834/1420 1657/5833/1420 +f 1663/5840/1421 1659/5839/1421 1650/5838/1421 1656/5837/1421 +f 1663/5844/1422 1662/5843/1422 1658/5842/1422 1659/5841/1422 +f 1660/5848/1423 1664/5847/1423 1652/5846/1423 1654/5845/1423 +f 1664/5852/1424 1665/5851/1424 1651/5850/1424 1652/5849/1424 +f 1665/5856/1425 1661/5855/1425 1653/5854/1425 1651/5853/1425 +f 1665/5860/1426 1664/5859/1426 1660/5858/1426 1661/5857/1426 +f 1641/5864/1427 1667/5863/1427 1666/5862/1427 1646/5861/1427 +f 1646/5868/1428 1666/5867/1428 1668/5866/1428 1645/5865/1428 +f 1645/5872/1429 1668/5871/1429 1639/5870/1429 1640/5869/1429 +f 1667/5876/1430 1633/5875/1430 1634/5874/1430 1666/5873/1430 +f 1666/5880/1431 1634/5879/1431 1635/5878/1431 1668/5877/1431 +f 1668/5884/1432 1635/5883/1432 1636/5882/1432 1639/5881/1432 +f 1642/5888/1433 1647/5887/1433 1667/5886/1433 1641/5885/1433 +f 1647/5892/1434 1632/5891/1434 1633/5890/1434 1667/5889/1434 +f 1671/5895/1435 1670/5894/1435 1669/5893/1435 +f 1670/5898/1436 1672/5897/1436 1669/5896/1436 +f 1672/5901/1437 1673/5900/1437 1669/5899/1437 +f 1673/5904/1438 1674/5903/1438 1669/5902/1438 +f 1674/5907/1439 1675/5906/1439 1669/5905/1439 +f 1675/5910/1440 1676/5909/1440 1669/5908/1440 +f 1676/5913/1441 1677/5912/1441 1669/5911/1441 +f 1677/5916/1442 1678/5915/1442 1669/5914/1442 +f 1678/5919/1443 1679/5918/1443 1669/5917/1443 +f 1679/5922/1444 1680/5921/1444 1669/5920/1444 +f 1680/5925/1445 1681/5924/1445 1669/5923/1445 +f 1681/5928/1446 1671/5927/1446 1669/5926/1446 +f 1683/5932/1447 1682/5931/1447 1670/5930/1447 1671/5929/1447 +f 1682/5936/1448 1684/5935/1448 1672/5934/1448 1670/5933/1448 +f 1684/5940/1449 1685/5939/1449 1673/5938/1449 1672/5937/1449 +f 1685/5944/1450 1686/5943/1450 1674/5942/1450 1673/5941/1450 +f 1686/5948/1451 1687/5947/1451 1675/5946/1451 1674/5945/1451 +f 1687/5952/1452 1688/5951/1452 1676/5950/1452 1675/5949/1452 +f 1688/5956/1453 1689/5955/1453 1677/5954/1453 1676/5953/1453 +f 1689/5960/1454 1690/5959/1454 1678/5958/1454 1677/5957/1454 +f 1690/5964/1455 1691/5963/1455 1679/5962/1455 1678/5961/1455 +f 1691/5968/1456 1692/5967/1456 1680/5966/1456 1679/5965/1456 +f 1692/5972/1457 1693/5971/1457 1681/5970/1457 1680/5969/1457 +f 1693/5976/1458 1683/5975/1458 1671/5974/1458 1681/5973/1458 +f 1695/5980/1459 1694/5979/1459 1682/5978/1459 1683/5977/1459 +f 1694/5984/1460 1696/5983/1460 1684/5982/1460 1682/5981/1460 +f 1696/5988/1461 1697/5987/1461 1685/5986/1461 1684/5985/1461 +f 1697/5992/1462 1698/5991/1462 1686/5990/1462 1685/5989/1462 +f 1698/5996/1463 1699/5995/1463 1687/5994/1463 1686/5993/1463 +f 1699/6000/1464 1700/5999/1464 1688/5998/1464 1687/5997/1464 +f 1700/6004/1465 1701/6003/1465 1689/6002/1465 1688/6001/1465 +f 1701/6008/1466 1702/6007/1466 1690/6006/1466 1689/6005/1466 +f 1702/6012/1467 1703/6011/1467 1691/6010/1467 1690/6009/1467 +f 1703/6016/1468 1704/6015/1468 1692/6014/1468 1691/6013/1468 +f 1704/6020/1469 1705/6019/1469 1693/6018/1469 1692/6017/1469 +f 1705/6024/1470 1695/6023/1470 1683/6022/1470 1693/6021/1470 +f 1707/6028/1471 1706/6027/1471 1694/6026/1471 1695/6025/1471 +f 1706/6032/1472 1708/6031/1472 1696/6030/1472 1694/6029/1472 +f 1708/6036/1473 1709/6035/1473 1697/6034/1473 1696/6033/1473 +f 1709/6040/1474 1710/6039/1474 1698/6038/1474 1697/6037/1474 +f 1710/6044/1475 1711/6043/1475 1699/6042/1475 1698/6041/1475 +f 1711/6048/1476 1712/6047/1476 1700/6046/1476 1699/6045/1476 +f 1712/6052/1477 1713/6051/1477 1701/6050/1477 1700/6049/1477 +f 1713/6056/1478 1714/6055/1478 1702/6054/1478 1701/6053/1478 +f 1714/6060/1479 1715/6059/1479 1703/6058/1479 1702/6057/1479 +f 1715/6064/1480 1716/6063/1480 1704/6062/1480 1703/6061/1480 +f 1716/6068/1481 1717/6067/1481 1705/6066/1481 1704/6065/1481 +f 1717/6072/1482 1707/6071/1482 1695/6070/1482 1705/6069/1482 +f 1719/6076/1483 1718/6075/1483 1706/6074/1483 1707/6073/1483 +f 1718/6080/1484 1720/6079/1484 1708/6078/1484 1706/6077/1484 +f 1720/6084/1485 1721/6083/1485 1709/6082/1485 1708/6081/1485 +f 1721/6088/1486 1722/6087/1486 1710/6086/1486 1709/6085/1486 +f 1722/6092/1487 1723/6091/1487 1711/6090/1487 1710/6089/1487 +f 1723/6096/1488 1724/6095/1488 1712/6094/1488 1711/6093/1488 +f 1724/6100/1489 1725/6099/1489 1713/6098/1489 1712/6097/1489 +f 1725/6104/1490 1726/6103/1490 1714/6102/1490 1713/6101/1490 +f 1726/6108/1491 1727/6107/1491 1715/6106/1491 1714/6105/1491 +f 1727/6112/1492 1728/6111/1492 1716/6110/1492 1715/6109/1492 +f 1728/6116/1493 1729/6115/1493 1717/6114/1493 1716/6113/1493 +f 1729/6120/1494 1719/6119/1494 1707/6118/1494 1717/6117/1494 +f 1731/6124/1495 1730/6123/1495 1718/6122/1495 1719/6121/1495 +f 1730/6128/1496 1732/6127/1496 1720/6126/1496 1718/6125/1496 +f 1732/6132/1497 1733/6131/1497 1721/6130/1497 1720/6129/1497 +f 1733/6136/1498 1734/6135/1498 1722/6134/1498 1721/6133/1498 +f 1734/6140/1499 1735/6139/1499 1723/6138/1499 1722/6137/1499 +f 1735/6144/1500 1736/6143/1500 1724/6142/1500 1723/6141/1500 +f 1736/6148/1501 1737/6147/1501 1725/6146/1501 1724/6145/1501 +f 1737/6152/1502 1738/6151/1502 1726/6150/1502 1725/6149/1502 +f 1738/6156/1503 1739/6155/1503 1727/6154/1503 1726/6153/1503 +f 1739/6160/1504 1740/6159/1504 1728/6158/1504 1727/6157/1504 +f 1740/6164/1505 1741/6163/1505 1729/6162/1505 1728/6161/1505 +f 1741/6168/1506 1731/6167/1506 1719/6166/1506 1729/6165/1506 +f 1743/6172/1507 1742/6171/1507 1730/6170/1507 1731/6169/1507 +f 1742/6176/1508 1744/6175/1508 1732/6174/1508 1730/6173/1508 +f 1744/6180/1509 1745/6179/1509 1733/6178/1509 1732/6177/1509 +f 1745/6184/1510 1746/6183/1510 1734/6182/1510 1733/6181/1510 +f 1746/6188/1511 1747/6187/1511 1735/6186/1511 1734/6185/1511 +f 1747/6192/1512 1748/6191/1512 1736/6190/1512 1735/6189/1512 +f 1748/6196/1513 1749/6195/1513 1737/6194/1513 1736/6193/1513 +f 1749/6200/1514 1750/6199/1514 1738/6198/1514 1737/6197/1514 +f 1750/6204/1515 1751/6203/1515 1739/6202/1515 1738/6201/1515 +f 1751/6208/1516 1752/6207/1516 1740/6206/1516 1739/6205/1516 +f 1752/6212/1517 1753/6211/1517 1741/6210/1517 1740/6209/1517 +f 1753/6216/1518 1743/6215/1518 1731/6214/1518 1741/6213/1518 +f 1755/6220/1519 1754/6219/1519 1742/6218/1519 1743/6217/1519 +f 1754/6224/1520 1756/6223/1520 1744/6222/1520 1742/6221/1520 +f 1756/6228/1521 1757/6227/1521 1745/6226/1521 1744/6225/1521 +f 1757/6232/1522 1758/6231/1522 1746/6230/1522 1745/6229/1522 +f 1758/6236/1523 1759/6235/1523 1747/6234/1523 1746/6233/1523 +f 1759/6240/1524 1760/6239/1524 1748/6238/1524 1747/6237/1524 +f 1760/6244/1525 1761/6243/1525 1749/6242/1525 1748/6241/1525 +f 1761/6248/1526 1762/6247/1526 1750/6246/1526 1749/6245/1526 +f 1762/6252/1527 1763/6251/1527 1751/6250/1527 1750/6249/1527 +f 1763/6256/1528 1764/6255/1528 1752/6254/1528 1751/6253/1528 +f 1764/6260/1529 1765/6259/1529 1753/6258/1529 1752/6257/1529 +f 1765/6264/1530 1755/6263/1530 1743/6262/1530 1753/6261/1530 +f 1766/6267/1531 1754/6266/1531 1755/6265/1531 +f 1766/6270/1532 1756/6269/1532 1754/6268/1532 +f 1766/6273/1533 1757/6272/1533 1756/6271/1533 +f 1766/6276/1534 1758/6275/1534 1757/6274/1534 +f 1766/6279/1535 1759/6278/1535 1758/6277/1535 +f 1766/6282/1536 1760/6281/1536 1759/6280/1536 +f 1766/6285/1537 1761/6284/1537 1760/6283/1537 +f 1766/6288/1538 1762/6287/1538 1761/6286/1538 +f 1766/6291/1539 1763/6290/1539 1762/6289/1539 +f 1766/6294/1540 1764/6293/1540 1763/6292/1540 +f 1766/6297/1541 1765/6296/1541 1764/6295/1541 +f 1766/6300/1542 1755/6299/1542 1765/6298/1542 +o group168213430 +g mesh168213430 +usemtl mat23 +f 1772/6306/1543 1771/6305/1543 1770/6304/1543 1769/6303/1543 1768/6302/1543 1767/6301/1543 +f 1778/6312/1544 1777/6311/1544 1776/6310/1544 1775/6309/1544 1774/6308/1544 1773/6307/1544 +f 1772/6320/1545 1782/6319/1545 1781/6318/1545 1778/6317/1545 1773/6316/1545 1780/6315/1545 1779/6314/1545 1771/6313/1545 +f 1767/6324/1546 1768/6323/1546 1784/6322/1546 1783/6321/1546 +f 1772/6328/1547 1767/6327/1547 1786/6326/1547 1785/6325/1547 +f 1771/6332/1548 1779/6331/1548 1787/6330/1548 1770/6329/1548 +f 1769/6336/1549 1770/6335/1549 1787/6334/1549 1788/6333/1549 +f 1768/6340/1550 1769/6339/1550 1788/6338/1550 1784/6337/1550 +f 1783/6344/1551 1789/6343/1551 1781/6342/1551 1782/6341/1551 +f 1789/6349/1552 1777/6348/1552 1792/6347/1552 1791/6346/1552 1790/6345/1552 +f 1767/6354/1553 1783/6353/1553 1794/6352/1553 1793/6351/1553 1786/6350/1553 +f 1783/6358/1554 1782/6357/1554 1795/6356/1554 1794/6355/1554 +f 1782/6363/1555 1772/6362/1555 1785/6361/1555 1796/6360/1555 1795/6359/1555 +f 1785/6367/1556 1786/6366/1556 1793/6365/1556 1796/6364/1556 +f 1777/6371/1557 1778/6370/1557 1797/6369/1557 1792/6368/1557 +f 1778/6376/1558 1781/6375/1558 1799/6374/1558 1798/6373/1558 1797/6372/1558 +f 1781/6380/1559 1789/6379/1559 1790/6378/1559 1799/6377/1559 +f 1791/6384/1560 1792/6383/1560 1797/6382/1560 1798/6381/1560 +f 1790/6388/1561 1791/6387/1561 1801/6386/1561 1800/6385/1561 +f 1795/6392/1562 1796/6391/1562 1803/6390/1562 1802/6389/1562 +f 1791/6396/1563 1798/6395/1563 1804/6394/1563 1801/6393/1563 +f 1798/6400/1564 1799/6399/1564 1805/6398/1564 1804/6397/1564 +f 1799/6404/1565 1790/6403/1565 1800/6402/1565 1805/6401/1565 +f 1800/6408/1566 1801/6407/1566 1804/6406/1566 1805/6405/1566 +f 1796/6412/1567 1793/6411/1567 1806/6410/1567 1803/6409/1567 +f 1793/6416/1568 1794/6415/1568 1807/6414/1568 1806/6413/1568 +f 1794/6420/1569 1795/6419/1569 1802/6418/1569 1807/6417/1569 +f 1802/6424/1570 1803/6423/1570 1806/6422/1570 1807/6421/1570 +f 1788/6428/1571 1809/6427/1571 1808/6426/1571 1784/6425/1571 +f 1787/6432/1572 1810/6431/1572 1809/6430/1572 1788/6429/1572 +f 1779/6436/1573 1780/6435/1573 1810/6434/1573 1787/6433/1573 +f 1809/6440/1574 1775/6439/1574 1776/6438/1574 1808/6437/1574 +f 1810/6444/1575 1774/6443/1575 1775/6442/1575 1809/6441/1575 +f 1780/6448/1576 1773/6447/1576 1774/6446/1576 1810/6445/1576 +f 1784/6452/1577 1808/6451/1577 1789/6450/1577 1783/6449/1577 +f 1808/6456/1578 1776/6455/1578 1777/6454/1578 1789/6453/1578 +f 1813/6459/1579 1812/6458/1579 1811/6457/1579 +f 1813/6462/1580 1814/6461/1580 1812/6460/1580 +f 1813/6465/1581 1815/6464/1581 1814/6463/1581 +f 1813/6468/1582 1816/6467/1582 1815/6466/1582 +f 1813/6471/1583 1817/6470/1583 1816/6469/1583 +f 1813/6474/1584 1818/6473/1584 1817/6472/1584 +f 1813/6477/1585 1819/6476/1585 1818/6475/1585 +f 1813/6480/1586 1820/6479/1586 1819/6478/1586 +f 1813/6483/1587 1821/6482/1587 1820/6481/1587 +f 1813/6486/1588 1822/6485/1588 1821/6484/1588 +f 1813/6489/1589 1823/6488/1589 1822/6487/1589 +f 1813/6492/1590 1811/6491/1590 1823/6490/1590 +f 1811/6496/1591 1812/6495/1591 1825/6494/1591 1824/6493/1591 +f 1812/6500/1592 1814/6499/1592 1826/6498/1592 1825/6497/1592 +f 1814/6504/1593 1815/6503/1593 1827/6502/1593 1826/6501/1593 +f 1815/6508/1594 1816/6507/1594 1828/6506/1594 1827/6505/1594 +f 1816/6512/1595 1817/6511/1595 1829/6510/1595 1828/6509/1595 +f 1817/6516/1596 1818/6515/1596 1830/6514/1596 1829/6513/1596 +f 1818/6520/1597 1819/6519/1597 1831/6518/1597 1830/6517/1597 +f 1819/6524/1598 1820/6523/1598 1832/6522/1598 1831/6521/1598 +f 1820/6528/1599 1821/6527/1599 1833/6526/1599 1832/6525/1599 +f 1821/6532/1600 1822/6531/1600 1834/6530/1600 1833/6529/1600 +f 1822/6536/1601 1823/6535/1601 1835/6534/1601 1834/6533/1601 +f 1823/6540/1602 1811/6539/1602 1824/6538/1602 1835/6537/1602 +f 1824/6544/1603 1825/6543/1603 1837/6542/1603 1836/6541/1603 +f 1825/6548/1604 1826/6547/1604 1838/6546/1604 1837/6545/1604 +f 1826/6552/1605 1827/6551/1605 1839/6550/1605 1838/6549/1605 +f 1827/6556/1606 1828/6555/1606 1840/6554/1606 1839/6553/1606 +f 1828/6560/1607 1829/6559/1607 1841/6558/1607 1840/6557/1607 +f 1829/6564/1608 1830/6563/1608 1842/6562/1608 1841/6561/1608 +f 1830/6568/1609 1831/6567/1609 1843/6566/1609 1842/6565/1609 +f 1831/6572/1610 1832/6571/1610 1844/6570/1610 1843/6569/1610 +f 1832/6576/1611 1833/6575/1611 1845/6574/1611 1844/6573/1611 +f 1833/6580/1612 1834/6579/1612 1846/6578/1612 1845/6577/1612 +f 1834/6584/1613 1835/6583/1613 1847/6582/1613 1846/6581/1613 +f 1835/6588/1614 1824/6587/1614 1836/6586/1614 1847/6585/1614 +f 1836/6592/1615 1837/6591/1615 1849/6590/1615 1848/6589/1615 +f 1837/6596/1616 1838/6595/1616 1850/6594/1616 1849/6593/1616 +f 1838/6600/1617 1839/6599/1617 1851/6598/1617 1850/6597/1617 +f 1839/6604/1618 1840/6603/1618 1852/6602/1618 1851/6601/1618 +f 1840/6608/1619 1841/6607/1619 1853/6606/1619 1852/6605/1619 +f 1841/6612/1620 1842/6611/1620 1854/6610/1620 1853/6609/1620 +f 1842/6616/1621 1843/6615/1621 1855/6614/1621 1854/6613/1621 +f 1843/6620/1622 1844/6619/1622 1856/6618/1622 1855/6617/1622 +f 1844/6624/1623 1845/6623/1623 1857/6622/1623 1856/6621/1623 +f 1845/6628/1624 1846/6627/1624 1858/6626/1624 1857/6625/1624 +f 1846/6632/1625 1847/6631/1625 1859/6630/1625 1858/6629/1625 +f 1847/6636/1626 1836/6635/1626 1848/6634/1626 1859/6633/1626 +f 1848/6640/1627 1849/6639/1627 1861/6638/1627 1860/6637/1627 +f 1849/6644/1628 1850/6643/1628 1862/6642/1628 1861/6641/1628 +f 1850/6648/1629 1851/6647/1629 1863/6646/1629 1862/6645/1629 +f 1851/6652/1630 1852/6651/1630 1864/6650/1630 1863/6649/1630 +f 1852/6656/1631 1853/6655/1631 1865/6654/1631 1864/6653/1631 +f 1853/6660/1632 1854/6659/1632 1866/6658/1632 1865/6657/1632 +f 1854/6664/1633 1855/6663/1633 1867/6662/1633 1866/6661/1633 +f 1855/6668/1634 1856/6667/1634 1868/6666/1634 1867/6665/1634 +f 1856/6672/1635 1857/6671/1635 1869/6670/1635 1868/6669/1635 +f 1857/6676/1636 1858/6675/1636 1870/6674/1636 1869/6673/1636 +f 1858/6680/1637 1859/6679/1637 1871/6678/1637 1870/6677/1637 +f 1859/6684/1638 1848/6683/1638 1860/6682/1638 1871/6681/1638 +f 1860/6688/1639 1861/6687/1639 1873/6686/1639 1872/6685/1639 +f 1861/6692/1640 1862/6691/1640 1874/6690/1640 1873/6689/1640 +f 1862/6696/1641 1863/6695/1641 1875/6694/1641 1874/6693/1641 +f 1863/6700/1642 1864/6699/1642 1876/6698/1642 1875/6697/1642 +f 1864/6704/1643 1865/6703/1643 1877/6702/1643 1876/6701/1643 +f 1865/6708/1644 1866/6707/1644 1878/6706/1644 1877/6705/1644 +f 1866/6712/1645 1867/6711/1645 1879/6710/1645 1878/6709/1645 +f 1867/6716/1646 1868/6715/1646 1880/6714/1646 1879/6713/1646 +f 1868/6720/1647 1869/6719/1647 1881/6718/1647 1880/6717/1647 +f 1869/6724/1648 1870/6723/1648 1882/6722/1648 1881/6721/1648 +f 1870/6728/1649 1871/6727/1649 1883/6726/1649 1882/6725/1649 +f 1871/6732/1650 1860/6731/1650 1872/6730/1650 1883/6729/1650 +f 1872/6736/1651 1873/6735/1651 1885/6734/1651 1884/6733/1651 +f 1873/6740/1652 1874/6739/1652 1886/6738/1652 1885/6737/1652 +f 1874/6744/1653 1875/6743/1653 1887/6742/1653 1886/6741/1653 +f 1875/6748/1654 1876/6747/1654 1888/6746/1654 1887/6745/1654 +f 1876/6752/1655 1877/6751/1655 1889/6750/1655 1888/6749/1655 +f 1877/6756/1656 1878/6755/1656 1890/6754/1656 1889/6753/1656 +f 1878/6760/1657 1879/6759/1657 1891/6758/1657 1890/6757/1657 +f 1879/6764/1658 1880/6763/1658 1892/6762/1658 1891/6761/1658 +f 1880/6768/1659 1881/6767/1659 1893/6766/1659 1892/6765/1659 +f 1881/6772/1660 1882/6771/1660 1894/6770/1660 1893/6769/1660 +f 1882/6776/1661 1883/6775/1661 1895/6774/1661 1894/6773/1661 +f 1883/6780/1662 1872/6779/1662 1884/6778/1662 1895/6777/1662 +f 1884/6784/1663 1885/6783/1663 1897/6782/1663 1896/6781/1663 +f 1885/6788/1664 1886/6787/1664 1898/6786/1664 1897/6785/1664 +f 1886/6792/1665 1887/6791/1665 1899/6790/1665 1898/6789/1665 +f 1887/6796/1666 1888/6795/1666 1900/6794/1666 1899/6793/1666 +f 1888/6800/1667 1889/6799/1667 1901/6798/1667 1900/6797/1667 +f 1889/6804/1668 1890/6803/1668 1902/6802/1668 1901/6801/1668 +f 1890/6808/1669 1891/6807/1669 1903/6806/1669 1902/6805/1669 +f 1891/6812/1670 1892/6811/1670 1904/6810/1670 1903/6809/1670 +f 1892/6816/1671 1893/6815/1671 1905/6814/1671 1904/6813/1671 +f 1893/6820/1672 1894/6819/1672 1906/6818/1672 1905/6817/1672 +f 1894/6824/1673 1895/6823/1673 1907/6822/1673 1906/6821/1673 +f 1895/6828/1674 1884/6827/1674 1896/6826/1674 1907/6825/1674 +f 1896/6831/1675 1897/6830/1675 1908/6829/1675 +f 1897/6834/1676 1898/6833/1676 1908/6832/1676 +f 1898/6837/1677 1899/6836/1677 1908/6835/1677 +f 1899/6840/1678 1900/6839/1678 1908/6838/1678 +f 1900/6843/1679 1901/6842/1679 1908/6841/1679 +f 1901/6846/1680 1902/6845/1680 1908/6844/1680 +f 1902/6849/1681 1903/6848/1681 1908/6847/1681 +f 1903/6852/1682 1904/6851/1682 1908/6850/1682 +f 1904/6855/1683 1905/6854/1683 1908/6853/1683 +f 1905/6858/1684 1906/6857/1684 1908/6856/1684 +f 1906/6861/1685 1907/6860/1685 1908/6859/1685 +f 1907/6864/1686 1896/6863/1686 1908/6862/1686 +o group996212215 +g mesh996212215 +usemtl mat23 +f 1914/6870/1687 1913/6869/1687 1912/6868/1687 1911/6867/1687 1910/6866/1687 1909/6865/1687 +f 1918/6874/1688 1917/6873/1688 1916/6872/1688 1915/6871/1688 +f 1914/6880/1689 1920/6879/1689 1918/6878/1689 1915/6877/1689 1919/6876/1689 1913/6875/1689 +f 1909/6886/1690 1910/6885/1690 1922/6884/1690 1916/6883/1690 1917/6882/1690 1921/6881/1690 +f 1914/6890/1691 1909/6889/1691 1921/6888/1691 1920/6887/1691 +f 1911/6894/1692 1923/6893/1692 1922/6892/1692 1910/6891/1692 +f 1921/6898/1693 1917/6897/1693 1918/6896/1693 1920/6895/1693 +f 1916/6904/1694 1922/6903/1694 1923/6902/1694 1924/6901/1694 1919/6900/1694 1915/6899/1694 +f 1912/6908/1695 1913/6907/1695 1919/6906/1695 1924/6905/1695 +f 1926/6912/1696 1925/6911/1696 1924/6910/1696 1923/6909/1696 +f 1925/6916/1697 1927/6915/1697 1912/6914/1697 1924/6913/1697 +f 1927/6920/1698 1928/6919/1698 1911/6918/1698 1912/6917/1698 +f 1928/6924/1699 1926/6923/1699 1923/6922/1699 1911/6921/1699 +f 1928/6928/1700 1927/6927/1700 1925/6926/1700 1926/6925/1700 +usemtl mat15 +f 1932/6932/1701 1931/6931/1701 1930/6930/1701 1929/6929/1701 +f 1936/6936/1702 1935/6935/1702 1934/6934/1702 1933/6933/1702 +f 1932/6940/1703 1936/6939/1703 1933/6938/1703 1931/6937/1703 +f 1929/6944/1704 1930/6943/1704 1934/6942/1704 1935/6941/1704 +f 1932/6948/1705 1929/6947/1705 1935/6946/1705 1936/6945/1705 +f 1931/6952/1706 1933/6951/1706 1934/6950/1706 1930/6949/1706 +usemtl mat12 +f 1940/6956/1707 1939/6955/1707 1938/6954/1707 1937/6953/1707 +f 1939/6960/1708 1942/6959/1708 1941/6958/1708 1938/6957/1708 +f 1942/6964/1709 1944/6963/1709 1943/6962/1709 1941/6961/1709 +f 1944/6968/1710 1946/6967/1710 1945/6966/1710 1943/6965/1710 +f 1946/6972/1711 1948/6971/1711 1947/6970/1711 1945/6969/1711 +f 1948/6976/1712 1950/6975/1712 1949/6974/1712 1947/6973/1712 +f 1950/6980/1713 1952/6979/1713 1951/6978/1713 1949/6977/1713 +f 1952/6984/1714 1954/6983/1714 1953/6982/1714 1951/6981/1714 +f 1954/6988/1715 1956/6987/1715 1955/6986/1715 1953/6985/1715 +f 1956/6992/1716 1940/6991/1716 1937/6990/1716 1955/6989/1716 +f 1956/6995/1717 1954/6994/1717 1957/6993/1717 +f 1937/7005/1718 1938/7004/1718 1941/7003/1718 1943/7002/1718 1945/7001/1718 1947/7000/1718 1949/6999/1718 1951/6998/1718 1953/6997/1718 1955/6996/1718 +f 1954/7008/1719 1952/7007/1719 1957/7006/1719 +f 1952/7011/1720 1950/7010/1720 1957/7009/1720 +f 1950/7014/1721 1948/7013/1721 1957/7012/1721 +f 1948/7017/1722 1946/7016/1722 1957/7015/1722 +f 1946/7020/1723 1944/7019/1723 1957/7018/1723 +f 1944/7023/1724 1942/7022/1724 1957/7021/1724 +f 1942/7026/1725 1939/7025/1725 1957/7024/1725 +f 1939/7029/1726 1940/7028/1726 1957/7027/1726 +f 1940/7032/1727 1956/7031/1727 1957/7030/1727 +o group1580336682 +g mesh1580336682 +usemtl mat15 +f 2059/7444/1836 2058/7443/1836 2057/7442/1836 2056/7441/1836 +f 2065/7452/1838 2064/7451/1838 2057/7450/1838 2058/7449/1838 +f 2063/7457/1839 2065/7456/1839 2058/7455/1839 2059/7454/1839 2062/7453/1839 +f 2060/7462/1840 2061/7461/1840 2056/7460/1840 2057/7459/1840 2064/7458/1840 +f 2062/7470/1842 2059/7469/1842 2067/7468/1842 2066/7467/1842 +f 2059/7474/1843 2056/7473/1843 2068/7472/1843 2067/7471/1843 +f 2056/7478/1844 2061/7477/1844 2069/7476/1844 2068/7475/1844 +f 2061/7482/1845 2062/7481/1845 2066/7480/1845 2069/7479/1845 +f 2066/7486/1846 2067/7485/1846 2071/7484/1846 2070/7483/1846 +f 2067/7490/1847 2068/7489/1847 2072/7488/1847 2071/7487/1847 +f 2068/7494/1848 2069/7493/1848 2073/7492/1848 2072/7491/1848 +f 2069/7498/1849 2066/7497/1849 2070/7496/1849 2073/7495/1849 +f 2070/7502/1850 2071/7501/1850 2072/7500/1850 2073/7499/1850 +f 2077/7506/1851 2076/7505/1851 2075/7504/1851 2074/7503/1851 +f 2081/7510/1852 2080/7509/1852 2079/7508/1852 2078/7507/1852 +f 2077/7514/1853 2081/7513/1853 2078/7512/1853 2076/7511/1853 +f 2074/7518/1854 2075/7517/1854 2079/7516/1854 2080/7515/1854 +f 2077/7522/1855 2074/7521/1855 2080/7520/1855 2081/7519/1855 +f 2076/7526/1856 2078/7525/1856 2079/7524/1856 2075/7523/1856 +usemtl mat23 +f 2063/7448/1837 2062/7447/1837 2061/7446/1837 2060/7445/1837 +f 2060/7466/1841 2064/7465/1841 2065/7464/1841 2063/7463/1841 +o group545513828 +g mesh545513828 +usemtl mat23 +f 2241/8046/1971 2240/8045/1971 2239/8044/1971 2238/8043/1971 +f 2245/8050/1972 2244/8049/1972 2243/8048/1972 2242/8047/1972 +f 2241/8054/1973 2245/8053/1973 2242/8052/1973 2240/8051/1973 +f 2238/8058/1974 2239/8057/1974 2243/8056/1974 2244/8055/1974 +f 2241/8062/1975 2238/8061/1975 2244/8060/1975 2245/8059/1975 +f 2240/8066/1976 2242/8065/1976 2243/8064/1976 2239/8063/1976 +f 2249/8070/1977 2248/8069/1977 2247/8068/1977 2246/8067/1977 +f 2253/8074/1978 2252/8073/1978 2251/8072/1978 2250/8071/1978 +f 2249/8078/1979 2253/8077/1979 2250/8076/1979 2248/8075/1979 +f 2246/8082/1980 2247/8081/1980 2251/8080/1980 2252/8079/1980 +f 2249/8086/1981 2246/8085/1981 2252/8084/1981 2253/8083/1981 +f 2248/8090/1982 2250/8089/1982 2251/8088/1982 2247/8087/1982 +f 2257/8094/1983 2256/8093/1983 2255/8092/1983 2254/8091/1983 +f 2261/8098/1984 2260/8097/1984 2259/8096/1984 2258/8095/1984 +f 2257/8102/1985 2261/8101/1985 2258/8100/1985 2256/8099/1985 +f 2254/8106/1986 2255/8105/1986 2259/8104/1986 2260/8103/1986 +f 2257/8110/1987 2254/8109/1987 2260/8108/1987 2261/8107/1987 +f 2256/8114/1988 2258/8113/1988 2259/8112/1988 2255/8111/1988 +f 2265/8118/1989 2264/8117/1989 2263/8116/1989 2262/8115/1989 +f 2269/8122/1990 2268/8121/1990 2267/8120/1990 2266/8119/1990 +f 2265/8126/1991 2269/8125/1991 2266/8124/1991 2264/8123/1991 +f 2262/8130/1992 2263/8129/1992 2267/8128/1992 2268/8127/1992 +f 2265/8134/1993 2262/8133/1993 2268/8132/1993 2269/8131/1993 +f 2264/8138/1994 2266/8137/1994 2267/8136/1994 2263/8135/1994 +f 2273/8142/1995 2272/8141/1995 2271/8140/1995 2270/8139/1995 +f 2277/8146/1996 2276/8145/1996 2275/8144/1996 2274/8143/1996 +f 2273/8150/1997 2277/8149/1997 2274/8148/1997 2272/8147/1997 +f 2270/8154/1998 2271/8153/1998 2275/8152/1998 2276/8151/1998 +f 2273/8158/1999 2270/8157/1999 2276/8156/1999 2277/8155/1999 +f 2272/8162/2000 2274/8161/2000 2275/8160/2000 2271/8159/2000 +f 2281/8166/2001 2280/8165/2001 2279/8164/2001 2278/8163/2001 +f 2285/8170/2002 2284/8169/2002 2283/8168/2002 2282/8167/2002 +f 2281/8174/2003 2285/8173/2003 2282/8172/2003 2280/8171/2003 +f 2278/8178/2004 2279/8177/2004 2283/8176/2004 2284/8175/2004 +f 2281/8182/2005 2278/8181/2005 2284/8180/2005 2285/8179/2005 +f 2280/8186/2006 2282/8185/2006 2283/8184/2006 2279/8183/2006 +f 2289/8190/2007 2288/8189/2007 2287/8188/2007 2286/8187/2007 +f 2293/8194/2008 2292/8193/2008 2291/8192/2008 2290/8191/2008 +f 2289/8198/2009 2293/8197/2009 2290/8196/2009 2288/8195/2009 +f 2286/8202/2010 2287/8201/2010 2291/8200/2010 2292/8199/2010 +f 2289/8206/2011 2286/8205/2011 2292/8204/2011 2293/8203/2011 +f 2288/8210/2012 2290/8209/2012 2291/8208/2012 2287/8207/2012 +f 2297/8214/2013 2296/8213/2013 2295/8212/2013 2294/8211/2013 +f 2301/8218/2014 2300/8217/2014 2299/8216/2014 2298/8215/2014 +f 2297/8222/2015 2301/8221/2015 2298/8220/2015 2296/8219/2015 +f 2294/8226/2016 2295/8225/2016 2299/8224/2016 2300/8223/2016 +f 2297/8230/2017 2294/8229/2017 2300/8228/2017 2301/8227/2017 +f 2296/8234/2018 2298/8233/2018 2299/8232/2018 2295/8231/2018 +f 2305/8238/2019 2304/8237/2019 2303/8236/2019 2302/8235/2019 +f 2309/8242/2020 2308/8241/2020 2307/8240/2020 2306/8239/2020 +f 2305/8246/2021 2309/8245/2021 2306/8244/2021 2304/8243/2021 +f 2302/8250/2022 2303/8249/2022 2307/8248/2022 2308/8247/2022 +f 2305/8254/2023 2302/8253/2023 2308/8252/2023 2309/8251/2023 +f 2304/8258/2024 2306/8257/2024 2307/8256/2024 2303/8255/2024 +f 2313/8262/2025 2312/8261/2025 2311/8260/2025 2310/8259/2025 +f 2317/8266/2026 2316/8265/2026 2315/8264/2026 2314/8263/2026 +f 2313/8270/2027 2317/8269/2027 2314/8268/2027 2312/8267/2027 +f 2310/8274/2028 2311/8273/2028 2315/8272/2028 2316/8271/2028 +f 2313/8278/2029 2310/8277/2029 2316/8276/2029 2317/8275/2029 +f 2312/8282/2030 2314/8281/2030 2315/8280/2030 2311/8279/2030 +f 2321/8286/2031 2320/8285/2031 2319/8284/2031 2318/8283/2031 +f 2325/8290/2032 2324/8289/2032 2323/8288/2032 2322/8287/2032 +f 2321/8294/2033 2325/8293/2033 2322/8292/2033 2320/8291/2033 +f 2318/8298/2034 2319/8297/2034 2323/8296/2034 2324/8295/2034 +f 2321/8302/2035 2318/8301/2035 2324/8300/2035 2325/8299/2035 +f 2320/8306/2036 2322/8305/2036 2323/8304/2036 2319/8303/2036 +f 2329/8310/2037 2328/8309/2037 2327/8308/2037 2326/8307/2037 +f 2333/8314/2038 2332/8313/2038 2331/8312/2038 2330/8311/2038 +f 2329/8318/2039 2333/8317/2039 2330/8316/2039 2328/8315/2039 +f 2326/8322/2040 2327/8321/2040 2331/8320/2040 2332/8319/2040 +f 2329/8326/2041 2326/8325/2041 2332/8324/2041 2333/8323/2041 +f 2328/8330/2042 2330/8329/2042 2331/8328/2042 2327/8327/2042 +f 2337/8334/2043 2336/8333/2043 2335/8332/2043 2334/8331/2043 +f 2341/8338/2044 2340/8337/2044 2339/8336/2044 2338/8335/2044 +f 2337/8342/2045 2341/8341/2045 2338/8340/2045 2336/8339/2045 +f 2334/8346/2046 2335/8345/2046 2339/8344/2046 2340/8343/2046 +f 2337/8350/2047 2334/8349/2047 2340/8348/2047 2341/8347/2047 +f 2336/8354/2048 2338/8353/2048 2339/8352/2048 2335/8351/2048 +f 2345/8358/2049 2344/8357/2049 2343/8356/2049 2342/8355/2049 +f 2349/8362/2050 2348/8361/2050 2347/8360/2050 2346/8359/2050 +f 2345/8366/2051 2349/8365/2051 2346/8364/2051 2344/8363/2051 +f 2342/8370/2052 2343/8369/2052 2347/8368/2052 2348/8367/2052 +f 2345/8374/2053 2342/8373/2053 2348/8372/2053 2349/8371/2053 +f 2344/8378/2054 2346/8377/2054 2347/8376/2054 2343/8375/2054 +f 2353/8382/2055 2352/8381/2055 2351/8380/2055 2350/8379/2055 +f 2357/8386/2056 2356/8385/2056 2355/8384/2056 2354/8383/2056 +f 2353/8390/2057 2357/8389/2057 2354/8388/2057 2352/8387/2057 +f 2350/8394/2058 2351/8393/2058 2355/8392/2058 2356/8391/2058 +f 2353/8398/2059 2350/8397/2059 2356/8396/2059 2357/8395/2059 +f 2352/8402/2060 2354/8401/2060 2355/8400/2060 2351/8399/2060 +f 2361/8406/2061 2360/8405/2061 2359/8404/2061 2358/8403/2061 +f 2365/8410/2062 2364/8409/2062 2363/8408/2062 2362/8407/2062 +f 2361/8414/2063 2365/8413/2063 2362/8412/2063 2360/8411/2063 +f 2358/8418/2064 2359/8417/2064 2363/8416/2064 2364/8415/2064 +f 2361/8422/2065 2358/8421/2065 2364/8420/2065 2365/8419/2065 +f 2360/8426/2066 2362/8425/2066 2363/8424/2066 2359/8423/2066 +o group1236373206 +g mesh1236373206 +usemtl mat8 +f 2400/8550/2098 2399/8549/2098 2398/8548/2098 2397/8547/2098 +f 2404/8554/2099 2403/8553/2099 2402/8552/2099 2401/8551/2099 +f 2398/8558/2100 2406/8557/2100 2405/8556/2100 2397/8555/2100 +f 2408/8562/2101 2407/8561/2101 2399/8560/2101 2400/8559/2101 +f 2405/8568/2102 2409/8567/2102 2401/8566/2102 2402/8565/2102 2400/8564/2102 2397/8563/2102 +f 2399/8574/2103 2403/8573/2103 2404/8572/2103 2410/8571/2103 2406/8570/2103 2398/8569/2103 +f 2406/8578/2104 2410/8577/2104 2409/8576/2104 2405/8575/2104 +f 2410/8582/2105 2404/8581/2105 2401/8580/2105 2409/8579/2105 +f 2407/8586/2106 2411/8585/2106 2403/8584/2106 2399/8583/2106 +f 2411/8590/2107 2412/8589/2107 2402/8588/2107 2403/8587/2107 +f 2412/8594/2108 2408/8593/2108 2400/8592/2108 2402/8591/2108 +usemtl mat15 +f 2412/8598/2109 2411/8597/2109 2407/8596/2109 2408/8595/2109 +f 2416/8602/2110 2415/8601/2110 2414/8600/2110 2413/8599/2110 +f 2418/8606/2111 2417/8605/2111 2416/8604/2111 2413/8603/2111 +f 2414/8609/2112 2419/8608/2112 2413/8607/2112 +f 2419/8612/2113 2418/8611/2113 2413/8610/2113 +f 2415/8616/2114 2421/8615/2114 2420/8614/2114 2414/8613/2114 +f 2414/8619/2115 2420/8618/2115 2419/8617/2115 +f 2419/8622/2116 2420/8621/2116 2418/8620/2116 +f 2417/8625/2117 2421/8624/2117 2422/8623/2117 +f 2416/8628/2118 2422/8627/2118 2415/8626/2118 +f 2415/8631/2119 2422/8630/2119 2421/8629/2119 +f 2417/8635/2120 2418/8634/2120 2420/8633/2120 2421/8632/2120 +f 2417/8638/2121 2422/8637/2121 2416/8636/2121 +usemtl mat23 +f 2426/8642/2122 2425/8641/2122 2424/8640/2122 2423/8639/2122 +f 2425/8646/2123 2428/8645/2123 2427/8644/2123 2424/8643/2123 +f 2428/8650/2124 2430/8649/2124 2429/8648/2124 2427/8647/2124 +f 2430/8654/2125 2432/8653/2125 2431/8652/2125 2429/8651/2125 +f 2432/8658/2126 2434/8657/2126 2433/8656/2126 2431/8655/2126 +f 2434/8662/2127 2436/8661/2127 2435/8660/2127 2433/8659/2127 +f 2436/8666/2128 2438/8665/2128 2437/8664/2128 2435/8663/2128 +f 2438/8670/2129 2440/8669/2129 2439/8668/2129 2437/8667/2129 +f 2440/8674/2130 2442/8673/2130 2441/8672/2130 2439/8671/2130 +f 2442/8678/2131 2444/8677/2131 2443/8676/2131 2441/8675/2131 +f 2444/8682/2132 2446/8681/2132 2445/8680/2132 2443/8679/2132 +f 2446/8686/2133 2426/8685/2133 2423/8684/2133 2445/8683/2133 +f 2423/8698/2134 2424/8697/2134 2427/8696/2134 2429/8695/2134 2431/8694/2134 2433/8693/2134 2435/8692/2134 2437/8691/2134 2439/8690/2134 2441/8689/2134 2443/8688/2134 2445/8687/2134 +f 2448/8702/2135 2447/8701/2135 2425/8700/2135 2426/8699/2135 +f 2447/8706/2136 2449/8705/2136 2428/8704/2136 2425/8703/2136 +f 2449/8710/2137 2450/8709/2137 2430/8708/2137 2428/8707/2137 +f 2450/8714/2138 2451/8713/2138 2432/8712/2138 2430/8711/2138 +f 2451/8718/2139 2452/8717/2139 2434/8716/2139 2432/8715/2139 +f 2452/8722/2140 2453/8721/2140 2436/8720/2140 2434/8719/2140 +f 2453/8726/2141 2454/8725/2141 2438/8724/2141 2436/8723/2141 +f 2454/8730/2142 2455/8729/2142 2440/8728/2142 2438/8727/2142 +f 2455/8734/2143 2456/8733/2143 2442/8732/2143 2440/8731/2143 +f 2456/8738/2144 2457/8737/2144 2444/8736/2144 2442/8735/2144 +f 2457/8742/2145 2458/8741/2145 2446/8740/2145 2444/8739/2145 +f 2458/8746/2146 2448/8745/2146 2426/8744/2146 2446/8743/2146 +f 2460/8750/2147 2459/8749/2147 2447/8748/2147 2448/8747/2147 +f 2459/8754/2148 2461/8753/2148 2449/8752/2148 2447/8751/2148 +f 2461/8758/2149 2462/8757/2149 2450/8756/2149 2449/8755/2149 +f 2462/8762/2150 2463/8761/2150 2451/8760/2150 2450/8759/2150 +f 2463/8766/2151 2464/8765/2151 2452/8764/2151 2451/8763/2151 +f 2464/8770/2152 2465/8769/2152 2453/8768/2152 2452/8767/2152 +f 2465/8774/2153 2466/8773/2153 2454/8772/2153 2453/8771/2153 +f 2466/8778/2154 2467/8777/2154 2455/8776/2154 2454/8775/2154 +f 2467/8782/2155 2468/8781/2155 2456/8780/2155 2455/8779/2155 +f 2468/8786/2156 2469/8785/2156 2457/8784/2156 2456/8783/2156 +f 2469/8790/2157 2470/8789/2157 2458/8788/2157 2457/8787/2157 +f 2470/8794/2158 2460/8793/2158 2448/8792/2158 2458/8791/2158 +usemtl mat12 +f 2474/8798/2159 2473/8797/2159 2472/8796/2159 2471/8795/2159 +f 2473/8802/2160 2476/8801/2160 2475/8800/2160 2472/8799/2160 +f 2476/8806/2161 2478/8805/2161 2477/8804/2161 2475/8803/2161 +f 2478/8810/2162 2480/8809/2162 2479/8808/2162 2477/8807/2162 +f 2480/8814/2163 2482/8813/2163 2481/8812/2163 2479/8811/2163 +f 2482/8818/2164 2484/8817/2164 2483/8816/2164 2481/8815/2164 +f 2484/8822/2165 2486/8821/2165 2485/8820/2165 2483/8819/2165 +f 2486/8826/2166 2488/8825/2166 2487/8824/2166 2485/8823/2166 +f 2488/8830/2167 2490/8829/2167 2489/8828/2167 2487/8827/2167 +f 2490/8834/2168 2492/8833/2168 2491/8832/2168 2489/8831/2168 +f 2492/8838/2169 2494/8837/2169 2493/8836/2169 2491/8835/2169 +f 2494/8842/2170 2474/8841/2170 2471/8840/2170 2493/8839/2170 +f 2496/8846/2171 2495/8845/2171 2473/8844/2171 2474/8843/2171 +f 2495/8850/2172 2497/8849/2172 2476/8848/2172 2473/8847/2172 +f 2497/8854/2173 2498/8853/2173 2478/8852/2173 2476/8851/2173 +f 2498/8858/2174 2499/8857/2174 2480/8856/2174 2478/8855/2174 +f 2499/8862/2175 2500/8861/2175 2482/8860/2175 2480/8859/2175 +f 2500/8866/2176 2501/8865/2176 2484/8864/2176 2482/8863/2176 +f 2501/8870/2177 2502/8869/2177 2486/8868/2177 2484/8867/2177 +f 2502/8874/2178 2503/8873/2178 2488/8872/2178 2486/8871/2178 +f 2503/8878/2179 2504/8877/2179 2490/8876/2179 2488/8875/2179 +f 2504/8882/2180 2505/8881/2180 2492/8880/2180 2490/8879/2180 +f 2505/8886/2181 2506/8885/2181 2494/8884/2181 2492/8883/2181 +f 2506/8890/2182 2496/8889/2182 2474/8888/2182 2494/8887/2182 +f 2508/8894/2183 2507/8893/2183 2495/8892/2183 2496/8891/2183 +f 2507/8898/2184 2509/8897/2184 2497/8896/2184 2495/8895/2184 +f 2509/8902/2185 2510/8901/2185 2498/8900/2185 2497/8899/2185 +f 2510/8906/2186 2511/8905/2186 2499/8904/2186 2498/8903/2186 +f 2511/8910/2187 2512/8909/2187 2500/8908/2187 2499/8907/2187 +f 2512/8914/2188 2513/8913/2188 2501/8912/2188 2500/8911/2188 +f 2513/8918/2189 2514/8917/2189 2502/8916/2189 2501/8915/2189 +f 2514/8922/2190 2515/8921/2190 2503/8920/2190 2502/8919/2190 +f 2515/8926/2191 2516/8925/2191 2504/8924/2191 2503/8923/2191 +f 2516/8930/2192 2517/8929/2192 2505/8928/2192 2504/8927/2192 +f 2517/8934/2193 2518/8933/2193 2506/8932/2193 2505/8931/2193 +f 2518/8938/2194 2508/8937/2194 2496/8936/2194 2506/8935/2194 +f 2520/8942/2195 2519/8941/2195 2507/8940/2195 2508/8939/2195 +f 2519/8946/2196 2521/8945/2196 2509/8944/2196 2507/8943/2196 +f 2521/8950/2197 2522/8949/2197 2510/8948/2197 2509/8947/2197 +f 2522/8954/2198 2523/8953/2198 2511/8952/2198 2510/8951/2198 +f 2523/8958/2199 2524/8957/2199 2512/8956/2199 2511/8955/2199 +f 2524/8962/2200 2525/8961/2200 2513/8960/2200 2512/8959/2200 +f 2525/8966/2201 2526/8965/2201 2514/8964/2201 2513/8963/2201 +f 2526/8970/2202 2527/8969/2202 2515/8968/2202 2514/8967/2202 +f 2527/8974/2203 2528/8973/2203 2516/8972/2203 2515/8971/2203 +f 2528/8978/2204 2529/8977/2204 2517/8976/2204 2516/8975/2204 +f 2529/8982/2205 2530/8981/2205 2518/8980/2205 2517/8979/2205 +f 2530/8986/2206 2520/8985/2206 2508/8984/2206 2518/8983/2206 +f 2532/8990/2207 2531/8989/2207 2519/8988/2207 2520/8987/2207 +f 2531/8994/2208 2533/8993/2208 2521/8992/2208 2519/8991/2208 +f 2533/8998/2209 2534/8997/2209 2522/8996/2209 2521/8995/2209 +f 2534/9002/2210 2535/9001/2210 2523/9000/2210 2522/8999/2210 +f 2535/9006/2211 2536/9005/2211 2524/9004/2211 2523/9003/2211 +f 2536/9010/2212 2537/9009/2212 2525/9008/2212 2524/9007/2212 +f 2537/9014/2213 2538/9013/2213 2526/9012/2213 2525/9011/2213 +f 2538/9018/2214 2539/9017/2214 2527/9016/2214 2526/9015/2214 +f 2539/9022/2215 2540/9021/2215 2528/9020/2215 2527/9019/2215 +f 2540/9026/2216 2541/9025/2216 2529/9024/2216 2528/9023/2216 +f 2541/9030/2217 2542/9029/2217 2530/9028/2217 2529/9027/2217 +f 2542/9034/2218 2532/9033/2218 2520/9032/2218 2530/9031/2218 +f 2544/9038/2219 2543/9037/2219 2531/9036/2219 2532/9035/2219 +f 2543/9042/2220 2545/9041/2220 2533/9040/2220 2531/9039/2220 +f 2545/9046/2221 2546/9045/2221 2534/9044/2221 2533/9043/2221 +f 2546/9050/2222 2547/9049/2222 2535/9048/2222 2534/9047/2222 +f 2547/9054/2223 2548/9053/2223 2536/9052/2223 2535/9051/2223 +f 2548/9058/2224 2549/9057/2224 2537/9056/2224 2536/9055/2224 +f 2549/9062/2225 2550/9061/2225 2538/9060/2225 2537/9059/2225 +f 2550/9066/2226 2551/9065/2226 2539/9064/2226 2538/9063/2226 +f 2551/9070/2227 2552/9069/2227 2540/9068/2227 2539/9067/2227 +f 2552/9074/2228 2553/9073/2228 2541/9072/2228 2540/9071/2228 +f 2553/9078/2229 2554/9077/2229 2542/9076/2229 2541/9075/2229 +f 2554/9082/2230 2544/9081/2230 2532/9080/2230 2542/9079/2230 +f 2554/9094/2231 2553/9093/2231 2552/9092/2231 2551/9091/2231 2550/9090/2231 2549/9089/2231 2548/9088/2231 2547/9087/2231 2546/9086/2231 2545/9085/2231 2543/9084/2231 2544/9083/2231 +f 2464/9098/2232 2481/9097/2232 2483/9096/2232 2465/9095/2232 +f 2465/9102/2233 2483/9101/2233 2485/9100/2233 2466/9099/2233 +f 2466/9106/2234 2485/9105/2234 2487/9104/2234 2467/9103/2234 +f 2467/9110/2235 2487/9109/2235 2489/9108/2235 2468/9107/2235 +f 2468/9114/2236 2489/9113/2236 2491/9112/2236 2469/9111/2236 +f 2469/9118/2237 2491/9117/2237 2493/9116/2237 2470/9115/2237 +f 2470/9122/2238 2493/9121/2238 2471/9120/2238 2460/9119/2238 +f 2460/9126/2239 2471/9125/2239 2472/9124/2239 2459/9123/2239 +f 2459/9130/2240 2472/9129/2240 2475/9128/2240 2461/9127/2240 +f 2461/9134/2241 2475/9133/2241 2477/9132/2241 2462/9131/2241 +f 2462/9138/2242 2477/9137/2242 2479/9136/2242 2463/9135/2242 +f 2463/9142/2243 2479/9141/2243 2481/9140/2243 2464/9139/2243 +o group1808091611 +g mesh1808091611 +usemtl mat12 +f 2558/9146/2244 2557/9145/2244 2556/9144/2244 2555/9143/2244 +f 2562/9150/2245 2561/9149/2245 2560/9148/2245 2559/9147/2245 +f 2556/9154/2246 2562/9153/2246 2559/9152/2246 2555/9151/2246 +f 2566/9158/2247 2565/9157/2247 2564/9156/2247 2563/9155/2247 +f 2559/9162/2248 2560/9161/2248 2558/9160/2248 2555/9159/2248 +f 2570/9166/2249 2569/9165/2249 2568/9164/2249 2567/9163/2249 +f 2557/9170/2250 2570/9169/2250 2567/9168/2250 2556/9167/2250 +f 2556/9174/2251 2567/9173/2251 2568/9172/2251 2562/9171/2251 +f 2573/9178/2252 2572/9177/2252 2571/9176/2252 2565/9175/2252 +f 2565/9182/2253 2571/9181/2253 2574/9180/2253 2564/9179/2253 +f 2558/9186/2254 2563/9185/2254 2564/9184/2254 2557/9183/2254 +f 2557/9190/2255 2564/9189/2255 2574/9188/2255 2570/9187/2255 +f 2570/9194/2256 2574/9193/2256 2571/9192/2256 2569/9191/2256 +f 2561/9198/2257 2562/9197/2257 2568/9196/2257 2569/9195/2257 +f 2576/9202/2258 2575/9201/2258 2566/9200/2258 2560/9199/2258 +f 2560/9206/2259 2566/9205/2259 2563/9204/2259 2558/9203/2259 +f 2578/9210/2260 2577/9209/2260 2565/9208/2260 2566/9207/2260 +f 2580/9214/2261 2579/9213/2261 2561/9212/2261 2565/9211/2261 +f 2582/9218/2262 2581/9217/2262 2560/9216/2262 2561/9215/2262 +f 2579/9222/2263 2580/9221/2263 2575/9220/2263 2576/9219/2263 +f 2584/9226/2264 2583/9225/2264 2569/9224/2264 2571/9223/2264 +f 2586/9230/2265 2585/9229/2265 2561/9228/2265 2569/9227/2265 +f 2588/9234/2266 2587/9233/2266 2565/9232/2266 2561/9231/2266 +f 2588/9238/2267 2583/9237/2267 2584/9236/2267 2587/9235/2267 +f 2581/9242/2268 2589/9241/2268 2576/9240/2268 2560/9239/2268 +f 2589/9246/2269 2590/9245/2269 2579/9244/2269 2576/9243/2269 +f 2590/9250/2270 2582/9249/2270 2561/9248/2270 2579/9247/2270 +f 2592/9254/2271 2591/9253/2271 2581/9252/2271 2582/9251/2271 +f 2585/9258/2272 2593/9257/2272 2588/9256/2272 2561/9255/2272 +f 2593/9262/2273 2594/9261/2273 2583/9260/2273 2588/9259/2273 +f 2594/9266/2274 2586/9265/2274 2569/9264/2274 2583/9263/2274 +f 2596/9270/2275 2595/9269/2275 2585/9268/2275 2586/9267/2275 +f 2591/9275/2276 2598/9274/2276 2597/9273/2276 2589/9272/2276 2581/9271/2276 +f 2597/9279/2277 2599/9278/2277 2590/9277/2277 2589/9276/2277 +f 2599/9284/2278 2600/9283/2278 2592/9282/2278 2582/9281/2278 2590/9280/2278 +f 2602/9288/2279 2601/9287/2279 2591/9286/2279 2592/9285/2279 +f 2595/9293/2280 2604/9292/2280 2603/9291/2280 2593/9290/2280 2585/9289/2280 +f 2603/9297/2281 2605/9296/2281 2594/9295/2281 2593/9294/2281 +f 2605/9302/2282 2606/9301/2282 2596/9300/2282 2586/9299/2282 2594/9298/2282 +f 2608/9306/2283 2607/9305/2283 2595/9304/2283 2596/9303/2283 +f 2600/9310/2284 2599/9309/2284 2597/9308/2284 2598/9307/2284 +f 2606/9314/2285 2605/9313/2285 2603/9312/2285 2604/9311/2285 +f 2601/9318/2286 2609/9317/2286 2598/9316/2286 2591/9315/2286 +f 2609/9322/2287 2610/9321/2287 2600/9320/2287 2598/9319/2287 +f 2610/9326/2288 2602/9325/2288 2592/9324/2288 2600/9323/2288 +f 2610/9330/2289 2609/9329/2289 2601/9328/2289 2602/9327/2289 +f 2607/9334/2290 2611/9333/2290 2604/9332/2290 2595/9331/2290 +f 2611/9338/2291 2612/9337/2291 2606/9336/2291 2604/9335/2291 +f 2612/9342/2292 2608/9341/2292 2596/9340/2292 2606/9339/2292 +f 2612/9346/2293 2611/9345/2293 2607/9344/2293 2608/9343/2293 +f 2577/9350/2294 2613/9349/2294 2580/9348/2294 2565/9347/2294 +f 2613/9354/2295 2614/9353/2295 2575/9352/2295 2580/9351/2295 +f 2614/9358/2296 2578/9357/2296 2566/9356/2296 2575/9355/2296 +f 2572/9366/2298 2615/9365/2298 2584/9364/2298 2571/9363/2298 +f 2615/9370/2299 2616/9369/2299 2587/9368/2299 2584/9367/2299 +f 2616/9374/2300 2573/9373/2300 2565/9372/2300 2587/9371/2300 +f 2620/9382/2302 2619/9381/2302 2618/9380/2302 2617/9379/2302 +f 2624/9386/2303 2623/9385/2303 2622/9384/2303 2621/9383/2303 +f 2618/9390/2304 2624/9389/2304 2621/9388/2304 2617/9387/2304 +f 2622/9394/2305 2623/9393/2305 2619/9392/2305 2620/9391/2305 +f 2621/9398/2306 2622/9397/2306 2620/9396/2306 2617/9395/2306 +f 2619/9402/2307 2623/9401/2307 2624/9400/2307 2618/9399/2307 +f 2629/9407/2308 2628/9406/2308 2627/9405/2308 2626/9404/2308 2625/9403/2308 +f 2634/9412/2309 2633/9411/2309 2632/9410/2309 2631/9409/2309 2630/9408/2309 +f 2626/9416/2310 2634/9415/2310 2630/9414/2310 2625/9413/2310 +f 2636/9420/2311 2635/9419/2311 2628/9418/2311 2629/9417/2311 +f 2630/9426/2312 2631/9425/2312 2637/9424/2312 2636/9423/2312 2629/9422/2312 2625/9421/2312 +f 2628/9430/2313 2635/9429/2313 2633/9428/2313 2627/9427/2313 +f 2636/9434/2314 2637/9433/2314 2638/9432/2314 2635/9431/2314 +f 2637/9438/2315 2631/9437/2315 2632/9436/2315 2638/9435/2315 +f 2626/9442/2316 2627/9441/2316 2633/9440/2316 2634/9439/2316 +f 2635/9446/2317 2638/9445/2317 2632/9444/2317 2633/9443/2317 +f 2658/9506/2332 2657/9505/2332 2656/9504/2332 2655/9503/2332 +f 2662/9510/2333 2661/9509/2333 2660/9508/2333 2659/9507/2333 +f 2668/9522/2335 2667/9521/2335 2666/9520/2335 2665/9519/2335 2657/9518/2335 2658/9517/2335 +f 2659/9528/2336 2660/9527/2336 2669/9526/2336 2668/9525/2336 2658/9524/2336 2655/9523/2336 +f 2666/9532/2337 2667/9531/2337 2662/9530/2337 2663/9529/2337 +f 2668/9536/2338 2669/9535/2338 2670/9534/2338 2667/9533/2338 +f 2669/9540/2339 2660/9539/2339 2661/9538/2339 2670/9537/2339 +f 2665/9544/2340 2666/9543/2340 2663/9542/2340 2664/9541/2340 +f 2657/9548/2341 2665/9547/2341 2664/9546/2341 2656/9545/2341 +f 2667/9552/2342 2670/9551/2342 2661/9550/2342 2662/9549/2342 +f 2674/9556/2343 2673/9555/2343 2672/9554/2343 2671/9553/2343 +f 2673/9560/2344 2676/9559/2344 2675/9558/2344 2672/9557/2344 +f 2676/9564/2345 2678/9563/2345 2677/9562/2345 2675/9561/2345 +f 2678/9568/2346 2680/9567/2346 2679/9566/2346 2677/9565/2346 +f 2680/9572/2347 2682/9571/2347 2681/9570/2347 2679/9569/2347 +f 2682/9576/2348 2684/9575/2348 2683/9574/2348 2681/9573/2348 +f 2684/9580/2349 2686/9579/2349 2685/9578/2349 2683/9577/2349 +f 2686/9584/2350 2688/9583/2350 2687/9582/2350 2685/9581/2350 +f 2688/9588/2351 2690/9587/2351 2689/9586/2351 2687/9585/2351 +f 2690/9592/2352 2692/9591/2352 2691/9590/2352 2689/9589/2352 +f 2692/9596/2353 2694/9595/2353 2693/9594/2353 2691/9593/2353 +f 2694/9600/2354 2674/9599/2354 2671/9598/2354 2693/9597/2354 +f 2671/9612/2355 2672/9611/2355 2675/9610/2355 2677/9609/2355 2679/9608/2355 2681/9607/2355 2683/9606/2355 2685/9605/2355 2687/9604/2355 2689/9603/2355 2691/9602/2355 2693/9601/2355 +f 2694/9624/2356 2692/9623/2356 2690/9622/2356 2688/9621/2356 2686/9620/2356 2684/9619/2356 2682/9618/2356 2680/9617/2356 2678/9616/2356 2676/9615/2356 2673/9614/2356 2674/9613/2356 +f 2698/9628/2357 2697/9627/2357 2696/9626/2357 2695/9625/2357 +f 2697/9632/2358 2700/9631/2358 2699/9630/2358 2696/9629/2358 +f 2700/9636/2359 2702/9635/2359 2701/9634/2359 2699/9633/2359 +f 2702/9640/2360 2704/9639/2360 2703/9638/2360 2701/9637/2360 +f 2704/9644/2361 2706/9643/2361 2705/9642/2361 2703/9641/2361 +f 2706/9648/2362 2708/9647/2362 2707/9646/2362 2705/9645/2362 +f 2708/9652/2363 2710/9651/2363 2709/9650/2363 2707/9649/2363 +f 2710/9656/2364 2712/9655/2364 2711/9654/2364 2709/9653/2364 +f 2712/9660/2365 2714/9659/2365 2713/9658/2365 2711/9657/2365 +f 2714/9664/2366 2716/9663/2366 2715/9662/2366 2713/9661/2366 +f 2716/9668/2367 2718/9667/2367 2717/9666/2367 2715/9665/2367 +f 2718/9672/2368 2698/9671/2368 2695/9670/2368 2717/9669/2368 +f 2695/9684/2369 2696/9683/2369 2699/9682/2369 2701/9681/2369 2703/9680/2369 2705/9679/2369 2707/9678/2369 2709/9677/2369 2711/9676/2369 2713/9675/2369 2715/9674/2369 2717/9673/2369 +f 2718/9696/2370 2716/9695/2370 2714/9694/2370 2712/9693/2370 2710/9692/2370 2708/9691/2370 2706/9690/2370 2704/9689/2370 2702/9688/2370 2700/9687/2370 2697/9686/2370 2698/9685/2370 +usemtl mat23 +f 2614/9362/2297 2613/9361/2297 2577/9360/2297 2578/9359/2297 +f 2616/9378/2301 2615/9377/2301 2572/9376/2301 2573/9375/2301 +f 2642/9450/2318 2641/9449/2318 2640/9448/2318 2639/9447/2318 +f 2646/9454/2319 2645/9453/2319 2644/9452/2319 2643/9451/2319 +f 2640/9458/2320 2647/9457/2320 2643/9456/2320 2639/9455/2320 +f 2644/9462/2321 2648/9461/2321 2641/9460/2321 2642/9459/2321 +f 2643/9466/2322 2644/9465/2322 2642/9464/2322 2639/9463/2322 +f 2641/9470/2323 2648/9469/2323 2647/9468/2323 2640/9467/2323 +f 2645/9474/2324 2649/9473/2324 2648/9472/2324 2644/9471/2324 +f 2649/9478/2325 2650/9477/2325 2647/9476/2325 2648/9475/2325 +f 2650/9482/2326 2646/9481/2326 2643/9480/2326 2647/9479/2326 +f 2652/9486/2327 2651/9485/2327 2645/9484/2327 2646/9483/2327 +f 2651/9490/2328 2653/9489/2328 2649/9488/2328 2645/9487/2328 +f 2653/9494/2329 2654/9493/2329 2650/9492/2329 2649/9491/2329 +f 2654/9498/2330 2652/9497/2330 2646/9496/2330 2650/9495/2330 +f 2654/9502/2331 2653/9501/2331 2651/9500/2331 2652/9499/2331 +f 2656/9516/2334 2664/9515/2334 2663/9514/2334 2662/9513/2334 2659/9512/2334 2655/9511/2334 diff --git a/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M/model.obj.meta b/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M/model.obj.meta new file mode 100644 index 0000000..c0f19b2 --- /dev/null +++ b/Unity_VR_Assignment/Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M/model.obj.meta @@ -0,0 +1,309 @@ +fileFormatVersion: 2 +guid: 6961c3660e23caf4ab2ad0d3f6c66a20 +ModelImporter: + serializedVersion: 23 + fileIDToRecycleName: + 100000: mesh1018653311 + 100002: mesh1123783002 + 100004: mesh1236373206 + 100006: mesh1246802682 + 100008: mesh1314690987 + 100010: mesh1334399928 + 100012: mesh1395465497 + 100014: mesh1453925415 + 100016: mesh14747055 + 100018: mesh1478810441 + 100020: mesh1527737228 + 100022: mesh1580336682 + 100024: mesh1580466885 + 100026: mesh1618326935 + 100028: mesh1666970172 + 100030: mesh168213430 + 100032: mesh1756523028 + 100034: mesh1808091611 + 100036: mesh1836631065 + 100038: mesh2014627758 + 100040: mesh2020161955 + 100042: mesh2119099679 + 100044: mesh21200505 + 100046: mesh2144887645 + 100048: mesh221277960 + 100050: mesh273990889 + 100052: mesh336270405 + 100054: mesh347898074 + 100056: mesh423114769 + 100058: mesh545513828 + 100060: mesh721553034 + 100062: mesh755394958 + 100064: mesh87781031 + 100066: mesh890632551 + 100068: mesh964939918 + 100070: mesh996212215 + 100072: //RootNode + 400000: mesh1018653311 + 400002: mesh1123783002 + 400004: mesh1236373206 + 400006: mesh1246802682 + 400008: mesh1314690987 + 400010: mesh1334399928 + 400012: mesh1395465497 + 400014: mesh1453925415 + 400016: mesh14747055 + 400018: mesh1478810441 + 400020: mesh1527737228 + 400022: mesh1580336682 + 400024: mesh1580466885 + 400026: mesh1618326935 + 400028: mesh1666970172 + 400030: mesh168213430 + 400032: mesh1756523028 + 400034: mesh1808091611 + 400036: mesh1836631065 + 400038: mesh2014627758 + 400040: mesh2020161955 + 400042: mesh2119099679 + 400044: mesh21200505 + 400046: mesh2144887645 + 400048: mesh221277960 + 400050: mesh273990889 + 400052: mesh336270405 + 400054: mesh347898074 + 400056: mesh423114769 + 400058: mesh545513828 + 400060: mesh721553034 + 400062: mesh755394958 + 400064: mesh87781031 + 400066: mesh890632551 + 400068: mesh964939918 + 400070: mesh996212215 + 400072: //RootNode + 2100000: mesh1018653311Mat + 2100002: mesh1123783002Mat + 2100004: mesh1236373206Mat + 2100006: mesh1246802682Mat + 2100008: mesh1314690987Mat + 2100010: mesh1334399928Mat + 2100012: mesh1395465497Mat + 2100014: mesh1453925415Mat + 2100016: mesh14747055Mat + 2100018: mesh1478810441Mat + 2100020: mesh1527737228Mat + 2100022: mesh1580336682Mat + 2100024: mesh1580466885Mat + 2100026: mesh1618326935Mat + 2100028: mesh1666970172Mat + 2100030: mesh168213430Mat + 2100032: mesh1756523028Mat + 2100034: mesh1808091611Mat + 2100036: mesh1836631065Mat + 2100038: mesh2014627758Mat + 2100040: mesh2020161955Mat + 2100042: mesh2119099679Mat + 2100044: mesh21200505Mat + 2100046: mesh2144887645Mat + 2100048: mesh221277960Mat + 2100050: mesh273990889Mat + 2100052: mesh336270405Mat + 2100054: mesh347898074Mat + 2100056: mesh423114769Mat + 2100058: mesh545513828Mat + 2100060: mesh721553034Mat + 2100062: mesh755394958Mat + 2100064: mesh87781031Mat + 2100066: mesh890632551Mat + 2100068: mesh964939918Mat + 2100070: mesh996212215Mat + 2300000: mesh1018653311 + 2300002: mesh1123783002 + 2300004: mesh1236373206 + 2300006: mesh1246802682 + 2300008: mesh1314690987 + 2300010: mesh1334399928 + 2300012: mesh1395465497 + 2300014: mesh1453925415 + 2300016: mesh14747055 + 2300018: mesh1478810441 + 2300020: mesh1527737228 + 2300022: mesh1580336682 + 2300024: mesh1580466885 + 2300026: mesh1618326935 + 2300028: mesh1666970172 + 2300030: mesh168213430 + 2300032: mesh1756523028 + 2300034: mesh1808091611 + 2300036: mesh1836631065 + 2300038: mesh2014627758 + 2300040: mesh2020161955 + 2300042: mesh2119099679 + 2300044: mesh21200505 + 2300046: mesh2144887645 + 2300048: mesh221277960 + 2300050: mesh273990889 + 2300052: mesh336270405 + 2300054: mesh347898074 + 2300056: mesh423114769 + 2300058: mesh545513828 + 2300060: mesh721553034 + 2300062: mesh755394958 + 2300064: mesh87781031 + 2300066: mesh890632551 + 2300068: mesh964939918 + 2300070: mesh996212215 + 3300000: mesh1018653311 + 3300002: mesh1123783002 + 3300004: mesh1236373206 + 3300006: mesh1246802682 + 3300008: mesh1314690987 + 3300010: mesh1334399928 + 3300012: mesh1395465497 + 3300014: mesh1453925415 + 3300016: mesh14747055 + 3300018: mesh1478810441 + 3300020: mesh1527737228 + 3300022: mesh1580336682 + 3300024: mesh1580466885 + 3300026: mesh1618326935 + 3300028: mesh1666970172 + 3300030: mesh168213430 + 3300032: mesh1756523028 + 3300034: mesh1808091611 + 3300036: mesh1836631065 + 3300038: mesh2014627758 + 3300040: mesh2020161955 + 3300042: mesh2119099679 + 3300044: mesh21200505 + 3300046: mesh2144887645 + 3300048: mesh221277960 + 3300050: mesh273990889 + 3300052: mesh336270405 + 3300054: mesh347898074 + 3300056: mesh423114769 + 3300058: mesh545513828 + 3300060: mesh721553034 + 3300062: mesh755394958 + 3300064: mesh87781031 + 3300066: mesh890632551 + 3300068: mesh964939918 + 3300070: mesh996212215 + 4300000: mesh1018653311 + 4300002: mesh1123783002 + 4300004: mesh1236373206 + 4300006: mesh1246802682 + 4300008: mesh1314690987 + 4300010: mesh1334399928 + 4300012: mesh1395465497 + 4300014: mesh1453925415 + 4300016: mesh14747055 + 4300018: mesh1478810441 + 4300020: mesh1527737228 + 4300022: mesh1580336682 + 4300024: mesh1580466885 + 4300026: mesh1618326935 + 4300028: mesh1666970172 + 4300030: mesh168213430 + 4300032: mesh1756523028 + 4300034: mesh1808091611 + 4300036: mesh1836631065 + 4300038: mesh2014627758 + 4300040: mesh2020161955 + 4300042: mesh2119099679 + 4300044: mesh21200505 + 4300046: mesh2144887645 + 4300048: mesh221277960 + 4300050: mesh273990889 + 4300052: mesh336270405 + 4300054: mesh347898074 + 4300056: mesh423114769 + 4300058: mesh545513828 + 4300060: mesh721553034 + 4300062: mesh755394958 + 4300064: mesh87781031 + 4300066: mesh890632551 + 4300068: mesh964939918 + 4300070: mesh996212215 + externalObjects: {} + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + preserveHierarchy: 0 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + previousCalculatedGlobalScale: 1 + hasPreviousCalculatedGlobalScale: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + serializedVersion: 2 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/AnnotationManager b/Unity_VR_Assignment/Library/AnnotationManager new file mode 100644 index 0000000..a3f45cb Binary files /dev/null and b/Unity_VR_Assignment/Library/AnnotationManager differ diff --git a/Unity_VR_Assignment/Library/AssetImportState b/Unity_VR_Assignment/Library/AssetImportState new file mode 100644 index 0000000..0477844 --- /dev/null +++ b/Unity_VR_Assignment/Library/AssetImportState @@ -0,0 +1 @@ +13;589824;2304;0;0 \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/BuildPlayer.prefs b/Unity_VR_Assignment/Library/BuildPlayer.prefs new file mode 100644 index 0000000..e69de29 diff --git a/Unity_VR_Assignment/Library/BuildSettings.asset b/Unity_VR_Assignment/Library/BuildSettings.asset new file mode 100644 index 0000000..5e55b18 Binary files /dev/null and b/Unity_VR_Assignment/Library/BuildSettings.asset differ diff --git a/Unity_VR_Assignment/Library/CurrentLayout.dwlt b/Unity_VR_Assignment/Library/CurrentLayout.dwlt new file mode 100644 index 0000000..5b18f1f --- /dev/null +++ b/Unity_VR_Assignment/Library/CurrentLayout.dwlt @@ -0,0 +1,736 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PixelRect: + serializedVersion: 2 + x: 0 + y: 43 + width: 1366 + height: 685 + m_ShowMode: 4 + m_Title: + m_RootView: {fileID: 2} + m_MinSize: {x: 950, y: 300} + m_MaxSize: {x: 10000, y: 10000} +--- !u!114 &2 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 3} + - {fileID: 5} + - {fileID: 4} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1366 + height: 685 + m_MinSize: {x: 950, y: 300} + m_MaxSize: {x: 10000, y: 10000} +--- !u!114 &3 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1366 + height: 30 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} + m_LastLoadedLayoutName: +--- !u!114 &4 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 665 + width: 1366 + height: 20 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} +--- !u!114 &5 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 6} + m_Position: + serializedVersion: 2 + x: 0 + y: 30 + width: 1366 + height: 635 + m_MinSize: {x: 1117, y: 348} + m_MaxSize: {x: 22012, y: 10024} + vertical: 1 + controlID: 135 +--- !u!114 &6 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 7} + - {fileID: 10} + - {fileID: 11} + - {fileID: 12} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1366 + height: 635 + m_MinSize: {x: 1117, y: 348} + m_MaxSize: {x: 22012, y: 10024} + vertical: 0 + controlID: 136 +--- !u!114 &7 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 8} + - {fileID: 9} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 546 + height: 635 + m_MinSize: {x: 402, y: 348} + m_MaxSize: {x: 4002, y: 6096} + vertical: 1 + controlID: 116 +--- !u!114 &8 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 546 + height: 331 + m_MinSize: {x: 402, y: 124} + m_MaxSize: {x: 2050, y: 2072} + m_ActualView: {fileID: 13} + m_Panes: + - {fileID: 15} + - {fileID: 13} + m_Selected: 1 + m_LastSelected: 0 +--- !u!114 &9 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 331 + width: 546 + height: 304 + m_MinSize: {x: 202, y: 224} + m_MaxSize: {x: 4002, y: 4024} + m_ActualView: {fileID: 14} + m_Panes: + - {fileID: 14} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &10 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 546 + y: 0 + width: 204 + height: 635 + m_MinSize: {x: 204, y: 224} + m_MaxSize: {x: 4004, y: 4024} + m_ActualView: {fileID: 16} + m_Panes: + - {fileID: 16} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &11 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 750 + y: 0 + width: 234 + height: 635 + m_MinSize: {x: 234, y: 274} + m_MaxSize: {x: 10004, y: 10024} + m_ActualView: {fileID: 17} + m_Panes: + - {fileID: 17} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 984 + y: 0 + width: 382 + height: 635 + m_MinSize: {x: 277, y: 74} + m_MaxSize: {x: 4002, y: 4024} + m_ActualView: {fileID: 18} + m_Panes: + - {fileID: 18} + - {fileID: 19} + m_Selected: 0 + m_LastSelected: 1 +--- !u!114 &13 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12111, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 400, y: 100} + m_MaxSize: {x: 2048, y: 2048} + m_TitleContent: + m_Text: Asset Store + m_Image: {fileID: 357073275683767465, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 0 + y: 73 + width: 544 + height: 311 + m_PersistentViewDataDictionary: {fileID: 0} +--- !u!114 &14 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Game + m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 0 + y: 404 + width: 544 + height: 284 + m_PersistentViewDataDictionary: {fileID: 0} + m_MaximizeOnPlay: 0 + m_Gizmos: 0 + m_Stats: 0 + m_SelectedSizes: 08000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_TargetDisplay: 0 + m_ZoomArea: + m_HRangeLocked: 0 + m_VRangeLocked: 0 + hZoomLockedByDefault: 0 + vZoomLockedByDefault: 0 + m_HBaseRangeMin: -272 + m_HBaseRangeMax: 272 + m_VBaseRangeMin: -133.5 + m_VBaseRangeMax: 133.5 + m_HAllowExceedBaseRangeMin: 1 + m_HAllowExceedBaseRangeMax: 1 + m_VAllowExceedBaseRangeMin: 1 + m_VAllowExceedBaseRangeMax: 1 + m_ScaleWithWindow: 0 + m_HSlider: 0 + m_VSlider: 0 + m_IgnoreScrollWheelUntilClicked: 0 + m_EnableMouseInput: 1 + m_EnableSliderZoomHorizontal: 0 + m_EnableSliderZoomVertical: 0 + m_UniformScale: 1 + m_UpDirection: 1 + m_DrawArea: + serializedVersion: 2 + x: 0 + y: 17 + width: 544 + height: 267 + m_Scale: {x: 1, y: 1} + m_Translation: {x: 272, y: 133.5} + m_MarginLeft: 0 + m_MarginRight: 0 + m_MarginTop: 0 + m_MarginBottom: 0 + m_LastShownAreaInsideMargins: + serializedVersion: 2 + x: -272 + y: -133.5 + width: 544 + height: 267 + m_MinimalGUI: 1 + m_defaultScale: 1 + m_TargetTexture: {fileID: 0} + m_CurrentColorSpace: 0 + m_LastWindowPixelSize: {x: 544, y: 284} + m_ClearInEditMode: 1 + m_NoCameraWarning: 1 + m_LowResolutionForAspectRatios: 01000000000100000100 + m_XRRenderMode: 0 +--- !u!114 &15 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 0 + y: 73 + width: 544 + height: 311 + m_PersistentViewDataDictionary: {fileID: 0} + m_WindowGUID: b6549bd28f651984d8266dfbc27b41f6 + m_SceneLighting: 0 + m_2DMode: 0 + m_isRotationLocked: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: 4.43, y: 2.3600001, z: 1.77} + speed: 2 + m_Value: {x: 4.43, y: 2.3600001, z: 1.77} + m_RenderMode: 0 + m_CameraMode: + drawMode: 0 + name: Shaded + section: Shading Mode + m_ValidateTrueMetals: 0 + m_SceneViewState: + showFog: 0 + showMaterialUpdate: 0 + showSkybox: 0 + showFlares: 0 + showImageEffects: 0 + showParticleSystems: 0 + grid: + xGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + yGrid: + m_Target: 1 + speed: 2 + m_Value: 1 + zGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Rotation: + m_Target: {x: -0.011911413, y: 0.9368167, z: -0.34814584, w: -0.032049686} + speed: 2 + m_Value: {x: -0.011911413, y: 0.9368167, z: -0.34814584, w: -0.032049686} + m_Size: + m_Target: 2.3661323 + speed: 2 + m_Value: 2.3661323 + m_Ortho: + m_Target: 0 + speed: 2 + m_Value: 0 + m_ShowGlobalGrid: 1 + m_LastSceneViewRotation: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 +--- !u!114 &16 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Hierarchy + m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 546 + y: 73 + width: 200 + height: 615 + m_PersistentViewDataDictionary: {fileID: 0} + m_SceneHierarchy: + m_TreeViewState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: d4fbffff + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 0 + m_ClientGUIView: {fileID: 10} + m_SearchString: + m_ExpandedScenes: [] + m_CurrenRootInstanceID: 0 + m_LockTracker: + m_IsLocked: 0 + m_CurrentSortingName: TransformSorting + m_WindowGUID: fd2a8d5d1f268c143a3bed438c16f989 +--- !u!114 &17 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 230, y: 250} + m_MaxSize: {x: 10000, y: 10000} + m_TitleContent: + m_Text: Project + m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 750 + y: 73 + width: 230 + height: 615 + m_PersistentViewDataDictionary: {fileID: 0} + m_SearchFilter: + m_NameFilter: + m_ClassNames: [] + m_AssetLabels: [] + m_AssetBundleNames: [] + m_VersionControlStates: [] + m_SoftLockControlStates: [] + m_ReferencingInstanceIDs: + m_SceneHandles: + m_ShowAllHits: 0 + m_SearchArea: 1 + m_Folders: + - Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M + m_ViewMode: 1 + m_StartGridSize: 64 + m_LastFolders: + - Assets/model_obj_8WyS_yhFbX1_fX0NAI4qo3M + m_LastFoldersGridSize: 64 + m_LastProjectPath: C:\Users\HP Laptop\Documents\MazeGame + m_LockTracker: + m_IsLocked: 0 + m_FolderTreeState: + scrollPos: {x: 0, y: 394} + m_SelectedIDs: fe2d0000 + m_LastClickedID: 11774 + m_ExpandedIDs: 0000000086290000b42a0000002b0000062c0000202c0000822c0000082d0000702d000000ca9a3b + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 11} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_AssetTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 0000000086290000b42a0000002b0000062c0000202c0000822c0000082d0000702d0000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_ListAreaState: + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 + m_HadKeyboardFocusLastEvent: 0 + m_ExpandedInstanceIDs: 162b0000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 11} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_NewAssetIndexInList: -1 + m_ScrollPosition: {x: 0, y: 243.99927} + m_GridSize: 64 + m_DirectoriesAreaWidth: 110 +--- !u!114 &18 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 984 + y: 73 + width: 380 + height: 615 + m_PersistentViewDataDictionary: {fileID: 0} + m_ObjectsLockedBeforeSerialization: [] + m_InstanceIDsLockedBeforeSerialization: + m_LockTracker: + m_IsLocked: 0 + m_PreviewResizer: + m_CachedPref: -160 + m_ControlHash: -371814159 + m_PrefName: Preview_InspectorPreview + m_PreviewWindow: {fileID: 0} +--- !u!114 &19 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12079, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 390, y: 390} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Lighting + m_Image: {fileID: 8394858894532624064, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1003 + y: 73 + width: 361 + height: 615 + m_PersistentViewDataDictionary: {fileID: 0} diff --git a/Unity_VR_Assignment/Library/EditorUserBuildSettings.asset b/Unity_VR_Assignment/Library/EditorUserBuildSettings.asset new file mode 100644 index 0000000..d32e466 Binary files /dev/null and b/Unity_VR_Assignment/Library/EditorUserBuildSettings.asset differ diff --git a/Unity_VR_Assignment/Library/EditorUserSettings.asset b/Unity_VR_Assignment/Library/EditorUserSettings.asset new file mode 100644 index 0000000..a5ca271 Binary files /dev/null and b/Unity_VR_Assignment/Library/EditorUserSettings.asset differ diff --git a/Unity_VR_Assignment/Library/InspectorExpandedItems.asset b/Unity_VR_Assignment/Library/InspectorExpandedItems.asset new file mode 100644 index 0000000..cada352 Binary files /dev/null and b/Unity_VR_Assignment/Library/InspectorExpandedItems.asset differ diff --git a/Unity_VR_Assignment/Library/LastBuild.buildreport b/Unity_VR_Assignment/Library/LastBuild.buildreport new file mode 100644 index 0000000..27bf6fe Binary files /dev/null and b/Unity_VR_Assignment/Library/LastBuild.buildreport differ diff --git a/Unity_VR_Assignment/Library/LastSceneManagerSetup.txt b/Unity_VR_Assignment/Library/LastSceneManagerSetup.txt new file mode 100644 index 0000000..16052c4 --- /dev/null +++ b/Unity_VR_Assignment/Library/LastSceneManagerSetup.txt @@ -0,0 +1,4 @@ +sceneSetups: +- path: Assets/Scenes/SampleScene.unity + isLoaded: 1 + isActive: 1 diff --git a/Unity_VR_Assignment/Library/LibraryFormatVersion.txt b/Unity_VR_Assignment/Library/LibraryFormatVersion.txt new file mode 100644 index 0000000..6185f09 --- /dev/null +++ b/Unity_VR_Assignment/Library/LibraryFormatVersion.txt @@ -0,0 +1,2 @@ +unityRebuildLibraryVersion: 11 +unityForwardCompatibleVersion: 40 diff --git a/Unity_VR_Assignment/Library/MonoManager.asset b/Unity_VR_Assignment/Library/MonoManager.asset new file mode 100644 index 0000000..3a299f1 Binary files /dev/null and b/Unity_VR_Assignment/Library/MonoManager.asset differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/CHANGELOG.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/CHANGELOG.md new file mode 100644 index 0000000..ceaa426 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/CHANGELOG.md @@ -0,0 +1,37 @@ + +[1.0.1] + +Adding Readme file +Adding local plugin importer callbacks. +Removing Bintray references in package.json + +[2.0.3] + +Fix bug where importing the asset store ads package would cause duiplicate symbols, +and removing the asset store ads package would cause missing symbols. + +[2.0.4] + +Added new description string to package.json +Fixed art assets to use no compression (fixes issue switching between iOS and PC builds) + +[2.0.5] - 2018-03-29 + +Fix for https://fogbugz.unity3d.com/f/cases/1011363 +Fixes an incorrect guid that the importer used to include/exclude the runtime assembly from the build. + +[2.0.6] - 2018-03-29 + +Update changelog for this and 2.0.5 + +[2.0.7] - 2018-04-06 + +Fix editor assembly project file to include the importer script. + +[2.0.8] - 2018-05-01 + +Add call to SetShouldOverridePredicate to exclude package dll when asset store dlls are present. +Update unity version attribute to support 2017.4 LTS + +Fix an issue with the editor assembly to add back in some iOS platform specific code that was removed +via conditionals (which is fine for source packages, but doesn't work with precompiled assemblies) diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/CHANGELOG.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/CHANGELOG.md.meta new file mode 100644 index 0000000..5d2eb24 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 35b4e72ca46f44581b85082c4dc21d13 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor.meta new file mode 100644 index 0000000..575303a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a37e18887fa954edf92bc36bc353b879 +folderAsset: yes +timeCreated: 1491945644 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources.meta new file mode 100644 index 0000000..aae7f60 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7c3a5d6e39b874f468b2691537168513 +folderAsset: yes +timeCreated: 1491258568 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android.meta new file mode 100644 index 0000000..45b8bb6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 48986928cc2a449dbaecdd1654bc9bf6 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds.meta new file mode 100644 index 0000000..826840e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f28fcced5af094cf78eb4e1109a71981 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds/unity-ads.aar b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds/unity-ads.aar new file mode 100644 index 0000000..a05fc29 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds/unity-ads.aar differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds/unity-ads.aar.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds/unity-ads.aar.meta new file mode 100644 index 0000000..6ba354b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Android/builds/unity-ads.aar.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: b32abd1c9d73a4cce8389f084ac12b11 +timeCreated: 1491258710 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor.meta new file mode 100644 index 0000000..8defda5 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 99ddb49592ff84811804420a1910cb89 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/landscape.jpg b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/landscape.jpg new file mode 100644 index 0000000..4fa7f28 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/landscape.jpg differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/landscape.jpg.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/landscape.jpg.meta new file mode 100644 index 0000000..ce5a605 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/landscape.jpg.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 10bf81265ad87424d946598c575f45a0 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/portrait.jpg b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/portrait.jpg new file mode 100644 index 0000000..5d8fb0b Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/portrait.jpg differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/portrait.jpg.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/portrait.jpg.meta new file mode 100644 index 0000000..ff78850 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/Editor/portrait.jpg.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 1b32bcce201b4494ea8848326290c5d5 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS.meta new file mode 100644 index 0000000..a44e61b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4f234578336894dc081edf696f2ff5f2 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds.meta new file mode 100644 index 0000000..f37efbe --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2d4d46c70fdd242668a56e99799e8540 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework.meta new file mode 100644 index 0000000..c83ed20 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: eeed6954b3c264ca0b28a92aa6289bf0 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + data: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers.meta new file mode 100644 index 0000000..fab0de2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6e7c8cfeedae74eb3a562055e069e441 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h new file mode 100644 index 0000000..8edc8c1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h @@ -0,0 +1,11 @@ +#import "UADSMetaData.h" + +@interface UADSInAppPurchaseMetaData : UADSMetaData + +- (void)setProductId:(NSString *)productId; +- (void)setPrice:(NSNumber *)price; +- (void)setCurrency:(NSString *)currency; +- (void)setReceiptPurchaseData:(NSString *)receiptPurchaseData; +- (void)setSignature:(NSString *)signature; + +@end diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h.meta new file mode 100644 index 0000000..98aa839 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSInAppPurchaseMetaData.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7927683d1fc5848b5abfb54ebb1028ec +timeCreated: 1493316657 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSJsonStorage.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSJsonStorage.h new file mode 100644 index 0000000..1ed3c43 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSJsonStorage.h @@ -0,0 +1,13 @@ +@interface UADSJsonStorage : NSObject + +@property (nonatomic, strong) NSMutableDictionary *storageContents; + +- (BOOL)set:(NSString *)key value:(id)value; +- (id)getValueForKey:(NSString *)key; +- (BOOL)deleteKey:(NSString *)key; +- (NSArray *)getKeys:(NSString *)key recursive:(BOOL)recursive; +- (void)clearData; +- (BOOL)initData; +- (BOOL)hasData; + +@end diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSJsonStorage.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSJsonStorage.h.meta new file mode 100644 index 0000000..9b92349 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSJsonStorage.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1322fd896bbb15bb6e335591b766ae62 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMediationMetaData.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMediationMetaData.h new file mode 100644 index 0000000..5f49a28 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMediationMetaData.h @@ -0,0 +1,9 @@ +#import "UADSMetaData.h" + +@interface UADSMediationMetaData : UADSMetaData + +- (void)setName:(NSString *)mediationNetworkName; +- (void)setVersion:(NSString *)mediationSdkVersion; +- (void)setOrdinal:(int)mediationOrdinal; + +@end \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMediationMetaData.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMediationMetaData.h.meta new file mode 100644 index 0000000..cd75153 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMediationMetaData.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b52e557db2c2b4eebb10444f1d582029 +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMetaData.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMetaData.h new file mode 100644 index 0000000..791d313 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMetaData.h @@ -0,0 +1,12 @@ + + +@interface UADSMetaData : NSObject + +@property (nonatomic, strong) NSString *category; +@property (nonatomic, strong) NSMutableDictionary *entries; + +- (instancetype)initWithCategory:(NSString *)category; +- (void)set:(NSString *)key value:(id)value; +- (void)commit; + +@end \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMetaData.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMetaData.h.meta new file mode 100644 index 0000000..1710ad2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSMetaData.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 86c008322e7c647149878156c5b81940 +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSPlayerMetaData.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSPlayerMetaData.h new file mode 100644 index 0000000..5d0db48 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSPlayerMetaData.h @@ -0,0 +1,7 @@ +#import "UADSMetaData.h" + +@interface UADSPlayerMetaData : UADSMetaData + +- (void)setServerId:(NSString *)serverId; + +@end \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSPlayerMetaData.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSPlayerMetaData.h.meta new file mode 100644 index 0000000..92fe505 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UADSPlayerMetaData.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 453f100e6bdae4dfd9e655927819dc85 +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAds.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAds.h new file mode 100644 index 0000000..8e1ccfd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAds.h @@ -0,0 +1,255 @@ +#import + +#import +#import + +/** + * An enumerate that describes the state of `UnityAds` placements. + * @note All placement states, other than `kUnityAdsPlacementStateReady`, indicate that the placement is not currently ready to show ads. + */ +typedef NS_ENUM(NSInteger, UnityAdsPlacementState) { + /** + * A state that indicates that the placement is ready to show an ad. The `show:` selector can be called. + */ + kUnityAdsPlacementStateReady, + /** + * A state that indicates that no state is information is available. + * @warning This state can that UnityAds is not initialized or that the placement is not correctly configured in the Unity Ads admin tool. + */ + kUnityAdsPlacementStateNotAvailable, + /** + * A state that indicates that the placement is currently disabled. The placement can be enabled in the Unity Ads admin tools. + */ + kUnityAdsPlacementStateDisabled, + /** + * A state that indicates that the placement is not currently ready, but will be in the future. + * @note This state most likely indicates that the ad content is currently caching. + */ + kUnityAdsPlacementStateWaiting, + /** + * A state that indicates that the placement is properly configured, but there are currently no ads available for the placement. + */ + kUnityAdsPlacementStateNoFill +}; + +/** + * An enumeration for the completion state of an ad. + */ +typedef NS_ENUM(NSInteger, UnityAdsFinishState) { + /** + * A state that indicates that the ad did not successfully display. + */ + kUnityAdsFinishStateError, + /** + * A state that indicates that the user skipped the ad. + */ + kUnityAdsFinishStateSkipped, + /** + * A state that indicates that the ad was played entirely. + */ + kUnityAdsFinishStateCompleted +}; + +/** + * An enumeration for the various errors that can be emitted through the `UnityAdsDelegate` `unityAdsDidError:withMessage:` method. + */ +typedef NS_ENUM(NSInteger, UnityAdsError) { + /** + * An error that indicates failure due to `UnityAds` currently being uninitialized. + */ + kUnityAdsErrorNotInitialized = 0, + /** + * An error that indicates failure due to a failure in the initialization process. + */ + kUnityAdsErrorInitializedFailed, + /** + * An error that indicates failure due to attempting to initialize `UnityAds` with invalid parameters. + */ + kUnityAdsErrorInvalidArgument, + /** + * An error that indicates failure of the video player. + */ + kUnityAdsErrorVideoPlayerError, + /** + * An error that indicates failure due to having attempted to initialize the `UnityAds` class in an invalid environment. + */ + kUnityAdsErrorInitSanityCheckFail, + /** + * An error that indicates failure due to the presence of an ad blocker. + */ + kUnityAdsErrorAdBlockerDetected, + /** + * An error that indicates failure due to inability to read or write a file. + */ + kUnityAdsErrorFileIoError, + /** + * An error that indicates failure due to a bad device identifier. + */ + kUnityAdsErrorDeviceIdError, + /** + * An error that indicates a failure when attempting to show an ad. + */ + kUnityAdsErrorShowError, + /** + * An error that indicates an internal failure in `UnityAds`. + */ + kUnityAdsErrorInternalError, +}; + +/** + * The `UnityAdsDelegate` protocol defines the required methods for receiving messages from UnityAds. + * Must be implemented by the hosting app. + * The unityAdsReady: method is called when it's possible to show an ad. + * All other methods are used to provide notifications of events of the ad lifecycle. + * @note On initialization, there are ready (or error) callbacks for each placement attached to the game identifier. + */ +NS_ASSUME_NONNULL_BEGIN +@protocol UnityAdsDelegate +/** + * Called when `UnityAds` is ready to show an ad. After this callback you can call the `UnityAds` `show:` method for this placement. + * Note that sometimes placement might no longer be ready due to exceptional reasons. These situations will give no new callbacks. + * + * @warning To avoid error situations, it is always best to check `isReady` method status before calling show. + * @param placementId The ID of the placement that is ready to show, as defined in Unity Ads admin tools. + */ +- (void)unityAdsReady:(NSString *)placementId; +/** + * Called when `UnityAds` encounters an error. All errors will be logged but this method can be used as an additional debugging aid. This callback can also be used for collecting statistics from different error scenarios. + * + * @param error A `UnityAdsError` error enum value indicating the type of error encountered. + * @param message A human readable string indicating the type of error encountered. + */ +- (void)unityAdsDidError:(UnityAdsError)error withMessage:(NSString *)message; +/** + * Called on a successful start of advertisement after calling the `UnityAds` `show:` method. + * + * @warning If there are errors in starting the advertisement, this method may never be called. Unity Ads will directly call `unityAdsDidFinish:withFinishState:` with error status. + * + * @param placementId The ID of the placement that has started, as defined in Unity Ads admin tools. + */ +- (void)unityAdsDidStart:(NSString *)placementId; +/** + * Called after the ad has closed. + * + * @param placementId The ID of the placement that has finished, as defined in Unity Ads admin tools. + * @param state An enum value indicating the finish state of the ad. Possible values are `Completed`, `Skipped`, and `Error`. + */ +- (void)unityAdsDidFinish:(NSString *)placementId + withFinishState:(UnityAdsFinishState)state; +@end + +/** + * `UnityAds` is a static class with methods for preparing and showing ads. + * + * @warning In order to ensure expected behaviour, the delegate must always be set. + */ + +@interface UnityAds : NSObject + +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)initialize NS_UNAVAILABLE; + +/** + * Initializes UnityAds. UnityAds should be initialized when app starts. + * + * @param gameId Unique identifier for a game, given by Unity Ads admin tools or Unity editor. + * @param delegate delegate for UnityAdsDelegate callbacks + */ ++ (void)initialize:(NSString *)gameId + delegate:(nullable id)delegate; +/** + * Initializes UnityAds. UnityAds should be initialized when app starts. + * + * @param gameId Unique identifier for a game, given by Unity Ads admin tools or Unity editor. + * @param delegate delegate for UnityAdsDelegate callbacks + * @param testMode Set this flag to `YES` to indicate test mode and show only test ads. + */ ++ (void)initialize:(NSString *)gameId + delegate:(nullable id)delegate + testMode:(BOOL)testMode; +/** + * Show an ad using the defaul placement. + * + * @param viewController The `UIViewController` that is to present the ad view controller. + */ ++ (void)show:(UIViewController *)viewController; +/** + * Show an ad using the provided placement ID. + * + * @param viewController The `UIViewController` that is to present the ad view controller. + * @param placementId The placement ID, as defined in Unity Ads admin tools. + */ ++ (void)show:(UIViewController *)viewController placementId:(NSString *)placementId; +/** + * Provides the currently assigned `UnityAdsDelegate`. + * + * @return The current `UnityAdsDelegate`. + */ ++ (id)getDelegate; +/** + * Allows the delegate to be reassigned after UnityAds has already been initialized. + * + * @param delegate The new `UnityAdsDelegate' for UnityAds to send callbacks to. + */ ++ (void)setDelegate:(id)delegate; +/** + * Get the current debug status of `UnityAds`. + * + * @return If `YES`, `UnityAds` will provide verbose logs. + */ ++ (BOOL)getDebugMode; +/** + * Set the logging verbosity of `UnityAds`. Debug mode indicates verbose logging. + * @warning Does not relate to test mode for ad content. + * @param enableDebugMode `YES` for verbose logging. + */ ++ (void)setDebugMode:(BOOL)enableDebugMode; +/** + * Check to see if the current device supports using Unity Ads. + * + * @return If `NO`, the current device cannot initialize `UnityAds` or show ads. + */ ++ (BOOL)isSupported; +/** + * Check if the default placement is ready to show an ad. + * + * @return If `YES`, the default placement is ready to show an ad. + */ ++ (BOOL)isReady; +/** + * Check if a particular placement is ready to show an ad. + * + * @param placementId The placement ID being checked. + * + * @return If `YES`, the placement is ready to show an ad. + */ ++ (BOOL)isReady:(NSString *)placementId; +/** + * Check the current state of the default placement. + * + * @return If this is `kUnityAdsPlacementStateReady`, the placement is ready to show ads. Other states represent errors. + */ ++ (UnityAdsPlacementState)getPlacementState; +/** + * Check the current state of a placement. + * + * @param placementId The placement ID, as defined in Unity Ads admin tools. + * + * @return If this is `kUnityAdsPlacementStateReady`, the placement is ready to show ads. Other states represent errors. + */ ++ (UnityAdsPlacementState)getPlacementState:(NSString *)placementId; +/** + * Check the version of this `UnityAds` SDK + * + * @return String representing the current version name. + */ ++ (NSString *)getVersion; +/** + * Check that `UnityAds` has been initialized. This might be useful for debugging initialization problems. + * + * @return If `YES`, Unity Ads has been successfully initialized. + */ ++ (BOOL)isInitialized; + +@end +NS_ASSUME_NONNULL_END \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAds.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAds.h.meta new file mode 100644 index 0000000..e4b7c0b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAds.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c99bfe4fc4e5c4dc3917c14075acd117 +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsExtended.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsExtended.h new file mode 100644 index 0000000..1435037 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsExtended.h @@ -0,0 +1,21 @@ +#import "UnityAds.h" + +NS_ASSUME_NONNULL_BEGIN +@protocol UnityAdsExtendedDelegate +/** + * Called when a click event happens. + * + * @param placementId The ID of the placement that was clicked. + */ +- (void)unityAdsDidClick:(NSString *)placementId; + +/** + * Called when a placement changes state. + * + * @param placementId The ID of the placement that changed state. + * @param oldState The state before the change. + * @param newState The state after the change. + */ +- (void)unityAdsPlacementStateChanged:(NSString *)placementId oldState:(UnityAdsPlacementState)oldState newState:(UnityAdsPlacementState)newState; +@end +NS_ASSUME_NONNULL_END diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsExtended.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsExtended.h.meta new file mode 100644 index 0000000..9840de1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsExtended.h.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6842a74831964edc8fefa1c0aed89dc +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsUnityDelegate.h b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsUnityDelegate.h new file mode 100644 index 0000000..0fa6e36 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsUnityDelegate.h @@ -0,0 +1,11 @@ +#import "UnityAds.h" +NS_ASSUME_NONNULL_BEGIN +@protocol UnityAdsUnityDelegate +/** + * Called when an in-app purchase is initiated from an ad. + * + * @param eventString The string provided via the ad. + */ +- (void)unityAdsDidInitiatePurchase:(NSString *)eventString; +@end +NS_ASSUME_NONNULL_END diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsUnityDelegate.h.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsUnityDelegate.h.meta new file mode 100644 index 0000000..19ec6df --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Headers/UnityAdsUnityDelegate.h.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ce4395ccdb12cf62fca756358be1a892 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Info.plist b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Info.plist new file mode 100644 index 0000000..31b0379 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Info.plist differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Info.plist.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Info.plist.meta new file mode 100644 index 0000000..e4e0148 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Info.plist.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cc1b50b5501f748da8bec762294d9136 +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules.meta new file mode 100644 index 0000000..6ba1dcb --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3cebe1a96232b44388b30b2f72dde434 +folderAsset: yes +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules/module.modulemap b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules/module.modulemap new file mode 100644 index 0000000..9b448d5 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules/module.modulemap @@ -0,0 +1,7 @@ +framework module UnityAds { + umbrella header "UnityAds.h" + header "UnityAdsExtended.h" + + export * + module * { export * } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules/module.modulemap.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules/module.modulemap.meta new file mode 100644 index 0000000..13ea2e9 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/Modules/module.modulemap.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5ba7626a737840ff88a3bd84b100482 +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/UnityAds b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/UnityAds new file mode 100644 index 0000000..5318416 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/UnityAds differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/UnityAds.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/UnityAds.meta new file mode 100644 index 0000000..a311b83 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/Resources/iOS/builds/UnityAds.framework/UnityAds.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1c1a2d988f5148fd9ab17b2460d271e +timeCreated: 1491258705 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll new file mode 100644 index 0000000..77409dd Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.mdb b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.mdb new file mode 100644 index 0000000..7ee35e8 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.mdb differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.mdb.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.mdb.meta new file mode 100644 index 0000000..ad74189 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.mdb.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6597c6ea86d36477081342001145d8d9 +timeCreated: 1492551631 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.meta new file mode 100644 index 0000000..ede6653 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/Editor/UnityEditor.Advertisements.dll.meta @@ -0,0 +1,25 @@ +fileFormatVersion: 2 +guid: a342381d77833427fa10621e38fbae10 +timeCreated: 1491945648 +licenseType: Pro +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + Editor: + enabled: 1 + settings: + DefaultValueInitialized: true + WindowsStoreApps: + enabled: 0 + settings: + CPU: AnyCPU + data: + enabled: 0 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/License.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/License.md new file mode 100644 index 0000000..27c17ac --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/License.md @@ -0,0 +1,32 @@ +**Unity Companion Package License v1.0 ("_License_")** + +Copyright © 2017 Unity Technologies ApS ("**_Unity_**") + +Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("**_Software_**"), subject to the following terms and conditions: + +1. *Unity Companion Use Only*. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("**_Engine License_**"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted. + +1. *No Modification of Engine License*. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +1. *Ownership & Grant Back to You*. + + 3.1. You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + + 3.2. Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + + 3.3. You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +1. *Trademarks*. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("**_Trademarks_**"). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at [https://unity3d.com/public-relations/brand](https://unity3d.com/public-relations/brand). + +1. *Notices & Third-Party Rights*. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +1. *DISCLAIMER, LIMITATION OF LIABILITY*. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +1. *USE IS ACCEPTANCE and License Versions*. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +1. *Use in Compliance with Law and Termination*. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +1. *Severability*. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +1. *Governing Law and Venue*. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("**_Dispute_**"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/License.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/License.md.meta new file mode 100644 index 0000000..308e13b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/License.md.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c6fe94acbb24417c988bab18cbd5209 +timeCreated: 1504642506 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/README.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/README.md new file mode 100644 index 0000000..9ed6019 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/README.md @@ -0,0 +1,4 @@ +# Unity Ads + +Implementation of the Unity Ads API. + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/README.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/README.md.meta new file mode 100644 index 0000000..26e726c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/README.md.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62772aad98ed04f0d955b7d20de61f7f +timeCreated: 1493316656 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll new file mode 100644 index 0000000..e948652 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.mdb b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.mdb new file mode 100644 index 0000000..5ec8e50 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.mdb differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.mdb.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.mdb.meta new file mode 100644 index 0000000..172110a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.mdb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5e57a6c62c1ec47d0bceb70495845164 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.meta new file mode 100644 index 0000000..823a117 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/UnityEngine.Advertisements.dll.meta @@ -0,0 +1,121 @@ +fileFormatVersion: 2 +guid: 3b07d432cba2a4c4f8a2fdea984620b8 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXIntel: 1 + Exclude OSXIntel64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 1 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/package.json b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/package.json new file mode 100644 index 0000000..881daf2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/package.json @@ -0,0 +1,17 @@ +{ + "category": "AssetStore/Unity", + "description": "Unity Ads is a video ad network for iOS and Android that allows you to quickly and effectively monetize your games.", + "gitHead": "0d2114387a99011be685886f8ea902242e323e70", + "keywords": [ + "ads", + "unity" + ], + "name": "com.unity.ads", + "repoPackagePath": "build/install/com.unity.ads", + "repository": { + "type": "git", + "url": "ssh://git@github.com/Unity-Technologies/com.unity.ads.git" + }, + "unity": "2017.4", + "version": "2.0.8" +} \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/package.json.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/package.json.meta new file mode 100644 index 0000000..38201ff --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.ads@2.0.8/package.json.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dced8f6ea9f964e8e8e61574ea889d21 +timeCreated: 1491258710 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/CHANGELOG.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/CHANGELOG.md new file mode 100644 index 0000000..207f10a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/CHANGELOG.md @@ -0,0 +1,57 @@ +## [3.2.2] - 2018-11-02 +- Removed FetchOptOutStatus and Initialize call. All application of opt out + status will be handled by the engine. The Analytics/Data Privacy package still + provides FetchPrivacyUrl to provide a URL from which to opt out. + +## [3.2.1] - 2018-10-25 +- Move editor and playmode tests to be packed within the package. + +## [3.2.0] - 2018-10-11 +- Prevent double-registration of standard events. +- Fixed build error on platforms that don't support analytics. +- Update package docs so they can be built and published and be accessible from + the Package Manager UI. +- Fixed a crash occurring on iOS device when the device has cellular capability + but was never configured with any carrier service. +- Fixed an android build failure occurring due to conflicting install referrer + AIDL files. + +## [3.1.1] - 2018-08-21 +- Add DataPrivacy plugin into package. +- Fixed an issue where Android project build would fail when proguard is enabled + in publishing settings. +- Fixed an issue where iOS product archive would fail because bitcode was not + enabled. + +## [3.0.9] - 2018-07-31 +- Fixing issue with NullReferenceException during editor playmode + +## [3.0.8] - 2018-07-26 +- Fixing linking issue when building Android il2cpp + +## [3.0.7] - 2018-07-10 +- Adding in continuous events for signal strength, battery level, battery + temperature, memory usage, available storage + +## [3.0.6] - 2018-06-01 +- Reorganizing platformInfo event around session start/resume/pause + +## [3.0.5] - 2018-05-29 +- Fixing cellular signal strength incorrect array format + +## [3.0.4] - 2018-05-04 +- Breaking change to only work with 2018.2 (change name of whitelisted dll's in + engine to conform to PackageManager standard) +- Changed name of old Analytics dll to the Unity.Analytics.Tracker.dll and + replaced the old one with the new platform information package. +- Changed naming convention of dlls to the PackageManager Standard: + Unity.Analytics.dll, Unity.Analytics.Editor.dll, Unity.Analytics.Tracker.dll, + Unity.Analytics.StandardEvents.dll. +- Deprecated old Analytics tracker and removed it from the add component menu. +- Merged Standardevents package into Analytics package. + +## [2.0.14] - 2018-02-08 +- Added proper documentation and better description text. + +## [2.0.5] - +- Update analytics tracker to 2.0 (1.0 version is still available) diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/CHANGELOG.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/CHANGELOG.md.meta new file mode 100644 index 0000000..80fcec7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/CHANGELOG.md.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bcd27da1c9ae94d2cafe094482a20792 +timeCreated: 1511216857 +licenseType: Pro +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy.meta new file mode 100644 index 0000000..80f7551 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8aafd27f78c12564281bac0d0067df8d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/AssemblyInfo.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/AssemblyInfo.cs new file mode 100644 index 0000000..a97f274 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/AssemblyInfo.cs @@ -0,0 +1,4 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Unity.Analytics.DataPrivacy.Tests")] +[assembly: InternalsVisibleTo("Unity.Analytics.DataPrivacy.WebRequest.Tests")] diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/AssemblyInfo.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/AssemblyInfo.cs.meta new file mode 100644 index 0000000..bee8db4 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/AssemblyInfo.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7aad9e80c95b4991a1f4d017c8caf386 +timeCreated: 1526477558 \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacy.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacy.cs new file mode 100644 index 0000000..f48eb13 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacy.cs @@ -0,0 +1,132 @@ +#if ENABLE_CLOUD_SERVICES_ANALYTICS +using System; +using System.Text; +using UnityEngine.Networking; + +namespace UnityEngine.Analytics +{ + public class DataPrivacy + { + [Serializable] + internal struct UserPostData + { + public string appid; + public string userid; + public long sessionid; + public string platform; + public UInt32 platformid; + public string sdk_ver; + public bool debug_device; + public string deviceid; + public string plugin_ver; + } + + [Serializable] + internal struct TokenData + { + public string url; + public string token; + } + + const string kVersion = "3.0.0"; + const string kVersionString = "DataPrivacyPackage/" + kVersion; + + internal const string kBaseUrl = "https://data-optout-service.uca.cloud.unity3d.com"; + const string kTokenUrl = kBaseUrl + "/token"; + + internal static UserPostData GetUserData() + { + var postData = new UserPostData + { + appid = Application.cloudProjectId, + userid = AnalyticsSessionInfo.userId, + sessionid = AnalyticsSessionInfo.sessionId, + platform = Application.platform.ToString(), + platformid = (UInt32)Application.platform, + sdk_ver = Application.unityVersion, + debug_device = Debug.isDebugBuild, + deviceid = SystemInfo.deviceUniqueIdentifier, + plugin_ver = kVersionString + }; + + return postData; + } + + static string GetUserAgent() + { + var message = "UnityPlayer/{0} ({1}/{2}{3} {4})"; + return String.Format(message, + Application.unityVersion, + Application.platform.ToString(), + (UInt32)Application.platform, + Debug.isDebugBuild ? "-dev" : "", + kVersionString); + } + + static String getErrorString(UnityWebRequest www) + { + var json = www.downloadHandler.text; + var error = www.error; + if (String.IsNullOrEmpty(error)) + { + // 5.5 sometimes fails to parse an error response, and the only clue will be + // in www.responseHeadersString, which isn't accessible. + error = "Empty response"; + } + + if (!String.IsNullOrEmpty(json)) + { + error += ": " + json; + } + + return error; + } + + public static void FetchPrivacyUrl(Action success, Action failure = null) + { + string postJson = JsonUtility.ToJson(GetUserData()); + byte[] bytes = Encoding.UTF8.GetBytes(postJson); + var uploadHandler = new UploadHandlerRaw(bytes); + uploadHandler.contentType = "application/json"; + + var www = UnityWebRequest.Post(kTokenUrl, ""); + www.uploadHandler = uploadHandler; +#if !UNITY_WEBGL + www.SetRequestHeader("User-Agent", GetUserAgent()); +#endif + var async = www.SendWebRequest(); + + async.completed += (AsyncOperation async2) => + { + var json = www.downloadHandler.text; + if (!String.IsNullOrEmpty(www.error) || String.IsNullOrEmpty(json)) + { + var error = getErrorString(www); + if (failure != null) + { + failure(error); + } + } + else + { + TokenData tokenData; + tokenData.url = ""; // Just to quell "possibly unassigned" error + try + { + tokenData = JsonUtility.FromJson(json); + } + catch (Exception e) + { + if (failure != null) + { + failure(e.ToString()); + } + } + + success(tokenData.url); + } + }; + } + } +} +#endif //ENABLE_CLOUD_SERVICES_ANALYTICS diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacy.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacy.cs.meta new file mode 100644 index 0000000..0559a4b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bff25ea4cf0d3d841b6787b9f649f21b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.cs new file mode 100644 index 0000000..412b430 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.cs @@ -0,0 +1,52 @@ +#if ENABLE_CLOUD_SERVICES_ANALYTICS +using System; +using UnityEngine.UI; + +namespace UnityEngine.Analytics +{ + public class DataPrivacyButton : Button + { + bool urlOpened = false; + + DataPrivacyButton() + { + onClick.AddListener(OpenDataPrivacyUrl); + } + + void OnFailure(string reason) + { + interactable = true; + Debug.LogWarning(String.Format("Failed to get data privacy url: {0}", reason)); + } + + void OpenUrl(string url) + { + interactable = true; + urlOpened = true; + + #if UNITY_WEBGL && !UNITY_EDITOR + Application.ExternalEval("window.open(\"" + url + "\",\"_blank\")"); + #else + Application.OpenURL(url); + #endif + } + + void OpenDataPrivacyUrl() + { + interactable = false; + DataPrivacy.FetchPrivacyUrl(OpenUrl, OnFailure); + } + + void OnApplicationFocus(bool hasFocus) + { + if (hasFocus && urlOpened) + { + urlOpened = false; + // Immediately refresh the remote config so new privacy settings can be enabled + // as soon as possible if they have changed. + RemoteSettings.ForceUpdate(); + } + } + } +} +#endif //ENABLE_CLOUD_SERVICES_ANALYTICS diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.cs.meta new file mode 100644 index 0000000..444ade1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5ebb11c6fc3a2f498bd89593f7744aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.prefab b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.prefab new file mode 100644 index 0000000..5354355 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.prefab @@ -0,0 +1,246 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &109074 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409074} + - 222: {fileID: 22209074} + - 114: {fileID: 11409072} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109076 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409076} + - 222: {fileID: 22209076} + - 114: {fileID: 11409074} + - 114: {fileID: 11409076} + m_Layer: 5 + m_Name: DataPrivacyButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &109078 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409078} + - 222: {fileID: 22209078} + - 114: {fileID: 11409078} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11409072 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .196078405, g: .196078405, b: .196078405, a: 1} + m_Sprite: {fileID: 21300000, guid: 599a5fd92bab81a4ab02e52d0b1b1c60, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11409074 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109076} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11409076 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109076} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a5ebb11c6fc3a2f498bd89593f7744aa, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11409074} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11409078 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109078} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .196078405, g: .196078405, b: .196078405, a: 1} + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Open Data Privacy Page +--- !u!222 &22209074 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109074} +--- !u!222 &22209076 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109076} +--- !u!222 &22209078 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109078} +--- !u!224 &22409074 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109074} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22409076} + m_RootOrder: 1 + m_AnchorMin: {x: 1, y: .5} + m_AnchorMax: {x: 1, y: .5} + m_AnchoredPosition: {x: -8, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 1, y: .5} +--- !u!224 &22409076 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109076} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 22409078} + - {fileID: 22409074} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: .5} + m_AnchorMax: {x: .5, y: .5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 200, y: 30} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22409078 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 109078} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22409076} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: .850000024, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: -12, y: 0} + m_Pivot: {x: 0, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 109076} + m_IsPrefabParent: 1 + m_IsExploded: 1 diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.prefab.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.prefab.meta new file mode 100644 index 0000000..4eaf22f --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyButton.prefab.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 71b11355001648444b41d17fd36c150d +NativeFormatImporter: + userData: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyIcon.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyIcon.png new file mode 100644 index 0000000..564b374 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyIcon.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyIcon.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyIcon.png.meta new file mode 100644 index 0000000..58ce108 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/DataPrivacyIcon.png.meta @@ -0,0 +1,48 @@ +fileFormatVersion: 2 +guid: 599a5fd92bab81a4ab02e52d0b1b1c60 +TextureImporter: + fileIDToRecycleName: + 664227380: ImportLogs + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 256 + textureSettings: + filterMode: -1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/Unity.Analytics.DataPrivacy.asmdef b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/Unity.Analytics.DataPrivacy.asmdef new file mode 100644 index 0000000..c47ab21 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/Unity.Analytics.DataPrivacy.asmdef @@ -0,0 +1,8 @@ +{ + "name": "Unity.Analytics.DataPrivacy", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false +} \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/Unity.Analytics.DataPrivacy.asmdef.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/Unity.Analytics.DataPrivacy.asmdef.meta new file mode 100644 index 0000000..787823b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/DataPrivacy/Unity.Analytics.DataPrivacy.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0fda7ebe61ab2164383d10e32efb9c6e +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Documentation~/analytics.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Documentation~/analytics.md new file mode 100644 index 0000000..21782ac --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Documentation~/analytics.md @@ -0,0 +1,51 @@ +# About the Analytics Package + +This Analytics package supports the following Unity Analytics features: + +* [Standard Events](https://docs.unity3d.com/Manual/UnityAnalyticsStandardEvents.html) +* [Analytics Event Tracker](https://docs.unity3d.com/Manual/class-AnalyticsEventTracker.html) +* [Unity Analytics Data Privacy Plug-in](https://docs.unity3d.com/Manual/UnityAnalyticsDataPrivacy.html) + +For instructions on using the features in the Analytics package, refer to the [Analytics section of +the Unity Manual](https://docs.unity3d.com/Manual/UnityAnalytics.html). + +The package is supported by Unity 2018.3+ and includes functionality previously included in +earlier Unity Asset Store and Package Manager packages. When upgrading existing projects to +2018.3 or later, older, redundant packages should be removed from the project. + + +## Installing the Analytics Package + +The Analytics package is built into the Unity Editor and enabled automatically. Use the Unity +Package Manager (menu: **Window** > **Package Manager**) to disable or enable the package. +The Analytics package is listed under the built-in packages. + + + +## Using the Analytics Package + +For instructions on using the features in the Analytics package, refer to the Unity Manual: + +* [Standard Events](https://docs.unity3d.com/Manual/UnityAnalyticsStandardEvents.html) +* [Analytics Event Tracker](https://docs.unity3d.com/Manual/class-AnalyticsEventTracker.html) +* [Unity Analytics Data Privacy Plug-in](https://docs.unity3d.com/Manual/UnityAnalyticsDataPrivacy.html) + + +## Package contents + +The following table indicates the major classes, components, and files included in the Analytics package: + +|Item|Description| +|---|---| +|[`AnalyticsEvent` class](https://docs.unity3d.com/2018.3/Documentation/ScriptReference/Analytics.AnalyticsEvent.html) | The primary class for sending Standard and Custom analytics events to the Unity Analytics service.| +|[Analytics Event Tracker component](https://docs.unity3d.com/Manual/class-AnalyticsEventTracker.html) | A Unity component that you can use to send Standard and Custom analytics events (without writing code).| +|[DataPrivacy class](https://docs.unity3d.com/Manual/UnityAnalyticsDataPrivacyAPI.html)| A utility class that helps applications using Unity Analytics comply with the EU General Data Protection Regulation (GDPR).| +|`Packages/Analytics Library/DataPrivacy/DataPrivacyButton`| A Prefab GameObject you can use when building a user interface to allow players to opt out of Analytics data collection.| +|`Packages/Analytics Library/DataPrivacy/DataPrivacyIcon`| An icon graphic you can use when creating your own opt-out button or control.| + + +## Document revision history + +|Date|Reason| +|---|---| +|October 5, 2018|Document created. Matches package version 3.2.0.| diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor.meta new file mode 100644 index 0000000..d29d133 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7fd5e77e7e7ea4eea8198138cd9cc814 +folderAsset: yes +timeCreated: 1491256195 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor/AnalyticsEventTracker icon.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor/AnalyticsEventTracker icon.png new file mode 100644 index 0000000..2376393 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor/AnalyticsEventTracker icon.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor/AnalyticsEventTracker icon.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor/AnalyticsEventTracker icon.png.meta new file mode 100644 index 0000000..124e6e9 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Editor/AnalyticsEventTracker icon.png.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: 5e7c9ab97e5884e4eaa5967e9024f39d +timeCreated: 1492409422 +licenseType: Free +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/License.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/License.md new file mode 100644 index 0000000..27c17ac --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/License.md @@ -0,0 +1,32 @@ +**Unity Companion Package License v1.0 ("_License_")** + +Copyright © 2017 Unity Technologies ApS ("**_Unity_**") + +Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("**_Software_**"), subject to the following terms and conditions: + +1. *Unity Companion Use Only*. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("**_Engine License_**"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted. + +1. *No Modification of Engine License*. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +1. *Ownership & Grant Back to You*. + + 3.1. You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + + 3.2. Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + + 3.3. You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +1. *Trademarks*. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("**_Trademarks_**"). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at [https://unity3d.com/public-relations/brand](https://unity3d.com/public-relations/brand). + +1. *Notices & Third-Party Rights*. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +1. *DISCLAIMER, LIMITATION OF LIABILITY*. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +1. *USE IS ACCEPTANCE and License Versions*. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +1. *Use in Compliance with Law and Termination*. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +1. *Severability*. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +1. *Governing Law and Venue*. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("**_Dispute_**"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/License.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/License.md.meta new file mode 100644 index 0000000..51c3968 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/License.md.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15bf9c691b85b41a39c18bee2f87e21b +timeCreated: 1504642560 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/README.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/README.md new file mode 100644 index 0000000..9d6fd49 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/README.md @@ -0,0 +1,14 @@ +Unity Analytics: Tracker +------------------------------ +Please visit the following URL to see documentation for the Analytics Event Tracker. + +https://docs.google.com/document/d/1glh4zEk0KQ_FhOgk95H-VOubcdzrVGyu5BYCmhFQCh0/edit# + +Please note, the documentation at this URL is considered a "living" document and subject to change. + + +Unity Analytics: Standard Events +------------------------------ +Track player behavior specific to your game + +Standard Events are a set of curated custom events focused on player experience. diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/README.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/README.md.meta new file mode 100644 index 0000000..f874e18 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/README.md.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 884f8f0e4025a420893d3a8d1d3063e1 +timeCreated: 1511217314 +licenseType: Pro +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests.meta new file mode 100644 index 0000000..8f14a0b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7a573b834e2608c4f982daf527bdb47a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/.tests.json b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/.tests.json new file mode 100644 index 0000000..327abb2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/.tests.json @@ -0,0 +1,3 @@ +{ + "createSeparatePackage": false +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor.meta new file mode 100644 index 0000000..64435dd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 931f3395378214a6c94333853bd0659b +folderAsset: yes +timeCreated: 1489179043 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents.meta new file mode 100644 index 0000000..733defc --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b6295675042094715ad9cc104210aeb7 +folderAsset: yes +timeCreated: 1489733951 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementStepTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementStepTests.cs new file mode 100644 index 0000000..f4c1af3 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementStepTests.cs @@ -0,0 +1,48 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void AchievementStep_StepIndexTest( + [Values(-1, 0, 1)] int stepIndex + ) + { + var achievementId = "unit_tester"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AchievementStep(stepIndex, achievementId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AchievementStep_AchievementIdTest( + [Values("unit_tester", "", null)] string achievementId + ) + { + var stepIndex = 0; + + if (string.IsNullOrEmpty(achievementId)) + { + Assert.Throws(() => AnalyticsEvent.AchievementStep(stepIndex, achievementId)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AchievementStep(stepIndex, achievementId)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void AchievementStep_CustomDataTest() + { + var stepIndex = 0; + var achievementId = "unit_tester"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AchievementStep(stepIndex, achievementId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementStepTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementStepTests.cs.meta new file mode 100644 index 0000000..9ca9a73 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementStepTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a592d27ead6884163839d4f8da3977ef +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementUnlockedTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementUnlockedTests.cs new file mode 100644 index 0000000..4cb4c4b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementUnlockedTests.cs @@ -0,0 +1,34 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void AchievementUnlocked_AchievementIdTest( + [Values("unit_tester", "", null)] string achievementId + ) + { + if (string.IsNullOrEmpty(achievementId)) + { + Assert.Throws(() => AnalyticsEvent.AchievementUnlocked(achievementId)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AchievementUnlocked(achievementId)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void AchievementUnlocked_CustomDataTest() + { + var achievementId = "unit_tester"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AchievementUnlocked(achievementId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementUnlockedTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementUnlockedTests.cs.meta new file mode 100644 index 0000000..3d3f40e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AchievementUnlockedTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d1114812d620342e1a4ad3eaae7e220c +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdCompleteTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdCompleteTests.cs new file mode 100644 index 0000000..5efd551 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdCompleteTests.cs @@ -0,0 +1,62 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void AdComplete_RewardedTest( + [Values(true, false)] bool rewarded + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdComplete(rewarded)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdComplete_NetworkStringTest( + [Values("unityads", "", null)] string network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdComplete(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdComplete_NetworkEnumTest( + [Values(AdvertisingNetwork.UnityAds, AdvertisingNetwork.None)] AdvertisingNetwork network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdComplete(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdComplete_PlacementIdTest( + [Values("rewardedVideo", "", null)] string placementId + ) + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdComplete(rewarded, network, placementId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdComplete_CustomDataTest() + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + var placementId = "rewardedVideo"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdComplete(rewarded, network, placementId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdCompleteTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdCompleteTests.cs.meta new file mode 100644 index 0000000..eb1155c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdCompleteTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9405b416c158444b19157040fd664533 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdOfferTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdOfferTests.cs new file mode 100644 index 0000000..c5dfedb --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdOfferTests.cs @@ -0,0 +1,62 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void AdOffer_RewardedTest( + [Values(true, false)] bool rewarded + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdOffer(rewarded)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdOffer_NetworkStringTest( + [Values("unityads", "", null)] string network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdOffer(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdOffer_NetworkEnumTest( + [Values(AdvertisingNetwork.UnityAds, AdvertisingNetwork.None)] AdvertisingNetwork network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdOffer(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdOffer_PlacementIdTest( + [Values("rewardedVideo", "", null)] string placementId + ) + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdOffer(rewarded, network, placementId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdOffer_CustomDataTest() + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + var placementId = "rewardedVideo"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdOffer(rewarded, network, placementId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdOfferTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdOfferTests.cs.meta new file mode 100644 index 0000000..f984598 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdOfferTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 96626a3e271e94e76a848c68828fbbac +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdSkipTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdSkipTests.cs new file mode 100644 index 0000000..8c554b6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdSkipTests.cs @@ -0,0 +1,62 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void AdSkip_RewardedTest( + [Values(true, false)] bool rewarded + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdSkip(rewarded)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdSkip_NetworkStringTest( + [Values("unityads", "", null)] string network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdSkip(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdSkip_NetworkEnumTest( + [Values(AdvertisingNetwork.UnityAds, AdvertisingNetwork.None)] AdvertisingNetwork network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdSkip(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdSkip_PlacementIdTest( + [Values("rewardedVideo", "", null)] string placementId + ) + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdSkip(rewarded, network, placementId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdSkip_CustomDataTest() + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + var placementId = "rewardedVideo"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdSkip(rewarded, network, placementId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdSkipTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdSkipTests.cs.meta new file mode 100644 index 0000000..186be88 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdSkipTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c09652e660b34484cb10d35ed2206df5 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdStartTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdStartTests.cs new file mode 100644 index 0000000..ae104d8 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdStartTests.cs @@ -0,0 +1,62 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void AdStart_RewardedTest( + [Values(true, false)] bool rewarded + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdStart(rewarded)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdStart_NetworkStringTest( + [Values("unityads", "", null)] string network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdStart(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdStart_NetworkEnumTest( + [Values(AdvertisingNetwork.UnityAds, AdvertisingNetwork.None)] AdvertisingNetwork network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdStart(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdStart_PlacementIdTest( + [Values("rewardedVideo", "", null)] string placementId + ) + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdStart(rewarded, network, placementId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void AdStart_CustomDataTest() + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + var placementId = "rewardedVideo"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.AdStart(rewarded, network, placementId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdStartTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdStartTests.cs.meta new file mode 100644 index 0000000..98f1587 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AdStartTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 589b3ddef1e4d44cea68e0144bd95434 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AnalyticsEventTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AnalyticsEventTests.cs new file mode 100644 index 0000000..e24c691 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AnalyticsEventTests.cs @@ -0,0 +1,115 @@ +#pragma warning disable 0612, 0618 + +using System; +using System.Collections.Generic; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + [TestFixture, Category("Standard Event SDK")] + public partial class AnalyticsEventTests + { + readonly Dictionary m_CustomData = new Dictionary(); + AnalyticsResult m_Result = AnalyticsResult.Ok; + + [SetUp] + public void TestCaseSetUp() + { + m_Result = AnalyticsResult.Ok; + + m_CustomData.Clear(); + m_CustomData.Add("custom_param", "test"); + } + + [Test] + public void SdkVersion_FormatTest() + { + int major, minor, patch; + var versions = AnalyticsEvent.sdkVersion.Split('.'); + + Assert.AreEqual(3, versions.Length, "Number of integer fields in version format"); + + Assert.IsTrue(int.TryParse(versions[0], out major), "Major version is an integer"); + Assert.IsTrue(int.TryParse(versions[1], out minor), "Minor version is an integer"); + Assert.IsTrue(int.TryParse(versions[2], out patch), "Patch version is an integer"); + + Assert.LessOrEqual(0, major, "Major version"); + Assert.LessOrEqual(0, minor, "Minor version"); + Assert.LessOrEqual(0, patch, "Patch version"); + } + + [Test] + public void Custom_EventNameTest( + [Values("custom_event", "", null)] string eventName + ) + { + if (string.IsNullOrEmpty(eventName)) + { + Assert.Throws(() => m_Result = AnalyticsEvent.Custom(eventName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void Custom_EventDataTest() + { + var eventName = "custom_event"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void Custom_RegisterUnregisterUnnamedTest() + { + Action> myAction = + eventData => eventData.Add("my_key", "my_value"); + + AnalyticsEvent.Register(myAction); // Registering for a named AnalyticsEvent + + var eventName = "custom_event"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.Custom(eventName, m_CustomData)); + + EvaluateRegisteredCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + AnalyticsEvent.Unregister(myAction); + } + + /// Normal. Unregistered. + public static void EvaluateCustomData(IDictionary customData) + { + Assert.AreEqual(1, customData.Count, "Custom param count"); + } + + /// For Registered case. + public static void EvaluateRegisteredCustomData(IDictionary customData) + { + Assert.AreEqual(2, customData.Count, "Custom param count"); + } + + public static void EvaluateAnalyticsResult(AnalyticsResult result) + { + switch (result) + { + case AnalyticsResult.Ok: + break; + case AnalyticsResult.InvalidData: + Assert.Fail("Event data is invalid."); + break; + case AnalyticsResult.TooManyItems: + Assert.Fail("Event data consists of too many parameters."); + break; + default: + Debug.LogFormat("A result of {0} is passable for the purpose of this test.", result); + break; + } + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AnalyticsEventTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AnalyticsEventTests.cs.meta new file mode 100644 index 0000000..bb75d13 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/AnalyticsEventTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b5366b8adc0f44b3c9cb261a3f752d7a +timeCreated: 1492730660 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ChatMessageSentTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ChatMessageSentTests.cs new file mode 100644 index 0000000..5649655 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ChatMessageSentTests.cs @@ -0,0 +1,22 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void ChatMessageSent_NoArgsTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ChatMessageSent()); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ChatMessageSent_CustomDataTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ChatMessageSent(m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ChatMessageSentTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ChatMessageSentTests.cs.meta new file mode 100644 index 0000000..16cb7f8 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ChatMessageSentTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7b186a0d29a784d81809e8a5471d155e +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneSkipTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneSkipTests.cs new file mode 100644 index 0000000..4b3cfd3 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneSkipTests.cs @@ -0,0 +1,34 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void CutsceneSkip_CutsceneNameTest( + [Values("test_cutscene", "", null)] string name + ) + { + if (string.IsNullOrEmpty(name)) + { + Assert.Throws(() => AnalyticsEvent.CutsceneSkip(name)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.CutsceneSkip(name)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void CutsceneSkip_CustomDataTest() + { + var name = "test_cutscene"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.CutsceneSkip(name, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneSkipTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneSkipTests.cs.meta new file mode 100644 index 0000000..3722ed8 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneSkipTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f03b3e03b69e74ef9bd0f20377217a73 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneStartTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneStartTests.cs new file mode 100644 index 0000000..508cc79 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneStartTests.cs @@ -0,0 +1,34 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void CutsceneStart_CutsceneNameTest( + [Values("test_cutscene", "", null)] string name + ) + { + if (string.IsNullOrEmpty(name)) + { + Assert.Throws(() => AnalyticsEvent.CutsceneStart(name)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.CutsceneStart(name)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void CutsceneStart_CustomDataTest() + { + var name = "test_cutscene"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.CutsceneStart(name, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneStartTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneStartTests.cs.meta new file mode 100644 index 0000000..47f3e96 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/CutsceneStartTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: edf97aac6cc5a437ebf600a06a2e5ac7 +timeCreated: 1492896816 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/FirstInteractionTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/FirstInteractionTests.cs new file mode 100644 index 0000000..a5cc844 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/FirstInteractionTests.cs @@ -0,0 +1,33 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void FirstInteraction_NoArgsTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.FirstInteraction()); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void FirstInteraction_ActionIdTest( + [Values("test_user_action", "", null)] string actionId + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.FirstInteraction(actionId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void FirstInteraction_CustomDataTest() + { + var actionId = "test_user_action"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.FirstInteraction(actionId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/FirstInteractionTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/FirstInteractionTests.cs.meta new file mode 100644 index 0000000..d913d10 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/FirstInteractionTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 78759e25237a7430587982cd92a2a0d8 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameOverTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameOverTests.cs new file mode 100644 index 0000000..8e88f44 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameOverTests.cs @@ -0,0 +1,58 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void GameOver_NoArgsTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameOver()); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void GameOver_LevelIndexTest( + [Values(-1, 0, 1)] int levelIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameOver(levelIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void GameOver_LevelNameTest( + [Values("test_level", "", null)] string levelName + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameOver(levelName)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void GameOver_LevelIndex_LevelNameTest( + [Values(0)] int levelIndex, + [Values("test_level", "", null)] string levelName + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameOver(levelIndex, levelName)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void GameOver_CustomDataTest() + { + var levelIndex = 0; + var levelName = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameOver(levelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameOver(levelIndex, levelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameOverTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameOverTests.cs.meta new file mode 100644 index 0000000..60aa2a1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameOverTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a30e59ca9f68d46db88323ac18f49e31 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameStartTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameStartTests.cs new file mode 100644 index 0000000..18749c7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameStartTests.cs @@ -0,0 +1,22 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void GameStart_NoArgsTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameStart()); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void GameStart_CustomDataTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.GameStart(m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameStartTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameStartTests.cs.meta new file mode 100644 index 0000000..e17c1ba --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/GameStartTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2b2be9ee9f41a4b2db6b502697ba31b1 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/IAPTransactionTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/IAPTransactionTests.cs new file mode 100644 index 0000000..439d4e7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/IAPTransactionTests.cs @@ -0,0 +1,111 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void IAPTransaction_ContextTest( + [Values("test", "", null)] string context) + { + var price = 1f; + var itemId = "test_item"; + + if (string.IsNullOrEmpty(context)) + { + Assert.Throws(() => AnalyticsEvent.IAPTransaction(context, price, itemId)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.IAPTransaction(context, price, itemId)); + } + + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void IAPTransaction_PriceTest( + [Values(-1f, 0f, 1f)] float price) + { + var context = "test"; + var itemId = "test_item"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.IAPTransaction(context, price, itemId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void IAPTransaction_ItemIdTest( + [Values("test_item", "", null)] string itemId) + { + var context = "test"; + var price = 1f; + + if (string.IsNullOrEmpty(itemId)) + { + Assert.Throws(() => AnalyticsEvent.IAPTransaction(context, price, itemId)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.IAPTransaction(context, price, itemId)); + } + + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void IAPTransaction_ItemTypeTest( + [Values("test_type", "", null)] string itemType) + { + var context = "test"; + var price = 1f; + var itemId = "test_item"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.IAPTransaction(context, price, itemId, itemType)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void IAPTransaction_LevelTest( + [Values("test_level", "", null)] string level) + { + var context = "test"; + var price = 1f; + var itemId = "test_item"; + var itemType = "test_type"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.IAPTransaction(context, price, itemId, itemType, level)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void IAPTransaction_TransactionIdTest( + [Values("test_id", "", null)] string transactionId) + { + var context = "test"; + var price = 1f; + var itemId = "test_item"; + var itemType = "test_type"; + var level = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.IAPTransaction(context, price, itemId, itemType, level, transactionId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void IAPTransaction_CustomDataTest() + { + var context = "test"; + var price = 1f; + var itemId = "test_item"; + var itemType = "test_type"; + var level = "test_level"; + var transactionId = "test_id"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.IAPTransaction(context, price, itemId, itemType, level, transactionId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/IAPTransactionTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/IAPTransactionTests.cs.meta new file mode 100644 index 0000000..a9cb068 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/IAPTransactionTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8b4a8234f532f4b34aba0ab70400d90d +timeCreated: 1497539738 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemAcquiredTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemAcquiredTests.cs new file mode 100644 index 0000000..ec2b668 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemAcquiredTests.cs @@ -0,0 +1,176 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void ItemAcquired_CurrencyTypeTest( + [Values(AcquisitionType.Premium, AcquisitionType.Soft)] AcquisitionType currencyType) + { + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemAcquired_ContextTest( + [Values("test", "", null)] string context) + { + var currencyType = AcquisitionType.Soft; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + + if (string.IsNullOrEmpty(context)) + { + Assert.Throws(() => AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId)); + Assert.Throws(() => AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void ItemAcquired_AmountTest( + [Values(-1f, 0f, 1f)] float amount) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var itemId = "test_item"; + var balance = 1f; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemAcquired_ItemIdTest( + [Values("test_item", "", null)] string itemId) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var balance = 1f; + + if (string.IsNullOrEmpty(itemId)) + { + Assert.Throws(() => AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId)); + Assert.Throws(() => AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void ItemAcquired_BalanceTest( + [Values(-1f, 0, 1f)] float balance) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemAcquired_ItemTypeTest( + [Values("test_type", "", null)] string itemType) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, itemType)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance, itemType)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemAcquired_LevelTest( + [Values("test_level", "", null)] string level) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + var itemType = "test_type"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, itemType, level)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance, itemType, level)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemAcquired_TransactionIdTest( + [Values("test_id", "", null)] string transactionId) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + var itemType = "test_type"; + var level = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, itemType, level, transactionId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance, itemType, level, transactionId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemAcquired_CustomDataTest() + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + var itemType = "test_type"; + var level = "test_level"; + var transactionId = "test_id"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, itemType, level, transactionId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemAcquired(currencyType, context, amount, itemId, balance, itemType, level, transactionId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemAcquiredTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemAcquiredTests.cs.meta new file mode 100644 index 0000000..7283407 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemAcquiredTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5e7a49a6952af4d4ab2c3b038be68141 +timeCreated: 1497539770 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemSpentTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemSpentTests.cs new file mode 100644 index 0000000..52ee942 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemSpentTests.cs @@ -0,0 +1,176 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void ItemSpent_CurrencyTypeTest( + [Values(AcquisitionType.Premium, AcquisitionType.Soft)] AcquisitionType currencyType) + { + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemSpent_ContextTest( + [Values("test", "", null)] string context) + { + var currencyType = AcquisitionType.Soft; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + + if (string.IsNullOrEmpty(context)) + { + Assert.Throws(() => AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId)); + Assert.Throws(() => AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void ItemSpent_AmountTest( + [Values(-1f, 0f, 1f)] float amount) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var itemId = "test_item"; + var balance = 1f; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemSpent_ItemIdTest( + [Values("test_item", "", null)] string itemId) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var balance = 1f; + + if (string.IsNullOrEmpty(itemId)) + { + Assert.Throws(() => AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId)); + Assert.Throws(() => AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void ItemSpent_BalanceTest( + [Values(-1f, 0, 1f)] float balance) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemSpent_ItemTypeTest( + [Values("test_type", "", null)] string itemType) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, itemType)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance, itemType)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemSpent_LevelTest( + [Values("test_level", "", null)] string level) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + var itemType = "test_type"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, itemType, level)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance, itemType, level)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemSpent_TransactionIdTest( + [Values("test_id", "", null)] string transactionId) + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + var itemType = "test_type"; + var level = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, itemType, level, transactionId)); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance, itemType, level, transactionId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ItemSpent_CustomDataTest() + { + var currencyType = AcquisitionType.Soft; + var context = "test"; + var amount = 1f; + var itemId = "test_item"; + var balance = 1f; + var itemType = "test_type"; + var level = "test_level"; + var transactionId = "test_id"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, itemType, level, transactionId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ItemSpent(currencyType, context, amount, itemId, balance, itemType, level, transactionId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemSpentTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemSpentTests.cs.meta new file mode 100644 index 0000000..ab3b390 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ItemSpentTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 00ed25e3298ac440eb327c706a964e3a +timeCreated: 1497539780 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelCompleteTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelCompleteTests.cs new file mode 100644 index 0000000..274e37c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelCompleteTests.cs @@ -0,0 +1,58 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void LevelComplete_LevelIndexTest( + [Values(-1, 0, 1)] int levelIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelComplete(levelIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void LevelComplete_LevelNameTest( + [Values("test_level", "", null)] string levelName + ) + { + if (string.IsNullOrEmpty(levelName)) + { + Assert.Throws(() => AnalyticsEvent.LevelComplete(levelName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelComplete(levelName)); + EvaluateAnalyticsResult(m_Result); + } + } + + // [Test] + // public void LevelComplete_LevelIndex_LevelNameTest ( + // [Values(0)] int levelIndex, + // [Values("test_level", "", null)] string levelName + // ) + // { + // Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelComplete(levelIndex, levelName)); + // EvaluateAnalyticsResult(m_Result); + // } + + [Test] + public void LevelComplete_CustomDataTest() + { + var levelIndex = 0; + var levelName = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelComplete(levelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelComplete(levelIndex, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelCompleteTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelCompleteTests.cs.meta new file mode 100644 index 0000000..70202cf --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelCompleteTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fa4ff09b6aaaa4df29a884efa38bce56 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelFailTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelFailTests.cs new file mode 100644 index 0000000..fece2ea --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelFailTests.cs @@ -0,0 +1,58 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void LevelFail_LevelIndexTest( + [Values(-1, 0, 1)] int levelIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelFail(levelIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void LevelFail_LevelNameTest( + [Values("test_level", "", null)] string levelName + ) + { + if (string.IsNullOrEmpty(levelName)) + { + Assert.Throws(() => AnalyticsEvent.LevelFail(levelName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelFail(levelName)); + EvaluateAnalyticsResult(m_Result); + } + } + + // [Test] + // public void LevelFail_LevelIndex_LevelNameTest ( + // [Values(-1, 0, 1)] int levelIndex, + // [Values("test_level", "", null)] string levelName + // ) + // { + // Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelFail(levelIndex, levelName)); + // EvaluateAnalyticsResult(m_Result); + // } + + [Test] + public void LevelFail_CustomDataTest() + { + var levelIndex = 0; + var levelName = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelFail(levelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelFail(levelIndex, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelFailTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelFailTests.cs.meta new file mode 100644 index 0000000..05b52fd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelFailTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 036d03e26977243fa9a2d7af48e51e08 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelQuitTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelQuitTests.cs new file mode 100644 index 0000000..e4859ab --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelQuitTests.cs @@ -0,0 +1,58 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void LevelQuit_LevelIndexTest( + [Values(-1, 0, 1)] int levelIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelQuit(levelIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void LevelQuit_LevelNameTest( + [Values("test_level", "", null)] string levelName + ) + { + if (string.IsNullOrEmpty(levelName)) + { + Assert.Throws(() => AnalyticsEvent.LevelQuit(levelName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelQuit(levelName)); + EvaluateAnalyticsResult(m_Result); + } + } + + // [Test] + // public void LevelQuit_LevelIndex_LevelNameTest ( + // [Values(-1, 0, 1)] int levelIndex, + // [Values("test_level", "", null)] string levelName + // ) + // { + // Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelQuit(levelIndex, levelName)); + // EvaluateAnalyticsResult(m_Result); + // } + + [Test] + public void LevelQuit_CustomDataTest() + { + var levelIndex = 0; + var levelName = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelQuit(levelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelQuit(levelIndex, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelQuitTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelQuitTests.cs.meta new file mode 100644 index 0000000..0b0c0f7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelQuitTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 617202f4e2bed4ef8acccfd6c1ecd6fa +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelSkipTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelSkipTests.cs new file mode 100644 index 0000000..fcbe9eb --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelSkipTests.cs @@ -0,0 +1,58 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void LevelSkip_LevelIndexTest( + [Values(-1, 0, 1)] int levelIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelSkip(levelIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void LevelSkip_LevelNameTest( + [Values("test_level", "", null)] string levelName + ) + { + if (string.IsNullOrEmpty(levelName)) + { + Assert.Throws(() => AnalyticsEvent.LevelSkip(levelName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelSkip(levelName)); + EvaluateAnalyticsResult(m_Result); + } + } + + // [Test] + // public void LevelSkip_LevelIndex_LevelNameTest ( + // [Values(-1, 0, 1)] int levelIndex, + // [Values("test_level", "", null)] string levelName + // ) + // { + // Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelSkip(levelIndex, levelName)); + // EvaluateAnalyticsResult(m_Result); + // } + + [Test] + public void LevelSkip_CustomDataTest() + { + var levelIndex = 0; + var levelName = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelSkip(levelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelSkip(levelIndex, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelSkipTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelSkipTests.cs.meta new file mode 100644 index 0000000..5d5b103 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelSkipTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 93f7ca1a9c5c945a89e884f9611c70f0 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelStartTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelStartTests.cs new file mode 100644 index 0000000..ff4ef43 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelStartTests.cs @@ -0,0 +1,58 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void LevelStart_LevelIndexTest( + [Values(-1, 0, 1)] int levelIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelStart(levelIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void LevelStart_LevelNameTest( + [Values("test_level", "", null)] string levelName + ) + { + if (string.IsNullOrEmpty(levelName)) + { + Assert.Throws(() => AnalyticsEvent.LevelStart(levelName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelStart(levelName)); + EvaluateAnalyticsResult(m_Result); + } + } + + // [Test] + // public void LevelStart_LevelIndex_LevelNameTest ( + // [Values(0)] int levelIndex, + // [Values("test_level", "", null)] string levelName + // ) + // { + // Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelStart(levelIndex, levelName)); + // EvaluateAnalyticsResult(m_Result); + // } + + [Test] + public void LevelStart_CustomDataTest() + { + var levelIndex = 0; + var levelName = "test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelStart(levelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelStart(levelIndex, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelStartTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelStartTests.cs.meta new file mode 100644 index 0000000..121018d --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelStartTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 876d47a520ae34f81a97792e1afed14b +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelUpTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelUpTests.cs new file mode 100644 index 0000000..96578a7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelUpTests.cs @@ -0,0 +1,58 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void LevelUp_LevelIndexTest( + [Values(0, 1, 2)] int newLevelIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelUp(newLevelIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void LevelUp_LevelNameTest( + [Values("new_test_level", "", null)] string newLevelName + ) + { + if (string.IsNullOrEmpty(newLevelName)) + { + Assert.Throws(() => AnalyticsEvent.LevelUp(newLevelName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelUp(newLevelName)); + EvaluateAnalyticsResult(m_Result); + } + } + + // [Test] + // public void LevelUp_LevelIndex_LevelNameTest ( + // [Values(1)] int newLevelIndex, + // [Values("new_test_level", "", null)] string newLevelName + // ) + // { + // Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelUp(newLevelIndex, newLevelName)); + // EvaluateAnalyticsResult(m_Result); + // } + + [Test] + public void LevelUp_CustomDataTest() + { + var newLevelIndex = 1; + var newLevelName = "new_test_level"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelUp(newLevelName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.LevelUp(newLevelIndex, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelUpTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelUpTests.cs.meta new file mode 100644 index 0000000..1d650da --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/LevelUpTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b0bb2afc5cd494e6f9b44455a0fc22f8 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PostAdActionTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PostAdActionTests.cs new file mode 100644 index 0000000..80ffa6d --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PostAdActionTests.cs @@ -0,0 +1,62 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void PostAdAction_RewardedTest( + [Values(true, false)] bool rewarded + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PostAdAction(rewarded)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void PostAdAction_NetworkStringTest( + [Values("unityads", "", null)] string network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PostAdAction(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void PostAdAction_NetworkEnumTest( + [Values(AdvertisingNetwork.UnityAds, AdvertisingNetwork.None)] AdvertisingNetwork network + ) + { + var rewarded = true; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PostAdAction(rewarded, network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void PostAdAction_PlacementIdTest( + [Values("rewardedVideo", "", null)] string placementId + ) + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PostAdAction(rewarded, network, placementId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void PostAdAction_CustomDataTest() + { + var rewarded = true; + var network = AdvertisingNetwork.UnityAds; + var placementId = "rewardedVideo"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PostAdAction(rewarded, network, placementId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PostAdActionTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PostAdActionTests.cs.meta new file mode 100644 index 0000000..405d011 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PostAdActionTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 293182c4d29604c05b6724ae00fd121a +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationClickTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationClickTests.cs new file mode 100644 index 0000000..5923ced --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationClickTests.cs @@ -0,0 +1,34 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void PushNotificationClick_MessageIdTest( + [Values("test_message", "", null)] string messageId + ) + { + if (string.IsNullOrEmpty(messageId)) + { + Assert.Throws(() => AnalyticsEvent.PushNotificationClick(messageId)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PushNotificationClick(messageId)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void PushNotificationClick_CustomDataTest() + { + var messageId = "test_message"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PushNotificationClick(messageId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationClickTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationClickTests.cs.meta new file mode 100644 index 0000000..1ee5e1f --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationClickTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 240551e3142f04b0ca801ce8eb645ba2 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationEnableTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationEnableTests.cs new file mode 100644 index 0000000..2e842bd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationEnableTests.cs @@ -0,0 +1,22 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void PushNotificationEnable_NoArgsTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PushNotificationEnable()); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void PushNotificationEnable_CustomDataTest() + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.PushNotificationEnable(m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationEnableTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationEnableTests.cs.meta new file mode 100644 index 0000000..285653d --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/PushNotificationEnableTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a10564aae782c458cbf1de024f4870f7 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ScreenVisitTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ScreenVisitTests.cs new file mode 100644 index 0000000..97a60fc --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ScreenVisitTests.cs @@ -0,0 +1,43 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void ScreenVisit_ScreenNameStringTest( + [Values("test_screen", "", null)] string screenName + ) + { + if (string.IsNullOrEmpty(screenName)) + { + Assert.Throws(() => AnalyticsEvent.ScreenVisit(screenName)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ScreenVisit(screenName)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void ScreenVisit_ScreenNameEnumTest( + [Values(ScreenName.CrossPromo, ScreenName.IAPPromo, ScreenName.None)] ScreenName screenName + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ScreenVisit(screenName)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void ScreenVisit_CustomDataTest() + { + var screenName = ScreenName.MainMenu; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.ScreenVisit(screenName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ScreenVisitTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ScreenVisitTests.cs.meta new file mode 100644 index 0000000..6327d18 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/ScreenVisitTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 768d77435df35443bad74aedc993c0cf +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareAcceptTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareAcceptTests.cs new file mode 100644 index 0000000..7cb38a1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareAcceptTests.cs @@ -0,0 +1,110 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void SocialShareAccept_ShareTypeStringTest( + [Values("test_share", "", null)] string shareType + ) + { + var socialNetwork = SocialNetwork.Facebook; + + if (string.IsNullOrEmpty(shareType)) + { + Assert.Throws(() => AnalyticsEvent.SocialShare(shareType, socialNetwork)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShareAccept(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void SocialShareAccept_ShareTypeEnumTest( + [Values(ShareType.TextOnly, ShareType.Image, ShareType.None)] ShareType shareType + ) + { + var socialNetwork = SocialNetwork.Twitter; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShareAccept(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShareAccept_SocialNetworkStringTest( + [Values("test_network", "", null)] string socialNetwork + ) + { + var shareType = ShareType.Image; + + if (string.IsNullOrEmpty(socialNetwork)) + { + Assert.Throws(() => AnalyticsEvent.SocialShare(shareType, socialNetwork)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShareAccept(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void SocialShareAccept_SocialNetworkEnumTest( + [Values(SocialNetwork.GooglePlus, SocialNetwork.OK_ru, SocialNetwork.None)] SocialNetwork socialNetwork + ) + { + var shareType = ShareType.Video; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShareAccept(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShareAccept_SenderIdTest( + [Values("test_sender", "", null)] string senderId + ) + { + var shareType = ShareType.TextOnly; + var socialNetwork = SocialNetwork.Twitter; + + Assert.DoesNotThrow( + () => m_Result = AnalyticsEvent.SocialShareAccept(shareType, socialNetwork, senderId) + ); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShareAccept_RecipientIdTest( + [Values("test_recipient", "", null)] string recipientId + ) + { + var shareType = ShareType.TextOnly; + var socialNetwork = SocialNetwork.Twitter; + var senderId = "test_sender"; + + Assert.DoesNotThrow( + () => m_Result = AnalyticsEvent.SocialShareAccept(shareType, socialNetwork, senderId, recipientId) + ); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShareAccept_CustomDataTest() + { + var shareType = ShareType.TextOnly; + var socialNetwork = SocialNetwork.Twitter; + var senderId = "test_sender"; + var recipientId = "test_recipient"; + + Assert.DoesNotThrow( + () => m_Result = AnalyticsEvent.SocialShareAccept(shareType, socialNetwork, senderId, recipientId, m_CustomData) + ); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareAcceptTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareAcceptTests.cs.meta new file mode 100644 index 0000000..e491cf2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareAcceptTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 138961c4434d141a987d96df1f8d7342 +timeCreated: 1492896446 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareTests.cs new file mode 100644 index 0000000..0809d04 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareTests.cs @@ -0,0 +1,110 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void SocialShare_ShareTypeStringTest( + [Values("test_share", "", null)] string shareType + ) + { + var socialNetwork = SocialNetwork.Facebook; + + if (string.IsNullOrEmpty(shareType)) + { + Assert.Throws(() => AnalyticsEvent.SocialShare(shareType, socialNetwork)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShare(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void SocialShare_ShareTypeEnumTest( + [Values(ShareType.TextOnly, ShareType.Image, ShareType.None)] ShareType shareType + ) + { + var socialNetwork = SocialNetwork.Twitter; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShare(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShare_SocialNetworkStringTest( + [Values("test_network", "", null)] string socialNetwork + ) + { + var shareType = ShareType.Image; + + if (string.IsNullOrEmpty(socialNetwork)) + { + Assert.Throws(() => AnalyticsEvent.SocialShare(shareType, socialNetwork)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShare(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void SocialShare_SocialNetworkEnumTest( + [Values(SocialNetwork.GooglePlus, SocialNetwork.OK_ru, SocialNetwork.None)] SocialNetwork socialNetwork + ) + { + var shareType = ShareType.Video; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.SocialShare(shareType, socialNetwork)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShare_SenderIdTest( + [Values("test_sender", "", null)] string senderId + ) + { + var shareType = ShareType.TextOnly; + var socialNetwork = SocialNetwork.Twitter; + + Assert.DoesNotThrow( + () => m_Result = AnalyticsEvent.SocialShare(shareType, socialNetwork, senderId) + ); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShare_RecipientIdTest( + [Values("test_recipient", "", null)] string recipientId + ) + { + var shareType = ShareType.TextOnly; + var socialNetwork = SocialNetwork.Twitter; + var senderId = "test_sender"; + + Assert.DoesNotThrow( + () => m_Result = AnalyticsEvent.SocialShare(shareType, socialNetwork, senderId, recipientId) + ); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void SocialShare_CustomDataTest() + { + var shareType = ShareType.TextOnly; + var socialNetwork = SocialNetwork.Twitter; + var senderId = "test_sender"; + var recipientId = "test_recipient"; + + Assert.DoesNotThrow( + () => m_Result = AnalyticsEvent.SocialShare(shareType, socialNetwork, senderId, recipientId, m_CustomData) + ); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareTests.cs.meta new file mode 100644 index 0000000..bc9978d --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/SocialShareTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 811f7f1f5920641c0a9233503492c9ba +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreItemClickTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreItemClickTests.cs new file mode 100644 index 0000000..367a459 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreItemClickTests.cs @@ -0,0 +1,75 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void StoreItemClick_StoreTypeTest( + [Values(StoreType.Premium, StoreType.Soft)] StoreType storeType + ) + { + var itemId = "test_item"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.StoreItemClick(storeType, itemId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void StoreItemClick_ItemIdTest( + [Values("test_item", "", null)] string itemId + ) + { + var storeType = StoreType.Soft; + + if (string.IsNullOrEmpty(itemId)) + { + Assert.Throws(() => AnalyticsEvent.StoreItemClick(storeType, itemId)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.StoreItemClick(storeType, itemId)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void StoreItemClick_ItemId_ItemNameTest( + [Values("test_item_id", "", null)] string itemId, + [Values("Test Item Name", "", null)] string itemName + ) + { + var storeType = StoreType.Soft; + + if (string.IsNullOrEmpty(itemId) && string.IsNullOrEmpty(itemName)) + { + Assert.Throws(() => AnalyticsEvent.StoreItemClick(storeType, itemId)); + } + else + { + if (string.IsNullOrEmpty(itemId)) + { + Assert.Throws(() => AnalyticsEvent.StoreItemClick(storeType, itemId)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.StoreItemClick(storeType, itemId, itemName)); + EvaluateAnalyticsResult(m_Result); + } + } + } + + [Test] + public void StoreItemClick_CustomDataTest() + { + var storeType = StoreType.Soft; + var itemId = "test_item"; + var itemName = "Test Item"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.StoreItemClick(storeType, itemId, itemName, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreItemClickTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreItemClickTests.cs.meta new file mode 100644 index 0000000..182b9d1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreItemClickTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c786248494be6489bbfa006bdf59c773 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreOpenedTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreOpenedTests.cs new file mode 100644 index 0000000..4891887 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreOpenedTests.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void StoreOpened_StoreTypeTest( + [Values(StoreType.Premium, StoreType.Soft)] StoreType storeType + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.StoreOpened(storeType)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void StoreOpened_CustomDataTest() + { + var storeType = StoreType.Soft; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.StoreOpened(storeType, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreOpenedTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreOpenedTests.cs.meta new file mode 100644 index 0000000..65bf472 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/StoreOpenedTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4c7193663918411c8f78e3cf844cb9e +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialCompleteTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialCompleteTests.cs new file mode 100644 index 0000000..3e166af --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialCompleteTests.cs @@ -0,0 +1,26 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void TutorialComplete_TutorialIdTest( + [Values("test_tutorial", "", null)] string tutorialId + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialComplete(tutorialId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void TutorialComplete_CustomDataTest() + { + var tutorialId = "test_tutorial"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialComplete(tutorialId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialCompleteTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialCompleteTests.cs.meta new file mode 100644 index 0000000..b2067fe --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialCompleteTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b025f6f8a47be46418bcb0ed1050cfb4 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialSkipTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialSkipTests.cs new file mode 100644 index 0000000..9b413ed --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialSkipTests.cs @@ -0,0 +1,26 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void TutorialSkip_TutorialIdTest( + [Values("test_tutorial", "", null)] string tutorialId + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialSkip(tutorialId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void TutorialSkip_CustomDataTest() + { + var tutorialId = "test_tutorial"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialSkip(tutorialId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialSkipTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialSkipTests.cs.meta new file mode 100644 index 0000000..b700e0e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialSkipTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3ab6e6972ecb54e2cbd505692415a7ba +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStartTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStartTests.cs new file mode 100644 index 0000000..425f277 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStartTests.cs @@ -0,0 +1,26 @@ +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void TutorialStart_TutorialIdTest( + [Values("test_tutorial", "", null)] string tutorialId + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialStart(tutorialId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void TutorialStart_CustomDataTest() + { + var tutorialId = "test_tutorial"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialStart(tutorialId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStartTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStartTests.cs.meta new file mode 100644 index 0000000..bfa7a29 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStartTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2622838afa3284cc882c48ceea4c8220 +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStepTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStepTests.cs new file mode 100644 index 0000000..524d819 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStepTests.cs @@ -0,0 +1,39 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void TutorialStep_StepIndexTest( + [Values(-1, 0, 1)] int stepIndex + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialStep(stepIndex)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void TutorialStep_TutorialIdTest( + [Values("test_tutorial", "", null)] string tutorialId + ) + { + var stepIndex = 0; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialStep(stepIndex, tutorialId)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void TutorialStep_CustomDataTest() + { + var stepIndex = 0; + var tutorialId = "test_tutorial"; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.TutorialStep(stepIndex, tutorialId, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStepTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStepTests.cs.meta new file mode 100644 index 0000000..54ebcfa --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/TutorialStepTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a571de1bea3cb4c9784493c6f1b0b76c +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/Unity.Analytics.StandardEvents.EditorTests.asmdef b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/Unity.Analytics.StandardEvents.EditorTests.asmdef new file mode 100644 index 0000000..eeceedd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/Unity.Analytics.StandardEvents.EditorTests.asmdef @@ -0,0 +1,12 @@ +{ + "name": "Unity.Analytics.StandardEvents.EditorTests", + "references": [], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false +} \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/Unity.Analytics.StandardEvents.EditorTests.asmdef.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/Unity.Analytics.StandardEvents.EditorTests.asmdef.meta new file mode 100644 index 0000000..074fd47 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/Unity.Analytics.StandardEvents.EditorTests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: adee0c1377ef8b2489060e152dd0d119 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/UserSignupTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/UserSignupTests.cs new file mode 100644 index 0000000..56920a6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/UserSignupTests.cs @@ -0,0 +1,43 @@ +using System; +using NUnit.Framework; + +namespace UnityEngine.Analytics.Tests +{ + public partial class AnalyticsEventTests + { + [Test] + public void UserSignup_AuthorizationNetworkStringTest( + [Values("test_network", "", null)] string network + ) + { + if (string.IsNullOrEmpty(network)) + { + Assert.Throws(() => AnalyticsEvent.UserSignup(network)); + } + else + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.UserSignup(network)); + EvaluateAnalyticsResult(m_Result); + } + } + + [Test] + public void UserSignup_AuthorizationNetworkEnumTest( + [Values(AuthorizationNetwork.Facebook, AuthorizationNetwork.GameCenter, AuthorizationNetwork.None)] AuthorizationNetwork network + ) + { + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.UserSignup(network)); + EvaluateAnalyticsResult(m_Result); + } + + [Test] + public void UserSignup_CustomDataTest() + { + var network = AuthorizationNetwork.Internal; + + Assert.DoesNotThrow(() => m_Result = AnalyticsEvent.UserSignup(network, m_CustomData)); + EvaluateCustomData(m_CustomData); + EvaluateAnalyticsResult(m_Result); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/UserSignupTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/UserSignupTests.cs.meta new file mode 100644 index 0000000..3441ed8 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Editor/Unity.Analytics.StandardEvents/UserSignupTests.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8b0f0c8689876421c90e7b60f096325a +timeCreated: 1489734081 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime.meta new file mode 100644 index 0000000..a17b3d1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4f5362359d4548b44a34a45f19efb4bf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy.meta new file mode 100644 index 0000000..279b827 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f2233ba26b028cc4b9e58681e7a22dac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/JsonSerialization.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/JsonSerialization.cs new file mode 100644 index 0000000..921976a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/JsonSerialization.cs @@ -0,0 +1,24 @@ +using System; +using NUnit.Framework; +using UnityEngine; +using UnityEngine.Analytics; + +public class JsonSerialization +{ + // This test was create to verifiy JsonUtility could properly deserialize the nested + // structs used for opt-out status. That process is now handled with remote config so + // now we just verify that the expected response from the token API can be deserialized. + + const string kTokenJson = "{" + + "\"url\": \"https://analytics.cloud.unity3d.com/optout?token=24a96770b5c4420a4f930dbb4b72fbb83erfg3edf3ert4r1/\"," + + "\"token\": \"24a96770b5c4420a4f930dbb4b72fbb83erfg3edf3ert4r1\"" + + "}"; + + [Test] + public void TestTokenStruct_JsonUtility() + { + var tokenData = JsonUtility.FromJson(kTokenJson); + Assert.AreEqual("https://analytics.cloud.unity3d.com/optout?token=24a96770b5c4420a4f930dbb4b72fbb83erfg3edf3ert4r1/", tokenData.url); + Assert.AreEqual("24a96770b5c4420a4f930dbb4b72fbb83erfg3edf3ert4r1", tokenData.token); + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/JsonSerialization.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/JsonSerialization.cs.meta new file mode 100644 index 0000000..feafedc --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/JsonSerialization.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0fe4c527c3aa3eb42912a1caafbbc6a0 +timeCreated: 1526476500 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/Unity.Analytics.DataPrivacy.Tests.asmdef b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/Unity.Analytics.DataPrivacy.Tests.asmdef new file mode 100644 index 0000000..54d317a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/Unity.Analytics.DataPrivacy.Tests.asmdef @@ -0,0 +1,12 @@ +{ + "name": "Unity.Analytics.DataPrivacy.Tests", + "references": [ + "Unity.Analytics.DataPrivacy" + ], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false +} \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/Unity.Analytics.DataPrivacy.Tests.asmdef.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/Unity.Analytics.DataPrivacy.Tests.asmdef.meta new file mode 100644 index 0000000..5d4c3c4 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Tests/Runtime/DataPrivacy/Unity.Analytics.DataPrivacy.Tests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 015812e983113a84b95773e55f3cec13 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll new file mode 100644 index 0000000..28c5082 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.mdb b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.mdb new file mode 100644 index 0000000..e598a74 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.mdb differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.mdb.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.mdb.meta new file mode 100644 index 0000000..3acc607 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.mdb.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fec197bad419341558f81f2ec8a05e18 +timeCreated: 1491256222 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.meta new file mode 100644 index 0000000..6611ac1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Editor.dll.meta @@ -0,0 +1,102 @@ +fileFormatVersion: 2 +guid: 224ede67b4f3a4109bfec4d5cb161b05 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + '': first + second: + enabled: 0 + settings: {} + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: x86_64 + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll new file mode 100644 index 0000000..b8e7ea7 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.mdb b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.mdb new file mode 100644 index 0000000..0374807 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.mdb differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.mdb.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.mdb.meta new file mode 100644 index 0000000..09cc793 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.mdb.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 36e8bb3feb5e6402185947b817a6ed8d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.meta new file mode 100644 index 0000000..b4342b7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.StandardEvents.dll.meta @@ -0,0 +1,37 @@ +fileFormatVersion: 2 +guid: dce91326f102345f3ba2f0987c0679c2 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude N3DS: 1 + Exclude PS4: 1 + Exclude PSP2: 1 + Exclude Switch: 1 + Exclude WiiU: 1 + Exclude XboxOne: 1 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll new file mode 100644 index 0000000..21975cc Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.mdb b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.mdb new file mode 100644 index 0000000..0811ab6 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.mdb differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.mdb.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.mdb.meta new file mode 100644 index 0000000..5b0f4d1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.mdb.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d607a67dc772b484da060e66a3d61a4e +timeCreated: 1491256195 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.meta new file mode 100644 index 0000000..7f95e23 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/Unity.Analytics.Tracker.dll.meta @@ -0,0 +1,38 @@ +fileFormatVersion: 2 +guid: 220224b43fc464c28bc0e8de8f54a432 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude N3DS: 1 + Exclude PS4: 1 + Exclude PSP2: 1 + Exclude Switch: 1 + Exclude WiiU: 1 + Exclude XboxOne: 1 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + userData: + assetBundleName: + assetBundleVariant: + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/package.json b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/package.json new file mode 100644 index 0000000..554d9af --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/package.json @@ -0,0 +1,18 @@ +{ + "description": "The Unity Analytics Library contains the Analytics Event Tracker component, the Data Privacy plug-in, and the Standard Events API.", + "displayName": "Analytics Library", + "keywords": [ + "analytics", + "unity" + ], + "name": "com.unity.analytics", + "readme": "Unity Analytics", + "repoPackagePath": "build/install/com.unity.analytics", + "repository": { + "revision": "f6830e2decdab13b9a19d8bf39509a8f0a8d349e", + "type": "git", + "url": "git@gitlab.cds.internal.unity3d.com:upm-packages/analytics/com.unity.analytics.git" + }, + "unity": "2018.3", + "version": "3.2.2" +} \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/package.json.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/package.json.meta new file mode 100644 index 0000000..83b0f78 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.analytics@3.2.2/package.json.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 510d1d319d2754ea4a47c6dd8c421ea0 +timeCreated: 1491258762 +licenseType: Pro +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/CHANGELOG.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/CHANGELOG.md new file mode 100644 index 0000000..7dfff7c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/CHANGELOG.md @@ -0,0 +1,28 @@ +# Changelog +All notable changes to this package will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [1.2.15] - 2018-11-16 +Added support for non-experimental UIElements. + +## [1.2.11] - 2018-09-04 +Made some performance improvements to reduce impact on ReloadAssemblies. + +## [1.2.9] - 2018-08-13 +Test issues for the Collab History Window are now fixed. + +## [1.2.7] - 2018-08-07 +Toolbar drop-down will no longer show up when package is uninstalled. + +## [1.2.6] - 2018-06-15 +Fixed an issue where Collab's History window wouldn't load properly. + +## [1.2.5] - 2018-05-21 +This is the first release of *Unity Package CollabProxy*. + +### Added +- Collab history and toolbar windows +- Collab view and presenter classes +- Collab Editor tests for view and presenter diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/CHANGELOG.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/CHANGELOG.md.meta new file mode 100644 index 0000000..38274a6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 782c49e6e68074dc7ba12c95537825ce +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/DEPENDENCIES.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/DEPENDENCIES.md new file mode 100644 index 0000000..57808d5 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/DEPENDENCIES.md @@ -0,0 +1,9 @@ + + + + Unity.CollabProxy.Dependencies + 1.1.0-experimental + Rohit Garg + Dependencies for the CollabProxy package + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/DEPENDENCIES.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/DEPENDENCIES.md.meta new file mode 100644 index 0000000..24e45c2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/DEPENDENCIES.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 470530e667ad4475786b28fa3187ce95 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Documentation~/collab-proxy.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Documentation~/collab-proxy.md new file mode 100644 index 0000000..c1800d6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Documentation~/collab-proxy.md @@ -0,0 +1,5 @@ +# About Unity Collaborate + +Collaborate is a simple way for teams to save, share, and sync their Unity project. + +Please refer to the online documentation [here.](https://docs.unity3d.com/Manual/UnityCollaborate.html) \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor.meta new file mode 100644 index 0000000..b54ca87 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d31e5d760880a4e52a3a75322481d0d2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/AssemblyInfo.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/AssemblyInfo.cs new file mode 100644 index 0000000..d7266b6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/AssemblyInfo.cs @@ -0,0 +1,4 @@ +using System.Runtime.CompilerServices; +using UnityEngine; + +[assembly: InternalsVisibleTo("Unity.CollabProxy.EditorTests")] diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/AssemblyInfo.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/AssemblyInfo.cs.meta new file mode 100644 index 0000000..e384b31 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4ef26aa386b44923b61c9c4b505a67c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab.meta new file mode 100644 index 0000000..694fc4e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c18cb9388313e4287ad5895ee735c47d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Bootstrap.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Bootstrap.cs new file mode 100644 index 0000000..029ce1c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Bootstrap.cs @@ -0,0 +1,24 @@ +using UnityEditor; +using UnityEditor.Collaboration; +using UnityEngine; + +namespace CollabProxy.UI +{ + [InitializeOnLoad] + public class Bootstrap + { + private const float kCollabToolbarButtonWidth = 78.0f; + + static Bootstrap() + { + Collab.ShowHistoryWindow = CollabHistoryWindow.ShowHistoryWindow; + Collab.ShowToolbarAtPosition = CollabToolbarWindow.ShowCenteredAtPosition; + Collab.IsToolbarVisible = CollabToolbarWindow.IsVisible; + Collab.CloseToolbar = CollabToolbarWindow.CloseToolbar; + Toolbar.AddSubToolbar(new CollabToolbarButton + { + Width = kCollabToolbarButtonWidth + }); + } + } +} \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Bootstrap.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Bootstrap.cs.meta new file mode 100644 index 0000000..641d54b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Bootstrap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8aa8171e088f94069bbd1978a053f7dd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabAnalytics.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabAnalytics.cs new file mode 100644 index 0000000..c7f90aa --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabAnalytics.cs @@ -0,0 +1,21 @@ +using System; + +namespace UnityEditor.Collaboration +{ + internal static class CollabAnalytics + { + [Serializable] + private struct CollabUserActionAnalyticsEvent + { + public string category; + public string action; + } + + public static void SendUserAction(string category, string action) + { + EditorAnalytics.SendCollabUserAction(new CollabUserActionAnalyticsEvent() { category = category, action = action }); + } + + public static readonly string historyCategoryString = "History"; + }; +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabAnalytics.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabAnalytics.cs.meta new file mode 100644 index 0000000..2f46e9b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabAnalytics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f944311c8fff2479fa3ba741f6039fc8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabHistoryWindow.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabHistoryWindow.cs new file mode 100644 index 0000000..b855bce --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabHistoryWindow.cs @@ -0,0 +1,330 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using UnityEditor.Collaboration; + +#if UNITY_2019_1_OR_NEWER +using UnityEditor.UIElements; +using UnityEngine.UIElements; +#else +using UnityEditor.Experimental.UIElements; +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +using UnityEngine; +using UnityEditor.Connect; + +namespace UnityEditor +{ + internal class CollabHistoryWindow : EditorWindow, ICollabHistoryWindow + { +#if UNITY_2019_1_OR_NEWER + private const string ResourcesPath = "Packages/com.unity.collab-proxy/Editor/Resources/Styles/"; +#else + private const string ResourcesPath = "StyleSheets/"; +#endif + + + const string kWindowTitle = "Collab History"; + const string kServiceUrl = "developer.cloud.unity3d.com"; + + [MenuItem("Window/Asset Management/Collab History", false, 1)] + public static void ShowHistoryWindow() + { + EditorWindow.GetWindow(kWindowTitle); + } + + [MenuItem("Window/Asset Management/Collab History", true)] + public static bool ValidateShowHistoryWindow() + { + return Collab.instance.IsCollabEnabledForCurrentProject(); + } + + CollabHistoryPresenter m_Presenter; + Dictionary m_Views; + List m_HistoryItems = new List(); + HistoryState m_State; + VisualElement m_Container; + PagedListView m_Pager; + ScrollView m_HistoryView; + int m_ItemsPerPage = 5; + string m_InProgressRev; + bool m_RevisionActionsEnabled; + + public CollabHistoryWindow() + { + minSize = new Vector2(275, 50); + } + + public void OnEnable() + { + SetupGUI(); + name = "CollabHistory"; + + if (m_Presenter == null) + { + m_Presenter = new CollabHistoryPresenter(this, new CollabHistoryItemFactory(), new RevisionsService(Collab.instance, UnityConnect.instance)); + } + m_Presenter.OnWindowEnabled(); + } + + public void OnDisable() + { + m_Presenter.OnWindowDisabled(); + } + + public bool revisionActionsEnabled + { + get { return m_RevisionActionsEnabled; } + set + { + if (m_RevisionActionsEnabled == value) + return; + + m_RevisionActionsEnabled = value; + foreach (var historyItem in m_HistoryItems) + { + historyItem.RevisionActionsEnabled = value; + } + } + } + + private void AddStyleSheetPath(VisualElement root, string path) + { +#if UNITY_2019_1_OR_NEWER + root.styleSheets.Add(EditorGUIUtility.Load(path) as StyleSheet); +#else + root.AddStyleSheetPath(path); +#endif + } + + + public void SetupGUI() + { +#if UNITY_2019_1_OR_NEWER + var root = this.rootVisualElement; +#else + var root = this.GetRootVisualContainer(); +#endif + AddStyleSheetPath(root, ResourcesPath + "CollabHistoryCommon.uss"); + if (EditorGUIUtility.isProSkin) + { + AddStyleSheetPath(root, ResourcesPath + "CollabHistoryDark.uss"); + } + else + { + AddStyleSheetPath(root, ResourcesPath + "CollabHistoryLight.uss"); + } + + m_Container = new VisualElement(); + m_Container.StretchToParentSize(); + root.Add(m_Container); + + m_Pager = new PagedListView() + { + name = "PagedElement", + pageSize = m_ItemsPerPage + }; + + var errorView = new StatusView() + { + message = "An Error Occurred", + icon = EditorGUIUtility.LoadIconRequired("Collab.Warning") as Texture, + }; + + var noInternetView = new StatusView() + { + message = "No Internet Connection", + icon = EditorGUIUtility.LoadIconRequired("Collab.NoInternet") as Texture, + }; + + var maintenanceView = new StatusView() + { + message = "Maintenance", + }; + + var loginView = new StatusView() + { + message = "Sign in to access Collaborate", + buttonText = "Sign in...", + callback = SignInClick, + }; + + var noSeatView = new StatusView() + { + message = "Ask your project owner for access to Unity Teams", + buttonText = "Learn More", + callback = NoSeatClick, + }; + + var waitingView = new StatusView() + { + message = "Updating...", + }; + + m_HistoryView = new ScrollView() { name = "HistoryContainer", showHorizontal = false}; + m_HistoryView.contentContainer.StretchToParentWidth(); + m_HistoryView.Add(m_Pager); + + m_Views = new Dictionary() + { + {HistoryState.Error, errorView}, + {HistoryState.Offline, noInternetView}, + {HistoryState.Maintenance, maintenanceView}, + {HistoryState.LoggedOut, loginView}, + {HistoryState.NoSeat, noSeatView}, + {HistoryState.Waiting, waitingView}, + {HistoryState.Ready, m_HistoryView} + }; + } + + public void UpdateState(HistoryState state, bool force) + { + if (state == m_State && !force) + return; + + m_State = state; + switch (state) + { + case HistoryState.Ready: + UpdateHistoryView(m_Pager); + break; + case HistoryState.Disabled: + Close(); + return; + } + + m_Container.Clear(); + m_Container.Add(m_Views[m_State]); + } + + public void UpdateRevisions(IEnumerable datas, string tip, int totalRevisions, int currentPage) + { + var elements = new List(); + var isFullDateObtained = false; // Has everything from this date been obtained? + m_HistoryItems.Clear(); + + if (datas != null) + { + DateTime currentDate = DateTime.MinValue; + foreach (var data in datas) + { + if (data.timeStamp.Date != currentDate.Date) + { + elements.Add(new CollabHistoryRevisionLine(data.timeStamp, isFullDateObtained)); + currentDate = data.timeStamp; + } + + var item = new CollabHistoryItem(data); + m_HistoryItems.Add(item); + + var container = new VisualElement(); + container.style.flexDirection = FlexDirection.Row; + if (data.current) + { + isFullDateObtained = true; + container.AddToClassList("currentRevision"); + container.AddToClassList("obtainedRevision"); + } + else if (data.obtained) + { + container.AddToClassList("obtainedRevision"); + } + else + { + container.AddToClassList("absentRevision"); + } + // If we use the index as-is, the latest commit will become #1, but we want it to be last + container.Add(new CollabHistoryRevisionLine(data.index)); + container.Add(item); + elements.Add(container); + } + } + + m_HistoryView.scrollOffset = new Vector2(0, 0); + m_Pager.totalItems = totalRevisions; + m_Pager.curPage = currentPage; + m_Pager.items = elements; + } + + public string inProgressRevision + { + get { return m_InProgressRev; } + set + { + m_InProgressRev = value; + foreach (var historyItem in m_HistoryItems) + { + historyItem.SetInProgressStatus(value); + } + } + } + + public int itemsPerPage + { + set + { + if (m_ItemsPerPage == value) + return; + m_Pager.pageSize = m_ItemsPerPage; + } + } + + public PageChangeAction OnPageChangeAction + { + set { m_Pager.OnPageChanged = value; } + } + + public RevisionAction OnGoBackAction + { + set { CollabHistoryItem.s_OnGoBack = value; } + } + + public RevisionAction OnUpdateAction + { + set { CollabHistoryItem.s_OnUpdate = value; } + } + + public RevisionAction OnRestoreAction + { + set { CollabHistoryItem.s_OnRestore = value; } + } + + public ShowBuildAction OnShowBuildAction + { + set { CollabHistoryItem.s_OnShowBuild = value; } + } + + public Action OnShowServicesAction + { + set { CollabHistoryItem.s_OnShowServices = value; } + } + + void UpdateHistoryView(VisualElement history) + { + } + + void NoSeatClick() + { + var connection = UnityConnect.instance; + var env = connection.GetEnvironment(); + // Map environment to url - prod is special + if (env == "production") + env = ""; + else + env += "-"; + + var url = "https://" + env + kServiceUrl + + "/orgs/" + connection.GetOrganizationId() + + "/projects/" + connection.GetProjectName() + + "/unity-teams/"; + Application.OpenURL(url); + } + + void SignInClick() + { + UnityConnect.instance.ShowLogin(); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabHistoryWindow.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabHistoryWindow.cs.meta new file mode 100644 index 0000000..74358d4 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabHistoryWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fed9dda667cab45d398d06402bba03f4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarButton.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarButton.cs new file mode 100644 index 0000000..eebe4ac --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarButton.cs @@ -0,0 +1,297 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.Collaboration; +using UnityEditor.Connect; +using UnityEditor.Web; +using UnityEngine; + +namespace UnityEditor +{ + internal class CollabToolbarButton : SubToolbar, IDisposable + { + // Must match s_CollabIcon array + enum CollabToolbarState + { + NeedToEnableCollab, + UpToDate, + Conflict, + OperationError, + ServerHasChanges, + FilesToPush, + InProgress, + Disabled, + Offline + } + + private class CollabToolbarContent + { + readonly string m_iconName; + readonly string m_toolTip; + readonly CollabToolbarState m_state; + + static Dictionary m_CollabIcons; + + public CollabToolbarState RegisteredForState + { + get { return m_state; } + } + + public GUIContent GuiContent + { + get + { + if (m_CollabIcons == null) + { + m_CollabIcons = new Dictionary(); + } + + if (!m_CollabIcons.ContainsKey(this)) + { + m_CollabIcons.Add(this, EditorGUIUtility.TrTextContentWithIcon("Collab", m_toolTip, m_iconName)); + } + + return m_CollabIcons[this]; + } + } + + public CollabToolbarContent(CollabToolbarState state, string iconName, string toolTip) + { + m_state = state; + m_iconName = iconName; + m_toolTip = toolTip; + } + } + + CollabToolbarContent[] m_toolbarContents; + CollabToolbarState m_CollabToolbarState = CollabToolbarState.UpToDate; + const float kCollabButtonWidth = 78.0f; + ButtonWithAnimatedIconRotation m_CollabButton; + string m_DynamicTooltip; + static bool m_ShowCollabTooltip = false; + + private GUIContent currentCollabContent + { + get + { + CollabToolbarContent toolbarContent = + m_toolbarContents.FirstOrDefault(c => c.RegisteredForState.Equals(m_CollabToolbarState)); + GUIContent content = new GUIContent(toolbarContent == null? m_toolbarContents.First().GuiContent : toolbarContent.GuiContent); + if (!m_ShowCollabTooltip) + { + content.tooltip = null; + } + else if (m_DynamicTooltip != "") + { + content.tooltip = m_DynamicTooltip; + } + + if (Collab.instance.AreTestsRunning()) + { + content.text = "CTF"; + } + + return content; + } + } + + public CollabToolbarButton() + { + m_toolbarContents = new[] + { + new CollabToolbarContent(CollabToolbarState.NeedToEnableCollab, "CollabNew", " You need to enable collab."), + new CollabToolbarContent(CollabToolbarState.UpToDate, "Collab", " You are up to date."), + new CollabToolbarContent(CollabToolbarState.Conflict, "CollabConflict", " Please fix your conflicts prior to publishing."), + new CollabToolbarContent(CollabToolbarState.OperationError, "CollabError", " Last operation failed. Please retry later."), + new CollabToolbarContent(CollabToolbarState.ServerHasChanges, "CollabPull", " Please update, there are server changes."), + new CollabToolbarContent(CollabToolbarState.FilesToPush, "CollabPush", " You have files to publish."), + new CollabToolbarContent(CollabToolbarState.InProgress, "CollabProgress", " Operation in progress."), + new CollabToolbarContent(CollabToolbarState.Disabled, "CollabNew", " Collab is disabled."), + new CollabToolbarContent(CollabToolbarState.Offline, "CollabNew", " Please check your network connection.") + }; + + Collab.instance.StateChanged += OnCollabStateChanged; + UnityConnect.instance.StateChanged += OnUnityConnectStateChanged; + UnityConnect.instance.UserStateChanged += OnUnityConnectUserStateChanged; + } + + void OnUnityConnectUserStateChanged(UserInfo state) + { + UpdateCollabToolbarState(); + } + + void OnUnityConnectStateChanged(ConnectInfo state) + { + UpdateCollabToolbarState(); + } + + public override void OnGUI(Rect rect) + { + DoCollabDropDown(rect); + } + + Rect GUIToScreenRect(Rect guiRect) + { + Vector2 screenPoint = GUIUtility.GUIToScreenPoint(new Vector2(guiRect.x, guiRect.y)); + guiRect.x = screenPoint.x; + guiRect.y = screenPoint.y; + return guiRect; + } + + void ShowPopup(Rect rect) + { + // window should be centered on the button + ReserveRight(kCollabButtonWidth / 2, ref rect); + ReserveBottom(5, ref rect); + // calculate screen rect before saving assets since it might open the AssetSaveDialog window + var screenRect = GUIToScreenRect(rect); + // save all the assets + AssetDatabase.SaveAssets(); + if (Collab.ShowToolbarAtPosition != null && Collab.ShowToolbarAtPosition(screenRect)) + { + GUIUtility.ExitGUI(); + } + } + + void DoCollabDropDown(Rect rect) + { + UpdateCollabToolbarState(); + GUIStyle collabButtonStyle = "OffsetDropDown"; + bool showPopup = Toolbar.requestShowCollabToolbar; + Toolbar.requestShowCollabToolbar = false; + + bool enable = !EditorApplication.isPlaying; + + using (new EditorGUI.DisabledScope(!enable)) + { + bool animate = m_CollabToolbarState == CollabToolbarState.InProgress; + + EditorGUIUtility.SetIconSize(new Vector2(12, 12)); + if (GetCollabButton().OnGUI(rect, currentCollabContent, animate, collabButtonStyle)) + { + showPopup = true; + } + EditorGUIUtility.SetIconSize(Vector2.zero); + } + + if (m_CollabToolbarState == CollabToolbarState.Disabled) + return; + + if (showPopup) + { + ShowPopup(rect); + } + } + + public void OnCollabStateChanged(CollabInfo info) + { + UpdateCollabToolbarState(); + } + + public void UpdateCollabToolbarState() + { + var currentCollabState = CollabToolbarState.UpToDate; + bool networkAvailable = UnityConnect.instance.connectInfo.online && UnityConnect.instance.connectInfo.loggedIn; + m_DynamicTooltip = ""; + + if (UnityConnect.instance.isDisableCollabWindow) + { + currentCollabState = CollabToolbarState.Disabled; + } + else if (networkAvailable) + { + Collab collab = Collab.instance; + CollabInfo currentInfo = collab.collabInfo; + UnityErrorInfo errInfo; + bool error = false; + if (collab.GetError((UnityConnect.UnityErrorFilter.ByContext | UnityConnect.UnityErrorFilter.ByChild), out errInfo)) + { + error = (errInfo.priority <= (int)UnityConnect.UnityErrorPriority.Error); + m_DynamicTooltip = errInfo.shortMsg; + } + + if (!currentInfo.ready) + { + currentCollabState = CollabToolbarState.InProgress; + } + else if (error) + { + currentCollabState = CollabToolbarState.OperationError; + } + else if (currentInfo.inProgress) + { + currentCollabState = CollabToolbarState.InProgress; + } + else + { + bool collabEnable = Collab.instance.IsCollabEnabledForCurrentProject(); + + if (UnityConnect.instance.projectInfo.projectBound == false || !collabEnable) + { + currentCollabState = CollabToolbarState.NeedToEnableCollab; + } + else if (currentInfo.update) + { + currentCollabState = CollabToolbarState.ServerHasChanges; + } + else if (currentInfo.conflict) + { + currentCollabState = CollabToolbarState.Conflict; + } + else if (currentInfo.publish) + { + currentCollabState = CollabToolbarState.FilesToPush; + } + } + } + else + { + currentCollabState = CollabToolbarState.Offline; + } + + if (Collab.IsToolbarVisible != null) + { + if (currentCollabState != m_CollabToolbarState || + Collab.IsToolbarVisible() == m_ShowCollabTooltip) + { + m_CollabToolbarState = currentCollabState; + m_ShowCollabTooltip = !Collab.IsToolbarVisible(); + Toolbar.RepaintToolbar(); + } + } + } + + void ReserveRight(float width, ref Rect pos) + { + pos.x += width; + } + + void ReserveBottom(float height, ref Rect pos) + { + pos.y += height; + } + + ButtonWithAnimatedIconRotation GetCollabButton() + { + if (m_CollabButton == null) + { + const int repaintsPerSecond = 20; + const float animSpeed = 500f; + const bool mouseDownButton = true; + m_CollabButton = new ButtonWithAnimatedIconRotation(() => (float)EditorApplication.timeSinceStartup * animSpeed, Toolbar.RepaintToolbar, repaintsPerSecond, mouseDownButton); + } + + return m_CollabButton; + } + + public void Dispose() + { + Collab.instance.StateChanged -= OnCollabStateChanged; + UnityConnect.instance.StateChanged -= OnUnityConnectStateChanged; + UnityConnect.instance.UserStateChanged -= OnUnityConnectUserStateChanged; + + if (m_CollabButton != null) + m_CollabButton.Clear(); + } + } +} // namespace \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarButton.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarButton.cs.meta new file mode 100644 index 0000000..949d8db --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 882f1a4147a284f028899b9c018e63eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarWindow.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarWindow.cs new file mode 100644 index 0000000..2793875 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarWindow.cs @@ -0,0 +1,137 @@ +using UnityEngine; +using UnityEditor.Collaboration; +using UnityEditor.Web; +using UnityEditor.Connect; + +namespace UnityEditor +{ + [InitializeOnLoad] + internal class WebViewStatic : ScriptableSingleton + { + [SerializeField] + WebView m_WebView; + + static public WebView GetWebView() + { + return instance.m_WebView; + } + + static public void SetWebView(WebView webView) + { + instance.m_WebView = webView; + } + } + + [InitializeOnLoad] + internal class CollabToolbarWindow : WebViewEditorStaticWindow, IHasCustomMenu + { + internal override WebView webView + { + get {return WebViewStatic.GetWebView(); } + set {WebViewStatic.SetWebView(value); } + } + + private const string kWindowName = "Unity Collab Toolbar"; + + private static long s_LastClosedTime; + private static CollabToolbarWindow s_CollabToolbarWindow; + + public static bool s_ToolbarIsVisible = false; + + const int kWindowWidth = 320; + const int kWindowHeight = 350; + + public static void CloseToolbar() + { + foreach (CollabToolbarWindow window in Resources.FindObjectsOfTypeAll()) + window.Close(); + } + + [MenuItem("Window/Asset Management/Collab Toolbar", false /*IsValidateFunction*/, 2, true /* IsInternalMenu */)] + public static CollabToolbarWindow ShowToolbarWindow() + { + //Create a new window if it does not exist + if (s_CollabToolbarWindow == null) + { + s_CollabToolbarWindow = GetWindow(false, kWindowName) as CollabToolbarWindow; + } + + return s_CollabToolbarWindow; + } + + [MenuItem("Window/Asset Management/Collab Toolbar", true /*IsValidateFunction*/)] + public static bool ValidateShowToolbarWindow() + { + return true; + } + + public static bool IsVisible() + { + return s_ToolbarIsVisible; + } + + public static bool ShowCenteredAtPosition(Rect buttonRect) + { + buttonRect.x -= kWindowWidth / 2; + // We could not use realtimeSinceStartUp since it is set to 0 when entering/exitting playmode, we assume an increasing time when comparing time. + long nowMilliSeconds = System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond; + bool justClosed = nowMilliSeconds < s_LastClosedTime + 50; + if (!justClosed) + { + // Method may have been triggered programmatically, without a user event to consume. + if (Event.current.type != EventType.Layout) + { + Event.current.Use(); + } + if (s_CollabToolbarWindow == null) + s_CollabToolbarWindow = CreateInstance() as CollabToolbarWindow; + var windowSize = new Vector2(kWindowWidth, kWindowHeight); + s_CollabToolbarWindow.initialOpenUrl = "file:///" + EditorApplication.userJavascriptPackagesPath + "unityeditor-collab-toolbar/dist/index.html"; + s_CollabToolbarWindow.Init(); + s_CollabToolbarWindow.ShowAsDropDown(buttonRect, windowSize); + s_CollabToolbarWindow.OnFocus(); + return true; + } + return false; + } + + // Receives HTML title + public void OnReceiveTitle(string title) + { + titleContent.text = title; + } + + public new void OnInitScripting() + { + base.OnInitScripting(); + } + + public override void OnEnable() + { + minSize = new Vector2(kWindowWidth, kWindowHeight); + maxSize = new Vector2(kWindowWidth, kWindowHeight); + initialOpenUrl = "file:///" + EditorApplication.userJavascriptPackagesPath + "unityeditor-collab-toolbar/dist/index.html"; + base.OnEnable(); + s_ToolbarIsVisible = true; + } + + internal new void OnDisable() + { + s_LastClosedTime = System.DateTime.Now.Ticks / System.TimeSpan.TicksPerMillisecond; + if (s_CollabToolbarWindow) + { + s_ToolbarIsVisible = false; + NotifyVisibility(s_ToolbarIsVisible); + } + s_CollabToolbarWindow = null; + + base.OnDisable(); + } + + public new void OnDestroy() + { + OnLostFocus(); + base.OnDestroy(); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarWindow.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarWindow.cs.meta new file mode 100644 index 0000000..b08bf2a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/CollabToolbarWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6f516f1ec21a54a59a92bf99db2d9535 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters.meta new file mode 100644 index 0000000..9133153 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d437fe60bb34f45728664a5d930c1635 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters/CollabHistoryPresenter.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters/CollabHistoryPresenter.cs new file mode 100644 index 0000000..91d500b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters/CollabHistoryPresenter.cs @@ -0,0 +1,228 @@ +using System.Collections.Generic; +using UnityEditor.Connect; +using UnityEditor.Web; + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryPresenter + { + public const int ItemsPerPage = 5; + ICollabHistoryWindow m_Window; + ICollabHistoryItemFactory m_Factory; + IRevisionsService m_Service; + ConnectInfo m_ConnectState; + CollabInfo m_CollabState; + bool m_IsCollabError; + int m_TotalRevisions; + int m_CurrentPage; + int m_RequestedPage; + bool m_FetchInProgress; + + BuildAccess m_BuildAccess; + string m_ProgressRevision; + public bool BuildServiceEnabled {get; set; } + + public CollabHistoryPresenter(ICollabHistoryWindow window, ICollabHistoryItemFactory factory, IRevisionsService service) + { + m_Window = window; + m_Factory = factory; + m_Service = service; + m_CurrentPage = 0; + m_BuildAccess = new BuildAccess(); + m_Service.FetchRevisionsCallback += OnFetchRevisions; + } + + public void OnWindowEnabled() + { + UnityConnect.instance.StateChanged += OnConnectStateChanged; + Collab.instance.StateChanged += OnCollabStateChanged; + Collab.instance.RevisionUpdated += OnCollabRevisionUpdated; + Collab.instance.JobsCompleted += OnCollabJobsCompleted; + Collab.instance.ErrorOccurred += OnCollabError; + Collab.instance.ErrorCleared += OnCollabErrorCleared; + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + m_ConnectState = UnityConnect.instance.GetConnectInfo(); + m_CollabState = Collab.instance.GetCollabInfo(); + + m_Window.revisionActionsEnabled = !EditorApplication.isPlayingOrWillChangePlaymode; + + // Setup window callbacks + m_Window.OnPageChangeAction = OnUpdatePage; + m_Window.OnUpdateAction = OnUpdate; + m_Window.OnRestoreAction = OnRestore; + m_Window.OnGoBackAction = OnGoBack; + m_Window.OnShowBuildAction = ShowBuildForCommit; + m_Window.OnShowServicesAction = ShowServicePage; + m_Window.itemsPerPage = ItemsPerPage; + + // Initialize data + UpdateBuildServiceStatus(); + var state = RecalculateState(); + // Only try to load the page if we're ready + if (state == HistoryState.Ready) + OnUpdatePage(m_CurrentPage); + m_Window.UpdateState(state, true); + } + + public void OnWindowDisabled() + { + UnityConnect.instance.StateChanged -= OnConnectStateChanged; + Collab.instance.StateChanged -= OnCollabStateChanged; + Collab.instance.RevisionUpdated -= OnCollabRevisionUpdated; + Collab.instance.JobsCompleted -= OnCollabJobsCompleted; + EditorApplication.playModeStateChanged -= OnPlayModeStateChanged; + } + + private void OnConnectStateChanged(ConnectInfo state) + { + m_ConnectState = state; + + m_Window.UpdateState(RecalculateState(), false); + } + + private void OnCollabStateChanged(CollabInfo state) + { + // Sometimes a collab state change will trigger even though everything is the same + if (m_CollabState.Equals(state)) + return; + + if (m_CollabState.tip != state.tip) + OnUpdatePage(m_CurrentPage); + + m_CollabState = state; + m_Window.UpdateState(RecalculateState(), false); + if (state.inProgress) + { + m_Window.inProgressRevision = m_ProgressRevision; + } + else + { + m_Window.inProgressRevision = null; + } + } + + private void OnCollabRevisionUpdated(CollabInfo state) + { + OnUpdatePage(m_CurrentPage); + } + + private void OnCollabJobsCompleted(CollabInfo state) + { + m_ProgressRevision = null; + } + + private void OnCollabError() + { + m_IsCollabError = true; + m_Window.UpdateState(RecalculateState(), false); + } + + private void OnCollabErrorCleared() + { + m_IsCollabError = false; + m_FetchInProgress = true; + m_Service.GetRevisions(m_CurrentPage * ItemsPerPage, ItemsPerPage); + m_Window.UpdateState(RecalculateState(), false); + } + + private void OnPlayModeStateChanged(PlayModeStateChange stateChange) + { + // If entering play mode, disable + if (stateChange == PlayModeStateChange.ExitingEditMode || + stateChange == PlayModeStateChange.EnteredPlayMode) + { + m_Window.revisionActionsEnabled = false; + } + // If exiting play mode, enable! + else if (stateChange == PlayModeStateChange.EnteredEditMode || + stateChange == PlayModeStateChange.ExitingPlayMode) + { + m_Window.revisionActionsEnabled = true; + } + } + + private HistoryState RecalculateState() + { + if (!m_ConnectState.online) + return HistoryState.Offline; + if (m_ConnectState.maintenance || m_CollabState.maintenance) + return HistoryState.Maintenance; + if (!m_ConnectState.loggedIn) + return HistoryState.LoggedOut; + if (!m_CollabState.seat) + return HistoryState.NoSeat; + if (!Collab.instance.IsCollabEnabledForCurrentProject()) + return HistoryState.Disabled; + if (!Collab.instance.IsConnected() || !m_CollabState.ready || m_FetchInProgress) + return HistoryState.Waiting; + if (m_ConnectState.error || m_IsCollabError) + return HistoryState.Error; + + return HistoryState.Ready; + } + + // TODO: Eventually this can be a listener on the build service status + public void UpdateBuildServiceStatus() + { + foreach (var service in UnityConnectServiceCollection.instance.GetAllServiceInfos()) + { + if (service.name.Equals("Build")) + { + BuildServiceEnabled = service.enabled; + } + } + } + + public void ShowBuildForCommit(string revisionID) + { + m_BuildAccess.ShowBuildForCommit(revisionID); + } + + public void ShowServicePage() + { + m_BuildAccess.ShowServicePage(); + } + + public void OnUpdatePage(int page) + { + m_FetchInProgress = true; + m_Service.GetRevisions(page * ItemsPerPage, ItemsPerPage); + m_Window.UpdateState(RecalculateState(), false); + m_RequestedPage = page; + } + + private void OnFetchRevisions(RevisionsResult data) + { + m_FetchInProgress = false; + IEnumerable items = null; + if (data != null) + { + m_CurrentPage = m_RequestedPage; + m_TotalRevisions = data.RevisionsInRepo; + items = m_Factory.GenerateElements(data.Revisions, m_TotalRevisions, m_CurrentPage * ItemsPerPage, m_Service.tipRevision, m_Window.inProgressRevision, m_Window.revisionActionsEnabled, BuildServiceEnabled, m_Service.currentUser); + } + + // State must be recalculated prior to inserting items + m_Window.UpdateState(RecalculateState(), false); + m_Window.UpdateRevisions(items, m_Service.tipRevision, m_TotalRevisions, m_CurrentPage); + } + + private void OnRestore(string revisionId, bool updatetorevision) + { + m_ProgressRevision = revisionId; + Collab.instance.ResyncToRevision(revisionId); + } + + private void OnGoBack(string revisionId, bool updatetorevision) + { + m_ProgressRevision = revisionId; + Collab.instance.GoBackToRevision(revisionId, false); + } + + private void OnUpdate(string revisionId, bool updatetorevision) + { + m_ProgressRevision = revisionId; + Collab.instance.Update(revisionId, updatetorevision); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters/CollabHistoryPresenter.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters/CollabHistoryPresenter.cs.meta new file mode 100644 index 0000000..9c37ecd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Presenters/CollabHistoryPresenter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7c91a123806d41a0873fcdcb629b1c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views.meta new file mode 100644 index 0000000..f62ac6b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fd0a39b4d296d4d509b4f1dbd08d0630 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/BuildStatusButton.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/BuildStatusButton.cs new file mode 100644 index 0000000..ac3754d --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/BuildStatusButton.cs @@ -0,0 +1,53 @@ +using System; +using UnityEditor; +using UnityEditor.Collaboration; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal class BuildStatusButton : Button + { + private readonly string iconPrefix = "Icons/Collab.Build"; + private readonly string iconSuffix = ".png"; + Label labelElement = new Label(); + Image iconElement = new Image() {name = "BuildIcon"}; + + public BuildStatusButton(Action clickEvent) : base(clickEvent) + { + iconElement.image = EditorGUIUtility.Load(iconPrefix + iconSuffix) as Texture; + labelElement.text = "Build Now"; + Add(iconElement); + Add(labelElement); + } + + public BuildStatusButton(Action clickEvent, BuildState state, int failures) : base(clickEvent) + { + switch (state) + { + case BuildState.InProgress: + iconElement.image = EditorGUIUtility.Load(iconPrefix + iconSuffix) as Texture; + labelElement.text = "In progress"; + break; + + case BuildState.Failed: + iconElement.image = EditorGUIUtility.Load(iconPrefix + "Failed" + iconSuffix) as Texture; + labelElement.text = failures + ((failures == 1) ? " failure" : " failures"); + break; + + case BuildState.Success: + iconElement.image = EditorGUIUtility.Load(iconPrefix + "Succeeded" + iconSuffix) as Texture; + labelElement.text = "success"; + break; + } + + Add(iconElement); + Add(labelElement); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/BuildStatusButton.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/BuildStatusButton.cs.meta new file mode 100644 index 0000000..d74a58a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/BuildStatusButton.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0217a80286f79419daa202f69409f19b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDown.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDown.cs new file mode 100644 index 0000000..e3bb05a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDown.cs @@ -0,0 +1,78 @@ +using UnityEngine; +using System.Collections.Generic; +using UnityEditor.Connect; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryDropDown : VisualElement + { + private readonly VisualElement m_FilesContainer; + private readonly Label m_ToggleLabel; + private int m_ChangesTotal; + private string m_RevisionId; + + public CollabHistoryDropDown(ICollection changes, int changesTotal, bool changesTruncated, string revisionId) + { + m_FilesContainer = new VisualElement(); + m_ChangesTotal = changesTotal; + m_RevisionId = revisionId; + + m_ToggleLabel = new Label(ToggleText(false)); + m_ToggleLabel.AddManipulator(new Clickable(ToggleDropdown)); + Add(m_ToggleLabel); + + foreach (ChangeData change in changes) + { + m_FilesContainer.Add(new CollabHistoryDropDownItem(change.path, change.action)); + } + + if (changesTruncated) + { + m_FilesContainer.Add(new Button(ShowAllClick) + { + text = "Show all on dashboard" + }); + } + } + + private void ToggleDropdown() + { + if (Contains(m_FilesContainer)) + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "CollapseAssets"); + Remove(m_FilesContainer); + m_ToggleLabel.text = ToggleText(false); + } + else + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ExpandAssets"); + Add(m_FilesContainer); + m_ToggleLabel.text = ToggleText(true); + } + } + + private string ToggleText(bool open) + { + var icon = open ? "\u25bc" : "\u25b6"; + var change = m_ChangesTotal == 1 ? "Change" : "Changes"; + return string.Format("{0} {1} Asset {2}", icon, m_ChangesTotal, change); + } + + private void ShowAllClick() + { + var host = UnityConnect.instance.GetConfigurationURL(CloudConfigUrl.CloudServicesDashboard); + var org = UnityConnect.instance.GetOrganizationId(); + var proj = UnityConnect.instance.GetProjectGUID(); + var url = string.Format("{0}/collab/orgs/{1}/projects/{2}/commits?commit={3}", host, org, proj, m_RevisionId); + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ShowAllOnDashboard"); + Application.OpenURL(url); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDown.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDown.cs.meta new file mode 100644 index 0000000..513b66b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDown.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a483595b0257945278dc75c5ff7d82ee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDownItem.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDownItem.cs new file mode 100644 index 0000000..3ad43f2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDownItem.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Linq; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryDropDownItem : VisualElement + { + public CollabHistoryDropDownItem(string path, string action) + { + var fileName = Path.GetFileName(path); + var isFolder = Path.GetFileNameWithoutExtension(path).Equals(fileName); + var fileIcon = GetIconElement(action, fileName, isFolder); + var metaContainer = new VisualElement(); + var fileNameLabel = new Label + { + name = "FileName", + text = fileName + }; + var filePathLabel = new Label + { + name = "FilePath", + text = path + }; + metaContainer.Add(fileNameLabel); + metaContainer.Add(filePathLabel); + Add(fileIcon); + Add(metaContainer); + } + + private Image GetIconElement(string action, string fileName, bool isFolder) + { + var prefix = isFolder ? "Folder" : "File"; + var actionName = action.First().ToString().ToUpper() + action.Substring(1); + // Use the same icon for renamed and moved files + actionName = actionName.Equals("Renamed") ? "Moved" : actionName; + var iconElement = new Image + { + name = "FileIcon", + image = EditorGUIUtility.LoadIcon("Icons/Collab." + prefix + actionName + ".png") + }; + return iconElement; + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDownItem.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDownItem.cs.meta new file mode 100644 index 0000000..10bf40e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryDropDownItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d912d4873af534bd4a9d44bf1b52f14e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItem.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItem.cs new file mode 100644 index 0000000..24e5d1d --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItem.cs @@ -0,0 +1,229 @@ +using System; +using System.Linq; +using System.Security.Cryptography; +using UnityEditor.Connect; +using UnityEditor.Web; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryItem : VisualElement + { + public static RevisionAction s_OnRestore; + public static RevisionAction s_OnGoBack; + public static RevisionAction s_OnUpdate; + public static ShowBuildAction s_OnShowBuild; + public static Action s_OnShowServices; + + private readonly string m_RevisionId; + private readonly string m_FullDescription; + private readonly DateTime m_TimeStamp; + private readonly Button m_Button; + private readonly HistoryProgressSpinner m_ProgressSpinner; + private VisualElement m_ActionsTray; + private VisualElement m_Details; + private Label m_Description; + private Label m_TimeAgo; + private readonly Button m_ExpandCollapseButton; + private bool m_Expanded; + + private const int kMaxDescriptionChars = 500; + + public bool RevisionActionsEnabled + { + set + { + m_Button.SetEnabled(value); + } + } + + public DateTime timeStamp + { + get { return m_TimeStamp; } + } + + public CollabHistoryItem(RevisionData data) + { + m_RevisionId = data.id; + m_TimeStamp = data.timeStamp; + name = "HistoryItem"; + m_ActionsTray = new VisualElement {name = "HistoryItemActionsTray"}; + m_ProgressSpinner = new HistoryProgressSpinner(); + m_Details = new VisualElement {name = "HistoryDetail"}; + var author = new Label(data.authorName) {name = "Author"}; + m_TimeAgo = new Label(TimeAgo.GetString(m_TimeStamp)); + m_FullDescription = data.comment; + var shouldTruncate = ShouldTruncateDescription(m_FullDescription); + if (shouldTruncate) + { + m_Description = new Label(GetTruncatedDescription(m_FullDescription)); + } + else + { + m_Description = new Label(m_FullDescription); + } + m_Description.name = "RevisionDescription"; + var dropdown = new CollabHistoryDropDown(data.changes, data.changesTotal, data.changesTruncated, data.id); + if (data.current) + { + m_Button = new Button(Restore) {name = "ActionButton", text = "Restore"}; + } + else if (data.obtained) + { + m_Button = new Button(GoBackTo) {name = "ActionButton", text = "Go back to..."}; + } + else + { + m_Button = new Button(UpdateTo) {name = "ActionButton", text = "Update"}; + } + m_Button.SetEnabled(data.enabled); + m_ProgressSpinner.ProgressEnabled = data.inProgress; + + m_ActionsTray.Add(m_ProgressSpinner); + m_ActionsTray.Add(m_Button); + + m_Details.Add(author); + m_Details.Add(m_TimeAgo); + m_Details.Add(m_Description); + + if (shouldTruncate) + { + m_ExpandCollapseButton = new Button(ToggleDescription) { name = "ToggleDescription", text = "Show More" }; + m_Details.Add(m_ExpandCollapseButton); + } + + if (data.buildState != BuildState.None) + { + BuildStatusButton buildButton; + if (data.buildState == BuildState.Configure) + buildButton = new BuildStatusButton(ShowServicePage); + else + buildButton = new BuildStatusButton(ShowBuildForCommit, data.buildState, data.buildFailures); + + m_Details.Add(buildButton); + } + + m_Details.Add(m_ActionsTray); + m_Details.Add(dropdown); + + Add(m_Details); + + this.schedule.Execute(UpdateTimeAgo).Every(1000 * 20); + } + + public static void SetUpCallbacks(RevisionAction Restore, RevisionAction GoBack, RevisionAction Update) + { + s_OnRestore = Restore; + s_OnGoBack = GoBack; + s_OnUpdate = Update; + } + + public void SetInProgressStatus(string revisionIdInProgress) + { + if (String.IsNullOrEmpty(revisionIdInProgress)) + { + m_Button.SetEnabled(true); + m_ProgressSpinner.ProgressEnabled = false; + } + else + { + m_Button.SetEnabled(false); + if (m_RevisionId.Equals(revisionIdInProgress)) + { + m_ProgressSpinner.ProgressEnabled = true; + } + } + } + + void ShowBuildForCommit() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ShowBuild"); + if (s_OnShowBuild != null) + { + s_OnShowBuild(m_RevisionId); + } + } + + void ShowServicePage() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ShowServices"); + if (s_OnShowServices != null) + { + s_OnShowServices(); + } + } + + void Restore() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "Restore"); + if (s_OnRestore != null) + { + s_OnRestore(m_RevisionId, false); + } + } + + void GoBackTo() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "GoBackTo"); + if (s_OnGoBack != null) + { + s_OnGoBack(m_RevisionId, false); + } + } + + void UpdateTo() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "Update"); + if (s_OnUpdate != null) + { + s_OnUpdate(m_RevisionId, true); + } + } + + void UpdateTimeAgo() + { + m_TimeAgo.text = TimeAgo.GetString(m_TimeStamp); + } + + bool ShouldTruncateDescription(string description) + { + return description.Contains(Environment.NewLine) || description.Length > kMaxDescriptionChars; + } + + string GetTruncatedDescription(string description) + { + string result = description.Contains(Environment.NewLine) ? + description.Substring(0, description.IndexOf(Environment.NewLine)) : description; + if (result.Length > kMaxDescriptionChars) + { + result = result.Substring(0, kMaxDescriptionChars) + "..."; + } + return result; + } + + void ToggleDescription() + { + if (m_Expanded) + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "CollapseDescription"); + m_Expanded = false; + m_ExpandCollapseButton.text = "Show More"; + m_Description.text = GetTruncatedDescription(m_FullDescription); + } + else + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "ExpandDescription"); + m_Expanded = true; + m_ExpandCollapseButton.text = "Show Less"; + m_Description.text = m_FullDescription; + } + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItem.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItem.cs.meta new file mode 100644 index 0000000..290bd28 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4c1445ee948a4124bfa9fb818a17e36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItemFactory.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItemFactory.cs new file mode 100644 index 0000000..e7d7aa6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItemFactory.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor.Collaboration; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryItemFactory : ICollabHistoryItemFactory + { + const int k_MaxChangesPerRevision = 10; + + public IEnumerable GenerateElements(IEnumerable revisions, int totalRevisions, int startIndex, string tipRev, string inProgressRevision, bool revisionActionsEnabled, bool buildServiceEnabled, string currentUser) + { + int index = startIndex; + + foreach (var rev in revisions) + { + index++; + var current = rev.revisionID == tipRev; + + // Calculate build status + BuildState buildState = BuildState.None; + int buildFailures = 0; + if (rev.buildStatuses != null && rev.buildStatuses.Length > 0) + { + bool inProgress = false; + foreach (CloudBuildStatus buildStatus in rev.buildStatuses) + { + if (buildStatus.complete) + { + if (!buildStatus.success) + { + buildFailures++; + } + } + else + { + inProgress = true; + break; + } + } + + if (inProgress) + { + buildState = BuildState.InProgress; + } + else if (buildFailures > 0) + { + buildState = BuildState.Failed; + } + else + { + buildState = BuildState.Success; + } + } + else if (current && !buildServiceEnabled) + { + buildState = BuildState.Configure; + } + + // Calculate the number of changes performed on files and folders (not meta files) + var paths = new Dictionary(); + foreach (ChangeAction change in rev.entries) + { + if (change.path.EndsWith(".meta")) + { + var path = change.path.Substring(0, change.path.Length - 5); + // Actions taken on meta files are secondary to any actions taken on the main file + if (!paths.ContainsKey(path)) + paths[path] = new ChangeData() {path = path, action = change.action}; + } + else + { + paths[change.path] = new ChangeData() {path = change.path, action = change.action}; + } + } + + var displayName = (rev.author != currentUser) ? rev.authorName : "You"; + + var item = new RevisionData + { + id = rev.revisionID, + index = totalRevisions - index + 1, + timeStamp = TimeStampToDateTime(rev.timeStamp), + authorName = displayName, + comment = rev.comment, + + obtained = rev.isObtained, + current = current, + inProgress = (rev.revisionID == inProgressRevision), + enabled = revisionActionsEnabled, + + buildState = buildState, + buildFailures = buildFailures, + + changes = paths.Values.Take(k_MaxChangesPerRevision).ToList(), + changesTotal = paths.Values.Count, + changesTruncated = paths.Values.Count > k_MaxChangesPerRevision, + }; + + yield return item; + } + } + + private static DateTime TimeStampToDateTime(double timeStamp) + { + DateTime dateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); + dateTime = dateTime.AddSeconds(timeStamp).ToLocalTime(); + return dateTime; + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItemFactory.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItemFactory.cs.meta new file mode 100644 index 0000000..3250d96 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryItemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc46f91ea1e8e4ca2ab693fef9156dbe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryRevisionLine.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryRevisionLine.cs new file mode 100644 index 0000000..2b8fe65 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryRevisionLine.cs @@ -0,0 +1,94 @@ +using System; +using UnityEditor; +using UnityEditor.Collaboration; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal class CollabHistoryRevisionLine : VisualElement + { + public CollabHistoryRevisionLine(int number) + { + AddNumber(number); + AddLine("topLine"); + AddLine("bottomLine"); + AddIndicator(); + } + + public CollabHistoryRevisionLine(DateTime date, bool isFullDateObtained) + { + AddLine(isFullDateObtained ? "obtainedDateLine" : "absentDateLine"); + AddHeader(GetFormattedHeader(date)); + AddToClassList("revisionLineHeader"); + } + + private void AddHeader(string content) + { + Add(new Label + { + text = content + }); + } + + private void AddIndicator() + { + Add(new VisualElement + { + name = "RevisionIndicator" + }); + } + + private void AddLine(string className = null) + { + var line = new VisualElement + { + name = "RevisionLine" + }; + if (!String.IsNullOrEmpty(className)) + { + line.AddToClassList(className); + } + Add(line); + } + + private void AddNumber(int number) + { + Add(new Label + { + text = number.ToString(), + name = "RevisionIndex" + }); + } + + private string GetFormattedHeader(DateTime date) + { + string result = "Commits on " + date.ToString("MMM d"); + switch (date.Day) + { + case 1: + case 21: + case 31: + result += "st"; + break; + case 2: + case 22: + result += "nd"; + break; + case 3: + case 23: + result += "rd"; + break; + default: + result += "th"; + break; + } + return result; + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryRevisionLine.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryRevisionLine.cs.meta new file mode 100644 index 0000000..2659a3c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/CollabHistoryRevisionLine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c737f7a9d78541d1ab25f28f045dd32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/HistoryProgressSpinner.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/HistoryProgressSpinner.cs new file mode 100644 index 0000000..fad3b82 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/HistoryProgressSpinner.cs @@ -0,0 +1,69 @@ +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal class HistoryProgressSpinner : Image + { + private readonly Texture2D[] m_StatusWheelTextures; + private bool m_ProgressEnabled; + private IVisualElementScheduledItem m_Animation; + + public bool ProgressEnabled + { + set + { + if (m_ProgressEnabled == value) + return; + + m_ProgressEnabled = value; + visible = value; + + + if (value) + { + if (m_Animation == null) + { + m_Animation = this.schedule.Execute(AnimateProgress).Every(33); + } + else + { + m_Animation.Resume(); + } + } + else + { + if (m_Animation != null) + { + m_Animation.Pause(); + } + } + } + } + + public HistoryProgressSpinner() + { + m_StatusWheelTextures = new Texture2D[12]; + for (int i = 0; i < 12; i++) + { + m_StatusWheelTextures[i] = EditorGUIUtility.LoadIcon("WaitSpin" + i.ToString("00")); + } + image = m_StatusWheelTextures[0]; + style.width = m_StatusWheelTextures[0].width; + style.height = m_StatusWheelTextures[0].height; + visible = false; + } + + private void AnimateProgress(TimerState obj) + { + int frame = (int)Mathf.Repeat(Time.realtimeSinceStartup * 10, 11.99f); + image = m_StatusWheelTextures[frame]; + MarkDirtyRepaint(); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/HistoryProgressSpinner.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/HistoryProgressSpinner.cs.meta new file mode 100644 index 0000000..0ded4e8 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/HistoryProgressSpinner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf6aca931950a4a6a886e214e9e649c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/ICollabHistoryItemFactory.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/ICollabHistoryItemFactory.cs new file mode 100644 index 0000000..03239a3 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/ICollabHistoryItemFactory.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using UnityEditor.Collaboration; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +#endif + +namespace UnityEditor.Collaboration +{ + internal interface ICollabHistoryItemFactory + { + IEnumerable GenerateElements(IEnumerable revsRevisions, int mTotalRevisions, int startIndex, string tipRev, string inProgressRevision, bool revisionActionsEnabled, bool buildServiceEnabled, string currentUser); + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/ICollabHistoryItemFactory.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/ICollabHistoryItemFactory.cs.meta new file mode 100644 index 0000000..08e9085 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/ICollabHistoryItemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 821f5482c5a3f4389885f4432433f56f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/PagedListView.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/PagedListView.cs new file mode 100644 index 0000000..472a70e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/PagedListView.cs @@ -0,0 +1,192 @@ +using System; +using System.Collections.Generic; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +namespace UnityEditor.Collaboration +{ + internal interface IPagerData + { + int curPage { get; } + int totalPages { get; } + PageChangeAction OnPageChanged { get; } + } + + internal class PagerElement : VisualElement + { + IPagerData m_Data; + readonly Label m_PageText; + readonly Button m_DownButton; + readonly Button m_UpButton; + + public PagerElement(IPagerData dataSource) + { + m_Data = dataSource; + + this.style.flexDirection = FlexDirection.Row; + this.style.alignSelf = Align.Center; + + Add(m_DownButton = new Button(OnPageDownClicked) {text = "\u25c5 Newer"}); + m_DownButton.AddToClassList("PagerDown"); + + m_PageText = new Label(); + m_PageText.AddToClassList("PagerLabel"); + Add(m_PageText); + + Add(m_UpButton = new Button(OnPageUpClicked) {text = "Older \u25bb"}); + m_UpButton.AddToClassList("PagerUp"); + + UpdateControls(); + } + + void OnPageDownClicked() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "NewerPage"); + m_Data.OnPageChanged(m_Data.curPage - 1); + } + + void OnPageUpClicked() + { + CollabAnalytics.SendUserAction(CollabAnalytics.historyCategoryString, "OlderPage"); + m_Data.OnPageChanged(m_Data.curPage + 1); + } + + public void Refresh() + { + UpdateControls(); + } + + void UpdateControls() + { + var curPage = m_Data.curPage; + var totalPages = m_Data.totalPages; + + m_PageText.text = (curPage + 1) + " / " + totalPages; + m_DownButton.SetEnabled(curPage > 0); + m_UpButton.SetEnabled(curPage < totalPages - 1); + } + } + + internal enum PagerLocation + { + Top, + Bottom, + } + + internal class PagedListView : VisualElement, IPagerData + { + public const int DefaultItemsPerPage = 10; + + readonly VisualElement m_ItemContainer; + readonly PagerElement m_PagerTop, m_PagerBottom; + int m_PageSize = DefaultItemsPerPage; + IEnumerable m_Items; + int m_TotalItems; + int m_CurPage; + + public int pageSize + { + set { m_PageSize = value; } + } + + public IEnumerable items + { + set + { + m_Items = value; + LayoutItems(); + } + } + + public int totalItems + { + set + { + if (m_TotalItems == value) + return; + + m_TotalItems = value; + UpdatePager(); + } + } + + public PageChangeAction OnPageChanged { get; set; } + + public PagedListView() + { + m_PagerTop = new PagerElement(this); + + m_ItemContainer = new VisualElement() + { + name = "PagerItems", + }; + Add(m_ItemContainer); + m_Items = new List(); + + m_PagerBottom = new PagerElement(this); + } + + void LayoutItems() + { + m_ItemContainer.Clear(); + foreach (var item in m_Items) + { + m_ItemContainer.Add(item); + } + } + + void UpdatePager() + { + if (m_PagerTop.parent != this && totalPages > 1 && curPage > 0) + Insert(0, m_PagerTop); + if (m_PagerTop.parent == this && (totalPages <= 1 || curPage == 0)) + Remove(m_PagerTop); + + if (m_PagerBottom.parent != this && totalPages > 1) + Add(m_PagerBottom); + if (m_PagerBottom.parent == this && totalPages <= 1) + Remove(m_PagerBottom); + + m_PagerTop.Refresh(); + m_PagerBottom.Refresh(); + } + + int pageCount + { + get + { + var pages = m_TotalItems / m_PageSize; + if (m_TotalItems % m_PageSize > 0) + pages++; + + return pages; + } + } + + public int curPage + { + get { return m_CurPage; } + set + { + m_CurPage = value; + UpdatePager(); + } + } + + public int totalPages + { + get + { + var extraPage = 0; + if (m_TotalItems % m_PageSize > 0) + extraPage = 1; + return m_TotalItems / m_PageSize + extraPage; + } + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/PagedListView.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/PagedListView.cs.meta new file mode 100644 index 0000000..565f7a2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/PagedListView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50de529b6a28f4a7093045e08810a5df +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/StatusView.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/StatusView.cs new file mode 100644 index 0000000..9b50e7a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/StatusView.cs @@ -0,0 +1,88 @@ +using System; +using UnityEditor; +using UnityEngine; + +#if UNITY_2019_1_OR_NEWER +using UnityEngine.UIElements; +#else +using UnityEngine.Experimental.UIElements; +using UnityEngine.Experimental.UIElements.StyleEnums; +#endif + +namespace UnityEditor.Collaboration +{ + internal class StatusView : VisualElement + { + Image m_Image; + Label m_Message; + Button m_Button; + Action m_Callback; + + public Texture icon + { + get { return m_Image.image; } + set + { + m_Image.image = value; + m_Image.visible = value != null; + // Until "display: hidden" is added, this is the only way to hide an element + m_Image.style.height = value != null ? 150 : 0; + } + } + + public string message + { + get { return m_Message.text; } + set + { + m_Message.text = value; + m_Message.visible = value != null; + } + } + + public string buttonText + { + get { return m_Button.text; } + set + { + m_Button.text = value; + UpdateButton(); + } + } + + public Action callback + { + get { return m_Callback; } + set + { + m_Callback = value; + UpdateButton(); + } + } + + public StatusView() + { + name = "StatusView"; + + this.StretchToParentSize(); + + m_Image = new Image() { name = "StatusIcon", visible = false, style = { height = 0f }}; + m_Message = new Label() { name = "StatusMessage", visible = false}; + m_Button = new Button(InternalCallaback) { name = "StatusButton", visible = false}; + + Add(m_Image); + Add(m_Message); + Add(m_Button); + } + + private void UpdateButton() + { + m_Button.visible = m_Button.text != null && m_Callback != null; + } + + private void InternalCallaback() + { + m_Callback(); + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/StatusView.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/StatusView.cs.meta new file mode 100644 index 0000000..bb634b1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Collab/Views/StatusView.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 08e9894bdf0834710b22d3c0aa245ac0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources.meta new file mode 100644 index 0000000..01229c2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a6ab6fd2b91214e8a9c8ec2224a528de +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles.meta new file mode 100644 index 0000000..0ff0382 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6b1ae1e78552c459d9ce27048ff51c7f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryCommon.uss b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryCommon.uss new file mode 100644 index 0000000..3968493 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryCommon.uss @@ -0,0 +1,259 @@ +.unity-button { + min-height:unset; + -unity-text-align:middle-center; + margin-left:4px; + margin-top:3px; + margin-right:4px; + margin-bottom:3px; + border-left-width:6px; + border-top-width:4px; + border-right-width:6px; + border-bottom-width:4px; + padding-left:6 px; + padding-top:2 px; + padding-right:6 px; + padding-bottom:3 px; +} + +.unity-label { + overflow: hidden; + margin-left:4px; + margin-top:2px; + margin-right:4px; + margin-bottom:2px; + padding-left:2 px; + padding-top:1 px; + min-height: unset; +} + +#HistoryContainer { + flex: 1 0 0; +} + +#HistoryItem { + flex: 1 0 0; + flex-direction: row; +} + +#HistoryDetail { + margin-top: 10px; + margin-left: 10px; + margin-bottom: 10px; + margin-right: 10px; + padding-top: 4px; + flex: 1 0 0; +} + +#Author { + -unity-font-style: bold; + font-size: 12px; +} + +#HistoryDetail > Button { + align-self: flex-end; +} + +CollabHistoryRevisionLine { + width: 40px; +} + +#RevisionLine { + flex: 1 0 0; + margin-left: 35px; + width: 1.5px; +} + +#RevisionLine.topLine { + height: 20px; + flex: 0 0 auto; +} + +#RevisionLine.absentDateLine { + background-color: #797676; +} + +.absentRevision #RevisionLine { + background-color: #797676; +} + +.currentRevision #RevisionLine.topLine { + background-color: #797676; +} + +#RevisionIndex { + position: absolute; + min-width: 23px; + -unity-text-align: middle-right; + top: 15.8px; + font-size: 9px; +} + +#RevisionIndicator { + position: absolute; + background-color: #000; + border-radius: 3px; + width: 8px; + height: 8px; + border-bottom-width: 2px; + border-left-width: 2px; + border-right-width: 2px; + border-top-width: 2px; + top: 20px; + left: 32px; +} + +.revisionLineHeader { + width: 200px; + height: 20px; +} + +.revisionLineHeader > .unity-label { + position: absolute; + margin-left: 47px; + margin-top: 3px; +} + +#PagerItems { + flex-direction: column; +} + +PagerElement > .unity-label { + margin-top: 8px; +} + +.absentRevision #RevisionIndicator { + border-color: #797676; +} + +.absentRevision #RevisionIndex { + color: #797676; +} + +.currentRevision #HistoryDetail { + border-top-width: 2px; +} + +#HistoryItem #RevisionDescription { + white-space: normal; +} + +#HistoryItem #ToggleDescription { + align-self: flex-start; + padding-top: 0; + padding-left: 0; + padding-right: 0; + padding-bottom: 2; +} + +#HistoryItem #ActionButton { + position: absolute; + right: 0; +} + +#HistoryItem #BuildIcon { + width: 16px; + height: 13px; +} + +#HistoryItemActionsTray { + flex: 1 0 0; + flex-direction: row; + align-items: center; + height: 38px; + margin-left: 10px; + margin-right: 10px; +} + +CollabHistoryDropDown { + border-top-width: 1px; +} + +CollabHistoryDropDown > .unity-label { + padding-top: 10px; + padding-bottom: 10px; +} + +CollabHistoryDropDownItem { + flex-direction: row; + border-top-width: 1px; + overflow: hidden; +} + +#FileIcon { + align-self: center; + width: 26px; + height: 26px; +} + +#FileName { + -unity-font-style: bold; + padding-bottom: 0; + margin-bottom: 0; +} + +#FileIcon { + padding-top: 0; + margin-top: 0; +} + +#ErrorBar { + height: 24px; + background-color: #ff0000; + color: #000; + font-size: 12px; +} + +#ErrorBar > #CloseButton { + position: absolute; + right: 0; + top: 0; + width: 24px; + height: 24; + color: #000; + font-size: 18px; + -unity-font-style: bold; +} + +#StatusView { + flex-direction: column; + justify-content: center; + align-self: center; + align-items: center; + flex: 1 0 0; +} + +#StatusView > #StatusIcon { + width: 115px; + height: 150px; +} + +#StatusView > #StatusMessage { + font-size: 22px; + width: 230px; + white-space: normal; + -unity-text-align: middle-center; +} + +#StatusView > #StatusButton { + font-size: 12px; + margin-top: 20px; + background-image: none; + width: 108px; + height: 29px; +} + +BuildStatusButton.unity-button { + flex-direction: row; + align-self: flex-end; + align-items: center; + margin-right: 10px; + padding-left:unset; + padding-top:unset; + padding-right:unset; + padding-bottom:unset; +} + +BuildStatusButton.unity-button .unity-label { + padding-left: 2px; +} + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryCommon.uss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryCommon.uss.meta new file mode 100644 index 0000000..035b662 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryCommon.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3a2d94c8977984b67984caeff9fa666e +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryDark.uss b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryDark.uss new file mode 100644 index 0000000..de436f8 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryDark.uss @@ -0,0 +1,86 @@ +#HistoryContainer { + background-color: #292929; +} + +.obtainedRevision #HistoryDetail { + background-color: #333; +} + +.absentRevision #HistoryDetail { + background-color: #595959; +} + +#StatusView { + background-color: #292929; +} + +#StatusView > #StatusMessage { + color: #959995; +} + +BuildStatusButton.unity-button { + color: #B4B4B4; + background-image: resource("Builtin Skins/DarkSkin/Images/btn.png"); +} + +BuildStatusButton.unity-button:hover { + color: #FFF; +} + +BuildStatusButton.unity-button:hover:active { + background-image: resource("Builtin Skins/DarkSkin/Images/btn act.png"); +} + +BuildStatusButton.unity-button:checked { + color: #F0F0F0; + background-image: resource("Builtin Skins/DarkSkin/Images/btn on.png"); +} + +BuildStatusButton.unity-button:hover:checked { + color: #FFF; +} + +BuildStatusButton.unity-button:hover:active:checked { + background-image: resource("Builtin Skins/DarkSkin/Images/btn onact.png"); +} + +BuildStatusButton.unity-button:focus:checked { + background-image: resource("Builtin Skins/DarkSkin/Images/btn on focus.png"); +} + +CollabHistoryDropDown { + border-color: #292929; +} + +CollabHistoryDropDownItem { + border-color: #292929; +} + +#RevisionLine.obtainedDateLine { + background-color: #0cb4cc; +} + +.obtainedRevision #RevisionLine { + background-color: #0cb4cc; +} + +#RevisionIndex { + color: #0cb4cc; +} + +#RevisionIndicator { + border-color: #0cb4cc; +} + +.currentRevision #RevisionIndicator { + background-color: #0cb4cc; +} + +.currentRevision #HistoryDetail { + border-color: #0cb4cc; +} + +#StatusView > #StatusButton { + background-color: #0cb4cc; + border-color: #0cb4cc; +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryDark.uss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryDark.uss.meta new file mode 100644 index 0000000..35a7d09 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryDark.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 70d4d75a2877243758b0750cbc75b6eb +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryLight.uss b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryLight.uss new file mode 100644 index 0000000..3f9b85f --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryLight.uss @@ -0,0 +1,86 @@ +#HistoryContainer { + background-color: #a2a2a2; +} + +.obtainedRevision #HistoryDetail { + background-color: #c2c2c2; +} + +.absentRevision #HistoryDetail { + background-color: #dedede; +} + +#StatusView { + background-color: #a2a2a3; +} + +#StatusView > #StatusMessage { + color: #000; +} + +BuildStatusButton.unity-button { + color: #111; + background-image: resource("Builtin Skins/LightSkin/Images/btn.png"); +} + +BuildStatusButton.unity-button:hover { + color: #000; +} + +BuildStatusButton.unity-button:hover:active { + background-image: resource("Builtin Skins/LightSkin/Images/btn act.png"); +} + +BuildStatusButton.unity-button:checked { + color: #F0F0F0; + background-image: resource("Builtin Skins/LightSkin/Images/btn on.png"); +} + +BuildStatusButton.unity-button:hover:checked { + color: #000; +} + +BuildStatusButton.unity-button:hover:active:checked { + background-image: resource("Builtin Skins/LightSkin/Images/btn onact.png"); +} + +BuildStatusButton.unity-button:focus:checked { + background-image: resource("Builtin Skins/LightSkin/Images/btn on focus.png"); +} + +CollabHistoryDropDown { + border-color: #a2a2a2; +} + +CollabHistoryDropDownItem { + border-color: #a2a2a2; +} + +#RevisionLine.obtainedDateLine { + background-color: #018d98; +} + +.obtainedRevision #RevisionLine { + background-color: #018d98; +} + +#RevisionIndex { + color: #018d98; +} + +#RevisionIndicator { + border-color: #018d98; +} + +.currentRevision #RevisionIndicator { + background-color: #018d98; +} + +.currentRevision #HistoryDetail { + border-color: #018d98; +} + +#StatusView > #StatusButton { + background-color: #018d98; + border-color: #018d98; +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryLight.uss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryLight.uss.meta new file mode 100644 index 0000000..28c860e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Resources/Styles/CollabHistoryLight.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b52bde26a83564960bcb90217f72b910 +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Unity.CollabProxy.Editor.asmdef b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Unity.CollabProxy.Editor.asmdef new file mode 100644 index 0000000..66511e1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Unity.CollabProxy.Editor.asmdef @@ -0,0 +1,7 @@ +{ + "name": "Unity.CollabProxy.Editor", + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Unity.CollabProxy.Editor.asmdef.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Unity.CollabProxy.Editor.asmdef.meta new file mode 100644 index 0000000..03ebeca --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Editor/Unity.CollabProxy.Editor.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 645165c8169474bfbbeb8fb0bcfd26f5 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/LICENSE.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/LICENSE.md new file mode 100644 index 0000000..31bde4e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/LICENSE.md @@ -0,0 +1,31 @@ +**Unity Companion Package License v1.0 ("_License_")** + +Copyright © 2017 Unity Technologies ApS ("**_Unity_**") + +Unity hereby grants to you a worldwide, non-exclusive, no-charge, and royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute the software that is made available with this License ("**_Software_**"), subject to the following terms and conditions: + +1. *Unity Companion Use Only*. Exercise of the license granted herein is limited to exercise for the creation, use, and/or distribution of applications, software, or other content pursuant to a valid Unity development engine software license ("**_Engine License_**"). That means while use of the Software is not limited to use in the software licensed under the Engine License, the Software may not be used for any purpose other than the creation, use, and/or distribution of Engine License-dependent applications, software, or other content. No other exercise of the license granted herein is permitted. + +1. *No Modification of Engine License*. Neither this License nor any exercise of the license granted herein modifies the Engine License in any way. + +1. *Ownership & Grant Back to You*. + + 3.1. You own your content. In this License, "derivative works" means derivatives of the Software itself--works derived only from the Software by you under this License (for example, modifying the code of the Software itself to improve its efficacy); “derivative works” of the Software do not include, for example, games, apps, or content that you create using the Software. You keep all right, title, and interest to your own content. + + 3.2. Unity owns its content. While you keep all right, title, and interest to your own content per the above, as between Unity and you, Unity will own all right, title, and interest to all intellectual property rights (including patent, trademark, and copyright) in the Software and derivative works of the Software, and you hereby assign and agree to assign all such rights in those derivative works to Unity. + + 3.3. You have a license to those derivative works. Subject to this License, Unity grants to you the same worldwide, non-exclusive, no-charge, and royalty-free copyright license to derivative works of the Software you create as is granted to you for the Software under this License. + +1. *Trademarks*. You are not granted any right or license under this License to use any trademarks, service marks, trade names, products names, or branding of Unity or its affiliates ("**_Trademarks_**"). Descriptive uses of Trademarks are permitted; see, for example, Unity’s Branding Usage Guidelines at [https://unity3d.com/public-relations/brand](https://unity3d.com/public-relations/brand). + +1. *Notices & Third-Party Rights*. This License, including the copyright notice above, must be provided in all substantial portions of the Software and derivative works thereof (or, if that is impracticable, in any other location where such notices are customarily placed). Further, if the Software is accompanied by a Unity "third-party notices" or similar file, you acknowledge and agree that software identified in that file is governed by those separate license terms. + +1. *DISCLAIMER, LIMITATION OF LIABILITY*. THE SOFTWARE AND ANY DERIVATIVE WORKS THEREOF IS PROVIDED ON AN "AS IS" BASIS, AND IS PROVIDED WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR NONINFRINGEMENT. IN NO EVENT SHALL ANY COPYRIGHT HOLDER OR AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES (WHETHER DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL, INCLUDING PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF USE, DATA, OR PROFITS, AND BUSINESS INTERRUPTION), OR OTHER LIABILITY WHATSOEVER, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM OR OUT OF, OR IN CONNECTION WITH, THE SOFTWARE OR ANY DERIVATIVE WORKS THEREOF OR THE USE OF OR OTHER DEALINGS IN SAME, EVEN WHERE ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +1. *USE IS ACCEPTANCE and License Versions*. Your receipt and use of the Software constitutes your acceptance of this License and its terms and conditions. Software released by Unity under this License may be modified or updated and the License with it; upon any such modification or update, you will comply with the terms of the updated License for any use of any of the Software under the updated License. + +1. *Use in Compliance with Law and Termination*. Your exercise of the license granted herein will at all times be in compliance with applicable law and will not infringe any proprietary rights (including intellectual property rights); this License will terminate immediately on any breach by you of this License. + +1. *Severability*. If any provision of this License is held to be unenforceable or invalid, that provision will be enforced to the maximum extent possible and the other provisions will remain in full force and effect. + +1. *Governing Law and Venue*. This License is governed by and construed in accordance with the laws of Denmark, except for its conflict of laws rules; the United Nations Convention on Contracts for the International Sale of Goods will not apply. If you reside (or your principal place of business is) within the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the state and federal courts located in San Francisco County, California concerning any dispute arising out of this License ("**_Dispute_**"). If you reside (or your principal place of business is) outside the United States, you and Unity agree to submit to the personal and exclusive jurisdiction of and venue in the courts located in Copenhagen, Denmark concerning any Dispute. diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/LICENSE.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/LICENSE.md.meta new file mode 100644 index 0000000..30f5c3a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c754112a02f354a6696fa4f2b99e95a5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/README.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/README.md new file mode 100644 index 0000000..5cfbd88 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/README.md @@ -0,0 +1,16 @@ +# Collab Proxy UPM Package +This is the packaged version of Collab, currently limited to containing the History and Toolbar windows, along with supporting classes. + +## Development +Check this repository out in your {$PROJECT}/Packages/ folder, under the name com.unity.collab-proxy. The classes will be built by Unity. + +## Testing +In order to run the tests, you will need to add this project to the testables key in your manifest.json - once you have done this, the tests will be picked up by the Unity Test Runner window. + +## Building +You may build this project using msbuild. The commands to do so can be seen under .gitlab-ci.yml. + +## Deploying +Gitlab will automatically build your project when you deploy. You can download the resulting artifact, which will be a dll, and place it in your Editor/bin/ folder. Open the package in Unity to generate the meta files, and then you will be able to publish. + +We're currently looking into a way to avoid this manual process. diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/README.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/README.md.meta new file mode 100644 index 0000000..b3ad993 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ac281230df7b14becb40b3c479f1b429 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests.meta new file mode 100644 index 0000000..f43ddd3 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1369382d2c5e64dc5b2ec0b6b0a94531 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor.meta new file mode 100644 index 0000000..b80cefd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4506ac79f5b274cb1b249ed7f4abfb9a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/HistoryTests.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/HistoryTests.cs new file mode 100644 index 0000000..ba79a20 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/HistoryTests.cs @@ -0,0 +1,583 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEditor.Collaboration; +using UnityEngine.TestTools; +using NUnit.Framework; + +namespace UnityEditor.Collaboration.Tests +{ + [TestFixture] + internal class HistoryTests + { + private TestHistoryWindow _window; + private TestRevisionsService _service; + private CollabHistoryPresenter _presenter; + + [SetUp] + public void SetUp() + { + _window = new TestHistoryWindow(); + _service = new TestRevisionsService(); + _presenter = new CollabHistoryPresenter(_window, new CollabHistoryItemFactory(), _service); + } + + [TearDown] + public void TearDown() + { + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__PropagatesRevisionResult() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(authorName: "authorName", comment: "comment", revisionID: "revisionID"), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual("revisionID", item.id); + Assert.AreEqual("authorName", item.authorName); + Assert.AreEqual("comment", item.comment); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__RevisionNumberingIsInOrder() + { + _service.result = new RevisionsResult() + { + RevisionsInRepo = 4, + Revisions = new List() + { + new Revision(revisionID: "0"), + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + } + }; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.AreEqual(4, items[0].index); + Assert.AreEqual(3, items[1].index); + Assert.AreEqual(2, items[2].index); + Assert.AreEqual(1, items[3].index); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__RevisionNumberingChangesForMorePages() + { + _service.result = new RevisionsResult() + { + RevisionsInRepo = 12, + Revisions = new List() + { + new Revision(revisionID: "0"), + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + new Revision(revisionID: "4"), + } + }; + + _presenter.OnUpdatePage(1); + var items = _window.items.ToArray(); + + Assert.AreEqual(12, items[0].index); + Assert.AreEqual(11, items[1].index); + Assert.AreEqual(10, items[2].index); + Assert.AreEqual(9, items[3].index); + Assert.AreEqual(8, items[4].index); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ObtainedIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(isObtained: false), + new Revision(isObtained: true), + } + }; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.IsFalse(items[0].obtained); + Assert.IsTrue(items[1].obtained); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__CurrentIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + } + }; + _service.tipRevision = "2"; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.AreEqual(false, items[0].current); + Assert.AreEqual(true, items[1].current); + Assert.AreEqual(false, items[2].current); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__InProgressIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "1"), + new Revision(revisionID: "2"), + new Revision(revisionID: "3"), + } + }; + _window.inProgressRevision = "2"; + + _presenter.OnUpdatePage(0); + var items = _window.items.ToArray(); + + Assert.IsFalse(items[0].inProgress); + Assert.IsTrue(items[1].inProgress); + Assert.IsFalse(items[2].inProgress); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__EnabledIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _window.revisionActionsEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(true, item.enabled); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__DisabledIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _window.revisionActionsEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(false, item.enabled); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasNoneWhenNotTip() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "1"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.None, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateTipHasNoneWhenEnabled() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.None, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasConfigureWhenTip() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Configure, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasConfigureWhenZeroBuildStatus() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = false; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Configure, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasNoneWhenZeroBuildStatuses() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0"), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.None, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasSuccessWhenCompleteAndSucceeded() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[1] + { + new CloudBuildStatus(complete: true, success: true), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Success, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasInProgress() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[1] + { + new CloudBuildStatus(complete: false), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.InProgress, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasFailure() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[1] + { + new CloudBuildStatus(complete: true, success: false), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Failed, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__BuildStateHasFailureWhenAnyBuildsFail() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + revisionID: "0", + buildStatuses: new CloudBuildStatus[3] + { + new CloudBuildStatus(complete: true, success: false), + new CloudBuildStatus(complete: true, success: false), + new CloudBuildStatus(complete: true, success: true), + } + ), + } + }; + _service.tipRevision = "0"; + _presenter.BuildServiceEnabled = true; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(BuildState.Failed, item.buildState); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ChangesPropagateThrough() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0", entries: GenerateChangeActions(3)), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + var changes = item.changes.ToList(); + + Assert.AreEqual("Path0", changes[0].path); + Assert.AreEqual("Path1", changes[1].path); + Assert.AreEqual("Path2", changes[2].path); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ChangesTotalIsCalculated() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0", entries: GenerateChangeActions(3)), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(3, item.changes.Count); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__ChangesTruncatedIsCalculated() + { + for (var i = 0; i < 20; i++) + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(revisionID: "0", entries: GenerateChangeActions(i)), + } + }; + + _presenter.OnUpdatePage(0); + var item = _window.items.First(); + + Assert.AreEqual(i > 10, item.changesTruncated); + } + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__OnlyKeeps10ChangeActions() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision(authorName: "Test", author: "test", entries: GenerateChangeActions(12)), + } + }; + + _presenter.OnUpdatePage(1); + var item = _window.items.First(); + + Assert.AreEqual(10, item.changes.Count); + Assert.AreEqual(12, item.changesTotal); + Assert.AreEqual(true, item.changesTruncated); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__DeduplicatesMetaFiles() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + authorName: "Test", + author: "test", + revisionID: "", + entries: new ChangeAction[2] + { + new ChangeAction(path: "Path1", action: "Action1"), + new ChangeAction(path: "Path1.meta", action: "Action1"), + } + ), + } + }; + + _presenter.OnUpdatePage(1); + var item = _window.items.First(); + + Assert.AreEqual(1, item.changes.Count); + Assert.AreEqual(1, item.changesTotal); + Assert.AreEqual("Path1", item.changes.First().path); + } + + [Test] + public void CollabHistoryPresenter_OnUpdatePage__FolderMetaFilesAreCounted() + { + _service.result = new RevisionsResult() + { + Revisions = new List() + { + new Revision + ( + authorName: "Test", + author: "test", + entries: new ChangeAction[1] + { + new ChangeAction(path: "Folder1.meta", action: "Action1"), + } + ), + } + }; + + _presenter.OnUpdatePage(1); + var item = _window.items.First(); + + Assert.AreEqual(1, item.changes.Count); + Assert.AreEqual(1, item.changesTotal); + Assert.AreEqual("Folder1", item.changes.First().path); + } + + private static ChangeAction[] GenerateChangeActions(int count) + { + var entries = new ChangeAction[count]; + for (var i = 0; i < count; i++) + entries[i] = new ChangeAction(path: "Path" + i, action: "Action" + i); + return entries; + } + } + + internal class TestRevisionsService : IRevisionsService + { + public RevisionsResult result; + public event RevisionsDelegate FetchRevisionsCallback; + + public string tipRevision { get; set; } + public string currentUser { get; set; } + + public void GetRevisions(int offset, int count) + { + if(FetchRevisionsCallback != null) + { + FetchRevisionsCallback(result); + } + } + } + + internal class TestHistoryWindow : ICollabHistoryWindow + { + public IEnumerable items; + + public bool revisionActionsEnabled { get; set; } + public int itemsPerPage { get; set; } + public string errMessage { get; set; } + public string inProgressRevision { get; set; } + public PageChangeAction OnPageChangeAction { get; set; } + public RevisionAction OnGoBackAction { get; set; } + public RevisionAction OnUpdateAction { get; set; } + public RevisionAction OnRestoreAction { get; set; } + public ShowBuildAction OnShowBuildAction { get; set; } + public Action OnShowServicesAction { get; set; } + + public void UpdateState(HistoryState state, bool force) + { + } + + public void UpdateRevisions(IEnumerable items, string tip, int totalRevisions, int currPage) + { + this.items = items; + } + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/HistoryTests.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/HistoryTests.cs.meta new file mode 100644 index 0000000..d648a7f --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/HistoryTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23a56a19774ed42b6b65646af08a003c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef new file mode 100644 index 0000000..3467a9e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef @@ -0,0 +1,13 @@ +{ + "name": "Unity.CollabProxy.EditorTests", + "references": [ + "Unity.CollabProxy.Editor" + ], + "optionalUnityReferences": [ + "TestAssemblies" + ], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [] +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef.meta new file mode 100644 index 0000000..57db5c7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/Tests/Editor/Unity.CollabProxy.EditorTests.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 782de34c17796430ba8d0ceddb60944e +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/package.json b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/package.json new file mode 100644 index 0000000..473c782 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/package.json @@ -0,0 +1,21 @@ +{ + "name": "com.unity.collab-proxy", + "displayName": "Unity Collaborate", + "version": "1.2.15", + "unity": "2018.3", + "description": "Collaborate is a simple way for teams to save, share, and sync their Unity project", + "keywords": [ + "collab", + "collaborate", + "teams", + "team", + "cloud", + "backup" + ], + "dependencies": {}, + "repository": { + "type": "git", + "url": "https://gitlab.cds.internal.unity3d.com/upm-packages/cloud-services/collab-proxy.git", + "revision": "95a78b0bc11f99338fc2bd037a817aa69d199b56" + } +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/package.json.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/package.json.meta new file mode 100644 index 0000000..c52d0c6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.collab-proxy@1.2.15/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 57b0c806ba25b48aa8a6ecb3345a4a9b +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/CHANGELOG.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/CHANGELOG.md new file mode 100644 index 0000000..c61e243 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/CHANGELOG.md @@ -0,0 +1,131 @@ +# Changelog +All notable changes to this package will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) +and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [2.0.3] - 2018-10-10 +- When a preview package is installed, keep showing updates even if "Show Preview Packages" is not checked +- When user as not already choose to show or hide Preview Packages: + - If a preview package is already installed, "Show Preview Packages" is checked + - If no preview packages are installed, "Show Preview Packages" is not checked + +## [2.0.2] - 2018-10-04 +- Documentation Update +- Update dialog title to "Unity Package Manager" + +## [2.0.1] - 2018-09-14 +- Move undesired public classes to internal +- Minor fix to the documentation + +## [2.0.0] - 2018-09-10 +- Always mark a package as up to date when it's not installed +- Add "Advanced" menu +- Hide preview packages by default +- Labelled packages with major version '0' as preview +- Fixed cropped error message +- Disabled downgrading Package Manager UI to incompatible versions +- Updated docs to reflect the new UI +- Fix incorrect verified tag on preview packages +- UI Fixes: + - Change mouse cursor when hovering over links + - Tweak UI layout for better alignment +- Fixed dropdown to work with 2018.3 editor +- Updated style to reflect changes in VisualElements +- Added packages serialization to avoid unnecessary refreshes +- Enable "View Documentation" Button on built-in packages, and make it point to the url contained in the description string +- Added persistent error icon when there are package add or remove errors +- Filter by name, category, version and release tag +- Show All Package by default +- MenuDropdown for All packages/In project/Built-in +- UI redesign +- Remove sentence "This package is installed for..." and all other sentence regarding status of the package +- Hide buttons for embedded, git and local packages +- Display "No results for "" + +## [1.9.9] - 2018-05-09 +- Only show user visible versions in the UI + +## [1.9.8] - 2018-05-01 +- Fixed package to work with 2018.3 +- Deprecated 2018.1 because of its inability to update without error + +## [1.9.6] - 2018-04-10 +- Added ability to choose a package version +- Added loading indicator when retrieving package lists + +## [1.9.5] - 2018-03-28 +- Optimize packages list loading +- Fixes for UXML factories changes in Unity +- UI Fixes: + - "View changes" update position and label should say "View Changelog" + - Packages list should not have padding + - preview and verified tags should be lower case everywhere + - the package displayed name should stay on 1 line + +## [1.9.3] - 2018-03-11 +- Added caching for faster UI response time +- Exposed APIs for the Package Manager UI extension mechanism + +## [1.8.2] - 2018-03-02 +- Modified Tags to reflect new package workflow (Preview -> Released(no tag) -> Verified) + +## [1.8.1] - 2018-02-23 +- Removed Recommended tag if package version is alpha, beta or experimental + +## [1.8.0] - 2018-02-16 +- Removed support built-in packages +- Fixed packages sorting in All tab +- Fixed error reporting with an invalid manifest + +## [1.7.2] - 2018-02-08 +- Fixed errors when an exception is thrown during an operation +- Changed to only show "View Changes" when there is an update button +- Fixed typos in dialog when updating package manager ui + +## [1.7.0] - 2018-02-05 +- Added 'View Documentation' link to package details +- Added 'View changes' link to package details + +## [1.6.1] - 2018-01-30 +### Fixes +- When updating from 1.5.1, ask user to confirm close of window prior to update +- Made window dockable +- Reworked UI styles +- Enhanced keyboard navigation + +## [1.5.1] - 2018-01-18 +### Fixes +- Replaced VisualContainer by VisualElement in code and templates +- Moved "Project->Packages->Manage" menu item to "Window->Package Manager" +- Showed the latest version and description in tab "Install" instead of the current version +- Added "Recommended" tag properly +- Added "Go back to" when latest version is less than current one +- Removed "Update to" when current version is greater than latest one. (case for embedded or local packages) +- Replaced packages action button label: + - "Install" instead of "Add" for packages + - "Enable/Disable" instead of "Add/Remove" for built-in packages +- Added "alpha", "beta", "experimental" and "recommended" tags support +- Added loading progress while opening window +- Added package description and display name update +- Added extra messaging on package state +- Performed Documentation update + +## [1.3.0] - 2017-12-12 +### Changes +- Added assembly definition files +- Forced SemVer to use .NetStandard +- Fixed ValidationSuiteTests tests +- Handled compatible versions returned in PackageInfo + +## [1.2.0] - 2017-11-16 +### Fixes +- Fixed flickering test When_Default_FirstPackageUIElement_HasSelectedClass, use package only +- Fixed documentation +- Added Doxygen configuration file +- Removed unused fields in package.json +- Changed 'Modules' for 'Built In Packages' +- Removed version display for Built In Packages + +## [1.0.0] - 2017-11-10 +### This is the first release of *Unity Package Manager UI*. diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/CHANGELOG.md.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/CHANGELOG.md.meta new file mode 100644 index 0000000..abc6762 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6277a751c6c9f46359fc7004b3ee12f0 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-DetailsPane.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-DetailsPane.png new file mode 100644 index 0000000..e1c8fc9 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-DetailsPane.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-DocSite.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-DocSite.png new file mode 100644 index 0000000..25b4fb9 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-DocSite.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-ExternalPackageButton.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-ExternalPackageButton.png new file mode 100644 index 0000000..df69fdf Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-ExternalPackageButton.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-Main.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-Main.png new file mode 100644 index 0000000..c9e1803 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-Main.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-SearchResults.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-SearchResults.png new file mode 100644 index 0000000..ad43b6b Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-SearchResults.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-StatusBar_Network.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-StatusBar_Network.png new file mode 100644 index 0000000..e276b57 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-StatusBar_Network.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-StatusBar_Update.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-StatusBar_Update.png new file mode 100644 index 0000000..62757a8 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-StatusBar_Update.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-checkmark.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-checkmark.png new file mode 100644 index 0000000..05dbce9 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-checkmark.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-downloadicon.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-downloadicon.png new file mode 100644 index 0000000..4393f67 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-downloadicon.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-errorflag.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-errorflag.png new file mode 100644 index 0000000..a7fa0ef Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/Images/PackageManagerUI-errorflag.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/package-manager-ui.md b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/package-manager-ui.md new file mode 100644 index 0000000..3c969cb --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Documentation~/package-manager-ui.md @@ -0,0 +1,372 @@ +# Unity Package Manager + +A package is a container that holds any combination of Assets, Shaders, Textures, plug-ins, icons, and scripts that enhance various parts of your Project, including Unity modules (such as Physics or Animation). Unity packages are newer, more tightly integrated versions of Asset Store packages, able to deliver a wide range of enhancements to Unity. + +Use the Unity Package Manager (in Unity’s top menu: __Window__ > __Package Manager__) to view which packages are available for installation or already installed in your Project. In addition, you can use this window to see [which versions are available](#VersionList), and [install](#PackManInstall), [remove](#PackManRemove), [disable](#PackManDisable), or [update](#PackManUpdate) packages for each Project. + +![Packages window](Images/PackageManagerUI-Main.png) + +The Packages window displays: + +- (A) The [package scope drop-down menu](#scope), which allows you to filter which packages appear in the list. +- (B) The [Advanced button](#advanced), which allows you to display preview packages in addition to packages that have been verified to work with Unity. +- (C) The [search box](#searchText), which allows you to look for packages by name. +- (D) The [packages list view](#PackManLists), which displays all packages that match the filter and search parameters you specify. +- (E) The [package-specific detail view](#PackManDetails), which displays information specific to the package selected in the list. +- (F) The [status bar](#statusbar), which displays messages about the package load status and warnings about the network. +- (G) The [Add package from disk button](#extpkg), which allows you to specify the location of an external package. + + +## Finding packages + +The Packages window displays the following types of Unity packages: + +- **Read-only packages** + + These are packages which the Package Manager downloads from the [Unity package registry](#PackManRegistry) as needed. They are not bundled with the Project source and may have dependencies on other packages in external Projects. This type is typical of most Unity packages. + +- **Local packages** + + These are packages that you saved on your computer in an [external](#extpkg) location outside of your current Unity Project. + +- **Built-in packages** + + These represent some of the core Unity features. You can use these packages to [turn Unity modules on and off](#PackManDisable). + +**Note**: You can find out more about what each module implements in the [Unity Scripting API](https://docs.unity3d.com/ScriptReference/). Each module assembly page lists which APIs the built-in package implements. + +By default, the Packages window displays the list of all packages either registered in the [package registry](#PackManRegistry) or installed [locally](#extpkg). + +The following icons show you package status: + +![check mark](Images/PackageManagerUI-checkmark.png) A check mark indicates that the package is already [installed](#PackManInstall) or [enabled](#PackManDisable). + +![download icon](Images/PackageManagerUI-downloadicon.png) The download icon indicates that the installed packages has [an available update](#PackManUpdate). + +![error indicator](Images/PackageManagerUI-errorflag.png) An error icon indicates that something went wrong during installation or loading. For more advice on resolving errors, see [Error messages](#troubleshooting) below. + +You can [filter](#scope) the list to display only packages installed in your Project (including [local](#extpkg) packages), or display only built-in Unity packages. You can also [search](#searchText) for a specific package by package name, tag, or package version number. + + +### Filtering the list + +To change which packages appear in the list, select the scope you want from the drop-down menu in the left hand corner of the Packages window. + +You can select from these options: + +- The **All packages** scope (the default) displays all packages on the [package registry](#PackManRegistry), regardless of whether they are already installed in your Project. This also includes [local](#extpkg) packages (which are always installed). +- The **In Project** scope displays all packages currently installed in your Project, including [local](#extpkg) packages. +- The **Built-in packages** scope displays only built-in Unity packages. + +When you select a new scope, your choice appears on the package scope drop-down menu and the list displays the packages matching your choice. + +**Note:** If you entered any text in the [search box](#searchText), the list only displays packages which match both the scope and the search criteria. + + +### Advanced button + +The **Advanced** button opens a drop-down menu that allows you to show preview packages. Preview package are not verified to work with Unity and might be unstable. They are not not supported in production environments. + +To show the preview packages that are available, click the **Advanced** button, then click the **Show preview packages** menu item. + + +### Searching for packages + +You can use the search box at the top of the Packages window to find any packages that match the text you enter. The Package Manager updates the package list as you enter text, displaying every package within the current scope that matches. For example, if you enter `web` in the search box, the list displays different results depending on whether you chose the **Built-in packages** scope or the **All packages** scope: + +![Built-in package scope](Images/PackageManagerUI-SearchResults.png) + +You can look for a package by its [package name](#PackManManifestsPackage), its [tag name](#version_tags), or its [package version number](#VersionList). The Package Manager analyzes the text that you enter to detect which method you are using and updates the list of packages dynamically. + +**Package name** + +You can search for either the display name as it appears in the Packages window, or the registered package name that begins with `com.unity`. + +Your search text could match the beginning, middle, or end of the package's name. + +**Tag name** + +To search by tag name, enter one of the package version tags. For example, if you enter `verified` in the search box, only packages with a verified tag appear, regardless of their package name. + +**Version number** + +Enter the [version number](#VersionList) in version order (`MAJOR.MINOR.PATCH`). For example, typing `1` returns all packages with versions matching `1.x.x` (for example, `1.0.0`, `1.3.2`, and `1.10.1` all match but not `0.1.0` ). + + +### Status bar + +The Package Manager displays messages in the status bar at the bottom left of the Packages window. + +There are typically three status messages that you might see. The **Loading packages** message appears briefly the first time you open Packman UI in a new Project. However, if the Package Manager [detects a problem](#troubleshooting), such as a missing network connection, the Package Manager displays a warning in the status bar: + +![Network error message](Images/PackageManagerUI-StatusBar_Network.png) + +You will also often see a message informing you when the last update occurred: + +![Update message](Images/PackageManagerUI-StatusBar_Update.png) + + +## Viewing package details + +The pane on the right side of the Packages window displays details about the selected package. + +![Details pane](Images/PackageManagerUI-DetailsPane.png) + +These details include the following information: + - (A) The display name + - (B) The [version number](#VersionList) (and [tag](#version_tags), if available) + - \(C\) The [links](#links) to open the package documentation page, the package change log (if available), and the license information. + - (D) The official package name from the [registry](#PackManRegistry) starting with `com.unity.` + - (E) The author + - (F) A brief description + - (G) Buttons to [install](#PackManInstall) or [update](#PackManUpdate) a package (or the **Up to date** message if the selected version is already installed) + - (H) The package version drop-down menu + - (I) Buttons to [remove](#PackManRemove) or [disable](#PackManDisable) the package + + +### List of versions + +You can view the list of versions available for the current package by clicking the version drop-down menu beside the **Update to** or **Install** button in the upper right of the Package specific detail view. + +- (A) The main menu displays the current version, the latest version (even if it is a preview), and the verified version. +- (B) The submenu displays all available versions. + +You can select any of these versions for the current package and install that specific version using the **Install** or **Update to** button. + + +### Version tags + +Some packages display tags next to the version number. These tags convey information about that version of the package. + +The Package Manager uses the following values: + +| **Tag** | **Meaning** | +|--|--| +| `Verified` | This package has been verified by Unity's Quality Assurance team to work with a specific version of the Editor. | +| `Preview` | This package is at an early stage of the release cycle and may not have been documented and fully validated by either the development team or Unity's Quality Assurance team. | +| `Local` | This package is located on your local disk but is external to your Unity Project folder. | +| *(no tag)* | This package is considered production quality, which means it is fully validated, documented, supported, and incrementally updated. | + + + +### Finding more information + +You can find out more about a package by viewing its documentation, changelog, or license information. + +To access any of these pages, click the **View documentation**, **View changelog**, or **View licences** links. + +The package page opens in your default browser. + +![Package information page](Images/PackageManagerUI-DocSite.png) + +To switch back and forth between the *Manual* documentation, the *Scripting API* documentation, the *Changelog*, and the *License* information for this package, click the corresponding link at the top of the page. + + +## Installing, removing, disabling, and updating packages +You can perform a variety of tasks through the Packages window: + + - [Install a new package](#PackManInstall) + - [Remove an installed package](#PackManRemove) + - [Disable a built-in package](#PackManDisable) + - [Update an installed package](#PackManUpdate) + - [Specify an external package location](#extpkg) + +### Accessing the Packages window + +To open the Packages window, navigate to Unity's main menu and go to **Window** > **Package Manager**. + + +### Installing a new package + +To install a new package: + +1. Open the Packages window and select **All packages** from the [package scope](#scope) drop-down menu. +2. Select the package you want to install from the [list of packages](#PackManLists). The package information appears in the [details pane](#PackManDetails). +3. Select the version you want from the [version drop-down menu](#VersionList). +4. Click the **Install** button. When the progress bar finishes, the new package is ready to use. + + +### Removing an installed package + +You can only remove packages which are not required by another package. + +When you remove a package, any Editor or run-time functionality which it implemented is no longer available. + +To remove an installed package: + +1. Open the Packages window and select **In Project** (or **All packages**) from the [package scope](#scope) drop-down menu. +2. Select the package you want to remove from the [list of packages](#PackManLists). The package information appears in the [details pane](#PackManDetails). +3. Click the **Remove** button. When the progress bar finishes, the package disappears from the list. + +You can restore a removed package from the list when you are in the **All packages** scope. + + +### Disabling a built-in package + +You can disable a built-in package if you don't need some modules and you want to save resources. However, when you disable a built-in package, the corresponding Unity functionality is no longer available. This results in the following: + +- If you use a Scripting API implemented by a disabled package, you get compiler errors. +- Components implemented by the disabled built-in package are also disabled, which means you cannot add them to any GameObjects. If you have a GameObject that already has one of these components, Unity ignores them in Play mode. You can see them in the Inspector window but they are greyed out to indicate that they are not available. +- When building a game, Unity strips all disabled components. For build targets which support engine code stripping (like WebGL, iOS, and Android), Unity doesn't add any code from a disabled built-in package. + +To disable a built-in package: + 1. Open the Packages window and select **Built-in packages** from the [package scope](#scope) drop-down menu. + 2. Select the package you want to remove from the [list of packages](#PackManLists). Its information appears in the Details pane. + 3. Click the **Disable** button. When the progress bar finishes, the check mark no longer appears next to the built-in package and the **Disable** button becomes an **Enable** button. + +To re-enable a disabled built-in package, click the **Enable** button. + + +### Updating an installed package + +You can update a package while in either the **In Project** or **All** mode: + +1. Open the Packages window. An arrow indicator appears next to any packages that have updates available. +2. Select the package you want to update from the [list of packages](#PackManLists). The package information appears in the [details pane](#PackManDetails). +3. Select the version you want from the [version drop-down menu](#VersionList). +4. Click the **Update to** button. + +When the progress bar finishes, the new package version information appears in the Details pane, and any new functionality is immediately available. + + +### Specifying a local package location + +The Package Manager can load a package from anywhere on your computer even if you saved it outside your Unity Project folder. For example, if you have a package called `com.unity.my-local-package` and you save it on the `Desktop` but your Unity Project is under the `Documents` folder. + +To load a package from your local disk: + +1. Click the plus (`+`) icon in the status bar. + + The **Add package from disk** button appears. + + ![Add package from disk button](Images/PackageManagerUI-ExternalPackageButton.png) + +2. Click the **Add package from disk** button to bring up a file browser. +3. Navigate to the folder root of your local package. +4. Double-click the `package.json` file in the file browser. + + The file browser closes and the package now appears in the [package list](#PackManLists) with the `local` tag. + + +## Error messages + +The Package Manager displays error indicators when it encounters problems: + +- **System-wide issues** + + Error messages that appear in the [status bar](#statusbar) indicate the Package Manager has detected an issue that is not related to a specific package. For example, if the Package Manager cannot access the [package registry server](#PackManRegistry), it displays this message in the status bar: + + ![Network error message](Images/PackageManagerUI-StatusBar_Network.png) + + If your network cannot reach the package registry server, it is probably because there is a connection problem with the network. When you or your system administrator fix the network error, the status bar clears. + +- **Package-specific issues** + + If a specific package has a problem when loading or installing, the error icon (![error indicator](Images/PackageManagerUI-errorflag.png)) appears in the [package list](#PackManLists) next to the compromised package. To find out what the problem is, open the compromised package's [details pane](#PackManDetails). + +## Understanding how packages work + +In addition to its contents (Assets, Shaders, Textures, plug-ins, icons, and scripts), a Unity package contains a [package manifest file](#PackManManifestsPackage). The package manifest tells Unity how to display its information page in the Packages window, and how to install the package in the Project. + +It also contains several files that help manage package deployment, including the tests, samples, license, changelog, and documentation. + + +### Manifests + +There are two types of manifest files: [Project](#PackManManifestsProject) manifests (`manifest.json`), and [package](#PackManManifestsPackage) manifests (`package.json`). Both files use JSON (JavaScript Object Notation) syntax to communicate with the Package Manager, by describing which packages are available for each Project, and what each package contains. + + +#### Project manifests + +Project manifests (`manifest.json`) tell the Package Manager which packages and versions are available to the Project. + +Project manifests support the following value: + +| Key | JSON Type | Description | +|--|--|--| +| `dependencies` | Object |List of packages for the Package Manager to load. These are usually packages officially registered with Unity, but may also include [local packages that are external](#extpkg) to your Unity project. | + + +Example of a `manifest.json` file: + + { + "dependencies": { + "com.unity.package-1": "1.0.0", + "com.unity.package-2": "2.0.0", + "com.unity.package-3": "3.0.0", + "com.unity.my-local-package": "file://com.unity.my-local-package" + } + } + +Unity stores each Project manifest in the `[your_Project_root_folder]/Packages/manifest.json` file. + + +#### Package manifests + +The Package Manager uses package manifests (`package.json`) to determine which version of the package to load, and what information to display in the Packages window. + +Package manifests support the following values: + +| Key | JSON Type | Description | +|--|--|--| +| `name` | String |The officially registered package name, following this naming convention: `"com.unity.[package name]"`. For example, `"com.unity.resourcemanager"` | +| `displayName` | String |The package name as it appears in the Packages window. For example, `"Resource Manager"` | +| `version` | String |The package version `"MAJOR.MINOR.PATCH"`. Unity packages follow the [Semantic Versioning](https://semver.org) system. For example, `"1.3.0"`. | +| `unity` | String |The Unity version that supports this package. For example, `"2018.1"` indicates compatibility starting with Unity version 2018.1. | +| `description` | String |A brief description of the package. This is the text that appears on the Details pane of the Packages window. Some special formatting character codes are supported, such as line breaks (`\n`) and bullets (`\u25AA`). | +| `category` | String |The category this packages is in. For example, `"Forces"`. | +| `dependencies` | Object |A list of packages that this package depends on, expressed as a JSON dictionary where the key is the package name and the value is the version number. Unity downloads all dependencies and loads them into the project alongside this package. | + +Example of a `package.json` file: + + { + "name": "com.unity.package-4", + "displayName": "Package Number 4", + "version": "2.5.1", + "unity": "2018.2", + "description": "This package provides X, Y, and Z. \n\nTo find out more, click the \"View documentation\" link.", + "keywords": ["key X", "key Y", "key Z"], + "category": "Controllers", + "dependencies": { + "com.unity.package-1": "1.0.0", + "com.unity.package-2": "2.0.0", + "com.unity.package-3": "3.0.0" + } + } + +Unity stores each package manifest in the `[package_root_folder]/package.json` file. + + +### Package registry + +Unity maintains a central registry of official packages that are available for distribution. When Unity loads, the Package Manager communicates with the registry, checks the Project manifest file, and displays the status of each available package in the Packages window. + +When you remove a package from the Project, the Package Manager updates the Project manifest to exclude that package from the list when in **In Project** mode but it is still available in **All packages** mode because it is still in the registry. + +When you install or update a package, the Package Manager downloads the package from the registry. + +# Technical details + +## Requirements + +This version of Unity Package Manager is compatible with the following versions of the Unity Editor: + +* 2018.3 and later (recommended) + +## Documentation revision history +|Date|Reason| +|---|---| +|October 3, 2018|Documentation updated. Image updates and minor corrections.| +|September 14, 2018|Documentation updated. Matches package version 2.0.1.| +|June 4, 2018|Documentation updated. Matches package version 2.0.0.| +|May 25, 2018|Documentation updated. Matches package version 1.9.9.| +|May 4, 2018|Documentation updated. Matches package version 1.9.8.| +|March 19, 2018|Documentation updated. Matches package version 1.9.0.| +|Feb 8, 2018|Documentation updated. Matches package version 1.7.0.| +|Feb 6, 2018|Documentation cleaned up. Matches package version 1.6.1.| +|Jan 31, 2018|Documentation updated (developmental review)| +|Jan 29, 2018|Document updated. Matches package version 1.6.0.| +|Jan 18, 2018|Document updated. Matches package version 1.5.1.| +|Jan 17, 2018|Document updated. Matches package version 1.5.0.| +|Jan 12, 2018|Document updated. Matches package version 1.4.0.| +|Nov 7, 2017|Document created. Matches package version 1.0.0.| \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor.meta new file mode 100644 index 0000000..33f5943 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 797cf0c5f1b7e4e1ab17481bd9b698eb +folderAsset: yes +timeCreated: 1501783286 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/AssemblyInfo.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/AssemblyInfo.cs new file mode 100644 index 0000000..3aaf347 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/AssemblyInfo.cs @@ -0,0 +1,8 @@ +using System.Runtime.CompilerServices; +using UnityEditor.Experimental.UIElements; + +[assembly: InternalsVisibleTo("Unity.PackageManagerCaptain.Editor")] +[assembly: InternalsVisibleTo("Unity.PackageManagerUI.EditorTests")] +#if UNITY_2018_3_OR_NEWER +[assembly: UxmlNamespacePrefix("UnityEditor.PackageManager.UI", "upm")] +#endif diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/AssemblyInfo.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/AssemblyInfo.cs.meta new file mode 100644 index 0000000..986a696 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ca53a6f1e29564d528bb56b92e0f181c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources.meta new file mode 100644 index 0000000..837bded --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b0c12f0066bd444a1b3a900679169f30 +folderAsset: yes +timeCreated: 1501783300 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images.meta new file mode 100644 index 0000000..70921ee --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: da0b41deddf0a4414b09681018c171f1 +folderAsset: yes +timeCreated: 1502292048 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark.meta new file mode 100644 index 0000000..fb0032c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8c25f8b5c9da143328c516248414b95d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/download.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/download.png new file mode 100644 index 0000000..13e377b Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/download.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/download.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/download.png.meta new file mode 100644 index 0000000..9769775 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/download.png.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 4dfd3f5da88944ec6ac5977d676c30c6 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/error.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/error.png new file mode 100644 index 0000000..a6e1c09 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/error.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/error.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/error.png.meta new file mode 100644 index 0000000..ef50b34 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/error.png.meta @@ -0,0 +1,97 @@ +fileFormatVersion: 2 +guid: acc34040a66fe4170bc8885268860cfe +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 6 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/loading.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/loading.png new file mode 100644 index 0000000..fd36a03 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/loading.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/loading.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/loading.png.meta new file mode 100644 index 0000000..0f1828e --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Dark/loading.png.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 3cf132d4fa07f4f0cb2883499c5c7dd0 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 66120540d98c346bab32966fe3676afd + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light.meta new file mode 100644 index 0000000..eee8031 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 907731821455c4fa989ac14278e02251 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/download.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/download.png new file mode 100644 index 0000000..0af6af8 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/download.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/download.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/download.png.meta new file mode 100644 index 0000000..5cfce23 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/download.png.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: f8eca3a711f4842eba0c52ea9885ef7f +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/error.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/error.png new file mode 100644 index 0000000..a6e1c09 Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/error.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/error.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/error.png.meta new file mode 100644 index 0000000..5de6c97 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/error.png.meta @@ -0,0 +1,97 @@ +fileFormatVersion: 2 +guid: 4c433abcdb28444ebb7bd395ba5c76fc +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 6 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/loading.png b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/loading.png new file mode 100644 index 0000000..f3828db Binary files /dev/null and b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/loading.png differ diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/loading.png.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/loading.png.meta new file mode 100644 index 0000000..2943325 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Images/Light/loading.png.meta @@ -0,0 +1,105 @@ +fileFormatVersion: 2 +guid: 01e02995805eb483690380a911a657e2 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 5 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + 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 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + - serializedVersion: 2 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: f6ebd98fa3a904bd4bb57dae59f0a4ce + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles.meta new file mode 100644 index 0000000..a8c0801 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: fe684bbd80eab45778b9eb316893ff7c +folderAsset: yes +timeCreated: 1502132899 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.scss b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.scss new file mode 100644 index 0000000..1e4b87b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.scss @@ -0,0 +1,74 @@ +/*************************************************************************************************** + + *** Auto-Generated - Do not modify .uss File *** + + Only Modify Main.scss + +***************************************************************************************************/ + +//-------------------------------------------------------------------------------------------------- +// Pure theme colors +//-------------------------------------------------------------------------------------------------- + +$unity-text-color: #b4b4b4; +$unity-list-hover-background: #484848; +$unity-list-selected-background: #3e5f96; +$unity-background: #383838; + +//-------------------------------------------------------------------------------------------------- +// Custom colors +//-------------------------------------------------------------------------------------------------- + +$unity-background-light-contrast: #3c3c3c; // For dark contrast, use: #404040 and #232323 +$unity-background-dark-contrast: #707070; // $ +$unity-text-color-highlight: #f4f4f4; + +$unity-installed-color-highlight: rgba(255,255,254,0.4); +$not-installed-package-background-color: #424242; + +$package-tag-color: #ffa44e; +$package-tag-recommended-color: #e4e4e4; + +$caret-text-color: #646464; + +$link-text-color: #4F80F8; + +//-------------------------------------------------------------------------------------------------- +// Custom backgrounds +//-------------------------------------------------------------------------------------------------- +$installed-package-background: resource("Builtin Skins/DarkSkin/Images/MenuItemOn.png"); + +$background-left-button: resource("Builtin Skins/DarkSkin/Images/btn left.png"); +$background-left-button-selected: resource("Builtin Skins/DarkSkin/Images/btn left on.png");; +$background-mid-button: resource("Builtin Skins/DarkSkin/Images/btn mid.png"); +$background-mid-button-selected: resource("Builtin Skins/DarkSkin/Images/btn mid on.png"); +$background-right-button: resource("Builtin Skins/DarkSkin/Images/btn right.png"); +$background-right-button-selected: resource("Builtin Skins/DarkSkin/Images/btn right on.png"); + +$background-button-slice-right: 0; +$background-button-slice-left: 0; +$background-button-slice-middle: 1; + +$background-status-outdated: resource("Images/Dark/download"); +$background-status-error: resource("Images/Dark/error"); + +$background-spinner-normal: resource("Images/Dark/loading"); +$background-spinner-large: resource("Images/Dark/loading"); + +$popup-background: resource("Builtin Skins/DarkSkin/Images/mini popup.png"); + +$toolbar-background: resource("Builtin Skins/DarkSkin/Images/Toolbar.png"); +$toolbar-button-background: resource("Builtin Skins/DarkSkin/Images/toolbar button.png"); +$toolbar-button-active-background: resource("Builtin Skins/DarkSkin/Images/toolbar button act.png"); +$toolbar-button-pulldown-background: resource("Builtin Skins/DarkSkin/Images/toolbar pulldown.png"); +$toolbar-button-popup-background: resource("Builtin Skins/DarkSkin/Images/toolbar popup.png"); +$toolbar-search-textfield-background: resource("Builtin Skins/DarkSkin/Images/toolbarsearch.png"); +$toolbar-search-textfield-focus-background: resource("Builtin Skins/DarkSkin/Images/toolbarsearch focused.png"); +$toolbar-search-cancel-background: resource("Builtin Skins/DarkSkin/Images/toolbarsearchCancelButton.png"); +$toolbar-search-cancel-active-background: resource("Builtin Skins/DarkSkin/Images/toolbarsearchCancelButtonActive.png"); +$toolbar-search-cancel-off-background: resource("Builtin Skins/DarkSkin/Images/toolbarsearchCancelButtonOff.png"); + +//-------------------------------------------------------------------------------------------------- +// Common stylesheet +//-------------------------------------------------------------------------------------------------- +@import "common"; diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.scss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.scss.meta new file mode 100644 index 0000000..75616f4 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.scss.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 880f2fc52037c4fe09edb80cfe84ac7c +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.uss b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.uss new file mode 100644 index 0000000..c7aa831 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.uss @@ -0,0 +1,1038 @@ +/*************************************************************************************************** + + *** Auto-Generated - Do not modify .uss File *** + + Only Modify Main.scss + +***************************************************************************************************/ +#container { + -unity-position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} + +.display-none { + position: absolute; + overflow: hidden; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} + +.row, #detailListView .combo, #detailListView #detailView .detail #detailActions, #detailListView #detailView .detail .detailActions, #detailListView #detailView .detail .versionContainer { + flex: 1 0 0; + flex-direction: row; +} + +.column, #detailListView .emptyArea, #detailListView #packageListGroup #listContainerOuter, #detailListView #packageListGroup #packageList, #detailListView #packageListGroup #listContainer, #detailListView #packageListGroup #listGroups, #detailListView #packageListGroup #scrollView { + flex: 1 0 0; + flex-direction: column; +} + +.tag { + border-top-width: 1; + border-left-width: 1; + border-bottom-width: 1; + border-right-width: 1; + padding-top: 1; + padding-left: 3; + padding-bottom: 1; + padding-right: 3; + font-size: 9; + border-radius: 5; + -unity-text-align: middle-center; + border-color: #000000; + color: #000000; +} + +#toolbarContainer { + flex: 0 0 auto; + flex-direction: row; + align-items: flex-start; + height: 18; +} +#toolbarContainer #toolbarView { + flex: 1 0 0; + flex-direction: row; + align-items: flex-start; + background-image: resource("Builtin Skins/DarkSkin/Images/Toolbar.png"); + margin-top: -1; + -unity-slice-top: 1; + -unity-slice-left: 1; + -unity-slice-bottom: 1; + -unity-slice-right: 1; +} +#toolbarContainer #toolbarView .toolbarButton { + flex: 1 0 0; + font-size: 9; + -unity-text-align: middle-center; + background-image: resource("Builtin Skins/DarkSkin/Images/toolbar button.png"); + flex: 0 0 auto; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: -1; + padding-top: 0; + padding-left: 5; + padding-bottom: 0; + padding-right: 5; + height: 19; +} +#toolbarContainer #toolbarView .toolbarButton.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +#toolbarContainer #toolbarView .toolbarButton:hover { + color: #b4b4b4; +} +#toolbarContainer #toolbarView .toolbarButton.space { + margin-left: 7; +} +#toolbarContainer #toolbarView .toolbarButton.active { + background-image: resource("Builtin Skins/DarkSkin/Images/toolbar button act.png"); +} +#toolbarContainer #toolbarView .toolbarButton.pulldown:active { + background-image: resource("Builtin Skins/DarkSkin/Images/toolbar button.png"); +} +#toolbarContainer #toolbarView #toolbarLeft { + flex: 0 0 auto; + flex-direction: row; + align-items: flex-start; +} +#toolbarContainer #toolbarView #toolbarRight { + flex: 1 0 0; + flex-direction: row; + justify-content: flex-end; +} +#toolbarContainer #toolbarView #toolbarRight #toolbarSearch { + flex: 1 0 0; + height: 18; + max-width: 500; + flex-direction: row; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 5; +} + +#searchContainer { + flex: 1 0 0; + flex-direction: row; + align-items: center; + justify-content: flex-start; + height: 14; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#searchContainer #searchTextField { + flex: 1 0 0; + font-size: 9; + background-image: resource("Builtin Skins/DarkSkin/Images/toolbarsearch.png"); + margin-top: 2; + margin-left: 5; + margin-bottom: 1; + margin-right: 5; + padding-top: 2; + padding-left: 17; + padding-bottom: 1; + padding-right: 17; + -unity-slice-top: 1; + -unity-slice-left: 14; + -unity-slice-bottom: 1; + -unity-slice-right: 0; + height: 14; +} +#searchContainer #searchTextField:focus { + background-image: resource("Builtin Skins/DarkSkin/Images/toolbarsearch focused.png"); +} +#searchContainer #searchTextField.placeholder { + color: #707070; +} +#searchContainer #searchCancelButton { + width: 14; + height: 15; + background-image: resource("Builtin Skins/DarkSkin/Images/toolbarsearchCancelButtonOff.png"); + flex: 0 0 auto; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; + -unity-slice-top: 1; + -unity-slice-left: 0; + -unity-slice-bottom: 1; + -unity-slice-right: 14; + margin-top: 3; + margin-left: -10; + margin-bottom: 2; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; +} +#searchContainer #searchCancelButton.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +#searchContainer #searchCancelButton:hover { + color: #b4b4b4; +} +#searchContainer #searchCancelButton.on { + background-image: resource("Builtin Skins/DarkSkin/Images/toolbarsearchCancelButton.png"); +} +#searchContainer #searchCancelButton:active { + background-image: resource("Builtin Skins/DarkSkin/Images/toolbarsearchCancelButtonActive.png"); +} + +#detailListView { + flex: 1 0 0; + flex-direction: row; +} +#detailListView .link { + color: #4F80F8; + background: rgba(0, 0, 0, 0); + background-image: none; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + cursor: link; +} +#detailListView .emptyArea { + flex: 1 0 0; +} +#detailListView .emptyArea .title { + -unity-text-align: middle-center; + font-size: 14; +} +#detailListView .emptyArea .loading { + -unity-position: relative; + top: 7; + left: 7; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + width: 14; + height: 14; + max-width: 14; + max-height: 14; +} +#detailListView #headerTitle { + flex: 1 0 0; + font-size: 12; + -unity-font-style: bold; + color: #b4b4b4; +} +#detailListView #headerCaret { + flex: 0 0 auto; + font-size: 12; + -unity-font-style: bold; + color: #b4b4b4; + min-width: 16; +} +#detailListView #spinnerContainer { + -unity-position: absolute; + top: 3; + left: 2; + right: 0; + width: 14; + flex: 0.1 0 0; + flex-direction: column; + align-items: center; +} +#detailListView .loading { + -unity-position: relative; + top: 7; + left: 7; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + width: 14; + height: 14; + max-width: 14; + max-height: 14; +} +#detailListView .combo { + margin-top: 3; + margin-left: 3; + margin-bottom: 3; + margin-right: 3; + padding-top: 3; + padding-left: 3; + padding-bottom: 3; + padding-right: 3; +} +#detailListView .combo .popup { + padding-top: 0; + padding-left: 8; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + border-top-width-left-radius: 0; + border-bottom-width-left-radius: 0; +} +#detailListView .combo .button { + flex: 1 0 0; + font-size: 12; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 2; + padding-left: 6; + padding-bottom: 3; + padding-right: 6; + -unity-slice-top: 4; + -unity-slice-left: 1; + -unity-slice-bottom: 4; + -unity-slice-right: 1; + -unity-text-align: middle-center; + border-left-width: 0; + border-top-width: 0; + border-right-width: 0; + border-bottom-width: 0; + background-image: resource("Builtin Skins/DarkSkin/Images/btn mid.png"); + border-top-width-right-radius: 0; + border-bottom-width-right-radius: 0; + border-top-width-left-radius: 0; + border-bottom-width-left-radius: 0; +} +#detailListView .combo .button.selected { + background-image: resource("Builtin Skins/DarkSkin/Images/btn mid on.png"); + color: #f4f4f4; +} +#detailListView .combo .button.first { + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 0; + background-image: resource("Builtin Skins/DarkSkin/Images/btn left.png"); +} +#detailListView .combo .button.first.selected { + background-image: resource("Builtin Skins/DarkSkin/Images/btn left on.png"); +} +#detailListView .combo .button.last { + -unity-slice-top: 4; + -unity-slice-left: 0; + -unity-slice-bottom: 4; + -unity-slice-right: 6; + background-image: resource("Builtin Skins/DarkSkin/Images/btn right.png"); +} +#detailListView .combo .button.last.selected { + background-image: resource("Builtin Skins/DarkSkin/Images/btn right on.png"); +} +#detailListView .combo .button.small { + flex: 0.5 0 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; +} +#detailListView #packageListGroup { + width: 270; +} +#detailListView #packageListGroup #groupContainerOuter #headerContainer { + flex: 1 0 0; + flex-direction: row; + align-items: center; + border-color: rgba(0, 0, 0, 0.5); +} +#detailListView #packageListGroup #groupContainerOuter #headerContainer #headerTitle { + height: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; +} +#detailListView #packageListGroup #groupContainerOuter #groupContainer { + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #packageListGroup #scrollView #VerticalScroller { + bottom: 0; +} +#detailListView #packageListGroup #scrollView #HorizontalScroller { + height: 0; +} +#detailListView #packageListGroup #scrollView #ContentViewport { + bottom: 0; +} +#detailListView #packageListGroup #scrollView #ContentViewport #ContentView { + right: 0; + left: 0; +} +#detailListView #packageListGroup #noResult #noResultText { + -unity-word-wrap: true; +} +#detailListView .package { + flex: 1 0 0; + flex-direction: row; + align-items: center; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + border-color: rgba(0, 0, 0, 0.5); + border-bottom-width: 1; +} +#detailListView .package.selected { + background-color: #3e5f96; + color: #f4f4f4; +} +#detailListView .package.selected #packageName, #detailListView .package.selected #packageVersion { + color: #f4f4f4; +} +#detailListView .package .status { + flex: 0 0 14; + width: 14; + height: 14; + margin-left: 2; + margin-right: 0; +} +#detailListView .package .status.installed { + background-image: resource("Builtin Skins/DarkSkin/Images/MenuItemOn.png"); +} +#detailListView .package .status.installed.no-icon { + background-image: none; +} +#detailListView .package .status.outdated { + background-image: resource("Images/Dark/download"); +} +#detailListView .package .status.outdated.no-icon { + background-image: none; +} +#detailListView .package .status.inprogress { + background-image: none; +} +#detailListView .package .status.error { + background-image: resource("Images/Dark/error"); +} +#detailListView .package .name { + flex: 1 0 0; + font-size: 12; + margin-left: 0; + margin-right: 5; + overflow: hidden; +} +#detailListView .package .version { + flex: 0 0 auto; + margin-left: 0; + margin-right: 5; + font-size: 9; +} +#detailListView #detailsGroup { + flex: 1 0 0; + border-left-width: 1px; + border-color: rgba(0, 0, 0, 0.5); +} +#detailListView #detailsGroup #detailsContainer { + flex: 1 0 0; + flex-direction: column; + -unity-position: relative; +} +#detailListView #detailView { + flex: 1 0 0; +} +#detailListView #detailView #VerticalScroller { + bottom: 0; +} +#detailListView #detailView #ContentViewport #ContentView { + -unity-position: absolute; + top: 0; + left: 0; + right: 0; +} +#detailListView #detailView .detail { + flex: 1 0 0; + flex-direction: column; + padding-top: 5; + padding-left: 5; + padding-bottom: 5; + padding-right: 5; +} +#detailListView #detailView .detail .header { + flex: 1 0 0; + flex-direction: row; + align-items: flex-start; + margin-bottom: 8; +} +#detailListView #detailView .detail .header #titleContainer { + flex: 0.9 0 0; +} +#detailListView #detailView .detail .header #titleContainer #detailTitle { + font-size: 18; + -unity-font-style: bold; + -unity-word-wrap: true; + margin-top: 0; + margin-left: 4; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #detailView .detail .header #detailsControls { + flex: 1 0 0; + height: 19; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + margin-top: 3; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #detailView .detail .header #updateCombo { + flex: 1 0 0; + height: 19; + align-items: center; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; +} +#detailListView #detailView .detail .header #updateCombo #update { + flex: 0 0 auto; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer { + min-width: 65; + max-width: 150; + height: 19; + flex: 0 0 auto; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup { + font-size: 12; + height: 19; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup:focus { + background-image: resource("Builtin Skins/DarkSkin/Images/mini popup.png"); +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup:hover .textElement { + color: #b4b4b4; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup .textElement { + margin-top: 2; +} +#detailListView #detailView .detail .header #updateCombo .action { + flex: 0 0 auto; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + font-size: 12; + padding-top: 2; + padding-left: 4; + padding-bottom: 3; + padding-right: 4; + right: -3; +} +#detailListView #detailView .detail .header #updateCombo .action:hover { + color: #b4b4b4; +} +#detailListView #detailView .detail .header #updateContainer { + height: 19; + flex: 1 0 0; + align-items: flex-end; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; +} +#detailListView #detailView .detail .header .button { + height: 19; + font-size: 12; + flex: 0 0 auto; + padding-top: 3; + padding-left: 3; + padding-bottom: 4; + padding-right: 3; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; +} +#detailListView #detailView .detail .header .button.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +#detailListView #detailView .detail .header .button:hover { + color: #b4b4b4; +} +#detailListView #detailView .detail #detailVersion { + font-size: 16; + max-height: 30; +} +#detailListView #detailView .detail #detailName { + flex: 1 0 0; + max-height: 20; + -unity-font-style: italic; +} +#detailListView #detailView .detail #detailPackageStatus { + flex: 1 0 0; + -unity-font-style: bold; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailTag { + width: 60; + font-size: 12; + border-radius: 5; + border-color: #b4b4b4; + border-top-width: 2; + border-left-width: 2; + border-bottom-width: 2; + border-right-width: 2; + -unity-text-align: middle-center; +} +#detailListView #detailView .detail #detailDesc, #detailListView #detailView .detail #detailModuleReference { + flex: 1 0 0; + font-size: 12; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailDesc.empty, #detailListView #detailView .detail #detailModuleReference.empty { + -unity-font-style: italic; +} +#detailListView #detailView .detail #detailAuthor { + flex: 1 0 0; + font-size: 12; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailCategory { + flex: 1 0 0; + font-size: 12; + -unity-word-wrap: true; + margin-bottom: 5; +} +#detailListView #detailView .detail #changeLogContainer, #detailListView #detailView .detail #viewLicensesContainer { + flex: 0 0 auto; + flex-direction: row; +} +#detailListView #detailView .detail #detailActions, #detailListView #detailView .detail .detailActions { + flex: 0 0 auto; + flex-direction: row; + margin-left: 2; +} +#detailListView #detailView .detail #detailActions .detailAction, #detailListView #detailView .detail .detailActions .detailAction { + margin-left: 0; + margin-right: 0; + padding-left: 2; + padding-right: 2; + border-left-width: 2; + border-right-width: 2; +} +#detailListView #detailView .detail #detailActions .detailActionSeparator, #detailListView #detailView .detail .detailActions .detailActionSeparator { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left-width: 0; + border-right-width: 0; +} +#detailListView #detailView .detail #detailActions #thirdPartyNoticeLabel, #detailListView #detailView .detail .detailActions #thirdPartyNoticeLabel { + margin-top: 4; + margin-left: 0; + margin-bottom: 4; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailActions #viewThirdParty, #detailListView #detailView .detail .detailActions #viewThirdParty { + border-right-width: 0; +} +#detailListView #detailView .detail .versionContainer { + align-items: center; + justify-content: flex-start; +} +#detailListView #detailView .detail .versionContainer #detailVersion { + flex: 0 0 auto; +} +#detailListView #detailView .detail .tag { + border-color: #ffa44e; + color: #ffa44e; +} +#detailListView #detailView .detail .tag.verified { + border-color: #e4e4e4; + color: #e4e4e4; +} +#detailListView #detailView .detail .tagLine { + flex: 0 0 auto; + flex-direction: row; +} +#detailListView #detailError { + -unity-position: absolute; + top: 5; + left: 5; + right: 5; + min-height: 200; + -unity-word-wrap: true; +} +#detailListView #detailError.display-none { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #packageStatusBar { + -unity-position: relative; + flex: 0 0 auto; + margin-top: 2; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + border-color: rgba(0, 0, 0, 0.5); + border-top-width: 1; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; +} +#detailListView #statusBarContainer { + flex-direction: row; + align-items: center; + justify-content: space-between; +} +#detailListView #statusBarContainer #loadingContainer { + flex-direction: row; + align-items: center; + justify-content: flex-start; + margin-left: 2; +} +#detailListView #statusBarContainer #loadingContainer #loadingIcon { + background-image: resource("Images/Dark/error"); + width: 16; + height: 16; + margin-left: -12; + margin-right: 0; +} +#detailListView #statusBarContainer #loadingContainer #loadingText { + padding-left: 2; + -unity-font-style: italic; +} +#detailListView #statusBarContainer #loadingContainer #loadingText.icon { + margin-left: 0; +} +#detailListView #statusBarContainer #moreAddOptionsButton { + font-size: 16; + background-image: none; + margin-top: 0; + margin-left: 0; + margin-bottom: -2; + margin-right: 0; + padding-top: 3; + padding-left: 6; + padding-bottom: 6; + padding-right: 6; + border-color: rgba(0, 0, 0, 0.5); + border-top-width: 0; + border-left-width: 1; + border-bottom-width: 0; + border-right-width: 0; +} +#detailListView #packageAddFromUrlField { + -unity-position: absolute; + top: -35; + left: 0; + bottom: 0; + right: 0; +} +#detailListView #addFromUrlFieldContainer { + border-color: rgba(0, 0, 0, 0.5); + border-top-width: 1; + border-left-width: 0; + border-bottom-width: 1; + border-right-width: 0; + flex-direction: row; + justify-content: space-between; + align-items: center; + height: 35; + background-color: #383838; +} +#detailListView #addFromUrlFieldContainer #urlTextField { + flex: 1 0 0; + height: 20; + -unity-text-align: middle-left; +} +#detailListView #addFromUrlFieldContainer #addFromUrlButton { + flex: 0 0 auto; + height: 20; +} + +.alert { + background-color: rgba(200, 0, 0, 0.8); + border-color: #FF0000; + flex-direction: row; + border-top-width: 1; + border-left-width: 1; + border-bottom-width: 1; + border-right-width: 1; + padding-top: 5; + padding-left: 10; + padding-bottom: 5; + padding-right: 10; +} +.alert #alertMessage { + flex: 1 0 0; + color: #f4f4f4; + -unity-word-wrap: true; + overflow: hidden; +} +.alert #close { + flex: 0 0 auto; + max-height: 30; + left: 5; + flex: 0 0 auto; + padding-top: 3; + padding-left: 3; + padding-bottom: 4; + padding-right: 3; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; +} +.alert #close.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +.alert #close:hover { + color: #b4b4b4; +} + +.spinner { + flex: 0 0 auto; + top: -7; + left: -7; + min-width: 14; + min-height: 14; + max-width: 14; + max-height: 14; + background-image: resource("Images/Dark/loading"); +} + +.largeSpinner { + flex: 0 0 auto; + top: -16; + left: -16; + min-width: 32; + min-height: 32; + max-width: 32; + max-height: 32; + background-image: resource("Images/Dark/loading"); +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.uss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.uss.meta new file mode 100644 index 0000000..efb6710 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Dark.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c7559cdbc33f04af1a5a42d2aa5b40a5 +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.scss b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.scss new file mode 100644 index 0000000..85d6b07 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.scss @@ -0,0 +1,74 @@ +/*************************************************************************************************** + + *** Auto-Generated - Do not modify .uss File *** + + Only Modify Main.scss + +***************************************************************************************************/ + +//-------------------------------------------------------------------------------------------------- +// Pure theme colors +//-------------------------------------------------------------------------------------------------- + +$unity-text-color: #000000; +$unity-list-hover-background: #8f8f8f; +$unity-list-selected-background: #3e7de7; +$unity-background: #c2c2c2; + +//-------------------------------------------------------------------------------------------------- +// Custom colors +//-------------------------------------------------------------------------------------------------- + +$unity-background-light-contrast: #D5D5D5; +$unity-background-dark-contrast: #6C6C6C; +$unity-text-color-highlight: #f4f4f4; + +$unity-installed-color-highlight: rgba(1,0,0,0.3); +$not-installed-package-background-color: #d1d1d1; + +$package-tag-color: #d25a00; +$package-tag-recommended-color: #000; + +$caret-text-color: #646464; + +$link-text-color: #0808FC; + +//-------------------------------------------------------------------------------------------------- +// Custom backgrounds +//-------------------------------------------------------------------------------------------------- +$installed-package-background: resource("Builtin Skins/LightSkin/Images/MenuItemOn.png"); + +$background-left-button: resource("Builtin Skins/LightSkin/Images/btn left.png"); +$background-left-button-selected: resource("Builtin Skins/LightSkin/Images/btn left on.png");; +$background-mid-button: resource("Builtin Skins/LightSkin/Images/btn mid.png"); +$background-mid-button-selected: resource("Builtin Skins/LightSkin/Images/btn mid on.png"); +$background-right-button: resource("Builtin Skins/LightSkin/Images/btn right.png"); +$background-right-button-selected: resource("Builtin Skins/LightSkin/Images/btn right on.png"); + +$background-button-slice-right: 6; +$background-button-slice-left: 6; +$background-button-slice-middle: 1; + +$background-status-outdated: resource("Images/Light/download"); +$background-status-error: resource("Images/Dark/error"); + +$background-spinner-normal: resource("Images/Light/loading"); +$background-spinner-large: resource("Images/Light/loading"); + +$popup-background: resource("Builtin Skins/LightSkin/Images/mini popup.png"); + +$toolbar-background: resource("Builtin Skins/LightSkin/Images/Toolbar.png"); +$toolbar-button-background: resource("Builtin Skins/LightSkin/Images/toolbar button.png"); +$toolbar-button-active-background: resource("Builtin Skins/LightSkin/Images/toolbar button act.png"); +$toolbar-button-pulldown-background: resource("Builtin Skins/LightSkin/Images/toolbar pulldown.png"); +$toolbar-button-popup-background: resource("Builtin Skins/LightSkin/Images/toolbar popup.png"); +$toolbar-search-textfield-background: resource("Builtin Skins/LightSkin/Images/toolbarsearch.png"); +$toolbar-search-textfield-focus-background: resource("Builtin Skins/LightSkin/Images/toolbarsearch focused.png"); +$toolbar-search-cancel-background: resource("Builtin Skins/LightSkin/Images/toolbarsearchCancelButton.png"); +$toolbar-search-cancel-active-background: resource("Builtin Skins/LightSkin/Images/toolbarsearchCancelButtonActive.png"); +$toolbar-search-cancel-off-background: resource("Builtin Skins/LightSkin/Images/toolbarsearchCancelButtonOff.png"); + +//-------------------------------------------------------------------------------------------------- +// Common stylesheet +//-------------------------------------------------------------------------------------------------- +@import "common"; diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.scss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.scss.meta new file mode 100644 index 0000000..066475b --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.scss.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f1687bb24464840ae9e1d253685ae0f6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.uss b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.uss new file mode 100644 index 0000000..5f2ec80 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.uss @@ -0,0 +1,1038 @@ +/*************************************************************************************************** + + *** Auto-Generated - Do not modify .uss File *** + + Only Modify Main.scss + +***************************************************************************************************/ +#container { + -unity-position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} + +.display-none { + position: absolute; + overflow: hidden; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} + +.row, #detailListView .combo, #detailListView #detailView .detail #detailActions, #detailListView #detailView .detail .detailActions, #detailListView #detailView .detail .versionContainer { + flex: 1 0 0; + flex-direction: row; +} + +.column, #detailListView .emptyArea, #detailListView #packageListGroup #listContainerOuter, #detailListView #packageListGroup #packageList, #detailListView #packageListGroup #listContainer, #detailListView #packageListGroup #listGroups, #detailListView #packageListGroup #scrollView { + flex: 1 0 0; + flex-direction: column; +} + +.tag { + border-top-width: 1; + border-left-width: 1; + border-bottom-width: 1; + border-right-width: 1; + padding-top: 1; + padding-left: 3; + padding-bottom: 1; + padding-right: 3; + font-size: 9; + border-radius: 5; + -unity-text-align: middle-center; + border-color: #000000; + color: #000000; +} + +#toolbarContainer { + flex: 0 0 auto; + flex-direction: row; + align-items: flex-start; + height: 18; +} +#toolbarContainer #toolbarView { + flex: 1 0 0; + flex-direction: row; + align-items: flex-start; + background-image: resource("Builtin Skins/LightSkin/Images/Toolbar.png"); + margin-top: -1; + -unity-slice-top: 1; + -unity-slice-left: 1; + -unity-slice-bottom: 1; + -unity-slice-right: 1; +} +#toolbarContainer #toolbarView .toolbarButton { + flex: 1 0 0; + font-size: 9; + -unity-text-align: middle-center; + background-image: resource("Builtin Skins/LightSkin/Images/toolbar button.png"); + flex: 0 0 auto; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: -1; + padding-top: 0; + padding-left: 5; + padding-bottom: 0; + padding-right: 5; + height: 19; +} +#toolbarContainer #toolbarView .toolbarButton.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +#toolbarContainer #toolbarView .toolbarButton:hover { + color: #000000; +} +#toolbarContainer #toolbarView .toolbarButton.space { + margin-left: 7; +} +#toolbarContainer #toolbarView .toolbarButton.active { + background-image: resource("Builtin Skins/LightSkin/Images/toolbar button act.png"); +} +#toolbarContainer #toolbarView .toolbarButton.pulldown:active { + background-image: resource("Builtin Skins/LightSkin/Images/toolbar button.png"); +} +#toolbarContainer #toolbarView #toolbarLeft { + flex: 0 0 auto; + flex-direction: row; + align-items: flex-start; +} +#toolbarContainer #toolbarView #toolbarRight { + flex: 1 0 0; + flex-direction: row; + justify-content: flex-end; +} +#toolbarContainer #toolbarView #toolbarRight #toolbarSearch { + flex: 1 0 0; + height: 18; + max-width: 500; + flex-direction: row; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 5; +} + +#searchContainer { + flex: 1 0 0; + flex-direction: row; + align-items: center; + justify-content: flex-start; + height: 14; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#searchContainer #searchTextField { + flex: 1 0 0; + font-size: 9; + background-image: resource("Builtin Skins/LightSkin/Images/toolbarsearch.png"); + margin-top: 2; + margin-left: 5; + margin-bottom: 1; + margin-right: 5; + padding-top: 2; + padding-left: 17; + padding-bottom: 1; + padding-right: 17; + -unity-slice-top: 1; + -unity-slice-left: 14; + -unity-slice-bottom: 1; + -unity-slice-right: 0; + height: 14; +} +#searchContainer #searchTextField:focus { + background-image: resource("Builtin Skins/LightSkin/Images/toolbarsearch focused.png"); +} +#searchContainer #searchTextField.placeholder { + color: #6C6C6C; +} +#searchContainer #searchCancelButton { + width: 14; + height: 15; + background-image: resource("Builtin Skins/LightSkin/Images/toolbarsearchCancelButtonOff.png"); + flex: 0 0 auto; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; + -unity-slice-top: 1; + -unity-slice-left: 0; + -unity-slice-bottom: 1; + -unity-slice-right: 14; + margin-top: 3; + margin-left: -10; + margin-bottom: 2; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; +} +#searchContainer #searchCancelButton.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +#searchContainer #searchCancelButton:hover { + color: #000000; +} +#searchContainer #searchCancelButton.on { + background-image: resource("Builtin Skins/LightSkin/Images/toolbarsearchCancelButton.png"); +} +#searchContainer #searchCancelButton:active { + background-image: resource("Builtin Skins/LightSkin/Images/toolbarsearchCancelButtonActive.png"); +} + +#detailListView { + flex: 1 0 0; + flex-direction: row; +} +#detailListView .link { + color: #0808FC; + background: rgba(0, 0, 0, 0); + background-image: none; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + cursor: link; +} +#detailListView .emptyArea { + flex: 1 0 0; +} +#detailListView .emptyArea .title { + -unity-text-align: middle-center; + font-size: 14; +} +#detailListView .emptyArea .loading { + -unity-position: relative; + top: 7; + left: 7; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + width: 14; + height: 14; + max-width: 14; + max-height: 14; +} +#detailListView #headerTitle { + flex: 1 0 0; + font-size: 12; + -unity-font-style: bold; + color: #000000; +} +#detailListView #headerCaret { + flex: 0 0 auto; + font-size: 12; + -unity-font-style: bold; + color: #000000; + min-width: 16; +} +#detailListView #spinnerContainer { + -unity-position: absolute; + top: 3; + left: 2; + right: 0; + width: 14; + flex: 0.1 0 0; + flex-direction: column; + align-items: center; +} +#detailListView .loading { + -unity-position: relative; + top: 7; + left: 7; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + width: 14; + height: 14; + max-width: 14; + max-height: 14; +} +#detailListView .combo { + margin-top: 3; + margin-left: 3; + margin-bottom: 3; + margin-right: 3; + padding-top: 3; + padding-left: 3; + padding-bottom: 3; + padding-right: 3; +} +#detailListView .combo .popup { + padding-top: 0; + padding-left: 8; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + border-top-width-left-radius: 0; + border-bottom-width-left-radius: 0; +} +#detailListView .combo .button { + flex: 1 0 0; + font-size: 12; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 2; + padding-left: 6; + padding-bottom: 3; + padding-right: 6; + -unity-slice-top: 4; + -unity-slice-left: 1; + -unity-slice-bottom: 4; + -unity-slice-right: 1; + -unity-text-align: middle-center; + border-left-width: 0; + border-top-width: 0; + border-right-width: 0; + border-bottom-width: 0; + background-image: resource("Builtin Skins/LightSkin/Images/btn mid.png"); + border-top-width-right-radius: 0; + border-bottom-width-right-radius: 0; + border-top-width-left-radius: 0; + border-bottom-width-left-radius: 0; +} +#detailListView .combo .button.selected { + background-image: resource("Builtin Skins/LightSkin/Images/btn mid on.png"); + color: #f4f4f4; +} +#detailListView .combo .button.first { + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; + background-image: resource("Builtin Skins/LightSkin/Images/btn left.png"); +} +#detailListView .combo .button.first.selected { + background-image: resource("Builtin Skins/LightSkin/Images/btn left on.png"); +} +#detailListView .combo .button.last { + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; + background-image: resource("Builtin Skins/LightSkin/Images/btn right.png"); +} +#detailListView .combo .button.last.selected { + background-image: resource("Builtin Skins/LightSkin/Images/btn right on.png"); +} +#detailListView .combo .button.small { + flex: 0.5 0 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; +} +#detailListView #packageListGroup { + width: 270; +} +#detailListView #packageListGroup #groupContainerOuter #headerContainer { + flex: 1 0 0; + flex-direction: row; + align-items: center; + border-color: rgba(0, 0, 0, 0.5); +} +#detailListView #packageListGroup #groupContainerOuter #headerContainer #headerTitle { + height: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; +} +#detailListView #packageListGroup #groupContainerOuter #groupContainer { + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #packageListGroup #scrollView #VerticalScroller { + bottom: 0; +} +#detailListView #packageListGroup #scrollView #HorizontalScroller { + height: 0; +} +#detailListView #packageListGroup #scrollView #ContentViewport { + bottom: 0; +} +#detailListView #packageListGroup #scrollView #ContentViewport #ContentView { + right: 0; + left: 0; +} +#detailListView #packageListGroup #noResult #noResultText { + -unity-word-wrap: true; +} +#detailListView .package { + flex: 1 0 0; + flex-direction: row; + align-items: center; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + border-color: rgba(0, 0, 0, 0.5); + border-bottom-width: 1; +} +#detailListView .package.selected { + background-color: #3e7de7; + color: #f4f4f4; +} +#detailListView .package.selected #packageName, #detailListView .package.selected #packageVersion { + color: #f4f4f4; +} +#detailListView .package .status { + flex: 0 0 14; + width: 14; + height: 14; + margin-left: 2; + margin-right: 0; +} +#detailListView .package .status.installed { + background-image: resource("Builtin Skins/LightSkin/Images/MenuItemOn.png"); +} +#detailListView .package .status.installed.no-icon { + background-image: none; +} +#detailListView .package .status.outdated { + background-image: resource("Images/Light/download"); +} +#detailListView .package .status.outdated.no-icon { + background-image: none; +} +#detailListView .package .status.inprogress { + background-image: none; +} +#detailListView .package .status.error { + background-image: resource("Images/Dark/error"); +} +#detailListView .package .name { + flex: 1 0 0; + font-size: 12; + margin-left: 0; + margin-right: 5; + overflow: hidden; +} +#detailListView .package .version { + flex: 0 0 auto; + margin-left: 0; + margin-right: 5; + font-size: 9; +} +#detailListView #detailsGroup { + flex: 1 0 0; + border-left-width: 1px; + border-color: rgba(0, 0, 0, 0.5); +} +#detailListView #detailsGroup #detailsContainer { + flex: 1 0 0; + flex-direction: column; + -unity-position: relative; +} +#detailListView #detailView { + flex: 1 0 0; +} +#detailListView #detailView #VerticalScroller { + bottom: 0; +} +#detailListView #detailView #ContentViewport #ContentView { + -unity-position: absolute; + top: 0; + left: 0; + right: 0; +} +#detailListView #detailView .detail { + flex: 1 0 0; + flex-direction: column; + padding-top: 5; + padding-left: 5; + padding-bottom: 5; + padding-right: 5; +} +#detailListView #detailView .detail .header { + flex: 1 0 0; + flex-direction: row; + align-items: flex-start; + margin-bottom: 8; +} +#detailListView #detailView .detail .header #titleContainer { + flex: 0.9 0 0; +} +#detailListView #detailView .detail .header #titleContainer #detailTitle { + font-size: 18; + -unity-font-style: bold; + -unity-word-wrap: true; + margin-top: 0; + margin-left: 4; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #detailView .detail .header #detailsControls { + flex: 1 0 0; + height: 19; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + margin-top: 3; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #detailView .detail .header #updateCombo { + flex: 1 0 0; + height: 19; + align-items: center; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; +} +#detailListView #detailView .detail .header #updateCombo #update { + flex: 0 0 auto; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer { + min-width: 65; + max-width: 150; + height: 19; + flex: 0 0 auto; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup { + font-size: 12; + height: 19; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup:focus { + background-image: resource("Builtin Skins/LightSkin/Images/mini popup.png"); +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup:hover .textElement { + color: #000000; +} +#detailListView #detailView .detail .header #updateCombo #updateDropdownContainer .popup .textElement { + margin-top: 2; +} +#detailListView #detailView .detail .header #updateCombo .action { + flex: 0 0 auto; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + font-size: 12; + padding-top: 2; + padding-left: 4; + padding-bottom: 3; + padding-right: 4; + right: -3; +} +#detailListView #detailView .detail .header #updateCombo .action:hover { + color: #000000; +} +#detailListView #detailView .detail .header #updateContainer { + height: 19; + flex: 1 0 0; + align-items: flex-end; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; +} +#detailListView #detailView .detail .header .button { + height: 19; + font-size: 12; + flex: 0 0 auto; + padding-top: 3; + padding-left: 3; + padding-bottom: 4; + padding-right: 3; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; +} +#detailListView #detailView .detail .header .button.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +#detailListView #detailView .detail .header .button:hover { + color: #000000; +} +#detailListView #detailView .detail #detailVersion { + font-size: 16; + max-height: 30; +} +#detailListView #detailView .detail #detailName { + flex: 1 0 0; + max-height: 20; + -unity-font-style: italic; +} +#detailListView #detailView .detail #detailPackageStatus { + flex: 1 0 0; + -unity-font-style: bold; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailTag { + width: 60; + font-size: 12; + border-radius: 5; + border-color: #b4b4b4; + border-top-width: 2; + border-left-width: 2; + border-bottom-width: 2; + border-right-width: 2; + -unity-text-align: middle-center; +} +#detailListView #detailView .detail #detailDesc, #detailListView #detailView .detail #detailModuleReference { + flex: 1 0 0; + font-size: 12; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailDesc.empty, #detailListView #detailView .detail #detailModuleReference.empty { + -unity-font-style: italic; +} +#detailListView #detailView .detail #detailAuthor { + flex: 1 0 0; + font-size: 12; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailCategory { + flex: 1 0 0; + font-size: 12; + -unity-word-wrap: true; + margin-bottom: 5; +} +#detailListView #detailView .detail #changeLogContainer, #detailListView #detailView .detail #viewLicensesContainer { + flex: 0 0 auto; + flex-direction: row; +} +#detailListView #detailView .detail #detailActions, #detailListView #detailView .detail .detailActions { + flex: 0 0 auto; + flex-direction: row; + margin-left: 2; +} +#detailListView #detailView .detail #detailActions .detailAction, #detailListView #detailView .detail .detailActions .detailAction { + margin-left: 0; + margin-right: 0; + padding-left: 2; + padding-right: 2; + border-left-width: 2; + border-right-width: 2; +} +#detailListView #detailView .detail #detailActions .detailActionSeparator, #detailListView #detailView .detail .detailActions .detailActionSeparator { + margin-left: 0; + margin-right: 0; + padding-left: 0; + padding-right: 0; + border-left-width: 0; + border-right-width: 0; +} +#detailListView #detailView .detail #detailActions #thirdPartyNoticeLabel, #detailListView #detailView .detail .detailActions #thirdPartyNoticeLabel { + margin-top: 4; + margin-left: 0; + margin-bottom: 4; + margin-right: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + -unity-word-wrap: true; +} +#detailListView #detailView .detail #detailActions #viewThirdParty, #detailListView #detailView .detail .detailActions #viewThirdParty { + border-right-width: 0; +} +#detailListView #detailView .detail .versionContainer { + align-items: center; + justify-content: flex-start; +} +#detailListView #detailView .detail .versionContainer #detailVersion { + flex: 0 0 auto; +} +#detailListView #detailView .detail .tag { + border-color: #d25a00; + color: #d25a00; +} +#detailListView #detailView .detail .tag.verified { + border-color: #000; + color: #000; +} +#detailListView #detailView .detail .tagLine { + flex: 0 0 auto; + flex-direction: row; +} +#detailListView #detailError { + -unity-position: absolute; + top: 5; + left: 5; + right: 5; + min-height: 200; + -unity-word-wrap: true; +} +#detailListView #detailError.display-none { + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; +} +#detailListView #packageStatusBar { + -unity-position: relative; + flex: 0 0 auto; + margin-top: 2; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + border-color: rgba(0, 0, 0, 0.5); + border-top-width: 1; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; +} +#detailListView #statusBarContainer { + flex-direction: row; + align-items: center; + justify-content: space-between; +} +#detailListView #statusBarContainer #loadingContainer { + flex-direction: row; + align-items: center; + justify-content: flex-start; + margin-left: 2; +} +#detailListView #statusBarContainer #loadingContainer #loadingIcon { + background-image: resource("Images/Dark/error"); + width: 16; + height: 16; + margin-left: -12; + margin-right: 0; +} +#detailListView #statusBarContainer #loadingContainer #loadingText { + padding-left: 2; + -unity-font-style: italic; +} +#detailListView #statusBarContainer #loadingContainer #loadingText.icon { + margin-left: 0; +} +#detailListView #statusBarContainer #moreAddOptionsButton { + font-size: 16; + background-image: none; + margin-top: 0; + margin-left: 0; + margin-bottom: -2; + margin-right: 0; + padding-top: 3; + padding-left: 6; + padding-bottom: 6; + padding-right: 6; + border-color: rgba(0, 0, 0, 0.5); + border-top-width: 0; + border-left-width: 1; + border-bottom-width: 0; + border-right-width: 0; +} +#detailListView #packageAddFromUrlField { + -unity-position: absolute; + top: -35; + left: 0; + bottom: 0; + right: 0; +} +#detailListView #addFromUrlFieldContainer { + border-color: rgba(0, 0, 0, 0.5); + border-top-width: 1; + border-left-width: 0; + border-bottom-width: 1; + border-right-width: 0; + flex-direction: row; + justify-content: space-between; + align-items: center; + height: 35; + background-color: #c2c2c2; +} +#detailListView #addFromUrlFieldContainer #urlTextField { + flex: 1 0 0; + height: 20; + -unity-text-align: middle-left; +} +#detailListView #addFromUrlFieldContainer #addFromUrlButton { + flex: 0 0 auto; + height: 20; +} + +.alert { + background-color: rgba(200, 0, 0, 0.8); + border-color: #FF0000; + flex-direction: row; + border-top-width: 1; + border-left-width: 1; + border-bottom-width: 1; + border-right-width: 1; + padding-top: 5; + padding-left: 10; + padding-bottom: 5; + padding-right: 10; +} +.alert #alertMessage { + flex: 1 0 0; + color: #f4f4f4; + -unity-word-wrap: true; + overflow: hidden; +} +.alert #close { + flex: 0 0 auto; + max-height: 30; + left: 5; + flex: 0 0 auto; + padding-top: 3; + padding-left: 3; + padding-bottom: 4; + padding-right: 3; + -unity-slice-top: 4; + -unity-slice-left: 6; + -unity-slice-bottom: 4; + -unity-slice-right: 6; +} +.alert #close.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + padding-top: 0; + padding-left: 0; + padding-bottom: 0; + padding-right: 0; + margin-top: 0; + margin-left: 0; + margin-bottom: 0; + margin-right: 0; + -unity-slice-top: 0; + -unity-slice-left: 0; + -unity-slice-bottom: 0; + -unity-slice-right: 0; + visibility: hidden; +} +.alert #close:hover { + color: #000000; +} + +.spinner { + flex: 0 0 auto; + top: -7; + left: -7; + min-width: 14; + min-height: 14; + max-width: 14; + max-height: 14; + background-image: resource("Images/Light/loading"); +} + +.largeSpinner { + flex: 0 0 auto; + top: -16; + left: -16; + min-width: 32; + min-height: 32; + max-width: 32; + max-height: 32; + background-image: resource("Images/Light/loading"); +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.uss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.uss.meta new file mode 100644 index 0000000..cb382d6 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/Main_Light.uss.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: abdc053b8e3644f299aedc641d609a84 +ScriptedImporter: + fileIDToRecycleName: + 11400000: stylesheet + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/_common.scss b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/_common.scss new file mode 100644 index 0000000..a896ed2 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/_common.scss @@ -0,0 +1,960 @@ +// If you are using IntelliJ Rider, you can simply turn on the SCSS compiler, otherwise here is how to convert scss to uss +// # Install Sass +// gem install sass +// +// # Convert +// sass --sourcemap=none --style=expanded --scss --no-cache Main_Dark.scss Main_Dark.uss +// sass --sourcemap=none --style=expanded --scss --no-cache Main_Light.scss Main_Light.uss +// +// # Watch +// sass --watch --sourcemap=none --style=expanded --scss --no-cache Main_Light.scss:Main_Light.uss Main_Dark.scss:Main_Dark.uss +// +// Sass to Uss Notes +// - Sass converts rgb(0,0,0) to css 'black'. Uss doesn't support named colors. The workaround is to set the color in sass as #000000 +// +// Uss Notes +// Runtime\UIElements\Managed\StyleSheets\StyleSheetCache.cs:50 to see which properties are available (until there is a doc) + +//-------------------------------------------------------------------------------------------------- +// Helper Mixins +//-------------------------------------------------------------------------------------------------- + +@mixin border($top, $right, $bottom, $left) { + @if $top != 'auto' {border-top-width: $top;} + @if $left != 'auto' {border-left-width: $right;} + @if $bottom != 'auto' {border-bottom-width: $bottom;} + @if $right != 'auto' {border-right-width: $left;} +} + +@mixin border-box($width: 1) { + @include border($width, $width, $width, $width); +} + +@mixin padding($top, $right, $bottom, $left) { + @if $top != 'auto' {padding-top: $top;} + @if $left != 'auto' {padding-left: $left;} + @if $bottom != 'auto' {padding-bottom: $bottom;} + @if $right != 'auto' {padding-right: $right;} +} + +@mixin padding-box($size) { + @include padding($size, $size, $size, $size); +} + +@mixin margin($top, $right, $bottom, $left) { + @if $top != 'auto' {margin-top: $top;} + @if $left != 'auto' {margin-left: $left;} + @if $bottom != 'auto' {margin-bottom: $bottom;} + @if $right != 'auto' {margin-right: $right;} +} + +@mixin margin-box($size) { + @include margin($size, $size, $size, $size); +} + +@mixin slice($top, $right, $bottom, $left) { + @if $top != 'auto' {-unity-slice-top: $top;} + @if $left != 'auto' {-unity-slice-left: $left;} + @if $bottom != 'auto' {-unity-slice-bottom: $bottom;} + @if $right != 'auto' {-unity-slice-right: $right;} +} + +@mixin slice-box($size) { + @include slice($size, $size, $size, $size); +} + +@mixin position($top, $right, $bottom, $left) { + @if $top != 'auto' {top: $top;} + @if $left != 'auto' {left: $left;} + @if $bottom != 'auto' {bottom: $bottom;} + @if $right != 'auto' {right: $right;} +} + +@mixin text-clip() { + overflow: hidden; +} + +@mixin selected-element() { + background-color: $unity-list-selected-background; + color: $unity-text-color-highlight; +} + +@mixin active-tab() { + background-color: $unity-background-dark-contrast; + color: $unity-text-color-highlight; +} + +@mixin inactive-tab() { + background-color: $unity-background-light-contrast; + color: $unity-text-color; +} + +@mixin button($top, $right, $bottom, $left) { + flex: 0 0 auto; + + @include padding($top, $right, $bottom, $left); + @include slice(4, 6, 4, 6); + + &.display-none { + position: absolute; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + min-width: 0; + @include border-box(0); + @include padding-box(0); + @include margin-box(0); + @include slice-box(0); + visibility: hidden; + } + + &:hover { + color: $unity-text-color; + } +} + +@mixin button-box($size) { + @include button($size, $size, $size, $size); +} + +//-------------------------------------------------------------------------------------------------- +// Font +//-------------------------------------------------------------------------------------------------- + +@mixin font-small() { + font-size: 9; +} + +@mixin font-normal() { + font-size: 12; +} + +//-------------------------------------------------------------------------------------------------- +// Styles +//-------------------------------------------------------------------------------------------------- + +#container { + -unity-position: absolute; + @include position(0, 0, 0, 0); +} + +.display-none { + position: absolute; + overflow: hidden; + border-radius: 0; + width: 0; + height: 0; + min-height: 0; + max-height: 0; + min-width: 0; + max-width: 0; + border-top-width: 0; + border-left-width: 0; + border-bottom-width: 0; + border-right-width: 0; + @include border-box(0); + @include padding-box(0); + @include margin-box(0); +} + +.row { + flex: 1 0 0; + flex-direction: row; +} + +.column { + flex: 1 0 0; + flex-direction: column; +} + +.tag { + @include border-box(1); + @include padding(1, 3, 1, 3); + @include font-small(); + border-radius: 5; + -unity-text-align: middle-center; + + border-color: #000000; + color: #000000; +} + +$spinner-large-size: 32; +$spinner-large-half-size: 16; +$spinner-normal-size: 14; +$spinner-normal-half-size: 7; +$toolbar-height: 18; + +#toolbarContainer { + flex: 0 0 auto; + flex-direction: row; + align-items: flex-start; + height: $toolbar-height; + + #toolbarView { + flex: 1 0 0; + flex-direction: row; + align-items: flex-start; + background-image: $toolbar-background; + margin-top: -1; + @include slice(1, 1, 1, 1); + + .toolbarButton { + flex: 1 0 0; + font-size: 9; + -unity-text-align: middle-center; + background-image: $toolbar-button-background; + @include button-box(0); + @include margin(0, -1, 0, 0); + @include padding(0, 5, 0, 5); + height: 19; + + &.space { + margin-left: 7; + } + + &.active { + background-image: $toolbar-button-active-background; + } + + &.pulldown { + + &:active { + background-image: $toolbar-button-background; + } + } + } + + #toolbarLeft { + flex: 0 0 auto; + flex-direction: row; + align-items: flex-start; + } + + #toolbarRight { + flex: 1 0 0; + flex-direction: row; + justify-content: flex-end; + + #toolbarSearch { + flex: 1 0 0; + height: $toolbar-height; + max-width: 500; + flex-direction: row; + @include margin(0, 5, 0, 0); + } + } + } +} + +#searchContainer { + flex: 1 0 0; + flex-direction: row; + align-items: center; + justify-content: flex-start; + height: 14; + @include margin(0, 0, 0, 0); + + #searchTextField { + flex: 1 0 0; + font-size: 9; + background-image: $toolbar-search-textfield-background; + @include margin(2, 5, 1, 5); + @include padding(2, 17, 1, 17); + @include slice(1, 0, 1, 14); + height: 14; + + &:focus { + background-image: $toolbar-search-textfield-focus-background; + } + + &.placeholder { + color: $unity-background-dark-contrast; + } + } + + #searchCancelButton { + width: 14; + height: 15; + background-image: $toolbar-search-cancel-off-background; + @include button-box(0); + @include slice(1, 14, 1, 0); + @include margin(3, 0, 2, -10); + @include padding-box(0); + @include border-box(0); + + &.on { + background-image: $toolbar-search-cancel-background; + } + + &:active { + background-image: $toolbar-search-cancel-active-background; + } + } +} + +#detailListView { + flex: 1 0 0; + flex-direction: row; + + .link { + color: $link-text-color; + background: rgba(0, 0, 0, 0); + background-image: none; + @include margin-box(0); + @include padding-box(0); + cursor: link; + } + + .emptyArea { + flex: 1 0 0; + @extend .column; + + .title { + -unity-text-align: middle-center; + font-size: 14; + } + + .loading { + -unity-position: relative; + @include position($spinner-normal-half-size, auto, auto, $spinner-normal-half-size); + + @include border-box(0); + @include padding-box(0); + @include margin-box(0); + @include slice-box(0); + + width: $spinner-normal-size; + height: $spinner-normal-size; + max-width: $spinner-normal-size; + max-height: $spinner-normal-size; + } + } + + #headerTitle { + flex: 1 0 0; + font-size: 12; + -unity-font-style: bold; + color: $unity-text-color; + } + + #headerCaret { + flex: 0 0 auto; + font-size: 12; + -unity-font-style: bold; + color: $unity-text-color; + min-width: 16; + } + + #spinnerContainer { + -unity-position: absolute; + @include position(3, 0, auto, 2); + width: 14; + + flex: 0.1 0 0; + flex-direction: column; + align-items: center; + } + + .loading { + -unity-position: relative; + @include position($spinner-normal-half-size, auto, auto, $spinner-normal-half-size); + + @include border-box(0); + @include padding-box(0); + @include margin-box(0); + @include slice-box(0); + + width: $spinner-normal-size; + height: $spinner-normal-size; + max-width: $spinner-normal-size; + max-height: $spinner-normal-size; + } + + .combo { + @extend .row; + @include margin-box(3); + @include padding-box(3); + + .popup { + @include padding(0, 0, 0, 8); + @include margin-box(0); + border-top-width-left-radius: 0; + border-bottom-width-left-radius: 0; + } + + .button { + flex: 1 0 0; // Make buttons take all the parent's free space + + @include font-normal(); + @include border-box(0); + @include margin-box(0); + @include padding(2, 6, 3, 6); + @include slice(4, $background-button-slice-middle, 4, $background-button-slice-middle); + + -unity-text-align: middle-center; + border-left-width: 0; + border-top-width: 0; + border-right-width: 0; + border-bottom-width: 0; + background-image: $background-mid-button; + + border-top-width-right-radius: 0; + border-bottom-width-right-radius: 0; + border-top-width-left-radius: 0; + border-bottom-width-left-radius: 0; + + &.selected { + background-image: $background-mid-button-selected; + color: $unity-text-color-highlight; + } + + &.first { + @include slice(4, $background-button-slice-right, 4, 6); + background-image: $background-left-button; + + &.selected { + background-image: $background-left-button-selected; + } + } + + &.last { + @include slice(4, 6, 4, $background-button-slice-left); + background-image: $background-right-button; + + &.selected { + background-image: $background-right-button-selected; + } + } + + + &.small { + flex: 0.5 0 0; + @include padding(0, 0, 0, 0); + } + } + } + + //-------------------------------------------------------------------------------------------------- + // Package List + //-------------------------------------------------------------------------------------------------- + #packageListGroup { + width: 270; + + #listContainerOuter { + @extend .column; + } + + #groupContainerOuter { + + #headerContainer { + flex: 1 0 0; + flex-direction: row; + align-items: center; + border-color: rgba(0,0,0, 0.5); + + #headerTitle { + height: 0; + @include margin-box(0); + @include padding-box(0); + @include border-box(0); + } + } + + #groupContainer { + @include margin(0, 0, 0, 0); + } + } + + #packageList, #listContainer, #listGroups { + @extend .column; + } + + #scrollView { + @extend .column; + + #VerticalScroller { + bottom: 0; + } + + #HorizontalScroller { + height: 0; + } + + #ContentViewport { + bottom: 0; + + #ContentView { + right: 0; + left: 0; + } + } + } + + #noResult { + #noResultText { + -unity-word-wrap: true; + } + } + } + + //-------------------------------------------------------------------------------------------------- + // Package Item + //-------------------------------------------------------------------------------------------------- + .package { + flex: 1 0 0; + flex-direction: row; + align-items: center; + @include margin(0, 0, 0, 0); + border-color: rgba(0,0,0, 0.5); + border-bottom-width: 1; + + &.selected { + @include selected-element(); + + #packageName, #packageVersion { + color: $unity-text-color-highlight; + } + } + + .status { + flex: 0 0 14; + width: 14; + height: 14; + @include margin(auto, 0, auto, 2); + + &.installed { + background-image: $installed-package-background; + &.no-icon { + background-image: none; + } + } + + &.outdated { + background-image: $background-status-outdated; + &.no-icon { + background-image: none; + } + } + + &.inprogress { + background-image: none; + } + + &.error { + background-image: $background-status-error; + } + } + + .name { + flex: 1 0 0; + @include font-normal(); + @include margin(auto, 5, auto, 0); + @include text-clip(); + } + + .version { + flex: 0 0 auto; + @include margin(auto, 5, auto, 0); + @include font-small; + } + } + + //-------------------------------------------------------------------------------------------------- + // Package Details + //-------------------------------------------------------------------------------------------------- + #detailsGroup { + flex: 1 0 0; + border-left-width: 1px; + border-color: rgba(0,0,0, 0.5); + + #detailsContainer { + flex: 1 0 0; + flex-direction: column; + -unity-position: relative; + } + } + + #detailView { + flex: 1 0 0; + + #VerticalScroller { + bottom: 0; + } + + #ContentViewport { + + #ContentView { + -unity-position: absolute; + @include position(0, 0, auto, 0); + } + } + + .detail { + flex: 1 0 0; + flex-direction: column; + @include padding-box(5); + + .header { + flex: 1 0 0; + flex-direction: row; + align-items: flex-start; + + margin-bottom: 8; + + #titleContainer { + flex: 0.9 0 0; + + #detailTitle { + font-size: 18; + -unity-font-style: bold; + -unity-word-wrap: true; + @include margin(0, 0, 0, 4); + } + } + + $controls-height: 19; + #detailsControls { + flex: 1 0 0; + height: $controls-height; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + @include margin(3, 0, 0, 0); + } + + #updateCombo { + flex: 1 0 0; + height: $controls-height; + align-items: center; + @include margin(0, 0, 0, 0); + @include padding(0, 0, 0, 0); + + #update { + flex: 0 0 auto; + } + + #updateDropdownContainer { + min-width: 65; + max-width: 150; + height: $controls-height; + flex: 0 0 auto; + + .popup { + @include font-normal(); + height: $controls-height; + + &:focus { + background-image: $popup-background; + } + + &:hover { + .textElement { + color: $unity-text-color; + } + } + + .textElement { + margin-top: 2; + } + } + } + + .action { + flex: 0 0 auto; + @include margin-box(0); + @include font-normal(); + @include padding(2, 4, 3, 4); + right: -3; + &:hover { + color: $unity-text-color; + } + } + } + + #updateContainer { + height: $controls-height; + flex: 1 0 0; + align-items: flex-end; + + @include padding-box(0); + } + + + + .button { + height: $controls-height; + @include font-normal(); + @include button(3,3,4,3); + } + } + + #detailVersion { + font-size: 16; + max-height: 30; + } + + #detailName { + flex: 1 0 0; + max-height: 20; + -unity-font-style: italic; + } + + #detailPackageStatus { + flex: 1 0 0; + -unity-font-style: bold; + -unity-word-wrap: true; + } + + #detailTag { + width: 60; + @include font-normal(); + border-radius: 5; + border-color: rgb(180, 180, 180); + @include border-box(2); + -unity-text-align: middle-center; + } + + #detailDesc, #detailModuleReference { + flex: 1 0 0; + @include font-normal(); + -unity-word-wrap: true; + + &.empty { + -unity-font-style: italic; + } + } + + #detailAuthor { + flex: 1 0 0; + @include font-normal(); + -unity-word-wrap: true; + } + + #detailCategory { + flex: 1 0 0; + @include font-normal(); + -unity-word-wrap: true; + + @include margin(auto, auto, 5, auto); + } + + #changeLogContainer, #viewLicensesContainer { + flex: 0 0 auto; + flex-direction: row; + } + + #detailActions, .detailActions { + flex: 0 0 auto; + flex-direction: row; + margin-left: 2; + + @extend .row; + + .detailAction { + @include margin(auto, 0, auto, 0); + @include padding(auto, 2, auto, 2); + border-left-width: 2; + border-right-width: 2; + } + + .detailActionSeparator { + @include margin(auto, 0, auto, 0); + @include padding(auto, 0, auto, 0); + border-left-width: 0; + border-right-width: 0; + } + + #thirdPartyNoticeLabel { + @include margin(4, 0, 4, 0); + @include padding-box(0); + -unity-word-wrap: true; + } + + #viewThirdParty { + border-right-width: 0; + } + } + + .versionContainer { + @extend .row; + align-items: center; + justify-content: flex-start; + + #detailVersion { + flex: 0 0 auto; + } + } + + .tag { + border-color: $package-tag-color; + color: $package-tag-color; + + &.verified { + border-color: $package-tag-recommended-color; + color: $package-tag-recommended-color; + } + } + + .tagLines { + } + + .tagLine { + flex: 0 0 auto; + flex-direction: row; + } + + .tagContainer { + } + } + } + + #detailError { + -unity-position: absolute; + @include position(5, 5, auto, 5); + min-height: 200; + -unity-word-wrap: true; + + &.display-none { + @include position(0, 0, 0, 0); + width: 0; + height: 0; + min-height: 0; + max-height: 0; + @include border-box(0); + @include padding-box(0); + @include margin-box(0); + } + } + + #packageStatusBar { + -unity-position: relative; + + flex: 0 0 auto; + @include margin(2, 0, 0, 0); + + border-color: rgba(0, 0, 0, 0.5); + @include border(1, 0, 0, 0); + } + + #statusBarContainer { + flex-direction: row; + align-items: center; + justify-content: space-between; + + #loadingContainer{ + + flex-direction: row; + align-items: center; + justify-content: flex-start; + + margin-left: 2; + + #loadingIcon { + background-image: $background-status-error; + width: 16; + height: 16; + margin-left: -12; + margin-right: 0; + } + + #loadingText { + padding-left: 2; + -unity-font-style: italic; + + &.icon { + margin-left: 0; + } + } + } + + #moreAddOptionsButton { + font-size: 16; + background-image: none; + @include margin(0, 0, -2, 0); + @include padding(3, 6, 6, 6); + border-color: rgba(0, 0, 0, 0.5); + @include border(0, 1, 0, 0); + } + } + + #packageAddFromUrlField { + -unity-position: absolute; + @include position(-35, 0, 0, 0); + } + + #addFromUrlFieldContainer { + border-color: rgba(0, 0, 0, 0.5); + @include border(1, 0, 1, 0); + + flex-direction: row; + justify-content: space-between; + align-items: center; + + height: 35; + background-color: $unity-background; + + #urlTextField { + flex: 1 0 0; + height: 20; + -unity-text-align: middle-left; + } + + #addFromUrlButton { + flex: 0 0 auto; + height: 20; + } + } +} + +.alert { + background-color: rgba(200,0,0,0.8); + border-color: #FF0000; + flex-direction: row; + + @include border-box(1); + @include padding(5, 10, 5, 10); + + #alertMessage { + flex: 1 0 0; + color: $unity-text-color-highlight; + -unity-word-wrap: true; + @include text-clip(); + } + + #close { + flex: 0 0 auto; + max-height: 30; + @include position(auto, auto, auto, 5); + @include button(3,3,4,3); + } +} + +.spinner { + flex: 0 0 auto; + @include position(-$spinner-normal-half-size, auto, auto, -$spinner-normal-half-size); + + min-width: $spinner-normal-size; + min-height: $spinner-normal-size; + max-width: $spinner-normal-size; + max-height: $spinner-normal-size; + background-image: $background-spinner-normal; +} + +.largeSpinner { + flex: 0 0 auto; + @include position(-$spinner-large-half-size, auto, auto, -$spinner-large-half-size); + + min-width: $spinner-large-size; + min-height: $spinner-large-size; + max-width: $spinner-large-size; + max-height: $spinner-large-size; + background-image: $background-spinner-large; +} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/_common.scss.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/_common.scss.meta new file mode 100644 index 0000000..8acfd26 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Styles/_common.scss.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e45f79867376940b7ba31502238d8efa +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates.meta new file mode 100644 index 0000000..79b2a2d --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 1cf679539c5e5499e8856aaacf1fc32f +folderAsset: yes +timeCreated: 1502292048 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/Alert.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/Alert.uxml new file mode 100644 index 0000000..1eb9248 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/Alert.uxml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/Alert.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/Alert.uxml.meta new file mode 100644 index 0000000..291949a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/Alert.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f768b64e6c37495699fffe3007e4379 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageAddFromUrlField.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageAddFromUrlField.uxml new file mode 100644 index 0000000..84a5230 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageAddFromUrlField.uxml @@ -0,0 +1,13 @@ + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageAddFromUrlField.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageAddFromUrlField.uxml.meta new file mode 100644 index 0000000..f186736 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageAddFromUrlField.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97dff1b5ae41ee84886ae7a80ae21499 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageDetails.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageDetails.uxml new file mode 100644 index 0000000..709bddd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageDetails.uxml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageDetails.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageDetails.uxml.meta new file mode 100644 index 0000000..f9bfba1 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageDetails.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93c1370867fcb45079592da39e0994c5 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageGroup.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageGroup.uxml new file mode 100644 index 0000000..15a9e77 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageGroup.uxml @@ -0,0 +1,13 @@ + + + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageGroup.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageGroup.uxml.meta new file mode 100644 index 0000000..31eed0f --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageGroup.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 25ebe415cc14c4f4ea15c34a796b75bb +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageItem.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageItem.uxml new file mode 100644 index 0000000..499aa31 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageItem.uxml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageItem.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageItem.uxml.meta new file mode 100644 index 0000000..1102a59 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageItem.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 10145f279f90346bbb61712ff585828b +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageList.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageList.uxml new file mode 100644 index 0000000..05956ed --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageList.uxml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageList.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageList.uxml.meta new file mode 100644 index 0000000..3092d21 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageList.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46c02d8d6499b4309ac1ec5d0b818585 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerToolbar.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerToolbar.uxml new file mode 100644 index 0000000..0283a33 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerToolbar.uxml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerToolbar.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerToolbar.uxml.meta new file mode 100644 index 0000000..00894be --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerToolbar.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3aba9fe1ad29b42ffb0eea781318a626 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerWindow.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerWindow.uxml new file mode 100644 index 0000000..12d1504 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerWindow.uxml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerWindow.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerWindow.uxml.meta new file mode 100644 index 0000000..1dcb82a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageManagerWindow.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8d9e44eff3f447db9448925617ccb44 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageSearchToolbar.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageSearchToolbar.uxml new file mode 100644 index 0000000..3224038 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageSearchToolbar.uxml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageSearchToolbar.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageSearchToolbar.uxml.meta new file mode 100644 index 0000000..272fe81 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageSearchToolbar.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd44c1bc0fa624a39aa784af44c62180 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageStatusBar.uxml b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageStatusBar.uxml new file mode 100644 index 0000000..2a37506 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageStatusBar.uxml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageStatusBar.uxml.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageStatusBar.uxml.meta new file mode 100644 index 0000000..9a037be --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/PackageStatusBar.uxml.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbec1324b05a54939ad2fea2d7e11063 +ScriptedImporter: + fileIDToRecycleName: + 11400000: tree + 11400002: inlineStyle + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema.meta new file mode 100644 index 0000000..89278cd --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3a2bf0128e2dd664f91dfba49e36a012 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UIElements.xsd b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UIElements.xsd new file mode 100644 index 0000000..58841e7 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UIElements.xsd @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UIElements.xsd.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UIElements.xsd.meta new file mode 100644 index 0000000..7bd10ba --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UIElements.xsd.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7d22934bf84ccd14082fd2d5a9f5951e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd new file mode 100644 index 0000000..4b11a3a --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd.meta new file mode 100644 index 0000000..315df54 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.Experimental.UIElements.xsd.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 86d0242b70e6ab24aaf5a0e67edf2a61 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.PackageManager.UI.xsd b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.PackageManager.UI.xsd new file mode 100644 index 0000000..c0200c5 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.PackageManager.UI.xsd @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.PackageManager.UI.xsd.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.PackageManager.UI.xsd.meta new file mode 100644 index 0000000..964349c --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEditor.PackageManager.UI.xsd.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3abc8faab9f5cbe4db0336c99fef85ca +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd new file mode 100644 index 0000000..59b1337 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd.meta new file mode 100644 index 0000000..1239813 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Resources/Templates/UIElementsSchema/UnityEngine.Experimental.UIElements.xsd.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9da568db70dafa345a908282554b3672 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources.meta new file mode 100644 index 0000000..a5126ed --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 3c61c79a991f84470843243e9710743e +folderAsset: yes +timeCreated: 1502224504 +licenseType: Pro +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External.meta new file mode 100644 index 0000000..4d6fb48 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 06b575597b644fe8ba88495149d01b66 +timeCreated: 1503684160 \ No newline at end of file diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs new file mode 100644 index 0000000..d27d9e4 --- /dev/null +++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs @@ -0,0 +1,563 @@ +/* +Copyright (c) 2013 Max Hauser + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +From: https://github.com/maxhauser/semver +*/ + +using System; +#if !NETSTANDARD +using System.Globalization; +using System.Runtime.Serialization; +using System.Security.Permissions; +#endif +using System.Text.RegularExpressions; + +namespace Semver +{ + /// + /// A semantic version implementation. + /// Conforms to v2.0.0 of http://semver.org/ + /// +#if NETSTANDARD + public sealed class SemVersion : IComparable, IComparable +#else + [Serializable] + internal sealed class SemVersion : IComparable, IComparable, ISerializable +#endif + { + static Regex parseEx = + new Regex(@"^(?\d+)" + + @"(\.(?\d+))?" + + @"(\.(?\d+))?" + + @"(\-(?
[0-9A-Za-z\-\.]+))?" +
+                @"(\+(?[0-9A-Za-z\-\.]+))?$",
+#if NETSTANDARD
+                RegexOptions.CultureInvariant | RegexOptions.ExplicitCapture);
+#else
+                RegexOptions.CultureInvariant | RegexOptions.Compiled | RegexOptions.ExplicitCapture);
+#endif
+
+#if !NETSTANDARD
+        /// 
+        /// Initializes a new instance of the  class.
+        /// 
+        /// 
+        /// 
+        /// 
+        private SemVersion(SerializationInfo info, StreamingContext context)
+        {
+            if (info == null) throw new ArgumentNullException("info");
+            var semVersion = Parse(info.GetString("SemVersion"));
+            Major = semVersion.Major;
+            Minor = semVersion.Minor;
+            Patch = semVersion.Patch;
+            Prerelease = semVersion.Prerelease;
+            Build = semVersion.Build;
+        }
+#endif
+
+        /// 
+        /// Initializes a new instance of the  class.
+        /// 
+        /// The major version.
+        /// The minor version.
+        /// The patch version.
+        /// The prerelease version (eg. "alpha").
+        /// The build eg ("nightly.232").
+        public SemVersion(int major, int minor = 0, int patch = 0, string prerelease = "", string build = "")
+        {
+            this.Major = major;
+            this.Minor = minor;
+            this.Patch = patch;
+
+            this.Prerelease = prerelease ?? "";
+            this.Build = build ?? "";
+        }
+
+        /// 
+        /// Initializes a new instance of the  class.
+        /// 
+        /// The  that is used to initialize 
+        /// the Major, Minor, Patch and Build properties.
+        public SemVersion(Version version)
+        {
+            if (version == null)
+                throw new ArgumentNullException("version");
+
+            this.Major = version.Major;
+            this.Minor = version.Minor;
+
+            if (version.Revision >= 0)
+            {
+                this.Patch = version.Revision;
+            }
+
+            this.Prerelease = String.Empty;
+
+            if (version.Build > 0)
+            {
+                this.Build = version.Build.ToString();
+            }
+            else
+            {
+                this.Build = String.Empty;
+            }
+        }
+
+        /// 
+        /// Parses the specified string to a semantic version.
+        /// 
+        /// The version string.
+        /// If set to true minor and patch version are required, else they default to 0.
+        /// The SemVersion object.
+        /// When a invalid version string is passed.
+        public static SemVersion Parse(string version, bool strict = false)
+        {
+            var match = parseEx.Match(version);
+            if (!match.Success)
+            {
+                return new SemVersion(0);
+            }
+
+#if NETSTANDARD
+            var major = int.Parse(match.Groups["major"].Value);
+#else
+            var major = int.Parse(match.Groups["major"].Value, CultureInfo.InvariantCulture);
+#endif
+
+            var minorMatch = match.Groups["minor"];
+            int minor = 0;
+            if (minorMatch.Success) 
+            {
+#if NETSTANDARD
+                minor = int.Parse(minorMatch.Value);
+#else
+                minor = int.Parse(minorMatch.Value, CultureInfo.InvariantCulture);
+#endif
+            }
+            else if (strict)
+            {
+                throw new InvalidOperationException("Invalid version (no minor version given in strict mode)");
+            }
+
+            var patchMatch = match.Groups["patch"];
+            int patch = 0;
+            if (patchMatch.Success)
+            {
+#if NETSTANDARD
+                patch = int.Parse(patchMatch.Value);
+#else
+                patch = int.Parse(patchMatch.Value, CultureInfo.InvariantCulture);
+#endif
+            }
+            else if (strict) 
+            {
+                throw new InvalidOperationException("Invalid version (no patch version given in strict mode)");
+            }
+
+            var prerelease = match.Groups["pre"].Value;
+            var build = match.Groups["build"].Value;
+
+            return new SemVersion(major, minor, patch, prerelease, build);
+        }
+
+        /// 
+        /// Parses the specified string to a semantic version.
+        /// 
+        /// The version string.
+        /// When the method returns, contains a SemVersion instance equivalent 
+        /// to the version string passed in, if the version string was valid, or null if the 
+        /// version string was not valid.
+        /// If set to true minor and patch version are required, else they default to 0.
+        /// False when a invalid version string is passed, otherwise true.
+        public static bool TryParse(string version, out SemVersion semver, bool strict = false)
+        {
+            try
+            {
+                semver = Parse(version, strict);
+                return true;
+            }
+            catch (Exception)
+            {
+                semver = null;
+                return false;
+            }
+        }
+
+        /// 
+        /// Tests the specified versions for equality.
+        /// 
+        /// The first version.
+        /// The second version.
+        /// If versionA is equal to versionB true, else false.
+        public static bool Equals(SemVersion versionA, SemVersion versionB)
+        {
+            if (ReferenceEquals(versionA, null))
+                return ReferenceEquals(versionB, null);
+            return versionA.Equals(versionB);
+        }
+
+        /// 
+        /// Compares the specified versions.
+        /// 
+        /// The version to compare to.
+        /// The version to compare against.
+        /// If versionA < versionB < 0, if versionA > versionB > 0,
+        /// if versionA is equal to versionB 0.
+        public static int Compare(SemVersion versionA, SemVersion versionB)
+        {
+            if (ReferenceEquals(versionA, null))
+                return ReferenceEquals(versionB, null) ? 0 : -1;
+            return versionA.CompareTo(versionB);
+        }
+
+        /// 
+        /// Make a copy of the current instance with optional altered fields. 
+        /// 
+        /// The major version.
+        /// The minor version.
+        /// The patch version.
+        /// The prerelease text.
+        /// The build text.
+        /// The new version object.
+        public SemVersion Change(int? major = null, int? minor = null, int? patch = null,
+            string prerelease = null, string build = null)
+        {
+            return new SemVersion(
+                major ?? this.Major,
+                minor ?? this.Minor,
+                patch ?? this.Patch,
+                prerelease ?? this.Prerelease,
+                build ?? this.Build);
+        }
+
+        /// 
+        /// Gets the major version.
+        /// 
+        /// 
+        /// The major version.
+        /// 
+        public int Major { get; private set; }
+
+        /// 
+        /// Gets the minor version.
+        /// 
+        /// 
+        /// The minor version.
+        /// 
+        public int Minor { get; private set; }
+
+        /// 
+        /// Gets the patch version.
+        /// 
+        /// 
+        /// The patch version.
+        /// 
+        public int Patch { get; private set; }
+
+        /// 
+        /// Gets the pre-release version.
+        /// 
+        /// 
+        /// The pre-release version.
+        /// 
+        public string Prerelease { get; private set; }
+
+        /// 
+        /// Gets the build version.
+        /// 
+        /// 
+        /// The build version.
+        /// 
+        public string Build { get; private set; }
+
+        /// 
+        /// Returns a  that represents this instance.
+        /// 
+        /// 
+        /// A  that represents this instance.
+        /// 
+        public override string ToString()
+        {
+            var version = "" + Major + "." + Minor + "." + Patch;
+            if (!String.IsNullOrEmpty(Prerelease))
+                version += "-" + Prerelease;
+            if (!String.IsNullOrEmpty(Build))
+                version += "+" + Build;
+            return version;
+        }
+
+        /// 
+        /// Compares the current instance with another object of the same type and returns an integer that indicates 
+        /// whether the current instance precedes, follows, or occurs in the same position in the sort order as the 
+        /// other object.
+        /// 
+        /// An object to compare with this instance.
+        /// 
+        /// A value that indicates the relative order of the objects being compared. 
+        /// The return value has these meanings: Value Meaning Less than zero 
+        ///  This instance precedes  in the sort order. 
+        ///  Zero This instance occurs in the same position in the sort order as . i
+        ///  Greater than zero This instance follows  in the sort order.
+        /// 
+        public int CompareTo(object obj)
+        {
+            return CompareTo((SemVersion)obj);
+        }
+
+        /// 
+        /// Compares the current instance with another object of the same type and returns an integer that indicates 
+        /// whether the current instance precedes, follows, or occurs in the same position in the sort order as the 
+        /// other object.
+        /// 
+        /// An object to compare with this instance.
+        /// 
+        /// A value that indicates the relative order of the objects being compared. 
+        /// The return value has these meanings: Value Meaning Less than zero 
+        ///  This instance precedes  in the sort order. 
+        ///  Zero This instance occurs in the same position in the sort order as . i
+        ///  Greater than zero This instance follows  in the sort order.
+        /// 
+        public int CompareTo(SemVersion other)
+        {
+            if (ReferenceEquals(other, null))
+                return 1;
+
+            var r = this.CompareByPrecedence(other);
+            if (r != 0)
+                return r;
+
+            r = CompareComponent(this.Build, other.Build);
+            return r;
+        }
+
+        /// 
+        /// Compares to semantic versions by precedence. This does the same as a Equals, but ignores the build information.
+        /// 
+        /// The semantic version.
+        /// true if the version precedence matches.
+        public bool PrecedenceMatches(SemVersion other)
+        {
+            return CompareByPrecedence(other) == 0;
+        }
+
+        /// 
+        /// Compares to semantic versions by precedence. This does the same as a Equals, but ignores the build information.
+        /// 
+        /// The semantic version.
+        /// 
+        /// A value that indicates the relative order of the objects being compared. 
+        /// The return value has these meanings: Value Meaning Less than zero 
+        ///  This instance precedes  in the version precedence.
+        ///  Zero This instance has the same precedence as . i
+        ///  Greater than zero This instance has creater precedence as .
+        /// 
+        public int CompareByPrecedence(SemVersion other)
+        {
+            if (ReferenceEquals(other, null))
+                return 1;
+
+            var r = this.Major.CompareTo(other.Major);
+            if (r != 0) return r;
+
+            r = this.Minor.CompareTo(other.Minor);
+            if (r != 0) return r;
+
+            r = this.Patch.CompareTo(other.Patch);
+            if (r != 0) return r;
+
+            r = CompareComponent(this.Prerelease, other.Prerelease, true);
+            return r;
+        }
+
+        static int CompareComponent(string a, string b, bool lower = false)
+        {
+            var aEmpty = String.IsNullOrEmpty(a);
+            var bEmpty = String.IsNullOrEmpty(b);
+            if (aEmpty && bEmpty)
+                return 0;
+
+            if (aEmpty)
+                return lower ? 1 : -1;
+            if (bEmpty)
+                return lower ? -1 : 1;
+
+            var aComps = a.Split('.');
+            var bComps = b.Split('.');
+
+            var minLen = Math.Min(aComps.Length, bComps.Length);
+            for (int i = 0; i < minLen; i++)
+            {
+                var ac = aComps[i];
+                var bc = bComps[i];
+                int anum, bnum;
+                var isanum = Int32.TryParse(ac, out anum);
+                var isbnum = Int32.TryParse(bc, out bnum);
+                int r;
+                if (isanum && isbnum)
+                {
+                    r = anum.CompareTo(bnum);
+                    if (r != 0) return anum.CompareTo(bnum);
+                }
+                else
+                {
+                    if (isanum)
+                        return -1;
+                    if (isbnum)
+                        return 1;
+                    r = String.CompareOrdinal(ac, bc);
+                    if (r != 0)
+                        return r;
+                }
+            }
+
+            return aComps.Length.CompareTo(bComps.Length);
+        }
+
+        /// 
+        /// Determines whether the specified  is equal to this instance.
+        /// 
+        /// The  to compare with this instance.
+        /// 
+        ///   true if the specified  is equal to this instance; otherwise, false.
+        /// 
+        public override bool Equals(object obj)
+        {
+            if (ReferenceEquals(obj, null))
+                return false;
+
+            if (ReferenceEquals(this, obj))
+                return true;
+
+            var other = (SemVersion)obj;
+
+            return this.Major == other.Major &&
+                this.Minor == other.Minor &&
+                this.Patch == other.Patch &&
+                string.Equals(this.Prerelease, other.Prerelease, StringComparison.Ordinal) &&
+                string.Equals(this.Build, other.Build, StringComparison.Ordinal);
+        }
+
+        /// 
+        /// Returns a hash code for this instance.
+        /// 
+        /// 
+        /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 
+        /// 
+        public override int GetHashCode()
+        {
+            unchecked
+            {
+                int result = this.Major.GetHashCode();
+                result = result * 31 + this.Minor.GetHashCode();
+                result = result * 31 + this.Patch.GetHashCode();
+                result = result * 31 + this.Prerelease.GetHashCode();
+                result = result * 31 + this.Build.GetHashCode();
+                return result;
+            }
+        }
+
+#if !NETSTANDARD
+        [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+        public void GetObjectData(SerializationInfo info, StreamingContext context)
+        {
+            if (info == null) throw new ArgumentNullException("info");
+            info.AddValue("SemVersion", ToString());
+        }
+#endif
+
+        /// 
+        /// Implicit conversion from string to SemVersion.
+        /// 
+        /// The semantic version.
+        /// The SemVersion object.
+        public static implicit operator SemVersion(string version)
+        {
+            return SemVersion.Parse(version);
+        }
+
+        /// 
+        /// The override of the equals operator. 
+        /// 
+        /// The left value.
+        /// The right value.
+        /// If left is equal to right true, else false.
+        public static bool operator ==(SemVersion left, SemVersion right)
+        {
+            return SemVersion.Equals(left, right);
+        }
+
+        /// 
+        /// The override of the un-equal operator. 
+        /// 
+        /// The left value.
+        /// The right value.
+        /// If left is not equal to right true, else false.
+        public static bool operator !=(SemVersion left, SemVersion right)
+        {
+            return !SemVersion.Equals(left, right);
+        }
+
+        /// 
+        /// The override of the greater operator. 
+        /// 
+        /// The left value.
+        /// The right value.
+        /// If left is greater than right true, else false.
+        public static bool operator >(SemVersion left, SemVersion right)
+        {
+            return SemVersion.Compare(left, right) > 0;
+        }
+
+        /// 
+        /// The override of the greater than or equal operator. 
+        /// 
+        /// The left value.
+        /// The right value.
+        /// If left is greater than or equal to right true, else false.
+        public static bool operator >=(SemVersion left, SemVersion right)
+        {
+            return left == right || left > right;
+        }
+
+        /// 
+        /// The override of the less operator. 
+        /// 
+        /// The left value.
+        /// The right value.
+        /// If left is less than right true, else false.
+        public static bool operator <(SemVersion left, SemVersion right)
+        {
+            return SemVersion.Compare(left, right) < 0;
+        }
+
+        /// 
+        /// The override of the less than or equal operator. 
+        /// 
+        /// The left value.
+        /// The right value.
+        /// If left is less than or equal to right true, else false.
+        public static bool operator <=(SemVersion left, SemVersion right)
+        {
+            return left == right || left < right;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs.meta
new file mode 100644
index 0000000..1734b50
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersion.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 5075cb5aa3254b099b11b2840d7cd46e
+timeCreated: 1503684176
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs
new file mode 100644
index 0000000..4dd8aef
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs
@@ -0,0 +1,15 @@
+namespace Semver
+{
+    internal static class SemVersionExtension
+    {
+        public static string VersionOnly(this SemVersion version)
+        {
+            return "" + version.Major + "." + version.Minor + "." + version.Patch;
+        }
+        
+        public static string ShortVersion(this SemVersion version)
+        {
+            return version.Major + "." + version.Minor;
+        }                
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs.meta
new file mode 100644
index 0000000..0022e01
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/External/SemVersionExtension.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9f17a0688211d476f8d8c9742bb9f992
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services.meta
new file mode 100644
index 0000000..27cc5fd
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: afd7697844f4142f9aa91471c1fba506
+folderAsset: yes
+timeCreated: 1502224642
+licenseType: Pro
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common.meta
new file mode 100644
index 0000000..d59dbe6
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1067213df0c64b319bc81e73be809b1a
+timeCreated: 1505249387
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs
new file mode 100644
index 0000000..12691d3
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs
@@ -0,0 +1,17 @@
+using System.Linq;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{
+    class ApplicationUtil
+    {
+        public static bool IsPreReleaseVersion
+        {
+            get
+            {
+                var lastToken = Application.unityVersion.Split('.').LastOrDefault();
+                return lastToken.Contains("a") || lastToken.Contains("b");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs.meta
new file mode 100644
index 0000000..0f1a767
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ApplicationUtil.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7ed48dcc992234c659018e00590315b7
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs
new file mode 100644
index 0000000..512c718
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs
@@ -0,0 +1,30 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+    [Serializable]
+    internal class OperationSignal where T: IBaseOperation
+    {
+        public event Action OnOperation = delegate { };
+
+        public T Operation { get; set; }
+
+        public void SetOperation(T operation)
+        {
+            Operation = operation;
+            OnOperation(operation);
+        }
+
+        public void WhenOperation(Action callback)
+        {
+            if (Operation != null)
+                callback(Operation);
+            OnOperation += callback;
+        }
+
+        internal void ResetEvents()
+        {
+            OnOperation = delegate { };
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs.meta
new file mode 100644
index 0000000..a58af90
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/OperationSignal.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7da0c11c52b4044de81c175887699282
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs
new file mode 100644
index 0000000..f9cf6e4
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs
@@ -0,0 +1,19 @@
+using UnityEngine.Experimental.UIElements;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal static class Resources
+    {
+        private static string TemplateRoot { get { return PackageManagerWindow.ResourcesPath + "Templates"; } }
+
+        private static string TemplatePath(string filename)
+        {
+            return string.Format("{0}/{1}", TemplateRoot, filename);
+        }
+
+        public static VisualElement GetTemplate(string templateFilename)
+        {
+            return AssetDatabase.LoadAssetAtPath(TemplatePath(templateFilename)).CloneTree(null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs.meta
new file mode 100644
index 0000000..0f999a7
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/Resources.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d6a708dbb74414a6dbd60e07d9513c1c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs
new file mode 100644
index 0000000..6503753
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs
@@ -0,0 +1,35 @@
+using System.Threading;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal class ThreadedDelay
+    {
+        public int Length { get; set; }            // In milliseconds
+        public bool IsDone { get; private set; }
+
+        public ThreadedDelay(int length = 0)
+        {
+            Length = length;
+            IsDone = false;
+        }
+
+        public void Start()
+        {
+            if (Length <= 0)
+            {
+                IsDone = true;
+                return;
+            }
+
+            IsDone = false;
+            
+            Thread newThread = new Thread(() =>
+            {
+                Thread.Sleep(Length);
+                IsDone = true;
+            });
+            
+            newThread.Start();
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs.meta
new file mode 100644
index 0000000..543d228
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Common/ThreadedDelay.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 490fe93dbc954e3ba3651b7f55eaba70
+timeCreated: 1505249395
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces.meta
new file mode 100644
index 0000000..96397a4
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3385f7527e5be4c65b3a5294e8995ff8
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs
new file mode 100644
index 0000000..40c39fd
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs
@@ -0,0 +1,13 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal interface IAddOperation : IBaseOperation
+    {
+        event Action OnOperationSuccess;
+        
+        PackageInfo PackageInfo { get; }
+
+        void AddPackageAsync(PackageInfo packageInfo, Action doneCallbackAction = null,  Action errorCallbackAction = null);
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs.meta
new file mode 100644
index 0000000..d84d4b0
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IAddOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3dcbbc060dea46168ffc09a580836240
+timeCreated: 1504191596
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs
new file mode 100644
index 0000000..4c22b28
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs
@@ -0,0 +1,14 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal interface IBaseOperation
+    {
+        event Action OnOperationError;
+        event Action OnOperationFinalized;
+
+        bool IsCompleted { get; }
+                
+        void Cancel();
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs.meta
new file mode 100644
index 0000000..4c59885
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IBaseOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2f1849b9179b464381598f68663790d3
+timeCreated: 1507041169
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs
new file mode 100644
index 0000000..00ba1fa
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal interface IListOperation : IBaseOperation
+    {
+        bool OfflineMode { get; set; }
+        void GetPackageListAsync(Action> doneCallbackAction, Action errorCallbackAction = null);
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs.meta
new file mode 100644
index 0000000..9bc2553
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IListOperation.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b7e8a8fb69eacee439474914ea54bf9b
+timeCreated: 1502913188
+licenseType: Free
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs
new file mode 100644
index 0000000..1d10304
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs
@@ -0,0 +1,14 @@
+namespace UnityEditor.PackageManager.UI
+{
+    /// 
+    /// This is the Interface we will use to create the facade we need for testing.
+    /// In the case of the Fake factory, we can create fake operations with doctored data we use for our tests.
+    /// 
+    internal interface IOperationFactory
+    {
+        IListOperation CreateListOperation(bool offlineMode = false);
+        ISearchOperation CreateSearchOperation();
+        IAddOperation CreateAddOperation();
+        IRemoveOperation CreateRemoveOperation();
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs.meta
new file mode 100644
index 0000000..d718f50
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IOperationFactory.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 0a1161a2ab6569948a0aa7899197218c
+timeCreated: 1502915478
+licenseType: Free
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs
new file mode 100644
index 0000000..211c992
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs
@@ -0,0 +1,11 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal interface IRemoveOperation : IBaseOperation
+    {
+        event Action OnOperationSuccess;
+
+        void RemovePackageAsync(PackageInfo package, Action doneCallbackAction = null,  Action errorCallbackAction = null);
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs.meta
new file mode 100644
index 0000000..0506013
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/IRemoveOperation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 54e5fc61925bc4ca3b2c1e82dfb35eb5
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs
new file mode 100644
index 0000000..b3b6a90
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal interface ISearchOperation : IBaseOperation
+    {
+        void GetAllPackageAsync(Action> doneCallbackAction = null, Action errorCallbackAction = null);
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs.meta
new file mode 100644
index 0000000..0b2741a
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Interfaces/ISearchOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 85dba6b2d7204a7f9a1f976eb0a6b4d2
+timeCreated: 1508160206
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs
new file mode 100644
index 0000000..9e07fc3
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs
@@ -0,0 +1,24 @@
+namespace UnityEditor.PackageManager.UI
+{
+    internal static class OperationFactory
+    {
+        private static IOperationFactory _instance;
+
+        public static IOperationFactory Instance 
+        {
+            get {
+                if (_instance == null)
+                    _instance = new UpmOperationFactory ();
+                return _instance;
+            }
+            internal set {
+                _instance = value;
+            }
+        }
+
+        internal static void Reset()
+        {
+            _instance = null;
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs.meta
new file mode 100644
index 0000000..5d7e994
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/OperationFactory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9ec5dc72125424af38a9bfaca532acc8
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages.meta
new file mode 100644
index 0000000..c0acdbc
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: e53bc96d2d054b8cbc811f0d73e761eb
+timeCreated: 1504191702
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs
new file mode 100644
index 0000000..5c366dd
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs
@@ -0,0 +1,222 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{    
+    // History of a single package
+    internal class Package : IEquatable
+    {
+        static public bool ShouldProposeLatestVersions
+        {
+            get
+            {
+                // Until we figure out a way to test this properly, alway show standard behavior
+                //    return InternalEditorUtility.IsUnityBeta() && !Unsupported.IsDeveloperMode();
+                return false;
+            }
+        }
+
+        // There can only be one package add/remove operation.
+        private static IBaseOperation addRemoveOperationInstance;
+
+        public static bool AddRemoveOperationInProgress
+        {
+            get { return addRemoveOperationInstance != null && !addRemoveOperationInstance.IsCompleted; }
+        }
+
+        internal const string packageManagerUIName = "com.unity.package-manager-ui";
+        private readonly string packageName;
+        private IEnumerable source;
+
+        internal Package(string packageName, IEnumerable infos)
+        {
+            if (string.IsNullOrEmpty(packageName))
+                throw new ArgumentException("Cannot be empty or null", "packageName");
+
+            if (!infos.Any())
+                throw new ArgumentException("Cannot be empty", "infos");
+            
+            this.packageName = packageName;
+            UpdateSource(infos);
+        }
+
+        internal void UpdateSource(IEnumerable source)
+        {
+            this.source = source;
+#if UNITY_2018_3_OR_NEWER
+            if (IsPackageManagerUI)
+                this.source = this.source.Where(p => p != null && p.Version.Major >= 2);
+#endif
+        }
+
+        public PackageInfo Current { get { return Versions.FirstOrDefault(package => package.IsCurrent); } }
+
+        // This is the latest verified or official release (eg: 1.3.2). Not necessarily the latest verified release (eg: 1.2.4) or that latest candidate (eg: 1.4.0-beta)
+        public PackageInfo LatestUpdate
+        {
+            get
+            {
+                // We want to show the absolute latest when in beta mode
+                if (ShouldProposeLatestVersions)
+                    return Latest;
+
+                // Override with current when it's version locked
+                var current = Current;
+                if (current != null && current.IsVersionLocked)
+                    return current;
+
+                // Get all the candidates versions (verified, release, preview) that are newer than current
+                var verified = Verified;
+                var latestRelease = LatestRelease;
+                var latestPreview = Versions.LastOrDefault(package => package.IsPreview);
+                var candidates = new List
+                {
+                    verified,
+                    latestRelease,
+                    latestPreview,
+                }.Where(package => package != null && (current == null || current == package || current.Version < package.Version)).ToList();
+
+                if (candidates.Contains(verified))
+                    return verified;
+                if ((current == null || !current.IsVerified ) && candidates.Contains(latestRelease))
+                    return latestRelease;
+                if ((current == null || current.IsPreview) && candidates.Contains(latestPreview))
+                    return latestPreview;
+
+                // Show current if it exists, otherwise latest user visible, and then otherwise show the absolute latest
+                return current ?? Latest;
+            }
+        }
+
+        public PackageInfo LatestPatch
+        {
+            get
+            {
+                if (Current == null)
+                    return null;
+                
+                // Get all version that have the same Major/Minor
+                var versions = Versions.Where(package => package.Version.Major == Current.Version.Major && package.Version.Minor == Current.Version.Minor);
+
+                return versions.LastOrDefault();
+            }
+        }
+
+        // This is the very latest version, including pre-releases (eg: 1.4.0-beta).
+        internal PackageInfo Latest { get { return Versions.FirstOrDefault(package => package.IsLatest) ?? Versions.LastOrDefault(); } }
+
+        // Returns the current version if it exist, otherwise returns the latest user visible version.
+        internal PackageInfo VersionToDisplay { get { return Current ?? LatestUpdate; } }
+
+        // Every version available for this package
+        internal IEnumerable Versions { get { return source.OrderBy(package => package.Version); } }
+
+        // Every version that's not a pre-release (eg: not beta/alpha/preview).
+        internal IEnumerable ReleaseVersions
+        {
+            get { return Versions.Where(package => !package.IsPreRelease); }
+        }
+        
+        internal PackageInfo LatestRelease { get {return ReleaseVersions.LastOrDefault();}}
+        internal PackageInfo Verified { get {return Versions.FirstOrDefault(package => package.IsVerified);}}
+
+        internal bool IsAfterCurrentVersion(PackageInfo packageInfo) { return Current == null || (packageInfo != null  && packageInfo.Version > Current.Version); }
+
+        internal bool IsBuiltIn {get { return Versions.Any() && Versions.First().IsBuiltIn; }}
+
+        public string Name { get { return packageName; } }
+
+        public bool IsPackageManagerUI
+        {
+            get { return Name == packageManagerUIName; }
+        }
+        
+        public bool Equals(Package other)
+        {
+            if (other == null) 
+                return false;
+            
+            return packageName == other.packageName;
+        }
+
+        public override int GetHashCode()
+        {
+            return packageName.GetHashCode();
+        }
+        
+        [SerializeField]
+        internal readonly OperationSignal AddSignal = new OperationSignal();
+
+        private Action OnAddOperationFinalizedEvent;
+        
+        internal void Add(PackageInfo packageInfo)
+        {
+            if (packageInfo == Current || AddRemoveOperationInProgress)
+                return;
+
+            var operation = OperationFactory.Instance.CreateAddOperation();
+            addRemoveOperationInstance = operation;
+            OnAddOperationFinalizedEvent = () =>
+            {
+                AddSignal.Operation = null;
+                operation.OnOperationFinalized -= OnAddOperationFinalizedEvent;
+                PackageCollection.Instance.FetchListOfflineCache(true);
+            };
+
+            operation.OnOperationFinalized += OnAddOperationFinalizedEvent;
+
+            AddSignal.SetOperation(operation);
+            operation.AddPackageAsync(packageInfo);
+        }
+
+        internal void Update()
+        {
+            Add(Latest);
+        }
+
+        internal static void AddFromLocalDisk(string path)
+        {
+            if (AddRemoveOperationInProgress)
+                return;
+
+            var packageJson = PackageJsonHelper.Load(path);
+            if (null == packageJson)
+            {
+                Debug.LogError(string.Format("Invalid package path: cannot find \"{0}\".", path));
+                return;
+            }
+
+            var operation = OperationFactory.Instance.CreateAddOperation();
+            addRemoveOperationInstance = operation;
+            operation.AddPackageAsync(packageJson.PackageInfo);
+        }
+
+        [SerializeField]
+        internal readonly OperationSignal RemoveSignal = new OperationSignal();
+
+        private Action OnRemoveOperationFinalizedEvent;
+
+        public void Remove()
+        {
+            if (Current == null || AddRemoveOperationInProgress)
+                return;
+
+            var operation = OperationFactory.Instance.CreateRemoveOperation();
+            addRemoveOperationInstance = operation;
+            OnRemoveOperationFinalizedEvent = () =>
+            {
+                RemoveSignal.Operation = null;
+                operation.OnOperationFinalized -= OnRemoveOperationFinalizedEvent;
+                PackageCollection.Instance.FetchListOfflineCache(true);
+            };
+
+            operation.OnOperationFinalized += OnRemoveOperationFinalizedEvent;
+            RemoveSignal.SetOperation(operation);
+
+            operation.RemovePackageAsync(Current);
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs.meta
new file mode 100644
index 0000000..e777649
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/Package.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f499e12eaeb145bf9022f581c0b7fa5b
+timeCreated: 1505740170
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs
new file mode 100644
index 0000000..6820ec6
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs
@@ -0,0 +1,21 @@
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal class PackageAssetPostprocessor : AssetPostprocessor
+    {
+        static bool IsPackageJsonAsset(string path)
+        {
+            var pathComponents = (path ?? "").Split('/');
+            return pathComponents.Length == 3 && pathComponents[0] == "Packages" && pathComponents[2] == "package.json";
+        }
+
+        static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
+        {
+            if (PackageCollection.Instance != null && (importedAssets.Any(IsPackageJsonAsset) || deletedAssets.Any(IsPackageJsonAsset) || movedAssets.Any(IsPackageJsonAsset)))
+            {
+                PackageCollection.Instance.FetchListOfflineCache(true);
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs.meta
new file mode 100644
index 0000000..9f0fe82
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageAssetPostprocessor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 63e8a6023745e4347bb661e87a9be1d9
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs
new file mode 100644
index 0000000..6401088
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs
@@ -0,0 +1,284 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{
+    [Serializable]
+    internal class PackageCollection
+    {
+        private static PackageCollection instance = new PackageCollection();
+        public static PackageCollection Instance { get { return instance; } }
+
+        public event Action> OnPackagesChanged = delegate { };
+        public event Action OnFilterChanged = delegate { };
+
+        private readonly Dictionary packages;
+
+        private PackageFilter filter;
+
+        private string selectedListPackage;
+        private string selectedSearchPackage;
+
+        internal string lastUpdateTime;
+        private List listPackagesOffline;
+        private List listPackages;
+        private List searchPackages;
+
+        private List packageErrors;
+
+        private int listPackagesVersion;
+        private int listPackagesOfflineVersion;
+
+        private bool searchOperationOngoing;
+        private bool listOperationOngoing;
+        private bool listOperationOfflineOngoing;
+
+        private IListOperation listOperationOffline;
+        private IListOperation listOperation;
+        private ISearchOperation searchOperation;
+
+        public readonly OperationSignal SearchSignal = new OperationSignal();
+        public readonly OperationSignal ListSignal = new OperationSignal();
+
+        public static void InitInstance(ref PackageCollection value)
+        {
+            if (value == null)  // UI window opened
+            {
+                value = instance;
+
+                Instance.OnPackagesChanged = delegate { };
+                Instance.OnFilterChanged = delegate { };
+                Instance.SearchSignal.ResetEvents();
+                Instance.ListSignal.ResetEvents();
+
+                Instance.FetchListOfflineCache(true);
+                Instance.FetchListCache(true);
+                Instance.FetchSearchCache(true);
+            }
+            else // Domain reload
+            {
+                instance = value;
+
+                Instance.RebuildPackageDictionary();
+
+                // Resume operations interrupted by domain reload
+                Instance.FetchListOfflineCache(Instance.listOperationOfflineOngoing);
+                Instance.FetchListCache(Instance.listOperationOngoing);
+                Instance.FetchSearchCache(Instance.searchOperationOngoing);
+            }
+        }
+
+        public PackageFilter Filter
+        {
+            get { return filter; }
+            
+            // For public usage, use SetFilter() instead
+            private set
+            {
+                var changed = value != filter;
+                filter = value;
+                
+                if (changed)
+                    OnFilterChanged(filter);
+            }
+        }
+
+        public List LatestListPackages
+        {
+            get { return listPackagesVersion > listPackagesOfflineVersion? listPackages : listPackagesOffline; }
+        }
+
+        public List LatestSearchPackages { get { return searchPackages; } }
+
+        public string SelectedPackage
+        {
+            get { return PackageFilter.All == Filter ? selectedSearchPackage : selectedListPackage; }
+            set
+            {
+                if (PackageFilter.All == Filter)
+                    selectedSearchPackage = value;
+                else
+                    selectedListPackage = value;
+            }
+        }
+        
+        private PackageCollection()
+        {
+            packages = new Dictionary();
+
+            listPackagesOffline = new List();
+            listPackages = new List();
+            searchPackages = new List();
+
+            packageErrors = new List();
+
+            listPackagesVersion = 0;
+            listPackagesOfflineVersion = 0;
+
+            searchOperationOngoing = false;
+            listOperationOngoing = false;
+            listOperationOfflineOngoing = false;
+
+            Filter = PackageFilter.All;
+        }
+
+        public bool SetFilter(PackageFilter value, bool refresh = true)
+        {
+            if (value == Filter) 
+                return false;
+            
+            Filter = value;
+            if (refresh)
+            {
+                UpdatePackageCollection();
+            }
+            return true;
+        }
+
+        public void UpdatePackageCollection(bool rebuildDictionary = false)
+        {
+            if (rebuildDictionary)
+            {
+                lastUpdateTime = DateTime.Now.ToString("HH:mm");
+                RebuildPackageDictionary();
+            }
+            if (packages.Any())
+                OnPackagesChanged(OrderedPackages());
+        }
+
+        internal void FetchListOfflineCache(bool forceRefetch = false)
+        {
+            if (!forceRefetch && (listOperationOfflineOngoing || listPackagesOffline.Any())) return;
+            if (listOperationOffline != null)
+                listOperationOffline.Cancel();
+            listOperationOfflineOngoing = true;
+            listOperationOffline = OperationFactory.Instance.CreateListOperation(true);
+            listOperationOffline.OnOperationFinalized += () =>
+            {
+                listOperationOfflineOngoing = false;
+                UpdatePackageCollection(true);
+            };
+            listOperationOffline.GetPackageListAsync(
+                infos =>
+                {
+                    var version = listPackagesVersion;
+                    UpdateListPackageInfosOffline(infos, version);
+                },
+                error => { Debug.LogError("Error fetching package list (offline mode)."); });
+        }
+
+        internal void FetchListCache(bool forceRefetch = false)
+        {
+            if (!forceRefetch && (listOperationOngoing || listPackages.Any())) return;
+            if (listOperation != null)
+                listOperation.Cancel();
+            listOperationOngoing = true;
+            listOperation = OperationFactory.Instance.CreateListOperation();
+            listOperation.OnOperationFinalized += () =>
+            {
+                listOperationOngoing = false;
+                UpdatePackageCollection(true);
+            };
+            listOperation.GetPackageListAsync(UpdateListPackageInfos,
+                error => { Debug.LogError("Error fetching package list."); });
+            ListSignal.SetOperation(listOperation);
+        }
+
+        internal void FetchSearchCache(bool forceRefetch = false)
+        {
+            if (!forceRefetch && (searchOperationOngoing || searchPackages.Any())) return;
+            if (searchOperation != null)
+                searchOperation.Cancel();
+            searchOperationOngoing = true;
+            searchOperation = OperationFactory.Instance.CreateSearchOperation();
+            searchOperation.OnOperationFinalized += () =>
+            {
+                searchOperationOngoing = false;
+                UpdatePackageCollection(true);
+            };
+            searchOperation.GetAllPackageAsync(UpdateSearchPackageInfos,
+                error => { Debug.LogError("Error searching packages online."); });
+            SearchSignal.SetOperation(searchOperation);
+        }
+
+        private void UpdateListPackageInfosOffline(IEnumerable newInfos, int version)
+        {
+            listPackagesOfflineVersion = version;
+            listPackagesOffline = newInfos.Where(p => p.IsUserVisible).ToList();
+        }
+
+        private void UpdateListPackageInfos(IEnumerable newInfos)
+        {
+            // Each time we fetch list packages, the cache for offline mode will be updated
+            // We keep track of the list packages version so that we know which version of cache
+            // we are getting with the offline fetch operation.
+            listPackagesVersion++;
+            listPackages = newInfos.Where(p => p.IsUserVisible).ToList();
+            listPackagesOffline = listPackages;
+        }
+
+        private void UpdateSearchPackageInfos(IEnumerable newInfos)
+        {
+            searchPackages = newInfos.Where(p => p.IsUserVisible).ToList();
+        }
+
+        private IEnumerable OrderedPackages()
+        {
+            return packages.Values.OrderBy(pkg => pkg.Versions.LastOrDefault() == null ? pkg.Name : pkg.Versions.Last().DisplayName).AsEnumerable();
+        }
+
+        public Package GetPackageByName(string name)
+        {
+            Package package;
+            packages.TryGetValue(name, out package);
+            return package;
+        }
+
+        public Error GetPackageError(Package package)
+        {
+            if (null == package) return null;
+            var firstMatchingError = packageErrors.FirstOrDefault(p => p.PackageName == package.Name);
+            return firstMatchingError != null ? firstMatchingError.Error : null;
+        }
+
+        public void AddPackageError(Package package, Error error)
+        {
+            if (null == package || null == error) return;
+            packageErrors.Add(new PackageError(package.Name, error));
+        }
+
+        public void RemovePackageErrors(Package package)
+        {
+            if (null == package) return;
+            packageErrors.RemoveAll(p => p.PackageName == package.Name);
+        }
+
+        private void RebuildPackageDictionary()
+        {
+            // Merge list & search packages
+            var allPackageInfos = new List(LatestListPackages);
+            var installedPackageIds = new HashSet(allPackageInfos.Select(p => p.PackageId));
+            allPackageInfos.AddRange(searchPackages.Where(p => !installedPackageIds.Contains(p.PackageId)));
+
+            if (!PackageManagerPrefs.ShowPreviewPackages)
+            {
+                allPackageInfos = allPackageInfos.Where(p => !p.IsPreRelease || installedPackageIds.Contains(p.PackageId)).ToList();
+            }
+
+            // Rebuild packages dictionary
+            packages.Clear();
+            foreach (var p in allPackageInfos)
+            {
+                var packageName = p.Name;
+                if (packages.ContainsKey(packageName))
+                    continue;
+
+                var packageQuery = from pkg in allPackageInfos where pkg.Name == packageName select pkg;
+                var package = new Package(packageName, packageQuery);
+                packages[packageName] = package;
+            }
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs.meta
new file mode 100644
index 0000000..642cef2
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageCollection.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 61d72cb49da3040d5ade3edfd6eccfc1
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs
new file mode 100644
index 0000000..dff3c13
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+    [Serializable]
+    internal class PackageError
+    {
+        public string PackageName;
+        public Error Error;
+
+        public PackageError(string packageName, Error error)
+        {
+            PackageName = packageName;
+            Error = error;
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs.meta
new file mode 100644
index 0000000..18d4165
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageError.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b7c10e584b708734ba6141e7d4797931
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs
new file mode 100644
index 0000000..2c0e524
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs
@@ -0,0 +1,13 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+    [Serializable]
+    internal enum PackageFilter
+    {
+        None,
+        All,
+        Local,
+        Modules
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs.meta
new file mode 100644
index 0000000..26ce6a0
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageFilter.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 03ffb9844f8d40e8a2f59dd2aff561eb
+timeCreated: 1508251051
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs
new file mode 100644
index 0000000..6670332
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs
@@ -0,0 +1,8 @@
+namespace UnityEditor.PackageManager.UI
+{
+    internal enum PackageGroupOrigins
+    {
+        Packages,
+        BuiltInPackages
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs.meta
new file mode 100644
index 0000000..dbdf425
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageGroupOrigins.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0e372f1bbea04aa9bd68055d4105bd84
+timeCreated: 1508855779
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs
new file mode 100644
index 0000000..e038002
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs
@@ -0,0 +1,180 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Semver;
+
+namespace UnityEditor.PackageManager.UI
+{
+    [Serializable]
+    internal class PackageInfo : IEquatable
+    {
+        // Module package.json files contain a documentation url embedded in the description.
+        // We parse that to have the "View Documentation" button direct to it, instead of showing
+        // the link in the description text.
+        private const string builtinPackageDocsUrlKey = "Scripting API: ";
+
+        public string Name;
+        public string DisplayName;
+        private string _PackageId;
+        public SemVersion Version;
+        public string Description;
+        public string Category;
+        public PackageState State;
+        public bool IsCurrent;
+        public bool IsLatest;
+        public string Group;
+        public PackageSource Origin;
+        public List Errors;
+        public bool IsVerified;
+        public string Author;
+
+        public PackageManager.PackageInfo Info { get; set; }
+        
+        public string PackageId {
+            get
+            {
+                if (!string.IsNullOrEmpty(_PackageId )) 
+                    return _PackageId;
+                return string.Format("{0}@{1}", Name.ToLower(), Version);
+            }
+            set
+            {
+                _PackageId = value;
+            }
+        }
+
+        // This will always be @, even for an embedded package.
+        public string VersionId { get { return string.Format("{0}@{1}", Name.ToLower(), Version); } }
+        public string ShortVersionId { get { return string.Format("{0}@{1}", Name.ToLower(), Version.ShortVersion()); } }
+
+        public string BuiltInDescription { get {
+            if (IsBuiltIn)
+                return string.Format("This built in package controls the presence of the {0} module.", DisplayName);
+            else
+                return Description.Split(new[] {builtinPackageDocsUrlKey}, StringSplitOptions.None)[0];
+        } }
+
+        // Method content must be matched in package-manager-doctools extension
+        public static string GetPackageUrlRedirect(string packageName)
+        {
+            var redirectUrl = "";
+            if (packageName == "com.unity.ads")
+                redirectUrl = "https://docs.unity3d.com/Manual/UnityAds.html";
+            else if  (packageName == "com.unity.analytics")
+                redirectUrl = "https://docs.unity3d.com/Manual/UnityAnalytics.html";
+            else if  (packageName == "com.unity.purchasing")
+                redirectUrl = "https://docs.unity3d.com/Manual/UnityIAP.html";
+            else if  (packageName == "com.unity.standardevents")
+                redirectUrl = "https://docs.unity3d.com/Manual/UnityAnalyticsStandardEvents.html";
+            else if  (packageName == "com.unity.xiaomi")
+                redirectUrl = "https://unity3d.com/cn/partners/xiaomi/guide";
+            else if (packageName == "com.unity.shadergraph")
+                redirectUrl = "https://github.com/Unity-Technologies/ShaderGraph/wiki";
+            else if (packageName == "com.unity.collab-proxy")
+                redirectUrl = "https://docs.unity3d.com/Manual/UnityCollaborate.html";
+
+            return redirectUrl;
+        }
+
+        public bool RedirectsToManual(PackageInfo packageInfo)
+        {
+            return !string.IsNullOrEmpty(GetPackageUrlRedirect(packageInfo.Name));
+        }
+
+        public bool HasChangelog(PackageInfo packageInfo)
+        {
+            // Packages with no docs have no third party notice
+            return !RedirectsToManual(packageInfo);
+        }
+
+        public string GetDocumentationUrl()
+        {
+            if (IsBuiltIn)
+            {
+                if (!string.IsNullOrEmpty(Description))
+                {
+                    var split = Description.Split(new[] {builtinPackageDocsUrlKey}, StringSplitOptions.None);
+                    if (split.Length > 1)
+                        return split[1];
+                }
+            }
+            return string.Format("http://docs.unity3d.com/Packages/{0}/index.html", ShortVersionId);
+        }
+
+        public string GetChangelogUrl()
+        {
+            return string.Format("http://docs.unity3d.com/Packages/{0}/changelog/CHANGELOG.html", ShortVersionId);
+        }
+
+        public string GetLicensesUrl()
+        {
+            var url = string.Format("http://docs.unity3d.com/Packages/{0}/license/index.html", ShortVersionId);
+            if (RedirectsToManual(this))
+                url = "https://unity3d.com/legal/licenses/Unity_Companion_License";
+
+            return url;
+        }
+        
+        public bool Equals(PackageInfo other)
+        {
+            if (other == null) 
+                return false;
+            if (other == this)
+                return true;
+            
+            return Name == other.Name && Version == other.Version;
+        }
+
+        public override int GetHashCode()
+        {
+            return PackageId.GetHashCode();
+        }
+
+        public bool HasVersionTag(string tag)
+        {
+            if (string.IsNullOrEmpty(Version.Prerelease))
+                return false;
+
+            return String.Equals(Version.Prerelease.Split('.').First(), tag, StringComparison.CurrentCultureIgnoreCase);
+        }
+
+        public bool HasVersionTag(PackageTag tag)
+        {
+            return HasVersionTag(tag.ToString());
+        }
+
+        // Is it a pre-release (alpha/beta/experimental/preview)?
+        //        Current logic is any tag is considered pre-release, except recommended
+        public bool IsPreRelease
+        {
+            get { return !string.IsNullOrEmpty(Version.Prerelease) || Version.Major == 0; }
+        }
+
+        public bool IsPreview
+        {
+            get { return HasVersionTag(PackageTag.preview) || Version.Major == 0; }
+        }
+
+        // A version is user visible if it has a supported tag (or no tag at all)
+        public bool IsUserVisible
+        {
+            get { return IsCurrent || string.IsNullOrEmpty(Version.Prerelease) || HasVersionTag(PackageTag.preview) || IsVerified; }
+        }
+
+        public bool IsInDevelopment { get { return Origin == PackageSource.Embedded; } }
+        public bool IsLocal { get { return Origin == PackageSource.Local; } }
+        public bool IsBuiltIn { get { return Origin == PackageSource.BuiltIn; } }
+        
+        public string VersionWithoutTag { get { return Version.VersionOnly(); } }
+        
+        public bool IsVersionLocked
+        {
+            get { return Origin == PackageSource.Embedded || Origin == PackageSource.Git || Origin == PackageSource.BuiltIn; }
+        }
+
+        public bool CanBeRemoved
+        {
+            get { return Origin == PackageSource.Registry || Origin == PackageSource.BuiltIn || Origin == PackageSource.Local; }
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs.meta
new file mode 100644
index 0000000..e416489
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfo.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: b9f324f08cd904ec986357c98dd9eaa6
+timeCreated: 1502224642
+licenseType: Pro
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs
new file mode 100644
index 0000000..f7b798c
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs
@@ -0,0 +1,37 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal static class PackageInfoListExtensions
+    {
+        public static IEnumerable ByName(this IEnumerable list, string name)
+        {
+            return from package in list where package.Name == name select package;
+        }
+
+        public static void SetCurrent(this IEnumerable list, bool current = true)
+        {
+            foreach (var package in list)
+            {
+                package.IsCurrent = current;
+            }
+        }
+
+        public static void SetLatest(this IEnumerable list, bool latest = true)
+        {
+            foreach (var package in list)
+            {
+                package.IsLatest = latest;
+            }
+        }
+
+        public static void SetGroup(this IEnumerable list, string group)
+        {
+            foreach (var package in list)
+            {
+                package.Group = group;
+            }
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs.meta
new file mode 100644
index 0000000..3ccc63f
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageInfoListExtensions.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a7b89acd74e047778b42209a7a733d39
+timeCreated: 1505740214
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs
new file mode 100644
index 0000000..ec062cc
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs
@@ -0,0 +1,34 @@
+using System.IO;
+using UnityEngine;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal class PackageJsonHelper
+    {
+        [SerializeField]
+        private string name = string.Empty;
+
+        private string path = string.Empty;
+
+        public static string GetPackagePath(string jsonPath)
+        {
+            return Path.GetDirectoryName(jsonPath).Replace("\\", "/");
+        }
+
+        public static PackageJsonHelper Load(string path)
+        {
+            // If the path is a directory, find the `package.json` file path
+            var jsonPath = Directory.Exists(path) ? Path.Combine(path, "package.json") : path;
+            if (!File.Exists(jsonPath))
+                return null;
+            var packageJson = JsonUtility.FromJson(File.ReadAllText(jsonPath));
+            packageJson.path = GetPackagePath(jsonPath);
+            return string.IsNullOrEmpty(packageJson.name) ? null : packageJson;
+        }
+
+        public PackageInfo PackageInfo
+        {
+            get { return new PackageInfo {PackageId = string.Format("{0}@file:{1}", name, path)}; }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs.meta
new file mode 100644
index 0000000..42da9eb
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageJsonHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b9374526debed24449d75f8cc6d0103f
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs
new file mode 100644
index 0000000..caa2004
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs
@@ -0,0 +1,13 @@
+using System.Collections.Generic;
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal static class PackageListExtensions
+    {
+        public static IEnumerable Current(this IEnumerable list)
+        {
+            return (from package in list where package.Current != null select package);
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs.meta
new file mode 100644
index 0000000..ae09c6b
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageListExtensions.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7a74094b34f74992a5121c0586ccf6ea
+timeCreated: 1506458921
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs
new file mode 100644
index 0000000..14d9ac0
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs
@@ -0,0 +1,9 @@
+namespace UnityEditor.PackageManager.UI
+{
+    internal enum PackageOrigin
+    {
+        Unknown,
+        Builtin,
+        Registry
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs.meta
new file mode 100644
index 0000000..36ef852
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageOrigin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a98bc92072da64d49a393088e55ce2a0
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs
new file mode 100644
index 0000000..c3b5a13
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs
@@ -0,0 +1,26 @@
+using System;
+
+namespace UnityEditor.PackageManager.UI
+{
+    [Serializable]
+    internal class PackageSearchFilter
+    {
+        private static PackageSearchFilter instance = new PackageSearchFilter();
+        public static PackageSearchFilter Instance { get { return instance; } }
+
+        public string SearchText { get; set; }
+        
+        public static void InitInstance(ref PackageSearchFilter value)
+        {
+            if (value == null)  // UI window opened
+                value = instance;
+            else // Domain reload
+                instance = value;
+        }
+
+        public void ResetSearch()
+        {
+            SearchText = string.Empty;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs.meta
new file mode 100644
index 0000000..b20fdf2
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageSearchFilter.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8d65a43500ec84d9186cb6d9ab681277
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs
new file mode 100644
index 0000000..f295773
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs
@@ -0,0 +1,9 @@
+namespace UnityEditor.PackageManager.UI
+{
+    internal enum PackageState {
+        UpToDate,
+        Outdated,
+        InProgress,
+        Error
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs.meta
new file mode 100644
index 0000000..c9e87ff
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageState.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0a822dba3d5c4c85b150866e5442a5ec
+timeCreated: 1505740158
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs
new file mode 100644
index 0000000..6b282f6
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs
@@ -0,0 +1,10 @@
+namespace UnityEditor.PackageManager.UI
+{
+    internal enum PackageTag
+    {
+        preview,
+        verified,
+        inDevelopment,
+        local
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs.meta
new file mode 100644
index 0000000..5a52800
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Packages/PackageTag.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2a3f4f8c4e2df41108f55825c24ff694
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm.meta
new file mode 100644
index 0000000..a579b8f
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 669717f3193a457b9bad9665ebcae836
+timeCreated: 1504191654
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs
new file mode 100644
index 0000000..d40046f
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs
@@ -0,0 +1,34 @@
+using System;
+using UnityEditor.PackageManager.Requests;
+using System.Linq;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal class UpmAddOperation : UpmBaseOperation, IAddOperation
+    {
+        public PackageInfo PackageInfo { get; protected set; }
+
+        public event Action OnOperationSuccess = delegate { };
+
+        public void AddPackageAsync(PackageInfo packageInfo, Action doneCallbackAction = null, Action errorCallbackAction = null)
+        {
+            PackageInfo = packageInfo;
+            OnOperationError += errorCallbackAction;
+            OnOperationSuccess += doneCallbackAction;
+
+            Start();
+        }
+
+        protected override Request CreateRequest()
+        {
+            return Client.Add(PackageInfo.PackageId);
+        }
+
+        protected override void ProcessData()
+        {
+            var request = CurrentRequest as AddRequest;
+            var package = FromUpmPackageInfo(request.Result).First();
+            OnOperationSuccess(package);
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs.meta
new file mode 100644
index 0000000..115ed81
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmAddOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 9f091dea68a1452cb6c04a6dfa73d5f5
+timeCreated: 1504190581
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs
new file mode 100644
index 0000000..ea441cd
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs
@@ -0,0 +1,229 @@
+using System;
+using System.Globalization;
+using System.Collections.Generic;
+using System.Linq;
+using Semver;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{    
+    internal abstract class UpmBaseOperation : IBaseOperation
+    {
+        public static string GroupName(PackageSource origin)
+        {
+            var group = PackageGroupOrigins.Packages.ToString();
+            if (origin == PackageSource.BuiltIn)
+                group = PackageGroupOrigins.BuiltInPackages.ToString();
+
+            return group;
+        }
+
+        protected static IEnumerable FromUpmPackageInfo(PackageManager.PackageInfo info, bool isCurrent=true)
+        {
+            var packages = new List();
+            var displayName = info.displayName;
+            if (string.IsNullOrEmpty(displayName))
+            {
+                displayName = info.name.Replace("com.unity.modules.", "");
+                displayName = displayName.Replace("com.unity.", "");
+                displayName = new CultureInfo("en-US").TextInfo.ToTitleCase(displayName);
+            }
+
+            string author = info.author.name;
+            if (string.IsNullOrEmpty(info.author.name) && info.name.StartsWith("com.unity."))
+                author = "Unity Technologies Inc.";
+
+            var lastCompatible = info.versions.latestCompatible;
+            var versions = new List();
+            versions.AddRange(info.versions.compatible);
+            if (versions.FindIndex(version => version == info.version) == -1)
+            {
+                versions.Add(info.version);
+
+                versions.Sort((left, right) =>
+                {
+                    if (left == null || right == null) return 0;
+                    
+                    SemVersion leftVersion = left;
+                    SemVersion righVersion = right;
+                    return leftVersion.CompareByPrecedence(righVersion);
+                });
+
+                SemVersion packageVersion = info.version;
+                if (!string.IsNullOrEmpty(lastCompatible))
+                {
+                    SemVersion lastCompatibleVersion =
+                        string.IsNullOrEmpty(lastCompatible) ? (SemVersion) null : lastCompatible;
+                    if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease) &&
+                        packageVersion.CompareByPrecedence(lastCompatibleVersion) > 0)
+                        lastCompatible = info.version;
+                }
+                else
+                {
+                    if (packageVersion != null && string.IsNullOrEmpty(packageVersion.Prerelease))
+                        lastCompatible = info.version;
+                }
+            }
+
+            foreach(var version in versions)
+            {
+                var isVersionCurrent = version == info.version && isCurrent;
+                var isBuiltIn = info.source == PackageSource.BuiltIn;
+                var isVerified = string.IsNullOrEmpty(SemVersion.Parse(version).Prerelease) && version == info.versions.recommended;
+                var state = (isBuiltIn || info.version == lastCompatible || !isCurrent ) ? PackageState.UpToDate : PackageState.Outdated;
+                
+                // Happens mostly when using a package that hasn't been in production yet.
+                if (info.versions.all.Length <= 0)
+                    state = PackageState.UpToDate;
+                
+                if (info.errors.Length > 0)
+                    state = PackageState.Error;
+
+                var packageInfo = new PackageInfo
+                {
+                    Name = info.name,
+                    DisplayName = displayName,
+                    PackageId = version == info.version ? info.packageId : null,
+                    Version = version,
+                    Description = info.description,
+                    Category = info.category,
+                    IsCurrent = isVersionCurrent,
+                    IsLatest = version == lastCompatible,
+                    IsVerified = isVerified,
+                    Errors = info.errors.ToList(),
+                    Group = GroupName(info.source),
+                    State = state,
+                    Origin = isBuiltIn || isVersionCurrent ? info.source : PackageSource.Registry,
+                    Author = author,
+                    Info = info
+                };
+                
+                packages.Add(packageInfo);
+            }
+
+            return packages;
+        }
+        
+        public static event Action OnOperationStart = delegate { };
+
+        public event Action OnOperationError = delegate { };
+        public event Action OnOperationFinalized = delegate { };
+        
+        public Error ForceError { get; set; }                // Allow external component to force an error on the requests (eg: testing)
+        public Error Error { get; protected set; }        // Keep last error
+        
+        public bool IsCompleted { get; private set; }
+
+        protected abstract Request CreateRequest();
+        
+        [SerializeField]
+        protected Request CurrentRequest;
+        public readonly ThreadedDelay Delay = new ThreadedDelay();
+
+        protected abstract void ProcessData();
+
+        protected void Start()
+        {
+            Error = null;
+            OnOperationStart(this);
+
+            Delay.Start();
+
+            if (TryForcedError())
+                return;
+
+            EditorApplication.update += Progress;
+        }
+
+        // Common progress code for all classes
+        private void Progress()
+        {
+            if (!Delay.IsDone)
+                return;
+
+            // Create the request after the delay
+            if (CurrentRequest == null)
+            {
+                CurrentRequest = CreateRequest();
+            }
+            
+            // Since CurrentRequest's error property is private, we need to simulate
+            // an error instead of just setting it.
+            if (TryForcedError())
+                return;
+            
+            if (CurrentRequest.IsCompleted)
+            {
+                if (CurrentRequest.Status == StatusCode.Success)
+                    OnDone();
+                else if (CurrentRequest.Status >= StatusCode.Failure)
+                    OnError(CurrentRequest.Error);
+                else
+                    Debug.LogError("Unsupported progress state " + CurrentRequest.Status);
+            }
+        }
+
+        private void OnError(Error error)
+        {
+            try
+            {
+                Error = error;
+
+                var message = "Cannot perform upm operation.";
+                if (error != null)
+                    message = "Cannot perform upm operation: " + Error.message + " [" + Error.errorCode + "]";
+                
+                Debug.LogError(message);
+
+                OnOperationError(Error);
+            }
+            catch (Exception exception)
+            {
+                Debug.LogError("Package Manager Window had an error while reporting an error in an operation: " + exception);                
+            }
+
+            FinalizeOperation();
+        }
+
+        private void OnDone()
+        {
+            try
+            {
+                ProcessData();
+            }
+            catch (Exception error)
+            {
+                Debug.LogError("Package Manager Window had an error while completing an operation: " + error);
+            }
+
+            FinalizeOperation();
+        }
+
+        private void FinalizeOperation()
+        {
+            EditorApplication.update -= Progress;
+            OnOperationFinalized();
+            IsCompleted = true;
+        }
+
+        public void Cancel()
+        {
+            EditorApplication.update -= Progress;
+            OnOperationError = delegate { };
+            OnOperationFinalized = delegate { };
+            IsCompleted = true;
+        }
+
+        private bool TryForcedError()
+        {
+            if (ForceError != null)
+            {
+                OnError(ForceError);
+                return true;
+            }
+
+            return false;
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs.meta
new file mode 100644
index 0000000..785c839
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmBaseOperation.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 4e830e2dbc3315b4b97cd5311a54e4fe
+timeCreated: 1502918867
+licenseType: Free
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs
new file mode 100644
index 0000000..cebc294
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal class UpmListOperation : UpmBaseOperation, IListOperation
+    {
+        [SerializeField]
+        private Action> _doneCallbackAction;
+
+        public UpmListOperation(bool offlineMode) : base() 
+        {
+            OfflineMode = offlineMode;
+        }
+
+        public bool OfflineMode { get; set; }
+
+        public void GetPackageListAsync(Action> doneCallbackAction, Action errorCallbackAction = null)
+        {
+            this._doneCallbackAction = doneCallbackAction;
+            OnOperationError += errorCallbackAction;
+            
+            Start();
+        }
+
+        protected override Request CreateRequest()
+        {
+            return Client.List(OfflineMode);            
+        }
+
+        protected override void ProcessData()
+        {
+            var request = CurrentRequest as ListRequest;
+            var packages = new List();
+            foreach (var upmPackage in request.Result)
+            {
+                var packageInfos = FromUpmPackageInfo(upmPackage);
+                packages.AddRange(packageInfos);
+            }
+
+            _doneCallbackAction(packages);
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs.meta
new file mode 100644
index 0000000..3c49034
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmListOperation.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: 9a2c874c382e2419184b302497279dd9
+timeCreated: 1502224642
+licenseType: Pro
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs
new file mode 100644
index 0000000..9397e59
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs
@@ -0,0 +1,25 @@
+namespace UnityEditor.PackageManager.UI
+{
+    internal class UpmOperationFactory : IOperationFactory
+    {
+        public IListOperation CreateListOperation(bool offlineMode = false)
+        {
+            return new UpmListOperation(offlineMode);
+        }
+
+        public ISearchOperation CreateSearchOperation()
+        {
+            return new UpmSearchOperation();
+        }
+
+        public IAddOperation CreateAddOperation()
+        {
+            return new UpmAddOperation();
+        }
+
+        public IRemoveOperation CreateRemoveOperation()
+        {
+            return new UpmRemoveOperation();
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs.meta
new file mode 100644
index 0000000..7911c3b
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmOperationFactory.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: e6925bb38494e6a43ba0921e65e424fe
+timeCreated: 1502915478
+licenseType: Free
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs
new file mode 100644
index 0000000..254c51b
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs
@@ -0,0 +1,33 @@
+using System;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal class UpmRemoveOperation : UpmBaseOperation, IRemoveOperation
+    {
+        [SerializeField]
+        private PackageInfo _package;
+
+        public event Action OnOperationSuccess = delegate { };
+
+        public void RemovePackageAsync(PackageInfo package, Action doneCallbackAction = null,  Action errorCallbackAction = null)
+        {
+            _package = package;
+            OnOperationError += errorCallbackAction;
+            OnOperationSuccess += doneCallbackAction;
+
+            Start();
+        }
+
+        protected override Request CreateRequest()
+        {
+            return Client.Remove(_package.Name);
+        }
+
+        protected override void ProcessData()
+        {
+            OnOperationSuccess(_package);
+        }
+    }
+}
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs.meta
new file mode 100644
index 0000000..58430b0
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmRemoveOperation.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d5a61f8cc87394b28aec6b88b4083217
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs
new file mode 100644
index 0000000..7e6615f
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor.PackageManager.Requests;
+
+namespace UnityEditor.PackageManager.UI
+{
+    internal class UpmSearchOperation : UpmBaseOperation, ISearchOperation
+    {
+        [SerializeField]
+        private Action> _doneCallbackAction;
+
+        public void GetAllPackageAsync(Action> doneCallbackAction = null, Action errorCallbackAction = null)
+        {
+            _doneCallbackAction = doneCallbackAction;
+            OnOperationError += errorCallbackAction;
+            
+            Start();
+        }
+
+        protected override Request CreateRequest()
+        {
+            return Client.SearchAll();            
+        }
+
+        protected override void ProcessData()
+        {
+            var request = CurrentRequest as SearchRequest;
+            var packages = new List();
+            foreach (var upmPackage in request.Result)
+            {
+                var packageInfos = FromUpmPackageInfo(upmPackage, false);
+                packages.AddRange(packageInfos);
+            }
+            _doneCallbackAction(packages);
+        }
+    }
+}
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs.meta
new file mode 100644
index 0000000..4fcf517
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/Services/Upm/UpmSearchOperation.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ef5a2781610c4f12a79939f717f789cf
+timeCreated: 1508160183
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI.meta
new file mode 100644
index 0000000..81a8a07
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 301fbaa0e62e44fd2a7383bd338a2898
+folderAsset: yes
+timeCreated: 1502224642
+licenseType: Pro
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common.meta b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common.meta
new file mode 100644
index 0000000..43dc782
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 42064bc130be4c44b288d249a44b356f
+timeCreated: 1504191962
\ No newline at end of file
diff --git a/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common/Alert.cs b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common/Alert.cs
new file mode 100644
index 0000000..1260472
--- /dev/null
+++ b/Unity_VR_Assignment/Library/PackageCache/com.unity.package-manager-ui@2.0.3/Editor/Sources/UI/Common/Alert.cs
@@ -0,0 +1,74 @@
+using System;
+using UnityEngine.Experimental.UIElements;
+
+namespace UnityEditor.PackageManager.UI
+{
+#if !UNITY_2018_3_OR_NEWER
+    internal class AlertFactory : UxmlFactory
+    {
+        protected override Alert DoCreate(IUxmlAttributes bag, CreationContext cc)
+        {
+            return new Alert();
+        }
+    }
+#endif
+
+    internal class Alert : VisualElement
+    {
+#if UNITY_2018_3_OR_NEWER
+        internal new class UxmlFactory : UxmlFactory { }
+#endif
+
+        private const string TemplatePath = PackageManagerWindow.ResourcesPath + "Templates/Alert.uxml";
+        private readonly VisualElement root;
+        private const float originalPositionRight = 5.0f;
+        private const float positionRightWithScroll = 12.0f;
+
+        public Action OnCloseError;
+
+        public Alert()
+        {
+            UIUtils.SetElementDisplay(this, false);
+
+            root = AssetDatabase.LoadAssetAtPath(TemplatePath).CloneTree(null);
+            Add(root);
+            root.StretchToParentSize();
+
+            CloseButton.clickable.clicked += () =>
+            {
+                if (null != OnCloseError)
+                    OnCloseError();
+                ClearError();
+            };
+        }
+
+        public void SetError(Error error)
+        {
+            var message = "An error occured.";
+            if (error != null)
+                message = error.message ?? string.Format("An error occurred ({0})", error.errorCode.ToString());
+
+            AlertMessage.text = message;
+            UIUtils.SetElementDisplay(this, true);
+        }
+
+        public void ClearError()
+        {
+            UIUtils.SetElementDisplay(this, false);
+            AdjustSize(false);
+            AlertMessage.text = "";
+            OnCloseError = null;
+        }
+
+        public void AdjustSize(bool verticalScrollerVisible)
+        {
+            if (verticalScrollerVisible)
+                style.positionRight = originalPositionRight + positionRightWithScroll;
+            else
+                style.positionRight = originalPositionRight;
+        }
+
+        private Label AlertMessage { get { return root.Q