├── .gitattributes ├── .gitignore ├── .gitmodules ├── Assets ├── Firefly.meta ├── Firefly │ ├── ButterflyParticle.cs │ ├── ButterflyParticle.cs.meta │ ├── Components.cs │ ├── Components.cs.meta │ ├── Instance.cs │ ├── Instance.cs.meta │ ├── NoiseEffector.cs │ ├── NoiseEffector.cs.meta │ ├── ParticleExpiration.cs │ ├── ParticleExpiration.cs.meta │ ├── ParticleReconstruction.cs │ ├── ParticleReconstruction.cs.meta │ ├── Renderer.cs │ ├── Renderer.cs.meta │ ├── SimpleParticle.cs │ ├── SimpleParticle.cs.meta │ ├── Utility.meta │ ├── Utility │ │ ├── NativeCounter.cs │ │ ├── NativeCounter.cs.meta │ │ ├── Random.cs │ │ └── Random.cs.meta │ ├── Wrappers.meta │ └── Wrappers │ │ ├── ButterflyParticleComponent.cs │ │ ├── ButterflyParticleComponent.cs.meta │ │ ├── InstanceComponent.cs │ │ ├── InstanceComponent.cs.meta │ │ ├── NoiseEffectorComponent.cs │ │ ├── NoiseEffectorComponent.cs.meta │ │ ├── RenderSettingsComponent.cs │ │ ├── RenderSettingsComponent.cs.meta │ │ ├── SimpleParticleComponent.cs │ │ └── SimpleParticleComponent.cs.meta ├── Test.meta └── Test │ ├── Backdrop.mat │ ├── Backdrop.mat.meta │ ├── Backdrop.obj │ ├── Backdrop.obj.meta │ ├── PostFx.asset │ ├── PostFx.asset.meta │ ├── Statue.mat │ ├── Statue.mat.meta │ ├── Test.unity │ ├── Test.unity.meta │ ├── Timeline.playable │ ├── Timeline.playable.meta │ ├── TwoSided.shader │ ├── TwoSided.shader.meta │ ├── Ugolino.obj │ └── Ugolino.obj.meta ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset └── UnityConnectSettings.asset └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | * -text 2 | 3 | *.cs text eol=lf diff=csharp 4 | *.shader text eol=lf 5 | *.cginc text eol=lf 6 | *.hlsl text eol=lf 7 | *.compute text eol=lf 8 | 9 | *.meta text eol=lf 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows 2 | Thumbs.db 3 | Desktop.ini 4 | 5 | # macOS 6 | .DS_Store 7 | 8 | # Code Editors 9 | .idea 10 | .vscode 11 | *.csproj 12 | *.sln 13 | *.swp 14 | xcuserdata 15 | xcshareddata 16 | 17 | # Unity 18 | /Library 19 | /Temp 20 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "Packages/jp.keijiro.klak.ndi"] 2 | path = Packages/jp.keijiro.klak.ndi 3 | url = git@github.com:keijiro/KlakNDI.git 4 | branch = upm 5 | -------------------------------------------------------------------------------- /Assets/Firefly.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 874ad3ebdcd691546a755cdc8dfbd902 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Firefly/ButterflyParticle.cs: -------------------------------------------------------------------------------- 1 | using Unity.Collections; 2 | using Unity.Collections.LowLevel.Unsafe; 3 | using Unity.Entities; 4 | using Unity.Jobs; 5 | using Unity.Mathematics; 6 | using Unity.Transforms; 7 | 8 | namespace Firefly 9 | { 10 | [Unity.Burst.BurstCompile] 11 | unsafe struct ButterflyReconstructionJob : 12 | IJobParallelFor, IParticleReconstructionJob 13 | { 14 | [ReadOnly] ComponentDataArray _particles; 15 | [ReadOnly] ComponentDataArray _positions; 16 | [ReadOnly] ComponentDataArray _triangles; 17 | 18 | [NativeDisableUnsafePtrRestriction] void* _vertices; 19 | [NativeDisableUnsafePtrRestriction] void* _normals; 20 | 21 | ButterflyParticle _variant; 22 | NativeCounter.Concurrent _counter; 23 | 24 | public void Initialize( 25 | ButterflyParticle variant, 26 | ComponentGroup group, 27 | UnityEngine.Vector3 [] vertices, 28 | UnityEngine.Vector3 [] normals, 29 | NativeCounter.Concurrent counter 30 | ) 31 | { 32 | _particles = group.GetComponentDataArray(); 33 | _positions = group.GetComponentDataArray(); 34 | _triangles = group.GetComponentDataArray(); 35 | 36 | _vertices = UnsafeUtility.AddressOf(ref vertices[0]); 37 | _normals = UnsafeUtility.AddressOf(ref normals[0]); 38 | 39 | _variant = variant; 40 | _counter = counter; 41 | } 42 | 43 | void AddTriangle(float3 v1, float3 v2, float3 v3) 44 | { 45 | var i = _counter.Increment() * 3; 46 | UnsafeUtility.WriteArrayElement(_vertices, i + 0, v1); 47 | UnsafeUtility.WriteArrayElement(_vertices, i + 1, v2); 48 | UnsafeUtility.WriteArrayElement(_vertices, i + 2, v3); 49 | 50 | var n = math.normalize(math.cross(v2 - v1, v3 - v1)); 51 | UnsafeUtility.WriteArrayElement(_normals, i + 0, n); 52 | UnsafeUtility.WriteArrayElement(_normals, i + 1, n); 53 | UnsafeUtility.WriteArrayElement(_normals, i + 2, n); 54 | } 55 | 56 | public void Execute(int index) 57 | { 58 | var particle = _particles[index]; 59 | 60 | // Scaling with simple lerp 61 | var t_s = particle.Time / (_variant.Life * particle.LifeRandom); 62 | var size = _variant.Size * (1 - t_s); 63 | 64 | // Look-at matrix from velocity 65 | var az = particle.Velocity + 0.001f; 66 | var ax = math.cross(new float3(0, 1, 0), az); 67 | var ay = math.cross(az, ax); 68 | 69 | // Flapping 70 | var freq = 8 + Random.Value01(particle.ID + 10000) * 20; 71 | var flap = math.sin(freq * particle.Time); 72 | 73 | // Axis vectors 74 | ax = math.normalize(ax) * size; 75 | ay = math.normalize(ay) * size * flap; 76 | az = math.normalize(az) * size; 77 | 78 | // Vertices 79 | var pos = _positions[index].Value; 80 | var face = _triangles[index]; 81 | 82 | var va1 = pos + face.Vertex1; 83 | var va2 = pos + face.Vertex2; 84 | var va3 = pos + face.Vertex3; 85 | 86 | var vb1 = pos + az * 0.2f; 87 | var vb2 = pos - az * 0.2f; 88 | var vb3 = pos - ax + ay + az; 89 | var vb4 = pos - ax + ay - az; 90 | var vb5 = vb3 + ax * 2; 91 | var vb6 = vb4 + ax * 2; 92 | 93 | var p_t = math.saturate(particle.Time); 94 | var v1 = math.lerp(va1, vb1, p_t); 95 | var v2 = math.lerp(va2, vb2, p_t); 96 | var v3 = math.lerp(va3, vb3, p_t); 97 | var v4 = math.lerp(va3, vb4, p_t); 98 | var v5 = math.lerp(va3, vb5, p_t); 99 | var v6 = math.lerp(va3, vb6, p_t); 100 | 101 | // Output 102 | AddTriangle(v1, v2, v5); 103 | AddTriangle(v5, v2, v6); 104 | AddTriangle(v3, v4, v1); 105 | AddTriangle(v1, v4, v2); 106 | } 107 | } 108 | 109 | sealed class ButterflyParticleExpirationSystem : 110 | ParticleExpirationSystemBase {} 111 | 112 | sealed class ButterflyParticleReconstructionSystem : 113 | ParticleReconstructionSystemBase {} 114 | } 115 | -------------------------------------------------------------------------------- /Assets/Firefly/ButterflyParticle.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab470662e70d8a549ab01c6f0221fe55 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Components.cs: -------------------------------------------------------------------------------- 1 | using Unity.Collections; 2 | using Unity.Entities; 3 | using Unity.Mathematics; 4 | 5 | namespace Firefly 6 | { 7 | #region Basic data structure 8 | 9 | struct Triangle : IComponentData 10 | { 11 | public float3 Vertex1; 12 | public float3 Vertex2; 13 | public float3 Vertex3; 14 | } 15 | 16 | #endregion 17 | 18 | #region Instancing and rendering 19 | 20 | [System.Serializable] 21 | struct Instance : ISharedComponentData 22 | { 23 | public UnityEngine.Mesh TemplateMesh; 24 | } 25 | 26 | [System.Serializable] 27 | struct RenderSettings : ISharedComponentData 28 | { 29 | public UnityEngine.Rendering.ShadowCastingMode CastShadows; 30 | public bool ReceiveShadows; 31 | public UnityEngine.Material Material; 32 | } 33 | 34 | struct Renderer : ISharedComponentData 35 | { 36 | public const int MaxVertices = 510000; 37 | public RenderSettings Settings; 38 | public UnityEngine.Mesh WorkMesh; 39 | public UnityEngine.Vector3[] Vertices; 40 | public UnityEngine.Vector3[] Normals; 41 | public NativeCounter Counter; 42 | public NativeCounter.Concurrent ConcurrentCounter; 43 | } 44 | 45 | #endregion 46 | 47 | #region Particle system base 48 | 49 | struct Particle : IComponentData 50 | { 51 | public float3 Velocity; 52 | public uint ID; 53 | public float LifeRandom; 54 | public float Time; 55 | } 56 | 57 | interface IParticleVariant 58 | { 59 | float GetWeight(); 60 | float GetLife(); 61 | } 62 | 63 | #endregion 64 | 65 | #region Particle system variants 66 | 67 | [System.Serializable] 68 | struct SimpleParticle : ISharedComponentData, IParticleVariant 69 | { 70 | public float Weight; 71 | public float GetWeight() { return Weight; } 72 | 73 | public float Life; 74 | public float GetLife() { return Life; } 75 | } 76 | 77 | [System.Serializable] 78 | struct ButterflyParticle : ISharedComponentData, IParticleVariant 79 | { 80 | public float Weight; 81 | public float GetWeight() { return Weight; } 82 | 83 | public float Life; 84 | public float GetLife() { return Life; } 85 | 86 | public float Size; 87 | } 88 | 89 | #endregion 90 | 91 | #region Particle behavior effector 92 | 93 | [System.Serializable] 94 | struct NoiseEffector : IComponentData 95 | { 96 | public float Frequency; 97 | public float Amplitude; 98 | } 99 | 100 | #endregion 101 | } 102 | -------------------------------------------------------------------------------- /Assets/Firefly/Components.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0e02f1c7962c434783a7af23c931ec5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Instance.cs: -------------------------------------------------------------------------------- 1 | #define DEBUG_DIAGNOSTICS 2 | 3 | using Unity.Collections; 4 | using Unity.Collections.LowLevel.Unsafe; 5 | using Unity.Entities; 6 | using Unity.Jobs; 7 | using Unity.Mathematics; 8 | using Unity.Transforms; 9 | using System.Collections.Generic; 10 | using System.Diagnostics; 11 | 12 | namespace Firefly 13 | { 14 | sealed class InstanceSystem : ComponentSystem 15 | { 16 | #region ComponentSystem implementation 17 | 18 | // Used to enumerate instance components 19 | List _instanceDatas = new List(); 20 | ComponentGroup _instanceGroup; 21 | 22 | // Entity archetype used for instantiation 23 | EntityArchetype _archetype; 24 | 25 | // Allocation tracking 26 | List _toBeDisposed = new List(); 27 | 28 | // Used to give IDs to particles. 29 | uint _indexCounter; 30 | 31 | protected override void OnCreateManager(int capacity) 32 | { 33 | _instanceGroup = GetComponentGroup( 34 | typeof(Instance), typeof(RenderSettings), typeof(UnityEngine.Transform) 35 | ); 36 | 37 | _archetype = EntityManager.CreateArchetype( 38 | typeof(Particle), typeof(Triangle), typeof(Position), typeof(Renderer) 39 | ); 40 | } 41 | 42 | protected override void OnDestroyManager() 43 | { 44 | foreach (var renderer in _toBeDisposed) 45 | { 46 | UnityEngine.Object.Destroy(renderer.WorkMesh); 47 | renderer.Counter.Dispose(); 48 | } 49 | _toBeDisposed.Clear(); 50 | } 51 | 52 | protected override void OnUpdate() 53 | { 54 | // 55 | // There are three levels of loops in this system: 56 | // 57 | // Loop 1: Through the array of unique instance settings. We'll get 58 | // an array of entities that share the same instance setting. 59 | // 60 | // Loop 2: Through the array of entities got in Loop 1. 61 | // 62 | // Loop 3: Through the array of vertices in the template mesh given 63 | // via the instance setting. 64 | // 65 | 66 | #if DEBUG_DIAGNOSTICS 67 | var stopwatch = new Stopwatch(); 68 | stopwatch.Reset(); 69 | stopwatch.Start(); 70 | #endif 71 | 72 | // Loop 1: Iterate over the unique instance data entries. 73 | EntityManager.GetAllUniqueSharedComponentDatas(_instanceDatas); 74 | foreach (var instanceData in _instanceDatas) 75 | { 76 | // Skip if it doesn't have any data. 77 | if (instanceData.TemplateMesh == null) continue; 78 | 79 | // Get a copy of the entity array. We shouldn't directly use 80 | // the iterator because we're going to remove the instance 81 | // components that invalidates the iterator. 82 | _instanceGroup.SetFilter(instanceData); 83 | 84 | var iterator = _instanceGroup.GetEntityArray(); 85 | if (iterator.Length == 0) continue; 86 | 87 | var instanceEntities = new NativeArray( 88 | iterator.Length, Allocator.Temp, 89 | NativeArrayOptions.UninitializedMemory 90 | ); 91 | iterator.CopyTo(instanceEntities); 92 | 93 | // Accessor to the scene transforms 94 | var transforms = _instanceGroup.GetTransformAccessArray(); 95 | 96 | // Retrieve the template mesh data. 97 | var vertices = instanceData.TemplateMesh.vertices; 98 | var indices = instanceData.TemplateMesh.triangles; 99 | 100 | // Loop 2: Iterate over the instance entities. 101 | for (var i = 0; i < instanceEntities.Length; i++) 102 | { 103 | // Loop 3: Iterate over the vertices in the template mesh. 104 | CreateEntitiesOverMesh(instanceEntities[i], transforms[i], vertices, indices); 105 | 106 | // Remove the instance component from the entity. 107 | EntityManager.RemoveComponent(instanceEntities[i], typeof(Instance)); 108 | } 109 | 110 | instanceEntities.Dispose(); 111 | } 112 | 113 | _instanceDatas.Clear(); 114 | 115 | #if DEBUG_DIAGNOSTICS 116 | stopwatch.Stop(); 117 | var time = 1000.0 * stopwatch.ElapsedTicks / Stopwatch.Frequency; 118 | UnityEngine.Debug.Log("Instantiation time: " + time + " ms"); 119 | #endif 120 | } 121 | 122 | #endregion 123 | 124 | #region Default entity table 125 | 126 | // This table is used to create particle entities with a weighted 127 | // random distribution of particle types. It stores selection weights 128 | // and default entities that allows creating entities with instancing. 129 | 130 | struct DefaultEntityEntry 131 | { 132 | public float Weight; 133 | public Entity Entity; 134 | } 135 | 136 | DefaultEntityEntry[] _defaultEntities = new DefaultEntityEntry[16]; 137 | 138 | DefaultEntityEntry CreateDefaultEntity(Entity sourceEntity, ref Renderer renderer) 139 | where T : struct, ISharedComponentData, IParticleVariant 140 | { 141 | var variant = EntityManager.GetSharedComponentData(sourceEntity); 142 | var entity = EntityManager.CreateEntity(_archetype); 143 | EntityManager.SetSharedComponentData(entity, renderer); 144 | EntityManager.AddSharedComponentData(entity, variant); 145 | return new DefaultEntityEntry { Weight = variant.GetWeight(), Entity = entity }; 146 | } 147 | 148 | void NormalizeDefaultEntityWeights() 149 | { 150 | var total = 0.0f; 151 | for (var i = 0; i < _defaultEntities.Length; i++) 152 | total += _defaultEntities[i].Weight; 153 | 154 | var subtotal = 0.0f; 155 | for (var i = 0; i < _defaultEntities.Length; i++) 156 | { 157 | subtotal += _defaultEntities[i].Weight / total; 158 | _defaultEntities[i].Weight = subtotal; 159 | } 160 | } 161 | 162 | Entity SelectRandomDefaultEntity(uint seed) 163 | { 164 | var rand = Random.Value01(seed); 165 | for (var i = 0; i < _defaultEntities.Length; i++) 166 | if (rand < _defaultEntities[i].Weight) 167 | return _defaultEntities[i].Entity; 168 | return Entity.Null; 169 | } 170 | 171 | void CleanupDefaultEntityTable() 172 | { 173 | for (var i = 0; i < _defaultEntities.Length; i++) 174 | { 175 | var entity = _defaultEntities[i].Entity; 176 | if (EntityManager.Exists(entity)) 177 | EntityManager.DestroyEntity(entity); 178 | _defaultEntities[i] = default(DefaultEntityEntry); 179 | } 180 | } 181 | 182 | #endregion 183 | 184 | #region Jobified initializer 185 | 186 | // We use parallel-for jobs to calculate the initial data for the 187 | // components in the instanced entities. The primary motivation of this 188 | // is to optimize the vector math operations with Burst -- We don't 189 | // expect that parallelism gives a big performance boost. 190 | 191 | [Unity.Burst.BurstCompile] 192 | unsafe struct InitDataJob : IJobParallelFor 193 | { 194 | [ReadOnly, NativeDisableUnsafePtrRestriction] public void* Vertices; 195 | [ReadOnly, NativeDisableUnsafePtrRestriction] public void* Indices; 196 | 197 | public float4x4 Transform; 198 | public uint IndexOffset; 199 | 200 | public NativeArray Triangles; 201 | public NativeArray Positions; 202 | public NativeArray Particles; 203 | 204 | public void Execute(int i) 205 | { 206 | var i1 = UnsafeUtility.ReadArrayElement(Indices, i * 3); 207 | var i2 = UnsafeUtility.ReadArrayElement(Indices, i * 3 + 1); 208 | var i3 = UnsafeUtility.ReadArrayElement(Indices, i * 3 + 2); 209 | 210 | var v1 = UnsafeUtility.ReadArrayElement(Vertices, i1); 211 | var v2 = UnsafeUtility.ReadArrayElement(Vertices, i2); 212 | var v3 = UnsafeUtility.ReadArrayElement(Vertices, i3); 213 | 214 | v1 = math.mul(Transform, new float4(v1, 1)).xyz; 215 | v2 = math.mul(Transform, new float4(v2, 1)).xyz; 216 | v3 = math.mul(Transform, new float4(v3, 1)).xyz; 217 | 218 | var vc = (v1 + v2 + v3) / 3; 219 | 220 | Triangles[i] = new Triangle { 221 | Vertex1 = v1 - vc, 222 | Vertex2 = v2 - vc, 223 | Vertex3 = v3 - vc 224 | }; 225 | 226 | Positions[i] = new Position { 227 | Value = vc 228 | }; 229 | 230 | Particles[i] = new Particle { 231 | ID = (uint)i + IndexOffset, 232 | LifeRandom = Random.Value01((uint)i) * 0.8f + 0.2f 233 | }; 234 | } 235 | } 236 | 237 | unsafe void CreateEntitiesOverMesh( 238 | Entity sourceEntity, 239 | UnityEngine.Transform transform, 240 | UnityEngine.Vector3 [] vertices, 241 | int [] indices 242 | ) 243 | { 244 | var entityCount = indices.Length / 3; 245 | 246 | // Calculate the initial data with parallel-for jobs. 247 | var job = new InitDataJob { 248 | Vertices = UnsafeUtility.AddressOf(ref vertices[0]), 249 | Indices = UnsafeUtility.AddressOf(ref indices[0]), 250 | Transform = transform.localToWorldMatrix, 251 | IndexOffset = _indexCounter, 252 | Triangles = new NativeArray(entityCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory), 253 | Positions = new NativeArray(entityCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory), 254 | Particles = new NativeArray(entityCount, Allocator.TempJob, NativeArrayOptions.UninitializedMemory) 255 | }; 256 | var jobHandle = job.Schedule(entityCount, 32); 257 | _indexCounter += (uint)entityCount; 258 | 259 | // We want to do entity instantiation in parallel with the jobs, 260 | // so let the jobs kick in immediately. 261 | JobHandle.ScheduleBatchedJobs(); 262 | 263 | // Create a renderer for this group. 264 | var counter = new NativeCounter(Allocator.Persistent); 265 | var renderer = new Renderer { 266 | Settings = EntityManager.GetSharedComponentData(sourceEntity), 267 | WorkMesh = new UnityEngine.Mesh(), 268 | Vertices = new UnityEngine.Vector3 [Renderer.MaxVertices], 269 | Normals = new UnityEngine.Vector3 [Renderer.MaxVertices], 270 | Counter = counter, ConcurrentCounter = counter 271 | }; 272 | 273 | // We want this renderer object disposed at the end of world. 274 | _toBeDisposed.Add(renderer); 275 | 276 | // Initialize the default entity table. 277 | _defaultEntities[0] = CreateDefaultEntity(sourceEntity, ref renderer); 278 | _defaultEntities[1] = CreateDefaultEntity(sourceEntity, ref renderer); 279 | NormalizeDefaultEntityWeights(); 280 | 281 | // Create an array of clones as putting a clone on each triangle. 282 | var entities = new NativeArray( 283 | entityCount, Allocator.Temp, NativeArrayOptions.UninitializedMemory 284 | ); 285 | 286 | for (var i = 0; i < entityCount; i++) 287 | { 288 | entities[i] = EntityManager.Instantiate( 289 | SelectRandomDefaultEntity((uint)i) 290 | ); 291 | } 292 | 293 | // Set the initial data. 294 | jobHandle.Complete(); 295 | 296 | for (var i = 0; i < entityCount; i++) 297 | { 298 | var entity = entities[i]; 299 | EntityManager.SetComponentData(entity, job.Triangles[i]); 300 | EntityManager.SetComponentData(entity, job.Positions[i]); 301 | EntityManager.SetComponentData(entity, job.Particles[i]); 302 | } 303 | 304 | // Destroy the temporary objects. 305 | entities.Dispose(); 306 | 307 | CleanupDefaultEntityTable(); 308 | 309 | job.Triangles.Dispose(); 310 | job.Positions.Dispose(); 311 | job.Particles.Dispose(); 312 | } 313 | 314 | #endregion 315 | } 316 | 317 | // Preview in edit mode 318 | [UnityEngine.ExecuteInEditMode] 319 | sealed class InstancePreviewSystem : ComponentSystem 320 | { 321 | struct Group 322 | { 323 | [ReadOnly] public SharedComponentDataArray Instances; 324 | [ReadOnly] public SharedComponentDataArray RenderSettings; 325 | [ReadOnly] public ComponentArray Transforms; 326 | public readonly int Length; 327 | } 328 | 329 | [Inject] Group _group; 330 | 331 | protected override void OnUpdate() 332 | { 333 | for (var i = 0; i < _group.Length; i++) 334 | { 335 | UnityEngine.Graphics.DrawMesh( 336 | _group.Instances[i].TemplateMesh, 337 | _group.Transforms[i].localToWorldMatrix, 338 | _group.RenderSettings[i].Material, 0 339 | ); 340 | } 341 | } 342 | } 343 | } 344 | -------------------------------------------------------------------------------- /Assets/Firefly/Instance.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 421ba195a07687745aaf4b718e0d0212 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/NoiseEffector.cs: -------------------------------------------------------------------------------- 1 | using Unity.Collections; 2 | using Unity.Entities; 3 | using Unity.Jobs; 4 | using Unity.Transforms; 5 | using Unity.Mathematics; 6 | 7 | namespace Firefly 8 | { 9 | sealed class NoiseEffectorSystem : JobComponentSystem 10 | { 11 | [Unity.Burst.BurstCompile] 12 | struct AnimationJob : IJobProcessComponentData 13 | { 14 | public NoiseEffector Effector; 15 | public float4x4 Transform; 16 | public float DeltaTime; 17 | 18 | float3 DFNoise(float3 p) 19 | { 20 | p *= Effector.Frequency; 21 | 22 | float3 grad1; 23 | noise.snoise(p, out grad1); 24 | 25 | p.z += 100; 26 | 27 | float3 grad2; 28 | noise.snoise(p, out grad2); 29 | 30 | return math.cross(grad1, grad2); 31 | } 32 | 33 | float Amplitude(float3 p) 34 | { 35 | var z = math.mul(Transform, new float4(p, 1)).z; 36 | return math.saturate(z + 0.5f); 37 | } 38 | 39 | public void Execute(ref Particle particle, ref Position position) 40 | { 41 | var pos = position.Value; 42 | var acc = DFNoise(pos) * Effector.Amplitude; 43 | var dt = DeltaTime * Amplitude(pos); 44 | 45 | particle.Velocity += acc * dt; 46 | particle.Time += dt; 47 | 48 | position.Value += particle.Velocity * dt; 49 | } 50 | } 51 | 52 | struct Group 53 | { 54 | [ReadOnly] public ComponentDataArray Effectors; 55 | [ReadOnly] public ComponentArray Transforms; 56 | public readonly int Length; 57 | } 58 | 59 | [Inject] Group _group; 60 | 61 | protected override JobHandle OnUpdate(JobHandle deps) 62 | { 63 | for (var i = 0; i < _group.Length; i++) 64 | { 65 | var job = new AnimationJob() { 66 | Effector = _group.Effectors[i], 67 | Transform = _group.Transforms[i].worldToLocalMatrix, 68 | DeltaTime = UnityEngine.Time.deltaTime 69 | }; 70 | deps = job.Schedule(this, 32, deps); 71 | } 72 | return deps; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /Assets/Firefly/NoiseEffector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62586600461acf3479f6218efb44a6c9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/ParticleExpiration.cs: -------------------------------------------------------------------------------- 1 | using Unity.Collections; 2 | using Unity.Entities; 3 | using Unity.Jobs; 4 | using System.Collections.Generic; 5 | 6 | namespace Firefly 7 | { 8 | sealed class ParticleExpirationBarrier : BarrierSystem {} 9 | 10 | [Unity.Burst.BurstCompile] 11 | struct ParticleExpirationJob : IJob 12 | { 13 | [ReadOnly] public EntityArray Entities; 14 | [ReadOnly] public ComponentDataArray Particles; 15 | 16 | public float Life; 17 | public EntityCommandBuffer CommandBuffer; 18 | 19 | public void Execute() 20 | { 21 | for (var i = 0; i < Entities.Length; i++) 22 | { 23 | if (Particles[i].Time > Life * Particles[i].LifeRandom) 24 | CommandBuffer.DestroyEntity(Entities[i]); 25 | } 26 | } 27 | } 28 | 29 | class ParticleExpirationSystemBase : JobComponentSystem 30 | where T : struct, ISharedComponentData, IParticleVariant 31 | { 32 | [Inject] protected ParticleExpirationBarrier _barrier; 33 | 34 | List _variants = new List(); 35 | 36 | ComponentGroup _group; 37 | 38 | protected override void OnCreateManager(int capacity) 39 | { 40 | _group = GetComponentGroup(typeof(Particle), typeof(T)); 41 | } 42 | 43 | protected override JobHandle OnUpdate(JobHandle deps) 44 | { 45 | var commandBuffer = _barrier.CreateCommandBuffer(); 46 | 47 | EntityManager.GetAllUniqueSharedComponentDatas(_variants); 48 | 49 | foreach (var variant in _variants) 50 | { 51 | _group.SetFilter(variant); 52 | 53 | var job = new ParticleExpirationJob() { 54 | Entities = _group.GetEntityArray(), 55 | Particles = _group.GetComponentDataArray(), 56 | Life = variant.GetLife(), 57 | CommandBuffer = commandBuffer 58 | }; 59 | deps = job.Schedule(deps); 60 | } 61 | 62 | _variants.Clear(); 63 | 64 | return deps; 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Assets/Firefly/ParticleExpiration.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: abf253df7072dbc45bce5f404ee2ce2b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/ParticleReconstruction.cs: -------------------------------------------------------------------------------- 1 | using Unity.Entities; 2 | using Unity.Jobs; 3 | using Unity.Transforms; 4 | using System.Collections.Generic; 5 | 6 | namespace Firefly 7 | { 8 | interface IParticleReconstructionJob 9 | { 10 | void Initialize( 11 | TVariant variant, 12 | ComponentGroup group, 13 | UnityEngine.Vector3 [] vertices, 14 | UnityEngine.Vector3 [] normals, 15 | NativeCounter.Concurrent counter 16 | ); 17 | } 18 | 19 | class ParticleReconstructionSystemBase : JobComponentSystem 20 | where TVariant : struct, ISharedComponentData, IParticleVariant 21 | where TJob : struct, IJobParallelFor, IParticleReconstructionJob 22 | { 23 | List _renderers = new List(); 24 | List _variants = new List(); 25 | 26 | ComponentGroup _group; 27 | 28 | protected override void OnCreateManager(int capacity) 29 | { 30 | _group = GetComponentGroup( 31 | typeof(Renderer), typeof(TVariant), 32 | typeof(Particle), typeof(Position), typeof(Triangle) 33 | ); 34 | } 35 | 36 | protected override JobHandle OnUpdate(JobHandle deps) 37 | { 38 | EntityManager.GetAllUniqueSharedComponentDatas(_renderers); 39 | EntityManager.GetAllUniqueSharedComponentDatas(_variants); 40 | 41 | var job = new TJob(); 42 | 43 | for (var i1 = 0; i1 < _renderers.Count; i1++) 44 | { 45 | var renderer = _renderers[i1]; 46 | 47 | for (var i2 = 0; i2 < _variants.Count; i2++) 48 | { 49 | var variant = _variants[i2]; 50 | 51 | _group.SetFilter(renderer, variant); 52 | 53 | var groupCount = _group.CalculateLength(); 54 | if (groupCount == 0) continue; 55 | 56 | job.Initialize( 57 | variant, _group, 58 | renderer.Vertices, renderer.Normals, 59 | renderer.ConcurrentCounter 60 | ); 61 | 62 | deps = job.Schedule(groupCount, 8, deps); 63 | } 64 | } 65 | 66 | _renderers.Clear(); 67 | _variants.Clear(); 68 | 69 | return deps; 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Assets/Firefly/ParticleReconstruction.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b1d68f1f9f12353408f3cd14b5748b1d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Renderer.cs: -------------------------------------------------------------------------------- 1 | using Unity.Collections.LowLevel.Unsafe; 2 | using Unity.Entities; 3 | using Unity.Mathematics; 4 | using System.Collections.Generic; 5 | 6 | namespace Firefly 7 | { 8 | sealed class RendererSystem : ComponentSystem 9 | { 10 | List _renderers = new List(); 11 | ComponentGroup _dependency; // Just used to enable dependency tracking 12 | int [] _indexArray = new int [Renderer.MaxVertices]; 13 | 14 | protected override void OnCreateManager(int capacity) 15 | { 16 | _dependency = GetComponentGroup(typeof(Particle), typeof(Renderer)); 17 | 18 | // Default index array 19 | for (var i = 0; i < Renderer.MaxVertices; i++) _indexArray[i] = i; 20 | } 21 | 22 | unsafe protected override void OnUpdate() 23 | { 24 | var identityMatrix = UnityEngine.Matrix4x4.identity; 25 | 26 | // Iterate over the renderer components. 27 | EntityManager.GetAllUniqueSharedComponentDatas(_renderers); 28 | for (var i = 0; i < _renderers.Count; i++) 29 | { 30 | var renderer = _renderers[i]; 31 | var mesh = renderer.WorkMesh; 32 | 33 | // Do nothing if no mesh (== default empty data) 34 | if (mesh == null) continue; 35 | 36 | // Check if the mesh has been already used. 37 | var meshIsReady = (mesh.vertexCount > 0); 38 | 39 | if (!meshIsReady) 40 | { 41 | // Mesh initial settings: 32-bit index, dynamically updated 42 | mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; 43 | mesh.MarkDynamic(); 44 | } 45 | 46 | // Clear the unused part of the vertex buffer. 47 | var vertexCount = renderer.Counter.Count * 3; 48 | UnsafeUtility.MemClear( 49 | UnsafeUtility.AddressOf(ref renderer.Vertices[vertexCount]), 50 | sizeof(float3) * (Renderer.MaxVertices - vertexCount) 51 | ); 52 | 53 | // Update the vertex/normal array via the managed buffers. 54 | mesh.vertices = renderer.Vertices; 55 | mesh.normals = renderer.Normals; 56 | 57 | if (!meshIsReady) 58 | { 59 | // Set the default index array for the first time. 60 | mesh.triangles = _indexArray; 61 | 62 | // Set a big bounding box to avoid being culled. 63 | mesh.bounds = new UnityEngine.Bounds( 64 | UnityEngine.Vector3.zero, UnityEngine.Vector3.one * 1000 65 | ); 66 | } 67 | 68 | // Draw call 69 | UnityEngine.Graphics.DrawMesh( 70 | mesh, identityMatrix, renderer.Settings.Material, 0 71 | ); 72 | 73 | // Reset the triangle counter for the next frame. 74 | renderer.Counter.Count = 0; 75 | } 76 | 77 | _renderers.Clear(); 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /Assets/Firefly/Renderer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 37b1fb33f056dce48bb71404912f284f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/SimpleParticle.cs: -------------------------------------------------------------------------------- 1 | using Unity.Collections; 2 | using Unity.Collections.LowLevel.Unsafe; 3 | using Unity.Entities; 4 | using Unity.Jobs; 5 | using Unity.Mathematics; 6 | using Unity.Transforms; 7 | 8 | namespace Firefly 9 | { 10 | [Unity.Burst.BurstCompile] 11 | unsafe struct SimpleReconstructionJob : 12 | IJobParallelFor, IParticleReconstructionJob 13 | { 14 | [ReadOnly] ComponentDataArray _particles; 15 | [ReadOnly] ComponentDataArray _positions; 16 | [ReadOnly] ComponentDataArray _triangles; 17 | 18 | [NativeDisableUnsafePtrRestriction] void* _vertices; 19 | [NativeDisableUnsafePtrRestriction] void* _normals; 20 | 21 | SimpleParticle _variant; 22 | NativeCounter.Concurrent _counter; 23 | 24 | public void Initialize( 25 | SimpleParticle variant, 26 | ComponentGroup group, 27 | UnityEngine.Vector3 [] vertices, 28 | UnityEngine.Vector3 [] normals, 29 | NativeCounter.Concurrent counter 30 | ) 31 | { 32 | _particles = group.GetComponentDataArray(); 33 | _positions = group.GetComponentDataArray(); 34 | _triangles = group.GetComponentDataArray(); 35 | 36 | _vertices = UnsafeUtility.AddressOf(ref vertices[0]); 37 | _normals = UnsafeUtility.AddressOf(ref normals[0]); 38 | 39 | _variant = variant; 40 | _counter = counter; 41 | } 42 | 43 | public void Execute(int index) 44 | { 45 | var particle = _particles[index]; 46 | var face = _triangles[index]; 47 | 48 | // Scaling with simple lerp 49 | var scale = 1 - particle.Time / (_variant.Life * particle.LifeRandom); 50 | 51 | // Random rotation 52 | var fwd = particle.Velocity + 1e-4f; 53 | var axis = math.normalize(math.cross(fwd, face.Vertex1)); 54 | var avel = Random.Value01(particle.ID + 10000) * 8; 55 | var rot = quaternion.axisAngle(axis, particle.Time * avel); 56 | 57 | // Vertex positions 58 | var pos = _positions[index].Value; 59 | var v1 = pos + math.mul(rot, face.Vertex1) * scale; 60 | var v2 = pos + math.mul(rot, face.Vertex2) * scale; 61 | var v3 = pos + math.mul(rot, face.Vertex3) * scale; 62 | 63 | // Vertex output 64 | var i = _counter.Increment() * 3; 65 | UnsafeUtility.WriteArrayElement(_vertices, i + 0, v1); 66 | UnsafeUtility.WriteArrayElement(_vertices, i + 1, v2); 67 | UnsafeUtility.WriteArrayElement(_vertices, i + 2, v3); 68 | 69 | // Normal output 70 | var n = math.normalize(math.cross(v2 - v1, v3 - v1)); 71 | UnsafeUtility.WriteArrayElement(_normals, i + 0, n); 72 | UnsafeUtility.WriteArrayElement(_normals, i + 1, n); 73 | UnsafeUtility.WriteArrayElement(_normals, i + 2, n); 74 | } 75 | } 76 | 77 | sealed class SimpleParticleExpirationSystem : 78 | ParticleExpirationSystemBase {} 79 | 80 | sealed class SimpleParticleReconstructionSystem : 81 | ParticleReconstructionSystemBase {} 82 | } 83 | -------------------------------------------------------------------------------- /Assets/Firefly/SimpleParticle.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 706e3e7d0b5411d4d9ab5d39afd805e4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Utility.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 64ac5edb5a201044b83e2dbafd6354d5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Firefly/Utility/NativeCounter.cs: -------------------------------------------------------------------------------- 1 | // Slightly modified version of NativeCounter provided in EntityComponentSystemSamples 2 | // Only Increment() was modified to return the old count value. 3 | 4 | using System; 5 | using System.Runtime.InteropServices; 6 | using System.Threading; 7 | using Unity.Collections; 8 | using Unity.Collections.LowLevel.Unsafe; 9 | using Unity.Jobs.LowLevel.Unsafe; 10 | 11 | namespace Firefly { 12 | 13 | [StructLayout(LayoutKind.Sequential)] 14 | [NativeContainer] 15 | unsafe public struct NativeCounter 16 | { 17 | // The actual pointer to the allocated count needs to have restrictions relaxed so jobs can be schedled with this container 18 | [NativeDisableUnsafePtrRestriction] 19 | int* m_Counter; 20 | 21 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 22 | AtomicSafetyHandle m_Safety; 23 | // The dispose sentinel tracks memory leaks. It is a managed type so it is cleared to null when scheduling a job 24 | // The job cannot dispose the container, and no one else can dispose it until the job has run so it is ok to not pass it along 25 | // This attribute is required, without it this native container cannot be passed to a job since that would give the job access to a managed object 26 | [NativeSetClassTypeToNullOnSchedule] 27 | DisposeSentinel m_DisposeSentinel; 28 | #endif 29 | 30 | // Keep track of where the memory for this was allocated 31 | Allocator m_AllocatorLabel; 32 | 33 | public NativeCounter(Allocator label) 34 | { 35 | // This check is redundant since we always use an int which is blittable. 36 | // It is here as an example of how to check for type correctness for generic types. 37 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 38 | if (!UnsafeUtility.IsBlittable()) 39 | throw new ArgumentException(string.Format("{0} used in NativeQueue<{0}> must be blittable", typeof(int))); 40 | #endif 41 | m_AllocatorLabel = label; 42 | 43 | // Allocate native memory for a single integer 44 | m_Counter = (int*)UnsafeUtility.Malloc(UnsafeUtility.SizeOf(), 4, label); 45 | 46 | // Create a dispose sentinel to track memory leaks. This also creates the AtomicSafetyHandle 47 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 48 | DisposeSentinel.Create(out m_Safety, out m_DisposeSentinel, 0); 49 | #endif 50 | // Initialize the count to 0 to avoid uninitialized data 51 | Count = 0; 52 | } 53 | 54 | public void Increment() 55 | { 56 | // Verify that the caller has write permission on this data. 57 | // This is the race condition protection, without these checks the AtomicSafetyHandle is useless 58 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 59 | AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); 60 | #endif 61 | (*m_Counter)++; 62 | } 63 | 64 | public int Count 65 | { 66 | get 67 | { 68 | // Verify that the caller has read permission on this data. 69 | // This is the race condition protection, without these checks the AtomicSafetyHandle is useless 70 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 71 | AtomicSafetyHandle.CheckReadAndThrow(m_Safety); 72 | #endif 73 | return *m_Counter; 74 | } 75 | set 76 | { 77 | // Verify that the caller has write permission on this data. This is the race condition protection, without these checks the AtomicSafetyHandle is useless 78 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 79 | AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); 80 | #endif 81 | *m_Counter = value; 82 | } 83 | } 84 | 85 | public bool IsCreated 86 | { 87 | get { return m_Counter != null; } 88 | } 89 | 90 | public void Dispose() 91 | { 92 | // Let the dispose sentinel know that the data has been freed so it does not report any memory leaks 93 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 94 | DisposeSentinel.Dispose(m_Safety, ref m_DisposeSentinel); 95 | #endif 96 | 97 | UnsafeUtility.Free(m_Counter, m_AllocatorLabel); 98 | m_Counter = null; 99 | } 100 | 101 | [NativeContainer] 102 | // This attribute is what makes it possible to use NativeCounter.Concurrent in a ParallelFor job 103 | [NativeContainerIsAtomicWriteOnly] 104 | unsafe public struct Concurrent 105 | { 106 | // Copy of the pointer from the full NativeCounter 107 | [NativeDisableUnsafePtrRestriction] 108 | int* m_Counter; 109 | 110 | // Copy of the AtomicSafetyHandle from the full NativeCounter. The dispose sentinel is not copied since this inner struct does not own the memory and is not responsible for freeing it 111 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 112 | AtomicSafetyHandle m_Safety; 113 | #endif 114 | 115 | // This is what makes it possible to assign to NativeCounter.Concurrent from NativeCounter 116 | public static implicit operator Concurrent (NativeCounter cnt) 117 | { 118 | Concurrent concurrent; 119 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 120 | AtomicSafetyHandle.CheckWriteAndThrow(cnt.m_Safety); 121 | concurrent.m_Safety = cnt.m_Safety; 122 | AtomicSafetyHandle.UseSecondaryVersion(ref concurrent.m_Safety); 123 | #endif 124 | 125 | concurrent.m_Counter = cnt.m_Counter; 126 | return concurrent; 127 | } 128 | 129 | public int Increment() 130 | { 131 | // Increment still needs to check for write permissions 132 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 133 | AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); 134 | #endif 135 | // The actual increment is implemented with an atomic since it can be incremented by multiple threads at the same time 136 | return Interlocked.Increment(ref *m_Counter) - 1; 137 | } 138 | } 139 | } 140 | 141 | [StructLayout(LayoutKind.Sequential)] 142 | [NativeContainer] 143 | unsafe public struct NativePerThreadCounter 144 | { 145 | // The actual pointer to the allocated count needs to have restrictions relaxed so jobs can be schedled with this container 146 | [NativeDisableUnsafePtrRestriction] 147 | int* m_Counter; 148 | 149 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 150 | AtomicSafetyHandle m_Safety; 151 | // The dispose sentinel tracks memory leaks. It is a managed type so it is cleared to null when scheduling a job 152 | // The job cannot dispose the container, and no one else can dispose it until the job has run so it is ok to not pass it along 153 | // This attribute is required, without it this native container cannot be passed to a job since that would give the job access to a managed object 154 | [NativeSetClassTypeToNullOnSchedule] 155 | DisposeSentinel m_DisposeSentinel; 156 | #endif 157 | 158 | // Keep track of where the memory for this was allocated 159 | Allocator m_AllocatorLabel; 160 | 161 | public const int IntsPerCacheLine = JobsUtility.CacheLineSize / sizeof(int); 162 | 163 | public NativePerThreadCounter(Allocator label) 164 | { 165 | // This check is redundant since we always use an int which is blittable. 166 | // It is here as an example of how to check for type correctness for generic types. 167 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 168 | if (!UnsafeUtility.IsBlittable()) 169 | throw new ArgumentException(string.Format("{0} used in NativeQueue<{0}> must be blittable", typeof(int))); 170 | #endif 171 | m_AllocatorLabel = label; 172 | 173 | // One full cache line (integers per cacheline * size of integer) for each potential worker index, JobsUtility.MaxJobThreadCount 174 | m_Counter = (int*)UnsafeUtility.Malloc(UnsafeUtility.SizeOf()*IntsPerCacheLine*JobsUtility.MaxJobThreadCount, 4, label); 175 | 176 | // Create a dispose sentinel to track memory leaks. This also creates the AtomicSafetyHandle 177 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 178 | DisposeSentinel.Create(out m_Safety, out m_DisposeSentinel, 0); 179 | #endif 180 | // Initialize the count to 0 to avoid uninitialized data 181 | Count = 0; 182 | } 183 | 184 | public void Increment() 185 | { 186 | // Verify that the caller has write permission on this data. 187 | // This is the race condition protection, without these checks the AtomicSafetyHandle is useless 188 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 189 | AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); 190 | #endif 191 | (*m_Counter)++; 192 | } 193 | 194 | public int Count 195 | { 196 | get 197 | { 198 | // Verify that the caller has read permission on this data. 199 | // This is the race condition protection, without these checks the AtomicSafetyHandle is useless 200 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 201 | AtomicSafetyHandle.CheckReadAndThrow(m_Safety); 202 | #endif 203 | int count = 0; 204 | for (int i = 0; i < JobsUtility.MaxJobThreadCount; ++i) 205 | count += m_Counter[IntsPerCacheLine * i]; 206 | return count; 207 | } 208 | set 209 | { 210 | // Verify that the caller has write permission on this data. 211 | // This is the race condition protection, without these checks the AtomicSafetyHandle is useless 212 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 213 | AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); 214 | #endif 215 | // Clear all locally cached counts, 216 | // set the first one to the required value 217 | for (int i = 1; i < JobsUtility.MaxJobThreadCount; ++i) 218 | m_Counter[IntsPerCacheLine * i] = 0; 219 | *m_Counter = value; 220 | } 221 | } 222 | 223 | public bool IsCreated 224 | { 225 | get { return m_Counter != null; } 226 | } 227 | 228 | public void Dispose() 229 | { 230 | // Let the dispose sentinel know that the data has been freed so it does not report any memory leaks 231 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 232 | DisposeSentinel.Dispose(m_Safety, ref m_DisposeSentinel); 233 | #endif 234 | 235 | UnsafeUtility.Free(m_Counter, m_AllocatorLabel); 236 | m_Counter = null; 237 | } 238 | 239 | [NativeContainer] 240 | [NativeContainerIsAtomicWriteOnly] 241 | // Let the JobSystem know that it should inject the current worker index into this container 242 | unsafe public struct Concurrent 243 | { 244 | [NativeDisableUnsafePtrRestriction] 245 | int* m_Counter; 246 | 247 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 248 | AtomicSafetyHandle m_Safety; 249 | #endif 250 | 251 | // The current worker thread index, it must use this exact name since it is injected 252 | [NativeSetThreadIndex] 253 | int m_ThreadIndex; 254 | 255 | public static implicit operator Concurrent (NativePerThreadCounter cnt) 256 | { 257 | Concurrent concurrent; 258 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 259 | AtomicSafetyHandle.CheckWriteAndThrow(cnt.m_Safety); 260 | concurrent.m_Safety = cnt.m_Safety; 261 | AtomicSafetyHandle.UseSecondaryVersion(ref concurrent.m_Safety); 262 | #endif 263 | 264 | concurrent.m_Counter = cnt.m_Counter; 265 | concurrent.m_ThreadIndex = 0; 266 | return concurrent; 267 | } 268 | 269 | public void Increment() 270 | { 271 | #if ENABLE_UNITY_COLLECTIONS_CHECKS 272 | AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); 273 | #endif 274 | // No need for atomics any more since we are just incrementing the local count 275 | ++m_Counter[IntsPerCacheLine*m_ThreadIndex]; 276 | } 277 | } 278 | } 279 | 280 | } 281 | -------------------------------------------------------------------------------- /Assets/Firefly/Utility/NativeCounter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac9923b306635704fbc074460041d4eb 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Utility/Random.cs: -------------------------------------------------------------------------------- 1 | namespace Firefly 2 | { 3 | public static class Random 4 | { 5 | // Hash function from H. Schechter & R. Bridson, goo.gl/RXiKaH 6 | public static uint Hash(uint s) 7 | { 8 | s ^= 2747636419u; 9 | s *= 2654435769u; 10 | s ^= s >> 16; 11 | s *= 2654435769u; 12 | s ^= s >> 16; 13 | s *= 2654435769u; 14 | return s; 15 | } 16 | 17 | public static float Value01(uint seed) 18 | { 19 | return Hash(seed) / 4294967295.0f; // 2^32-1 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Assets/Firefly/Utility/Random.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cbdd4f7bb0dc93943a53ea65583d0934 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ded81f2c21bfa114f83c67e9a09e2803 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/ButterflyParticleComponent.cs: -------------------------------------------------------------------------------- 1 | namespace Firefly 2 | { 3 | [UnityEngine.AddComponentMenu("Firefly/Firefly Butterfly Particle")] 4 | sealed class ButterflyParticleComponent : 5 | Unity.Entities.SharedComponentDataWrapper {} 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/ButterflyParticleComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c54631ba04dd19841ba164a400d451ec 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/InstanceComponent.cs: -------------------------------------------------------------------------------- 1 | namespace Firefly 2 | { 3 | [UnityEngine.AddComponentMenu("Firefly/Firefly Instance")] 4 | sealed class InstanceComponent : 5 | Unity.Entities.SharedComponentDataWrapper {} 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/InstanceComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: aacf989ff65fff54e866d8a533f19703 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/NoiseEffectorComponent.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace Firefly 4 | { 5 | [AddComponentMenu("Firefly/Firefly Noise Effector")] 6 | sealed class NoiseEffectorComponent : 7 | Unity.Entities.ComponentDataWrapper 8 | { 9 | void OnDrawGizmos() 10 | { 11 | Gizmos.matrix = transform.localToWorldMatrix; 12 | Gizmos.color = new Color(1, 1, 0, 0.5f); 13 | Gizmos.DrawWireCube(Vector3.zero, Vector3.one); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/NoiseEffectorComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8740bcad89c0cd04785e46ef510520f8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/RenderSettingsComponent.cs: -------------------------------------------------------------------------------- 1 | namespace Firefly 2 | { 3 | [UnityEngine.AddComponentMenu("Firefly/Firefly Render Settings")] 4 | sealed class RenderSettingsComponent : 5 | Unity.Entities.SharedComponentDataWrapper {} 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/RenderSettingsComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c182c37de3608cf4c97fe780e29d434e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/SimpleParticleComponent.cs: -------------------------------------------------------------------------------- 1 | namespace Firefly 2 | { 3 | [UnityEngine.AddComponentMenu("Firefly/Firefly Simple Particle")] 4 | sealed class SimpleParticleComponent : 5 | Unity.Entities.SharedComponentDataWrapper {} 6 | } 7 | -------------------------------------------------------------------------------- /Assets/Firefly/Wrappers/SimpleParticleComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b194841a68c8a524d82173658cdb308a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Test.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 18bba3b2acbc98446b25e8bf81b65562 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Test/Backdrop.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Backdrop 10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 0.18867922, g: 0.18867922, b: 0.18867922, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Test/Backdrop.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a1315f180d617054cb428b7a91e5c291 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Test/Backdrop.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.79 (sub 0) OBJ File: 'Backdrop.blend' 2 | # www.blender.org 3 | g Backdrop 4 | v -10.000000 8.000000 0.000001 5 | v 10.000000 7.999999 -0.000001 6 | v -10.000000 7.671297 0.000001 7 | v 10.000000 7.671296 -0.000001 8 | v -10.000000 7.203704 0.000001 9 | v 10.000000 7.203703 -0.000001 10 | v -10.000000 6.625001 0.000001 11 | v 10.000000 6.625000 -0.000001 12 | v -10.000000 5.962964 0.000001 13 | v 10.000000 5.962963 -0.000001 14 | v -10.000000 5.245371 0.000001 15 | v 10.000000 5.245370 -0.000001 16 | v -10.000000 4.500001 0.000001 17 | v 10.000000 4.500000 -0.000001 18 | v -10.000000 3.754631 0.000001 19 | v 10.000000 3.754630 -0.000001 20 | v -10.000000 3.037038 0.000001 21 | v 10.000000 3.037037 -0.000001 22 | v -10.000000 2.375001 0.000001 23 | v 10.000000 2.375000 -0.000001 24 | v -10.000000 1.796298 0.000001 25 | v 10.000000 1.796297 -0.000001 26 | v -10.000000 1.328705 0.000001 27 | v 10.000000 1.328704 -0.000001 28 | v -10.000001 1.000000 0.000001 29 | v 10.000001 1.000000 -0.000001 30 | v -10.000002 0.770255 -0.000578 31 | v 10.000002 0.770254 -0.000579 32 | v -10.000001 0.578704 -0.004629 33 | v 10.000001 0.578703 -0.004631 34 | v -10.000000 0.421876 -0.015624 35 | v 10.000000 0.421875 -0.015626 36 | v -10.000001 0.296297 -0.037036 37 | v 10.000001 0.296296 -0.037038 38 | v -10.000000 0.198496 -0.072337 39 | v 10.000000 0.198495 -0.072339 40 | v -10.000000 0.125001 -0.124999 41 | v 10.000000 0.125000 -0.125001 42 | v -10.000002 0.072339 -0.198494 43 | v 10.000002 0.072338 -0.198496 44 | v -10.000002 0.037038 -0.296296 45 | v 10.000002 0.037037 -0.296297 46 | v -10.000001 0.015626 -0.421874 47 | v 10.000001 0.015625 -0.421876 48 | v -10.000000 0.004630 -0.578703 49 | v 10.000000 0.004629 -0.578705 50 | v -10.000001 0.000579 -0.770254 51 | v 10.000001 0.000578 -0.770256 52 | v -10.000002 0.000000 -0.999999 53 | v 10.000002 -0.000000 -1.000001 54 | v -10.000000 0.000000 -1.328703 55 | v 10.000000 -0.000000 -1.328704 56 | v -10.000000 0.000000 -1.796295 57 | v 10.000000 -0.000000 -1.796297 58 | v -10.000000 0.000000 -2.374999 59 | v 10.000000 -0.000000 -2.375001 60 | v -10.000000 0.000000 -3.037036 61 | v 10.000000 -0.000000 -3.037038 62 | v -10.000000 0.000000 -3.754629 63 | v 10.000000 -0.000000 -3.754631 64 | v -10.000000 0.000000 -4.499999 65 | v 10.000000 -0.000000 -4.500001 66 | v -10.000000 0.000000 -5.245369 67 | v 10.000000 -0.000000 -5.245371 68 | v -10.000001 0.000000 -5.962962 69 | v 9.999999 -0.000000 -5.962964 70 | v -10.000001 0.000000 -6.624999 71 | v 9.999999 -0.000000 -6.625001 72 | v -10.000001 0.000000 -7.203703 73 | v 9.999999 -0.000000 -7.203705 74 | v -10.000001 0.000000 -7.671296 75 | v 9.999999 -0.000000 -7.671298 76 | v -10.000001 0.000000 -7.999999 77 | v 9.999999 -0.000000 -8.000001 78 | vn 0.0000 0.0000 -1.0000 79 | vn 0.0000 0.0013 -1.0000 80 | vn 0.0000 0.0118 -0.9999 81 | vn 0.0000 0.0455 -0.9989 82 | vn 0.0000 0.1191 -0.9929 83 | vn 0.0000 0.2548 -0.9670 84 | vn 0.0000 0.4654 -0.8851 85 | vn 0.0000 0.7071 -0.7071 86 | vn 0.0000 0.8851 -0.4654 87 | vn 0.0000 0.9670 -0.2548 88 | vn 0.0000 0.9929 -0.1191 89 | vn 0.0000 0.9989 -0.0455 90 | vn 0.0000 0.9999 -0.0118 91 | vn 0.0000 1.0000 -0.0013 92 | vn 0.0000 1.0000 0.0000 93 | s 1 94 | f 2//1 4//1 3//1 1//1 95 | f 4//1 6//1 5//1 3//1 96 | f 6//1 8//1 7//1 5//1 97 | f 8//1 10//1 9//1 7//1 98 | f 10//1 12//1 11//1 9//1 99 | f 12//1 14//1 13//1 11//1 100 | f 14//1 16//1 15//1 13//1 101 | f 16//1 18//1 17//1 15//1 102 | f 18//1 20//1 19//1 17//1 103 | f 20//1 22//1 21//1 19//1 104 | f 22//1 24//1 23//1 21//1 105 | f 24//1 26//2 25//2 23//1 106 | f 26//2 28//3 27//3 25//2 107 | f 28//3 30//4 29//4 27//3 108 | f 30//4 32//5 31//5 29//4 109 | f 32//5 34//6 33//6 31//5 110 | f 34//6 36//7 35//7 33//6 111 | f 36//7 38//8 37//8 35//7 112 | f 38//8 40//9 39//9 37//8 113 | f 40//9 42//10 41//10 39//9 114 | f 42//10 44//11 43//11 41//10 115 | f 44//11 46//12 45//12 43//11 116 | f 46//12 48//13 47//13 45//12 117 | f 48//13 50//14 49//14 47//13 118 | f 50//14 52//15 51//15 49//14 119 | f 52//15 54//15 53//15 51//15 120 | f 54//15 56//15 55//15 53//15 121 | f 56//15 58//15 57//15 55//15 122 | f 58//15 60//15 59//15 57//15 123 | f 60//15 62//15 61//15 59//15 124 | f 62//15 64//15 63//15 61//15 125 | f 64//15 66//15 65//15 63//15 126 | f 66//15 68//15 67//15 65//15 127 | f 68//15 70//15 69//15 67//15 128 | f 70//15 72//15 71//15 69//15 129 | f 72//15 74//15 73//15 71//15 130 | -------------------------------------------------------------------------------- /Assets/Test/Backdrop.obj.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c328fcce09e685e4c8fceb37322da979 3 | ModelImporter: 4 | serializedVersion: 22 5 | fileIDToRecycleName: 6 | 100000: Backdrop 7 | 100002: //RootNode 8 | 400000: Backdrop 9 | 400002: //RootNode 10 | 2100000: BackdropMat 11 | 2300000: Backdrop 12 | 3300000: Backdrop 13 | 4300000: Backdrop 14 | externalObjects: {} 15 | materials: 16 | importMaterials: 0 17 | materialName: 0 18 | materialSearch: 1 19 | materialLocation: 1 20 | animations: 21 | legacyGenerateAnimations: 4 22 | bakeSimulation: 0 23 | resampleCurves: 1 24 | optimizeGameObjects: 0 25 | motionNodeName: 26 | rigImportErrors: 27 | rigImportWarnings: 28 | animationImportErrors: 29 | animationImportWarnings: 30 | animationRetargetingWarnings: 31 | animationDoRetargetingWarnings: 0 32 | importAnimatedCustomProperties: 0 33 | importConstraints: 0 34 | animationCompression: 1 35 | animationRotationError: 0.5 36 | animationPositionError: 0.5 37 | animationScaleError: 0.5 38 | animationWrapMode: 0 39 | extraExposedTransformPaths: [] 40 | extraUserProperties: [] 41 | clipAnimations: [] 42 | isReadable: 1 43 | meshes: 44 | lODScreenPercentages: [] 45 | globalScale: 1 46 | meshCompression: 0 47 | addColliders: 0 48 | importVisibility: 0 49 | importBlendShapes: 0 50 | importCameras: 0 51 | importLights: 0 52 | swapUVChannels: 0 53 | generateSecondaryUV: 0 54 | useFileUnits: 1 55 | optimizeMeshForGPU: 1 56 | keepQuads: 0 57 | weldVertices: 1 58 | preserveHierarchy: 0 59 | indexFormat: 0 60 | secondaryUVAngleDistortion: 8 61 | secondaryUVAreaDistortion: 15.000001 62 | secondaryUVHardAngle: 88 63 | secondaryUVPackMargin: 4 64 | useFileScale: 1 65 | tangentSpace: 66 | normalSmoothAngle: 60 67 | normalImportMode: 0 68 | tangentImportMode: 3 69 | normalCalculationMode: 4 70 | importAnimation: 0 71 | copyAvatar: 0 72 | humanDescription: 73 | serializedVersion: 2 74 | human: [] 75 | skeleton: [] 76 | armTwist: 0.5 77 | foreArmTwist: 0.5 78 | upperLegTwist: 0.5 79 | legTwist: 0.5 80 | armStretch: 0.05 81 | legStretch: 0.05 82 | feetSpacing: 0 83 | rootMotionBoneName: 84 | rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} 85 | hasTranslationDoF: 0 86 | hasExtraRoot: 0 87 | skeletonHasParents: 1 88 | lastHumanDescriptionAvatarSource: {instanceID: 0} 89 | animationType: 0 90 | humanoidOversampling: 1 91 | additionalBone: 0 92 | userData: 93 | assetBundleName: 94 | assetBundleVariant: 95 | -------------------------------------------------------------------------------- /Assets/Test/PostFx.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_GameObject: {fileID: 0} 9 | m_Enabled: 1 10 | m_EditorHideFlags: 0 11 | m_Script: {fileID: 11500000, guid: 8e6292b2c06870d4495f009f912b9600, type: 3} 12 | m_Name: PostFx 13 | m_EditorClassIdentifier: 14 | settings: 15 | - {fileID: 114151678190651306} 16 | - {fileID: 114076207425552896} 17 | - {fileID: 114756806456984492} 18 | - {fileID: 114213499842834740} 19 | --- !u!114 &114076207425552896 20 | MonoBehaviour: 21 | m_ObjectHideFlags: 3 22 | m_PrefabParentObject: {fileID: 0} 23 | m_PrefabInternal: {fileID: 0} 24 | m_GameObject: {fileID: 0} 25 | m_Enabled: 1 26 | m_EditorHideFlags: 0 27 | m_Script: {fileID: 11500000, guid: 40b924e2dad56384a8df2a1e111bb675, type: 3} 28 | m_Name: Vignette 29 | m_EditorClassIdentifier: 30 | active: 1 31 | enabled: 32 | overrideState: 1 33 | value: 1 34 | mode: 35 | overrideState: 0 36 | value: 0 37 | color: 38 | overrideState: 0 39 | value: {r: 0, g: 0, b: 0, a: 1} 40 | center: 41 | overrideState: 0 42 | value: {x: 0.5, y: 0.5} 43 | intensity: 44 | overrideState: 1 45 | value: 0.25 46 | smoothness: 47 | overrideState: 0 48 | value: 0.2 49 | roundness: 50 | overrideState: 0 51 | value: 1 52 | rounded: 53 | overrideState: 0 54 | value: 0 55 | mask: 56 | overrideState: 0 57 | value: {fileID: 0} 58 | defaultState: 1 59 | opacity: 60 | overrideState: 0 61 | value: 1 62 | --- !u!114 &114151678190651306 63 | MonoBehaviour: 64 | m_ObjectHideFlags: 3 65 | m_PrefabParentObject: {fileID: 0} 66 | m_PrefabInternal: {fileID: 0} 67 | m_GameObject: {fileID: 0} 68 | m_Enabled: 1 69 | m_EditorHideFlags: 0 70 | m_Script: {fileID: 11500000, guid: c1cb7e9e120078f43bce4f0b1be547a7, type: 3} 71 | m_Name: AmbientOcclusion 72 | m_EditorClassIdentifier: 73 | active: 1 74 | enabled: 75 | overrideState: 1 76 | value: 1 77 | mode: 78 | overrideState: 0 79 | value: 1 80 | intensity: 81 | overrideState: 1 82 | value: 2 83 | color: 84 | overrideState: 0 85 | value: {r: 0, g: 0, b: 0, a: 1} 86 | ambientOnly: 87 | overrideState: 0 88 | value: 0 89 | noiseFilterTolerance: 90 | overrideState: 0 91 | value: 0 92 | blurTolerance: 93 | overrideState: 0 94 | value: -4.6 95 | upsampleTolerance: 96 | overrideState: 0 97 | value: -12 98 | thicknessModifier: 99 | overrideState: 0 100 | value: 1 101 | directLightingStrength: 102 | overrideState: 0 103 | value: 0 104 | radius: 105 | overrideState: 0 106 | value: 0.25 107 | quality: 108 | overrideState: 0 109 | value: 2 110 | --- !u!114 &114213499842834740 111 | MonoBehaviour: 112 | m_ObjectHideFlags: 3 113 | m_PrefabParentObject: {fileID: 0} 114 | m_PrefabInternal: {fileID: 0} 115 | m_GameObject: {fileID: 0} 116 | m_Enabled: 1 117 | m_EditorHideFlags: 0 118 | m_Script: {fileID: 11500000, guid: adb84e30e02715445aeb9959894e3b4d, type: 3} 119 | m_Name: ColorGrading 120 | m_EditorClassIdentifier: 121 | active: 1 122 | enabled: 123 | overrideState: 1 124 | value: 1 125 | gradingMode: 126 | overrideState: 0 127 | value: 1 128 | externalLut: 129 | overrideState: 0 130 | value: {fileID: 0} 131 | defaultState: 1 132 | tonemapper: 133 | overrideState: 1 134 | value: 2 135 | toneCurveToeStrength: 136 | overrideState: 0 137 | value: 0 138 | toneCurveToeLength: 139 | overrideState: 0 140 | value: 0.5 141 | toneCurveShoulderStrength: 142 | overrideState: 0 143 | value: 0 144 | toneCurveShoulderLength: 145 | overrideState: 0 146 | value: 0.5 147 | toneCurveShoulderAngle: 148 | overrideState: 0 149 | value: 0 150 | toneCurveGamma: 151 | overrideState: 0 152 | value: 1 153 | ldrLut: 154 | overrideState: 0 155 | value: {fileID: 0} 156 | defaultState: 4 157 | ldrLutContribution: 158 | overrideState: 0 159 | value: 1 160 | temperature: 161 | overrideState: 1 162 | value: 7 163 | tint: 164 | overrideState: 1 165 | value: -1 166 | colorFilter: 167 | overrideState: 0 168 | value: {r: 1, g: 1, b: 1, a: 1} 169 | hueShift: 170 | overrideState: 0 171 | value: 0 172 | saturation: 173 | overrideState: 0 174 | value: 0 175 | brightness: 176 | overrideState: 0 177 | value: 0 178 | postExposure: 179 | overrideState: 1 180 | value: 1.19 181 | contrast: 182 | overrideState: 0 183 | value: 0 184 | mixerRedOutRedIn: 185 | overrideState: 0 186 | value: 100 187 | mixerRedOutGreenIn: 188 | overrideState: 0 189 | value: 0 190 | mixerRedOutBlueIn: 191 | overrideState: 0 192 | value: 0 193 | mixerGreenOutRedIn: 194 | overrideState: 0 195 | value: 0 196 | mixerGreenOutGreenIn: 197 | overrideState: 0 198 | value: 100 199 | mixerGreenOutBlueIn: 200 | overrideState: 0 201 | value: 0 202 | mixerBlueOutRedIn: 203 | overrideState: 0 204 | value: 0 205 | mixerBlueOutGreenIn: 206 | overrideState: 0 207 | value: 0 208 | mixerBlueOutBlueIn: 209 | overrideState: 0 210 | value: 100 211 | lift: 212 | overrideState: 1 213 | value: {x: 0.9376152, y: 0.99542654, z: 1, w: 0.021978026} 214 | gamma: 215 | overrideState: 1 216 | value: {x: 1, y: 0.98211443, z: 0.9679037, w: 0} 217 | gain: 218 | overrideState: 0 219 | value: {x: 1, y: 1, z: 1, w: 0} 220 | masterCurve: 221 | overrideState: 0 222 | value: 223 | curve: 224 | serializedVersion: 2 225 | m_Curve: 226 | - serializedVersion: 3 227 | time: 0 228 | value: 0 229 | inSlope: 1 230 | outSlope: 1 231 | tangentMode: 0 232 | weightedMode: 0 233 | inWeight: 0 234 | outWeight: 0 235 | - serializedVersion: 3 236 | time: 1 237 | value: 1 238 | inSlope: 1 239 | outSlope: 1 240 | tangentMode: 0 241 | weightedMode: 0 242 | inWeight: 0 243 | outWeight: 0 244 | m_PreInfinity: 2 245 | m_PostInfinity: 2 246 | m_RotationOrder: 4 247 | m_Loop: 0 248 | m_ZeroValue: 0 249 | m_Range: 1 250 | redCurve: 251 | overrideState: 0 252 | value: 253 | curve: 254 | serializedVersion: 2 255 | m_Curve: 256 | - serializedVersion: 3 257 | time: 0 258 | value: 0 259 | inSlope: 1 260 | outSlope: 1 261 | tangentMode: 0 262 | weightedMode: 0 263 | inWeight: 0 264 | outWeight: 0 265 | - serializedVersion: 3 266 | time: 1 267 | value: 1 268 | inSlope: 1 269 | outSlope: 1 270 | tangentMode: 0 271 | weightedMode: 0 272 | inWeight: 0 273 | outWeight: 0 274 | m_PreInfinity: 2 275 | m_PostInfinity: 2 276 | m_RotationOrder: 4 277 | m_Loop: 0 278 | m_ZeroValue: 0 279 | m_Range: 1 280 | greenCurve: 281 | overrideState: 0 282 | value: 283 | curve: 284 | serializedVersion: 2 285 | m_Curve: 286 | - serializedVersion: 3 287 | time: 0 288 | value: 0 289 | inSlope: 1 290 | outSlope: 1 291 | tangentMode: 0 292 | weightedMode: 0 293 | inWeight: 0 294 | outWeight: 0 295 | - serializedVersion: 3 296 | time: 1 297 | value: 1 298 | inSlope: 1 299 | outSlope: 1 300 | tangentMode: 0 301 | weightedMode: 0 302 | inWeight: 0 303 | outWeight: 0 304 | m_PreInfinity: 2 305 | m_PostInfinity: 2 306 | m_RotationOrder: 4 307 | m_Loop: 0 308 | m_ZeroValue: 0 309 | m_Range: 1 310 | blueCurve: 311 | overrideState: 0 312 | value: 313 | curve: 314 | serializedVersion: 2 315 | m_Curve: 316 | - serializedVersion: 3 317 | time: 0 318 | value: 0 319 | inSlope: 1 320 | outSlope: 1 321 | tangentMode: 0 322 | weightedMode: 0 323 | inWeight: 0 324 | outWeight: 0 325 | - serializedVersion: 3 326 | time: 1 327 | value: 1 328 | inSlope: 1 329 | outSlope: 1 330 | tangentMode: 0 331 | weightedMode: 0 332 | inWeight: 0 333 | outWeight: 0 334 | m_PreInfinity: 2 335 | m_PostInfinity: 2 336 | m_RotationOrder: 4 337 | m_Loop: 0 338 | m_ZeroValue: 0 339 | m_Range: 1 340 | hueVsHueCurve: 341 | overrideState: 0 342 | value: 343 | curve: 344 | serializedVersion: 2 345 | m_Curve: [] 346 | m_PreInfinity: 2 347 | m_PostInfinity: 2 348 | m_RotationOrder: 4 349 | m_Loop: 1 350 | m_ZeroValue: 0.5 351 | m_Range: 1 352 | hueVsSatCurve: 353 | overrideState: 0 354 | value: 355 | curve: 356 | serializedVersion: 2 357 | m_Curve: [] 358 | m_PreInfinity: 2 359 | m_PostInfinity: 2 360 | m_RotationOrder: 4 361 | m_Loop: 1 362 | m_ZeroValue: 0.5 363 | m_Range: 1 364 | satVsSatCurve: 365 | overrideState: 0 366 | value: 367 | curve: 368 | serializedVersion: 2 369 | m_Curve: [] 370 | m_PreInfinity: 2 371 | m_PostInfinity: 2 372 | m_RotationOrder: 4 373 | m_Loop: 0 374 | m_ZeroValue: 0.5 375 | m_Range: 1 376 | lumVsSatCurve: 377 | overrideState: 0 378 | value: 379 | curve: 380 | serializedVersion: 2 381 | m_Curve: [] 382 | m_PreInfinity: 2 383 | m_PostInfinity: 2 384 | m_RotationOrder: 4 385 | m_Loop: 0 386 | m_ZeroValue: 0.5 387 | m_Range: 1 388 | --- !u!114 &114756806456984492 389 | MonoBehaviour: 390 | m_ObjectHideFlags: 3 391 | m_PrefabParentObject: {fileID: 0} 392 | m_PrefabInternal: {fileID: 0} 393 | m_GameObject: {fileID: 0} 394 | m_Enabled: 1 395 | m_EditorHideFlags: 0 396 | m_Script: {fileID: 11500000, guid: 6050e2d5de785ce4d931e4dbdbf2d755, type: 3} 397 | m_Name: ChromaticAberration 398 | m_EditorClassIdentifier: 399 | active: 1 400 | enabled: 401 | overrideState: 1 402 | value: 1 403 | spectralLut: 404 | overrideState: 0 405 | value: {fileID: 0} 406 | defaultState: 1 407 | intensity: 408 | overrideState: 1 409 | value: 0.06 410 | fastMode: 411 | overrideState: 0 412 | value: 0 413 | -------------------------------------------------------------------------------- /Assets/Test/PostFx.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f3fa21fb0cf9ca4081dc52cfd021bc4 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Test/Statue.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Statue 10 | m_Shader: {fileID: 4800000, guid: b58e887ff082b534199e0b0e894bbb29, type: 3} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _BumpMap: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _DetailAlbedoMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailMask: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailNormalMap: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _EmissionMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _MainTex: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MetallicGlossMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _OcclusionMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _ParallaxMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | m_Floats: 58 | - _BumpScale: 1 59 | - _Cutoff: 0.5 60 | - _DetailNormalMapScale: 1 61 | - _DstBlend: 0 62 | - _GlossMapScale: 1 63 | - _Glossiness: 0 64 | - _GlossyReflections: 1 65 | - _Metallic: 0 66 | - _Mode: 0 67 | - _OcclusionStrength: 1 68 | - _Parallax: 0.02 69 | - _SmoothnessTextureChannel: 0 70 | - _SpecularHighlights: 1 71 | - _SrcBlend: 1 72 | - _UVSec: 0 73 | - _ZWrite: 1 74 | m_Colors: 75 | - _Color: {r: 0.745283, g: 0.745283, b: 0.745283, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | -------------------------------------------------------------------------------- /Assets/Test/Statue.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 132c7e2ac587bb84a9e98b8c675a75cc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Test/Test.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.084905684, g: 0.06316892, b: 0.03804736, a: 1} 24 | m_AmbientEquatorColor: {r: 0.122641504, g: 0.122641504, b: 0.122641504, a: 1} 25 | m_AmbientGroundColor: {r: 0.13207549, g: 0.13207549, b: 0.13207549, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 1 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 1 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 0 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_TemporalCoherenceThreshold: 1 54 | m_EnvironmentLightingMode: 0 55 | m_EnableBakedLightmaps: 1 56 | m_EnableRealtimeLightmaps: 1 57 | m_LightmapEditorSettings: 58 | serializedVersion: 10 59 | m_Resolution: 2 60 | m_BakeResolution: 40 61 | m_AtlasSize: 1024 62 | m_AO: 0 63 | m_AOMaxDistance: 1 64 | m_CompAOExponent: 1 65 | m_CompAOExponentDirect: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 500 79 | m_PVRBounces: 2 80 | m_PVRFilterTypeDirect: 0 81 | m_PVRFilterTypeIndirect: 0 82 | m_PVRFilterTypeAO: 0 83 | m_PVRFilteringMode: 1 84 | m_PVRCulling: 1 85 | m_PVRFilteringGaussRadiusDirect: 1 86 | m_PVRFilteringGaussRadiusIndirect: 5 87 | m_PVRFilteringGaussRadiusAO: 2 88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 90 | m_PVRFilteringAtrousPositionSigmaAO: 1 91 | m_ShowResolutionOverlay: 1 92 | m_LightingDataAsset: {fileID: 0} 93 | m_UseShadowmask: 1 94 | --- !u!196 &4 95 | NavMeshSettings: 96 | serializedVersion: 2 97 | m_ObjectHideFlags: 0 98 | m_BuildSettings: 99 | serializedVersion: 2 100 | agentTypeID: 0 101 | agentRadius: 0.5 102 | agentHeight: 2 103 | agentSlope: 45 104 | agentClimb: 0.4 105 | ledgeDropHeight: 0 106 | maxJumpAcrossDistance: 0 107 | minRegionArea: 2 108 | manualCellSize: 0 109 | cellSize: 0.16666667 110 | manualTileSize: 0 111 | tileSize: 256 112 | accuratePlacement: 0 113 | debug: 114 | m_Flags: 0 115 | m_NavMeshData: {fileID: 0} 116 | --- !u!1 &300482069 117 | GameObject: 118 | m_ObjectHideFlags: 0 119 | m_CorrespondingSourceObject: {fileID: 0} 120 | m_PrefabInternal: {fileID: 0} 121 | serializedVersion: 6 122 | m_Component: 123 | - component: {fileID: 300482070} 124 | - component: {fileID: 300482071} 125 | m_Layer: 8 126 | m_Name: Post Fx 127 | m_TagString: Untagged 128 | m_Icon: {fileID: 0} 129 | m_NavMeshLayer: 0 130 | m_StaticEditorFlags: 0 131 | m_IsActive: 1 132 | --- !u!4 &300482070 133 | Transform: 134 | m_ObjectHideFlags: 0 135 | m_CorrespondingSourceObject: {fileID: 0} 136 | m_PrefabInternal: {fileID: 0} 137 | m_GameObject: {fileID: 300482069} 138 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 139 | m_LocalPosition: {x: 0, y: 0, z: 4} 140 | m_LocalScale: {x: 1, y: 1, z: 1} 141 | m_Children: [] 142 | m_Father: {fileID: 1153673665} 143 | m_RootOrder: 0 144 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 145 | --- !u!114 &300482071 146 | MonoBehaviour: 147 | m_ObjectHideFlags: 0 148 | m_CorrespondingSourceObject: {fileID: 0} 149 | m_PrefabInternal: {fileID: 0} 150 | m_GameObject: {fileID: 300482069} 151 | m_Enabled: 1 152 | m_EditorHideFlags: 0 153 | m_Script: {fileID: 11500000, guid: 8b9a305e18de0c04dbd257a21cd47087, type: 3} 154 | m_Name: 155 | m_EditorClassIdentifier: 156 | sharedProfile: {fileID: 11400000, guid: 1f3fa21fb0cf9ca4081dc52cfd021bc4, type: 2} 157 | isGlobal: 1 158 | blendDistance: 0 159 | weight: 1 160 | priority: 0 161 | --- !u!1 &723435371 162 | GameObject: 163 | m_ObjectHideFlags: 0 164 | m_CorrespondingSourceObject: {fileID: 0} 165 | m_PrefabInternal: {fileID: 0} 166 | serializedVersion: 6 167 | m_Component: 168 | - component: {fileID: 723435373} 169 | - component: {fileID: 723435372} 170 | m_Layer: 0 171 | m_Name: Director 172 | m_TagString: Untagged 173 | m_Icon: {fileID: 0} 174 | m_NavMeshLayer: 0 175 | m_StaticEditorFlags: 0 176 | m_IsActive: 1 177 | --- !u!320 &723435372 178 | PlayableDirector: 179 | m_ObjectHideFlags: 0 180 | m_CorrespondingSourceObject: {fileID: 0} 181 | m_PrefabInternal: {fileID: 0} 182 | m_GameObject: {fileID: 723435371} 183 | m_Enabled: 1 184 | serializedVersion: 3 185 | m_PlayableAsset: {fileID: 11400000, guid: 72e92588a560c344ea5b2bc6d6e07e89, type: 2} 186 | m_InitialState: 1 187 | m_WrapMode: 0 188 | m_DirectorUpdateMode: 1 189 | m_InitialTime: 0 190 | m_SceneBindings: 191 | - key: {fileID: 114342937025585958, guid: 72e92588a560c344ea5b2bc6d6e07e89, type: 2} 192 | value: {fileID: 1738148746} 193 | m_ExposedReferences: 194 | m_References: [] 195 | --- !u!4 &723435373 196 | Transform: 197 | m_ObjectHideFlags: 0 198 | m_CorrespondingSourceObject: {fileID: 0} 199 | m_PrefabInternal: {fileID: 0} 200 | m_GameObject: {fileID: 723435371} 201 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 202 | m_LocalPosition: {x: 0, y: 0, z: 0} 203 | m_LocalScale: {x: 1, y: 1, z: 1} 204 | m_Children: [] 205 | m_Father: {fileID: 0} 206 | m_RootOrder: 0 207 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 208 | --- !u!1 &1133471422 209 | GameObject: 210 | m_ObjectHideFlags: 0 211 | m_CorrespondingSourceObject: {fileID: 0} 212 | m_PrefabInternal: {fileID: 0} 213 | serializedVersion: 6 214 | m_Component: 215 | - component: {fileID: 1133471424} 216 | - component: {fileID: 1133471423} 217 | m_Layer: 0 218 | m_Name: Point Light 1 219 | m_TagString: Untagged 220 | m_Icon: {fileID: 0} 221 | m_NavMeshLayer: 0 222 | m_StaticEditorFlags: 0 223 | m_IsActive: 1 224 | --- !u!108 &1133471423 225 | Light: 226 | m_ObjectHideFlags: 0 227 | m_CorrespondingSourceObject: {fileID: 0} 228 | m_PrefabInternal: {fileID: 0} 229 | m_GameObject: {fileID: 1133471422} 230 | m_Enabled: 1 231 | serializedVersion: 8 232 | m_Type: 2 233 | m_Color: {r: 1, g: 0.3997, b: 0.21699995, a: 1} 234 | m_Intensity: 0.3 235 | m_Range: 20 236 | m_SpotAngle: 30 237 | m_CookieSize: 10 238 | m_Shadows: 239 | m_Type: 0 240 | m_Resolution: -1 241 | m_CustomResolution: -1 242 | m_Strength: 1 243 | m_Bias: 0.05 244 | m_NormalBias: 0.4 245 | m_NearPlane: 0.2 246 | m_Cookie: {fileID: 0} 247 | m_DrawHalo: 0 248 | m_Flare: {fileID: 0} 249 | m_RenderMode: 0 250 | m_CullingMask: 251 | serializedVersion: 2 252 | m_Bits: 4294967295 253 | m_Lightmapping: 4 254 | m_LightShadowCasterMode: 0 255 | m_AreaSize: {x: 1, y: 1} 256 | m_BounceIntensity: 1 257 | m_ColorTemperature: 6570 258 | m_UseColorTemperature: 0 259 | m_ShadowRadius: 0 260 | m_ShadowAngle: 0 261 | --- !u!4 &1133471424 262 | Transform: 263 | m_ObjectHideFlags: 0 264 | m_CorrespondingSourceObject: {fileID: 0} 265 | m_PrefabInternal: {fileID: 0} 266 | m_GameObject: {fileID: 1133471422} 267 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 268 | m_LocalPosition: {x: -1.5, y: 0.3, z: 0} 269 | m_LocalScale: {x: 1, y: 1, z: 1} 270 | m_Children: [] 271 | m_Father: {fileID: 0} 272 | m_RootOrder: 4 273 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 274 | --- !u!1 &1153673661 275 | GameObject: 276 | m_ObjectHideFlags: 0 277 | m_CorrespondingSourceObject: {fileID: 0} 278 | m_PrefabInternal: {fileID: 0} 279 | serializedVersion: 6 280 | m_Component: 281 | - component: {fileID: 1153673665} 282 | - component: {fileID: 1153673664} 283 | - component: {fileID: 1153673663} 284 | m_Layer: 8 285 | m_Name: Main Camera 286 | m_TagString: MainCamera 287 | m_Icon: {fileID: 0} 288 | m_NavMeshLayer: 0 289 | m_StaticEditorFlags: 0 290 | m_IsActive: 1 291 | --- !u!114 &1153673663 292 | MonoBehaviour: 293 | m_ObjectHideFlags: 0 294 | m_CorrespondingSourceObject: {fileID: 0} 295 | m_PrefabInternal: {fileID: 0} 296 | m_GameObject: {fileID: 1153673661} 297 | m_Enabled: 1 298 | m_EditorHideFlags: 0 299 | m_Script: {fileID: 11500000, guid: 948f4100a11a5c24981795d21301da5c, type: 3} 300 | m_Name: 301 | m_EditorClassIdentifier: 302 | volumeTrigger: {fileID: 1153673665} 303 | volumeLayer: 304 | serializedVersion: 2 305 | m_Bits: 256 306 | stopNaNPropagation: 1 307 | antialiasingMode: 2 308 | temporalAntialiasing: 309 | jitterSpread: 0.75 310 | sharpness: 0.25 311 | stationaryBlending: 0.95 312 | motionBlending: 0.85 313 | subpixelMorphologicalAntialiasing: 314 | quality: 2 315 | fastApproximateAntialiasing: 316 | fastMode: 0 317 | keepAlpha: 0 318 | fog: 319 | enabled: 1 320 | excludeSkybox: 1 321 | debugLayer: 322 | lightMeter: 323 | width: 512 324 | height: 256 325 | showCurves: 1 326 | histogram: 327 | width: 512 328 | height: 256 329 | channel: 3 330 | waveform: 331 | exposure: 0.12 332 | height: 256 333 | vectorscope: 334 | size: 256 335 | exposure: 0.12 336 | overlaySettings: 337 | motionColorIntensity: 4 338 | motionGridSize: 64 339 | colorBlindnessType: 0 340 | colorBlindnessStrength: 1 341 | m_Resources: {fileID: 11400000, guid: d82512f9c8e5d4a4d938b575d47f88d4, type: 2} 342 | m_ShowToolkit: 0 343 | m_ShowCustomSorter: 0 344 | breakBeforeColorGrading: 0 345 | m_BeforeTransparentBundles: [] 346 | m_BeforeStackBundles: [] 347 | m_AfterStackBundles: [] 348 | --- !u!20 &1153673664 349 | Camera: 350 | m_ObjectHideFlags: 0 351 | m_CorrespondingSourceObject: {fileID: 0} 352 | m_PrefabInternal: {fileID: 0} 353 | m_GameObject: {fileID: 1153673661} 354 | m_Enabled: 1 355 | serializedVersion: 2 356 | m_ClearFlags: 2 357 | m_BackGroundColor: {r: 0.0754717, g: 0.0754717, b: 0.0754717, a: 0} 358 | m_projectionMatrixMode: 1 359 | m_SensorSize: {x: 36, y: 24} 360 | m_LensShift: {x: 0, y: 0} 361 | m_FocalLength: 50 362 | m_NormalizedViewPortRect: 363 | serializedVersion: 2 364 | x: 0 365 | y: 0 366 | width: 1 367 | height: 1 368 | near clip plane: 0.1 369 | far clip plane: 30 370 | field of view: 20 371 | orthographic: 0 372 | orthographic size: 5 373 | m_Depth: -1 374 | m_CullingMask: 375 | serializedVersion: 2 376 | m_Bits: 4294967295 377 | m_RenderingPath: 3 378 | m_TargetTexture: {fileID: 0} 379 | m_TargetDisplay: 0 380 | m_TargetEye: 3 381 | m_HDR: 1 382 | m_AllowMSAA: 0 383 | m_AllowDynamicResolution: 0 384 | m_ForceIntoRT: 1 385 | m_OcclusionCulling: 0 386 | m_StereoConvergence: 10 387 | m_StereoSeparation: 0.022 388 | --- !u!4 &1153673665 389 | Transform: 390 | m_ObjectHideFlags: 0 391 | m_CorrespondingSourceObject: {fileID: 0} 392 | m_PrefabInternal: {fileID: 0} 393 | m_GameObject: {fileID: 1153673661} 394 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 395 | m_LocalPosition: {x: 0, y: 0, z: -3.3} 396 | m_LocalScale: {x: 1, y: 1, z: 1} 397 | m_Children: 398 | - {fileID: 300482070} 399 | m_Father: {fileID: 2037110298} 400 | m_RootOrder: 0 401 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 402 | --- !u!1 &1398614824 403 | GameObject: 404 | m_ObjectHideFlags: 0 405 | m_CorrespondingSourceObject: {fileID: 0} 406 | m_PrefabInternal: {fileID: 0} 407 | serializedVersion: 6 408 | m_Component: 409 | - component: {fileID: 1398614826} 410 | - component: {fileID: 1398614825} 411 | m_Layer: 0 412 | m_Name: Directional Light 413 | m_TagString: Untagged 414 | m_Icon: {fileID: 0} 415 | m_NavMeshLayer: 0 416 | m_StaticEditorFlags: 0 417 | m_IsActive: 0 418 | --- !u!108 &1398614825 419 | Light: 420 | m_ObjectHideFlags: 0 421 | m_CorrespondingSourceObject: {fileID: 0} 422 | m_PrefabInternal: {fileID: 0} 423 | m_GameObject: {fileID: 1398614824} 424 | m_Enabled: 1 425 | serializedVersion: 8 426 | m_Type: 1 427 | m_Color: {r: 1, g: 1, b: 1, a: 1} 428 | m_Intensity: 0.9 429 | m_Range: 10 430 | m_SpotAngle: 30 431 | m_CookieSize: 10 432 | m_Shadows: 433 | m_Type: 2 434 | m_Resolution: -1 435 | m_CustomResolution: -1 436 | m_Strength: 1 437 | m_Bias: 0.05 438 | m_NormalBias: 0.4 439 | m_NearPlane: 0.2 440 | m_Cookie: {fileID: 0} 441 | m_DrawHalo: 0 442 | m_Flare: {fileID: 0} 443 | m_RenderMode: 0 444 | m_CullingMask: 445 | serializedVersion: 2 446 | m_Bits: 4294967295 447 | m_Lightmapping: 4 448 | m_LightShadowCasterMode: 0 449 | m_AreaSize: {x: 1, y: 1} 450 | m_BounceIntensity: 1 451 | m_ColorTemperature: 6570 452 | m_UseColorTemperature: 0 453 | m_ShadowRadius: 0 454 | m_ShadowAngle: 0 455 | --- !u!4 &1398614826 456 | Transform: 457 | m_ObjectHideFlags: 0 458 | m_CorrespondingSourceObject: {fileID: 0} 459 | m_PrefabInternal: {fileID: 0} 460 | m_GameObject: {fileID: 1398614824} 461 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 462 | m_LocalPosition: {x: 0, y: 0, z: 0} 463 | m_LocalScale: {x: 1, y: 1, z: 1} 464 | m_Children: [] 465 | m_Father: {fileID: 0} 466 | m_RootOrder: 2 467 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 468 | --- !u!1 &1446357770 469 | GameObject: 470 | m_ObjectHideFlags: 0 471 | m_CorrespondingSourceObject: {fileID: 0} 472 | m_PrefabInternal: {fileID: 0} 473 | serializedVersion: 6 474 | m_Component: 475 | - component: {fileID: 1446357772} 476 | - component: {fileID: 1446357771} 477 | m_Layer: 0 478 | m_Name: Spot Light 479 | m_TagString: Untagged 480 | m_Icon: {fileID: 0} 481 | m_NavMeshLayer: 0 482 | m_StaticEditorFlags: 0 483 | m_IsActive: 1 484 | --- !u!108 &1446357771 485 | Light: 486 | m_ObjectHideFlags: 0 487 | m_CorrespondingSourceObject: {fileID: 0} 488 | m_PrefabInternal: {fileID: 0} 489 | m_GameObject: {fileID: 1446357770} 490 | m_Enabled: 1 491 | serializedVersion: 8 492 | m_Type: 0 493 | m_Color: {r: 1, g: 1, b: 1, a: 1} 494 | m_Intensity: 2 495 | m_Range: 6 496 | m_SpotAngle: 25 497 | m_CookieSize: 10 498 | m_Shadows: 499 | m_Type: 2 500 | m_Resolution: -1 501 | m_CustomResolution: -1 502 | m_Strength: 1 503 | m_Bias: 0.01 504 | m_NormalBias: 0 505 | m_NearPlane: 0.2 506 | m_Cookie: {fileID: 0} 507 | m_DrawHalo: 0 508 | m_Flare: {fileID: 0} 509 | m_RenderMode: 0 510 | m_CullingMask: 511 | serializedVersion: 2 512 | m_Bits: 4294967295 513 | m_Lightmapping: 4 514 | m_LightShadowCasterMode: 0 515 | m_AreaSize: {x: 1, y: 1} 516 | m_BounceIntensity: 1 517 | m_ColorTemperature: 6570 518 | m_UseColorTemperature: 0 519 | m_ShadowRadius: 0 520 | m_ShadowAngle: 0 521 | --- !u!4 &1446357772 522 | Transform: 523 | m_ObjectHideFlags: 0 524 | m_CorrespondingSourceObject: {fileID: 0} 525 | m_PrefabInternal: {fileID: 0} 526 | m_GameObject: {fileID: 1446357770} 527 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 528 | m_LocalPosition: {x: 0, y: 0, z: -3} 529 | m_LocalScale: {x: 1, y: 1, z: 1} 530 | m_Children: [] 531 | m_Father: {fileID: 1690441681} 532 | m_RootOrder: 0 533 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 534 | --- !u!1 &1548858103 535 | GameObject: 536 | m_ObjectHideFlags: 0 537 | m_CorrespondingSourceObject: {fileID: 0} 538 | m_PrefabInternal: {fileID: 0} 539 | serializedVersion: 6 540 | m_Component: 541 | - component: {fileID: 1548858105} 542 | - component: {fileID: 1548858104} 543 | m_Layer: 0 544 | m_Name: Point Light 2 545 | m_TagString: Untagged 546 | m_Icon: {fileID: 0} 547 | m_NavMeshLayer: 0 548 | m_StaticEditorFlags: 0 549 | m_IsActive: 1 550 | --- !u!108 &1548858104 551 | Light: 552 | m_ObjectHideFlags: 0 553 | m_CorrespondingSourceObject: {fileID: 0} 554 | m_PrefabInternal: {fileID: 0} 555 | m_GameObject: {fileID: 1548858103} 556 | m_Enabled: 1 557 | serializedVersion: 8 558 | m_Type: 2 559 | m_Color: {r: 0.2028302, g: 0.25773856, b: 1, a: 1} 560 | m_Intensity: 0.2 561 | m_Range: 20 562 | m_SpotAngle: 30 563 | m_CookieSize: 10 564 | m_Shadows: 565 | m_Type: 0 566 | m_Resolution: -1 567 | m_CustomResolution: -1 568 | m_Strength: 1 569 | m_Bias: 0.05 570 | m_NormalBias: 0.4 571 | m_NearPlane: 0.2 572 | m_Cookie: {fileID: 0} 573 | m_DrawHalo: 0 574 | m_Flare: {fileID: 0} 575 | m_RenderMode: 0 576 | m_CullingMask: 577 | serializedVersion: 2 578 | m_Bits: 4294967295 579 | m_Lightmapping: 4 580 | m_LightShadowCasterMode: 0 581 | m_AreaSize: {x: 1, y: 1} 582 | m_BounceIntensity: 1 583 | m_ColorTemperature: 6570 584 | m_UseColorTemperature: 0 585 | m_ShadowRadius: 0 586 | m_ShadowAngle: 0 587 | --- !u!4 &1548858105 588 | Transform: 589 | m_ObjectHideFlags: 0 590 | m_CorrespondingSourceObject: {fileID: 0} 591 | m_PrefabInternal: {fileID: 0} 592 | m_GameObject: {fileID: 1548858103} 593 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 594 | m_LocalPosition: {x: 2, y: -0.45, z: -2} 595 | m_LocalScale: {x: 1, y: 1, z: 1} 596 | m_Children: [] 597 | m_Father: {fileID: 0} 598 | m_RootOrder: 5 599 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 600 | --- !u!1 &1577638965 601 | GameObject: 602 | m_ObjectHideFlags: 0 603 | m_CorrespondingSourceObject: {fileID: 0} 604 | m_PrefabInternal: {fileID: 0} 605 | serializedVersion: 6 606 | m_Component: 607 | - component: {fileID: 1577638968} 608 | - component: {fileID: 1577638967} 609 | - component: {fileID: 1577638966} 610 | m_Layer: 0 611 | m_Name: Backdrop 612 | m_TagString: Untagged 613 | m_Icon: {fileID: 0} 614 | m_NavMeshLayer: 0 615 | m_StaticEditorFlags: 0 616 | m_IsActive: 1 617 | --- !u!23 &1577638966 618 | MeshRenderer: 619 | m_ObjectHideFlags: 0 620 | m_CorrespondingSourceObject: {fileID: 0} 621 | m_PrefabInternal: {fileID: 0} 622 | m_GameObject: {fileID: 1577638965} 623 | m_Enabled: 1 624 | m_CastShadows: 1 625 | m_ReceiveShadows: 1 626 | m_DynamicOccludee: 1 627 | m_MotionVectors: 1 628 | m_LightProbeUsage: 1 629 | m_ReflectionProbeUsage: 1 630 | m_RenderingLayerMask: 4294967295 631 | m_Materials: 632 | - {fileID: 2100000, guid: a1315f180d617054cb428b7a91e5c291, type: 2} 633 | m_StaticBatchInfo: 634 | firstSubMesh: 0 635 | subMeshCount: 0 636 | m_StaticBatchRoot: {fileID: 0} 637 | m_ProbeAnchor: {fileID: 0} 638 | m_LightProbeVolumeOverride: {fileID: 0} 639 | m_ScaleInLightmap: 1 640 | m_PreserveUVs: 0 641 | m_IgnoreNormalsForChartDetection: 0 642 | m_ImportantGI: 0 643 | m_StitchLightmapSeams: 0 644 | m_SelectedEditorRenderState: 3 645 | m_MinimumChartSize: 4 646 | m_AutoUVMaxDistance: 0.5 647 | m_AutoUVMaxAngle: 89 648 | m_LightmapParameters: {fileID: 0} 649 | m_SortingLayerID: 0 650 | m_SortingLayer: 0 651 | m_SortingOrder: 0 652 | --- !u!33 &1577638967 653 | MeshFilter: 654 | m_ObjectHideFlags: 0 655 | m_CorrespondingSourceObject: {fileID: 0} 656 | m_PrefabInternal: {fileID: 0} 657 | m_GameObject: {fileID: 1577638965} 658 | m_Mesh: {fileID: 4300000, guid: c328fcce09e685e4c8fceb37322da979, type: 3} 659 | --- !u!4 &1577638968 660 | Transform: 661 | m_ObjectHideFlags: 0 662 | m_CorrespondingSourceObject: {fileID: 0} 663 | m_PrefabInternal: {fileID: 0} 664 | m_GameObject: {fileID: 1577638965} 665 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 666 | m_LocalPosition: {x: 0, y: -0.55, z: 1} 667 | m_LocalScale: {x: 1, y: 1, z: 1} 668 | m_Children: [] 669 | m_Father: {fileID: 0} 670 | m_RootOrder: 6 671 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 672 | --- !u!1 &1690441680 673 | GameObject: 674 | m_ObjectHideFlags: 0 675 | m_CorrespondingSourceObject: {fileID: 0} 676 | m_PrefabInternal: {fileID: 0} 677 | serializedVersion: 6 678 | m_Component: 679 | - component: {fileID: 1690441681} 680 | m_Layer: 0 681 | m_Name: Spot Light Pivot 682 | m_TagString: Untagged 683 | m_Icon: {fileID: 0} 684 | m_NavMeshLayer: 0 685 | m_StaticEditorFlags: 0 686 | m_IsActive: 1 687 | --- !u!4 &1690441681 688 | Transform: 689 | m_ObjectHideFlags: 0 690 | m_CorrespondingSourceObject: {fileID: 0} 691 | m_PrefabInternal: {fileID: 0} 692 | m_GameObject: {fileID: 1690441680} 693 | m_LocalRotation: {x: 0.23456976, y: -0.40821788, z: 0.10938167, w: 0.8754261} 694 | m_LocalPosition: {x: 0, y: 0, z: 0} 695 | m_LocalScale: {x: 1, y: 1, z: 1} 696 | m_Children: 697 | - {fileID: 1446357772} 698 | m_Father: {fileID: 0} 699 | m_RootOrder: 3 700 | m_LocalEulerAnglesHint: {x: 30, y: -50, z: 0} 701 | --- !u!1 &1738148746 702 | GameObject: 703 | m_ObjectHideFlags: 0 704 | m_CorrespondingSourceObject: {fileID: 0} 705 | m_PrefabInternal: {fileID: 0} 706 | serializedVersion: 6 707 | m_Component: 708 | - component: {fileID: 1738148749} 709 | - component: {fileID: 1738148748} 710 | - component: {fileID: 1738148747} 711 | - component: {fileID: 1738148754} 712 | m_Layer: 0 713 | m_Name: Noise Effector 714 | m_TagString: Untagged 715 | m_Icon: {fileID: 0} 716 | m_NavMeshLayer: 0 717 | m_StaticEditorFlags: 0 718 | m_IsActive: 1 719 | --- !u!114 &1738148747 720 | MonoBehaviour: 721 | m_ObjectHideFlags: 0 722 | m_CorrespondingSourceObject: {fileID: 0} 723 | m_PrefabInternal: {fileID: 0} 724 | m_GameObject: {fileID: 1738148746} 725 | m_Enabled: 1 726 | m_EditorHideFlags: 0 727 | m_Script: {fileID: 11500000, guid: 8740bcad89c0cd04785e46ef510520f8, type: 3} 728 | m_Name: 729 | m_EditorClassIdentifier: 730 | m_SerializedData: 731 | Frequency: 6 732 | Amplitude: 0.02 733 | --- !u!114 &1738148748 734 | MonoBehaviour: 735 | m_ObjectHideFlags: 0 736 | m_CorrespondingSourceObject: {fileID: 0} 737 | m_PrefabInternal: {fileID: 0} 738 | m_GameObject: {fileID: 1738148746} 739 | m_Enabled: 1 740 | m_EditorHideFlags: 0 741 | m_Script: {fileID: 11500000, guid: 5bf10cdea1344482e91a4f2b58506b77, type: 3} 742 | m_Name: 743 | m_EditorClassIdentifier: 744 | --- !u!4 &1738148749 745 | Transform: 746 | m_ObjectHideFlags: 0 747 | m_CorrespondingSourceObject: {fileID: 0} 748 | m_PrefabInternal: {fileID: 0} 749 | m_GameObject: {fileID: 1738148746} 750 | m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} 751 | m_LocalPosition: {x: 0, y: 0, z: 0} 752 | m_LocalScale: {x: 2, y: 2, z: 0.2} 753 | m_Children: [] 754 | m_Father: {fileID: 0} 755 | m_RootOrder: 8 756 | m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} 757 | --- !u!95 &1738148754 758 | Animator: 759 | serializedVersion: 3 760 | m_ObjectHideFlags: 0 761 | m_CorrespondingSourceObject: {fileID: 0} 762 | m_PrefabInternal: {fileID: 0} 763 | m_GameObject: {fileID: 1738148746} 764 | m_Enabled: 1 765 | m_Avatar: {fileID: 0} 766 | m_Controller: {fileID: 0} 767 | m_CullingMode: 0 768 | m_UpdateMode: 0 769 | m_ApplyRootMotion: 0 770 | m_LinearVelocityBlending: 0 771 | m_WarningMessage: 772 | m_HasTransformHierarchy: 1 773 | m_AllowConstantClipSamplingOptimization: 1 774 | m_KeepAnimatorControllerStateOnDisable: 0 775 | --- !u!1 &1915976092 776 | GameObject: 777 | m_ObjectHideFlags: 0 778 | m_CorrespondingSourceObject: {fileID: 0} 779 | m_PrefabInternal: {fileID: 0} 780 | serializedVersion: 6 781 | m_Component: 782 | - component: {fileID: 1915976095} 783 | - component: {fileID: 1915976094} 784 | - component: {fileID: 1915976093} 785 | - component: {fileID: 1915976098} 786 | - component: {fileID: 1915976097} 787 | - component: {fileID: 1915976096} 788 | m_Layer: 0 789 | m_Name: Ugolino 790 | m_TagString: Untagged 791 | m_Icon: {fileID: 0} 792 | m_NavMeshLayer: 0 793 | m_StaticEditorFlags: 0 794 | m_IsActive: 1 795 | --- !u!114 &1915976093 796 | MonoBehaviour: 797 | m_ObjectHideFlags: 0 798 | m_CorrespondingSourceObject: {fileID: 0} 799 | m_PrefabInternal: {fileID: 0} 800 | m_GameObject: {fileID: 1915976092} 801 | m_Enabled: 1 802 | m_EditorHideFlags: 0 803 | m_Script: {fileID: 11500000, guid: aacf989ff65fff54e866d8a533f19703, type: 3} 804 | m_Name: 805 | m_EditorClassIdentifier: 806 | m_SerializedData: 807 | TemplateMesh: {fileID: 4300002, guid: 7027146812fc2b14cb6a471a821b4633, type: 3} 808 | --- !u!114 &1915976094 809 | MonoBehaviour: 810 | m_ObjectHideFlags: 0 811 | m_CorrespondingSourceObject: {fileID: 0} 812 | m_PrefabInternal: {fileID: 0} 813 | m_GameObject: {fileID: 1915976092} 814 | m_Enabled: 1 815 | m_EditorHideFlags: 0 816 | m_Script: {fileID: 11500000, guid: 5bf10cdea1344482e91a4f2b58506b77, type: 3} 817 | m_Name: 818 | m_EditorClassIdentifier: 819 | --- !u!4 &1915976095 820 | Transform: 821 | m_ObjectHideFlags: 0 822 | m_CorrespondingSourceObject: {fileID: 0} 823 | m_PrefabInternal: {fileID: 0} 824 | m_GameObject: {fileID: 1915976092} 825 | m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} 826 | m_LocalPosition: {x: 0.05, y: -0.55, z: 0} 827 | m_LocalScale: {x: 0.3, y: 0.3, z: 0.3} 828 | m_Children: [] 829 | m_Father: {fileID: 0} 830 | m_RootOrder: 7 831 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 832 | --- !u!114 &1915976096 833 | MonoBehaviour: 834 | m_ObjectHideFlags: 0 835 | m_CorrespondingSourceObject: {fileID: 0} 836 | m_PrefabInternal: {fileID: 0} 837 | m_GameObject: {fileID: 1915976092} 838 | m_Enabled: 1 839 | m_EditorHideFlags: 0 840 | m_Script: {fileID: 11500000, guid: c54631ba04dd19841ba164a400d451ec, type: 3} 841 | m_Name: 842 | m_EditorClassIdentifier: 843 | m_SerializedData: 844 | Weight: 1 845 | Life: 6 846 | Size: 0.015 847 | --- !u!114 &1915976097 848 | MonoBehaviour: 849 | m_ObjectHideFlags: 0 850 | m_CorrespondingSourceObject: {fileID: 0} 851 | m_PrefabInternal: {fileID: 0} 852 | m_GameObject: {fileID: 1915976092} 853 | m_Enabled: 1 854 | m_EditorHideFlags: 0 855 | m_Script: {fileID: 11500000, guid: b194841a68c8a524d82173658cdb308a, type: 3} 856 | m_Name: 857 | m_EditorClassIdentifier: 858 | m_SerializedData: 859 | Weight: 1 860 | Life: 4 861 | --- !u!114 &1915976098 862 | MonoBehaviour: 863 | m_ObjectHideFlags: 0 864 | m_CorrespondingSourceObject: {fileID: 0} 865 | m_PrefabInternal: {fileID: 0} 866 | m_GameObject: {fileID: 1915976092} 867 | m_Enabled: 1 868 | m_EditorHideFlags: 0 869 | m_Script: {fileID: 11500000, guid: c182c37de3608cf4c97fe780e29d434e, type: 3} 870 | m_Name: 871 | m_EditorClassIdentifier: 872 | m_SerializedData: 873 | Material: {fileID: 2100000, guid: 132c7e2ac587bb84a9e98b8c675a75cc, type: 2} 874 | CastShadows: 1 875 | ReceiveShadows: 1 876 | --- !u!1 &2037110297 877 | GameObject: 878 | m_ObjectHideFlags: 0 879 | m_CorrespondingSourceObject: {fileID: 0} 880 | m_PrefabInternal: {fileID: 0} 881 | serializedVersion: 6 882 | m_Component: 883 | - component: {fileID: 2037110298} 884 | m_Layer: 8 885 | m_Name: Camera Pivot 886 | m_TagString: Untagged 887 | m_Icon: {fileID: 0} 888 | m_NavMeshLayer: 0 889 | m_StaticEditorFlags: 0 890 | m_IsActive: 1 891 | --- !u!4 &2037110298 892 | Transform: 893 | m_ObjectHideFlags: 0 894 | m_CorrespondingSourceObject: {fileID: 0} 895 | m_PrefabInternal: {fileID: 0} 896 | m_GameObject: {fileID: 2037110297} 897 | m_LocalRotation: {x: 0.019410543, y: 0.1176882, z: -0.0023008238, w: 0.99285823} 898 | m_LocalPosition: {x: 0, y: 0, z: 0} 899 | m_LocalScale: {x: 1, y: 1, z: 1} 900 | m_Children: 901 | - {fileID: 1153673665} 902 | m_Father: {fileID: 0} 903 | m_RootOrder: 1 904 | m_LocalEulerAnglesHint: {x: 2.24, y: 13.52, z: 0} 905 | -------------------------------------------------------------------------------- /Assets/Test/Test.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd11f8f4fab0bfa4db400ee8c7cb03b4 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Test/Timeline.playable: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_PrefabParentObject: {fileID: 0} 7 | m_PrefabInternal: {fileID: 0} 8 | m_GameObject: {fileID: 0} 9 | m_Enabled: 1 10 | m_EditorHideFlags: 0 11 | m_Script: {fileID: 337831424, guid: 6a10b2909283487f913b00d94cd3faf5, type: 3} 12 | m_Name: Timeline 13 | m_EditorClassIdentifier: 14 | m_NextId: 0 15 | m_Tracks: 16 | - {fileID: 114342937025585958} 17 | m_FixedDuration: 0 18 | m_EditorSettings: 19 | m_Framerate: 60 20 | m_DurationMode: 0 21 | m_Version: 0 22 | --- !u!74 &74864664987565518 23 | AnimationClip: 24 | m_ObjectHideFlags: 0 25 | m_PrefabParentObject: {fileID: 0} 26 | m_PrefabInternal: {fileID: 0} 27 | m_Name: Recorded 28 | serializedVersion: 6 29 | m_Legacy: 0 30 | m_Compressed: 0 31 | m_UseHighQualityCurve: 1 32 | m_RotationCurves: [] 33 | m_CompressedRotationCurves: [] 34 | m_EulerCurves: 35 | - curve: 36 | serializedVersion: 2 37 | m_Curve: 38 | - serializedVersion: 3 39 | time: 0 40 | value: {x: -90, y: 0, z: 0} 41 | inSlope: {x: 0, y: 0, z: 0} 42 | outSlope: {x: 0, y: 0, z: 0} 43 | tangentMode: 0 44 | weightedMode: 0 45 | inWeight: {x: 0, y: 0.33333334, z: 0.33333334} 46 | outWeight: {x: 0, y: 0.33333334, z: 0.33333334} 47 | m_PreInfinity: 2 48 | m_PostInfinity: 2 49 | m_RotationOrder: 4 50 | path: 51 | m_PositionCurves: 52 | - curve: 53 | serializedVersion: 2 54 | m_Curve: 55 | - serializedVersion: 3 56 | time: 2 57 | value: {x: 0, y: 0.7, z: 0} 58 | inSlope: {x: 0, y: -0, z: 0} 59 | outSlope: {x: 0, y: -0.34600002, z: 0} 60 | tangentMode: 0 61 | weightedMode: 0 62 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 63 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 64 | - serializedVersion: 3 65 | time: 6 66 | value: {x: 0, y: -0.684, z: 0} 67 | inSlope: {x: 0, y: -0.34600002, z: 0} 68 | outSlope: {x: 0, y: 0, z: 0} 69 | tangentMode: 0 70 | weightedMode: 0 71 | inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 72 | outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334} 73 | m_PreInfinity: 2 74 | m_PostInfinity: 2 75 | m_RotationOrder: 4 76 | path: 77 | m_ScaleCurves: [] 78 | m_FloatCurves: [] 79 | m_PPtrCurves: [] 80 | m_SampleRate: 60 81 | m_WrapMode: 0 82 | m_Bounds: 83 | m_Center: {x: 0, y: 0, z: 0} 84 | m_Extent: {x: 0, y: 0, z: 0} 85 | m_ClipBindingConstant: 86 | genericBindings: 87 | - serializedVersion: 2 88 | path: 0 89 | attribute: 1 90 | script: {fileID: 0} 91 | typeID: 4 92 | customType: 0 93 | isPPtrCurve: 0 94 | - serializedVersion: 2 95 | path: 0 96 | attribute: 1 97 | script: {fileID: 0} 98 | typeID: 95 99 | customType: 8 100 | isPPtrCurve: 0 101 | - serializedVersion: 2 102 | path: 0 103 | attribute: 4 104 | script: {fileID: 0} 105 | typeID: 4 106 | customType: 4 107 | isPPtrCurve: 0 108 | - serializedVersion: 2 109 | path: 0 110 | attribute: 0 111 | script: {fileID: 0} 112 | typeID: 95 113 | customType: 8 114 | isPPtrCurve: 0 115 | - serializedVersion: 2 116 | path: 0 117 | attribute: 2 118 | script: {fileID: 0} 119 | typeID: 95 120 | customType: 8 121 | isPPtrCurve: 0 122 | - serializedVersion: 2 123 | path: 0 124 | attribute: 3 125 | script: {fileID: 0} 126 | typeID: 95 127 | customType: 8 128 | isPPtrCurve: 0 129 | - serializedVersion: 2 130 | path: 0 131 | attribute: 4 132 | script: {fileID: 0} 133 | typeID: 95 134 | customType: 8 135 | isPPtrCurve: 0 136 | - serializedVersion: 2 137 | path: 0 138 | attribute: 5 139 | script: {fileID: 0} 140 | typeID: 95 141 | customType: 8 142 | isPPtrCurve: 0 143 | - serializedVersion: 2 144 | path: 0 145 | attribute: 6 146 | script: {fileID: 0} 147 | typeID: 95 148 | customType: 8 149 | isPPtrCurve: 0 150 | pptrCurveMapping: [] 151 | m_AnimationClipSettings: 152 | serializedVersion: 2 153 | m_AdditiveReferencePoseClip: {fileID: 0} 154 | m_AdditiveReferencePoseTime: 0 155 | m_StartTime: 0 156 | m_StopTime: 6 157 | m_OrientationOffsetY: 0 158 | m_Level: 0 159 | m_CycleOffset: 0 160 | m_HasAdditiveReferencePose: 0 161 | m_LoopTime: 0 162 | m_LoopBlend: 0 163 | m_LoopBlendOrientation: 0 164 | m_LoopBlendPositionY: 0 165 | m_LoopBlendPositionXZ: 0 166 | m_KeepOriginalOrientation: 0 167 | m_KeepOriginalPositionY: 1 168 | m_KeepOriginalPositionXZ: 0 169 | m_HeightFromFeet: 0 170 | m_Mirror: 0 171 | m_EditorCurves: 172 | - curve: 173 | serializedVersion: 2 174 | m_Curve: 175 | - serializedVersion: 3 176 | time: 2 177 | value: 0.7 178 | inSlope: -0 179 | outSlope: -0.34600002 180 | tangentMode: 69 181 | weightedMode: 0 182 | inWeight: 0.33333334 183 | outWeight: 0.33333334 184 | - serializedVersion: 3 185 | time: 6 186 | value: -0.684 187 | inSlope: -0.34600002 188 | outSlope: 0 189 | tangentMode: 69 190 | weightedMode: 0 191 | inWeight: 0.33333334 192 | outWeight: 0.33333334 193 | m_PreInfinity: 2 194 | m_PostInfinity: 2 195 | m_RotationOrder: 4 196 | attribute: m_LocalPosition.y 197 | path: 198 | classID: 4 199 | script: {fileID: 0} 200 | - curve: 201 | serializedVersion: 2 202 | m_Curve: 203 | - serializedVersion: 3 204 | time: 0 205 | value: -90 206 | inSlope: 0 207 | outSlope: 0 208 | tangentMode: 136 209 | weightedMode: 0 210 | inWeight: 0 211 | outWeight: 0 212 | m_PreInfinity: 2 213 | m_PostInfinity: 2 214 | m_RotationOrder: 4 215 | attribute: localEulerAnglesRaw.x 216 | path: 217 | classID: 4 218 | script: {fileID: 0} 219 | m_EulerEditorCurves: [] 220 | m_HasGenericRootTransform: 1 221 | m_HasMotionFloatCurves: 0 222 | m_GenerateMotionCurves: 1 223 | m_Events: [] 224 | --- !u!114 &114342937025585958 225 | MonoBehaviour: 226 | m_ObjectHideFlags: 1 227 | m_PrefabParentObject: {fileID: 0} 228 | m_PrefabInternal: {fileID: 0} 229 | m_GameObject: {fileID: 0} 230 | m_Enabled: 1 231 | m_EditorHideFlags: 0 232 | m_Script: {fileID: 1467732076, guid: 6a10b2909283487f913b00d94cd3faf5, type: 3} 233 | m_Name: Animation Track 234 | m_EditorClassIdentifier: 235 | m_Locked: 0 236 | m_Muted: 0 237 | m_CustomPlayableFullTypename: 238 | m_AnimClip: {fileID: 74864664987565518} 239 | m_Parent: {fileID: 11400000} 240 | m_Children: [] 241 | m_Clips: [] 242 | m_Version: 1 243 | m_OpenClipPreExtrapolation: 1 244 | m_OpenClipPostExtrapolation: 1 245 | m_OpenClipOffsetPosition: {x: 0, y: 0, z: 0} 246 | m_OpenClipOffsetEulerAngles: {x: -0, y: 0, z: 0} 247 | m_OpenClipTimeOffset: 0 248 | m_MatchTargetFields: 63 249 | m_Position: {x: 0, y: 0, z: 0} 250 | m_EulerAngles: {x: 0, y: 0, z: 0} 251 | m_ApplyOffsets: 0 252 | m_AvatarMask: {fileID: 0} 253 | m_ApplyAvatarMask: 1 254 | m_OpenClipOffsetRotation: {x: 0, y: 0, z: 0, w: 1} 255 | m_Rotation: {x: 0, y: 0, z: 0, w: 1} 256 | -------------------------------------------------------------------------------- /Assets/Test/Timeline.playable.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 72e92588a560c344ea5b2bc6d6e07e89 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Test/TwoSided.shader: -------------------------------------------------------------------------------- 1 | Shader "Firefly/Two-Sided Standard" 2 | { 3 | Properties 4 | { 5 | _Color("Color", Color) = (1, 1, 1, 1) 6 | _Glossiness("Smoothness", Range(0, 1)) = 0.5 7 | _Metallic("Metallic", Range(0, 1)) = 0 8 | } 9 | SubShader 10 | { 11 | Tags { "RenderType"="Opaque" } 12 | 13 | Cull off 14 | 15 | CGPROGRAM 16 | 17 | #pragma surface surf Standard fullforwardshadows addshadow 18 | #pragma target 3.0 19 | 20 | struct Input { float vface : VFACE; }; 21 | 22 | fixed4 _Color; 23 | half _Glossiness; 24 | half _Metallic; 25 | 26 | void surf(Input IN, inout SurfaceOutputStandard o) 27 | { 28 | o.Albedo = _Color.rgb; 29 | o.Metallic = _Metallic; 30 | o.Smoothness = _Glossiness; 31 | o.Alpha = _Color.a; 32 | o.Normal *= IN.vface < 0 ? -1 : 1; 33 | } 34 | 35 | ENDCG 36 | } 37 | FallBack "Diffuse" 38 | } 39 | -------------------------------------------------------------------------------- /Assets/Test/TwoSided.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b58e887ff082b534199e0b0e894bbb29 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Test/Ugolino.obj.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7027146812fc2b14cb6a471a821b4633 3 | ModelImporter: 4 | serializedVersion: 22 5 | fileIDToRecycleName: 6 | 100000: //RootNode 7 | 100002: zz_decimated 8 | 100004: Ugolino 9 | 400000: //RootNode 10 | 400002: zz_decimated 11 | 400004: Ugolino 12 | 2100000: zz_decimatedMat 13 | 2300000: zz_decimated 14 | 2300002: Ugolino 15 | 3300000: zz_decimated 16 | 3300002: Ugolino 17 | 4300000: zz_decimated 18 | 4300002: Ugolino 19 | externalObjects: {} 20 | materials: 21 | importMaterials: 0 22 | materialName: 0 23 | materialSearch: 1 24 | materialLocation: 1 25 | animations: 26 | legacyGenerateAnimations: 4 27 | bakeSimulation: 0 28 | resampleCurves: 1 29 | optimizeGameObjects: 0 30 | motionNodeName: 31 | rigImportErrors: 32 | rigImportWarnings: 33 | animationImportErrors: 34 | animationImportWarnings: 35 | animationRetargetingWarnings: 36 | animationDoRetargetingWarnings: 0 37 | importAnimatedCustomProperties: 0 38 | importConstraints: 0 39 | animationCompression: 1 40 | animationRotationError: 0.5 41 | animationPositionError: 0.5 42 | animationScaleError: 0.5 43 | animationWrapMode: 0 44 | extraExposedTransformPaths: [] 45 | extraUserProperties: [] 46 | clipAnimations: [] 47 | isReadable: 1 48 | meshes: 49 | lODScreenPercentages: [] 50 | globalScale: 1 51 | meshCompression: 0 52 | addColliders: 0 53 | importVisibility: 0 54 | importBlendShapes: 0 55 | importCameras: 0 56 | importLights: 0 57 | swapUVChannels: 0 58 | generateSecondaryUV: 0 59 | useFileUnits: 1 60 | optimizeMeshForGPU: 1 61 | keepQuads: 0 62 | weldVertices: 1 63 | preserveHierarchy: 0 64 | indexFormat: 0 65 | secondaryUVAngleDistortion: 8 66 | secondaryUVAreaDistortion: 15.000001 67 | secondaryUVHardAngle: 88 68 | secondaryUVPackMargin: 4 69 | useFileScale: 1 70 | tangentSpace: 71 | normalSmoothAngle: 60 72 | normalImportMode: 0 73 | tangentImportMode: 3 74 | normalCalculationMode: 4 75 | importAnimation: 0 76 | copyAvatar: 0 77 | humanDescription: 78 | serializedVersion: 2 79 | human: [] 80 | skeleton: [] 81 | armTwist: 0.5 82 | foreArmTwist: 0.5 83 | upperLegTwist: 0.5 84 | legTwist: 0.5 85 | armStretch: 0.05 86 | legStretch: 0.05 87 | feetSpacing: 0 88 | rootMotionBoneName: 89 | rootMotionBoneRotation: {x: 0, y: 0, z: 0, w: 1} 90 | hasTranslationDoF: 0 91 | hasExtraRoot: 0 92 | skeletonHasParents: 1 93 | lastHumanDescriptionAvatarSource: {instanceID: 0} 94 | animationType: 0 95 | humanoidOversampling: 1 96 | additionalBone: 0 97 | userData: 98 | assetBundleName: 99 | assetBundleVariant: 100 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.entities": "0.0.12-preview.8", 4 | "com.unity.package-manager-ui": "1.9.11", 5 | "com.unity.postprocessing": "2.0.7-preview", 6 | "com.unity.modules.animation": "1.0.0", 7 | "com.unity.modules.audio": "1.0.0", 8 | "com.unity.modules.director": "1.0.0", 9 | "com.unity.modules.imgui": "1.0.0", 10 | "com.unity.modules.physics": "1.0.0", 11 | "com.unity.modules.vr": "1.0.0" 12 | }, 13 | "registry": "https://packages.unity.com" 14 | } 15 | -------------------------------------------------------------------------------- /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: 1 23 | m_ClothInterCollisionSettingsToggle: 0 24 | m_ContactPairsMode: 0 25 | m_BroadphaseType: 0 26 | m_WorldBounds: 27 | m_Center: {x: 0, y: 0, z: 0} 28 | m_Extent: {x: 250, y: 250, z: 250} 29 | m_WorldSubdivisions: 8 30 | -------------------------------------------------------------------------------- /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/Test.unity 10 | guid: bd11f8f4fab0bfa4db400ee8c7cb03b4 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: 7 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 1 10 | m_DefaultBehaviorMode: 0 11 | m_SpritePackerMode: 0 12 | m_SpritePackerPaddingPower: 1 13 | m_EtcTextureCompressorBehavior: 1 14 | m_EtcTextureFastCompressor: 1 15 | m_EtcTextureNormalCompressor: 2 16 | m_EtcTextureBestCompressor: 4 17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 18 | m_ProjectGenerationRootNamespace: 19 | m_UserGeneratedProjectSuffix: 20 | m_CollabEditorSettings: 21 | inProgressEnabled: 1 22 | -------------------------------------------------------------------------------- /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: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 40 | m_PreloadedShaders: [] 41 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 42 | type: 0} 43 | m_CustomRenderPipeline: {fileID: 0} 44 | m_TransparencySortMode: 0 45 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 46 | m_DefaultRenderingPath: 1 47 | m_DefaultMobileRenderingPath: 1 48 | m_TierSettings: [] 49 | m_LightmapStripping: 0 50 | m_FogStripping: 0 51 | m_InstancingStripping: 0 52 | m_LightmapKeepPlain: 1 53 | m_LightmapKeepDirCombined: 1 54 | m_LightmapKeepDynamicPlain: 1 55 | m_LightmapKeepDynamicDirCombined: 1 56 | m_LightmapKeepShadowMask: 1 57 | m_LightmapKeepSubtractive: 1 58 | m_FogKeepLinear: 1 59 | m_FogKeepExp: 1 60 | m_FogKeepExp2: 1 61 | m_AlbedoSwatchInfos: [] 62 | m_LightsUseLinearIntensity: 0 63 | m_LightsUseColorTemperature: 0 64 | -------------------------------------------------------------------------------- /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/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/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: 3 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_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_AutoSyncTransforms: 1 28 | m_AlwaysShowColliders: 0 29 | m_ShowColliderSleep: 1 30 | m_ShowColliderContacts: 0 31 | m_ShowColliderAABB: 0 32 | m_ContactArrowScale: 0.2 33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 38 | -------------------------------------------------------------------------------- /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 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /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: 15 7 | productGUID: 35629054a21545b48b224eab6b7f3296 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: Firefly 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: 0 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: 1 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidBlitType: 0 67 | defaultIsNativeResolution: 1 68 | macRetinaSupport: 1 69 | runInBackground: 1 70 | captureSingleScreen: 0 71 | muteOtherAudioSources: 0 72 | Prepare IOS For Recording: 0 73 | Force IOS Speakers When Recording: 0 74 | deferSystemGesturesMode: 0 75 | hideHomeButton: 0 76 | submitAnalytics: 1 77 | usePlayerLog: 1 78 | bakeCollisionMeshes: 0 79 | forceSingleInstance: 0 80 | resizableWindow: 0 81 | useMacAppStoreValidation: 0 82 | macAppStoreCategory: public.app-category.games 83 | gpuSkinning: 1 84 | graphicsJobs: 0 85 | xboxPIXTextureCapture: 0 86 | xboxEnableAvatar: 0 87 | xboxEnableKinect: 0 88 | xboxEnableKinectAutoTracking: 0 89 | xboxEnableFitness: 0 90 | visibleInBackground: 1 91 | allowFullscreenSwitch: 1 92 | graphicsJobMode: 0 93 | fullscreenMode: 1 94 | xboxSpeechDB: 0 95 | xboxEnableHeadOrientation: 0 96 | xboxEnableGuest: 0 97 | xboxEnablePIXSampling: 0 98 | metalFramebufferOnly: 0 99 | n3dsDisableStereoscopicView: 0 100 | n3dsEnableSharedListOpt: 1 101 | n3dsEnableVSync: 0 102 | xboxOneResolution: 0 103 | xboxOneSResolution: 0 104 | xboxOneXResolution: 3 105 | xboxOneMonoLoggingLevel: 0 106 | xboxOneLoggingLevel: 1 107 | xboxOneDisableEsram: 0 108 | xboxOnePresentImmediateThreshold: 0 109 | switchQueueCommandMemory: 0 110 | videoMemoryForVertexBuffers: 0 111 | psp2PowerMode: 0 112 | psp2AcquireBGM: 1 113 | vulkanEnableSetSRGBWrite: 0 114 | vulkanUseSWCommandBuffers: 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: 0 127 | xboxOneEnable7thCore: 0 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: 0 142 | oculus: 143 | sharedDepthBuffer: 0 144 | dashSupport: 0 145 | enable360StereoCapture: 0 146 | protectGraphicsMemory: 0 147 | useHDRDisplay: 0 148 | m_ColorGamuts: 00000000 149 | targetPixelDensity: 30 150 | resolutionScalingMode: 0 151 | androidSupportedAspectRatio: 1 152 | androidMaxAspectRatio: 2.1 153 | applicationIdentifier: {} 154 | buildNumber: {} 155 | AndroidBundleVersionCode: 1 156 | AndroidMinSdkVersion: 16 157 | AndroidTargetSdkVersion: 0 158 | AndroidPreferredInstallLocation: 1 159 | aotOptions: 160 | stripEngineCode: 1 161 | iPhoneStrippingLevel: 0 162 | iPhoneScriptCallOptimization: 0 163 | ForceInternetPermission: 0 164 | ForceSDCardPermission: 0 165 | CreateWallpaper: 0 166 | APKExpansionFiles: 0 167 | keepLoadedShadersAlive: 0 168 | StripUnusedMeshComponents: 1 169 | VertexChannelCompressionMask: 4054 170 | iPhoneSdkVersion: 988 171 | iOSTargetOSVersionString: 8.0 172 | tvOSSdkVersion: 0 173 | tvOSRequireExtendedGameController: 0 174 | tvOSTargetOSVersionString: 9.0 175 | uIPrerenderedIcon: 0 176 | uIRequiresPersistentWiFi: 0 177 | uIRequiresFullScreen: 1 178 | uIStatusBarHidden: 1 179 | uIExitOnSuspend: 0 180 | uIStatusBarStyle: 0 181 | iPhoneSplashScreen: {fileID: 0} 182 | iPhoneHighResSplashScreen: {fileID: 0} 183 | iPhoneTallHighResSplashScreen: {fileID: 0} 184 | iPhone47inSplashScreen: {fileID: 0} 185 | iPhone55inPortraitSplashScreen: {fileID: 0} 186 | iPhone55inLandscapeSplashScreen: {fileID: 0} 187 | iPhone58inPortraitSplashScreen: {fileID: 0} 188 | iPhone58inLandscapeSplashScreen: {fileID: 0} 189 | iPadPortraitSplashScreen: {fileID: 0} 190 | iPadHighResPortraitSplashScreen: {fileID: 0} 191 | iPadLandscapeSplashScreen: {fileID: 0} 192 | iPadHighResLandscapeSplashScreen: {fileID: 0} 193 | appleTVSplashScreen: {fileID: 0} 194 | appleTVSplashScreen2x: {fileID: 0} 195 | tvOSSmallIconLayers: [] 196 | tvOSSmallIconLayers2x: [] 197 | tvOSLargeIconLayers: [] 198 | tvOSLargeIconLayers2x: [] 199 | tvOSTopShelfImageLayers: [] 200 | tvOSTopShelfImageLayers2x: [] 201 | tvOSTopShelfImageWideLayers: [] 202 | tvOSTopShelfImageWideLayers2x: [] 203 | iOSLaunchScreenType: 0 204 | iOSLaunchScreenPortrait: {fileID: 0} 205 | iOSLaunchScreenLandscape: {fileID: 0} 206 | iOSLaunchScreenBackgroundColor: 207 | serializedVersion: 2 208 | rgba: 0 209 | iOSLaunchScreenFillPct: 100 210 | iOSLaunchScreenSize: 100 211 | iOSLaunchScreenCustomXibPath: 212 | iOSLaunchScreeniPadType: 0 213 | iOSLaunchScreeniPadImage: {fileID: 0} 214 | iOSLaunchScreeniPadBackgroundColor: 215 | serializedVersion: 2 216 | rgba: 0 217 | iOSLaunchScreeniPadFillPct: 100 218 | iOSLaunchScreeniPadSize: 100 219 | iOSLaunchScreeniPadCustomXibPath: 220 | iOSUseLaunchScreenStoryboard: 0 221 | iOSLaunchScreenCustomStoryboardPath: 222 | iOSDeviceRequirements: [] 223 | iOSURLSchemes: [] 224 | iOSBackgroundModes: 0 225 | iOSMetalForceHardShadows: 0 226 | metalEditorSupport: 1 227 | metalAPIValidation: 1 228 | iOSRenderExtraFrameOnPause: 0 229 | appleDeveloperTeamID: 230 | iOSManualSigningProvisioningProfileID: 231 | tvOSManualSigningProvisioningProfileID: 232 | iOSManualSigningProvisioningProfileType: 0 233 | tvOSManualSigningProvisioningProfileType: 0 234 | appleEnableAutomaticSigning: 0 235 | iOSRequireARKit: 0 236 | appleEnableProMotion: 0 237 | vulkanEditorSupport: 0 238 | clonedFromGUID: 56e7a2d3a00f33d44bdd161b773c35b5 239 | templatePackageId: com.unity.template.3d@1.0.0 240 | templateDefaultScene: Assets/Scenes/SampleScene.unity 241 | AndroidTargetArchitectures: 5 242 | AndroidSplashScreenScale: 0 243 | androidSplashScreen: {fileID: 0} 244 | AndroidKeystoreName: 245 | AndroidKeyaliasName: 246 | AndroidBuildApkPerCpuArchitecture: 0 247 | AndroidTVCompatibility: 1 248 | AndroidIsGame: 1 249 | AndroidEnableTango: 0 250 | androidEnableBanner: 1 251 | androidUseLowAccuracyLocation: 0 252 | m_AndroidBanners: 253 | - width: 320 254 | height: 180 255 | banner: {fileID: 0} 256 | androidGamepadSupportLevel: 0 257 | resolutionDialogBanner: {fileID: 0} 258 | m_BuildTargetIcons: [] 259 | m_BuildTargetPlatformIcons: [] 260 | m_BuildTargetBatching: 261 | - m_BuildTarget: Standalone 262 | m_StaticBatching: 1 263 | m_DynamicBatching: 0 264 | - m_BuildTarget: tvOS 265 | m_StaticBatching: 1 266 | m_DynamicBatching: 0 267 | - m_BuildTarget: Android 268 | m_StaticBatching: 1 269 | m_DynamicBatching: 0 270 | - m_BuildTarget: iPhone 271 | m_StaticBatching: 1 272 | m_DynamicBatching: 0 273 | - m_BuildTarget: WebGL 274 | m_StaticBatching: 0 275 | m_DynamicBatching: 0 276 | m_BuildTargetGraphicsAPIs: 277 | - m_BuildTarget: AndroidPlayer 278 | m_APIs: 0b00000015000000 279 | m_Automatic: 1 280 | - m_BuildTarget: iOSSupport 281 | m_APIs: 10000000 282 | m_Automatic: 1 283 | - m_BuildTarget: AppleTVSupport 284 | m_APIs: 10000000 285 | m_Automatic: 0 286 | - m_BuildTarget: WebGLSupport 287 | m_APIs: 0b000000 288 | m_Automatic: 1 289 | - m_BuildTarget: WindowsStandaloneSupport 290 | m_APIs: 02000000 291 | m_Automatic: 1 292 | m_BuildTargetVRSettings: 293 | - m_BuildTarget: Standalone 294 | m_Enabled: 0 295 | m_Devices: 296 | - Oculus 297 | - OpenVR 298 | m_BuildTargetEnableVuforiaSettings: [] 299 | openGLRequireES31: 0 300 | openGLRequireES31AEP: 0 301 | m_TemplateCustomTags: {} 302 | mobileMTRendering: 303 | Android: 1 304 | iPhone: 1 305 | tvOS: 1 306 | m_BuildTargetGroupLightmapEncodingQuality: [] 307 | m_BuildTargetGroupLightmapSettings: [] 308 | playModeTestRunnerEnabled: 0 309 | runPlayModeTestAsEditModeTest: 0 310 | actionOnDotNetUnhandledException: 1 311 | enableInternalProfiler: 0 312 | logObjCUncaughtExceptions: 1 313 | enableCrashReportAPI: 0 314 | cameraUsageDescription: 315 | locationUsageDescription: 316 | microphoneUsageDescription: 317 | switchNetLibKey: 318 | switchSocketMemoryPoolSize: 6144 319 | switchSocketAllocatorPoolSize: 128 320 | switchSocketConcurrencyLimit: 14 321 | switchScreenResolutionBehavior: 2 322 | switchUseCPUProfiler: 0 323 | switchApplicationID: 0x01004b9000490000 324 | switchNSODependencies: 325 | switchTitleNames_0: 326 | switchTitleNames_1: 327 | switchTitleNames_2: 328 | switchTitleNames_3: 329 | switchTitleNames_4: 330 | switchTitleNames_5: 331 | switchTitleNames_6: 332 | switchTitleNames_7: 333 | switchTitleNames_8: 334 | switchTitleNames_9: 335 | switchTitleNames_10: 336 | switchTitleNames_11: 337 | switchTitleNames_12: 338 | switchTitleNames_13: 339 | switchTitleNames_14: 340 | switchPublisherNames_0: 341 | switchPublisherNames_1: 342 | switchPublisherNames_2: 343 | switchPublisherNames_3: 344 | switchPublisherNames_4: 345 | switchPublisherNames_5: 346 | switchPublisherNames_6: 347 | switchPublisherNames_7: 348 | switchPublisherNames_8: 349 | switchPublisherNames_9: 350 | switchPublisherNames_10: 351 | switchPublisherNames_11: 352 | switchPublisherNames_12: 353 | switchPublisherNames_13: 354 | switchPublisherNames_14: 355 | switchIcons_0: {fileID: 0} 356 | switchIcons_1: {fileID: 0} 357 | switchIcons_2: {fileID: 0} 358 | switchIcons_3: {fileID: 0} 359 | switchIcons_4: {fileID: 0} 360 | switchIcons_5: {fileID: 0} 361 | switchIcons_6: {fileID: 0} 362 | switchIcons_7: {fileID: 0} 363 | switchIcons_8: {fileID: 0} 364 | switchIcons_9: {fileID: 0} 365 | switchIcons_10: {fileID: 0} 366 | switchIcons_11: {fileID: 0} 367 | switchIcons_12: {fileID: 0} 368 | switchIcons_13: {fileID: 0} 369 | switchIcons_14: {fileID: 0} 370 | switchSmallIcons_0: {fileID: 0} 371 | switchSmallIcons_1: {fileID: 0} 372 | switchSmallIcons_2: {fileID: 0} 373 | switchSmallIcons_3: {fileID: 0} 374 | switchSmallIcons_4: {fileID: 0} 375 | switchSmallIcons_5: {fileID: 0} 376 | switchSmallIcons_6: {fileID: 0} 377 | switchSmallIcons_7: {fileID: 0} 378 | switchSmallIcons_8: {fileID: 0} 379 | switchSmallIcons_9: {fileID: 0} 380 | switchSmallIcons_10: {fileID: 0} 381 | switchSmallIcons_11: {fileID: 0} 382 | switchSmallIcons_12: {fileID: 0} 383 | switchSmallIcons_13: {fileID: 0} 384 | switchSmallIcons_14: {fileID: 0} 385 | switchManualHTML: 386 | switchAccessibleURLs: 387 | switchLegalInformation: 388 | switchMainThreadStackSize: 1048576 389 | switchPresenceGroupId: 390 | switchLogoHandling: 0 391 | switchReleaseVersion: 0 392 | switchDisplayVersion: 1.0.0 393 | switchStartupUserAccount: 0 394 | switchTouchScreenUsage: 0 395 | switchSupportedLanguagesMask: 0 396 | switchLogoType: 0 397 | switchApplicationErrorCodeCategory: 398 | switchUserAccountSaveDataSize: 0 399 | switchUserAccountSaveDataJournalSize: 0 400 | switchApplicationAttribute: 0 401 | switchCardSpecSize: -1 402 | switchCardSpecClock: -1 403 | switchRatingsMask: 0 404 | switchRatingsInt_0: 0 405 | switchRatingsInt_1: 0 406 | switchRatingsInt_2: 0 407 | switchRatingsInt_3: 0 408 | switchRatingsInt_4: 0 409 | switchRatingsInt_5: 0 410 | switchRatingsInt_6: 0 411 | switchRatingsInt_7: 0 412 | switchRatingsInt_8: 0 413 | switchRatingsInt_9: 0 414 | switchRatingsInt_10: 0 415 | switchRatingsInt_11: 0 416 | switchLocalCommunicationIds_0: 417 | switchLocalCommunicationIds_1: 418 | switchLocalCommunicationIds_2: 419 | switchLocalCommunicationIds_3: 420 | switchLocalCommunicationIds_4: 421 | switchLocalCommunicationIds_5: 422 | switchLocalCommunicationIds_6: 423 | switchLocalCommunicationIds_7: 424 | switchParentalControl: 0 425 | switchAllowsScreenshot: 1 426 | switchAllowsVideoCapturing: 1 427 | switchAllowsRuntimeAddOnContentInstall: 0 428 | switchDataLossConfirmation: 0 429 | switchSupportedNpadStyles: 3 430 | switchNativeFsCacheSize: 32 431 | switchIsHoldTypeHorizontal: 0 432 | switchSupportedNpadCount: 8 433 | switchSocketConfigEnabled: 0 434 | switchTcpInitialSendBufferSize: 32 435 | switchTcpInitialReceiveBufferSize: 64 436 | switchTcpAutoSendBufferSizeMax: 256 437 | switchTcpAutoReceiveBufferSizeMax: 256 438 | switchUdpSendBufferSize: 9 439 | switchUdpReceiveBufferSize: 42 440 | switchSocketBufferEfficiency: 4 441 | switchSocketInitializeEnabled: 1 442 | switchNetworkInterfaceManagerInitializeEnabled: 1 443 | switchPlayerConnectionEnabled: 1 444 | ps4NPAgeRating: 12 445 | ps4NPTitleSecret: 446 | ps4NPTrophyPackPath: 447 | ps4ParentalLevel: 11 448 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 449 | ps4Category: 0 450 | ps4MasterVersion: 01.00 451 | ps4AppVersion: 01.00 452 | ps4AppType: 0 453 | ps4ParamSfxPath: 454 | ps4VideoOutPixelFormat: 0 455 | ps4VideoOutInitialWidth: 1920 456 | ps4VideoOutBaseModeInitialWidth: 1920 457 | ps4VideoOutReprojectionRate: 60 458 | ps4PronunciationXMLPath: 459 | ps4PronunciationSIGPath: 460 | ps4BackgroundImagePath: 461 | ps4StartupImagePath: 462 | ps4StartupImagesFolder: 463 | ps4IconImagesFolder: 464 | ps4SaveDataImagePath: 465 | ps4SdkOverride: 466 | ps4BGMPath: 467 | ps4ShareFilePath: 468 | ps4ShareOverlayImagePath: 469 | ps4PrivacyGuardImagePath: 470 | ps4NPtitleDatPath: 471 | ps4RemotePlayKeyAssignment: -1 472 | ps4RemotePlayKeyMappingDir: 473 | ps4PlayTogetherPlayerCount: 0 474 | ps4EnterButtonAssignment: 1 475 | ps4ApplicationParam1: 0 476 | ps4ApplicationParam2: 0 477 | ps4ApplicationParam3: 0 478 | ps4ApplicationParam4: 0 479 | ps4DownloadDataSize: 0 480 | ps4GarlicHeapSize: 2048 481 | ps4ProGarlicHeapSize: 2560 482 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 483 | ps4pnSessions: 1 484 | ps4pnPresence: 1 485 | ps4pnFriends: 1 486 | ps4pnGameCustomData: 1 487 | playerPrefsSupport: 0 488 | enableApplicationExit: 0 489 | restrictedAudioUsageRights: 0 490 | ps4UseResolutionFallback: 0 491 | ps4ReprojectionSupport: 0 492 | ps4UseAudio3dBackend: 0 493 | ps4SocialScreenEnabled: 0 494 | ps4ScriptOptimizationLevel: 0 495 | ps4Audio3dVirtualSpeakerCount: 14 496 | ps4attribCpuUsage: 0 497 | ps4PatchPkgPath: 498 | ps4PatchLatestPkgPath: 499 | ps4PatchChangeinfoPath: 500 | ps4PatchDayOne: 0 501 | ps4attribUserManagement: 0 502 | ps4attribMoveSupport: 0 503 | ps4attrib3DSupport: 0 504 | ps4attribShareSupport: 0 505 | ps4attribExclusiveVR: 0 506 | ps4disableAutoHideSplash: 0 507 | ps4videoRecordingFeaturesUsed: 0 508 | ps4contentSearchFeaturesUsed: 0 509 | ps4attribEyeToEyeDistanceSettingVR: 0 510 | ps4IncludedModules: [] 511 | monoEnv: 512 | psp2Splashimage: {fileID: 0} 513 | psp2NPTrophyPackPath: 514 | psp2NPSupportGBMorGJP: 0 515 | psp2NPAgeRating: 12 516 | psp2NPTitleDatPath: 517 | psp2NPCommsID: 518 | psp2NPCommunicationsID: 519 | psp2NPCommsPassphrase: 520 | psp2NPCommsSig: 521 | psp2ParamSfxPath: 522 | psp2ManualPath: 523 | psp2LiveAreaGatePath: 524 | psp2LiveAreaBackroundPath: 525 | psp2LiveAreaPath: 526 | psp2LiveAreaTrialPath: 527 | psp2PatchChangeInfoPath: 528 | psp2PatchOriginalPackage: 529 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui 530 | psp2KeystoneFile: 531 | psp2MemoryExpansionMode: 0 532 | psp2DRMType: 0 533 | psp2StorageType: 0 534 | psp2MediaCapacity: 0 535 | psp2DLCConfigPath: 536 | psp2ThumbnailPath: 537 | psp2BackgroundPath: 538 | psp2SoundPath: 539 | psp2TrophyCommId: 540 | psp2TrophyPackagePath: 541 | psp2PackagedResourcesPath: 542 | psp2SaveDataQuota: 10240 543 | psp2ParentalLevel: 1 544 | psp2ShortTitle: Not Set 545 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF 546 | psp2Category: 0 547 | psp2MasterVersion: 01.00 548 | psp2AppVersion: 01.00 549 | psp2TVBootMode: 0 550 | psp2EnterButtonAssignment: 2 551 | psp2TVDisableEmu: 0 552 | psp2AllowTwitterDialog: 1 553 | psp2Upgradable: 0 554 | psp2HealthWarning: 0 555 | psp2UseLibLocation: 0 556 | psp2InfoBarOnStartup: 0 557 | psp2InfoBarColor: 0 558 | psp2ScriptOptimizationLevel: 0 559 | splashScreenBackgroundSourceLandscape: {fileID: 0} 560 | splashScreenBackgroundSourcePortrait: {fileID: 0} 561 | spritePackerPolicy: 562 | webGLMemorySize: 256 563 | webGLExceptionSupport: 1 564 | webGLNameFilesAsHashes: 0 565 | webGLDataCaching: 0 566 | webGLDebugSymbols: 0 567 | webGLEmscriptenArgs: 568 | webGLModulesDirectory: 569 | webGLTemplate: APPLICATION:Default 570 | webGLAnalyzeBuildSize: 0 571 | webGLUseEmbeddedResources: 0 572 | webGLCompressionFormat: 1 573 | webGLLinkerTarget: 0 574 | scriptingDefineSymbols: 575 | 1: UNITY_POST_PROCESSING_STACK_V2 576 | 4: UNITY_POST_PROCESSING_STACK_V2 577 | 7: UNITY_POST_PROCESSING_STACK_V2 578 | 13: UNITY_POST_PROCESSING_STACK_V2 579 | 14: UNITY_POST_PROCESSING_STACK_V2 580 | 17: UNITY_POST_PROCESSING_STACK_V2 581 | 18: UNITY_POST_PROCESSING_STACK_V2 582 | 19: UNITY_POST_PROCESSING_STACK_V2 583 | 21: UNITY_POST_PROCESSING_STACK_V2 584 | 23: UNITY_POST_PROCESSING_STACK_V2 585 | 24: UNITY_POST_PROCESSING_STACK_V2 586 | 25: UNITY_POST_PROCESSING_STACK_V2 587 | 26: UNITY_POST_PROCESSING_STACK_V2 588 | 27: UNITY_POST_PROCESSING_STACK_V2 589 | platformArchitecture: {} 590 | scriptingBackend: 591 | Standalone: 1 592 | il2cppCompilerConfiguration: {} 593 | incrementalIl2cppBuild: {} 594 | allowUnsafeCode: 0 595 | additionalIl2CppArgs: 596 | scriptingRuntimeVersion: 1 597 | apiCompatibilityLevelPerPlatform: {} 598 | m_RenderingPath: 1 599 | m_MobileRenderingPath: 1 600 | metroPackageName: Template_3D 601 | metroPackageVersion: 602 | metroCertificatePath: 603 | metroCertificatePassword: 604 | metroCertificateSubject: 605 | metroCertificateIssuer: 606 | metroCertificateNotAfter: 0000000000000000 607 | metroApplicationDescription: Template_3D 608 | wsaImages: {} 609 | metroTileShortName: 610 | metroTileShowName: 0 611 | metroMediumTileShowName: 0 612 | metroLargeTileShowName: 0 613 | metroWideTileShowName: 0 614 | metroDefaultTileSize: 1 615 | metroTileForegroundText: 2 616 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 617 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 618 | a: 1} 619 | metroSplashScreenUseBackgroundColor: 0 620 | platformCapabilities: {} 621 | metroFTAName: 622 | metroFTAFileTypes: [] 623 | metroProtocolName: 624 | metroCompilationOverrides: 1 625 | n3dsUseExtSaveData: 0 626 | n3dsCompressStaticMem: 1 627 | n3dsExtSaveDataNumber: 0x12345 628 | n3dsStackSize: 131072 629 | n3dsTargetPlatform: 2 630 | n3dsRegion: 7 631 | n3dsMediaSize: 0 632 | n3dsLogoStyle: 3 633 | n3dsTitle: GameName 634 | n3dsProductCode: 635 | n3dsApplicationId: 0xFF3FF 636 | XboxOneProductId: 637 | XboxOneUpdateKey: 638 | XboxOneSandboxId: 639 | XboxOneContentId: 640 | XboxOneTitleId: 641 | XboxOneSCId: 642 | XboxOneGameOsOverridePath: 643 | XboxOnePackagingOverridePath: 644 | XboxOneAppManifestOverridePath: 645 | XboxOneVersion: 1.0.0.0 646 | XboxOnePackageEncryption: 0 647 | XboxOnePackageUpdateGranularity: 2 648 | XboxOneDescription: 649 | XboxOneLanguage: 650 | - enus 651 | XboxOneCapability: [] 652 | XboxOneGameRating: {} 653 | XboxOneIsContentPackage: 0 654 | XboxOneEnableGPUVariability: 0 655 | XboxOneSockets: {} 656 | XboxOneSplashScreen: {fileID: 0} 657 | XboxOneAllowedProductIds: [] 658 | XboxOnePersistentLocalStorageSize: 0 659 | XboxOneXTitleMemory: 8 660 | xboxOneScriptCompiler: 0 661 | vrEditorSettings: 662 | daydream: 663 | daydreamIconForeground: {fileID: 0} 664 | daydreamIconBackground: {fileID: 0} 665 | cloudServicesEnabled: 666 | UNet: 1 667 | facebookSdkVersion: 7.9.4 668 | apiCompatibilityLevel: 3 669 | cloudProjectId: 670 | projectName: Template_3D 671 | organizationId: 672 | cloudEnabled: 0 673 | enableNativePlatformBackendsForNewInputSystem: 0 674 | disableOldInputManagerSupport: 0 675 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.2.0f2 2 | -------------------------------------------------------------------------------- /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: 0 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: High 11 | pixelLightCount: 2 12 | shadows: 2 13 | shadowResolution: 3 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 30 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 1 21 | blendWeights: 2 22 | textureQuality: 0 23 | anisotropicTextures: 1 24 | antiAliasing: 8 25 | softParticles: 0 26 | softVegetation: 1 27 | realtimeReflectionProbes: 1 28 | billboardsFaceCameraPosition: 1 29 | vSyncCount: 1 30 | lodBias: 1 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 256 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 4 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | m_PerPlatformDefaultQuality: 38 | Android: 0 39 | Nintendo 3DS: 0 40 | Nintendo Switch: 0 41 | PS4: 0 42 | PSP2: 0 43 | Standalone: 0 44 | Tizen: 0 45 | WebGL: 0 46 | WiiU: 0 47 | Windows Store Apps: 0 48 | XboxOne: 0 49 | iPhone: 0 50 | tvOS: 0 51 | -------------------------------------------------------------------------------- /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 | - PostProcessing 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.0167 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 | m_Enabled: 1 7 | m_TestMode: 0 8 | m_TestEventUrl: 9 | m_TestConfigUrl: 10 | m_TestInitMode: 0 11 | CrashReportingSettings: 12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes 13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate 14 | m_Enabled: 0 15 | m_CaptureEditorExceptions: 1 16 | UnityPurchasingSettings: 17 | m_Enabled: 0 18 | m_TestMode: 0 19 | UnityAnalyticsSettings: 20 | m_Enabled: 1 21 | m_InitializeOnStartup: 1 22 | m_TestMode: 0 23 | m_TestEventUrl: 24 | m_TestConfigUrl: 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Firefly 2 | ======= 3 | 4 | ![gif](https://i.imgur.com/004oYCv.gif) 5 | ![gif](https://i.imgur.com/dNtlvDp.gif) 6 | 7 | *Firefly* is an example of use of Unity ECS (Entity Component System), C# Job 8 | System and the Burst compiler for implementing special effects. 9 | 10 | This project is still under heavy development. Please don't expect that it 11 | works correctly on your machine. 12 | 13 | System Requirements 14 | ------------------- 15 | 16 | - Unity 2018.2 or later 17 | --------------------------------------------------------------------------------