├── .gitignore ├── .vsconfig ├── Assets ├── AABB2D.cs ├── AABB2D.cs.meta ├── Editor.meta ├── Editor │ ├── QuadTreeDrawer.cs │ ├── QuadTreeDrawer.cs.meta │ ├── QuadTreeTests.cs │ └── QuadTreeTests.cs.meta ├── LookupTables.cs ├── LookupTables.cs.meta ├── NativeQuadTree.cs ├── NativeQuadTree.cs.meta ├── NativeQuadTreeDrawing.cs ├── NativeQuadTreeDrawing.cs.meta ├── NativeQuadTreeRangeQuery.cs ├── NativeQuadTreeRangeQuery.cs.meta ├── QuadTreeJobs.cs ├── QuadTreeJobs.cs.meta ├── UnityDefaultRuntimeTheme.tss └── UnityDefaultRuntimeTheme.tss.meta ├── LICENSE ├── Packages ├── manifest.json └── packages-lock.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── EntitiesClientSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── MemorySettings.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── PackageManagerSettings.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset ├── XRPackageSettings.asset └── XRSettings.asset ├── README.md ├── ScreenshotEditorViewer.png └── UserSettings ├── EditorUserSettings.asset ├── Layouts └── default-2022.dwlt ├── Search.index └── Search.settings /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.gitignore.io/api/unity 3 | # Edit at https://www.gitignore.io/?templates=unity 4 | 5 | ### Unity ### 6 | # This .gitignore file should be placed at the root of your Unity project directory 7 | # 8 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 9 | /[Ll]ibrary/ 10 | /[Tt]emp/ 11 | /[Oo]bj/ 12 | /[Bb]uild/ 13 | /[Bb]uilds/ 14 | /[Ll]ogs/ 15 | /[Mm]emoryCaptures/ 16 | 17 | # Never ignore Asset meta data 18 | !/[Aa]ssets/**/*.meta 19 | 20 | # Uncomment this line if you wish to ignore the asset store tools plugin 21 | # /[Aa]ssets/AssetStoreTools* 22 | 23 | # TextMesh Pro files 24 | [Aa]ssets/TextMesh*Pro/ 25 | 26 | # Autogenerated Jetbrains Rider plugin 27 | [Aa]ssets/Plugins/Editor/JetBrains* 28 | 29 | # Visual Studio cache directory 30 | .vs/ 31 | 32 | # Gradle cache directory 33 | .gradle/ 34 | 35 | # Rider 36 | .idea/ 37 | 38 | # Autogenerated VS/MD/Consulo solution and project files 39 | ExportedObj/ 40 | .consulo/ 41 | *.csproj 42 | *.unityproj 43 | *.sln 44 | *.suo 45 | *.tmp 46 | *.user 47 | *.userprefs 48 | *.pidb 49 | *.booproj 50 | *.svd 51 | *.pdb 52 | *.mdb 53 | *.opendb 54 | *.VC.db 55 | 56 | # Unity3D generated meta files 57 | *.pidb.meta 58 | *.pdb.meta 59 | *.mdb.meta 60 | 61 | # Unity3D generated file on crash reports 62 | sysinfo.txt 63 | 64 | # Builds 65 | *.apk 66 | *.unitypackage 67 | *.symbols.zip 68 | 69 | # Crashlytics generated file 70 | crashlytics-build.properties 71 | 72 | 73 | # End of https://www.gitignore.io/api/unity -------------------------------------------------------------------------------- /.vsconfig: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "components": [ 4 | "Microsoft.VisualStudio.Workload.ManagedGame" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /Assets/AABB2D.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Unity.Mathematics; 3 | 4 | namespace NativeQuadTree 5 | { 6 | [Serializable] 7 | public struct AABB2D { 8 | public float2 Center; 9 | public float2 Extents; 10 | 11 | public float2 Size => Extents * 2; 12 | public float2 Min => Center - Extents; 13 | public float2 Max => Center + Extents; 14 | 15 | public AABB2D(float2 center, float2 extents) 16 | { 17 | Center = center; 18 | Extents = extents; 19 | } 20 | 21 | public bool Contains(float2 point) { 22 | if (point[0] < Center[0] - Extents[0]) { 23 | return false; 24 | } 25 | if (point[0] > Center[0] + Extents[0]) { 26 | return false; 27 | } 28 | 29 | if (point[1] < Center[1] - Extents[1]) { 30 | return false; 31 | } 32 | if (point[1] > Center[1] + Extents[1]) { 33 | return false; 34 | } 35 | 36 | return true; 37 | } 38 | 39 | public bool Contains(AABB2D b) { 40 | return Contains(b.Center + new float2(-b.Extents.x, -b.Extents.y)) && 41 | Contains(b.Center + new float2(-b.Extents.x, b.Extents.y)) && 42 | Contains(b.Center + new float2(b.Extents.x, -b.Extents.y)) && 43 | Contains(b.Center + new float2(b.Extents.x, b.Extents.y)); 44 | } 45 | 46 | public bool Intersects(AABB2D b) 47 | { 48 | //bool noOverlap = Min[0] > b.Max[0] || 49 | // b.Min[0] > Max[0]|| 50 | // Min[1] > b.Max[1] || 51 | // b.Min[1] > Max[1]; 52 | // 53 | //return !noOverlap; 54 | 55 | return (math.abs(Center[0] - b.Center[0]) < (Extents[0] + b.Extents[0])) && 56 | (math.abs(Center[1] - b.Center[1]) < (Extents[1] + b.Extents[1])); 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /Assets/AABB2D.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aede0b75cc8640798d9a285521f5d6d1 3 | timeCreated: 1578858902 -------------------------------------------------------------------------------- /Assets/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0fe70d1be19be44f9929fd63250df79f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Editor/QuadTreeDrawer.cs: -------------------------------------------------------------------------------- 1 | using NativeQuadTree; 2 | using Unity.Collections; 3 | using UnityEditor; 4 | using UnityEngine; 5 | 6 | public class QuadTreeDrawer : EditorWindow 7 | { 8 | [MenuItem("Window/QuadTreeDrawer")] 9 | static void Init() 10 | { 11 | GetWindow(typeof(QuadTreeDrawer)).Show(); 12 | } 13 | 14 | public static void Draw(NativeQuadTree quadTree) where T : unmanaged 15 | { 16 | QuadTreeDrawer window = (QuadTreeDrawer)GetWindow(typeof(QuadTreeDrawer)); 17 | window.DoDraw(quadTree, default, default); 18 | } 19 | 20 | public static void DrawWithResults(QuadTreeJobs.RangeQueryJob queryJob) where T : unmanaged 21 | { 22 | QuadTreeDrawer window = (QuadTreeDrawer)GetWindow(typeof(QuadTreeDrawer)); 23 | window.DoDraw(queryJob); 24 | } 25 | 26 | [SerializeField] 27 | Color[][] pixels; 28 | 29 | void DoDraw(NativeQuadTree quadTree, NativeList> results, AABB2D bounds) where T : unmanaged 30 | { 31 | pixels = new Color[256][]; 32 | for (var i = 0; i < pixels.Length; i++) 33 | { 34 | pixels[i] = new Color[256]; 35 | } 36 | NativeQuadTree.Draw(quadTree, results, bounds, pixels); 37 | } 38 | 39 | void DoDraw(QuadTreeJobs.RangeQueryJob queryJob) where T : unmanaged 40 | { 41 | DoDraw(queryJob.QuadTree, queryJob.Results, queryJob.Bounds); 42 | } 43 | 44 | void OnGUI() 45 | { 46 | if(pixels != null) 47 | { 48 | var texture = new Texture2D(256, 256); 49 | for (var x = 0; x < pixels.Length; x++) 50 | { 51 | for (int y = 0; y < pixels[x].Length; y++) 52 | { 53 | texture.SetPixel(x, y, pixels[x][y]); 54 | } 55 | } 56 | texture.Apply(); 57 | 58 | GUI.DrawTexture(new Rect(0, 0, position.width, position.height), texture); 59 | } 60 | } 61 | } -------------------------------------------------------------------------------- /Assets/Editor/QuadTreeDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 832305bf6e10412ab212389d06708fea 3 | timeCreated: 1578854647 -------------------------------------------------------------------------------- /Assets/Editor/QuadTreeTests.cs: -------------------------------------------------------------------------------- 1 | using System.Diagnostics; 2 | using NUnit.Framework; 3 | using NativeQuadTree; 4 | using Unity.Burst; 5 | using Unity.Collections; 6 | using Unity.Jobs; 7 | using Unity.Mathematics; 8 | using UnityEngine; 9 | using Debug = UnityEngine.Debug; 10 | using Random = UnityEngine.Random; 11 | 12 | public class QuadTreeTests 13 | { 14 | AABB2D Bounds => new AABB2D(0, 1000); 15 | 16 | float2[] GetValues() 17 | { 18 | Random.InitState(0); 19 | var values = new float2[20000]; 20 | 21 | for (int x = 0; x < values.Length; x++) 22 | { 23 | var val = new int2((int) Random.Range(-900, 900), (int) Random.Range(-900, 900)); 24 | values[x] = val; 25 | } 26 | 27 | return values; 28 | } 29 | 30 | [Test] 31 | public void InsertTriggerDivideBulk() 32 | { 33 | var values = GetValues(); 34 | 35 | var elements = new NativeArray>(values.Length, Allocator.TempJob); 36 | 37 | for (int i = 0; i < values.Length; i++) 38 | { 39 | elements[i] = new QuadElement 40 | { 41 | pos = values[i], 42 | element = i 43 | }; 44 | } 45 | 46 | using var quadtree = new NativeQuadTree(Bounds, Allocator.TempJob); 47 | var job = new QuadTreeJobs.AddBulkJob 48 | { 49 | Elements = elements, 50 | QuadTree = quadtree, 51 | }; 52 | 53 | var s = Stopwatch.StartNew(); 54 | 55 | job.Run(); 56 | 57 | s.Stop(); 58 | Debug.Log(s.Elapsed.TotalMilliseconds); 59 | 60 | QuadTreeDrawer.Draw(quadtree); 61 | elements.Dispose(); 62 | } 63 | 64 | [Test] 65 | public void RangeQueryAfterBulk() 66 | { 67 | var values = GetValues(); 68 | 69 | NativeArray> elements = new NativeArray>(values.Length, Allocator.TempJob); 70 | 71 | for (int i = 0; i < values.Length; i++) 72 | { 73 | elements[i] = new QuadElement 74 | { 75 | pos = values[i], 76 | element = i 77 | }; 78 | } 79 | 80 | var quadTree = new NativeQuadTree(Bounds); 81 | quadTree.ClearAndBulkInsert(elements); 82 | 83 | var queryJob = new QuadTreeJobs.RangeQueryJob 84 | { 85 | QuadTree = quadTree, 86 | Bounds = new AABB2D(100, 140), 87 | Results = new NativeList>(1000, Allocator.TempJob) 88 | }; 89 | 90 | var s = Stopwatch.StartNew(); 91 | queryJob.Run(); 92 | s.Stop(); 93 | Debug.Log(s.Elapsed.TotalMilliseconds + " result: " + queryJob.Results.Length); 94 | 95 | QuadTreeDrawer.DrawWithResults(queryJob); 96 | quadTree.Dispose(); 97 | elements.Dispose(); 98 | queryJob.Results.Dispose(); 99 | } 100 | 101 | [Test] 102 | public void InsertTriggerDivideNonBurstBulk() 103 | { 104 | var values = GetValues(); 105 | 106 | var positions = new NativeArray(values.Length, Allocator.TempJob); 107 | var quadTree = new NativeQuadTree(Bounds); 108 | 109 | positions.CopyFrom(values); 110 | 111 | 112 | NativeArray> elements = new NativeArray>(positions.Length, Allocator.Temp); 113 | 114 | for (int i = 0; i < positions.Length; i++) 115 | { 116 | elements[i] = new QuadElement 117 | { 118 | pos = positions[i], 119 | element = i 120 | }; 121 | } 122 | 123 | var s = Stopwatch.StartNew(); 124 | 125 | quadTree.ClearAndBulkInsert(elements); 126 | 127 | s.Stop(); 128 | Debug.Log(s.Elapsed.TotalMilliseconds); 129 | 130 | QuadTreeDrawer.Draw(quadTree); 131 | quadTree.Dispose(); 132 | positions.Dispose(); 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /Assets/Editor/QuadTreeTests.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d538ed72a7d2543d390cf79dbb36413c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/LookupTables.cs: -------------------------------------------------------------------------------- 1 | namespace NativeQuadTree 2 | { 3 | public static class LookupTables 4 | { 5 | public static readonly ushort[] MortonLookup = { 6 | // 0 1 100 101 10000 10001 10100 10101 7 | 0x0000, 0x0001, 0x0004, 0x0005, 0x0010, 0x0011, 0x0014, 0x0015, 8 | // 1000000 1000001 1000100 1000101 1010000 1010001 1010100 1010101 9 | 0x0040, 0x0041, 0x0044, 0x0045, 0x0050, 0x0051, 0x0054, 0x0055, 10 | // etc... 11 | 0x0100, 0x0101, 0x0104, 0x0105, 0x0110, 0x0111, 0x0114, 0x0115, 12 | 0x0140, 0x0141, 0x0144, 0x0145, 0x0150, 0x0151, 0x0154, 0x0155, 13 | 0x0400, 0x0401, 0x0404, 0x0405, 0x0410, 0x0411, 0x0414, 0x0415, 14 | 0x0440, 0x0441, 0x0444, 0x0445, 0x0450, 0x0451, 0x0454, 0x0455, 15 | 0x0500, 0x0501, 0x0504, 0x0505, 0x0510, 0x0511, 0x0514, 0x0515, 16 | 0x0540, 0x0541, 0x0544, 0x0545, 0x0550, 0x0551, 0x0554, 0x0555, 17 | 0x1000, 0x1001, 0x1004, 0x1005, 0x1010, 0x1011, 0x1014, 0x1015, 18 | 0x1040, 0x1041, 0x1044, 0x1045, 0x1050, 0x1051, 0x1054, 0x1055, 19 | 0x1100, 0x1101, 0x1104, 0x1105, 0x1110, 0x1111, 0x1114, 0x1115, 20 | 0x1140, 0x1141, 0x1144, 0x1145, 0x1150, 0x1151, 0x1154, 0x1155, 21 | 0x1400, 0x1401, 0x1404, 0x1405, 0x1410, 0x1411, 0x1414, 0x1415, 22 | 0x1440, 0x1441, 0x1444, 0x1445, 0x1450, 0x1451, 0x1454, 0x1455, 23 | 0x1500, 0x1501, 0x1504, 0x1505, 0x1510, 0x1511, 0x1514, 0x1515, 24 | 0x1540, 0x1541, 0x1544, 0x1545, 0x1550, 0x1551, 0x1554, 0x1555, 25 | 0x4000, 0x4001, 0x4004, 0x4005, 0x4010, 0x4011, 0x4014, 0x4015, 26 | 0x4040, 0x4041, 0x4044, 0x4045, 0x4050, 0x4051, 0x4054, 0x4055, 27 | 0x4100, 0x4101, 0x4104, 0x4105, 0x4110, 0x4111, 0x4114, 0x4115, 28 | 0x4140, 0x4141, 0x4144, 0x4145, 0x4150, 0x4151, 0x4154, 0x4155, 29 | 0x4400, 0x4401, 0x4404, 0x4405, 0x4410, 0x4411, 0x4414, 0x4415, 30 | 0x4440, 0x4441, 0x4444, 0x4445, 0x4450, 0x4451, 0x4454, 0x4455, 31 | 0x4500, 0x4501, 0x4504, 0x4505, 0x4510, 0x4511, 0x4514, 0x4515, 32 | 0x4540, 0x4541, 0x4544, 0x4545, 0x4550, 0x4551, 0x4554, 0x4555, 33 | 0x5000, 0x5001, 0x5004, 0x5005, 0x5010, 0x5011, 0x5014, 0x5015, 34 | 0x5040, 0x5041, 0x5044, 0x5045, 0x5050, 0x5051, 0x5054, 0x5055, 35 | 0x5100, 0x5101, 0x5104, 0x5105, 0x5110, 0x5111, 0x5114, 0x5115, 36 | 0x5140, 0x5141, 0x5144, 0x5145, 0x5150, 0x5151, 0x5154, 0x5155, 37 | 0x5400, 0x5401, 0x5404, 0x5405, 0x5410, 0x5411, 0x5414, 0x5415, 38 | 0x5440, 0x5441, 0x5444, 0x5445, 0x5450, 0x5451, 0x5454, 0x5455, 39 | 0x5500, 0x5501, 0x5504, 0x5505, 0x5510, 0x5511, 0x5514, 0x5515, 40 | 0x5540, 0x5541, 0x5544, 0x5545, 0x5550, 0x5551, 0x5554, 0x5555 41 | }; 42 | 43 | public static readonly int[] DepthSizeLookup = 44 | { 45 | 0, 46 | 1, 47 | 1+2*2, 48 | 1+2*2+4*4, 49 | 1+2*2+4*4+8*8, 50 | 1+2*2+4*4+8*8+16*16, 51 | 1+2*2+4*4+8*8+16*16+32*32, 52 | 1+2*2+4*4+8*8+16*16+32*32+64*64, 53 | 1+2*2+4*4+8*8+16*16+32*32+64*64+128*128, 54 | 1+2*2+4*4+8*8+16*16+32*32+64*64+128*128+256*256, 55 | }; 56 | 57 | public static readonly int[] DepthLookup = 58 | { 59 | 0, 60 | 2, 61 | 4, 62 | 8, 63 | 16, 64 | 32, 65 | 64, 66 | 128, 67 | 256, 68 | }; 69 | } 70 | } -------------------------------------------------------------------------------- /Assets/LookupTables.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3bf2086533d64f3b93c5bf841ebc44b6 3 | timeCreated: 1580073533 -------------------------------------------------------------------------------- /Assets/NativeQuadTree.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Unity.Collections; 3 | using Unity.Collections.LowLevel.Unsafe; 4 | using Unity.Mathematics; 5 | using UnityEngine; 6 | 7 | namespace NativeQuadTree 8 | { 9 | // Represents an element node in the quadtree. 10 | public struct QuadElement where T : unmanaged 11 | { 12 | public float2 pos; 13 | public T element; 14 | } 15 | 16 | struct QuadNode 17 | { 18 | // Points to this node's first child index in elements 19 | public int firstChildIndex; 20 | 21 | // Number of elements in the leaf 22 | public short count; 23 | public bool isLeaf; 24 | } 25 | 26 | /// 27 | /// A QuadTree aimed to be used with Burst, supports fast bulk insertion and querying. 28 | /// 29 | /// TODO: 30 | /// - Better test coverage 31 | /// - Automated depth / bounds / max leaf elements calculation 32 | /// 33 | public unsafe partial struct NativeQuadTree : IDisposable where T : unmanaged 34 | { 35 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 36 | // Safety 37 | AtomicSafetyHandle safetyHandle; 38 | [NativeSetClassTypeToNullOnSchedule] 39 | DisposeSentinel disposeSentinel; 40 | #endif 41 | // Data 42 | [NativeDisableUnsafePtrRestriction] 43 | UnsafeList>* elements; 44 | 45 | [NativeDisableUnsafePtrRestriction] 46 | UnsafeList* lookup; 47 | 48 | [NativeDisableUnsafePtrRestriction] 49 | UnsafeList* nodes; 50 | 51 | int elementsCount; 52 | 53 | int maxDepth; 54 | short maxLeafElements; 55 | 56 | AABB2D bounds; // NOTE: Currently assuming uniform 57 | 58 | /// 59 | /// Create a new QuadTree. 60 | /// - Ensure the bounds are not way bigger than needed, otherwise the buckets are very off. Probably best to calculate bounds 61 | /// - The higher the depth, the larger the overhead, it especially goes up at a depth of 7/8 62 | /// 63 | public NativeQuadTree(AABB2D bounds, Allocator allocator = Allocator.Temp, int maxDepth = 6, short maxLeafElements = 16, 64 | int initialElementsCapacity = 256 65 | ) : this() 66 | { 67 | this.bounds = bounds; 68 | this.maxDepth = maxDepth; 69 | this.maxLeafElements = maxLeafElements; 70 | elementsCount = 0; 71 | 72 | if(maxDepth > 8) 73 | { 74 | // Currently no support for higher depths, the morton code lookup tables would have to support it 75 | throw new InvalidOperationException(); 76 | } 77 | 78 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 79 | // TODO: Find out what the equivalent of this is in latest entities 80 | // CollectionHelper.CheckIsUnmanaged(); 81 | DisposeSentinel.Create(out safetyHandle, out disposeSentinel, 1, allocator); 82 | #endif 83 | 84 | // Allocate memory for every depth, the nodes on all depths are stored in a single continuous array 85 | var totalSize = LookupTables.DepthSizeLookup[maxDepth+1]; 86 | 87 | lookup = UnsafeList.Create( 88 | totalSize, 89 | allocator, 90 | NativeArrayOptions.ClearMemory); 91 | 92 | nodes = UnsafeList.Create( 93 | totalSize, 94 | allocator, 95 | NativeArrayOptions.ClearMemory); 96 | 97 | elements = UnsafeList>.Create( 98 | initialElementsCapacity, 99 | allocator); 100 | } 101 | 102 | public void ClearAndBulkInsert(NativeArray> incomingElements) 103 | { 104 | // Always have to clear before bulk insert as otherwise the lookup and node allocations need to account 105 | // for existing data. 106 | Clear(); 107 | 108 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 109 | AtomicSafetyHandle.CheckWriteAndBumpSecondaryVersion(safetyHandle); 110 | #endif 111 | 112 | // Resize if needed 113 | if(elements->Capacity < elementsCount + incomingElements.Length) 114 | { 115 | elements->Resize(math.max(incomingElements.Length, elements->Capacity*2)); 116 | } 117 | 118 | // Prepare morton codes 119 | var mortonCodes = new NativeArray(incomingElements.Length, Allocator.Temp); 120 | var depthExtentsScaling = LookupTables.DepthLookup[maxDepth] / bounds.Extents; 121 | for (var i = 0; i < incomingElements.Length; i++) 122 | { 123 | var incPos = incomingElements[i].pos; 124 | incPos -= bounds.Center; // Offset by center 125 | incPos.y = -incPos.y; // World -> array 126 | var pos = (incPos + bounds.Extents) * .5f; // Make positive 127 | // Now scale into available space that belongs to the depth 128 | pos *= depthExtentsScaling; 129 | // And interleave the bits for the morton code 130 | mortonCodes[i] = (LookupTables.MortonLookup[(int) pos.x] | (LookupTables.MortonLookup[(int) pos.y] << 1)); 131 | } 132 | 133 | // Index total child element count per node (total, so parent's counts include those of child nodes) 134 | for (var i = 0; i < mortonCodes.Length; i++) 135 | { 136 | int atIndex = 0; 137 | for (int depth = 0; depth <= maxDepth; depth++) 138 | { 139 | // Increment the node on this depth that this element is contained in 140 | (*(int*) ((IntPtr) lookup->Ptr + atIndex * sizeof (int)))++; 141 | atIndex = IncrementIndex(depth, mortonCodes, i, atIndex); 142 | } 143 | } 144 | 145 | // Prepare the tree leaf nodes 146 | RecursivePrepareLeaves(1, 1); 147 | 148 | // Add elements to leaf nodes 149 | for (var i = 0; i < incomingElements.Length; i++) 150 | { 151 | int atIndex = 0; 152 | 153 | for (int depth = 0; depth <= maxDepth; depth++) 154 | { 155 | var node = UnsafeUtility.ReadArrayElement(nodes->Ptr, atIndex); 156 | if(node.isLeaf) 157 | { 158 | // We found a leaf, add this element to it and move to the next element 159 | UnsafeUtility.WriteArrayElement(elements->Ptr, node.firstChildIndex + node.count, incomingElements[i]); 160 | node.count++; 161 | UnsafeUtility.WriteArrayElement(nodes->Ptr, atIndex, node); 162 | break; 163 | } 164 | // No leaf found, we keep going deeper until we find one 165 | atIndex = IncrementIndex(depth, mortonCodes, i, atIndex); 166 | } 167 | } 168 | 169 | mortonCodes.Dispose(); 170 | } 171 | 172 | int IncrementIndex(int depth, NativeArray mortonCodes, int i, int atIndex) 173 | { 174 | var atDepth = math.max(0, maxDepth - depth); 175 | // Shift to the right and only get the first two bits 176 | int shiftedMortonCode = (mortonCodes[i] >> ((atDepth - 1) * 2)) & 0b11; 177 | // so the index becomes that... (0,1,2,3) 178 | atIndex += LookupTables.DepthSizeLookup[atDepth] * shiftedMortonCode; 179 | atIndex++; // offset for self 180 | return atIndex; 181 | } 182 | 183 | void RecursivePrepareLeaves(int prevOffset, int depth) 184 | { 185 | for (int l = 0; l < 4; l++) 186 | { 187 | var at = prevOffset + l * LookupTables.DepthSizeLookup[maxDepth - depth+1]; 188 | 189 | var elementCount = UnsafeUtility.ReadArrayElement(lookup->Ptr, at); 190 | 191 | if(elementCount > maxLeafElements && depth < maxDepth) 192 | { 193 | // There's more elements than allowed on this node so keep going deeper 194 | RecursivePrepareLeaves(at+1, depth+1); 195 | } 196 | else if(elementCount != 0) 197 | { 198 | // We either hit max depth or there's less than the max elements on this node, make it a leaf 199 | var node = new QuadNode {firstChildIndex = elementsCount, count = 0, isLeaf = true }; 200 | UnsafeUtility.WriteArrayElement(nodes->Ptr, at, node); 201 | elementsCount += elementCount; 202 | } 203 | } 204 | } 205 | 206 | public void RangeQuery(AABB2D bounds, NativeList> results) 207 | { 208 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 209 | AtomicSafetyHandle.CheckReadAndThrow(safetyHandle); 210 | #endif 211 | new QuadTreeRangeQuery().Query(this, bounds, results); 212 | } 213 | 214 | public void Clear() 215 | { 216 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 217 | AtomicSafetyHandle.CheckWriteAndBumpSecondaryVersion(safetyHandle); 218 | #endif 219 | UnsafeUtility.MemClear(lookup->Ptr, lookup->Capacity * UnsafeUtility.SizeOf()); 220 | UnsafeUtility.MemClear(nodes->Ptr, nodes->Capacity * UnsafeUtility.SizeOf()); 221 | UnsafeUtility.MemClear(elements->Ptr, elements->Capacity * UnsafeUtility.SizeOf>()); 222 | elementsCount = 0; 223 | } 224 | 225 | public void Dispose() 226 | { 227 | UnsafeList>.Destroy(elements); 228 | elements = null; 229 | UnsafeList.Destroy(lookup); 230 | lookup = null; 231 | UnsafeList.Destroy(nodes); 232 | nodes = null; 233 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 234 | DisposeSentinel.Dispose(ref safetyHandle, ref disposeSentinel); 235 | #endif 236 | } 237 | } 238 | } 239 | -------------------------------------------------------------------------------- /Assets/NativeQuadTree.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b7b8c6b2d8b6d40ee814635e9e882a54 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/NativeQuadTreeDrawing.cs: -------------------------------------------------------------------------------- 1 | using Unity.Collections; 2 | using Unity.Collections.LowLevel.Unsafe; 3 | using Unity.Mathematics; 4 | using UnityEngine; 5 | 6 | namespace NativeQuadTree 7 | { 8 | /// 9 | /// Editor drawing of the NativeQuadTree 10 | /// 11 | public unsafe partial struct NativeQuadTree where T : unmanaged 12 | { 13 | public static void Draw(NativeQuadTree tree, NativeList> results, AABB2D range, 14 | Color[][] texture) 15 | { 16 | var widthMult = texture.Length / tree.bounds.Extents.x * 2 / 2 / 2; 17 | var heightMult = texture[0].Length / tree.bounds.Extents.y * 2 / 2 / 2; 18 | 19 | var widthAdd = tree.bounds.Center.x + tree.bounds.Extents.x; 20 | var heightAdd = tree.bounds.Center.y + tree.bounds.Extents.y; 21 | 22 | for (int i = 0; i < tree.nodes->Capacity; i++) 23 | { 24 | var node = UnsafeUtility.ReadArrayElement(tree.nodes->Ptr, i); 25 | 26 | if(node.count > 0) 27 | { 28 | for (int k = 0; k < node.count; k++) 29 | { 30 | var element = 31 | UnsafeUtility.ReadArrayElement>(tree.elements->Ptr, node.firstChildIndex + k); 32 | 33 | texture[(int) ((element.pos.x + widthAdd) * widthMult)] 34 | [(int) ((element.pos.y + heightAdd) * heightMult)] = Color.red; 35 | } 36 | } 37 | } 38 | 39 | if (results.IsCreated) 40 | { 41 | foreach (var element in results) 42 | { 43 | texture[(int)((element.pos.x + widthAdd) * widthMult)] 44 | [(int)((element.pos.y + heightAdd) * heightMult)] = Color.green; 45 | } 46 | } 47 | 48 | DrawBounds(texture, range, tree); 49 | } 50 | 51 | static void DrawBounds(Color[][] texture, AABB2D bounds, NativeQuadTree tree) 52 | { 53 | var widthMult = texture.Length / tree.bounds.Extents.x * 2 / 2 / 2; 54 | var heightMult = texture[0].Length / tree.bounds.Extents.y * 2 / 2 / 2; 55 | 56 | var widthAdd = tree.bounds.Center.x + tree.bounds.Extents.x; 57 | var heightAdd = tree.bounds.Center.y + tree.bounds.Extents.y; 58 | 59 | var top = new float2(bounds.Center.x, bounds.Center.y - bounds.Extents.y); 60 | var left = new float2(bounds.Center.x - bounds.Extents.x, bounds.Center.y); 61 | 62 | for (int leftToRight = 0; leftToRight < bounds.Extents.x * 2; leftToRight++) 63 | { 64 | var poxX = left.x + leftToRight; 65 | texture[(int) ((poxX + widthAdd) * widthMult)][(int) ((bounds.Center.y + heightAdd + bounds.Extents.y) * heightMult)] = Color.blue; 66 | texture[(int) ((poxX + widthAdd) * widthMult)][(int) ((bounds.Center.y + heightAdd - bounds.Extents.y) * heightMult)] = Color.blue; 67 | } 68 | 69 | for (int topToBottom = 0; topToBottom < bounds.Extents.y * 2; topToBottom++) 70 | { 71 | var posY = top.y + topToBottom; 72 | texture[(int) ((bounds.Center.x + widthAdd + bounds.Extents.x) * widthMult)][(int) ((posY + heightAdd) * heightMult)] = Color.blue; 73 | texture[(int) ((bounds.Center.x + widthAdd - bounds.Extents.x) * widthMult)][(int) ((posY + heightAdd) * heightMult)] = Color.blue; 74 | } 75 | } 76 | } 77 | } -------------------------------------------------------------------------------- /Assets/NativeQuadTreeDrawing.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e98d676f818a45d9851041ca067a6eab 3 | timeCreated: 1580073676 -------------------------------------------------------------------------------- /Assets/NativeQuadTreeRangeQuery.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Unity.Collections; 3 | using Unity.Collections.LowLevel.Unsafe; 4 | using Unity.Mathematics; 5 | 6 | namespace NativeQuadTree 7 | { 8 | public unsafe partial struct NativeQuadTree where T : unmanaged 9 | { 10 | struct QuadTreeRangeQuery 11 | { 12 | NativeQuadTree tree; 13 | 14 | UnsafeList* fastResults; 15 | int count; 16 | 17 | AABB2D bounds; 18 | 19 | public void Query(NativeQuadTree tree, AABB2D bounds, NativeList> results) 20 | { 21 | this.tree = tree; 22 | this.bounds = bounds; 23 | count = 0; 24 | 25 | // Get pointer to inner list data for faster writing 26 | fastResults = (UnsafeList*) NativeListUnsafeUtility.GetInternalListDataPtrUnchecked(ref results); 27 | 28 | RecursiveRangeQuery(tree.bounds, false, 1, 1); 29 | 30 | fastResults->Length = count; 31 | } 32 | 33 | public void RecursiveRangeQuery(AABB2D parentBounds, bool parentContained, int prevOffset, int depth) 34 | { 35 | if(count + 4 * tree.maxLeafElements > fastResults->Capacity) 36 | { 37 | fastResults->Resize(math.max(fastResults->Capacity * 2, count + 4 * tree.maxLeafElements)); 38 | } 39 | 40 | var depthSize = LookupTables.DepthSizeLookup[tree.maxDepth - depth+1]; 41 | for (int l = 0; l < 4; l++) 42 | { 43 | var childBounds = GetChildBounds(parentBounds, l); 44 | 45 | var contained = parentContained; 46 | if(!contained) 47 | { 48 | if(bounds.Contains(childBounds)) 49 | { 50 | contained = true; 51 | } 52 | else if(!bounds.Intersects(childBounds)) 53 | { 54 | continue; 55 | } 56 | } 57 | 58 | 59 | var at = prevOffset + l * depthSize; 60 | 61 | var elementCount = UnsafeUtility.ReadArrayElement(tree.lookup->Ptr, at); 62 | 63 | if(elementCount > tree.maxLeafElements && depth < tree.maxDepth) 64 | { 65 | RecursiveRangeQuery(childBounds, contained, at+1, depth+1); 66 | } 67 | else if(elementCount != 0) 68 | { 69 | var node = UnsafeUtility.ReadArrayElement(tree.nodes->Ptr, at); 70 | 71 | if(contained) 72 | { 73 | var index = (void*) ((IntPtr) tree.elements->Ptr + node.firstChildIndex * UnsafeUtility.SizeOf>()); 74 | 75 | UnsafeUtility.MemCpy((void*) ((IntPtr) fastResults->Ptr + count * UnsafeUtility.SizeOf>()), 76 | index, node.count * UnsafeUtility.SizeOf>()); 77 | count += node.count; 78 | } 79 | else 80 | { 81 | for (int k = 0; k < node.count; k++) 82 | { 83 | var element = UnsafeUtility.ReadArrayElement>(tree.elements->Ptr, node.firstChildIndex + k); 84 | if(bounds.Contains(element.pos)) 85 | { 86 | UnsafeUtility.WriteArrayElement(fastResults->Ptr, count++, element); 87 | } 88 | } 89 | } 90 | } 91 | } 92 | } 93 | 94 | static AABB2D GetChildBounds(AABB2D parentBounds, int childZIndex) 95 | { 96 | var half = parentBounds.Extents.x * .5f; 97 | 98 | switch (childZIndex) 99 | { 100 | case 0: return new AABB2D(new float2(parentBounds.Center.x - half, parentBounds.Center.y + half), half); 101 | case 1: return new AABB2D(new float2(parentBounds.Center.x + half, parentBounds.Center.y + half), half); 102 | case 2: return new AABB2D(new float2(parentBounds.Center.x - half, parentBounds.Center.y - half), half); 103 | case 3: return new AABB2D(new float2(parentBounds.Center.x + half, parentBounds.Center.y - half), half); 104 | default: throw new Exception(); 105 | } 106 | } 107 | } 108 | 109 | } 110 | } -------------------------------------------------------------------------------- /Assets/NativeQuadTreeRangeQuery.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 98c569dc7c35745c5bf8a8cbca70fb3b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/QuadTreeJobs.cs: -------------------------------------------------------------------------------- 1 | using Unity.Burst; 2 | using Unity.Collections; 3 | using Unity.Jobs; 4 | 5 | namespace NativeQuadTree 6 | { 7 | /// 8 | /// Examples on jobs for the NativeQuadTree 9 | /// 10 | public static class QuadTreeJobs 11 | { 12 | /// 13 | /// Bulk insert many items into the tree 14 | /// 15 | [BurstCompile] 16 | public struct AddBulkJob : IJob where T : unmanaged 17 | { 18 | [ReadOnly] 19 | public NativeArray> Elements; 20 | 21 | public NativeQuadTree QuadTree; 22 | 23 | public void Execute() 24 | { 25 | QuadTree.ClearAndBulkInsert(Elements); 26 | } 27 | } 28 | 29 | /// 30 | /// Example on how to do a range query, it's better to write your own and do many queries in a batch 31 | /// 32 | [BurstCompile] 33 | public struct RangeQueryJob : IJob where T : unmanaged 34 | { 35 | [ReadOnly] 36 | public AABB2D Bounds; 37 | 38 | [ReadOnly] 39 | public NativeQuadTree QuadTree; 40 | 41 | public NativeList> Results; 42 | 43 | public void Execute() 44 | { 45 | for (int i = 0; i < 1000; i++) 46 | { 47 | QuadTree.RangeQuery(Bounds, Results); 48 | Results.Clear(); 49 | } 50 | QuadTree.RangeQuery(Bounds, Results); 51 | } 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /Assets/QuadTreeJobs.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2815368828aa4ed8934169baddedefd2 3 | timeCreated: 1580072573 -------------------------------------------------------------------------------- /Assets/UnityDefaultRuntimeTheme.tss: -------------------------------------------------------------------------------- 1 | @import url("unity-theme://default"); 2 | VisualElement {} -------------------------------------------------------------------------------- /Assets/UnityDefaultRuntimeTheme.tss.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 621cee4dfb9237e41984ec0c2a0a904f 3 | ScriptedImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 2 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | script: {fileID: 12388, guid: 0000000000000000e000000000000000, type: 0} 11 | disableValidation: 0 12 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Marijn Zwemmer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "2.0.5", 4 | "com.unity.entities": "1.0.14", 5 | "com.unity.ide.visualstudio": "2.0.20", 6 | "com.unity.ide.vscode": "1.2.5", 7 | "com.unity.test-framework": "1.1.33", 8 | "com.unity.textmeshpro": "3.0.6", 9 | "com.unity.timeline": "1.7.5", 10 | "com.unity.ugui": "1.0.0", 11 | "com.unity.xr.management": "4.3.3", 12 | "com.unity.modules.ai": "1.0.0", 13 | "com.unity.modules.androidjni": "1.0.0", 14 | "com.unity.modules.animation": "1.0.0", 15 | "com.unity.modules.assetbundle": "1.0.0", 16 | "com.unity.modules.audio": "1.0.0", 17 | "com.unity.modules.cloth": "1.0.0", 18 | "com.unity.modules.director": "1.0.0", 19 | "com.unity.modules.imageconversion": "1.0.0", 20 | "com.unity.modules.imgui": "1.0.0", 21 | "com.unity.modules.jsonserialize": "1.0.0", 22 | "com.unity.modules.particlesystem": "1.0.0", 23 | "com.unity.modules.physics": "1.0.0", 24 | "com.unity.modules.physics2d": "1.0.0", 25 | "com.unity.modules.screencapture": "1.0.0", 26 | "com.unity.modules.terrain": "1.0.0", 27 | "com.unity.modules.terrainphysics": "1.0.0", 28 | "com.unity.modules.tilemap": "1.0.0", 29 | "com.unity.modules.ui": "1.0.0", 30 | "com.unity.modules.uielements": "1.0.0", 31 | "com.unity.modules.umbra": "1.0.0", 32 | "com.unity.modules.unityanalytics": "1.0.0", 33 | "com.unity.modules.unitywebrequest": "1.0.0", 34 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 35 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 36 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 37 | "com.unity.modules.unitywebrequestwww": "1.0.0", 38 | "com.unity.modules.vehicles": "1.0.0", 39 | "com.unity.modules.video": "1.0.0", 40 | "com.unity.modules.vr": "1.0.0", 41 | "com.unity.modules.wind": "1.0.0", 42 | "com.unity.modules.xr": "1.0.0" 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Packages/packages-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.burst": { 4 | "version": "1.8.7", 5 | "depth": 1, 6 | "source": "registry", 7 | "dependencies": { 8 | "com.unity.mathematics": "1.2.1" 9 | }, 10 | "url": "https://packages.unity.com" 11 | }, 12 | "com.unity.collab-proxy": { 13 | "version": "2.0.5", 14 | "depth": 0, 15 | "source": "registry", 16 | "dependencies": {}, 17 | "url": "https://packages.unity.com" 18 | }, 19 | "com.unity.collections": { 20 | "version": "2.1.4", 21 | "depth": 1, 22 | "source": "registry", 23 | "dependencies": { 24 | "com.unity.burst": "1.8.4", 25 | "com.unity.modules.unityanalytics": "1.0.0", 26 | "com.unity.nuget.mono-cecil": "1.11.4" 27 | }, 28 | "url": "https://packages.unity.com" 29 | }, 30 | "com.unity.entities": { 31 | "version": "1.0.14", 32 | "depth": 0, 33 | "source": "registry", 34 | "dependencies": { 35 | "com.unity.burst": "1.8.7", 36 | "com.unity.serialization": "3.1.1", 37 | "com.unity.collections": "2.1.4", 38 | "com.unity.mathematics": "1.2.6", 39 | "com.unity.modules.assetbundle": "1.0.0", 40 | "com.unity.modules.audio": "1.0.0", 41 | "com.unity.modules.unitywebrequest": "1.0.0", 42 | "com.unity.test-framework.performance": "3.0.2", 43 | "com.unity.nuget.mono-cecil": "1.11.4", 44 | "com.unity.scriptablebuildpipeline": "1.20.2", 45 | "com.unity.profiling.core": "1.0.2" 46 | }, 47 | "url": "https://packages.unity.com" 48 | }, 49 | "com.unity.ext.nunit": { 50 | "version": "1.0.6", 51 | "depth": 1, 52 | "source": "registry", 53 | "dependencies": {}, 54 | "url": "https://packages.unity.com" 55 | }, 56 | "com.unity.ide.visualstudio": { 57 | "version": "2.0.20", 58 | "depth": 0, 59 | "source": "registry", 60 | "dependencies": { 61 | "com.unity.test-framework": "1.1.9" 62 | }, 63 | "url": "https://packages.unity.com" 64 | }, 65 | "com.unity.ide.vscode": { 66 | "version": "1.2.5", 67 | "depth": 0, 68 | "source": "registry", 69 | "dependencies": {}, 70 | "url": "https://packages.unity.com" 71 | }, 72 | "com.unity.mathematics": { 73 | "version": "1.2.6", 74 | "depth": 1, 75 | "source": "registry", 76 | "dependencies": {}, 77 | "url": "https://packages.unity.com" 78 | }, 79 | "com.unity.nuget.mono-cecil": { 80 | "version": "1.11.4", 81 | "depth": 1, 82 | "source": "registry", 83 | "dependencies": {}, 84 | "url": "https://packages.unity.com" 85 | }, 86 | "com.unity.profiling.core": { 87 | "version": "1.0.2", 88 | "depth": 1, 89 | "source": "registry", 90 | "dependencies": {}, 91 | "url": "https://packages.unity.com" 92 | }, 93 | "com.unity.scriptablebuildpipeline": { 94 | "version": "1.21.5", 95 | "depth": 1, 96 | "source": "registry", 97 | "dependencies": {}, 98 | "url": "https://packages.unity.com" 99 | }, 100 | "com.unity.serialization": { 101 | "version": "3.1.1", 102 | "depth": 1, 103 | "source": "registry", 104 | "dependencies": { 105 | "com.unity.collections": "2.1.4", 106 | "com.unity.burst": "1.7.2" 107 | }, 108 | "url": "https://packages.unity.com" 109 | }, 110 | "com.unity.test-framework": { 111 | "version": "1.1.33", 112 | "depth": 0, 113 | "source": "registry", 114 | "dependencies": { 115 | "com.unity.ext.nunit": "1.0.6", 116 | "com.unity.modules.imgui": "1.0.0", 117 | "com.unity.modules.jsonserialize": "1.0.0" 118 | }, 119 | "url": "https://packages.unity.com" 120 | }, 121 | "com.unity.test-framework.performance": { 122 | "version": "3.0.2", 123 | "depth": 1, 124 | "source": "registry", 125 | "dependencies": { 126 | "com.unity.test-framework": "1.1.31", 127 | "com.unity.modules.jsonserialize": "1.0.0" 128 | }, 129 | "url": "https://packages.unity.com" 130 | }, 131 | "com.unity.textmeshpro": { 132 | "version": "3.0.6", 133 | "depth": 0, 134 | "source": "registry", 135 | "dependencies": { 136 | "com.unity.ugui": "1.0.0" 137 | }, 138 | "url": "https://packages.unity.com" 139 | }, 140 | "com.unity.timeline": { 141 | "version": "1.7.5", 142 | "depth": 0, 143 | "source": "registry", 144 | "dependencies": { 145 | "com.unity.modules.director": "1.0.0", 146 | "com.unity.modules.animation": "1.0.0", 147 | "com.unity.modules.audio": "1.0.0", 148 | "com.unity.modules.particlesystem": "1.0.0" 149 | }, 150 | "url": "https://packages.unity.com" 151 | }, 152 | "com.unity.ugui": { 153 | "version": "1.0.0", 154 | "depth": 0, 155 | "source": "builtin", 156 | "dependencies": { 157 | "com.unity.modules.ui": "1.0.0", 158 | "com.unity.modules.imgui": "1.0.0" 159 | } 160 | }, 161 | "com.unity.xr.legacyinputhelpers": { 162 | "version": "2.1.10", 163 | "depth": 1, 164 | "source": "registry", 165 | "dependencies": { 166 | "com.unity.modules.vr": "1.0.0", 167 | "com.unity.modules.xr": "1.0.0" 168 | }, 169 | "url": "https://packages.unity.com" 170 | }, 171 | "com.unity.xr.management": { 172 | "version": "4.3.3", 173 | "depth": 0, 174 | "source": "registry", 175 | "dependencies": { 176 | "com.unity.modules.subsystems": "1.0.0", 177 | "com.unity.modules.vr": "1.0.0", 178 | "com.unity.modules.xr": "1.0.0", 179 | "com.unity.xr.legacyinputhelpers": "2.1.7" 180 | }, 181 | "url": "https://packages.unity.com" 182 | }, 183 | "com.unity.modules.ai": { 184 | "version": "1.0.0", 185 | "depth": 0, 186 | "source": "builtin", 187 | "dependencies": {} 188 | }, 189 | "com.unity.modules.androidjni": { 190 | "version": "1.0.0", 191 | "depth": 0, 192 | "source": "builtin", 193 | "dependencies": {} 194 | }, 195 | "com.unity.modules.animation": { 196 | "version": "1.0.0", 197 | "depth": 0, 198 | "source": "builtin", 199 | "dependencies": {} 200 | }, 201 | "com.unity.modules.assetbundle": { 202 | "version": "1.0.0", 203 | "depth": 0, 204 | "source": "builtin", 205 | "dependencies": {} 206 | }, 207 | "com.unity.modules.audio": { 208 | "version": "1.0.0", 209 | "depth": 0, 210 | "source": "builtin", 211 | "dependencies": {} 212 | }, 213 | "com.unity.modules.cloth": { 214 | "version": "1.0.0", 215 | "depth": 0, 216 | "source": "builtin", 217 | "dependencies": { 218 | "com.unity.modules.physics": "1.0.0" 219 | } 220 | }, 221 | "com.unity.modules.director": { 222 | "version": "1.0.0", 223 | "depth": 0, 224 | "source": "builtin", 225 | "dependencies": { 226 | "com.unity.modules.audio": "1.0.0", 227 | "com.unity.modules.animation": "1.0.0" 228 | } 229 | }, 230 | "com.unity.modules.imageconversion": { 231 | "version": "1.0.0", 232 | "depth": 0, 233 | "source": "builtin", 234 | "dependencies": {} 235 | }, 236 | "com.unity.modules.imgui": { 237 | "version": "1.0.0", 238 | "depth": 0, 239 | "source": "builtin", 240 | "dependencies": {} 241 | }, 242 | "com.unity.modules.jsonserialize": { 243 | "version": "1.0.0", 244 | "depth": 0, 245 | "source": "builtin", 246 | "dependencies": {} 247 | }, 248 | "com.unity.modules.particlesystem": { 249 | "version": "1.0.0", 250 | "depth": 0, 251 | "source": "builtin", 252 | "dependencies": {} 253 | }, 254 | "com.unity.modules.physics": { 255 | "version": "1.0.0", 256 | "depth": 0, 257 | "source": "builtin", 258 | "dependencies": {} 259 | }, 260 | "com.unity.modules.physics2d": { 261 | "version": "1.0.0", 262 | "depth": 0, 263 | "source": "builtin", 264 | "dependencies": {} 265 | }, 266 | "com.unity.modules.screencapture": { 267 | "version": "1.0.0", 268 | "depth": 0, 269 | "source": "builtin", 270 | "dependencies": { 271 | "com.unity.modules.imageconversion": "1.0.0" 272 | } 273 | }, 274 | "com.unity.modules.subsystems": { 275 | "version": "1.0.0", 276 | "depth": 1, 277 | "source": "builtin", 278 | "dependencies": { 279 | "com.unity.modules.jsonserialize": "1.0.0" 280 | } 281 | }, 282 | "com.unity.modules.terrain": { 283 | "version": "1.0.0", 284 | "depth": 0, 285 | "source": "builtin", 286 | "dependencies": {} 287 | }, 288 | "com.unity.modules.terrainphysics": { 289 | "version": "1.0.0", 290 | "depth": 0, 291 | "source": "builtin", 292 | "dependencies": { 293 | "com.unity.modules.physics": "1.0.0", 294 | "com.unity.modules.terrain": "1.0.0" 295 | } 296 | }, 297 | "com.unity.modules.tilemap": { 298 | "version": "1.0.0", 299 | "depth": 0, 300 | "source": "builtin", 301 | "dependencies": { 302 | "com.unity.modules.physics2d": "1.0.0" 303 | } 304 | }, 305 | "com.unity.modules.ui": { 306 | "version": "1.0.0", 307 | "depth": 0, 308 | "source": "builtin", 309 | "dependencies": {} 310 | }, 311 | "com.unity.modules.uielements": { 312 | "version": "1.0.0", 313 | "depth": 0, 314 | "source": "builtin", 315 | "dependencies": { 316 | "com.unity.modules.ui": "1.0.0", 317 | "com.unity.modules.imgui": "1.0.0", 318 | "com.unity.modules.jsonserialize": "1.0.0" 319 | } 320 | }, 321 | "com.unity.modules.umbra": { 322 | "version": "1.0.0", 323 | "depth": 0, 324 | "source": "builtin", 325 | "dependencies": {} 326 | }, 327 | "com.unity.modules.unityanalytics": { 328 | "version": "1.0.0", 329 | "depth": 0, 330 | "source": "builtin", 331 | "dependencies": { 332 | "com.unity.modules.unitywebrequest": "1.0.0", 333 | "com.unity.modules.jsonserialize": "1.0.0" 334 | } 335 | }, 336 | "com.unity.modules.unitywebrequest": { 337 | "version": "1.0.0", 338 | "depth": 0, 339 | "source": "builtin", 340 | "dependencies": {} 341 | }, 342 | "com.unity.modules.unitywebrequestassetbundle": { 343 | "version": "1.0.0", 344 | "depth": 0, 345 | "source": "builtin", 346 | "dependencies": { 347 | "com.unity.modules.assetbundle": "1.0.0", 348 | "com.unity.modules.unitywebrequest": "1.0.0" 349 | } 350 | }, 351 | "com.unity.modules.unitywebrequestaudio": { 352 | "version": "1.0.0", 353 | "depth": 0, 354 | "source": "builtin", 355 | "dependencies": { 356 | "com.unity.modules.unitywebrequest": "1.0.0", 357 | "com.unity.modules.audio": "1.0.0" 358 | } 359 | }, 360 | "com.unity.modules.unitywebrequesttexture": { 361 | "version": "1.0.0", 362 | "depth": 0, 363 | "source": "builtin", 364 | "dependencies": { 365 | "com.unity.modules.unitywebrequest": "1.0.0", 366 | "com.unity.modules.imageconversion": "1.0.0" 367 | } 368 | }, 369 | "com.unity.modules.unitywebrequestwww": { 370 | "version": "1.0.0", 371 | "depth": 0, 372 | "source": "builtin", 373 | "dependencies": { 374 | "com.unity.modules.unitywebrequest": "1.0.0", 375 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 376 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 377 | "com.unity.modules.audio": "1.0.0", 378 | "com.unity.modules.assetbundle": "1.0.0", 379 | "com.unity.modules.imageconversion": "1.0.0" 380 | } 381 | }, 382 | "com.unity.modules.vehicles": { 383 | "version": "1.0.0", 384 | "depth": 0, 385 | "source": "builtin", 386 | "dependencies": { 387 | "com.unity.modules.physics": "1.0.0" 388 | } 389 | }, 390 | "com.unity.modules.video": { 391 | "version": "1.0.0", 392 | "depth": 0, 393 | "source": "builtin", 394 | "dependencies": { 395 | "com.unity.modules.audio": "1.0.0", 396 | "com.unity.modules.ui": "1.0.0", 397 | "com.unity.modules.unitywebrequest": "1.0.0" 398 | } 399 | }, 400 | "com.unity.modules.vr": { 401 | "version": "1.0.0", 402 | "depth": 0, 403 | "source": "builtin", 404 | "dependencies": { 405 | "com.unity.modules.jsonserialize": "1.0.0", 406 | "com.unity.modules.physics": "1.0.0", 407 | "com.unity.modules.xr": "1.0.0" 408 | } 409 | }, 410 | "com.unity.modules.wind": { 411 | "version": "1.0.0", 412 | "depth": 0, 413 | "source": "builtin", 414 | "dependencies": {} 415 | }, 416 | "com.unity.modules.xr": { 417 | "version": "1.0.0", 418 | "depth": 0, 419 | "source": "builtin", 420 | "dependencies": { 421 | "com.unity.modules.physics": "1.0.0", 422 | "com.unity.modules.jsonserialize": "1.0.0", 423 | "com.unity.modules.subsystems": "1.0.0" 424 | } 425 | } 426 | } 427 | } 428 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/SampleScene.unity 10 | guid: 2cda990e2423bbf4892e6590ba056729 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 1 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 4 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmref;asmdef 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/EntitiesClientSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: e2ea235c1fcfe29488ed97c467a0da53, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | FilterSettings: 16 | ExcludedBakingSystemAssemblies: [] 17 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 34 | m_PreloadedShaders: [] 35 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 36 | type: 0} 37 | m_CustomRenderPipeline: {fileID: 0} 38 | m_TransparencySortMode: 0 39 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 40 | m_DefaultRenderingPath: 1 41 | m_DefaultMobileRenderingPath: 1 42 | m_TierSettings: [] 43 | m_LightmapStripping: 0 44 | m_FogStripping: 0 45 | m_InstancingStripping: 0 46 | m_LightmapKeepPlain: 1 47 | m_LightmapKeepDirCombined: 1 48 | m_LightmapKeepDynamicPlain: 1 49 | m_LightmapKeepDynamicDirCombined: 1 50 | m_LightmapKeepShadowMask: 1 51 | m_LightmapKeepSubtractive: 1 52 | m_FogKeepLinear: 1 53 | m_FogKeepExp: 1 54 | m_FogKeepExp2: 1 55 | m_AlbedoSwatchInfos: [] 56 | m_LightsUseLinearIntensity: 0 57 | m_LightsUseColorTemperature: 0 58 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_AdvancedSettingsExpanded: 1 17 | m_ScopedRegistriesSettingsExpanded: 1 18 | m_SeeAllPackageVersions: 0 19 | m_DismissPreviewPackagesInUse: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.com 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_ConfigSource: 0 29 | m_UserSelectedRegistryName: 30 | m_UserAddingNewScopedRegistry: 0 31 | m_RegistryInfoDraft: 32 | m_Modified: 0 33 | m_ErrorMessage: 34 | m_UserModificationsInstanceId: -860 35 | m_OriginalInstanceId: -862 36 | m_LoadAssets: 0 37 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 20 7 | productGUID: 2024718c4027640389562cd9050f94ef 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: New Unity Project (1) 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosUseCustomAppBackgroundBehavior: 0 56 | iosAllowHTTPDownload: 1 57 | allowedAutorotateToPortrait: 1 58 | allowedAutorotateToPortraitUpsideDown: 1 59 | allowedAutorotateToLandscapeRight: 1 60 | allowedAutorotateToLandscapeLeft: 1 61 | useOSAutorotation: 1 62 | use32BitDisplayBuffer: 1 63 | preserveFramebufferAlpha: 0 64 | disableDepthAndStencilBuffers: 0 65 | androidStartInFullscreen: 1 66 | androidRenderOutsideSafeArea: 1 67 | androidUseSwappy: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 1 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | useFlipModelSwapchain: 1 83 | resizableWindow: 0 84 | useMacAppStoreValidation: 0 85 | macAppStoreCategory: public.app-category.games 86 | gpuSkinning: 0 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | fullscreenMode: 1 95 | xboxSpeechDB: 0 96 | xboxEnableHeadOrientation: 0 97 | xboxEnableGuest: 0 98 | xboxEnablePIXSampling: 0 99 | metalFramebufferOnly: 0 100 | xboxOneResolution: 0 101 | xboxOneSResolution: 0 102 | xboxOneXResolution: 3 103 | xboxOneMonoLoggingLevel: 0 104 | xboxOneLoggingLevel: 1 105 | xboxOneDisableEsram: 0 106 | xboxOnePresentImmediateThreshold: 0 107 | switchQueueCommandMemory: 0 108 | switchQueueControlMemory: 16384 109 | switchQueueComputeMemory: 262144 110 | switchNVNShaderPoolsGranularity: 33554432 111 | switchNVNDefaultPoolsGranularity: 16777216 112 | switchNVNOtherPoolsGranularity: 16777216 113 | vulkanNumSwapchainBuffers: 3 114 | vulkanEnableSetSRGBWrite: 0 115 | m_SupportedAspectRatios: 116 | 4:3: 1 117 | 5:4: 1 118 | 16:10: 1 119 | 16:9: 1 120 | Others: 1 121 | bundleVersion: 0.1 122 | preloadedAssets: [] 123 | metroInputSource: 0 124 | wsaTransparentSwapchain: 0 125 | m_HolographicPauseOnTrackingLoss: 1 126 | xboxOneDisableKinectGpuReservation: 1 127 | xboxOneEnable7thCore: 1 128 | vrSettings: 129 | cardboard: 130 | depthFormat: 0 131 | enableTransitionView: 0 132 | daydream: 133 | depthFormat: 0 134 | useSustainedPerformanceMode: 0 135 | enableVideoLayer: 0 136 | useProtectedVideoMemory: 0 137 | minimumSupportedHeadTracking: 0 138 | maximumSupportedHeadTracking: 1 139 | hololens: 140 | depthFormat: 1 141 | depthBufferSharingEnabled: 1 142 | lumin: 143 | depthFormat: 0 144 | frameTiming: 2 145 | enableGLCache: 0 146 | glCacheMaxBlobSize: 524288 147 | glCacheMaxFileSize: 8388608 148 | oculus: 149 | sharedDepthBuffer: 1 150 | dashSupport: 1 151 | lowOverheadMode: 0 152 | protectedContext: 0 153 | v2Signing: 1 154 | enable360StereoCapture: 0 155 | isWsaHolographicRemotingEnabled: 0 156 | enableFrameTimingStats: 0 157 | useHDRDisplay: 0 158 | D3DHDRBitDepth: 0 159 | m_ColorGamuts: 00000000 160 | targetPixelDensity: 30 161 | resolutionScalingMode: 0 162 | androidSupportedAspectRatio: 1 163 | androidMaxAspectRatio: 2.1 164 | applicationIdentifier: 165 | Standalone: com.Company.ProductName 166 | buildNumber: {} 167 | AndroidBundleVersionCode: 1 168 | AndroidMinSdkVersion: 19 169 | AndroidTargetSdkVersion: 0 170 | AndroidPreferredInstallLocation: 1 171 | aotOptions: 172 | stripEngineCode: 1 173 | iPhoneStrippingLevel: 0 174 | iPhoneScriptCallOptimization: 0 175 | ForceInternetPermission: 0 176 | ForceSDCardPermission: 0 177 | CreateWallpaper: 0 178 | APKExpansionFiles: 0 179 | keepLoadedShadersAlive: 0 180 | StripUnusedMeshComponents: 1 181 | VertexChannelCompressionMask: 4054 182 | iPhoneSdkVersion: 988 183 | iOSTargetOSVersionString: 10.0 184 | tvOSSdkVersion: 0 185 | tvOSRequireExtendedGameController: 0 186 | tvOSTargetOSVersionString: 10.0 187 | uIPrerenderedIcon: 0 188 | uIRequiresPersistentWiFi: 0 189 | uIRequiresFullScreen: 1 190 | uIStatusBarHidden: 1 191 | uIExitOnSuspend: 0 192 | uIStatusBarStyle: 0 193 | iPhoneSplashScreen: {fileID: 0} 194 | iPhoneHighResSplashScreen: {fileID: 0} 195 | iPhoneTallHighResSplashScreen: {fileID: 0} 196 | iPhone47inSplashScreen: {fileID: 0} 197 | iPhone55inPortraitSplashScreen: {fileID: 0} 198 | iPhone55inLandscapeSplashScreen: {fileID: 0} 199 | iPhone58inPortraitSplashScreen: {fileID: 0} 200 | iPhone58inLandscapeSplashScreen: {fileID: 0} 201 | iPadPortraitSplashScreen: {fileID: 0} 202 | iPadHighResPortraitSplashScreen: {fileID: 0} 203 | iPadLandscapeSplashScreen: {fileID: 0} 204 | iPadHighResLandscapeSplashScreen: {fileID: 0} 205 | iPhone65inPortraitSplashScreen: {fileID: 0} 206 | iPhone65inLandscapeSplashScreen: {fileID: 0} 207 | iPhone61inPortraitSplashScreen: {fileID: 0} 208 | iPhone61inLandscapeSplashScreen: {fileID: 0} 209 | appleTVSplashScreen: {fileID: 0} 210 | appleTVSplashScreen2x: {fileID: 0} 211 | tvOSSmallIconLayers: [] 212 | tvOSSmallIconLayers2x: [] 213 | tvOSLargeIconLayers: [] 214 | tvOSLargeIconLayers2x: [] 215 | tvOSTopShelfImageLayers: [] 216 | tvOSTopShelfImageLayers2x: [] 217 | tvOSTopShelfImageWideLayers: [] 218 | tvOSTopShelfImageWideLayers2x: [] 219 | iOSLaunchScreenType: 0 220 | iOSLaunchScreenPortrait: {fileID: 0} 221 | iOSLaunchScreenLandscape: {fileID: 0} 222 | iOSLaunchScreenBackgroundColor: 223 | serializedVersion: 2 224 | rgba: 0 225 | iOSLaunchScreenFillPct: 100 226 | iOSLaunchScreenSize: 100 227 | iOSLaunchScreenCustomXibPath: 228 | iOSLaunchScreeniPadType: 0 229 | iOSLaunchScreeniPadImage: {fileID: 0} 230 | iOSLaunchScreeniPadBackgroundColor: 231 | serializedVersion: 2 232 | rgba: 0 233 | iOSLaunchScreeniPadFillPct: 100 234 | iOSLaunchScreeniPadSize: 100 235 | iOSLaunchScreeniPadCustomXibPath: 236 | iOSUseLaunchScreenStoryboard: 0 237 | iOSLaunchScreenCustomStoryboardPath: 238 | iOSDeviceRequirements: [] 239 | iOSURLSchemes: [] 240 | iOSBackgroundModes: 0 241 | iOSMetalForceHardShadows: 0 242 | metalEditorSupport: 1 243 | metalAPIValidation: 1 244 | iOSRenderExtraFrameOnPause: 0 245 | appleDeveloperTeamID: 246 | iOSManualSigningProvisioningProfileID: 247 | tvOSManualSigningProvisioningProfileID: 248 | iOSManualSigningProvisioningProfileType: 0 249 | tvOSManualSigningProvisioningProfileType: 0 250 | appleEnableAutomaticSigning: 0 251 | iOSRequireARKit: 0 252 | iOSAutomaticallyDetectAndAddCapabilities: 1 253 | appleEnableProMotion: 0 254 | clonedFromGUID: 5f34be1353de5cf4398729fda238591b 255 | templatePackageId: com.unity.template.2d@3.2.5 256 | templateDefaultScene: Assets/Scenes/SampleScene.unity 257 | AndroidTargetArchitectures: 1 258 | AndroidSplashScreenScale: 0 259 | androidSplashScreen: {fileID: 0} 260 | AndroidKeystoreName: 261 | AndroidKeyaliasName: 262 | AndroidBuildApkPerCpuArchitecture: 0 263 | AndroidTVCompatibility: 0 264 | AndroidIsGame: 1 265 | AndroidEnableTango: 0 266 | androidEnableBanner: 1 267 | androidUseLowAccuracyLocation: 0 268 | androidUseCustomKeystore: 0 269 | m_AndroidBanners: 270 | - width: 320 271 | height: 180 272 | banner: {fileID: 0} 273 | androidGamepadSupportLevel: 0 274 | AndroidValidateAppBundleSize: 1 275 | AndroidAppBundleSizeToValidate: 150 276 | m_BuildTargetIcons: [] 277 | m_BuildTargetPlatformIcons: [] 278 | m_BuildTargetBatching: [] 279 | m_BuildTargetGraphicsJobs: 280 | - m_BuildTarget: MacStandaloneSupport 281 | m_GraphicsJobs: 0 282 | - m_BuildTarget: Switch 283 | m_GraphicsJobs: 0 284 | - m_BuildTarget: MetroSupport 285 | m_GraphicsJobs: 0 286 | - m_BuildTarget: AppleTVSupport 287 | m_GraphicsJobs: 0 288 | - m_BuildTarget: BJMSupport 289 | m_GraphicsJobs: 0 290 | - m_BuildTarget: LinuxStandaloneSupport 291 | m_GraphicsJobs: 0 292 | - m_BuildTarget: PS4Player 293 | m_GraphicsJobs: 0 294 | - m_BuildTarget: iOSSupport 295 | m_GraphicsJobs: 0 296 | - m_BuildTarget: WindowsStandaloneSupport 297 | m_GraphicsJobs: 0 298 | - m_BuildTarget: XboxOnePlayer 299 | m_GraphicsJobs: 0 300 | - m_BuildTarget: LuminSupport 301 | m_GraphicsJobs: 0 302 | - m_BuildTarget: AndroidPlayer 303 | m_GraphicsJobs: 0 304 | - m_BuildTarget: WebGLSupport 305 | m_GraphicsJobs: 0 306 | m_BuildTargetGraphicsJobMode: 307 | - m_BuildTarget: PS4Player 308 | m_GraphicsJobMode: 0 309 | - m_BuildTarget: XboxOnePlayer 310 | m_GraphicsJobMode: 0 311 | m_BuildTargetGraphicsAPIs: 312 | - m_BuildTarget: AndroidPlayer 313 | m_APIs: 150000000b000000 314 | m_Automatic: 0 315 | m_BuildTargetVRSettings: [] 316 | openGLRequireES31: 0 317 | openGLRequireES31AEP: 0 318 | openGLRequireES32: 0 319 | m_TemplateCustomTags: {} 320 | mobileMTRendering: 321 | Android: 1 322 | iPhone: 1 323 | tvOS: 1 324 | m_BuildTargetGroupLightmapEncodingQuality: [] 325 | m_BuildTargetGroupLightmapSettings: [] 326 | playModeTestRunnerEnabled: 0 327 | runPlayModeTestAsEditModeTest: 0 328 | actionOnDotNetUnhandledException: 1 329 | enableInternalProfiler: 0 330 | logObjCUncaughtExceptions: 1 331 | enableCrashReportAPI: 0 332 | cameraUsageDescription: 333 | locationUsageDescription: 334 | microphoneUsageDescription: 335 | switchNetLibKey: 336 | switchSocketMemoryPoolSize: 6144 337 | switchSocketAllocatorPoolSize: 128 338 | switchSocketConcurrencyLimit: 14 339 | switchScreenResolutionBehavior: 2 340 | switchUseCPUProfiler: 0 341 | switchApplicationID: 0x01004b9000490000 342 | switchNSODependencies: 343 | switchTitleNames_0: 344 | switchTitleNames_1: 345 | switchTitleNames_2: 346 | switchTitleNames_3: 347 | switchTitleNames_4: 348 | switchTitleNames_5: 349 | switchTitleNames_6: 350 | switchTitleNames_7: 351 | switchTitleNames_8: 352 | switchTitleNames_9: 353 | switchTitleNames_10: 354 | switchTitleNames_11: 355 | switchTitleNames_12: 356 | switchTitleNames_13: 357 | switchTitleNames_14: 358 | switchPublisherNames_0: 359 | switchPublisherNames_1: 360 | switchPublisherNames_2: 361 | switchPublisherNames_3: 362 | switchPublisherNames_4: 363 | switchPublisherNames_5: 364 | switchPublisherNames_6: 365 | switchPublisherNames_7: 366 | switchPublisherNames_8: 367 | switchPublisherNames_9: 368 | switchPublisherNames_10: 369 | switchPublisherNames_11: 370 | switchPublisherNames_12: 371 | switchPublisherNames_13: 372 | switchPublisherNames_14: 373 | switchIcons_0: {fileID: 0} 374 | switchIcons_1: {fileID: 0} 375 | switchIcons_2: {fileID: 0} 376 | switchIcons_3: {fileID: 0} 377 | switchIcons_4: {fileID: 0} 378 | switchIcons_5: {fileID: 0} 379 | switchIcons_6: {fileID: 0} 380 | switchIcons_7: {fileID: 0} 381 | switchIcons_8: {fileID: 0} 382 | switchIcons_9: {fileID: 0} 383 | switchIcons_10: {fileID: 0} 384 | switchIcons_11: {fileID: 0} 385 | switchIcons_12: {fileID: 0} 386 | switchIcons_13: {fileID: 0} 387 | switchIcons_14: {fileID: 0} 388 | switchSmallIcons_0: {fileID: 0} 389 | switchSmallIcons_1: {fileID: 0} 390 | switchSmallIcons_2: {fileID: 0} 391 | switchSmallIcons_3: {fileID: 0} 392 | switchSmallIcons_4: {fileID: 0} 393 | switchSmallIcons_5: {fileID: 0} 394 | switchSmallIcons_6: {fileID: 0} 395 | switchSmallIcons_7: {fileID: 0} 396 | switchSmallIcons_8: {fileID: 0} 397 | switchSmallIcons_9: {fileID: 0} 398 | switchSmallIcons_10: {fileID: 0} 399 | switchSmallIcons_11: {fileID: 0} 400 | switchSmallIcons_12: {fileID: 0} 401 | switchSmallIcons_13: {fileID: 0} 402 | switchSmallIcons_14: {fileID: 0} 403 | switchManualHTML: 404 | switchAccessibleURLs: 405 | switchLegalInformation: 406 | switchMainThreadStackSize: 1048576 407 | switchPresenceGroupId: 408 | switchLogoHandling: 0 409 | switchReleaseVersion: 0 410 | switchDisplayVersion: 1.0.0 411 | switchStartupUserAccount: 0 412 | switchTouchScreenUsage: 0 413 | switchSupportedLanguagesMask: 0 414 | switchLogoType: 0 415 | switchApplicationErrorCodeCategory: 416 | switchUserAccountSaveDataSize: 0 417 | switchUserAccountSaveDataJournalSize: 0 418 | switchApplicationAttribute: 0 419 | switchCardSpecSize: -1 420 | switchCardSpecClock: -1 421 | switchRatingsMask: 0 422 | switchRatingsInt_0: 0 423 | switchRatingsInt_1: 0 424 | switchRatingsInt_2: 0 425 | switchRatingsInt_3: 0 426 | switchRatingsInt_4: 0 427 | switchRatingsInt_5: 0 428 | switchRatingsInt_6: 0 429 | switchRatingsInt_7: 0 430 | switchRatingsInt_8: 0 431 | switchRatingsInt_9: 0 432 | switchRatingsInt_10: 0 433 | switchRatingsInt_11: 0 434 | switchLocalCommunicationIds_0: 435 | switchLocalCommunicationIds_1: 436 | switchLocalCommunicationIds_2: 437 | switchLocalCommunicationIds_3: 438 | switchLocalCommunicationIds_4: 439 | switchLocalCommunicationIds_5: 440 | switchLocalCommunicationIds_6: 441 | switchLocalCommunicationIds_7: 442 | switchParentalControl: 0 443 | switchAllowsScreenshot: 1 444 | switchAllowsVideoCapturing: 1 445 | switchAllowsRuntimeAddOnContentInstall: 0 446 | switchDataLossConfirmation: 0 447 | switchUserAccountLockEnabled: 0 448 | switchSystemResourceMemory: 16777216 449 | switchSupportedNpadStyles: 22 450 | switchNativeFsCacheSize: 32 451 | switchIsHoldTypeHorizontal: 0 452 | switchSupportedNpadCount: 8 453 | switchSocketConfigEnabled: 0 454 | switchTcpInitialSendBufferSize: 32 455 | switchTcpInitialReceiveBufferSize: 64 456 | switchTcpAutoSendBufferSizeMax: 256 457 | switchTcpAutoReceiveBufferSizeMax: 256 458 | switchUdpSendBufferSize: 9 459 | switchUdpReceiveBufferSize: 42 460 | switchSocketBufferEfficiency: 4 461 | switchSocketInitializeEnabled: 1 462 | switchNetworkInterfaceManagerInitializeEnabled: 1 463 | switchPlayerConnectionEnabled: 1 464 | ps4NPAgeRating: 12 465 | ps4NPTitleSecret: 466 | ps4NPTrophyPackPath: 467 | ps4ParentalLevel: 11 468 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 469 | ps4Category: 0 470 | ps4MasterVersion: 01.00 471 | ps4AppVersion: 01.00 472 | ps4AppType: 0 473 | ps4ParamSfxPath: 474 | ps4VideoOutPixelFormat: 0 475 | ps4VideoOutInitialWidth: 1920 476 | ps4VideoOutBaseModeInitialWidth: 1920 477 | ps4VideoOutReprojectionRate: 60 478 | ps4PronunciationXMLPath: 479 | ps4PronunciationSIGPath: 480 | ps4BackgroundImagePath: 481 | ps4StartupImagePath: 482 | ps4StartupImagesFolder: 483 | ps4IconImagesFolder: 484 | ps4SaveDataImagePath: 485 | ps4SdkOverride: 486 | ps4BGMPath: 487 | ps4ShareFilePath: 488 | ps4ShareOverlayImagePath: 489 | ps4PrivacyGuardImagePath: 490 | ps4NPtitleDatPath: 491 | ps4RemotePlayKeyAssignment: -1 492 | ps4RemotePlayKeyMappingDir: 493 | ps4PlayTogetherPlayerCount: 0 494 | ps4EnterButtonAssignment: 1 495 | ps4ApplicationParam1: 0 496 | ps4ApplicationParam2: 0 497 | ps4ApplicationParam3: 0 498 | ps4ApplicationParam4: 0 499 | ps4DownloadDataSize: 0 500 | ps4GarlicHeapSize: 2048 501 | ps4ProGarlicHeapSize: 2560 502 | playerPrefsMaxSize: 32768 503 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 504 | ps4pnSessions: 1 505 | ps4pnPresence: 1 506 | ps4pnFriends: 1 507 | ps4pnGameCustomData: 1 508 | playerPrefsSupport: 0 509 | enableApplicationExit: 0 510 | resetTempFolder: 1 511 | restrictedAudioUsageRights: 0 512 | ps4UseResolutionFallback: 0 513 | ps4ReprojectionSupport: 0 514 | ps4UseAudio3dBackend: 0 515 | ps4SocialScreenEnabled: 0 516 | ps4ScriptOptimizationLevel: 0 517 | ps4Audio3dVirtualSpeakerCount: 14 518 | ps4attribCpuUsage: 0 519 | ps4PatchPkgPath: 520 | ps4PatchLatestPkgPath: 521 | ps4PatchChangeinfoPath: 522 | ps4PatchDayOne: 0 523 | ps4attribUserManagement: 0 524 | ps4attribMoveSupport: 0 525 | ps4attrib3DSupport: 0 526 | ps4attribShareSupport: 0 527 | ps4attribExclusiveVR: 0 528 | ps4disableAutoHideSplash: 0 529 | ps4videoRecordingFeaturesUsed: 0 530 | ps4contentSearchFeaturesUsed: 0 531 | ps4attribEyeToEyeDistanceSettingVR: 0 532 | ps4IncludedModules: [] 533 | ps4attribVROutputEnabled: 0 534 | monoEnv: 535 | splashScreenBackgroundSourceLandscape: {fileID: 0} 536 | splashScreenBackgroundSourcePortrait: {fileID: 0} 537 | blurSplashScreenBackground: 1 538 | spritePackerPolicy: 539 | webGLMemorySize: 16 540 | webGLExceptionSupport: 1 541 | webGLNameFilesAsHashes: 0 542 | webGLDataCaching: 1 543 | webGLDebugSymbols: 0 544 | webGLEmscriptenArgs: 545 | webGLModulesDirectory: 546 | webGLTemplate: APPLICATION:Default 547 | webGLAnalyzeBuildSize: 0 548 | webGLUseEmbeddedResources: 0 549 | webGLCompressionFormat: 1 550 | webGLLinkerTarget: 1 551 | webGLThreadsSupport: 0 552 | webGLWasmStreaming: 0 553 | scriptingDefineSymbols: {} 554 | platformArchitecture: {} 555 | scriptingBackend: {} 556 | il2cppCompilerConfiguration: {} 557 | managedStrippingLevel: {} 558 | incrementalIl2cppBuild: {} 559 | allowUnsafeCode: 1 560 | additionalIl2CppArgs: 561 | scriptingRuntimeVersion: 1 562 | gcIncremental: 0 563 | gcWBarrierValidation: 0 564 | apiCompatibilityLevelPerPlatform: {} 565 | m_RenderingPath: 1 566 | m_MobileRenderingPath: 1 567 | metroPackageName: Template_2D 568 | metroPackageVersion: 569 | metroCertificatePath: 570 | metroCertificatePassword: 571 | metroCertificateSubject: 572 | metroCertificateIssuer: 573 | metroCertificateNotAfter: 0000000000000000 574 | metroApplicationDescription: Template_2D 575 | wsaImages: {} 576 | metroTileShortName: 577 | metroTileShowName: 0 578 | metroMediumTileShowName: 0 579 | metroLargeTileShowName: 0 580 | metroWideTileShowName: 0 581 | metroSupportStreamingInstall: 0 582 | metroLastRequiredScene: 0 583 | metroDefaultTileSize: 1 584 | metroTileForegroundText: 2 585 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 586 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 587 | a: 1} 588 | metroSplashScreenUseBackgroundColor: 0 589 | platformCapabilities: {} 590 | metroTargetDeviceFamilies: {} 591 | metroFTAName: 592 | metroFTAFileTypes: [] 593 | metroProtocolName: 594 | XboxOneProductId: 595 | XboxOneUpdateKey: 596 | XboxOneSandboxId: 597 | XboxOneContentId: 598 | XboxOneTitleId: 599 | XboxOneSCId: 600 | XboxOneGameOsOverridePath: 601 | XboxOnePackagingOverridePath: 602 | XboxOneAppManifestOverridePath: 603 | XboxOneVersion: 1.0.0.0 604 | XboxOnePackageEncryption: 0 605 | XboxOnePackageUpdateGranularity: 2 606 | XboxOneDescription: 607 | XboxOneLanguage: 608 | - enus 609 | XboxOneCapability: [] 610 | XboxOneGameRating: {} 611 | XboxOneIsContentPackage: 0 612 | XboxOneEnableGPUVariability: 1 613 | XboxOneSockets: {} 614 | XboxOneSplashScreen: {fileID: 0} 615 | XboxOneAllowedProductIds: [] 616 | XboxOnePersistentLocalStorageSize: 0 617 | XboxOneXTitleMemory: 8 618 | XboxOneOverrideIdentityName: 619 | vrEditorSettings: 620 | daydream: 621 | daydreamIconForeground: {fileID: 0} 622 | daydreamIconBackground: {fileID: 0} 623 | cloudServicesEnabled: 624 | UNet: 1 625 | luminIcon: 626 | m_Name: 627 | m_ModelFolderPath: 628 | m_PortalFolderPath: 629 | luminCert: 630 | m_CertPath: 631 | m_SignPackage: 1 632 | luminIsChannelApp: 0 633 | luminVersion: 634 | m_VersionCode: 1 635 | m_VersionName: 636 | apiCompatibilityLevel: 6 637 | cloudProjectId: 638 | framebufferDepthMemorylessMode: 0 639 | projectName: 640 | organizationId: 641 | cloudEnabled: 0 642 | enableNativePlatformBackendsForNewInputSystem: 0 643 | disableOldInputManagerSupport: 0 644 | legacyClampBlendShapeWeights: 0 645 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2022.3.5f1 2 | m_EditorVersionWithRevision: 2022.3.5f1 (9674261d40ee) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 3 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 16 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 16 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 0 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 0 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 16 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 0 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 0 108 | antiAliasing: 0 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 0 112 | billboardsFaceCameraPosition: 0 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 16 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 0 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 70 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 0 136 | antiAliasing: 0 137 | softParticles: 0 138 | softVegetation: 1 139 | realtimeReflectionProbes: 0 140 | billboardsFaceCameraPosition: 0 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 16 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 0 153 | shadowResolution: 0 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 0 164 | antiAliasing: 0 165 | softParticles: 0 166 | softVegetation: 1 167 | realtimeReflectionProbes: 0 168 | billboardsFaceCameraPosition: 0 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 16 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSM: 5 183 | PSP2: 2 184 | Stadia: 5 185 | Standalone: 5 186 | Tizen: 2 187 | WebGL: 3 188 | WiiU: 5 189 | Windows Store Apps: 5 190 | XboxOne: 5 191 | iPhone: 2 192 | tvOS: 2 193 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_RenderPipeSettingsPath: 8 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRPackageSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_Settings": [ 3 | "RemoveLegacyInputHelpersForReload" 4 | ] 5 | } -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NativeQuadtree 2 | A Quadtree Native Collection for Unity DOTS. Octree version is here: https://github.com/marijnz/NativeOctree 3 | 4 | ## Implementation 5 | - It's a DOTS native container, meaning it's handling its own unmanaged memory and can be passed into jobs! 6 | - It currently only supports the storing of points 7 | - The bulk insertion is using morton codes. This allows very fast bulk insertion but causes an increasing (minor) overhead with an increased depth 8 | 9 | ## Performance 10 | There's some very rudimentary performance tests included. With 20k elements on a 2k by 2k map, a max depth of 6 and 16 max elements per leaf. Burst enabled, ran on main thread on my 2015 MacBook Pro:
11 | 12 | - Job: Bulk insertion of all elements - Takes ~1ms 13 | - Job: 1k queries on a 200m by 200m range - Takes ~1ms 14 | 15 | With Burst disabled the tests are about 10x slower. 16 | 17 | ## Stability 18 | The only tests test for performance so there's no real test coverage. I'm sure there's edge cases that are not caught. I would highly recommend writing more tests if you're planning to use the code in production. 19 | 20 | ## Potential future work / missing features 21 | - Unit tests 22 | - Support for basic shapes 23 | - Other types of queries, such as raycasts 24 | - Support individual adding and removing of elements 25 | -------------------------------------------------------------------------------- /ScreenshotEditorViewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marijnz/NativeQuadtree/9fd3917878b20116cb7fdcbda306be4a08fcccab/ScreenshotEditorViewer.png -------------------------------------------------------------------------------- /UserSettings/EditorUserSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!162 &1 4 | EditorUserSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_ConfigSettings: 8 | Advanced: 9 | value: 183b144645154b6805011b0314355e1e15121c1d233a2a343e6b4773e4e1382be78d2b 10 | flags: 0 11 | Baking: 12 | value: 184c 13 | flags: 0 14 | Hierarchy Window: 15 | value: 183b144645154b7802000a2b17364d11021e17246e72662b47695d73a2a07478a2a503f9e33b2b39140deb394664416ebe60494bb64b4a4b514ebf2318f1191e04c835cc16c4160fce1a13c0c90ef3e6c1c1d1efd6c3eeddccdeb2f1fce9dbe8f1f0b1fe89b1ffccafbcbcebef939188ab8af7848c868987fa90fcd2a6dadfc6d4fb8cdad58ecbdeda82ae89b1a0a2b6b6a5ad829ab7acbb999f88b722e9ef31302b02fafcf8f6c0fdf92dc1577e9081666ea57176848889a09c6b89939c909b4b9597b9478f99935297579b23152032310538053a14052c1b292c1e1d2d61310227297f07797d2d2d3b134a454e794d6c4f214e3d2a4d44333040233e46545c62531d511e0c19065a726d494e636263696655666b32303b260f24343fed2220e23338e3c734fd38e5dde518f54165b0a7a7a85a5c584a7a4d49bd538280545880e20ecacb0f1b192cecc11de91be531ddeeecf8f0e4f8d8f4efcfedf99daab3f7a4f4b6ffe495bcebb9bceeedbdf18194b2a2cbb6c8c2bc8dba81c0d7d88c8295c597ce8fe29ce0cacfc3fb92 16 | flags: 0 17 | Inspector: 18 | value: 183b144645154b7f041d1c2e113a7c1f1b0717242926320434391871b8a03239eef43383fa 19 | flags: 0 20 | Journaling: 21 | value: 184c 22 | flags: 0 23 | Systems Window: 24 | value: 183b144645154b7802000a2b17364d11021e17246e72662b47695d73a2a07478a2a505e1e82d6f2f100cca3210371526d1051c05e22a040f2507f00b32f01c061ccb5a9f5ace1e10d81c50a48d5d91a3959694aa9ad8efd7c9f2afe0f1c0fcfdf6f8b6f2a5a6dacfb89debbfa1cbc9c3f5c3bac18e9c89c1bbdec2d6f2b992939996c59699c79ae8d182b7baad82aba0b0aea88398abdbf1dd8a8ea765ffc520262728fafcf8f6c28eb162945c71898d6167877a72a980809c9f71cecece859d579fd5f106dbdadb21de0dde237c686c76706641634c764f547c624a7e622d6628286620686f653d2b635a0204003e0805017509093043470e3643041c5d5b415c54450e1c424b420f6e4b634e636263696655641a1f273c0f083c1102ec362de62318e9ea25ab61ade8ed0ee30655b0b6b7b8176615 25 | flags: 0 26 | vcSharedLogLevel: 27 | value: 0d5e400f0650 28 | flags: 0 29 | m_VCAutomaticAdd: 1 30 | m_VCDebugCom: 0 31 | m_VCDebugCmd: 0 32 | m_VCDebugOut: 0 33 | m_SemanticMergeMode: 2 34 | m_DesiredImportWorkerCount: 3 35 | m_StandbyImportWorkerCount: 2 36 | m_IdleImportWorkerShutdownDelay: 60000 37 | m_VCShowFailedCheckout: 1 38 | m_VCOverwriteFailedCheckoutAssets: 1 39 | m_VCProjectOverlayIcons: 1 40 | m_VCHierarchyOverlayIcons: 1 41 | m_VCOtherOverlayIcons: 1 42 | m_VCAllowAsyncUpdate: 1 43 | m_ArtifactGarbageCollection: 1 44 | -------------------------------------------------------------------------------- /UserSettings/Layouts/default-2022.dwlt: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 52 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_PixelRect: 16 | serializedVersion: 2 17 | x: 0 18 | y: 83 19 | width: 1920 20 | height: 997 21 | m_ShowMode: 4 22 | m_Title: Project 23 | m_RootView: {fileID: 2} 24 | m_MinSize: {x: 875, y: 300} 25 | m_MaxSize: {x: 10000, y: 10000} 26 | m_Maximized: 1 27 | --- !u!114 &2 28 | MonoBehaviour: 29 | m_ObjectHideFlags: 52 30 | m_CorrespondingSourceObject: {fileID: 0} 31 | m_PrefabInstance: {fileID: 0} 32 | m_PrefabAsset: {fileID: 0} 33 | m_GameObject: {fileID: 0} 34 | m_Enabled: 1 35 | m_EditorHideFlags: 1 36 | m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} 37 | m_Name: 38 | m_EditorClassIdentifier: 39 | m_Children: 40 | - {fileID: 3} 41 | - {fileID: 5} 42 | - {fileID: 4} 43 | m_Position: 44 | serializedVersion: 2 45 | x: 0 46 | y: 0 47 | width: 1920 48 | height: 997 49 | m_MinSize: {x: 875, y: 300} 50 | m_MaxSize: {x: 10000, y: 10000} 51 | m_UseTopView: 1 52 | m_TopViewHeight: 30 53 | m_UseBottomView: 1 54 | m_BottomViewHeight: 20 55 | --- !u!114 &3 56 | MonoBehaviour: 57 | m_ObjectHideFlags: 52 58 | m_CorrespondingSourceObject: {fileID: 0} 59 | m_PrefabInstance: {fileID: 0} 60 | m_PrefabAsset: {fileID: 0} 61 | m_GameObject: {fileID: 0} 62 | m_Enabled: 1 63 | m_EditorHideFlags: 1 64 | m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} 65 | m_Name: 66 | m_EditorClassIdentifier: 67 | m_Children: [] 68 | m_Position: 69 | serializedVersion: 2 70 | x: 0 71 | y: 0 72 | width: 1920 73 | height: 30 74 | m_MinSize: {x: 0, y: 0} 75 | m_MaxSize: {x: 0, y: 0} 76 | m_LastLoadedLayoutName: 77 | --- !u!114 &4 78 | MonoBehaviour: 79 | m_ObjectHideFlags: 52 80 | m_CorrespondingSourceObject: {fileID: 0} 81 | m_PrefabInstance: {fileID: 0} 82 | m_PrefabAsset: {fileID: 0} 83 | m_GameObject: {fileID: 0} 84 | m_Enabled: 1 85 | m_EditorHideFlags: 1 86 | m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} 87 | m_Name: 88 | m_EditorClassIdentifier: 89 | m_Children: [] 90 | m_Position: 91 | serializedVersion: 2 92 | x: 0 93 | y: 977 94 | width: 1920 95 | height: 20 96 | m_MinSize: {x: 0, y: 0} 97 | m_MaxSize: {x: 0, y: 0} 98 | --- !u!114 &5 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 52 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} 108 | m_Name: 109 | m_EditorClassIdentifier: 110 | m_Children: 111 | - {fileID: 6} 112 | m_Position: 113 | serializedVersion: 2 114 | x: 0 115 | y: 30 116 | width: 1920 117 | height: 947 118 | m_MinSize: {x: 300, y: 150} 119 | m_MaxSize: {x: 24288, y: 16192} 120 | vertical: 1 121 | controlID: 1817 122 | --- !u!114 &6 123 | MonoBehaviour: 124 | m_ObjectHideFlags: 52 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | m_GameObject: {fileID: 0} 129 | m_Enabled: 1 130 | m_EditorHideFlags: 1 131 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} 132 | m_Name: 133 | m_EditorClassIdentifier: 134 | m_Children: 135 | - {fileID: 7} 136 | - {fileID: 12} 137 | m_Position: 138 | serializedVersion: 2 139 | x: 0 140 | y: 0 141 | width: 1920 142 | height: 947 143 | m_MinSize: {x: 300, y: 150} 144 | m_MaxSize: {x: 24288, y: 16192} 145 | vertical: 0 146 | controlID: 1818 147 | --- !u!114 &7 148 | MonoBehaviour: 149 | m_ObjectHideFlags: 52 150 | m_CorrespondingSourceObject: {fileID: 0} 151 | m_PrefabInstance: {fileID: 0} 152 | m_PrefabAsset: {fileID: 0} 153 | m_GameObject: {fileID: 0} 154 | m_Enabled: 1 155 | m_EditorHideFlags: 1 156 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} 157 | m_Name: 158 | m_EditorClassIdentifier: 159 | m_Children: 160 | - {fileID: 8} 161 | - {fileID: 11} 162 | m_Position: 163 | serializedVersion: 2 164 | x: 0 165 | y: 0 166 | width: 1254 167 | height: 947 168 | m_MinSize: {x: 200, y: 150} 169 | m_MaxSize: {x: 16192, y: 16192} 170 | vertical: 1 171 | controlID: 1772 172 | --- !u!114 &8 173 | MonoBehaviour: 174 | m_ObjectHideFlags: 52 175 | m_CorrespondingSourceObject: {fileID: 0} 176 | m_PrefabInstance: {fileID: 0} 177 | m_PrefabAsset: {fileID: 0} 178 | m_GameObject: {fileID: 0} 179 | m_Enabled: 1 180 | m_EditorHideFlags: 1 181 | m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} 182 | m_Name: 183 | m_EditorClassIdentifier: 184 | m_Children: 185 | - {fileID: 9} 186 | - {fileID: 10} 187 | m_Position: 188 | serializedVersion: 2 189 | x: 0 190 | y: 0 191 | width: 1254 192 | height: 568 193 | m_MinSize: {x: 200, y: 100} 194 | m_MaxSize: {x: 16192, y: 8096} 195 | vertical: 0 196 | controlID: 1773 197 | --- !u!114 &9 198 | MonoBehaviour: 199 | m_ObjectHideFlags: 52 200 | m_CorrespondingSourceObject: {fileID: 0} 201 | m_PrefabInstance: {fileID: 0} 202 | m_PrefabAsset: {fileID: 0} 203 | m_GameObject: {fileID: 0} 204 | m_Enabled: 1 205 | m_EditorHideFlags: 1 206 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 207 | m_Name: SceneHierarchyWindow 208 | m_EditorClassIdentifier: 209 | m_Children: [] 210 | m_Position: 211 | serializedVersion: 2 212 | x: 0 213 | y: 0 214 | width: 249 215 | height: 568 216 | m_MinSize: {x: 201, y: 221} 217 | m_MaxSize: {x: 4001, y: 4021} 218 | m_ActualView: {fileID: 14} 219 | m_Panes: 220 | - {fileID: 14} 221 | - {fileID: 15} 222 | - {fileID: 16} 223 | m_Selected: 0 224 | m_LastSelected: 1 225 | --- !u!114 &10 226 | MonoBehaviour: 227 | m_ObjectHideFlags: 52 228 | m_CorrespondingSourceObject: {fileID: 0} 229 | m_PrefabInstance: {fileID: 0} 230 | m_PrefabAsset: {fileID: 0} 231 | m_GameObject: {fileID: 0} 232 | m_Enabled: 1 233 | m_EditorHideFlags: 1 234 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 235 | m_Name: SceneView 236 | m_EditorClassIdentifier: 237 | m_Children: [] 238 | m_Position: 239 | serializedVersion: 2 240 | x: 249 241 | y: 0 242 | width: 1005 243 | height: 568 244 | m_MinSize: {x: 202, y: 221} 245 | m_MaxSize: {x: 4002, y: 4021} 246 | m_ActualView: {fileID: 17} 247 | m_Panes: 248 | - {fileID: 17} 249 | - {fileID: 13} 250 | m_Selected: 0 251 | m_LastSelected: 1 252 | --- !u!114 &11 253 | MonoBehaviour: 254 | m_ObjectHideFlags: 52 255 | m_CorrespondingSourceObject: {fileID: 0} 256 | m_PrefabInstance: {fileID: 0} 257 | m_PrefabAsset: {fileID: 0} 258 | m_GameObject: {fileID: 0} 259 | m_Enabled: 1 260 | m_EditorHideFlags: 1 261 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 262 | m_Name: ProjectBrowser 263 | m_EditorClassIdentifier: 264 | m_Children: [] 265 | m_Position: 266 | serializedVersion: 2 267 | x: 0 268 | y: 568 269 | width: 1254 270 | height: 379 271 | m_MinSize: {x: 231, y: 271} 272 | m_MaxSize: {x: 10001, y: 10021} 273 | m_ActualView: {fileID: 18} 274 | m_Panes: 275 | - {fileID: 18} 276 | - {fileID: 19} 277 | - {fileID: 20} 278 | m_Selected: 0 279 | m_LastSelected: 1 280 | --- !u!114 &12 281 | MonoBehaviour: 282 | m_ObjectHideFlags: 52 283 | m_CorrespondingSourceObject: {fileID: 0} 284 | m_PrefabInstance: {fileID: 0} 285 | m_PrefabAsset: {fileID: 0} 286 | m_GameObject: {fileID: 0} 287 | m_Enabled: 1 288 | m_EditorHideFlags: 1 289 | m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} 290 | m_Name: AnimatorControllerTool 291 | m_EditorClassIdentifier: 292 | m_Children: [] 293 | m_Position: 294 | serializedVersion: 2 295 | x: 1254 296 | y: 0 297 | width: 666 298 | height: 947 299 | m_MinSize: {x: 101, y: 121} 300 | m_MaxSize: {x: 4001, y: 4021} 301 | m_ActualView: {fileID: 22} 302 | m_Panes: 303 | - {fileID: 21} 304 | - {fileID: 22} 305 | - {fileID: 23} 306 | - {fileID: 24} 307 | m_Selected: 1 308 | m_LastSelected: 4 309 | --- !u!114 &13 310 | MonoBehaviour: 311 | m_ObjectHideFlags: 52 312 | m_CorrespondingSourceObject: {fileID: 0} 313 | m_PrefabInstance: {fileID: 0} 314 | m_PrefabAsset: {fileID: 0} 315 | m_GameObject: {fileID: 0} 316 | m_Enabled: 1 317 | m_EditorHideFlags: 1 318 | m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} 319 | m_Name: 320 | m_EditorClassIdentifier: 321 | m_MinSize: {x: 200, y: 200} 322 | m_MaxSize: {x: 4000, y: 4000} 323 | m_TitleContent: 324 | m_Text: Game 325 | m_Image: {fileID: -6423792434712278376, guid: 0000000000000000d000000000000000, 326 | type: 0} 327 | m_Tooltip: 328 | m_Pos: 329 | serializedVersion: 2 330 | x: 249 331 | y: 113 332 | width: 1003 333 | height: 763 334 | m_SerializedDataModeController: 335 | m_DataMode: 0 336 | m_PreferredDataMode: 0 337 | m_SupportedDataModes: 338 | isAutomatic: 1 339 | m_ViewDataDictionary: {fileID: 0} 340 | m_OverlayCanvas: 341 | m_LastAppliedPresetName: Default 342 | m_SaveData: [] 343 | m_OverlaysVisible: 1 344 | m_SerializedViewNames: [] 345 | m_SerializedViewValues: [] 346 | m_PlayModeViewName: GameView 347 | m_ShowGizmos: 0 348 | m_TargetDisplay: 0 349 | m_ClearColor: {r: 0, g: 0, b: 0, a: 0} 350 | m_TargetSize: {x: 1024, y: 1174} 351 | m_TextureFilterMode: 0 352 | m_TextureHideFlags: 61 353 | m_RenderIMGUI: 1 354 | m_EnterPlayModeBehavior: 0 355 | m_UseMipMap: 0 356 | m_VSyncEnabled: 0 357 | m_Gizmos: 0 358 | m_Stats: 0 359 | m_SelectedSizes: 12000000000000000000000000000000000000000000000000000000000000000000000000000000 360 | m_ZoomArea: 361 | m_HRangeLocked: 0 362 | m_VRangeLocked: 0 363 | hZoomLockedByDefault: 0 364 | vZoomLockedByDefault: 0 365 | m_HBaseRangeMin: -512 366 | m_HBaseRangeMax: 512 367 | m_VBaseRangeMin: -587 368 | m_VBaseRangeMax: 587 369 | m_HAllowExceedBaseRangeMin: 1 370 | m_HAllowExceedBaseRangeMax: 1 371 | m_VAllowExceedBaseRangeMin: 1 372 | m_VAllowExceedBaseRangeMax: 1 373 | m_ScaleWithWindow: 0 374 | m_HSlider: 0 375 | m_VSlider: 0 376 | m_IgnoreScrollWheelUntilClicked: 0 377 | m_EnableMouseInput: 0 378 | m_EnableSliderZoomHorizontal: 0 379 | m_EnableSliderZoomVertical: 0 380 | m_UniformScale: 1 381 | m_UpDirection: 1 382 | m_DrawArea: 383 | serializedVersion: 2 384 | x: 0 385 | y: 21 386 | width: 1003 387 | height: 742 388 | m_Scale: {x: 0.63202727, y: 0.63202727} 389 | m_Translation: {x: 501.49997, y: 371} 390 | m_MarginLeft: 0 391 | m_MarginRight: 0 392 | m_MarginTop: 0 393 | m_MarginBottom: 0 394 | m_LastShownAreaInsideMargins: 395 | serializedVersion: 2 396 | x: -793.4784 397 | y: -587 398 | width: 1586.9568 399 | height: 1174 400 | m_MinimalGUI: 1 401 | m_defaultScale: 0.63202727 402 | m_LastWindowPixelSize: {x: 1003, y: 763} 403 | m_ClearInEditMode: 1 404 | m_NoCameraWarning: 1 405 | m_LowResolutionForAspectRatios: 01000001000000000000 406 | m_XRRenderMode: 0 407 | m_RenderTexture: {fileID: 0} 408 | --- !u!114 &14 409 | MonoBehaviour: 410 | m_ObjectHideFlags: 52 411 | m_CorrespondingSourceObject: {fileID: 0} 412 | m_PrefabInstance: {fileID: 0} 413 | m_PrefabAsset: {fileID: 0} 414 | m_GameObject: {fileID: 0} 415 | m_Enabled: 1 416 | m_EditorHideFlags: 1 417 | m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} 418 | m_Name: 419 | m_EditorClassIdentifier: 420 | m_MinSize: {x: 200, y: 200} 421 | m_MaxSize: {x: 4000, y: 4000} 422 | m_TitleContent: 423 | m_Text: Hierarchy 424 | m_Image: {fileID: 7966133145522015247, guid: 0000000000000000d000000000000000, 425 | type: 0} 426 | m_Tooltip: 427 | m_Pos: 428 | serializedVersion: 2 429 | x: 0 430 | y: 113 431 | width: 248 432 | height: 547 433 | m_SerializedDataModeController: 434 | m_DataMode: 0 435 | m_PreferredDataMode: 0 436 | m_SupportedDataModes: 437 | isAutomatic: 1 438 | m_ViewDataDictionary: {fileID: 0} 439 | m_OverlayCanvas: 440 | m_LastAppliedPresetName: Default 441 | m_SaveData: [] 442 | m_OverlaysVisible: 1 443 | m_SceneHierarchy: 444 | m_TreeViewState: 445 | scrollPos: {x: 0, y: 0} 446 | m_SelectedIDs: 62abfeff 447 | m_LastClickedID: 0 448 | m_ExpandedIDs: e4aefeff 449 | m_RenameOverlay: 450 | m_UserAcceptedRename: 0 451 | m_Name: 452 | m_OriginalName: 453 | m_EditFieldRect: 454 | serializedVersion: 2 455 | x: 0 456 | y: 0 457 | width: 0 458 | height: 0 459 | m_UserData: 0 460 | m_IsWaitingForDelay: 0 461 | m_IsRenaming: 0 462 | m_OriginalEventType: 11 463 | m_IsRenamingFilename: 0 464 | m_ClientGUIView: {fileID: 9} 465 | m_SearchString: 466 | m_ExpandedScenes: [] 467 | m_CurrenRootInstanceID: 0 468 | m_LockTracker: 469 | m_IsLocked: 0 470 | m_CurrentSortingName: TransformSorting 471 | m_WindowGUID: a13b011d96202544aa6dcff9d867f7dd 472 | --- !u!114 &15 473 | MonoBehaviour: 474 | m_ObjectHideFlags: 52 475 | m_CorrespondingSourceObject: {fileID: 0} 476 | m_PrefabInstance: {fileID: 0} 477 | m_PrefabAsset: {fileID: 0} 478 | m_GameObject: {fileID: 0} 479 | m_Enabled: 1 480 | m_EditorHideFlags: 0 481 | m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} 482 | m_Name: 483 | m_EditorClassIdentifier: 484 | m_MinSize: {x: 230, y: 250} 485 | m_MaxSize: {x: 10000, y: 10000} 486 | m_TitleContent: 487 | m_Text: Project 488 | m_Image: {fileID: -5467254957812901981, guid: 0000000000000000d000000000000000, 489 | type: 0} 490 | m_Tooltip: 491 | m_Pos: 492 | serializedVersion: 2 493 | x: 0 494 | y: 113 495 | width: 349 496 | height: 695 497 | m_SerializedDataModeController: 498 | m_DataMode: 0 499 | m_PreferredDataMode: 0 500 | m_SupportedDataModes: 501 | isAutomatic: 1 502 | m_ViewDataDictionary: {fileID: 0} 503 | m_OverlayCanvas: 504 | m_LastAppliedPresetName: Default 505 | m_SaveData: [] 506 | m_OverlaysVisible: 1 507 | m_SearchFilter: 508 | m_NameFilter: 509 | m_ClassNames: [] 510 | m_AssetLabels: [] 511 | m_AssetBundleNames: [] 512 | m_ReferencingInstanceIDs: 513 | m_SceneHandles: 514 | m_ShowAllHits: 0 515 | m_SkipHidden: 0 516 | m_SearchArea: 1 517 | m_Folders: 518 | - Assets 519 | m_Globs: [] 520 | m_OriginalText: 521 | m_ImportLogFlags: 0 522 | m_FilterByTypeIntersection: 0 523 | m_ViewMode: 1 524 | m_StartGridSize: 16 525 | m_LastFolders: 526 | - Assets/Sprites/Enemies 527 | m_LastFoldersGridSize: -1 528 | m_LastProjectPath: C:\source\calbomba 529 | m_LockTracker: 530 | m_IsLocked: 1 531 | m_FolderTreeState: 532 | scrollPos: {x: 0, y: 0} 533 | m_SelectedIDs: 00650000 534 | m_LastClickedID: 25856 535 | m_ExpandedIDs: 0000000000ca9a3bffffff7f 536 | m_RenameOverlay: 537 | m_UserAcceptedRename: 0 538 | m_Name: 539 | m_OriginalName: 540 | m_EditFieldRect: 541 | serializedVersion: 2 542 | x: 0 543 | y: 0 544 | width: 0 545 | height: 0 546 | m_UserData: 0 547 | m_IsWaitingForDelay: 0 548 | m_IsRenaming: 0 549 | m_OriginalEventType: 11 550 | m_IsRenamingFilename: 1 551 | m_ClientGUIView: {fileID: 0} 552 | m_SearchString: 553 | m_CreateAssetUtility: 554 | m_EndAction: {fileID: 0} 555 | m_InstanceID: 0 556 | m_Path: 557 | m_Icon: {fileID: 0} 558 | m_ResourceFile: 559 | m_AssetTreeState: 560 | scrollPos: {x: 0, y: 0} 561 | m_SelectedIDs: 562 | m_LastClickedID: 0 563 | m_ExpandedIDs: 0000000000ca9a3bffffff7f 564 | m_RenameOverlay: 565 | m_UserAcceptedRename: 0 566 | m_Name: 567 | m_OriginalName: 568 | m_EditFieldRect: 569 | serializedVersion: 2 570 | x: 0 571 | y: 0 572 | width: 0 573 | height: 0 574 | m_UserData: 0 575 | m_IsWaitingForDelay: 0 576 | m_IsRenaming: 0 577 | m_OriginalEventType: 11 578 | m_IsRenamingFilename: 1 579 | m_ClientGUIView: {fileID: 0} 580 | m_SearchString: 581 | m_CreateAssetUtility: 582 | m_EndAction: {fileID: 0} 583 | m_InstanceID: 0 584 | m_Path: 585 | m_Icon: {fileID: 0} 586 | m_ResourceFile: 587 | m_ListAreaState: 588 | m_SelectedInstanceIDs: a86ffeff 589 | m_LastClickedInstanceID: -102488 590 | m_HadKeyboardFocusLastEvent: 0 591 | m_ExpandedInstanceIDs: 64610000f266000078ed0e0070ed0e00 592 | m_RenameOverlay: 593 | m_UserAcceptedRename: 0 594 | m_Name: 595 | m_OriginalName: 596 | m_EditFieldRect: 597 | serializedVersion: 2 598 | x: 0 599 | y: 0 600 | width: 0 601 | height: 0 602 | m_UserData: 0 603 | m_IsWaitingForDelay: 0 604 | m_IsRenaming: 0 605 | m_OriginalEventType: 11 606 | m_IsRenamingFilename: 1 607 | m_ClientGUIView: {fileID: 0} 608 | m_CreateAssetUtility: 609 | m_EndAction: {fileID: 0} 610 | m_InstanceID: 0 611 | m_Path: 612 | m_Icon: {fileID: 0} 613 | m_ResourceFile: 614 | m_NewAssetIndexInList: -1 615 | m_ScrollPosition: {x: 0, y: 0} 616 | m_GridSize: 16 617 | m_SkipHiddenPackages: 0 618 | m_DirectoriesAreaWidth: 200 619 | --- !u!114 &16 620 | MonoBehaviour: 621 | m_ObjectHideFlags: 52 622 | m_CorrespondingSourceObject: {fileID: 0} 623 | m_PrefabInstance: {fileID: 0} 624 | m_PrefabAsset: {fileID: 0} 625 | m_GameObject: {fileID: 0} 626 | m_Enabled: 1 627 | m_EditorHideFlags: 0 628 | m_Script: {fileID: 12373, guid: 0000000000000000e000000000000000, type: 0} 629 | m_Name: 630 | m_EditorClassIdentifier: 631 | m_MinSize: {x: 100, y: 100} 632 | m_MaxSize: {x: 4000, y: 4000} 633 | m_TitleContent: 634 | m_Text: Audio Mixer 635 | m_Image: {fileID: 2344599766593239149, guid: 0000000000000000d000000000000000, 636 | type: 0} 637 | m_Tooltip: 638 | m_Pos: 639 | serializedVersion: 2 640 | x: 0 641 | y: 113 642 | width: 601 643 | height: 597 644 | m_SerializedDataModeController: 645 | m_DataMode: 0 646 | m_PreferredDataMode: 0 647 | m_SupportedDataModes: 648 | isAutomatic: 1 649 | m_ViewDataDictionary: {fileID: 0} 650 | m_OverlayCanvas: 651 | m_LastAppliedPresetName: Default 652 | m_SaveData: [] 653 | m_OverlaysVisible: 1 654 | m_MixersTreeState: 655 | scrollPos: {x: 0, y: 0} 656 | m_SelectedIDs: 657 | m_LastClickedID: -568056 658 | m_ExpandedIDs: 12eb343c 659 | m_RenameOverlay: 660 | m_UserAcceptedRename: 0 661 | m_Name: 662 | m_OriginalName: 663 | m_EditFieldRect: 664 | serializedVersion: 2 665 | x: 0 666 | y: 0 667 | width: 0 668 | height: 0 669 | m_UserData: 0 670 | m_IsWaitingForDelay: 0 671 | m_IsRenaming: 0 672 | m_OriginalEventType: 11 673 | m_IsRenamingFilename: 0 674 | m_ClientGUIView: {fileID: 9} 675 | m_SearchString: 676 | m_CreateAssetUtility: 677 | m_EndAction: {fileID: 0} 678 | m_InstanceID: 0 679 | m_Path: 680 | m_Icon: {fileID: 0} 681 | m_ResourceFile: 682 | m_LayoutStripsOnTop: 683 | m_VerticalSplitter: 684 | ID: 0 685 | splitterInitialOffset: 0 686 | currentActiveSplitter: -1 687 | realSizes: 688 | - 65 689 | - 35 690 | relativeSizes: 691 | - 0.65 692 | - 0.35000002 693 | minSizes: 694 | - 85 695 | - 105 696 | maxSizes: 697 | - 0 698 | - 0 699 | lastTotalSize: 0 700 | splitSize: 6 701 | xOffset: 0 702 | m_Version: 1 703 | oldRealSizes: 704 | oldMinSizes: 705 | oldMaxSizes: 706 | oldSplitSize: 0 707 | m_HorizontalSplitter: 708 | ID: 0 709 | splitterInitialOffset: 0 710 | currentActiveSplitter: -1 711 | realSizes: 712 | - 60 713 | - 60 714 | - 60 715 | - 60 716 | relativeSizes: 717 | - 0.25 718 | - 0.25 719 | - 0.25 720 | - 0.25 721 | minSizes: 722 | - 85 723 | - 85 724 | - 85 725 | - 85 726 | maxSizes: 727 | - 0 728 | - 0 729 | - 0 730 | - 0 731 | lastTotalSize: 0 732 | splitSize: 6 733 | xOffset: 0 734 | m_Version: 1 735 | oldRealSizes: 736 | oldMinSizes: 737 | oldMaxSizes: 738 | oldSplitSize: 0 739 | m_LayoutStripsOnRight: 740 | m_VerticalSplitter: 741 | ID: 0 742 | splitterInitialOffset: 0 743 | currentActiveSplitter: -1 744 | realSizes: 745 | - 60 746 | - 60 747 | - 60 748 | - 60 749 | relativeSizes: 750 | - 0.25 751 | - 0.25 752 | - 0.25 753 | - 0.25 754 | minSizes: 755 | - 100 756 | - 85 757 | - 85 758 | - 85 759 | maxSizes: 760 | - 0 761 | - 0 762 | - 0 763 | - 0 764 | lastTotalSize: 0 765 | splitSize: 6 766 | xOffset: 0 767 | m_Version: 1 768 | oldRealSizes: 769 | oldMinSizes: 770 | oldMaxSizes: 771 | oldSplitSize: 0 772 | m_HorizontalSplitter: 773 | ID: 70277 774 | splitterInitialOffset: 0 775 | currentActiveSplitter: -1 776 | realSizes: 777 | - 180 778 | - 421 779 | relativeSizes: 780 | - 0.3 781 | - 0.7 782 | minSizes: 783 | - 160 784 | - 160 785 | maxSizes: 786 | - 0 787 | - 0 788 | lastTotalSize: 601 789 | splitSize: 6 790 | xOffset: 0 791 | m_Version: 1 792 | oldRealSizes: 793 | oldMinSizes: 794 | oldMaxSizes: 795 | oldSplitSize: 0 796 | m_SectionOrder: 00000000030000000100000002000000 797 | m_LayoutMode: 1 798 | m_SortGroupsAlphabetically: 0 799 | m_ShowReferencedBuses: 1 800 | m_ShowBusConnections: 0 801 | m_ShowBusConnectionsOfSelection: 0 802 | --- !u!114 &17 803 | MonoBehaviour: 804 | m_ObjectHideFlags: 52 805 | m_CorrespondingSourceObject: {fileID: 0} 806 | m_PrefabInstance: {fileID: 0} 807 | m_PrefabAsset: {fileID: 0} 808 | m_GameObject: {fileID: 0} 809 | m_Enabled: 1 810 | m_EditorHideFlags: 1 811 | m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} 812 | m_Name: 813 | m_EditorClassIdentifier: 814 | m_MinSize: {x: 200, y: 200} 815 | m_MaxSize: {x: 4000, y: 4000} 816 | m_TitleContent: 817 | m_Text: Scene 818 | m_Image: {fileID: 2593428753322112591, guid: 0000000000000000d000000000000000, 819 | type: 0} 820 | m_Tooltip: 821 | m_Pos: 822 | serializedVersion: 2 823 | x: 249 824 | y: 113 825 | width: 1003 826 | height: 547 827 | m_SerializedDataModeController: 828 | m_DataMode: 0 829 | m_PreferredDataMode: 0 830 | m_SupportedDataModes: 831 | isAutomatic: 1 832 | m_ViewDataDictionary: {fileID: 0} 833 | m_OverlayCanvas: 834 | m_LastAppliedPresetName: Default 835 | m_SaveData: 836 | - dockPosition: 0 837 | containerId: overlay-toolbar__top 838 | floating: 0 839 | collapsed: 0 840 | displayed: 1 841 | snapOffset: {x: -171, y: -26} 842 | snapOffsetDelta: {x: 0, y: 0} 843 | snapCorner: 3 844 | id: Tool Settings 845 | index: 0 846 | layout: 1 847 | size: {x: 0, y: 0} 848 | sizeOverriden: 0 849 | - dockPosition: 0 850 | containerId: overlay-toolbar__top 851 | floating: 0 852 | collapsed: 0 853 | displayed: 1 854 | snapOffset: {x: -141, y: 149} 855 | snapOffsetDelta: {x: 0, y: 0} 856 | snapCorner: 1 857 | id: unity-grid-and-snap-toolbar 858 | index: 1 859 | layout: 1 860 | size: {x: 0, y: 0} 861 | sizeOverriden: 0 862 | - dockPosition: 1 863 | containerId: overlay-toolbar__top 864 | floating: 0 865 | collapsed: 0 866 | displayed: 1 867 | snapOffset: {x: 24, y: 25} 868 | snapOffsetDelta: {x: 0, y: 0} 869 | snapCorner: 0 870 | id: unity-scene-view-toolbar 871 | index: 0 872 | layout: 1 873 | size: {x: 0, y: 0} 874 | sizeOverriden: 0 875 | - dockPosition: 1 876 | containerId: overlay-toolbar__top 877 | floating: 0 878 | collapsed: 0 879 | displayed: 0 880 | snapOffset: {x: 0, y: 0} 881 | snapOffsetDelta: {x: 0, y: 0} 882 | snapCorner: 1 883 | id: unity-search-toolbar 884 | index: 1 885 | layout: 1 886 | size: {x: 0, y: 0} 887 | sizeOverriden: 0 888 | - dockPosition: 0 889 | containerId: overlay-container--left 890 | floating: 0 891 | collapsed: 0 892 | displayed: 1 893 | snapOffset: {x: 24, y: 25} 894 | snapOffsetDelta: {x: 0, y: 0} 895 | snapCorner: 0 896 | id: unity-transform-toolbar 897 | index: 0 898 | layout: 2 899 | size: {x: 0, y: 0} 900 | sizeOverriden: 0 901 | - dockPosition: 0 902 | containerId: overlay-container--left 903 | floating: 0 904 | collapsed: 0 905 | displayed: 1 906 | snapOffset: {x: 0, y: 197} 907 | snapOffsetDelta: {x: 0, y: 0} 908 | snapCorner: 0 909 | id: unity-component-tools 910 | index: 1 911 | layout: 2 912 | size: {x: 0, y: 0} 913 | sizeOverriden: 0 914 | - dockPosition: 0 915 | containerId: overlay-container--right 916 | floating: 0 917 | collapsed: 0 918 | displayed: 1 919 | snapOffset: {x: 67.5, y: 86} 920 | snapOffsetDelta: {x: 0, y: 0} 921 | snapCorner: 0 922 | id: Orientation 923 | index: 0 924 | layout: 4 925 | size: {x: 0, y: 0} 926 | sizeOverriden: 0 927 | - dockPosition: 1 928 | containerId: overlay-container--right 929 | floating: 0 930 | collapsed: 0 931 | displayed: 0 932 | snapOffset: {x: 0, y: 0} 933 | snapOffsetDelta: {x: 0, y: 0} 934 | snapCorner: 0 935 | id: Scene View/Light Settings 936 | index: 0 937 | layout: 4 938 | size: {x: 0, y: 0} 939 | sizeOverriden: 0 940 | - dockPosition: 1 941 | containerId: overlay-container--right 942 | floating: 0 943 | collapsed: 0 944 | displayed: 0 945 | snapOffset: {x: 0, y: 0} 946 | snapOffsetDelta: {x: 0, y: 0} 947 | snapCorner: 0 948 | id: Scene View/Camera 949 | index: 1 950 | layout: 4 951 | size: {x: 0, y: 0} 952 | sizeOverriden: 0 953 | - dockPosition: 1 954 | containerId: overlay-container--right 955 | floating: 0 956 | collapsed: 0 957 | displayed: 0 958 | snapOffset: {x: 0, y: 0} 959 | snapOffsetDelta: {x: 0, y: 0} 960 | snapCorner: 0 961 | id: Scene View/Cloth Constraints 962 | index: 1 963 | layout: 4 964 | size: {x: 0, y: 0} 965 | sizeOverriden: 0 966 | - dockPosition: 1 967 | containerId: overlay-container--right 968 | floating: 0 969 | collapsed: 0 970 | displayed: 0 971 | snapOffset: {x: 0, y: 0} 972 | snapOffsetDelta: {x: 0, y: 0} 973 | snapCorner: 0 974 | id: Scene View/Cloth Collisions 975 | index: 2 976 | layout: 4 977 | size: {x: 0, y: 0} 978 | sizeOverriden: 0 979 | - dockPosition: 1 980 | containerId: overlay-container--right 981 | floating: 0 982 | collapsed: 0 983 | displayed: 0 984 | snapOffset: {x: 0, y: 0} 985 | snapOffsetDelta: {x: 0, y: 0} 986 | snapCorner: 0 987 | id: Scene View/Navmesh Display 988 | index: 4 989 | layout: 4 990 | size: {x: 0, y: 0} 991 | sizeOverriden: 0 992 | - dockPosition: 1 993 | containerId: overlay-container--right 994 | floating: 0 995 | collapsed: 0 996 | displayed: 0 997 | snapOffset: {x: 0, y: 0} 998 | snapOffsetDelta: {x: 0, y: 0} 999 | snapCorner: 0 1000 | id: Scene View/Agent Display 1001 | index: 6 1002 | layout: 4 1003 | size: {x: 0, y: 0} 1004 | sizeOverriden: 0 1005 | - dockPosition: 1 1006 | containerId: overlay-container--right 1007 | floating: 0 1008 | collapsed: 0 1009 | displayed: 0 1010 | snapOffset: {x: 0, y: 0} 1011 | snapOffsetDelta: {x: 0, y: 0} 1012 | snapCorner: 0 1013 | id: Scene View/Obstacle Display 1014 | index: 8 1015 | layout: 4 1016 | size: {x: 0, y: 0} 1017 | sizeOverriden: 0 1018 | - dockPosition: 1 1019 | containerId: overlay-container--right 1020 | floating: 0 1021 | collapsed: 0 1022 | displayed: 0 1023 | snapOffset: {x: 0, y: 0} 1024 | snapOffsetDelta: {x: 0, y: 0} 1025 | snapCorner: 0 1026 | id: Scene View/Occlusion Culling 1027 | index: 3 1028 | layout: 4 1029 | size: {x: 0, y: 0} 1030 | sizeOverriden: 0 1031 | - dockPosition: 1 1032 | containerId: overlay-container--right 1033 | floating: 0 1034 | collapsed: 0 1035 | displayed: 0 1036 | snapOffset: {x: 0, y: 0} 1037 | snapOffsetDelta: {x: 0, y: 0} 1038 | snapCorner: 0 1039 | id: Scene View/Physics Debugger 1040 | index: 4 1041 | layout: 4 1042 | size: {x: 0, y: 0} 1043 | sizeOverriden: 0 1044 | - dockPosition: 1 1045 | containerId: overlay-container--right 1046 | floating: 0 1047 | collapsed: 0 1048 | displayed: 0 1049 | snapOffset: {x: 0, y: 0} 1050 | snapOffsetDelta: {x: 0, y: 0} 1051 | snapCorner: 0 1052 | id: Scene View/Scene Visibility 1053 | index: 6 1054 | layout: 4 1055 | size: {x: 0, y: 0} 1056 | sizeOverriden: 0 1057 | - dockPosition: 1 1058 | containerId: overlay-container--right 1059 | floating: 0 1060 | collapsed: 0 1061 | displayed: 0 1062 | snapOffset: {x: 0, y: 25} 1063 | snapOffsetDelta: {x: 0, y: 0} 1064 | snapCorner: 0 1065 | id: Scene View/Particles 1066 | index: 7 1067 | layout: 4 1068 | size: {x: 0, y: 0} 1069 | sizeOverriden: 0 1070 | - dockPosition: 1 1071 | containerId: overlay-container--right 1072 | floating: 0 1073 | collapsed: 0 1074 | displayed: 0 1075 | snapOffset: {x: 0, y: 0} 1076 | snapOffsetDelta: {x: 0, y: 0} 1077 | snapCorner: 0 1078 | id: Scene View/Tilemap 1079 | index: 11 1080 | layout: 4 1081 | size: {x: 0, y: 0} 1082 | sizeOverriden: 0 1083 | - dockPosition: 1 1084 | containerId: overlay-container--right 1085 | floating: 0 1086 | collapsed: 0 1087 | displayed: 0 1088 | snapOffset: {x: 0, y: 0} 1089 | snapOffsetDelta: {x: 0, y: 0} 1090 | snapCorner: 0 1091 | id: Scene View/Tilemap Palette Helper 1092 | index: 12 1093 | layout: 4 1094 | size: {x: 0, y: 0} 1095 | sizeOverriden: 0 1096 | - dockPosition: 0 1097 | containerId: overlay-toolbar__left 1098 | floating: 0 1099 | collapsed: 0 1100 | displayed: 0 1101 | snapOffset: {x: 0, y: 0} 1102 | snapOffsetDelta: {x: 0, y: 0} 1103 | snapCorner: 0 1104 | id: Scene View/Path 1105 | index: 0 1106 | layout: 0 1107 | size: {x: 0, y: 0} 1108 | sizeOverriden: 0 1109 | - dockPosition: 0 1110 | containerId: overlay-toolbar__left 1111 | floating: 0 1112 | collapsed: 0 1113 | displayed: 0 1114 | snapOffset: {x: 0, y: 0} 1115 | snapOffsetDelta: {x: 0, y: 0} 1116 | snapCorner: 0 1117 | id: Scene View/Open Tile Palette 1118 | index: 1 1119 | layout: 0 1120 | size: {x: 0, y: 0} 1121 | sizeOverriden: 0 1122 | - dockPosition: 0 1123 | containerId: overlay-toolbar__left 1124 | floating: 0 1125 | collapsed: 0 1126 | displayed: 0 1127 | snapOffset: {x: 0, y: 0} 1128 | snapOffsetDelta: {x: 0, y: 0} 1129 | snapCorner: 0 1130 | id: Scene View/Tilemap Focus 1131 | index: 2 1132 | layout: 0 1133 | size: {x: 0, y: 0} 1134 | sizeOverriden: 0 1135 | - dockPosition: 1 1136 | containerId: overlay-container--right 1137 | floating: 0 1138 | collapsed: 0 1139 | displayed: 1 1140 | snapOffset: {x: 48, y: 48} 1141 | snapOffsetDelta: {x: 0, y: 0} 1142 | snapCorner: 0 1143 | id: AINavigationOverlay 1144 | index: 8 1145 | layout: 4 1146 | size: {x: 0, y: 0} 1147 | sizeOverriden: 0 1148 | - dockPosition: 1 1149 | containerId: overlay-container--right 1150 | floating: 0 1151 | collapsed: 0 1152 | displayed: 0 1153 | snapOffset: {x: 48, y: 48} 1154 | snapOffsetDelta: {x: 0, y: 0} 1155 | snapCorner: 0 1156 | id: Scene View/TrailRenderer 1157 | index: 5 1158 | layout: 4 1159 | size: {x: 0, y: 0} 1160 | sizeOverriden: 0 1161 | - dockPosition: 0 1162 | containerId: overlay-toolbar__top 1163 | floating: 0 1164 | collapsed: 0 1165 | displayed: 0 1166 | snapOffset: {x: 48, y: 48} 1167 | snapOffsetDelta: {x: 0, y: 0} 1168 | snapCorner: 0 1169 | id: Brush Attributes 1170 | index: 2 1171 | layout: 4 1172 | size: {x: 0, y: 0} 1173 | sizeOverriden: 0 1174 | - dockPosition: 0 1175 | containerId: overlay-toolbar__left 1176 | floating: 0 1177 | collapsed: 0 1178 | displayed: 0 1179 | snapOffset: {x: 48, y: 48} 1180 | snapOffsetDelta: {x: 0, y: 0} 1181 | snapCorner: 0 1182 | id: Terrain Tools 1183 | index: 0 1184 | layout: 4 1185 | size: {x: 0, y: 0} 1186 | sizeOverriden: 0 1187 | - dockPosition: 0 1188 | containerId: overlay-toolbar__left 1189 | floating: 0 1190 | collapsed: 0 1191 | displayed: 0 1192 | snapOffset: {x: 48, y: 48} 1193 | snapOffsetDelta: {x: 0, y: 0} 1194 | snapCorner: 0 1195 | id: Brush Masks 1196 | index: 1 1197 | layout: 4 1198 | size: {x: 0, y: 0} 1199 | sizeOverriden: 0 1200 | m_OverlaysVisible: 1 1201 | m_WindowGUID: 37b6f31bae0a5f14b93fdae3dafe309a 1202 | m_Gizmos: 1 1203 | m_OverrideSceneCullingMask: 6917529027641081856 1204 | m_SceneIsLit: 1 1205 | m_SceneLighting: 1 1206 | m_2DMode: 1 1207 | m_isRotationLocked: 0 1208 | m_PlayAudio: 0 1209 | m_AudioPlay: 0 1210 | m_Position: 1211 | m_Target: {x: 0, y: 0, z: 0} 1212 | speed: 2 1213 | m_Value: {x: 0, y: 0, z: 0} 1214 | m_RenderMode: 0 1215 | m_CameraMode: 1216 | drawMode: 0 1217 | name: Shaded 1218 | section: Shading Mode 1219 | m_ValidateTrueMetals: 0 1220 | m_DoValidateTrueMetals: 0 1221 | m_SceneViewState: 1222 | m_AlwaysRefresh: 0 1223 | showFog: 1 1224 | showSkybox: 1 1225 | showFlares: 1 1226 | showImageEffects: 1 1227 | showParticleSystems: 1 1228 | showVisualEffectGraphs: 1 1229 | m_FxEnabled: 1 1230 | m_Grid: 1231 | xGrid: 1232 | m_Fade: 1233 | m_Target: 0 1234 | speed: 2 1235 | m_Value: 0 1236 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} 1237 | m_Pivot: {x: 0, y: 0, z: 0} 1238 | m_Size: {x: 0, y: 0} 1239 | yGrid: 1240 | m_Fade: 1241 | m_Target: 0 1242 | speed: 2 1243 | m_Value: 0 1244 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} 1245 | m_Pivot: {x: 0, y: 0, z: 0} 1246 | m_Size: {x: 1, y: 1} 1247 | zGrid: 1248 | m_Fade: 1249 | m_Target: 1 1250 | speed: 2 1251 | m_Value: 1 1252 | m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} 1253 | m_Pivot: {x: 0, y: 0, z: 0} 1254 | m_Size: {x: 1, y: 1} 1255 | m_ShowGrid: 1 1256 | m_GridAxis: 1 1257 | m_gridOpacity: 0.5 1258 | m_Rotation: 1259 | m_Target: {x: 0, y: 0, z: 0, w: 1} 1260 | speed: 2 1261 | m_Value: {x: 0, y: 0, z: 0, w: 1} 1262 | m_Size: 1263 | m_Target: 10 1264 | speed: 2 1265 | m_Value: 10 1266 | m_Ortho: 1267 | m_Target: 1 1268 | speed: 2 1269 | m_Value: 1 1270 | m_CameraSettings: 1271 | m_Speed: 1 1272 | m_SpeedNormalized: 0.5 1273 | m_SpeedMin: 0.01 1274 | m_SpeedMax: 2 1275 | m_EasingEnabled: 1 1276 | m_EasingDuration: 0.4 1277 | m_AccelerationEnabled: 1 1278 | m_FieldOfViewHorizontalOrVertical: 60 1279 | m_NearClip: 0.03 1280 | m_FarClip: 10000 1281 | m_DynamicClip: 1 1282 | m_OcclusionCulling: 0 1283 | m_LastSceneViewRotation: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} 1284 | m_LastSceneViewOrtho: 0 1285 | m_ReplacementShader: {fileID: 0} 1286 | m_ReplacementString: 1287 | m_SceneVisActive: 1 1288 | m_LastLockedObject: {fileID: 0} 1289 | m_ViewIsLockedToObject: 0 1290 | --- !u!114 &18 1291 | MonoBehaviour: 1292 | m_ObjectHideFlags: 52 1293 | m_CorrespondingSourceObject: {fileID: 0} 1294 | m_PrefabInstance: {fileID: 0} 1295 | m_PrefabAsset: {fileID: 0} 1296 | m_GameObject: {fileID: 0} 1297 | m_Enabled: 1 1298 | m_EditorHideFlags: 1 1299 | m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} 1300 | m_Name: 1301 | m_EditorClassIdentifier: 1302 | m_MinSize: {x: 230, y: 250} 1303 | m_MaxSize: {x: 10000, y: 10000} 1304 | m_TitleContent: 1305 | m_Text: Project 1306 | m_Image: {fileID: -5467254957812901981, guid: 0000000000000000d000000000000000, 1307 | type: 0} 1308 | m_Tooltip: 1309 | m_Pos: 1310 | serializedVersion: 2 1311 | x: 0 1312 | y: 681 1313 | width: 1253 1314 | height: 358 1315 | m_SerializedDataModeController: 1316 | m_DataMode: 0 1317 | m_PreferredDataMode: 0 1318 | m_SupportedDataModes: 1319 | isAutomatic: 1 1320 | m_ViewDataDictionary: {fileID: 0} 1321 | m_OverlayCanvas: 1322 | m_LastAppliedPresetName: Default 1323 | m_SaveData: [] 1324 | m_OverlaysVisible: 1 1325 | m_SearchFilter: 1326 | m_NameFilter: 1327 | m_ClassNames: [] 1328 | m_AssetLabels: [] 1329 | m_AssetBundleNames: [] 1330 | m_ReferencingInstanceIDs: 1331 | m_SceneHandles: 1332 | m_ShowAllHits: 0 1333 | m_SkipHidden: 0 1334 | m_SearchArea: 1 1335 | m_Folders: 1336 | - Assets 1337 | m_Globs: [] 1338 | m_OriginalText: 1339 | m_ImportLogFlags: 0 1340 | m_FilterByTypeIntersection: 0 1341 | m_ViewMode: 1 1342 | m_StartGridSize: 96 1343 | m_LastFolders: 1344 | - Assets 1345 | m_LastFoldersGridSize: 96 1346 | m_LastProjectPath: C:\source\NativeQuadtree 1347 | m_LockTracker: 1348 | m_IsLocked: 0 1349 | m_FolderTreeState: 1350 | scrollPos: {x: 0, y: 79} 1351 | m_SelectedIDs: de050000 1352 | m_LastClickedID: 1502 1353 | m_ExpandedIDs: 0000000000ca9a3bffffff7f 1354 | m_RenameOverlay: 1355 | m_UserAcceptedRename: 0 1356 | m_Name: 1357 | m_OriginalName: 1358 | m_EditFieldRect: 1359 | serializedVersion: 2 1360 | x: 0 1361 | y: 0 1362 | width: 0 1363 | height: 0 1364 | m_UserData: 0 1365 | m_IsWaitingForDelay: 0 1366 | m_IsRenaming: 0 1367 | m_OriginalEventType: 11 1368 | m_IsRenamingFilename: 1 1369 | m_ClientGUIView: {fileID: 0} 1370 | m_SearchString: 1371 | m_CreateAssetUtility: 1372 | m_EndAction: {fileID: 0} 1373 | m_InstanceID: 0 1374 | m_Path: 1375 | m_Icon: {fileID: 0} 1376 | m_ResourceFile: 1377 | m_AssetTreeState: 1378 | scrollPos: {x: 0, y: 0} 1379 | m_SelectedIDs: 1380 | m_LastClickedID: 0 1381 | m_ExpandedIDs: 0000000000ca9a3bffffff7f 1382 | m_RenameOverlay: 1383 | m_UserAcceptedRename: 0 1384 | m_Name: 1385 | m_OriginalName: 1386 | m_EditFieldRect: 1387 | serializedVersion: 2 1388 | x: 0 1389 | y: 0 1390 | width: 0 1391 | height: 0 1392 | m_UserData: 0 1393 | m_IsWaitingForDelay: 0 1394 | m_IsRenaming: 0 1395 | m_OriginalEventType: 11 1396 | m_IsRenamingFilename: 1 1397 | m_ClientGUIView: {fileID: 0} 1398 | m_SearchString: 1399 | m_CreateAssetUtility: 1400 | m_EndAction: {fileID: 0} 1401 | m_InstanceID: 0 1402 | m_Path: 1403 | m_Icon: {fileID: 0} 1404 | m_ResourceFile: 1405 | m_ListAreaState: 1406 | m_SelectedInstanceIDs: 1407 | m_LastClickedInstanceID: 0 1408 | m_HadKeyboardFocusLastEvent: 1 1409 | m_ExpandedInstanceIDs: c6230000065c0000505500007a530000a8640000bc510100fe540000fc58000022640000fc6400001e590000225900005c6600009c6700004e6a0000385f00002a5f0000285f00007c620000c64b0400fa650000d0c0020000880000f48700000acc050006cc0500145e0000620a0a009060000092b604008ab604009ab60400d6500800fc070a00305d0000148f00002e530100225c0100f0410100226700006e6e0000f0750000dc740000a8750000000000000855f7ffa862000070620000 1410 | m_RenameOverlay: 1411 | m_UserAcceptedRename: 0 1412 | m_Name: 1413 | m_OriginalName: 1414 | m_EditFieldRect: 1415 | serializedVersion: 2 1416 | x: 0 1417 | y: 0 1418 | width: 0 1419 | height: 0 1420 | m_UserData: 0 1421 | m_IsWaitingForDelay: 0 1422 | m_IsRenaming: 0 1423 | m_OriginalEventType: 11 1424 | m_IsRenamingFilename: 1 1425 | m_ClientGUIView: {fileID: 11} 1426 | m_CreateAssetUtility: 1427 | m_EndAction: {fileID: 0} 1428 | m_InstanceID: 0 1429 | m_Path: 1430 | m_Icon: {fileID: 0} 1431 | m_ResourceFile: 1432 | m_NewAssetIndexInList: -1 1433 | m_ScrollPosition: {x: 0, y: 0} 1434 | m_GridSize: 96 1435 | m_SkipHiddenPackages: 0 1436 | m_DirectoriesAreaWidth: 244 1437 | --- !u!114 &19 1438 | MonoBehaviour: 1439 | m_ObjectHideFlags: 52 1440 | m_CorrespondingSourceObject: {fileID: 0} 1441 | m_PrefabInstance: {fileID: 0} 1442 | m_PrefabAsset: {fileID: 0} 1443 | m_GameObject: {fileID: 0} 1444 | m_Enabled: 1 1445 | m_EditorHideFlags: 0 1446 | m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} 1447 | m_Name: 1448 | m_EditorClassIdentifier: 1449 | m_MinSize: {x: 100, y: 100} 1450 | m_MaxSize: {x: 4000, y: 4000} 1451 | m_TitleContent: 1452 | m_Text: Console 1453 | m_Image: {fileID: -4327648978806127646, guid: 0000000000000000d000000000000000, 1454 | type: 0} 1455 | m_Tooltip: 1456 | m_Pos: 1457 | serializedVersion: 2 1458 | x: 0 1459 | y: 681 1460 | width: 1253 1461 | height: 358 1462 | m_SerializedDataModeController: 1463 | m_DataMode: 0 1464 | m_PreferredDataMode: 0 1465 | m_SupportedDataModes: 1466 | isAutomatic: 1 1467 | m_ViewDataDictionary: {fileID: 0} 1468 | m_OverlayCanvas: 1469 | m_LastAppliedPresetName: Default 1470 | m_SaveData: [] 1471 | m_OverlaysVisible: 1 1472 | --- !u!114 &20 1473 | MonoBehaviour: 1474 | m_ObjectHideFlags: 52 1475 | m_CorrespondingSourceObject: {fileID: 0} 1476 | m_PrefabInstance: {fileID: 0} 1477 | m_PrefabAsset: {fileID: 0} 1478 | m_GameObject: {fileID: 0} 1479 | m_Enabled: 1 1480 | m_EditorHideFlags: 0 1481 | m_Script: {fileID: 12071, guid: 0000000000000000e000000000000000, type: 0} 1482 | m_Name: 1483 | m_EditorClassIdentifier: 1484 | m_MinSize: {x: 100, y: 100} 1485 | m_MaxSize: {x: 4000, y: 4000} 1486 | m_TitleContent: 1487 | m_Text: Animation 1488 | m_Image: {fileID: -8166618308981325432, guid: 0000000000000000d000000000000000, 1489 | type: 0} 1490 | m_Tooltip: 1491 | m_Pos: 1492 | serializedVersion: 2 1493 | x: 0 1494 | y: 692 1495 | width: 1253 1496 | height: 347 1497 | m_SerializedDataModeController: 1498 | m_DataMode: 0 1499 | m_PreferredDataMode: 0 1500 | m_SupportedDataModes: 1501 | isAutomatic: 1 1502 | m_ViewDataDictionary: {fileID: 0} 1503 | m_OverlayCanvas: 1504 | m_LastAppliedPresetName: Default 1505 | m_SaveData: [] 1506 | m_OverlaysVisible: 1 1507 | m_LockTracker: 1508 | m_IsLocked: 0 1509 | m_LastSelectedObjectID: 80254 1510 | --- !u!114 &21 1511 | MonoBehaviour: 1512 | m_ObjectHideFlags: 52 1513 | m_CorrespondingSourceObject: {fileID: 0} 1514 | m_PrefabInstance: {fileID: 0} 1515 | m_PrefabAsset: {fileID: 0} 1516 | m_GameObject: {fileID: 0} 1517 | m_Enabled: 1 1518 | m_EditorHideFlags: 1 1519 | m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} 1520 | m_Name: 1521 | m_EditorClassIdentifier: 1522 | m_MinSize: {x: 275, y: 50} 1523 | m_MaxSize: {x: 4000, y: 4000} 1524 | m_TitleContent: 1525 | m_Text: Inspector 1526 | m_Image: {fileID: -2667387946076563598, guid: 0000000000000000d000000000000000, 1527 | type: 0} 1528 | m_Tooltip: 1529 | m_Pos: 1530 | serializedVersion: 2 1531 | x: 1254 1532 | y: 113 1533 | width: 665 1534 | height: 926 1535 | m_SerializedDataModeController: 1536 | m_DataMode: 0 1537 | m_PreferredDataMode: 0 1538 | m_SupportedDataModes: 1539 | isAutomatic: 1 1540 | m_ViewDataDictionary: {fileID: 0} 1541 | m_OverlayCanvas: 1542 | m_LastAppliedPresetName: Default 1543 | m_SaveData: [] 1544 | m_OverlaysVisible: 1 1545 | m_ObjectsLockedBeforeSerialization: [] 1546 | m_InstanceIDsLockedBeforeSerialization: 1547 | m_PreviewResizer: 1548 | m_CachedPref: 227 1549 | m_ControlHash: -371814159 1550 | m_PrefName: Preview_InspectorPreview 1551 | m_LastInspectedObjectInstanceID: -1 1552 | m_LastVerticalScrollValue: 0 1553 | m_GlobalObjectId: 1554 | m_InspectorMode: 0 1555 | m_LockTracker: 1556 | m_IsLocked: 0 1557 | m_PreviewWindow: {fileID: 0} 1558 | --- !u!114 &22 1559 | MonoBehaviour: 1560 | m_ObjectHideFlags: 52 1561 | m_CorrespondingSourceObject: {fileID: 0} 1562 | m_PrefabInstance: {fileID: 0} 1563 | m_PrefabAsset: {fileID: 0} 1564 | m_GameObject: {fileID: 0} 1565 | m_Enabled: 1 1566 | m_EditorHideFlags: 0 1567 | m_Script: {fileID: 12914, guid: 0000000000000000e000000000000000, type: 0} 1568 | m_Name: 1569 | m_EditorClassIdentifier: 1570 | m_MinSize: {x: 100, y: 100} 1571 | m_MaxSize: {x: 4000, y: 4000} 1572 | m_TitleContent: 1573 | m_Text: Animator 1574 | m_Image: {fileID: -1673928668082335149, guid: 0000000000000000d000000000000000, 1575 | type: 0} 1576 | m_Tooltip: 1577 | m_Pos: 1578 | serializedVersion: 2 1579 | x: 1254 1580 | y: 113 1581 | width: 665 1582 | height: 926 1583 | m_SerializedDataModeController: 1584 | m_DataMode: 0 1585 | m_PreferredDataMode: 0 1586 | m_SupportedDataModes: 1587 | isAutomatic: 1 1588 | m_ViewDataDictionary: {fileID: 0} 1589 | m_OverlayCanvas: 1590 | m_LastAppliedPresetName: Default 1591 | m_SaveData: [] 1592 | m_OverlaysVisible: 1 1593 | m_ViewTransforms: 1594 | m_KeySerializationHelper: 1595 | - {fileID: 1828735603352458355, guid: 2f671f9c156223241bdf692b4dff4df6, type: 2} 1596 | m_ValueSerializationHelper: 1597 | - e00: 1 1598 | e01: 0 1599 | e02: 0 1600 | e03: 0 1601 | e10: 0 1602 | e11: 1 1603 | e12: 0 1604 | e13: 0 1605 | e20: 0 1606 | e21: 0 1607 | e22: 1 1608 | e23: 0 1609 | e30: 0 1610 | e31: 0 1611 | e32: 0 1612 | e33: 1 1613 | m_PreviewAnimator: {fileID: 0} 1614 | m_AnimatorController: {fileID: 9100000, guid: 2f671f9c156223241bdf692b4dff4df6, 1615 | type: 2} 1616 | m_BreadCrumbs: 1617 | - m_Target: {fileID: 1828735603352458355, guid: 2f671f9c156223241bdf692b4dff4df6, 1618 | type: 2} 1619 | m_ScrollPosition: {x: 0, y: 0} 1620 | stateMachineGraph: {fileID: 0} 1621 | stateMachineGraphGUI: {fileID: 0} 1622 | blendTreeGraph: {fileID: 0} 1623 | blendTreeGraphGUI: {fileID: 0} 1624 | m_AutoLiveLink: 1 1625 | m_MiniTool: 0 1626 | m_LockTracker: 1627 | m_IsLocked: 0 1628 | m_CurrentEditor: 1 1629 | m_LayerEditor: 1630 | m_SelectedLayerIndex: 0 1631 | --- !u!114 &23 1632 | MonoBehaviour: 1633 | m_ObjectHideFlags: 52 1634 | m_CorrespondingSourceObject: {fileID: 0} 1635 | m_PrefabInstance: {fileID: 0} 1636 | m_PrefabAsset: {fileID: 0} 1637 | m_GameObject: {fileID: 0} 1638 | m_Enabled: 1 1639 | m_EditorHideFlags: 0 1640 | m_Script: {fileID: 12071, guid: 0000000000000000e000000000000000, type: 0} 1641 | m_Name: 1642 | m_EditorClassIdentifier: 1643 | m_MinSize: {x: 100, y: 100} 1644 | m_MaxSize: {x: 4000, y: 4000} 1645 | m_TitleContent: 1646 | m_Text: Animation 1647 | m_Image: {fileID: -8166618308981325432, guid: 0000000000000000d000000000000000, 1648 | type: 0} 1649 | m_Tooltip: 1650 | m_Pos: 1651 | serializedVersion: 2 1652 | x: 1077 1653 | y: 113 1654 | width: 842 1655 | height: 926 1656 | m_SerializedDataModeController: 1657 | m_DataMode: 0 1658 | m_PreferredDataMode: 0 1659 | m_SupportedDataModes: 1660 | isAutomatic: 1 1661 | m_ViewDataDictionary: {fileID: 0} 1662 | m_OverlayCanvas: 1663 | m_LastAppliedPresetName: Default 1664 | m_SaveData: [] 1665 | m_OverlaysVisible: 1 1666 | m_LockTracker: 1667 | m_IsLocked: 0 1668 | m_LastSelectedObjectID: 80254 1669 | --- !u!114 &24 1670 | MonoBehaviour: 1671 | m_ObjectHideFlags: 52 1672 | m_CorrespondingSourceObject: {fileID: 0} 1673 | m_PrefabInstance: {fileID: 0} 1674 | m_PrefabAsset: {fileID: 0} 1675 | m_GameObject: {fileID: 0} 1676 | m_Enabled: 1 1677 | m_EditorHideFlags: 0 1678 | m_Script: {fileID: 13854, guid: 0000000000000000e000000000000000, type: 0} 1679 | m_Name: 1680 | m_EditorClassIdentifier: 1681 | m_MinSize: {x: 310, y: 200} 1682 | m_MaxSize: {x: 4000, y: 4000} 1683 | m_TitleContent: 1684 | m_Text: Project Settings 1685 | m_Image: {fileID: -5712115415447495865, guid: 0000000000000000d000000000000000, 1686 | type: 0} 1687 | m_Tooltip: 1688 | m_Pos: 1689 | serializedVersion: 2 1690 | x: 1254 1691 | y: 113 1692 | width: 665 1693 | height: 926 1694 | m_SerializedDataModeController: 1695 | m_DataMode: 0 1696 | m_PreferredDataMode: 0 1697 | m_SupportedDataModes: 1698 | isAutomatic: 1 1699 | m_ViewDataDictionary: {fileID: 0} 1700 | m_OverlayCanvas: 1701 | m_LastAppliedPresetName: Default 1702 | m_SaveData: [] 1703 | m_OverlaysVisible: 1 1704 | m_PosLeft: {x: 0, y: 0} 1705 | m_PosRight: {x: 0, y: 0} 1706 | m_Scope: 1 1707 | m_SplitterFlex: 0.20924574 1708 | m_SearchText: 1709 | m_TreeViewState: 1710 | scrollPos: {x: 0, y: 0} 1711 | m_SelectedIDs: 1cd24cda 1712 | m_LastClickedID: -632499684 1713 | m_ExpandedIDs: a01a5fa600000000c53aba5a 1714 | m_RenameOverlay: 1715 | m_UserAcceptedRename: 0 1716 | m_Name: 1717 | m_OriginalName: 1718 | m_EditFieldRect: 1719 | serializedVersion: 2 1720 | x: 0 1721 | y: 0 1722 | width: 0 1723 | height: 0 1724 | m_UserData: 0 1725 | m_IsWaitingForDelay: 0 1726 | m_IsRenaming: 0 1727 | m_OriginalEventType: 11 1728 | m_IsRenamingFilename: 0 1729 | m_ClientGUIView: {fileID: 0} 1730 | m_SearchString: 1731 | -------------------------------------------------------------------------------- /UserSettings/Search.index: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Assets", 3 | "roots": ["Assets"], 4 | "includes": [], 5 | "excludes": [], 6 | "options": { 7 | "types": true, 8 | "properties": true, 9 | "extended": false, 10 | "dependencies": false 11 | }, 12 | "baseScore": 999 13 | } -------------------------------------------------------------------------------- /UserSettings/Search.settings: -------------------------------------------------------------------------------- 1 | trackSelection = true 2 | refreshSearchWindowsInPlayMode = false 3 | fetchPreview = true 4 | defaultFlags = 0 5 | keepOpen = false 6 | queryFolder = "Assets" 7 | onBoardingDoNotAskAgain = true 8 | showPackageIndexes = false 9 | showStatusBar = false 10 | scopes = { 11 | } 12 | providers = { 13 | adb = { 14 | active = false 15 | priority = 2500 16 | defaultAction = null 17 | } 18 | log = { 19 | active = false 20 | priority = 210 21 | defaultAction = null 22 | } 23 | performance = { 24 | active = false 25 | priority = 100 26 | defaultAction = null 27 | } 28 | store = { 29 | active = true 30 | priority = 100 31 | defaultAction = null 32 | } 33 | profilermarkers = { 34 | active = false 35 | priority = 100 36 | defaultAction = null 37 | } 38 | scene = { 39 | active = true 40 | priority = 50 41 | defaultAction = null 42 | } 43 | find = { 44 | active = true 45 | priority = 25 46 | defaultAction = null 47 | } 48 | packages = { 49 | active = true 50 | priority = 90 51 | defaultAction = null 52 | } 53 | asset = { 54 | active = true 55 | priority = 25 56 | defaultAction = null 57 | } 58 | } 59 | objectSelectors = { 60 | } 61 | recentSearches = [ 62 | ] 63 | searchItemFavorites = [ 64 | ] 65 | savedSearchesSortOrder = 0 66 | showSavedSearchPanel = false 67 | hideTabs = false 68 | expandedQueries = [ 69 | ] 70 | queryBuilder = false 71 | ignoredProperties = "id;name;classname;imagecontentshash" 72 | helperWidgetCurrentArea = "all" 73 | disabledIndexers = "" 74 | minIndexVariations = 2 75 | findProviderIndexHelper = true --------------------------------------------------------------------------------