├── .gitattributes ├── .gitignore ├── Assets ├── Materials.meta ├── Materials │ ├── Building Material 1.mat │ ├── Building Material 1.mat.meta │ ├── Building Material 2.mat │ ├── Building Material 2.mat.meta │ ├── Building Material 3.mat │ ├── Building Material 3.mat.meta │ ├── Person Material 1.mat │ ├── Person Material 1.mat.meta │ ├── Person Material 2.mat │ ├── Person Material 2.mat.meta │ ├── Person Material 3.mat │ ├── Person Material 3.mat.meta │ ├── Person Material 4.mat │ ├── Person Material 4.mat.meta │ ├── Person Material 5.mat │ └── Person Material 5.mat.meta ├── New Terrain.asset ├── New Terrain.asset.meta ├── Prefabs.meta ├── Prefabs │ ├── Buildings.meta │ ├── Buildings │ │ ├── Building Large.prefab │ │ ├── Building Large.prefab.meta │ │ ├── Building Medium.prefab │ │ ├── Building Medium.prefab.meta │ │ ├── Building Small.prefab │ │ └── Building Small.prefab.meta │ ├── People.meta │ └── People │ │ ├── Person Type 1.prefab │ │ ├── Person Type 1.prefab.meta │ │ ├── Person Type 2.prefab │ │ ├── Person Type 2.prefab.meta │ │ ├── Person Type 3.prefab │ │ ├── Person Type 3.prefab.meta │ │ ├── Person Type 4.prefab │ │ ├── Person Type 4.prefab.meta │ │ ├── Person Type 5.prefab │ │ └── Person Type 5.prefab.meta ├── Scenes.meta ├── Scenes │ ├── Demo.unity │ └── Demo.unity.meta ├── Scripts.meta └── Scripts │ ├── Buildings.meta │ ├── Buildings │ ├── Domain.meta │ └── Domain │ │ ├── Building.cs │ │ ├── Building.cs.meta │ │ ├── BuildingObjectPoolingComponent.cs │ │ ├── BuildingObjectPoolingComponent.cs.meta │ │ ├── BuildingType.cs │ │ └── BuildingType.cs.meta │ ├── CustomCamera.meta │ ├── CustomCamera │ ├── Application.meta │ ├── Application │ │ ├── CameraManager.cs │ │ ├── CameraManager.cs.meta │ │ ├── TerrainPositionsFromCameraBoundariesGetter.cs │ │ └── TerrainPositionsFromCameraBoundariesGetter.cs.meta │ ├── Domain.meta │ └── Domain │ │ ├── TerrainPositionsFromCameraBoundaries.cs │ │ └── TerrainPositionsFromCameraBoundaries.cs.meta │ ├── Initializator.cs │ ├── Initializator.cs.meta │ ├── Map.meta │ ├── Map │ ├── Application.meta │ ├── Application │ │ ├── MapGenerator.cs │ │ ├── MapGenerator.cs.meta │ │ ├── TerrainHitter.cs │ │ └── TerrainHitter.cs.meta │ ├── Domain.meta │ └── Domain │ │ ├── BuildingList.cs │ │ ├── BuildingList.cs.meta │ │ ├── PersonList.cs │ │ └── PersonList.cs.meta │ ├── Noise.meta │ ├── Noise │ ├── Application.meta │ └── Application │ │ ├── NoiseGenerator.cs │ │ └── NoiseGenerator.cs.meta │ ├── ObjectPooler.meta │ ├── ObjectPooler │ ├── Application.meta │ ├── Application │ │ ├── Displayers.meta │ │ ├── Displayers │ │ │ ├── AObjectPoolerDisplayer.cs │ │ │ ├── AObjectPoolerDisplayer.cs.meta │ │ │ ├── BuildingsDisplayer.cs │ │ │ ├── BuildingsDisplayer.cs.meta │ │ │ ├── PeopleDisplayer.cs │ │ │ └── PeopleDisplayer.cs.meta │ │ ├── ObjectPoolerDisplayer.cs │ │ ├── ObjectPoolerDisplayer.cs.meta │ │ ├── ObjectPoolerManager.cs │ │ └── ObjectPoolerManager.cs.meta │ ├── Domain.meta │ └── Domain │ │ ├── IObjectPoolerDisplayer.cs │ │ ├── IObjectPoolerDisplayer.cs.meta │ │ ├── ObjectPoolItem.cs │ │ └── ObjectPoolItem.cs.meta │ ├── People.meta │ └── People │ ├── Application.meta │ ├── Application │ ├── PeopleManager.cs │ └── PeopleManager.cs.meta │ ├── Domain.meta │ └── Domain │ ├── Person.cs │ ├── Person.cs.meta │ ├── PersonMode.cs │ ├── PersonMode.cs.meta │ ├── PersonObjectPoolingComponent.cs │ ├── PersonObjectPoolingComponent.cs.meta │ ├── PersonType.cs │ └── PersonType.cs.meta ├── LICENSE ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset └── XRSettings.asset └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | /tmp/ 13 | 14 | # Never ignore Asset meta data 15 | !/[Aa]ssets/**/*.meta 16 | 17 | # Uncomment this line if you wish to ignore the asset store tools plugin 18 | # /[Aa]ssets/AssetStoreTools* 19 | 20 | # TextMesh Pro files 21 | [Aa]ssets/TextMesh*Pro/ 22 | 23 | # Autogenerated Jetbrains Rider plugin 24 | [Aa]ssets/Plugins/Editor/JetBrains* 25 | 26 | # Visual Studio cache directory 27 | .vs/ 28 | 29 | # Gradle cache directory 30 | .gradle/ 31 | 32 | # Autogenerated VS/MD/Consulo solution and project files 33 | ExportedObj/ 34 | .consulo/ 35 | *.csproj 36 | *.unityproj 37 | *.sln 38 | *.sln.DotSettings 39 | *.suo 40 | *.tmp 41 | *.user 42 | *.userprefs 43 | *.pidb 44 | *.booproj 45 | *.svd 46 | *.pdb 47 | *.mdb 48 | *.opendb 49 | *.VC.db 50 | 51 | # Unity3D generated meta files 52 | *.pidb.meta 53 | *.pdb.meta 54 | *.mdb.meta 55 | 56 | # Unity3D generated file on crash reports 57 | sysinfo.txt 58 | 59 | # Builds 60 | *.apk 61 | *.unitypackage 62 | *.unitypackage.meta 63 | 64 | # Crashlytics generated file 65 | crashlytics-build.properties 66 | 67 | # Jetbrain Rider Cache 68 | .idea/ 69 | Assets/Plugins/Editor/JetBrains* 70 | 71 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b659c068d8cc00b4d8f35949bfb79a72 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Building Material 1.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Building Material 1 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.9339623, g: 0.7296191, b: 0.24230155, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Building Material 1.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a441bea9d5c54e4c95043f60350147b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Building Material 2.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Building Material 2 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.27687788, g: 0.6513717, b: 0.9622642, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Building Material 2.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2053f0b5ac7f512498a7ddccbd7a2514 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Building Material 3.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Building Material 3 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.57033795, g: 0.8207547, b: 0.53039336, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Building Material 3.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb9264c79bd24a94bb8fb9577260f5ec 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 1.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Person Material 1 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.9468937, g: 1, b: 0, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 1.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1fb99692303900b419ce27ff0a128542 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 2.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Person Material 2 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.05540227, g: 0.7830189, b: 0.11478755, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 2.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 234fda3b961089743ac9f5fc14cdb133 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 3.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Person Material 3 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0.990566, g: 0, b: 0.15536967, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 3.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 31541abc977c08a429ac6dd3ca0d9a6b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 4.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Person Material 4 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 0, g: 0.7352996, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 4.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a15e05a18e3dd514fa4e90e9561a984a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 5.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_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Person Material 5 11 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 0} 44 | m_Scale: {x: 1, y: 1} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 0, b: 0.9700179, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Materials/Person Material 5.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 54a6c7f2f2654ec41aeeb9aa3ec9125e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/New Terrain.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/keypax/object-pooling-in-unity-demo/5e4eef406c31795d44f1fe25ee386c610026153d/Assets/New Terrain.asset -------------------------------------------------------------------------------- /Assets/New Terrain.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b5710c2378ab2674a98d77c7c1312ecc 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd421b18506196944b36212fa172fd17 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/Buildings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 415c553af2babde45bb6892a285f1540 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/Buildings/Building Large.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &83622975764725869 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 2927713208474906588} 12 | - component: {fileID: 722833505849863162} 13 | - component: {fileID: 5291792521674706175} 14 | - component: {fileID: 3248930260376329016} 15 | m_Layer: 0 16 | m_Name: Cube 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &2927713208474906588 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 83622975764725869} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 1.5, z: 0} 31 | m_LocalScale: {x: 1, y: 3, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &722833505849863162 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 83622975764725869} 43 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &5291792521674706175 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 83622975764725869} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: cb9264c79bd24a94bb8fb9577260f5ec, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!65 &3248930260376329016 84 | BoxCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 83622975764725869} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | serializedVersion: 2 94 | m_Size: {x: 1, y: 1, z: 1} 95 | m_Center: {x: 0, y: 0, z: 0} 96 | --- !u!1 &6832357843145977600 97 | GameObject: 98 | m_ObjectHideFlags: 0 99 | m_CorrespondingSourceObject: {fileID: 0} 100 | m_PrefabInstance: {fileID: 0} 101 | m_PrefabAsset: {fileID: 0} 102 | serializedVersion: 6 103 | m_Component: 104 | - component: {fileID: 8598307821138214416} 105 | - component: {fileID: 1791090817971862380} 106 | m_Layer: 0 107 | m_Name: Building Large 108 | m_TagString: Untagged 109 | m_Icon: {fileID: 0} 110 | m_NavMeshLayer: 0 111 | m_StaticEditorFlags: 0 112 | m_IsActive: 1 113 | --- !u!4 &8598307821138214416 114 | Transform: 115 | m_ObjectHideFlags: 0 116 | m_CorrespondingSourceObject: {fileID: 0} 117 | m_PrefabInstance: {fileID: 0} 118 | m_PrefabAsset: {fileID: 0} 119 | m_GameObject: {fileID: 6832357843145977600} 120 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 121 | m_LocalPosition: {x: 0, y: 0, z: 0} 122 | m_LocalScale: {x: 1, y: 1, z: 1} 123 | m_Children: 124 | - {fileID: 2927713208474906588} 125 | m_Father: {fileID: 0} 126 | m_RootOrder: 0 127 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 128 | --- !u!114 &1791090817971862380 129 | MonoBehaviour: 130 | m_ObjectHideFlags: 0 131 | m_CorrespondingSourceObject: {fileID: 0} 132 | m_PrefabInstance: {fileID: 0} 133 | m_PrefabAsset: {fileID: 0} 134 | m_GameObject: {fileID: 6832357843145977600} 135 | m_Enabled: 1 136 | m_EditorHideFlags: 0 137 | m_Script: {fileID: 11500000, guid: cb4b93181b194c35bf435ce98b0cc8c6, type: 3} 138 | m_Name: 139 | m_EditorClassIdentifier: 140 | -------------------------------------------------------------------------------- /Assets/Prefabs/Buildings/Building Large.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4597874ba7df49b43b882e26d985835a 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/Buildings/Building Medium.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &83622975764725869 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 2927713208474906588} 12 | - component: {fileID: 722833505849863162} 13 | - component: {fileID: 5291792521674706175} 14 | - component: {fileID: 3248930260376329016} 15 | m_Layer: 0 16 | m_Name: Cube 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &2927713208474906588 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 83622975764725869} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 1, z: 0} 31 | m_LocalScale: {x: 1, y: 2, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &722833505849863162 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 83622975764725869} 43 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &5291792521674706175 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 83622975764725869} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: 2053f0b5ac7f512498a7ddccbd7a2514, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!65 &3248930260376329016 84 | BoxCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 83622975764725869} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | serializedVersion: 2 94 | m_Size: {x: 1, y: 1, z: 1} 95 | m_Center: {x: 0, y: 0, z: 0} 96 | --- !u!1 &6832357843145977600 97 | GameObject: 98 | m_ObjectHideFlags: 0 99 | m_CorrespondingSourceObject: {fileID: 0} 100 | m_PrefabInstance: {fileID: 0} 101 | m_PrefabAsset: {fileID: 0} 102 | serializedVersion: 6 103 | m_Component: 104 | - component: {fileID: 8598307821138214416} 105 | - component: {fileID: 785241768232712112} 106 | m_Layer: 0 107 | m_Name: Building Medium 108 | m_TagString: Untagged 109 | m_Icon: {fileID: 0} 110 | m_NavMeshLayer: 0 111 | m_StaticEditorFlags: 0 112 | m_IsActive: 1 113 | --- !u!4 &8598307821138214416 114 | Transform: 115 | m_ObjectHideFlags: 0 116 | m_CorrespondingSourceObject: {fileID: 0} 117 | m_PrefabInstance: {fileID: 0} 118 | m_PrefabAsset: {fileID: 0} 119 | m_GameObject: {fileID: 6832357843145977600} 120 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 121 | m_LocalPosition: {x: 0, y: 0, z: 0} 122 | m_LocalScale: {x: 1, y: 1, z: 1} 123 | m_Children: 124 | - {fileID: 2927713208474906588} 125 | m_Father: {fileID: 0} 126 | m_RootOrder: 0 127 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 128 | --- !u!114 &785241768232712112 129 | MonoBehaviour: 130 | m_ObjectHideFlags: 0 131 | m_CorrespondingSourceObject: {fileID: 0} 132 | m_PrefabInstance: {fileID: 0} 133 | m_PrefabAsset: {fileID: 0} 134 | m_GameObject: {fileID: 6832357843145977600} 135 | m_Enabled: 1 136 | m_EditorHideFlags: 0 137 | m_Script: {fileID: 11500000, guid: cb4b93181b194c35bf435ce98b0cc8c6, type: 3} 138 | m_Name: 139 | m_EditorClassIdentifier: 140 | -------------------------------------------------------------------------------- /Assets/Prefabs/Buildings/Building Medium.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9943afed2c2f6004bacd39ec54a98d1f 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/Buildings/Building Small.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &83622975764725869 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 2927713208474906588} 12 | - component: {fileID: 722833505849863162} 13 | - component: {fileID: 5291792521674706175} 14 | - component: {fileID: 3248930260376329016} 15 | m_Layer: 0 16 | m_Name: Cube 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &2927713208474906588 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 83622975764725869} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0.5, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &722833505849863162 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 83622975764725869} 43 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &5291792521674706175 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 83622975764725869} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: 2a441bea9d5c54e4c95043f60350147b, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!65 &3248930260376329016 84 | BoxCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 83622975764725869} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | serializedVersion: 2 94 | m_Size: {x: 1, y: 1, z: 1} 95 | m_Center: {x: 0, y: 0, z: 0} 96 | --- !u!1 &6832357843145977600 97 | GameObject: 98 | m_ObjectHideFlags: 0 99 | m_CorrespondingSourceObject: {fileID: 0} 100 | m_PrefabInstance: {fileID: 0} 101 | m_PrefabAsset: {fileID: 0} 102 | serializedVersion: 6 103 | m_Component: 104 | - component: {fileID: 8598307821138214416} 105 | - component: {fileID: -4676900697026735442} 106 | m_Layer: 0 107 | m_Name: Building Small 108 | m_TagString: Untagged 109 | m_Icon: {fileID: 0} 110 | m_NavMeshLayer: 0 111 | m_StaticEditorFlags: 0 112 | m_IsActive: 1 113 | --- !u!4 &8598307821138214416 114 | Transform: 115 | m_ObjectHideFlags: 0 116 | m_CorrespondingSourceObject: {fileID: 0} 117 | m_PrefabInstance: {fileID: 0} 118 | m_PrefabAsset: {fileID: 0} 119 | m_GameObject: {fileID: 6832357843145977600} 120 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 121 | m_LocalPosition: {x: 0, y: 0, z: 0} 122 | m_LocalScale: {x: 1, y: 1, z: 1} 123 | m_Children: 124 | - {fileID: 2927713208474906588} 125 | m_Father: {fileID: 0} 126 | m_RootOrder: 0 127 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 128 | --- !u!114 &-4676900697026735442 129 | MonoBehaviour: 130 | m_ObjectHideFlags: 0 131 | m_CorrespondingSourceObject: {fileID: 0} 132 | m_PrefabInstance: {fileID: 0} 133 | m_PrefabAsset: {fileID: 0} 134 | m_GameObject: {fileID: 6832357843145977600} 135 | m_Enabled: 1 136 | m_EditorHideFlags: 0 137 | m_Script: {fileID: 11500000, guid: cb4b93181b194c35bf435ce98b0cc8c6, type: 3} 138 | m_Name: 139 | m_EditorClassIdentifier: 140 | -------------------------------------------------------------------------------- /Assets/Prefabs/Buildings/Building Small.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d8a8f6929e4cc7d4d81aefc35af496b0 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/People.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d13c9ff54ba7f7945884d1f61f00b573 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 1.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &4536662275477100220 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8580686915736595170} 12 | - component: {fileID: 36065198779308033} 13 | - component: {fileID: 2590336723652301408} 14 | - component: {fileID: 2628051851463036194} 15 | m_Layer: 0 16 | m_Name: Capsule 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &8580686915736595170 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 4536662275477100220} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0.878, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &36065198779308033 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 4536662275477100220} 43 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &2590336723652301408 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 4536662275477100220} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: 1fb99692303900b419ce27ff0a128542, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!136 &2628051851463036194 84 | CapsuleCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 4536662275477100220} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | m_Radius: 0.5 94 | m_Height: 2 95 | m_Direction: 1 96 | m_Center: {x: 0, y: 0, z: 0} 97 | --- !u!1 &6832357843145977600 98 | GameObject: 99 | m_ObjectHideFlags: 0 100 | m_CorrespondingSourceObject: {fileID: 0} 101 | m_PrefabInstance: {fileID: 0} 102 | m_PrefabAsset: {fileID: 0} 103 | serializedVersion: 6 104 | m_Component: 105 | - component: {fileID: 8598307821138214416} 106 | - component: {fileID: 7975786016654620839} 107 | m_Layer: 0 108 | m_Name: Person Type 1 109 | m_TagString: Untagged 110 | m_Icon: {fileID: 0} 111 | m_NavMeshLayer: 0 112 | m_StaticEditorFlags: 0 113 | m_IsActive: 1 114 | --- !u!4 &8598307821138214416 115 | Transform: 116 | m_ObjectHideFlags: 0 117 | m_CorrespondingSourceObject: {fileID: 0} 118 | m_PrefabInstance: {fileID: 0} 119 | m_PrefabAsset: {fileID: 0} 120 | m_GameObject: {fileID: 6832357843145977600} 121 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 122 | m_LocalPosition: {x: 0, y: 0, z: 0} 123 | m_LocalScale: {x: 1, y: 1, z: 1} 124 | m_Children: 125 | - {fileID: 8580686915736595170} 126 | m_Father: {fileID: 0} 127 | m_RootOrder: 0 128 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 129 | --- !u!114 &7975786016654620839 130 | MonoBehaviour: 131 | m_ObjectHideFlags: 0 132 | m_CorrespondingSourceObject: {fileID: 0} 133 | m_PrefabInstance: {fileID: 0} 134 | m_PrefabAsset: {fileID: 0} 135 | m_GameObject: {fileID: 6832357843145977600} 136 | m_Enabled: 1 137 | m_EditorHideFlags: 0 138 | m_Script: {fileID: 11500000, guid: 58c7935d958e40d3a2ba06e56327d05c, type: 3} 139 | m_Name: 140 | m_EditorClassIdentifier: 141 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 1.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 61750fb55db262a4b8cfd975471ab9e4 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 2.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &4536662275477100220 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8580686915736595170} 12 | - component: {fileID: 36065198779308033} 13 | - component: {fileID: 2590336723652301408} 14 | - component: {fileID: 2628051851463036194} 15 | m_Layer: 0 16 | m_Name: Capsule 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &8580686915736595170 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 4536662275477100220} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0.878, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &36065198779308033 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 4536662275477100220} 43 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &2590336723652301408 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 4536662275477100220} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: 234fda3b961089743ac9f5fc14cdb133, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!136 &2628051851463036194 84 | CapsuleCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 4536662275477100220} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | m_Radius: 0.5 94 | m_Height: 2 95 | m_Direction: 1 96 | m_Center: {x: 0, y: 0, z: 0} 97 | --- !u!1 &6832357843145977600 98 | GameObject: 99 | m_ObjectHideFlags: 0 100 | m_CorrespondingSourceObject: {fileID: 0} 101 | m_PrefabInstance: {fileID: 0} 102 | m_PrefabAsset: {fileID: 0} 103 | serializedVersion: 6 104 | m_Component: 105 | - component: {fileID: 8598307821138214416} 106 | - component: {fileID: 2395970568810529500} 107 | m_Layer: 0 108 | m_Name: Person Type 2 109 | m_TagString: Untagged 110 | m_Icon: {fileID: 0} 111 | m_NavMeshLayer: 0 112 | m_StaticEditorFlags: 0 113 | m_IsActive: 1 114 | --- !u!4 &8598307821138214416 115 | Transform: 116 | m_ObjectHideFlags: 0 117 | m_CorrespondingSourceObject: {fileID: 0} 118 | m_PrefabInstance: {fileID: 0} 119 | m_PrefabAsset: {fileID: 0} 120 | m_GameObject: {fileID: 6832357843145977600} 121 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 122 | m_LocalPosition: {x: 0, y: 0, z: 0} 123 | m_LocalScale: {x: 1, y: 1, z: 1} 124 | m_Children: 125 | - {fileID: 8580686915736595170} 126 | m_Father: {fileID: 0} 127 | m_RootOrder: 0 128 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 129 | --- !u!114 &2395970568810529500 130 | MonoBehaviour: 131 | m_ObjectHideFlags: 0 132 | m_CorrespondingSourceObject: {fileID: 0} 133 | m_PrefabInstance: {fileID: 0} 134 | m_PrefabAsset: {fileID: 0} 135 | m_GameObject: {fileID: 6832357843145977600} 136 | m_Enabled: 1 137 | m_EditorHideFlags: 0 138 | m_Script: {fileID: 11500000, guid: 58c7935d958e40d3a2ba06e56327d05c, type: 3} 139 | m_Name: 140 | m_EditorClassIdentifier: 141 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 2.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27497abf8ea049b41ad40681617b91ac 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 3.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &4536662275477100220 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8580686915736595170} 12 | - component: {fileID: 36065198779308033} 13 | - component: {fileID: 2590336723652301408} 14 | - component: {fileID: 2628051851463036194} 15 | m_Layer: 0 16 | m_Name: Capsule 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &8580686915736595170 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 4536662275477100220} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0.878, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &36065198779308033 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 4536662275477100220} 43 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &2590336723652301408 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 4536662275477100220} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: 31541abc977c08a429ac6dd3ca0d9a6b, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!136 &2628051851463036194 84 | CapsuleCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 4536662275477100220} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | m_Radius: 0.5 94 | m_Height: 2 95 | m_Direction: 1 96 | m_Center: {x: 0, y: 0, z: 0} 97 | --- !u!1 &6832357843145977600 98 | GameObject: 99 | m_ObjectHideFlags: 0 100 | m_CorrespondingSourceObject: {fileID: 0} 101 | m_PrefabInstance: {fileID: 0} 102 | m_PrefabAsset: {fileID: 0} 103 | serializedVersion: 6 104 | m_Component: 105 | - component: {fileID: 8598307821138214416} 106 | - component: {fileID: 474236745386862858} 107 | m_Layer: 0 108 | m_Name: Person Type 3 109 | m_TagString: Untagged 110 | m_Icon: {fileID: 0} 111 | m_NavMeshLayer: 0 112 | m_StaticEditorFlags: 0 113 | m_IsActive: 1 114 | --- !u!4 &8598307821138214416 115 | Transform: 116 | m_ObjectHideFlags: 0 117 | m_CorrespondingSourceObject: {fileID: 0} 118 | m_PrefabInstance: {fileID: 0} 119 | m_PrefabAsset: {fileID: 0} 120 | m_GameObject: {fileID: 6832357843145977600} 121 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 122 | m_LocalPosition: {x: 0, y: 0, z: 0} 123 | m_LocalScale: {x: 1, y: 1, z: 1} 124 | m_Children: 125 | - {fileID: 8580686915736595170} 126 | m_Father: {fileID: 0} 127 | m_RootOrder: 0 128 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 129 | --- !u!114 &474236745386862858 130 | MonoBehaviour: 131 | m_ObjectHideFlags: 0 132 | m_CorrespondingSourceObject: {fileID: 0} 133 | m_PrefabInstance: {fileID: 0} 134 | m_PrefabAsset: {fileID: 0} 135 | m_GameObject: {fileID: 6832357843145977600} 136 | m_Enabled: 1 137 | m_EditorHideFlags: 0 138 | m_Script: {fileID: 11500000, guid: 58c7935d958e40d3a2ba06e56327d05c, type: 3} 139 | m_Name: 140 | m_EditorClassIdentifier: 141 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 3.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 17e9791b5d05f8a469cd87bcd5efc0b8 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 4.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &4536662275477100220 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8580686915736595170} 12 | - component: {fileID: 36065198779308033} 13 | - component: {fileID: 2590336723652301408} 14 | - component: {fileID: 2628051851463036194} 15 | m_Layer: 0 16 | m_Name: Capsule 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &8580686915736595170 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 4536662275477100220} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0.878, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &36065198779308033 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 4536662275477100220} 43 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &2590336723652301408 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 4536662275477100220} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: a15e05a18e3dd514fa4e90e9561a984a, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!136 &2628051851463036194 84 | CapsuleCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 4536662275477100220} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | m_Radius: 0.5 94 | m_Height: 2 95 | m_Direction: 1 96 | m_Center: {x: 0, y: 0, z: 0} 97 | --- !u!1 &6832357843145977600 98 | GameObject: 99 | m_ObjectHideFlags: 0 100 | m_CorrespondingSourceObject: {fileID: 0} 101 | m_PrefabInstance: {fileID: 0} 102 | m_PrefabAsset: {fileID: 0} 103 | serializedVersion: 6 104 | m_Component: 105 | - component: {fileID: 8598307821138214416} 106 | - component: {fileID: -8804293936231630814} 107 | m_Layer: 0 108 | m_Name: Person Type 4 109 | m_TagString: Untagged 110 | m_Icon: {fileID: 0} 111 | m_NavMeshLayer: 0 112 | m_StaticEditorFlags: 0 113 | m_IsActive: 1 114 | --- !u!4 &8598307821138214416 115 | Transform: 116 | m_ObjectHideFlags: 0 117 | m_CorrespondingSourceObject: {fileID: 0} 118 | m_PrefabInstance: {fileID: 0} 119 | m_PrefabAsset: {fileID: 0} 120 | m_GameObject: {fileID: 6832357843145977600} 121 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 122 | m_LocalPosition: {x: 0, y: 0, z: 0} 123 | m_LocalScale: {x: 1, y: 1, z: 1} 124 | m_Children: 125 | - {fileID: 8580686915736595170} 126 | m_Father: {fileID: 0} 127 | m_RootOrder: 0 128 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 129 | --- !u!114 &-8804293936231630814 130 | MonoBehaviour: 131 | m_ObjectHideFlags: 0 132 | m_CorrespondingSourceObject: {fileID: 0} 133 | m_PrefabInstance: {fileID: 0} 134 | m_PrefabAsset: {fileID: 0} 135 | m_GameObject: {fileID: 6832357843145977600} 136 | m_Enabled: 1 137 | m_EditorHideFlags: 0 138 | m_Script: {fileID: 11500000, guid: 58c7935d958e40d3a2ba06e56327d05c, type: 3} 139 | m_Name: 140 | m_EditorClassIdentifier: 141 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 4.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c13ad34c5f6b8aa4990eec2c9418548e 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 5.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &4536662275477100220 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8580686915736595170} 12 | - component: {fileID: 36065198779308033} 13 | - component: {fileID: 2590336723652301408} 14 | - component: {fileID: 2628051851463036194} 15 | m_Layer: 0 16 | m_Name: Capsule 17 | m_TagString: Untagged 18 | m_Icon: {fileID: 0} 19 | m_NavMeshLayer: 0 20 | m_StaticEditorFlags: 0 21 | m_IsActive: 1 22 | --- !u!4 &8580686915736595170 23 | Transform: 24 | m_ObjectHideFlags: 0 25 | m_CorrespondingSourceObject: {fileID: 0} 26 | m_PrefabInstance: {fileID: 0} 27 | m_PrefabAsset: {fileID: 0} 28 | m_GameObject: {fileID: 4536662275477100220} 29 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 30 | m_LocalPosition: {x: 0, y: 0.878, z: 0} 31 | m_LocalScale: {x: 1, y: 1, z: 1} 32 | m_Children: [] 33 | m_Father: {fileID: 8598307821138214416} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | --- !u!33 &36065198779308033 37 | MeshFilter: 38 | m_ObjectHideFlags: 0 39 | m_CorrespondingSourceObject: {fileID: 0} 40 | m_PrefabInstance: {fileID: 0} 41 | m_PrefabAsset: {fileID: 0} 42 | m_GameObject: {fileID: 4536662275477100220} 43 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 44 | --- !u!23 &2590336723652301408 45 | MeshRenderer: 46 | m_ObjectHideFlags: 0 47 | m_CorrespondingSourceObject: {fileID: 0} 48 | m_PrefabInstance: {fileID: 0} 49 | m_PrefabAsset: {fileID: 0} 50 | m_GameObject: {fileID: 4536662275477100220} 51 | m_Enabled: 1 52 | m_CastShadows: 1 53 | m_ReceiveShadows: 1 54 | m_DynamicOccludee: 1 55 | m_MotionVectors: 1 56 | m_LightProbeUsage: 1 57 | m_ReflectionProbeUsage: 1 58 | m_RayTracingMode: 2 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: 54a6c7f2f2654ec41aeeb9aa3ec9125e, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | --- !u!136 &2628051851463036194 84 | CapsuleCollider: 85 | m_ObjectHideFlags: 0 86 | m_CorrespondingSourceObject: {fileID: 0} 87 | m_PrefabInstance: {fileID: 0} 88 | m_PrefabAsset: {fileID: 0} 89 | m_GameObject: {fileID: 4536662275477100220} 90 | m_Material: {fileID: 0} 91 | m_IsTrigger: 0 92 | m_Enabled: 1 93 | m_Radius: 0.5 94 | m_Height: 2 95 | m_Direction: 1 96 | m_Center: {x: 0, y: 0, z: 0} 97 | --- !u!1 &6832357843145977600 98 | GameObject: 99 | m_ObjectHideFlags: 0 100 | m_CorrespondingSourceObject: {fileID: 0} 101 | m_PrefabInstance: {fileID: 0} 102 | m_PrefabAsset: {fileID: 0} 103 | serializedVersion: 6 104 | m_Component: 105 | - component: {fileID: 8598307821138214416} 106 | - component: {fileID: -4508861147972189439} 107 | m_Layer: 0 108 | m_Name: Person Type 5 109 | m_TagString: Untagged 110 | m_Icon: {fileID: 0} 111 | m_NavMeshLayer: 0 112 | m_StaticEditorFlags: 0 113 | m_IsActive: 1 114 | --- !u!4 &8598307821138214416 115 | Transform: 116 | m_ObjectHideFlags: 0 117 | m_CorrespondingSourceObject: {fileID: 0} 118 | m_PrefabInstance: {fileID: 0} 119 | m_PrefabAsset: {fileID: 0} 120 | m_GameObject: {fileID: 6832357843145977600} 121 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 122 | m_LocalPosition: {x: 0, y: 0, z: 0} 123 | m_LocalScale: {x: 1, y: 1, z: 1} 124 | m_Children: 125 | - {fileID: 8580686915736595170} 126 | m_Father: {fileID: 0} 127 | m_RootOrder: 0 128 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 129 | --- !u!114 &-4508861147972189439 130 | MonoBehaviour: 131 | m_ObjectHideFlags: 0 132 | m_CorrespondingSourceObject: {fileID: 0} 133 | m_PrefabInstance: {fileID: 0} 134 | m_PrefabAsset: {fileID: 0} 135 | m_GameObject: {fileID: 6832357843145977600} 136 | m_Enabled: 1 137 | m_EditorHideFlags: 0 138 | m_Script: {fileID: 11500000, guid: 58c7935d958e40d3a2ba06e56327d05c, type: 3} 139 | m_Name: 140 | m_EditorClassIdentifier: 141 | -------------------------------------------------------------------------------- /Assets/Prefabs/People/Person Type 5.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 11e77d9b5c76d644a9b9eda341edcd44 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6e16acec65382014eb90ab1e723f467b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/Demo.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.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 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: 0 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: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 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: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_UseShadowmask: 1 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | debug: 122 | m_Flags: 0 123 | m_NavMeshData: {fileID: 0} 124 | --- !u!1 &212863282 125 | GameObject: 126 | m_ObjectHideFlags: 0 127 | m_CorrespondingSourceObject: {fileID: 0} 128 | m_PrefabInstance: {fileID: 0} 129 | m_PrefabAsset: {fileID: 0} 130 | serializedVersion: 6 131 | m_Component: 132 | - component: {fileID: 212863283} 133 | m_Layer: 0 134 | m_Name: ----------- 135 | m_TagString: Untagged 136 | m_Icon: {fileID: 0} 137 | m_NavMeshLayer: 0 138 | m_StaticEditorFlags: 0 139 | m_IsActive: 1 140 | --- !u!4 &212863283 141 | Transform: 142 | m_ObjectHideFlags: 0 143 | m_CorrespondingSourceObject: {fileID: 0} 144 | m_PrefabInstance: {fileID: 0} 145 | m_PrefabAsset: {fileID: 0} 146 | m_GameObject: {fileID: 212863282} 147 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 148 | m_LocalPosition: {x: 0, y: 0, z: 0} 149 | m_LocalScale: {x: 1, y: 1, z: 1} 150 | m_Children: [] 151 | m_Father: {fileID: 0} 152 | m_RootOrder: 4 153 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 154 | --- !u!1 &442443655 155 | GameObject: 156 | m_ObjectHideFlags: 0 157 | m_CorrespondingSourceObject: {fileID: 0} 158 | m_PrefabInstance: {fileID: 0} 159 | m_PrefabAsset: {fileID: 0} 160 | serializedVersion: 6 161 | m_Component: 162 | - component: {fileID: 442443657} 163 | - component: {fileID: 442443656} 164 | m_Layer: 0 165 | m_Name: PeopleManager 166 | m_TagString: Untagged 167 | m_Icon: {fileID: 0} 168 | m_NavMeshLayer: 0 169 | m_StaticEditorFlags: 0 170 | m_IsActive: 1 171 | --- !u!114 &442443656 172 | MonoBehaviour: 173 | m_ObjectHideFlags: 0 174 | m_CorrespondingSourceObject: {fileID: 0} 175 | m_PrefabInstance: {fileID: 0} 176 | m_PrefabAsset: {fileID: 0} 177 | m_GameObject: {fileID: 442443655} 178 | m_Enabled: 1 179 | m_EditorHideFlags: 0 180 | m_Script: {fileID: 11500000, guid: 7cde1b55b24c4cc896d295d8fde0a0d4, type: 3} 181 | m_Name: 182 | m_EditorClassIdentifier: 183 | --- !u!4 &442443657 184 | Transform: 185 | m_ObjectHideFlags: 0 186 | m_CorrespondingSourceObject: {fileID: 0} 187 | m_PrefabInstance: {fileID: 0} 188 | m_PrefabAsset: {fileID: 0} 189 | m_GameObject: {fileID: 442443655} 190 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 191 | m_LocalPosition: {x: 0, y: 0, z: 0} 192 | m_LocalScale: {x: 1, y: 1, z: 1} 193 | m_Children: [] 194 | m_Father: {fileID: 0} 195 | m_RootOrder: 3 196 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 197 | --- !u!1 &616414383 198 | GameObject: 199 | m_ObjectHideFlags: 0 200 | m_CorrespondingSourceObject: {fileID: 0} 201 | m_PrefabInstance: {fileID: 0} 202 | m_PrefabAsset: {fileID: 0} 203 | serializedVersion: 6 204 | m_Component: 205 | - component: {fileID: 616414385} 206 | - component: {fileID: 616414384} 207 | m_Layer: 0 208 | m_Name: ObjectPoolerDisplayer 209 | m_TagString: Untagged 210 | m_Icon: {fileID: 0} 211 | m_NavMeshLayer: 0 212 | m_StaticEditorFlags: 0 213 | m_IsActive: 1 214 | --- !u!114 &616414384 215 | MonoBehaviour: 216 | m_ObjectHideFlags: 0 217 | m_CorrespondingSourceObject: {fileID: 0} 218 | m_PrefabInstance: {fileID: 0} 219 | m_PrefabAsset: {fileID: 0} 220 | m_GameObject: {fileID: 616414383} 221 | m_Enabled: 1 222 | m_EditorHideFlags: 0 223 | m_Script: {fileID: 11500000, guid: 6379f307cfab4f38a9156077f5ba39a5, type: 3} 224 | m_Name: 225 | m_EditorClassIdentifier: 226 | margin: 50 227 | --- !u!4 &616414385 228 | Transform: 229 | m_ObjectHideFlags: 0 230 | m_CorrespondingSourceObject: {fileID: 0} 231 | m_PrefabInstance: {fileID: 0} 232 | m_PrefabAsset: {fileID: 0} 233 | m_GameObject: {fileID: 616414383} 234 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 235 | m_LocalPosition: {x: 0, y: 0, z: 0} 236 | m_LocalScale: {x: 1, y: 1, z: 1} 237 | m_Children: [] 238 | m_Father: {fileID: 0} 239 | m_RootOrder: 2 240 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 241 | --- !u!1 &1380682981 242 | GameObject: 243 | m_ObjectHideFlags: 0 244 | m_CorrespondingSourceObject: {fileID: 0} 245 | m_PrefabInstance: {fileID: 0} 246 | m_PrefabAsset: {fileID: 0} 247 | serializedVersion: 6 248 | m_Component: 249 | - component: {fileID: 1380682982} 250 | m_Layer: 0 251 | m_Name: Map 252 | m_TagString: Untagged 253 | m_Icon: {fileID: 0} 254 | m_NavMeshLayer: 0 255 | m_StaticEditorFlags: 0 256 | m_IsActive: 1 257 | --- !u!4 &1380682982 258 | Transform: 259 | m_ObjectHideFlags: 0 260 | m_CorrespondingSourceObject: {fileID: 0} 261 | m_PrefabInstance: {fileID: 0} 262 | m_PrefabAsset: {fileID: 0} 263 | m_GameObject: {fileID: 1380682981} 264 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 265 | m_LocalPosition: {x: 0, y: 0, z: 0} 266 | m_LocalScale: {x: 1, y: 1, z: 1} 267 | m_Children: 268 | - {fileID: 1814014487} 269 | - {fileID: 2077192284} 270 | m_Father: {fileID: 0} 271 | m_RootOrder: 8 272 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 273 | --- !u!1 &1476223097 274 | GameObject: 275 | m_ObjectHideFlags: 0 276 | m_CorrespondingSourceObject: {fileID: 0} 277 | m_PrefabInstance: {fileID: 0} 278 | m_PrefabAsset: {fileID: 0} 279 | serializedVersion: 6 280 | m_Component: 281 | - component: {fileID: 1476223100} 282 | - component: {fileID: 1476223099} 283 | - component: {fileID: 1476223098} 284 | m_Layer: 0 285 | m_Name: Terrain 286 | m_TagString: Untagged 287 | m_Icon: {fileID: 0} 288 | m_NavMeshLayer: 0 289 | m_StaticEditorFlags: 4294967295 290 | m_IsActive: 1 291 | --- !u!154 &1476223098 292 | TerrainCollider: 293 | m_ObjectHideFlags: 0 294 | m_CorrespondingSourceObject: {fileID: 0} 295 | m_PrefabInstance: {fileID: 0} 296 | m_PrefabAsset: {fileID: 0} 297 | m_GameObject: {fileID: 1476223097} 298 | m_Material: {fileID: 0} 299 | m_Enabled: 1 300 | m_TerrainData: {fileID: 15600000, guid: b5710c2378ab2674a98d77c7c1312ecc, type: 2} 301 | m_EnableTreeColliders: 1 302 | --- !u!218 &1476223099 303 | Terrain: 304 | m_ObjectHideFlags: 0 305 | m_CorrespondingSourceObject: {fileID: 0} 306 | m_PrefabInstance: {fileID: 0} 307 | m_PrefabAsset: {fileID: 0} 308 | m_GameObject: {fileID: 1476223097} 309 | m_Enabled: 1 310 | serializedVersion: 6 311 | m_TerrainData: {fileID: 15600000, guid: b5710c2378ab2674a98d77c7c1312ecc, type: 2} 312 | m_TreeDistance: 5000 313 | m_TreeBillboardDistance: 50 314 | m_TreeCrossFadeLength: 5 315 | m_TreeMaximumFullLODCount: 50 316 | m_DetailObjectDistance: 80 317 | m_DetailObjectDensity: 1 318 | m_HeightmapPixelError: 5 319 | m_SplatMapDistance: 1000 320 | m_HeightmapMaximumLOD: 0 321 | m_ShadowCastingMode: 2 322 | m_DrawHeightmap: 1 323 | m_DrawInstanced: 0 324 | m_DrawTreesAndFoliage: 1 325 | m_ReflectionProbeUsage: 1 326 | m_MaterialTemplate: {fileID: 10652, guid: 0000000000000000f000000000000000, type: 0} 327 | m_BakeLightProbesForTrees: 1 328 | m_PreserveTreePrototypeLayers: 0 329 | m_DeringLightProbesForTrees: 1 330 | m_ScaleInLightmap: 0.0256 331 | m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} 332 | m_GroupingID: 0 333 | m_RenderingLayerMask: 1 334 | m_AllowAutoConnect: 1 335 | --- !u!4 &1476223100 336 | Transform: 337 | m_ObjectHideFlags: 0 338 | m_CorrespondingSourceObject: {fileID: 0} 339 | m_PrefabInstance: {fileID: 0} 340 | m_PrefabAsset: {fileID: 0} 341 | m_GameObject: {fileID: 1476223097} 342 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 343 | m_LocalPosition: {x: 0, y: 0, z: 0} 344 | m_LocalScale: {x: 1, y: 1, z: 1} 345 | m_Children: [] 346 | m_Father: {fileID: 0} 347 | m_RootOrder: 7 348 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 349 | --- !u!1 &1613050774 350 | GameObject: 351 | m_ObjectHideFlags: 0 352 | m_CorrespondingSourceObject: {fileID: 0} 353 | m_PrefabInstance: {fileID: 0} 354 | m_PrefabAsset: {fileID: 0} 355 | serializedVersion: 6 356 | m_Component: 357 | - component: {fileID: 1613050776} 358 | - component: {fileID: 1613050775} 359 | m_Layer: 0 360 | m_Name: Initializator 361 | m_TagString: Untagged 362 | m_Icon: {fileID: 0} 363 | m_NavMeshLayer: 0 364 | m_StaticEditorFlags: 0 365 | m_IsActive: 1 366 | --- !u!114 &1613050775 367 | MonoBehaviour: 368 | m_ObjectHideFlags: 0 369 | m_CorrespondingSourceObject: {fileID: 0} 370 | m_PrefabInstance: {fileID: 0} 371 | m_PrefabAsset: {fileID: 0} 372 | m_GameObject: {fileID: 1613050774} 373 | m_Enabled: 1 374 | m_EditorHideFlags: 0 375 | m_Script: {fileID: 11500000, guid: 47c31f3b6d7649548d3861a1604a581a, type: 3} 376 | m_Name: 377 | m_EditorClassIdentifier: 378 | terrain: {fileID: 1476223099} 379 | objectPoolerDisplayer: {fileID: 616414384} 380 | objectPoolerManager: {fileID: 2106545728} 381 | cameraComponent: {fileID: 2013862897} 382 | cameraManager: {fileID: 2013862899} 383 | peopleManager: {fileID: 442443656} 384 | --- !u!4 &1613050776 385 | Transform: 386 | m_ObjectHideFlags: 0 387 | m_CorrespondingSourceObject: {fileID: 0} 388 | m_PrefabInstance: {fileID: 0} 389 | m_PrefabAsset: {fileID: 0} 390 | m_GameObject: {fileID: 1613050774} 391 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 392 | m_LocalPosition: {x: 0, y: 0, z: 0} 393 | m_LocalScale: {x: 1, y: 1, z: 1} 394 | m_Children: [] 395 | m_Father: {fileID: 0} 396 | m_RootOrder: 0 397 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 398 | --- !u!1 &1814014486 399 | GameObject: 400 | m_ObjectHideFlags: 0 401 | m_CorrespondingSourceObject: {fileID: 0} 402 | m_PrefabInstance: {fileID: 0} 403 | m_PrefabAsset: {fileID: 0} 404 | serializedVersion: 6 405 | m_Component: 406 | - component: {fileID: 1814014487} 407 | m_Layer: 0 408 | m_Name: Buildings 409 | m_TagString: Untagged 410 | m_Icon: {fileID: 0} 411 | m_NavMeshLayer: 0 412 | m_StaticEditorFlags: 0 413 | m_IsActive: 1 414 | --- !u!4 &1814014487 415 | Transform: 416 | m_ObjectHideFlags: 0 417 | m_CorrespondingSourceObject: {fileID: 0} 418 | m_PrefabInstance: {fileID: 0} 419 | m_PrefabAsset: {fileID: 0} 420 | m_GameObject: {fileID: 1814014486} 421 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 422 | m_LocalPosition: {x: 0, y: 0, z: 0} 423 | m_LocalScale: {x: 1, y: 1, z: 1} 424 | m_Children: [] 425 | m_Father: {fileID: 1380682982} 426 | m_RootOrder: 0 427 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 428 | --- !u!1 &2013862895 429 | GameObject: 430 | m_ObjectHideFlags: 0 431 | m_CorrespondingSourceObject: {fileID: 0} 432 | m_PrefabInstance: {fileID: 0} 433 | m_PrefabAsset: {fileID: 0} 434 | serializedVersion: 6 435 | m_Component: 436 | - component: {fileID: 2013862898} 437 | - component: {fileID: 2013862897} 438 | - component: {fileID: 2013862896} 439 | - component: {fileID: 2013862899} 440 | m_Layer: 0 441 | m_Name: Main Camera 442 | m_TagString: MainCamera 443 | m_Icon: {fileID: 0} 444 | m_NavMeshLayer: 0 445 | m_StaticEditorFlags: 0 446 | m_IsActive: 1 447 | --- !u!81 &2013862896 448 | AudioListener: 449 | m_ObjectHideFlags: 0 450 | m_CorrespondingSourceObject: {fileID: 0} 451 | m_PrefabInstance: {fileID: 0} 452 | m_PrefabAsset: {fileID: 0} 453 | m_GameObject: {fileID: 2013862895} 454 | m_Enabled: 1 455 | --- !u!20 &2013862897 456 | Camera: 457 | m_ObjectHideFlags: 0 458 | m_CorrespondingSourceObject: {fileID: 0} 459 | m_PrefabInstance: {fileID: 0} 460 | m_PrefabAsset: {fileID: 0} 461 | m_GameObject: {fileID: 2013862895} 462 | m_Enabled: 1 463 | serializedVersion: 2 464 | m_ClearFlags: 1 465 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 466 | m_projectionMatrixMode: 1 467 | m_GateFitMode: 2 468 | m_FOVAxisMode: 0 469 | m_SensorSize: {x: 36, y: 24} 470 | m_LensShift: {x: 0, y: 0} 471 | m_FocalLength: 50 472 | m_NormalizedViewPortRect: 473 | serializedVersion: 2 474 | x: 0 475 | y: 0 476 | width: 1 477 | height: 1 478 | near clip plane: 0.3 479 | far clip plane: 1000 480 | field of view: 60 481 | orthographic: 0 482 | orthographic size: 5 483 | m_Depth: -1 484 | m_CullingMask: 485 | serializedVersion: 2 486 | m_Bits: 4294967295 487 | m_RenderingPath: -1 488 | m_TargetTexture: {fileID: 0} 489 | m_TargetDisplay: 0 490 | m_TargetEye: 3 491 | m_HDR: 1 492 | m_AllowMSAA: 1 493 | m_AllowDynamicResolution: 0 494 | m_ForceIntoRT: 0 495 | m_OcclusionCulling: 1 496 | m_StereoConvergence: 10 497 | m_StereoSeparation: 0.022 498 | --- !u!4 &2013862898 499 | Transform: 500 | m_ObjectHideFlags: 0 501 | m_CorrespondingSourceObject: {fileID: 0} 502 | m_PrefabInstance: {fileID: 0} 503 | m_PrefabAsset: {fileID: 0} 504 | m_GameObject: {fileID: 2013862895} 505 | m_LocalRotation: {x: 0.3865661, y: -0, z: -0, w: 0.9222618} 506 | m_LocalPosition: {x: 500, y: 28.11, z: 500} 507 | m_LocalScale: {x: 1, y: 1, z: 1} 508 | m_Children: [] 509 | m_Father: {fileID: 0} 510 | m_RootOrder: 5 511 | m_LocalEulerAnglesHint: {x: 45.482002, y: 0, z: 0} 512 | --- !u!114 &2013862899 513 | MonoBehaviour: 514 | m_ObjectHideFlags: 0 515 | m_CorrespondingSourceObject: {fileID: 0} 516 | m_PrefabInstance: {fileID: 0} 517 | m_PrefabAsset: {fileID: 0} 518 | m_GameObject: {fileID: 2013862895} 519 | m_Enabled: 1 520 | m_EditorHideFlags: 0 521 | m_Script: {fileID: 11500000, guid: ad6a7e8208a04baa9638b7defd3dd72a, type: 3} 522 | m_Name: 523 | m_EditorClassIdentifier: 524 | movementSpeed: 30 525 | movementShiftMultiplier: 3 526 | rotationSpeed: 100 527 | --- !u!1 &2077192283 528 | GameObject: 529 | m_ObjectHideFlags: 0 530 | m_CorrespondingSourceObject: {fileID: 0} 531 | m_PrefabInstance: {fileID: 0} 532 | m_PrefabAsset: {fileID: 0} 533 | serializedVersion: 6 534 | m_Component: 535 | - component: {fileID: 2077192284} 536 | m_Layer: 0 537 | m_Name: People 538 | m_TagString: Untagged 539 | m_Icon: {fileID: 0} 540 | m_NavMeshLayer: 0 541 | m_StaticEditorFlags: 0 542 | m_IsActive: 1 543 | --- !u!4 &2077192284 544 | Transform: 545 | m_ObjectHideFlags: 0 546 | m_CorrespondingSourceObject: {fileID: 0} 547 | m_PrefabInstance: {fileID: 0} 548 | m_PrefabAsset: {fileID: 0} 549 | m_GameObject: {fileID: 2077192283} 550 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 551 | m_LocalPosition: {x: 0, y: 0, z: 0} 552 | m_LocalScale: {x: 1, y: 1, z: 1} 553 | m_Children: [] 554 | m_Father: {fileID: 1380682982} 555 | m_RootOrder: 1 556 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 557 | --- !u!1 &2106545727 558 | GameObject: 559 | m_ObjectHideFlags: 0 560 | m_CorrespondingSourceObject: {fileID: 0} 561 | m_PrefabInstance: {fileID: 0} 562 | m_PrefabAsset: {fileID: 0} 563 | serializedVersion: 6 564 | m_Component: 565 | - component: {fileID: 2106545729} 566 | - component: {fileID: 2106545728} 567 | m_Layer: 0 568 | m_Name: ObjectPoolerManager 569 | m_TagString: Untagged 570 | m_Icon: {fileID: 0} 571 | m_NavMeshLayer: 0 572 | m_StaticEditorFlags: 0 573 | m_IsActive: 1 574 | --- !u!114 &2106545728 575 | MonoBehaviour: 576 | m_ObjectHideFlags: 0 577 | m_CorrespondingSourceObject: {fileID: 0} 578 | m_PrefabInstance: {fileID: 0} 579 | m_PrefabAsset: {fileID: 0} 580 | m_GameObject: {fileID: 2106545727} 581 | m_Enabled: 1 582 | m_EditorHideFlags: 0 583 | m_Script: {fileID: 11500000, guid: 0f1fb06faf1e4b02b6845e31653ad708, type: 3} 584 | m_Name: 585 | m_EditorClassIdentifier: 586 | buildings: 587 | - poolItemName: building_Small 588 | prefab: {fileID: 6832357843145977600, guid: d8a8f6929e4cc7d4d81aefc35af496b0, 589 | type: 3} 590 | parent: {fileID: 1814014487} 591 | size: 5 592 | autoResize: 1 593 | - poolItemName: building_Medium 594 | prefab: {fileID: 6832357843145977600, guid: 9943afed2c2f6004bacd39ec54a98d1f, 595 | type: 3} 596 | parent: {fileID: 1814014487} 597 | size: 5 598 | autoResize: 1 599 | - poolItemName: building_Large 600 | prefab: {fileID: 6832357843145977600, guid: 4597874ba7df49b43b882e26d985835a, 601 | type: 3} 602 | parent: {fileID: 1814014487} 603 | size: 5 604 | autoResize: 1 605 | people: 606 | - poolItemName: person_Type1 607 | prefab: {fileID: 6832357843145977600, guid: 61750fb55db262a4b8cfd975471ab9e4, 608 | type: 3} 609 | parent: {fileID: 2077192284} 610 | size: 5 611 | autoResize: 1 612 | - poolItemName: person_Type2 613 | prefab: {fileID: 6832357843145977600, guid: 27497abf8ea049b41ad40681617b91ac, 614 | type: 3} 615 | parent: {fileID: 2077192284} 616 | size: 5 617 | autoResize: 1 618 | - poolItemName: person_Type3 619 | prefab: {fileID: 6832357843145977600, guid: 17e9791b5d05f8a469cd87bcd5efc0b8, 620 | type: 3} 621 | parent: {fileID: 2077192284} 622 | size: 5 623 | autoResize: 1 624 | - poolItemName: person_Type4 625 | prefab: {fileID: 6832357843145977600, guid: c13ad34c5f6b8aa4990eec2c9418548e, 626 | type: 3} 627 | parent: {fileID: 2077192284} 628 | size: 5 629 | autoResize: 1 630 | - poolItemName: person_Type5 631 | prefab: {fileID: 6832357843145977600, guid: 11e77d9b5c76d644a9b9eda341edcd44, 632 | type: 3} 633 | parent: {fileID: 2077192284} 634 | size: 5 635 | autoResize: 1 636 | --- !u!4 &2106545729 637 | Transform: 638 | m_ObjectHideFlags: 0 639 | m_CorrespondingSourceObject: {fileID: 0} 640 | m_PrefabInstance: {fileID: 0} 641 | m_PrefabAsset: {fileID: 0} 642 | m_GameObject: {fileID: 2106545727} 643 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 644 | m_LocalPosition: {x: 0, y: 0, z: 0} 645 | m_LocalScale: {x: 1, y: 1, z: 1} 646 | m_Children: [] 647 | m_Father: {fileID: 0} 648 | m_RootOrder: 1 649 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 650 | --- !u!1 &2124899784 651 | GameObject: 652 | m_ObjectHideFlags: 0 653 | m_CorrespondingSourceObject: {fileID: 0} 654 | m_PrefabInstance: {fileID: 0} 655 | m_PrefabAsset: {fileID: 0} 656 | serializedVersion: 6 657 | m_Component: 658 | - component: {fileID: 2124899786} 659 | - component: {fileID: 2124899785} 660 | m_Layer: 0 661 | m_Name: Directional Light 662 | m_TagString: Untagged 663 | m_Icon: {fileID: 0} 664 | m_NavMeshLayer: 0 665 | m_StaticEditorFlags: 0 666 | m_IsActive: 1 667 | --- !u!108 &2124899785 668 | Light: 669 | m_ObjectHideFlags: 0 670 | m_CorrespondingSourceObject: {fileID: 0} 671 | m_PrefabInstance: {fileID: 0} 672 | m_PrefabAsset: {fileID: 0} 673 | m_GameObject: {fileID: 2124899784} 674 | m_Enabled: 1 675 | serializedVersion: 10 676 | m_Type: 1 677 | m_Shape: 0 678 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 679 | m_Intensity: 1 680 | m_Range: 10 681 | m_SpotAngle: 30 682 | m_InnerSpotAngle: 21.80208 683 | m_CookieSize: 10 684 | m_Shadows: 685 | m_Type: 2 686 | m_Resolution: -1 687 | m_CustomResolution: -1 688 | m_Strength: 1 689 | m_Bias: 0.05 690 | m_NormalBias: 0.4 691 | m_NearPlane: 0.2 692 | m_CullingMatrixOverride: 693 | e00: 1 694 | e01: 0 695 | e02: 0 696 | e03: 0 697 | e10: 0 698 | e11: 1 699 | e12: 0 700 | e13: 0 701 | e20: 0 702 | e21: 0 703 | e22: 1 704 | e23: 0 705 | e30: 0 706 | e31: 0 707 | e32: 0 708 | e33: 1 709 | m_UseCullingMatrixOverride: 0 710 | m_Cookie: {fileID: 0} 711 | m_DrawHalo: 0 712 | m_Flare: {fileID: 0} 713 | m_RenderMode: 0 714 | m_CullingMask: 715 | serializedVersion: 2 716 | m_Bits: 4294967295 717 | m_RenderingLayerMask: 1 718 | m_Lightmapping: 4 719 | m_LightShadowCasterMode: 0 720 | m_AreaSize: {x: 1, y: 1} 721 | m_BounceIntensity: 1 722 | m_ColorTemperature: 6570 723 | m_UseColorTemperature: 0 724 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 725 | m_UseBoundingSphereOverride: 0 726 | m_ShadowRadius: 0 727 | m_ShadowAngle: 0 728 | --- !u!4 &2124899786 729 | Transform: 730 | m_ObjectHideFlags: 0 731 | m_CorrespondingSourceObject: {fileID: 0} 732 | m_PrefabInstance: {fileID: 0} 733 | m_PrefabAsset: {fileID: 0} 734 | m_GameObject: {fileID: 2124899784} 735 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 736 | m_LocalPosition: {x: 0, y: 3, z: 0} 737 | m_LocalScale: {x: 1, y: 1, z: 1} 738 | m_Children: [] 739 | m_Father: {fileID: 0} 740 | m_RootOrder: 6 741 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 742 | -------------------------------------------------------------------------------- /Assets/Scenes/Demo.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d42bb441d274e5046b6e8f971d666874 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 345c920e9ed46bb42bc85fc13ca08f37 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Buildings.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: da3ece914b5bed749a1f359d350f19e5 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Buildings/Domain.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1bdeb82c5c4315e42a8a7ab00056e2bb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scripts/Buildings/Domain/Building.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace Buildings.Domain 5 | { 6 | /** 7 | * Basic representation of Building 8 | */ 9 | public class Building 10 | { 11 | public Guid Guid { get; set; } 12 | 13 | public Vector3 Position { get; set; } 14 | public Vector2 Position2D { get; set; } 15 | public Quaternion Rotation { get; set; } 16 | 17 | public BuildingType BuildingType { get; set; } 18 | 19 | public BuildingObjectPoolingComponent BuildingObjectPoolingComponent { get; set; } 20 | } 21 | } -------------------------------------------------------------------------------- /Assets/Scripts/Buildings/Domain/Building.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1bc6f49a594ae0e46815993e8e2d091e 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Scripts/Buildings/Domain/BuildingObjectPoolingComponent.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace Buildings.Domain 4 | { 5 | public class BuildingObjectPoolingComponent : MonoBehaviour 6 | { 7 | 8 | } 9 | } -------------------------------------------------------------------------------- /Assets/Scripts/Buildings/Domain/BuildingObjectPoolingComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cb4b93181b194c35bf435ce98b0cc8c6 3 | timeCreated: 1582817023 -------------------------------------------------------------------------------- /Assets/Scripts/Buildings/Domain/BuildingType.cs: -------------------------------------------------------------------------------- 1 | namespace Buildings.Domain 2 | { 3 | public enum BuildingType 4 | { 5 | Small = 0, 6 | Medium = 1, 7 | Large = 2 8 | } 9 | } -------------------------------------------------------------------------------- /Assets/Scripts/Buildings/Domain/BuildingType.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 74e6b46ad94d43c581a1b8a7914b8b41 3 | timeCreated: 1582810084 -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d28f2328491f469893a169a9bd7b3142 3 | timeCreated: 1582816563 -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Application.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 11874c1d2204445f9a06fa9a880c8597 3 | timeCreated: 1582816589 -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Application/CameraManager.cs: -------------------------------------------------------------------------------- 1 | using Map.Application; 2 | using UnityEngine; 3 | 4 | namespace CustomCamera.Application 5 | { 6 | public class CameraManager : MonoBehaviour 7 | { 8 | public float movementSpeed; 9 | public float movementShiftMultiplier; 10 | public float rotationSpeed; 11 | 12 | private float _currentMovementSpeed; 13 | 14 | private Camera _cameraComponent; 15 | 16 | private TerrainHitter _terrainHitter; 17 | 18 | public void Init(TerrainHitter terrainHitter) 19 | { 20 | _terrainHitter = terrainHitter; 21 | } 22 | 23 | private void Awake() 24 | { 25 | _cameraComponent = GetComponent(); 26 | } 27 | 28 | public void Update() 29 | { 30 | //faster speed 31 | if (Input.GetKey(KeyCode.LeftShift)) 32 | { 33 | _currentMovementSpeed = movementSpeed * movementShiftMultiplier; 34 | } 35 | else 36 | { 37 | _currentMovementSpeed = movementSpeed; 38 | } 39 | 40 | //movement 41 | if (Input.GetKey(KeyCode.W)) 42 | { 43 | Move(transform.forward); 44 | } 45 | 46 | if (Input.GetKey(KeyCode.S)) 47 | { 48 | Move(-transform.forward); 49 | } 50 | 51 | if (Input.GetKey(KeyCode.A)) 52 | { 53 | Move(-transform.right); 54 | } 55 | 56 | if (Input.GetKey(KeyCode.D)) 57 | { 58 | Move(transform.right); 59 | } 60 | 61 | //rotation 62 | if (Input.GetKey(KeyCode.E)) 63 | { 64 | Rotate(Vector3.down); 65 | } 66 | 67 | if (Input.GetKey(KeyCode.Q)) 68 | { 69 | Rotate(Vector3.up); 70 | } 71 | } 72 | 73 | //needed for rotation 74 | private Vector3 HitTerrain() 75 | { 76 | Vector3 hitPoint = _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(Screen.width / 2, Screen.height / 2))); 77 | 78 | return new Vector3( 79 | Mathf.Round(hitPoint.x / 1), 80 | hitPoint.y, 81 | Mathf.Round(hitPoint.z / 1) 82 | ); 83 | } 84 | private void Move(Vector3 direction) 85 | { 86 | direction.y = 0; 87 | direction.Normalize(); 88 | transform.Translate(_currentMovementSpeed * Time.unscaledDeltaTime * direction, Space.World); 89 | } 90 | 91 | private void Rotate(Vector3 vector) 92 | { 93 | transform.RotateAround(HitTerrain(), vector, rotationSpeed * Time.unscaledDeltaTime); 94 | } 95 | } 96 | } -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Application/CameraManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ad6a7e8208a04baa9638b7defd3dd72a 3 | timeCreated: 1582820263 -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Application/TerrainPositionsFromCameraBoundariesGetter.cs: -------------------------------------------------------------------------------- 1 | using CustomCamera.Domain; 2 | using Map.Application; 3 | using UnityEngine; 4 | 5 | namespace CustomCamera.Application 6 | { 7 | /** 8 | * Shoots Rays into terrain and get Ray-Terrain contact position. 9 | * Rays are shot from camera corners minus margin (this prevents sudden object disappear or show) 10 | */ 11 | public class TerrainPositionsFromCameraBoundariesGetter 12 | { 13 | private TerrainHitter _terrainHitter; 14 | private Camera _cameraComponent; 15 | 16 | public TerrainPositionsFromCameraBoundariesGetter(TerrainHitter terrainHitter, Camera cameraComponent) 17 | { 18 | _terrainHitter = terrainHitter; 19 | _cameraComponent = cameraComponent; 20 | } 21 | 22 | public TerrainPositionsFromCameraBoundaries Get(int margin = 0) 23 | { 24 | TerrainPositionsFromCameraBoundaries terrainPositions = new TerrainPositionsFromCameraBoundaries( 25 | _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(0 - margin, 0 - margin))), 26 | _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(Screen.width + margin, 0 - margin))), 27 | _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(0 - margin, Screen.height + margin))), 28 | _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(Screen.width + margin, Screen.height + margin))) 29 | ); 30 | 31 | return terrainPositions; 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Application/TerrainPositionsFromCameraBoundariesGetter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 527790de149a46fd96bc695c23def2c3 3 | timeCreated: 1582817539 -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Domain.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 09b3d22a137c4877b5e4879d2639459f 3 | timeCreated: 1582817651 -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Domain/TerrainPositionsFromCameraBoundaries.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using UnityEngine; 4 | 5 | namespace CustomCamera.Domain 6 | { 7 | /** 8 | * Here are data collected from CustomCamera.Application.TerrainPositionsFromCameraBoundariesGetter 9 | * In IsInsidePolygon() we're checking if object is in camera view 10 | */ 11 | public class TerrainPositionsFromCameraBoundaries 12 | { 13 | private float _minX; 14 | private float _maxX; 15 | private float _minY; 16 | private float _maxY; 17 | 18 | private Vector2[] _polyPoints = new Vector2[4]; 19 | 20 | //it looks stupid but IT WORKS! ;) 21 | public TerrainPositionsFromCameraBoundaries(Vector3 topLeft, Vector3 topRight, Vector3 bottomLeft, Vector3 bottomRight) 22 | { 23 | _minX = Mathf.Infinity; 24 | _maxX = 0; 25 | _minY = Mathf.Infinity; 26 | _maxY = 0; 27 | 28 | //minX 29 | if (_minX > topLeft.x) 30 | { 31 | _minX = topLeft.x; 32 | } 33 | 34 | if (_minX > topRight.x) 35 | { 36 | _minX = topRight.x; 37 | } 38 | 39 | if (_minX > bottomLeft.x) 40 | { 41 | _minX = bottomLeft.x; 42 | } 43 | 44 | if (_minX > bottomRight.x) 45 | { 46 | _minX = bottomRight.x; 47 | } 48 | 49 | //maxX 50 | if (_maxX < topLeft.x) 51 | { 52 | _maxX = topLeft.x; 53 | } 54 | 55 | if (_maxX < topRight.x) 56 | { 57 | _maxX = topRight.x; 58 | } 59 | 60 | if (_maxX < bottomLeft.x) 61 | { 62 | _maxX = bottomLeft.x; 63 | } 64 | 65 | if (_maxX < bottomRight.x) 66 | { 67 | _maxX = bottomRight.x; 68 | } 69 | 70 | //minY 71 | if (_minY > topLeft.z) 72 | { 73 | _minY = topLeft.z; 74 | } 75 | 76 | if (_minY > topRight.z) 77 | { 78 | _minY = topRight.z; 79 | } 80 | 81 | if (_minY > bottomLeft.z) 82 | { 83 | _minY = bottomLeft.z; 84 | } 85 | 86 | if (_minY > bottomRight.z) 87 | { 88 | _minY = bottomRight.z; 89 | } 90 | 91 | //maxY 92 | if (_maxY < topLeft.z) 93 | { 94 | _maxY = topLeft.z; 95 | } 96 | 97 | if (_maxY < topRight.z) 98 | { 99 | _maxY = topRight.z; 100 | } 101 | 102 | if (_maxY < bottomLeft.z) 103 | { 104 | _maxY = bottomLeft.z; 105 | } 106 | 107 | if (_maxY < bottomRight.z) 108 | { 109 | _maxY = bottomRight.z; 110 | } 111 | 112 | Debug.DrawLine(topLeft, topRight, Color.blue); 113 | Debug.DrawLine(topRight, bottomRight, Color.green); 114 | Debug.DrawLine(bottomRight, bottomLeft, Color.red); 115 | Debug.DrawLine(bottomLeft, topLeft, Color.yellow); 116 | 117 | var points = new[] 118 | { 119 | new Vector2(topLeft.x, topLeft.z), 120 | new Vector2(topRight.x, topRight.z), 121 | new Vector2(bottomLeft.x, bottomLeft.z), 122 | new Vector2(bottomRight.x, bottomRight.z), 123 | }; 124 | 125 | //points = ResizePoints(points); 126 | CalculateContour(points.ToList()); 127 | } 128 | 129 | public float GetMinX() 130 | { 131 | return _minX; 132 | } 133 | 134 | public float GetMinY() 135 | { 136 | return _minY; 137 | } 138 | 139 | public float GetMaxX() 140 | { 141 | return _maxX; 142 | } 143 | 144 | public float GetMaxY() 145 | { 146 | return _maxY; 147 | } 148 | 149 | public bool IsInsidePolygon(Vector2 point) 150 | { 151 | var j = _polyPoints.Length - 1; 152 | var inside = false; 153 | for (int i = 0; i < _polyPoints.Length; j = i++) 154 | { 155 | var pi = _polyPoints[i]; 156 | var pj = _polyPoints[j]; 157 | if (((pi.y <= point.y && point.y < pj.y) || (pj.y <= point.y && point.y < pi.y)) && 158 | (point.x < (pj.x - pi.x) * (point.y - pi.y) / (pj.y - pi.y) + pi.x)) 159 | { 160 | inside = !inside; 161 | } 162 | } 163 | 164 | return inside; 165 | } 166 | 167 | //Modified code from: https://stackoverflow.com/questions/14392072/how-to-draw-a-polygon-from-a-set-of-unordered-points 168 | //@author: https://stackoverflow.com/users/210709/iabstract 169 | private void CalculateContour(List points) 170 | { 171 | 172 | // locate lower-leftmost point 173 | int hull = 0; 174 | int i; 175 | for (i = 1; i < points.Count; i++) 176 | { 177 | if (ComparePoint(points[i], points[hull])) 178 | { 179 | hull = i; 180 | } 181 | } 182 | 183 | // wrap contour 184 | var outIndices = new int[points.Count]; 185 | int endPt; 186 | i = 0; 187 | do 188 | { 189 | outIndices[i++] = hull; 190 | endPt = 0; 191 | for (int j = 1; j < points.Count; j++) 192 | { 193 | if (hull == endPt || IsLeft(points[hull], points[endPt], points[j])) 194 | { 195 | endPt = j; 196 | } 197 | } 198 | 199 | hull = endPt; 200 | } while (endPt != outIndices[0]); 201 | 202 | // build countour points 203 | int results = i; 204 | for (i = 0; i < results; i++) 205 | { 206 | _polyPoints[i] = points[outIndices[i]]; 207 | } 208 | } 209 | 210 | private bool ComparePoint(Vector2 a, Vector2 b) 211 | { 212 | if (a.x < b.x) return true; 213 | if (a.x > b.x) return false; 214 | if (a.y < b.y) return true; 215 | if (a.y > b.y) return false; 216 | 217 | return false; 218 | } 219 | 220 | private bool IsLeft(Vector2 a, Vector2 b, Vector2 c) 221 | { 222 | var u1 = b.x - a.x; 223 | var v1 = b.y - a.y; 224 | var u2 = c.x - a.x; 225 | var v2 = c.y - a.y; 226 | 227 | return u1 * v2 - v1 * u2 < 0; 228 | } 229 | } 230 | } -------------------------------------------------------------------------------- /Assets/Scripts/CustomCamera/Domain/TerrainPositionsFromCameraBoundaries.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d35a661e7b974315b5a6871e3d3014c0 3 | timeCreated: 1582816645 -------------------------------------------------------------------------------- /Assets/Scripts/Initializator.cs: -------------------------------------------------------------------------------- 1 | using CustomCamera.Application; 2 | using Map.Application; 3 | using Map.Domain; 4 | using Noise.Application; 5 | using ObjectPooler.Application; 6 | using ObjectPooler.Application.Displayers; 7 | using People.Application; 8 | using UnityEngine; 9 | using CameraManager = CustomCamera.Application.CameraManager; 10 | 11 | /** 12 | * This class is needed to make code in Dependency Injection style. 13 | * https://www.youtube.com/watch?v=IKD2-MAkXyQ 14 | * 15 | * This is the first place called by Unity to our scripts and here we create all classes needed in other places. 16 | * Here are also the references to existings components attached to GameObjects. 17 | */ 18 | public class Initializator : MonoBehaviour 19 | { 20 | public Terrain terrain; 21 | 22 | public ObjectPoolerDisplayer objectPoolerDisplayer; 23 | public ObjectPoolerManager objectPoolerManager; 24 | 25 | public Camera cameraComponent; 26 | public CameraManager cameraManager; 27 | 28 | public PeopleManager peopleManager; 29 | 30 | public void Awake() 31 | { 32 | var noiseGenerator = new NoiseGenerator( 33 | Mathf.RoundToInt(terrain.terrainData.size.x), 34 | Mathf.RoundToInt(terrain.terrainData.size.z) 35 | ); 36 | 37 | //lists 38 | var buildingList = new BuildingList(); 39 | var personList = new PersonList(); 40 | 41 | peopleManager.Init(personList); 42 | 43 | var mapGenerator = new MapGenerator(terrain.terrainData, noiseGenerator, buildingList, personList); 44 | mapGenerator.Generate(); 45 | 46 | var terrainHitter = new TerrainHitter(); 47 | cameraManager.Init(terrainHitter); 48 | var terrainPositionsFromCameraBoundariesGetter = new TerrainPositionsFromCameraBoundariesGetter(terrainHitter, cameraComponent); 49 | 50 | //displayers 51 | var buildingsDisplayer = new BuildingsDisplayer(objectPoolerManager, buildingList); 52 | var peopleDisplayer = new PeopleDisplayer(objectPoolerManager, personList); 53 | 54 | objectPoolerDisplayer.Init(terrainPositionsFromCameraBoundariesGetter, buildingsDisplayer, peopleDisplayer); 55 | } 56 | } -------------------------------------------------------------------------------- /Assets/Scripts/Initializator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47c31f3b6d7649548d3861a1604a581a 3 | timeCreated: 1582810460 -------------------------------------------------------------------------------- /Assets/Scripts/Map.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e09521a13bb843b8889b6b46b339c66c 3 | timeCreated: 1582810161 -------------------------------------------------------------------------------- /Assets/Scripts/Map/Application.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0868e69f5b7343ec801203bc649cddc6 3 | timeCreated: 1582810168 -------------------------------------------------------------------------------- /Assets/Scripts/Map/Application/MapGenerator.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Buildings.Domain; 3 | using Map.Domain; 4 | using Noise.Application; 5 | using People.Domain; 6 | using UnityEngine; 7 | using Random = UnityEngine.Random; 8 | 9 | namespace Map.Application 10 | { 11 | /** 12 | * This class generates map. 13 | * Perlin Noise is used to determine if we should spawn building, person or nothing at all. 14 | * After creating building/person we add it to list that contains all the buildings/people on the map 15 | * Info: In perfect world creating building/person should be done in BuildingSpawner/PersonSpawner class 16 | */ 17 | public class MapGenerator 18 | { 19 | private TerrainData _terrainData; 20 | private NoiseGenerator _noiseGenerator; 21 | private BuildingList _buildingList; 22 | private PersonList _personList; 23 | 24 | public MapGenerator( 25 | TerrainData terrainData, 26 | NoiseGenerator noiseGenerator, 27 | BuildingList buildingList, 28 | PersonList personList 29 | ) 30 | { 31 | _terrainData = terrainData; 32 | _noiseGenerator = noiseGenerator; 33 | _buildingList = buildingList; 34 | _personList = personList; 35 | } 36 | 37 | public void Generate() 38 | { 39 | //get all possible values in BuildingType enumerator 40 | BuildingType[] buildingTypes = (BuildingType[]) Enum.GetValues(typeof(BuildingType)); 41 | PersonType[] personTypes = (PersonType[]) Enum.GetValues(typeof(PersonType)); 42 | 43 | for (int x = 0; x < _terrainData.size.x; x = x + 2) 44 | { 45 | for (int y = 0; y < _terrainData.size.z; y = y + 2) 46 | { 47 | float noise = _noiseGenerator.Generate(x, y, 320); 48 | 49 | if (noise > 0.7f) 50 | { 51 | //generate building 52 | Building building = new Building(); 53 | building.Guid = Guid.NewGuid(); 54 | building.Position = new Vector3(x, _terrainData.GetHeight(x, y), y); 55 | building.Position2D = new Vector2(x, y); 56 | building.Rotation = Quaternion.Euler(0, Random.Range(0, 360), 0); 57 | 58 | building.BuildingType = buildingTypes[Random.Range(0, buildingTypes.Length)]; 59 | 60 | _buildingList.Buildings.Add(building); 61 | } 62 | else if (noise < 0.2f) 63 | { 64 | //generate person 65 | Person person = new Person(); 66 | person.Guid = Guid.NewGuid(); 67 | person.Position = new Vector3(x, _terrainData.GetHeight(x, y), y); 68 | person.Position2D = new Vector2(x, y); 69 | person.Rotation = Quaternion.Euler(0, Random.Range(0, 360), 0); 70 | person.PersonMode = PersonMode.Idle; 71 | person.PersonType = personTypes[Random.Range(0, personTypes.Length)]; 72 | 73 | _personList.People.Add(person); 74 | } 75 | } 76 | } 77 | 78 | Debug.LogFormat("There are {0} buildings on the map", _buildingList.Buildings.Count); 79 | Debug.LogFormat("There are {0} people on the map", _personList.People.Count); 80 | } 81 | } 82 | } -------------------------------------------------------------------------------- /Assets/Scripts/Map/Application/MapGenerator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9c659dd8c5e14032ab1e1bb458e34a57 3 | timeCreated: 1582810178 -------------------------------------------------------------------------------- /Assets/Scripts/Map/Application/TerrainHitter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace Map.Application 5 | { 6 | /** 7 | * Sends Ray and checks if one of the collisions was Terrain 8 | * Info: good practice is to check collider tag, not it's name ;) 9 | */ 10 | public class TerrainHitter 11 | { 12 | public Vector3 Hit(Ray ray) 13 | { 14 | RaycastHit hit; 15 | RaycastHit[] hits; 16 | hits = Physics.RaycastAll(ray, Mathf.Infinity); 17 | 18 | for (int i = 0; i < hits.Length; i++) 19 | { 20 | hit = hits[i]; 21 | 22 | if (hit.collider.name == "Terrain") 23 | { 24 | 25 | return hit.point; 26 | } 27 | } 28 | 29 | throw new Exception("No terrain was hit"); 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /Assets/Scripts/Map/Application/TerrainHitter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6354b42710443a6b844436b833812e2 3 | timeCreated: 1582817693 -------------------------------------------------------------------------------- /Assets/Scripts/Map/Domain.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35bc94a39cd343ea91a2a9c45d4b04be 3 | timeCreated: 1582810606 -------------------------------------------------------------------------------- /Assets/Scripts/Map/Domain/BuildingList.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using Buildings.Domain; 3 | 4 | namespace Map.Domain 5 | { 6 | /** 7 | * List of all buildings on the map 8 | */ 9 | public class BuildingList 10 | { 11 | public List Buildings { get; } 12 | 13 | public BuildingList() 14 | { 15 | Buildings = new List(); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Assets/Scripts/Map/Domain/BuildingList.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 406cd546744841928908ec3f88a7bdfc 3 | timeCreated: 1582810615 -------------------------------------------------------------------------------- /Assets/Scripts/Map/Domain/PersonList.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using People.Domain; 3 | 4 | namespace Map.Domain 5 | { 6 | /** 7 | * List of all people on the map 8 | */ 9 | public class PersonList 10 | { 11 | public List People { get; } 12 | 13 | public PersonList() 14 | { 15 | People = new List(); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Assets/Scripts/Map/Domain/PersonList.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ff207e3aed8b4385b2e4e263d2549962 3 | timeCreated: 1582821603 -------------------------------------------------------------------------------- /Assets/Scripts/Noise.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d74e02c739d34d41a4116eeb5db5d29d 3 | timeCreated: 1582810829 -------------------------------------------------------------------------------- /Assets/Scripts/Noise/Application.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7224fc8e76ee404cbdc7d0320061ba92 3 | timeCreated: 1582810834 -------------------------------------------------------------------------------- /Assets/Scripts/Noise/Application/NoiseGenerator.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace Noise.Application 4 | { 5 | /** 6 | * Generate noise for X & Y positions of the matrix. 7 | * You need to set width and height of the matrix. 8 | */ 9 | public class NoiseGenerator 10 | { 11 | private int _width; 12 | private int _height; 13 | 14 | public NoiseGenerator(int width, int height) 15 | { 16 | _width = width; 17 | _height = height; 18 | } 19 | 20 | public float Generate(int pointX, int pointY, float scale, int offset = 0) 21 | { 22 | return Mathf.PerlinNoise( 23 | (float) pointX / _width * scale + offset, 24 | (float) pointY / _height * scale + offset 25 | ); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /Assets/Scripts/Noise/Application/NoiseGenerator.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e63aa18267814c22b5c80c858df5ea2b 3 | timeCreated: 1582810841 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35581762f8c946e6814f5553d6ca5cbf 3 | timeCreated: 1582811692 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7251b10285594c658fbc42b8547a1f27 3 | timeCreated: 1582811699 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/Displayers.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 50e2f154e34049feacb7c4427affa54b 3 | timeCreated: 1582811705 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/Displayers/AObjectPoolerDisplayer.cs: -------------------------------------------------------------------------------- 1 | using CustomCamera.Domain; 2 | using ObjectPooler.Domain; 3 | 4 | namespace ObjectPooler.Application.Displayers 5 | { 6 | /** 7 | * All classes with responsibility to display some objects (Displayers) should extends this abstract class 8 | */ 9 | public abstract class AObjectPoolerDisplayer : IObjectPoolerDisplayer 10 | { 11 | public abstract bool IsDynamic(); 12 | public abstract void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries); 13 | 14 | // ReSharper disable once InconsistentNaming 15 | protected ObjectPoolerManager _objectPoolerManager; 16 | 17 | public AObjectPoolerDisplayer(ObjectPoolerManager objectPoolerManager) 18 | { 19 | _objectPoolerManager = objectPoolerManager; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/Displayers/AObjectPoolerDisplayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ee99144e68604f88abb954a21b674c9a 3 | timeCreated: 1582811737 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/Displayers/BuildingsDisplayer.cs: -------------------------------------------------------------------------------- 1 | using Buildings.Domain; 2 | using CustomCamera.Domain; 3 | using Map.Domain; 4 | using UnityEngine; 5 | 6 | namespace ObjectPooler.Application.Displayers 7 | { 8 | /** 9 | * Display buildings within camera visibility 10 | * 11 | * Buildings are static (not moveable) so there's no point to run this code if camera is on the same position as in last frame 12 | * 13 | * Adding component "BuildingObjectPoolingComponent" to "Building" object inform script that building is already displayed. 14 | */ 15 | public class BuildingsDisplayer : AObjectPoolerDisplayer 16 | { 17 | private const string Prefix = "building_"; 18 | 19 | private BuildingList _buildingList; 20 | 21 | public BuildingsDisplayer(ObjectPoolerManager objectPoolerManager, BuildingList buildingList) : base(objectPoolerManager) 22 | { 23 | _buildingList = buildingList; 24 | } 25 | 26 | public override bool IsDynamic() 27 | { 28 | return false; 29 | } 30 | 31 | public override void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries) 32 | { 33 | GameObject go; 34 | 35 | foreach (Building building in _buildingList.Buildings) 36 | { 37 | if (terrainPositionsFromCameraBoundaries.IsInsidePolygon(building.Position2D)) 38 | { 39 | //object is not displayed yet 40 | if (!building.BuildingObjectPoolingComponent) 41 | { 42 | go = _objectPoolerManager.SpawnFromPool( 43 | Prefix + building.BuildingType, 44 | building.Position, 45 | building.Rotation 46 | ); 47 | 48 | building.BuildingObjectPoolingComponent = go.GetComponent(); 49 | } 50 | } 51 | else 52 | { 53 | //hide object 54 | if (building.BuildingObjectPoolingComponent) 55 | { 56 | _objectPoolerManager.ReleaseBackToPool(Prefix + building.BuildingType, building.BuildingObjectPoolingComponent.gameObject); 57 | 58 | building.BuildingObjectPoolingComponent = null; 59 | } 60 | } 61 | } 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/Displayers/BuildingsDisplayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f287343241fd4059b86f870db24b1811 3 | timeCreated: 1582816814 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/Displayers/PeopleDisplayer.cs: -------------------------------------------------------------------------------- 1 | using CustomCamera.Domain; 2 | using Map.Domain; 3 | using People.Domain; 4 | using UnityEngine; 5 | 6 | namespace ObjectPooler.Application.Displayers 7 | { 8 | /** 9 | * Display people within camera visibility 10 | * 11 | * People are moving, so even camera stands still, we need to update people positions. 12 | * Updating displayed people positions are done in "PersonObjectPoolingComponent" 13 | * 14 | * Adding component "PersonObjectPoolingComponent" to "Person" object inform script that person is already displayed. 15 | */ 16 | public class PeopleDisplayer : AObjectPoolerDisplayer 17 | { 18 | private const string Prefix = "person_"; 19 | 20 | private PersonList _personList; 21 | 22 | public PeopleDisplayer(ObjectPoolerManager objectPoolerManager, PersonList personList) : base( 23 | objectPoolerManager) 24 | { 25 | _personList = personList; 26 | } 27 | 28 | public override bool IsDynamic() 29 | { 30 | return true; 31 | } 32 | 33 | public override void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries) 34 | { 35 | GameObject go; 36 | 37 | foreach (Person person in _personList.People) 38 | { 39 | if (terrainPositionsFromCameraBoundaries.IsInsidePolygon(person.Position2D)) 40 | { 41 | //object is not displayed yet 42 | if (!person.PersonObjectPoolingComponent) 43 | { 44 | go = _objectPoolerManager.SpawnFromPool( 45 | Prefix + person.PersonType, 46 | person.Position, 47 | person.Rotation 48 | ); 49 | 50 | person.PersonObjectPoolingComponent = go.GetComponent(); 51 | person.PersonObjectPoolingComponent.SetPerson(person); 52 | } 53 | } 54 | else 55 | { 56 | //hide object 57 | if (person.PersonObjectPoolingComponent) 58 | { 59 | _objectPoolerManager.ReleaseBackToPool(Prefix + person.PersonType, person.PersonObjectPoolingComponent.gameObject); 60 | 61 | person.PersonObjectPoolingComponent.UnsetPerson(); 62 | person.PersonObjectPoolingComponent = null; 63 | } 64 | } 65 | } 66 | } 67 | } 68 | } -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/Displayers/PeopleDisplayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: efd0f634357843d78ef17428ec08141c 3 | timeCreated: 1582822724 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/ObjectPoolerDisplayer.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using CustomCamera.Application; 3 | using ObjectPooler.Application.Displayers; 4 | using UnityEngine; 5 | using UnityEngine.Profiling; 6 | 7 | namespace ObjectPooler.Application 8 | { 9 | /** 10 | * This class runs other Displayers (BuldingDisplayer & PeopleDisplayer) 11 | * Thanks to this solution we only send Rays once per frame. 12 | * There is also simple cache, that do not run non-dynamic Displayer if camera stands still. 13 | */ 14 | public class ObjectPoolerDisplayer : MonoBehaviour 15 | { 16 | public int margin = 50; 17 | 18 | private TerrainPositionsFromCameraBoundariesGetter _terrainPositionsFromCameraBoundariesGetter; 19 | 20 | private List _displayers = new List(); 21 | 22 | private string _lastPositions; 23 | 24 | public void Init( 25 | TerrainPositionsFromCameraBoundariesGetter terrainPositionsFromCameraBoundariesGetter, 26 | BuildingsDisplayer buildingsDisplayer, 27 | PeopleDisplayer peopleDisplayer 28 | ) 29 | { 30 | _terrainPositionsFromCameraBoundariesGetter = terrainPositionsFromCameraBoundariesGetter; 31 | 32 | _displayers.Add(buildingsDisplayer); 33 | _displayers.Add(peopleDisplayer); 34 | } 35 | 36 | public void Update() 37 | { 38 | var terrainPositions = _terrainPositionsFromCameraBoundariesGetter.Get(margin); 39 | 40 | int minX = Mathf.FloorToInt(terrainPositions.GetMinX()); 41 | int maxX = Mathf.CeilToInt(terrainPositions.GetMaxX()); 42 | int minY = Mathf.FloorToInt(terrainPositions.GetMinY()); 43 | int maxY = Mathf.CeilToInt(terrainPositions.GetMaxY()); 44 | 45 | //simple cache 46 | string currentPositions = minX.ToString() + maxX.ToString() + minY.ToString() + maxY.ToString(); 47 | 48 | foreach (AObjectPoolerDisplayer displayer in _displayers) 49 | { 50 | //simple cache for static displayers 51 | if (_lastPositions == currentPositions && displayer.IsDynamic() == false) 52 | { 53 | continue; 54 | } 55 | 56 | Profiler.BeginSample("ObjectPoolerDisplayer_" + displayer.GetType().Name); 57 | displayer.Display(minX, maxX, minY, maxY, terrainPositions); 58 | Profiler.EndSample(); 59 | } 60 | 61 | _lastPositions = currentPositions; 62 | } 63 | } 64 | } -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/ObjectPoolerDisplayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6379f307cfab4f38a9156077f5ba39a5 3 | timeCreated: 1582817334 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/ObjectPoolerManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using ObjectPooler.Domain; 4 | using UnityEngine; 5 | 6 | namespace ObjectPooler.Application 7 | { 8 | /** 9 | * In this place we configure Object Pool Items (see more at ObjectPooler.Domain.ObjectPoolItem) 10 | * For convenience: items are splitted into groups. Later on items from groups are combined into one list (_poolDictionary)) 11 | */ 12 | public class ObjectPoolerManager : MonoBehaviour 13 | { 14 | //this is divided by groups for more human-friendly management in the Inspector 15 | public List buildings; 16 | public List people; 17 | 18 | //this is needed to run loop over grouped items 19 | private List> _allObjects = new List>(); 20 | 21 | //here we store all GameObject for Pool Item with specific name. 22 | //For example: in this place all GameObjects for "building_Large" will stored. 23 | private Dictionary> _poolDictionary; 24 | 25 | //list of all unique pools 26 | private Dictionary _objectsPoolItems = new Dictionary(); 27 | 28 | //fast check if Pool is resizable, for example: 29 | //"building_Large" - true 30 | //"arrows" - false 31 | //this prevents for looping all the pools everytime 32 | private Dictionary _autoResize = new Dictionary(); 33 | 34 | public void Start() 35 | { 36 | _allObjects.Add(buildings); 37 | _allObjects.Add(people); 38 | 39 | _poolDictionary = new Dictionary>(); 40 | 41 | //create that many GameObjects as there is in ObjectPooler.Domain.ObjectPoolItem.size 42 | foreach (List objectPoolItems in _allObjects) 43 | { 44 | foreach (ObjectPoolItem poolItem in objectPoolItems) 45 | { 46 | Queue objectPool = new Queue(); 47 | 48 | for (int i = 0; i < poolItem.size; i++) 49 | { 50 | SpawnGO(poolItem.prefab, poolItem.parent, objectPool); 51 | } 52 | 53 | _poolDictionary.Add(poolItem.poolItemName, objectPool); 54 | 55 | _objectsPoolItems.Add(poolItem.poolItemName, poolItem); 56 | _autoResize.Add(poolItem.poolItemName, poolItem.autoResize); 57 | } 58 | } 59 | } 60 | 61 | /** 62 | * Spawns GameObject from Pool. 63 | * If there are no free GameObjects and resize option is disabled: display warning 64 | */ 65 | public GameObject SpawnFromPool(string poolItemName, Vector3 position, Quaternion rotation) 66 | { 67 | _poolDictionary.TryGetValue(poolItemName, out Queue poolWithGameObjects); 68 | if (poolWithGameObjects == null) 69 | { 70 | Debug.LogWarningFormat("Poll with name: {0} doesn't exist", poolItemName); 71 | return null; 72 | } 73 | 74 | try 75 | { 76 | //get free GameObject from Pool queue of GameObjects 77 | GameObject obj = poolWithGameObjects.Dequeue(); 78 | obj.transform.position = position; 79 | obj.transform.rotation = rotation; 80 | 81 | return obj; 82 | } 83 | catch (InvalidOperationException) 84 | { 85 | //there are no more free GameObjects in the pool queue 86 | _autoResize.TryGetValue(poolItemName, out var autoresize); 87 | _objectsPoolItems.TryGetValue(poolItemName, out ObjectPoolItem objectPoolItem); 88 | 89 | if (objectPoolItem == null) 90 | { 91 | Debug.LogWarningFormat("Poll with name: {0} doesn't exist", poolItemName); 92 | return null; 93 | } 94 | 95 | if (autoresize) 96 | { 97 | SpawnGO(objectPoolItem.prefab, objectPoolItem.parent, poolWithGameObjects); 98 | return SpawnFromPool(poolItemName, position, rotation); 99 | } 100 | 101 | Debug.LogWarningFormat("Poll with name: {0} is empty. Autoresize disabled", poolItemName); 102 | return null; 103 | } 104 | } 105 | 106 | //We don't need this GameObject anymore. Set it at 0,0,0 position. 107 | public void ReleaseBackToPool(string poolItemName, GameObject obj) 108 | { 109 | obj.transform.position = Vector3.zero; 110 | _poolDictionary[poolItemName].Enqueue(obj); 111 | } 112 | 113 | //create GameObject and ands it into Pool queue 114 | private void SpawnGO(GameObject prefab, Transform parent, Queue objectPool) 115 | { 116 | GameObject obj = Instantiate(prefab, parent); 117 | obj.transform.position = Vector3.zero; 118 | objectPool.Enqueue(obj); 119 | } 120 | } 121 | } -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Application/ObjectPoolerManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f1fb06faf1e4b02b6845e31653ad708 3 | timeCreated: 1582811883 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Domain.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9edd7bb174740e2987cea4ed66a887a 3 | timeCreated: 1582811827 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Domain/IObjectPoolerDisplayer.cs: -------------------------------------------------------------------------------- 1 | using CustomCamera.Domain; 2 | 3 | namespace ObjectPooler.Domain 4 | { 5 | public interface IObjectPoolerDisplayer 6 | { 7 | bool IsDynamic(); 8 | void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries); 9 | } 10 | } -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Domain/IObjectPoolerDisplayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7baa85a9cc16427397c46967d6e03782 3 | timeCreated: 1582811835 -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Domain/ObjectPoolItem.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace ObjectPooler.Domain 4 | { 5 | /** 6 | * Here are stored information about pool item. 7 | * poolItemName need to unique (like: building_house_5, animal_domestic_2) 8 | * prefab shows which GameObject should be displayed when ObjectPooler.Application.ObjectPoolerManager.SpawnFromPool is called 9 | * parent is a reference to transform inside whom GameObject will be spawn 10 | * size: how many GameObjects we want to spawn on game starts 11 | * autoResize: if there is more need that available free GameObjects: spawn more and add to Pool queue 12 | */ 13 | [System.Serializable] 14 | public class ObjectPoolItem 15 | { 16 | public string poolItemName; 17 | public GameObject prefab; 18 | public Transform parent; 19 | public int size; 20 | public bool autoResize; 21 | } 22 | } -------------------------------------------------------------------------------- /Assets/Scripts/ObjectPooler/Domain/ObjectPoolItem.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe207319fd5b4904a0827b3951cbcadb 3 | timeCreated: 1582816386 -------------------------------------------------------------------------------- /Assets/Scripts/People.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7ff73bbd94544c19b94f2d2426a12c8c 3 | timeCreated: 1582821498 -------------------------------------------------------------------------------- /Assets/Scripts/People/Application.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 118d34040f534b2da42d9498835770a7 3 | timeCreated: 1582821585 -------------------------------------------------------------------------------- /Assets/Scripts/People/Application/PeopleManager.cs: -------------------------------------------------------------------------------- 1 | using Map.Domain; 2 | using People.Domain; 3 | using UnityEngine; 4 | 5 | namespace People.Application 6 | { 7 | /** 8 | * Loops on all the people and decide what they should do. 9 | * If in idle state: move to other position. 10 | * If in walking mode: move to destination 11 | */ 12 | public class PeopleManager : MonoBehaviour 13 | { 14 | private PersonList _personList; 15 | 16 | public void Init(PersonList personList) 17 | { 18 | _personList = personList; 19 | } 20 | 21 | public void Update() 22 | { 23 | foreach (Person person in _personList.People) 24 | { 25 | if (person.PersonMode == PersonMode.Idle) 26 | { 27 | if (Random.Range(1, 10) == 1) 28 | { 29 | person.PersonMode = PersonMode.Walking; 30 | person.Destination2D = person.Position2D + Random.insideUnitCircle * 25; 31 | } 32 | } 33 | 34 | if (person.PersonMode == PersonMode.Walking) 35 | { 36 | if (Vector3.Distance(person.Position2D, person.Destination2D) < 0.2f) 37 | { 38 | person.PersonMode = PersonMode.Idle; 39 | } 40 | 41 | person.Position = Vector3.MoveTowards(person.Position, new Vector3(person.Destination2D.x, person.Position.y, person.Destination2D.y), 5 * Time.deltaTime); 42 | person.Position2D = new Vector2(person.Position.x, person.Position.z); 43 | } 44 | } 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /Assets/Scripts/People/Application/PeopleManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7cde1b55b24c4cc896d295d8fde0a0d4 3 | timeCreated: 1582821590 -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8c197226416340c2847874f43396a8ff 3 | timeCreated: 1582821509 -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/Person.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | 4 | namespace People.Domain 5 | { 6 | /** 7 | * Basic representation of Person 8 | */ 9 | public class Person 10 | { 11 | public Guid Guid { get; set; } 12 | 13 | public Vector3 Position { get; set; } 14 | public Vector2 Position2D { get; set; } 15 | public Vector2 Destination2D { get; set; } 16 | 17 | public Quaternion Rotation { get; set; } 18 | 19 | public PersonMode PersonMode { get; set; } 20 | public PersonType PersonType { get; set; } 21 | 22 | public PersonObjectPoolingComponent PersonObjectPoolingComponent { get; set; } 23 | } 24 | } -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/Person.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a6aa98a10df46209872c468bc6c0b94 3 | timeCreated: 1582821516 -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/PersonMode.cs: -------------------------------------------------------------------------------- 1 | namespace People.Domain 2 | { 3 | public enum PersonMode 4 | { 5 | Idle = 0, 6 | Walking = 1 7 | } 8 | } -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/PersonMode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e7b3bd923754aa9809ab6e992f45133 3 | timeCreated: 1582821702 -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/PersonObjectPoolingComponent.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace People.Domain 4 | { 5 | /** 6 | * If person is displayed, check if GameObject position or rotation are the same as in Person object. 7 | * If not, update position/rotation 8 | */ 9 | public class PersonObjectPoolingComponent : MonoBehaviour 10 | { 11 | private Person _person; 12 | 13 | public void Update() 14 | { 15 | if (_person == null) 16 | { 17 | return; 18 | } 19 | 20 | if (transform.position != _person.Position) 21 | { 22 | transform.position = _person.Position; 23 | } 24 | 25 | if (transform.rotation != _person.Rotation) 26 | { 27 | transform.rotation = _person.Rotation; 28 | } 29 | } 30 | 31 | public void SetPerson(Person person) 32 | { 33 | _person = person; 34 | } 35 | 36 | public void UnsetPerson() 37 | { 38 | _person = null; 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/PersonObjectPoolingComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 58c7935d958e40d3a2ba06e56327d05c 3 | timeCreated: 1582824229 -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/PersonType.cs: -------------------------------------------------------------------------------- 1 | namespace People.Domain 2 | { 3 | public enum PersonType 4 | { 5 | Type1 = 0, 6 | Type2 = 1, 7 | Type3 = 2, 8 | Type4 = 3, 9 | Type5 = 4 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/Scripts/People/Domain/PersonType.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 53336fa533114d7cb135794649805590 3 | timeCreated: 1582821816 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 keypax 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "1.2.16", 4 | "com.unity.ide.rider": "1.1.4", 5 | "com.unity.ide.vscode": "1.1.4", 6 | "com.unity.test-framework": "1.1.11", 7 | "com.unity.textmeshpro": "2.0.1", 8 | "com.unity.timeline": "1.2.10", 9 | "com.unity.ugui": "1.0.0", 10 | "com.unity.modules.ai": "1.0.0", 11 | "com.unity.modules.androidjni": "1.0.0", 12 | "com.unity.modules.animation": "1.0.0", 13 | "com.unity.modules.assetbundle": "1.0.0", 14 | "com.unity.modules.audio": "1.0.0", 15 | "com.unity.modules.cloth": "1.0.0", 16 | "com.unity.modules.director": "1.0.0", 17 | "com.unity.modules.imageconversion": "1.0.0", 18 | "com.unity.modules.imgui": "1.0.0", 19 | "com.unity.modules.jsonserialize": "1.0.0", 20 | "com.unity.modules.particlesystem": "1.0.0", 21 | "com.unity.modules.physics": "1.0.0", 22 | "com.unity.modules.physics2d": "1.0.0", 23 | "com.unity.modules.screencapture": "1.0.0", 24 | "com.unity.modules.terrain": "1.0.0", 25 | "com.unity.modules.terrainphysics": "1.0.0", 26 | "com.unity.modules.tilemap": "1.0.0", 27 | "com.unity.modules.ui": "1.0.0", 28 | "com.unity.modules.uielements": "1.0.0", 29 | "com.unity.modules.umbra": "1.0.0", 30 | "com.unity.modules.unityanalytics": "1.0.0", 31 | "com.unity.modules.unitywebrequest": "1.0.0", 32 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 33 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 34 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 35 | "com.unity.modules.unitywebrequestwww": "1.0.0", 36 | "com.unity.modules.vehicles": "1.0.0", 37 | "com.unity.modules.video": "1.0.0", 38 | "com.unity.modules.vr": "1.0.0", 39 | "com.unity.modules.wind": "1.0.0", 40 | "com.unity.modules.xr": "1.0.0" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /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 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /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: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /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 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 1 30 | m_AssetPipelineMode: 1 31 | m_CacheServerMode: 0 32 | m_CacheServerEndpoint: 33 | m_CacheServerNamespacePrefix: default 34 | m_CacheServerEnableDownload: 1 35 | m_CacheServerEnableUpload: 1 36 | -------------------------------------------------------------------------------- /ProjectSettings/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: 13 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 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_LogWhenShaderIsCompiled: 0 63 | m_AllowEnlightenSupportForUpgradedProject: 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/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 20 7 | productGUID: 9d04bbff16cf9984688ab0ff019e38da 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: object-pooling-in-unity-demo 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosUseCustomAppBackgroundBehavior: 0 56 | iosAllowHTTPDownload: 1 57 | allowedAutorotateToPortrait: 1 58 | allowedAutorotateToPortraitUpsideDown: 1 59 | allowedAutorotateToLandscapeRight: 1 60 | allowedAutorotateToLandscapeLeft: 1 61 | useOSAutorotation: 1 62 | use32BitDisplayBuffer: 1 63 | preserveFramebufferAlpha: 0 64 | disableDepthAndStencilBuffers: 0 65 | androidStartInFullscreen: 1 66 | androidRenderOutsideSafeArea: 1 67 | androidUseSwappy: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 1 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | useFlipModelSwapchain: 1 83 | resizableWindow: 0 84 | useMacAppStoreValidation: 0 85 | macAppStoreCategory: public.app-category.games 86 | gpuSkinning: 1 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | fullscreenMode: 1 95 | xboxSpeechDB: 0 96 | xboxEnableHeadOrientation: 0 97 | xboxEnableGuest: 0 98 | xboxEnablePIXSampling: 0 99 | metalFramebufferOnly: 0 100 | xboxOneResolution: 0 101 | xboxOneSResolution: 0 102 | xboxOneXResolution: 3 103 | xboxOneMonoLoggingLevel: 0 104 | xboxOneLoggingLevel: 1 105 | xboxOneDisableEsram: 0 106 | xboxOneEnableTypeOptimization: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 0 109 | switchQueueControlMemory: 16384 110 | switchQueueComputeMemory: 262144 111 | switchNVNShaderPoolsGranularity: 33554432 112 | switchNVNDefaultPoolsGranularity: 16777216 113 | switchNVNOtherPoolsGranularity: 16777216 114 | vulkanNumSwapchainBuffers: 3 115 | vulkanEnableSetSRGBWrite: 0 116 | m_SupportedAspectRatios: 117 | 4:3: 1 118 | 5:4: 1 119 | 16:10: 1 120 | 16:9: 1 121 | Others: 1 122 | bundleVersion: 0.1 123 | preloadedAssets: [] 124 | metroInputSource: 0 125 | wsaTransparentSwapchain: 0 126 | m_HolographicPauseOnTrackingLoss: 1 127 | xboxOneDisableKinectGpuReservation: 1 128 | xboxOneEnable7thCore: 1 129 | vrSettings: 130 | cardboard: 131 | depthFormat: 0 132 | enableTransitionView: 0 133 | daydream: 134 | depthFormat: 0 135 | useSustainedPerformanceMode: 0 136 | enableVideoLayer: 0 137 | useProtectedVideoMemory: 0 138 | minimumSupportedHeadTracking: 0 139 | maximumSupportedHeadTracking: 1 140 | hololens: 141 | depthFormat: 1 142 | depthBufferSharingEnabled: 1 143 | lumin: 144 | depthFormat: 0 145 | frameTiming: 2 146 | enableGLCache: 0 147 | glCacheMaxBlobSize: 524288 148 | glCacheMaxFileSize: 8388608 149 | oculus: 150 | sharedDepthBuffer: 1 151 | dashSupport: 1 152 | lowOverheadMode: 0 153 | protectedContext: 0 154 | v2Signing: 1 155 | enable360StereoCapture: 0 156 | isWsaHolographicRemotingEnabled: 0 157 | enableFrameTimingStats: 0 158 | useHDRDisplay: 0 159 | D3DHDRBitDepth: 0 160 | m_ColorGamuts: 00000000 161 | targetPixelDensity: 30 162 | resolutionScalingMode: 0 163 | androidSupportedAspectRatio: 1 164 | androidMaxAspectRatio: 2.1 165 | applicationIdentifier: {} 166 | buildNumber: {} 167 | AndroidBundleVersionCode: 1 168 | AndroidMinSdkVersion: 19 169 | AndroidTargetSdkVersion: 0 170 | AndroidPreferredInstallLocation: 1 171 | aotOptions: 172 | stripEngineCode: 1 173 | iPhoneStrippingLevel: 0 174 | iPhoneScriptCallOptimization: 0 175 | ForceInternetPermission: 0 176 | ForceSDCardPermission: 0 177 | CreateWallpaper: 0 178 | APKExpansionFiles: 0 179 | keepLoadedShadersAlive: 0 180 | StripUnusedMeshComponents: 1 181 | VertexChannelCompressionMask: 4054 182 | iPhoneSdkVersion: 988 183 | iOSTargetOSVersionString: 10.0 184 | tvOSSdkVersion: 0 185 | tvOSRequireExtendedGameController: 0 186 | tvOSTargetOSVersionString: 10.0 187 | uIPrerenderedIcon: 0 188 | uIRequiresPersistentWiFi: 0 189 | uIRequiresFullScreen: 1 190 | uIStatusBarHidden: 1 191 | uIExitOnSuspend: 0 192 | uIStatusBarStyle: 0 193 | iPhoneSplashScreen: {fileID: 0} 194 | iPhoneHighResSplashScreen: {fileID: 0} 195 | iPhoneTallHighResSplashScreen: {fileID: 0} 196 | iPhone47inSplashScreen: {fileID: 0} 197 | iPhone55inPortraitSplashScreen: {fileID: 0} 198 | iPhone55inLandscapeSplashScreen: {fileID: 0} 199 | iPhone58inPortraitSplashScreen: {fileID: 0} 200 | iPhone58inLandscapeSplashScreen: {fileID: 0} 201 | iPadPortraitSplashScreen: {fileID: 0} 202 | iPadHighResPortraitSplashScreen: {fileID: 0} 203 | iPadLandscapeSplashScreen: {fileID: 0} 204 | iPadHighResLandscapeSplashScreen: {fileID: 0} 205 | iPhone65inPortraitSplashScreen: {fileID: 0} 206 | iPhone65inLandscapeSplashScreen: {fileID: 0} 207 | iPhone61inPortraitSplashScreen: {fileID: 0} 208 | iPhone61inLandscapeSplashScreen: {fileID: 0} 209 | appleTVSplashScreen: {fileID: 0} 210 | appleTVSplashScreen2x: {fileID: 0} 211 | tvOSSmallIconLayers: [] 212 | tvOSSmallIconLayers2x: [] 213 | tvOSLargeIconLayers: [] 214 | tvOSLargeIconLayers2x: [] 215 | tvOSTopShelfImageLayers: [] 216 | tvOSTopShelfImageLayers2x: [] 217 | tvOSTopShelfImageWideLayers: [] 218 | tvOSTopShelfImageWideLayers2x: [] 219 | iOSLaunchScreenType: 0 220 | iOSLaunchScreenPortrait: {fileID: 0} 221 | iOSLaunchScreenLandscape: {fileID: 0} 222 | iOSLaunchScreenBackgroundColor: 223 | serializedVersion: 2 224 | rgba: 0 225 | iOSLaunchScreenFillPct: 100 226 | iOSLaunchScreenSize: 100 227 | iOSLaunchScreenCustomXibPath: 228 | iOSLaunchScreeniPadType: 0 229 | iOSLaunchScreeniPadImage: {fileID: 0} 230 | iOSLaunchScreeniPadBackgroundColor: 231 | serializedVersion: 2 232 | rgba: 0 233 | iOSLaunchScreeniPadFillPct: 100 234 | iOSLaunchScreeniPadSize: 100 235 | iOSLaunchScreeniPadCustomXibPath: 236 | iOSUseLaunchScreenStoryboard: 0 237 | iOSLaunchScreenCustomStoryboardPath: 238 | iOSDeviceRequirements: [] 239 | iOSURLSchemes: [] 240 | iOSBackgroundModes: 0 241 | iOSMetalForceHardShadows: 0 242 | metalEditorSupport: 1 243 | metalAPIValidation: 1 244 | iOSRenderExtraFrameOnPause: 0 245 | appleDeveloperTeamID: 246 | iOSManualSigningProvisioningProfileID: 247 | tvOSManualSigningProvisioningProfileID: 248 | iOSManualSigningProvisioningProfileType: 0 249 | tvOSManualSigningProvisioningProfileType: 0 250 | appleEnableAutomaticSigning: 0 251 | iOSRequireARKit: 0 252 | iOSAutomaticallyDetectAndAddCapabilities: 1 253 | appleEnableProMotion: 0 254 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 255 | templatePackageId: com.unity.template.3d@4.2.6 256 | templateDefaultScene: Assets/Scenes/SampleScene.unity 257 | AndroidTargetArchitectures: 1 258 | AndroidSplashScreenScale: 0 259 | androidSplashScreen: {fileID: 0} 260 | AndroidKeystoreName: 261 | AndroidKeyaliasName: 262 | AndroidBuildApkPerCpuArchitecture: 0 263 | AndroidTVCompatibility: 0 264 | AndroidIsGame: 1 265 | AndroidEnableTango: 0 266 | androidEnableBanner: 1 267 | androidUseLowAccuracyLocation: 0 268 | androidUseCustomKeystore: 0 269 | m_AndroidBanners: 270 | - width: 320 271 | height: 180 272 | banner: {fileID: 0} 273 | androidGamepadSupportLevel: 0 274 | AndroidValidateAppBundleSize: 1 275 | AndroidAppBundleSizeToValidate: 150 276 | m_BuildTargetIcons: [] 277 | m_BuildTargetPlatformIcons: [] 278 | m_BuildTargetBatching: 279 | - m_BuildTarget: Standalone 280 | m_StaticBatching: 1 281 | m_DynamicBatching: 0 282 | - m_BuildTarget: tvOS 283 | m_StaticBatching: 1 284 | m_DynamicBatching: 0 285 | - m_BuildTarget: Android 286 | m_StaticBatching: 1 287 | m_DynamicBatching: 0 288 | - m_BuildTarget: iPhone 289 | m_StaticBatching: 1 290 | m_DynamicBatching: 0 291 | - m_BuildTarget: WebGL 292 | m_StaticBatching: 0 293 | m_DynamicBatching: 0 294 | m_BuildTargetGraphicsJobs: 295 | - m_BuildTarget: MacStandaloneSupport 296 | m_GraphicsJobs: 0 297 | - m_BuildTarget: Switch 298 | m_GraphicsJobs: 1 299 | - m_BuildTarget: MetroSupport 300 | m_GraphicsJobs: 1 301 | - m_BuildTarget: AppleTVSupport 302 | m_GraphicsJobs: 0 303 | - m_BuildTarget: BJMSupport 304 | m_GraphicsJobs: 1 305 | - m_BuildTarget: LinuxStandaloneSupport 306 | m_GraphicsJobs: 1 307 | - m_BuildTarget: PS4Player 308 | m_GraphicsJobs: 1 309 | - m_BuildTarget: iOSSupport 310 | m_GraphicsJobs: 0 311 | - m_BuildTarget: WindowsStandaloneSupport 312 | m_GraphicsJobs: 1 313 | - m_BuildTarget: XboxOnePlayer 314 | m_GraphicsJobs: 1 315 | - m_BuildTarget: LuminSupport 316 | m_GraphicsJobs: 0 317 | - m_BuildTarget: AndroidPlayer 318 | m_GraphicsJobs: 0 319 | - m_BuildTarget: WebGLSupport 320 | m_GraphicsJobs: 0 321 | m_BuildTargetGraphicsJobMode: 322 | - m_BuildTarget: PS4Player 323 | m_GraphicsJobMode: 0 324 | - m_BuildTarget: XboxOnePlayer 325 | m_GraphicsJobMode: 0 326 | m_BuildTargetGraphicsAPIs: 327 | - m_BuildTarget: AndroidPlayer 328 | m_APIs: 150000000b000000 329 | m_Automatic: 0 330 | - m_BuildTarget: iOSSupport 331 | m_APIs: 10000000 332 | m_Automatic: 1 333 | - m_BuildTarget: AppleTVSupport 334 | m_APIs: 10000000 335 | m_Automatic: 0 336 | - m_BuildTarget: WebGLSupport 337 | m_APIs: 0b000000 338 | m_Automatic: 1 339 | m_BuildTargetVRSettings: 340 | - m_BuildTarget: Standalone 341 | m_Enabled: 0 342 | m_Devices: 343 | - Oculus 344 | - OpenVR 345 | openGLRequireES31: 0 346 | openGLRequireES31AEP: 0 347 | openGLRequireES32: 0 348 | m_TemplateCustomTags: {} 349 | mobileMTRendering: 350 | Android: 1 351 | iPhone: 1 352 | tvOS: 1 353 | m_BuildTargetGroupLightmapEncodingQuality: [] 354 | m_BuildTargetGroupLightmapSettings: [] 355 | playModeTestRunnerEnabled: 0 356 | runPlayModeTestAsEditModeTest: 0 357 | actionOnDotNetUnhandledException: 1 358 | enableInternalProfiler: 0 359 | logObjCUncaughtExceptions: 1 360 | enableCrashReportAPI: 0 361 | cameraUsageDescription: 362 | locationUsageDescription: 363 | microphoneUsageDescription: 364 | switchNetLibKey: 365 | switchSocketMemoryPoolSize: 6144 366 | switchSocketAllocatorPoolSize: 128 367 | switchSocketConcurrencyLimit: 14 368 | switchScreenResolutionBehavior: 2 369 | switchUseCPUProfiler: 0 370 | switchApplicationID: 0x01004b9000490000 371 | switchNSODependencies: 372 | switchTitleNames_0: 373 | switchTitleNames_1: 374 | switchTitleNames_2: 375 | switchTitleNames_3: 376 | switchTitleNames_4: 377 | switchTitleNames_5: 378 | switchTitleNames_6: 379 | switchTitleNames_7: 380 | switchTitleNames_8: 381 | switchTitleNames_9: 382 | switchTitleNames_10: 383 | switchTitleNames_11: 384 | switchTitleNames_12: 385 | switchTitleNames_13: 386 | switchTitleNames_14: 387 | switchPublisherNames_0: 388 | switchPublisherNames_1: 389 | switchPublisherNames_2: 390 | switchPublisherNames_3: 391 | switchPublisherNames_4: 392 | switchPublisherNames_5: 393 | switchPublisherNames_6: 394 | switchPublisherNames_7: 395 | switchPublisherNames_8: 396 | switchPublisherNames_9: 397 | switchPublisherNames_10: 398 | switchPublisherNames_11: 399 | switchPublisherNames_12: 400 | switchPublisherNames_13: 401 | switchPublisherNames_14: 402 | switchIcons_0: {fileID: 0} 403 | switchIcons_1: {fileID: 0} 404 | switchIcons_2: {fileID: 0} 405 | switchIcons_3: {fileID: 0} 406 | switchIcons_4: {fileID: 0} 407 | switchIcons_5: {fileID: 0} 408 | switchIcons_6: {fileID: 0} 409 | switchIcons_7: {fileID: 0} 410 | switchIcons_8: {fileID: 0} 411 | switchIcons_9: {fileID: 0} 412 | switchIcons_10: {fileID: 0} 413 | switchIcons_11: {fileID: 0} 414 | switchIcons_12: {fileID: 0} 415 | switchIcons_13: {fileID: 0} 416 | switchIcons_14: {fileID: 0} 417 | switchSmallIcons_0: {fileID: 0} 418 | switchSmallIcons_1: {fileID: 0} 419 | switchSmallIcons_2: {fileID: 0} 420 | switchSmallIcons_3: {fileID: 0} 421 | switchSmallIcons_4: {fileID: 0} 422 | switchSmallIcons_5: {fileID: 0} 423 | switchSmallIcons_6: {fileID: 0} 424 | switchSmallIcons_7: {fileID: 0} 425 | switchSmallIcons_8: {fileID: 0} 426 | switchSmallIcons_9: {fileID: 0} 427 | switchSmallIcons_10: {fileID: 0} 428 | switchSmallIcons_11: {fileID: 0} 429 | switchSmallIcons_12: {fileID: 0} 430 | switchSmallIcons_13: {fileID: 0} 431 | switchSmallIcons_14: {fileID: 0} 432 | switchManualHTML: 433 | switchAccessibleURLs: 434 | switchLegalInformation: 435 | switchMainThreadStackSize: 1048576 436 | switchPresenceGroupId: 437 | switchLogoHandling: 0 438 | switchReleaseVersion: 0 439 | switchDisplayVersion: 1.0.0 440 | switchStartupUserAccount: 0 441 | switchTouchScreenUsage: 0 442 | switchSupportedLanguagesMask: 0 443 | switchLogoType: 0 444 | switchApplicationErrorCodeCategory: 445 | switchUserAccountSaveDataSize: 0 446 | switchUserAccountSaveDataJournalSize: 0 447 | switchApplicationAttribute: 0 448 | switchCardSpecSize: -1 449 | switchCardSpecClock: -1 450 | switchRatingsMask: 0 451 | switchRatingsInt_0: 0 452 | switchRatingsInt_1: 0 453 | switchRatingsInt_2: 0 454 | switchRatingsInt_3: 0 455 | switchRatingsInt_4: 0 456 | switchRatingsInt_5: 0 457 | switchRatingsInt_6: 0 458 | switchRatingsInt_7: 0 459 | switchRatingsInt_8: 0 460 | switchRatingsInt_9: 0 461 | switchRatingsInt_10: 0 462 | switchRatingsInt_11: 0 463 | switchRatingsInt_12: 0 464 | switchLocalCommunicationIds_0: 465 | switchLocalCommunicationIds_1: 466 | switchLocalCommunicationIds_2: 467 | switchLocalCommunicationIds_3: 468 | switchLocalCommunicationIds_4: 469 | switchLocalCommunicationIds_5: 470 | switchLocalCommunicationIds_6: 471 | switchLocalCommunicationIds_7: 472 | switchParentalControl: 0 473 | switchAllowsScreenshot: 1 474 | switchAllowsVideoCapturing: 1 475 | switchAllowsRuntimeAddOnContentInstall: 0 476 | switchDataLossConfirmation: 0 477 | switchUserAccountLockEnabled: 0 478 | switchSystemResourceMemory: 16777216 479 | switchSupportedNpadStyles: 22 480 | switchNativeFsCacheSize: 32 481 | switchIsHoldTypeHorizontal: 0 482 | switchSupportedNpadCount: 8 483 | switchSocketConfigEnabled: 0 484 | switchTcpInitialSendBufferSize: 32 485 | switchTcpInitialReceiveBufferSize: 64 486 | switchTcpAutoSendBufferSizeMax: 256 487 | switchTcpAutoReceiveBufferSizeMax: 256 488 | switchUdpSendBufferSize: 9 489 | switchUdpReceiveBufferSize: 42 490 | switchSocketBufferEfficiency: 4 491 | switchSocketInitializeEnabled: 1 492 | switchNetworkInterfaceManagerInitializeEnabled: 1 493 | switchPlayerConnectionEnabled: 1 494 | ps4NPAgeRating: 12 495 | ps4NPTitleSecret: 496 | ps4NPTrophyPackPath: 497 | ps4ParentalLevel: 11 498 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 499 | ps4Category: 0 500 | ps4MasterVersion: 01.00 501 | ps4AppVersion: 01.00 502 | ps4AppType: 0 503 | ps4ParamSfxPath: 504 | ps4VideoOutPixelFormat: 0 505 | ps4VideoOutInitialWidth: 1920 506 | ps4VideoOutBaseModeInitialWidth: 1920 507 | ps4VideoOutReprojectionRate: 60 508 | ps4PronunciationXMLPath: 509 | ps4PronunciationSIGPath: 510 | ps4BackgroundImagePath: 511 | ps4StartupImagePath: 512 | ps4StartupImagesFolder: 513 | ps4IconImagesFolder: 514 | ps4SaveDataImagePath: 515 | ps4SdkOverride: 516 | ps4BGMPath: 517 | ps4ShareFilePath: 518 | ps4ShareOverlayImagePath: 519 | ps4PrivacyGuardImagePath: 520 | ps4NPtitleDatPath: 521 | ps4RemotePlayKeyAssignment: -1 522 | ps4RemotePlayKeyMappingDir: 523 | ps4PlayTogetherPlayerCount: 0 524 | ps4EnterButtonAssignment: 1 525 | ps4ApplicationParam1: 0 526 | ps4ApplicationParam2: 0 527 | ps4ApplicationParam3: 0 528 | ps4ApplicationParam4: 0 529 | ps4DownloadDataSize: 0 530 | ps4GarlicHeapSize: 2048 531 | ps4ProGarlicHeapSize: 2560 532 | playerPrefsMaxSize: 32768 533 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 534 | ps4pnSessions: 1 535 | ps4pnPresence: 1 536 | ps4pnFriends: 1 537 | ps4pnGameCustomData: 1 538 | playerPrefsSupport: 0 539 | enableApplicationExit: 0 540 | resetTempFolder: 1 541 | restrictedAudioUsageRights: 0 542 | ps4UseResolutionFallback: 0 543 | ps4ReprojectionSupport: 0 544 | ps4UseAudio3dBackend: 0 545 | ps4SocialScreenEnabled: 0 546 | ps4ScriptOptimizationLevel: 0 547 | ps4Audio3dVirtualSpeakerCount: 14 548 | ps4attribCpuUsage: 0 549 | ps4PatchPkgPath: 550 | ps4PatchLatestPkgPath: 551 | ps4PatchChangeinfoPath: 552 | ps4PatchDayOne: 0 553 | ps4attribUserManagement: 0 554 | ps4attribMoveSupport: 0 555 | ps4attrib3DSupport: 0 556 | ps4attribShareSupport: 0 557 | ps4attribExclusiveVR: 0 558 | ps4disableAutoHideSplash: 0 559 | ps4videoRecordingFeaturesUsed: 0 560 | ps4contentSearchFeaturesUsed: 0 561 | ps4attribEyeToEyeDistanceSettingVR: 0 562 | ps4IncludedModules: [] 563 | ps4attribVROutputEnabled: 0 564 | monoEnv: 565 | splashScreenBackgroundSourceLandscape: {fileID: 0} 566 | splashScreenBackgroundSourcePortrait: {fileID: 0} 567 | blurSplashScreenBackground: 1 568 | spritePackerPolicy: 569 | webGLMemorySize: 16 570 | webGLExceptionSupport: 1 571 | webGLNameFilesAsHashes: 0 572 | webGLDataCaching: 1 573 | webGLDebugSymbols: 0 574 | webGLEmscriptenArgs: 575 | webGLModulesDirectory: 576 | webGLTemplate: APPLICATION:Default 577 | webGLAnalyzeBuildSize: 0 578 | webGLUseEmbeddedResources: 0 579 | webGLCompressionFormat: 1 580 | webGLLinkerTarget: 1 581 | webGLThreadsSupport: 0 582 | webGLWasmStreaming: 0 583 | scriptingDefineSymbols: {} 584 | platformArchitecture: {} 585 | scriptingBackend: {} 586 | il2cppCompilerConfiguration: {} 587 | managedStrippingLevel: {} 588 | incrementalIl2cppBuild: {} 589 | allowUnsafeCode: 0 590 | additionalIl2CppArgs: 591 | scriptingRuntimeVersion: 1 592 | gcIncremental: 0 593 | gcWBarrierValidation: 0 594 | apiCompatibilityLevelPerPlatform: {} 595 | m_RenderingPath: 1 596 | m_MobileRenderingPath: 1 597 | metroPackageName: Template_3D 598 | metroPackageVersion: 599 | metroCertificatePath: 600 | metroCertificatePassword: 601 | metroCertificateSubject: 602 | metroCertificateIssuer: 603 | metroCertificateNotAfter: 0000000000000000 604 | metroApplicationDescription: Template_3D 605 | wsaImages: {} 606 | metroTileShortName: 607 | metroTileShowName: 0 608 | metroMediumTileShowName: 0 609 | metroLargeTileShowName: 0 610 | metroWideTileShowName: 0 611 | metroSupportStreamingInstall: 0 612 | metroLastRequiredScene: 0 613 | metroDefaultTileSize: 1 614 | metroTileForegroundText: 2 615 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 616 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 617 | a: 1} 618 | metroSplashScreenUseBackgroundColor: 0 619 | platformCapabilities: {} 620 | metroTargetDeviceFamilies: {} 621 | metroFTAName: 622 | metroFTAFileTypes: [] 623 | metroProtocolName: 624 | XboxOneProductId: 625 | XboxOneUpdateKey: 626 | XboxOneSandboxId: 627 | XboxOneContentId: 628 | XboxOneTitleId: 629 | XboxOneSCId: 630 | XboxOneGameOsOverridePath: 631 | XboxOnePackagingOverridePath: 632 | XboxOneAppManifestOverridePath: 633 | XboxOneVersion: 1.0.0.0 634 | XboxOnePackageEncryption: 0 635 | XboxOnePackageUpdateGranularity: 2 636 | XboxOneDescription: 637 | XboxOneLanguage: 638 | - enus 639 | XboxOneCapability: [] 640 | XboxOneGameRating: {} 641 | XboxOneIsContentPackage: 0 642 | XboxOneEnableGPUVariability: 1 643 | XboxOneSockets: {} 644 | XboxOneSplashScreen: {fileID: 0} 645 | XboxOneAllowedProductIds: [] 646 | XboxOnePersistentLocalStorageSize: 0 647 | XboxOneXTitleMemory: 8 648 | XboxOneOverrideIdentityName: 649 | vrEditorSettings: 650 | daydream: 651 | daydreamIconForeground: {fileID: 0} 652 | daydreamIconBackground: {fileID: 0} 653 | cloudServicesEnabled: 654 | UNet: 1 655 | luminIcon: 656 | m_Name: 657 | m_ModelFolderPath: 658 | m_PortalFolderPath: 659 | luminCert: 660 | m_CertPath: 661 | m_SignPackage: 1 662 | luminIsChannelApp: 0 663 | luminVersion: 664 | m_VersionCode: 1 665 | m_VersionName: 666 | apiCompatibilityLevel: 6 667 | cloudProjectId: 668 | framebufferDepthMemorylessMode: 0 669 | projectName: 670 | organizationId: 671 | cloudEnabled: 0 672 | enableNativePlatformBackendsForNewInputSystem: 0 673 | disableOldInputManagerSupport: 0 674 | legacyClampBlendShapeWeights: 0 675 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.3.2f1 2 | m_EditorVersionWithRevision: 2019.3.2f1 (c46a3a38511e) 3 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 5 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | streamingMipmapsActive: 0 33 | streamingMipmapsAddAllCameras: 1 34 | streamingMipmapsMemoryBudget: 512 35 | streamingMipmapsRenderersPerFrame: 512 36 | streamingMipmapsMaxLevelReduction: 2 37 | streamingMipmapsMaxFileIORequests: 1024 38 | particleRaycastBudget: 4 39 | asyncUploadTimeSlice: 2 40 | asyncUploadBufferSize: 16 41 | asyncUploadPersistentBuffer: 1 42 | resolutionScalingFixedDPIFactor: 1 43 | excludedTargetPlatforms: [] 44 | - serializedVersion: 2 45 | name: Low 46 | pixelLightCount: 0 47 | shadows: 0 48 | shadowResolution: 0 49 | shadowProjection: 1 50 | shadowCascades: 1 51 | shadowDistance: 20 52 | shadowNearPlaneOffset: 3 53 | shadowCascade2Split: 0.33333334 54 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 55 | shadowmaskMode: 0 56 | blendWeights: 2 57 | textureQuality: 0 58 | anisotropicTextures: 0 59 | antiAliasing: 0 60 | softParticles: 0 61 | softVegetation: 0 62 | realtimeReflectionProbes: 0 63 | billboardsFaceCameraPosition: 0 64 | vSyncCount: 0 65 | lodBias: 0.4 66 | maximumLODLevel: 0 67 | streamingMipmapsActive: 0 68 | streamingMipmapsAddAllCameras: 1 69 | streamingMipmapsMemoryBudget: 512 70 | streamingMipmapsRenderersPerFrame: 512 71 | streamingMipmapsMaxLevelReduction: 2 72 | streamingMipmapsMaxFileIORequests: 1024 73 | particleRaycastBudget: 16 74 | asyncUploadTimeSlice: 2 75 | asyncUploadBufferSize: 16 76 | asyncUploadPersistentBuffer: 1 77 | resolutionScalingFixedDPIFactor: 1 78 | excludedTargetPlatforms: [] 79 | - serializedVersion: 2 80 | name: Medium 81 | pixelLightCount: 1 82 | shadows: 1 83 | shadowResolution: 0 84 | shadowProjection: 1 85 | shadowCascades: 1 86 | shadowDistance: 20 87 | shadowNearPlaneOffset: 3 88 | shadowCascade2Split: 0.33333334 89 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 90 | shadowmaskMode: 0 91 | blendWeights: 2 92 | textureQuality: 0 93 | anisotropicTextures: 1 94 | antiAliasing: 0 95 | softParticles: 0 96 | softVegetation: 0 97 | realtimeReflectionProbes: 0 98 | billboardsFaceCameraPosition: 0 99 | vSyncCount: 1 100 | lodBias: 0.7 101 | maximumLODLevel: 0 102 | streamingMipmapsActive: 0 103 | streamingMipmapsAddAllCameras: 1 104 | streamingMipmapsMemoryBudget: 512 105 | streamingMipmapsRenderersPerFrame: 512 106 | streamingMipmapsMaxLevelReduction: 2 107 | streamingMipmapsMaxFileIORequests: 1024 108 | particleRaycastBudget: 64 109 | asyncUploadTimeSlice: 2 110 | asyncUploadBufferSize: 16 111 | asyncUploadPersistentBuffer: 1 112 | resolutionScalingFixedDPIFactor: 1 113 | excludedTargetPlatforms: [] 114 | - serializedVersion: 2 115 | name: High 116 | pixelLightCount: 2 117 | shadows: 2 118 | shadowResolution: 1 119 | shadowProjection: 1 120 | shadowCascades: 2 121 | shadowDistance: 40 122 | shadowNearPlaneOffset: 3 123 | shadowCascade2Split: 0.33333334 124 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 125 | shadowmaskMode: 1 126 | blendWeights: 2 127 | textureQuality: 0 128 | anisotropicTextures: 1 129 | antiAliasing: 0 130 | softParticles: 0 131 | softVegetation: 1 132 | realtimeReflectionProbes: 1 133 | billboardsFaceCameraPosition: 1 134 | vSyncCount: 1 135 | lodBias: 1 136 | maximumLODLevel: 0 137 | streamingMipmapsActive: 0 138 | streamingMipmapsAddAllCameras: 1 139 | streamingMipmapsMemoryBudget: 512 140 | streamingMipmapsRenderersPerFrame: 512 141 | streamingMipmapsMaxLevelReduction: 2 142 | streamingMipmapsMaxFileIORequests: 1024 143 | particleRaycastBudget: 256 144 | asyncUploadTimeSlice: 2 145 | asyncUploadBufferSize: 16 146 | asyncUploadPersistentBuffer: 1 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Very High 151 | pixelLightCount: 3 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 2 156 | shadowDistance: 70 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 2 164 | antiAliasing: 2 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 1.5 171 | maximumLODLevel: 0 172 | streamingMipmapsActive: 0 173 | streamingMipmapsAddAllCameras: 1 174 | streamingMipmapsMemoryBudget: 512 175 | streamingMipmapsRenderersPerFrame: 512 176 | streamingMipmapsMaxLevelReduction: 2 177 | streamingMipmapsMaxFileIORequests: 1024 178 | particleRaycastBudget: 1024 179 | asyncUploadTimeSlice: 2 180 | asyncUploadBufferSize: 16 181 | asyncUploadPersistentBuffer: 1 182 | resolutionScalingFixedDPIFactor: 1 183 | excludedTargetPlatforms: [] 184 | - serializedVersion: 2 185 | name: Ultra 186 | pixelLightCount: 4 187 | shadows: 2 188 | shadowResolution: 2 189 | shadowProjection: 1 190 | shadowCascades: 4 191 | shadowDistance: 150 192 | shadowNearPlaneOffset: 3 193 | shadowCascade2Split: 0.33333334 194 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 195 | shadowmaskMode: 1 196 | blendWeights: 4 197 | textureQuality: 0 198 | anisotropicTextures: 2 199 | antiAliasing: 2 200 | softParticles: 1 201 | softVegetation: 1 202 | realtimeReflectionProbes: 1 203 | billboardsFaceCameraPosition: 1 204 | vSyncCount: 1 205 | lodBias: 2 206 | maximumLODLevel: 0 207 | streamingMipmapsActive: 0 208 | streamingMipmapsAddAllCameras: 1 209 | streamingMipmapsMemoryBudget: 512 210 | streamingMipmapsRenderersPerFrame: 512 211 | streamingMipmapsMaxLevelReduction: 2 212 | streamingMipmapsMaxFileIORequests: 1024 213 | particleRaycastBudget: 4096 214 | asyncUploadTimeSlice: 2 215 | asyncUploadBufferSize: 16 216 | asyncUploadPersistentBuffer: 1 217 | resolutionScalingFixedDPIFactor: 1 218 | excludedTargetPlatforms: [] 219 | m_PerPlatformDefaultQuality: 220 | Android: 2 221 | Lumin: 5 222 | Nintendo 3DS: 5 223 | Nintendo Switch: 5 224 | PS4: 5 225 | PSP2: 2 226 | Stadia: 5 227 | Standalone: 5 228 | WebGL: 3 229 | Windows Store Apps: 5 230 | XboxOne: 5 231 | iPhone: 2 232 | tvOS: 2 233 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # What is Object Pooling? 2 | Object Pooling is an optimization technique that focuses on reusing objects instead of creating and destroying them. In this solution objects are only displayed if they are inside camera view and released after being outside. 3 | 4 | [More info + example](https://www.youtube.com/watch?v=tdSmKaJvCoA) 5 | 6 | 7 | ![Alt Text](https://media2.giphy.com/media/lQbFj9l7T2lAuyTWjM/giphy.gif) 8 | 9 | [https://www.youtube.com/watch?v=vGq9RtnU9tg](https://www.youtube.com/watch?v=vGq9RtnU9tg) 10 | 11 | ## Real life example 12 | In our game we have created a lot of GameObjects (trees, rocks, buildings). Even with built-in Frustum Culling there was a big drop in game performance. After some investigation we figured out that Unity has a problem even with empty GameObjects if they number in hundreds of thousands. 13 | 14 | Object Pooling gave us **3x more FPS than before** (from 40 to 120). 15 | 16 | 17 | # About this repository 18 | This demo project showcases a custom implementation of Object Pooling used in our upcoming game: 19 | 20 | [Pelagos: Rise of Greece](https://www.reddit.com/r/Pelagos/). 21 | 22 | It contains a working example scene and commented source code. 23 | 24 | 25 | ## Requirements 26 | 27 | Unity 2019.3.2: go to [Unity download archive](https://unity3d.com/get-unity/download/archive) page and download **Unity 2019.3.2** version. 28 | ## Installation 29 | 30 | Just download ZIP of this repo or use GIT client and open in Unity. That's all :) 31 | ## Implementation 32 | 33 | This is a demonstration of a solution that we're using in our project. **This is not** an out of the box plugin that you can download and make work in 2 minutes. 34 | Object Pooling requires specific code architecture approach that is unfortunately not taught on Unity tutorials. 35 | In this example we're using **Dependency Injection**. We also try to use Unity components only if necessary. 36 | 37 | It may be scary, but don't worry and take a look :) 38 | 39 | ## Where to start 40 | Good places to start understanding the code are: 41 | 42 | `ObjectPooler.Application.ObjectPoolerDisplayer` 43 | 44 | `ObjectPooler.Application.Displayers.BuildingsDisplayer` 45 | 46 | `ObjectPooler.Application.Displayers.PeopleDisplayer` 47 | 48 | and 49 | 50 | `Map.Application.MapGenerator` 51 | 52 | # Benchmark 53 | Buildings: 22064 54 | 55 | People: 16914 56 | 57 | | Object Pooling ON|Object Pooling OFF | 58 | |--|--| 59 | | 148 FPS| 30 FPS | 60 | 61 | Click on screenshot to resize 62 | ![Object Pooling ON](https://i.imgur.com/eeLE7Du.png) 63 | ![Object Pooling OFF](https://i.imgur.com/lKphxcR.png) 64 | --------------------------------------------------------------------------------