├── .gitattributes ├── .gitignore ├── Assets ├── Models │ ├── Guy.fbx │ ├── House.fbx │ ├── Tree.fbx │ ├── Hospital.fbx │ ├── Terrain.fbx │ ├── Rock │ │ ├── LargeRock.fbx │ │ ├── SmallRock.fbx │ │ ├── LargeRock.fbx.meta │ │ └── SmallRock.fbx.meta │ ├── Rock.meta │ ├── Terrain.fbx.meta │ ├── Hospital.fbx.meta │ ├── House.fbx.meta │ ├── Guy.fbx.meta │ └── Tree.fbx.meta ├── Materials │ ├── Textures │ │ ├── circle.png │ │ ├── BlueGuy.png │ │ ├── GreenGuy.png │ │ ├── GuyInfected.png │ │ ├── TreeTexture.png │ │ ├── HouseTexture.png │ │ ├── TerrainTexture.png │ │ ├── HospitalTexture.png │ │ ├── BlueGuy.png.meta │ │ ├── GreenGuy.png.meta │ │ ├── GuyInfected.png.meta │ │ ├── HouseTexture.png.meta │ │ ├── TerrainTexture.png.meta │ │ ├── TreeTexture.png.meta │ │ ├── HospitalTexture.png.meta │ │ └── circle.png.meta │ ├── People.meta │ ├── Textures.meta │ ├── Sky.mat.meta │ ├── Dead.mat.meta │ ├── Healthy.mat.meta │ ├── Hospital.mat.meta │ ├── House.mat.meta │ ├── Infected.mat.meta │ ├── Rock.mat.meta │ ├── Tree.mat.meta │ ├── Checkpoint.mat.meta │ ├── TerrainMat.mat.meta │ ├── CoughParticles.mat.meta │ ├── People │ │ ├── BlueGuy.mat.meta │ │ ├── GreenGuy.mat.meta │ │ ├── GuyInfected.mat.meta │ │ ├── BlueGuy.mat │ │ ├── GreenGuy.mat │ │ └── GuyInfected.mat │ ├── Rock.mat │ ├── House.mat │ ├── Hospital.mat │ ├── TerrainMat.mat │ ├── Tree.mat │ ├── Sky.mat │ ├── Dead.mat │ ├── Healthy.mat │ ├── Infected.mat │ ├── CoughParticles.mat │ └── Checkpoint.mat ├── Scenes │ ├── DemoScene │ │ ├── NavMesh.asset │ │ └── NavMesh.asset.meta │ ├── SampleScene │ │ ├── NavMesh.asset │ │ ├── NavMesh.asset.meta │ │ ├── Main Camera Profile.asset.meta │ │ └── Main Camera Profile.asset │ ├── DemoScene.unity.meta │ ├── SampleScene.unity.meta │ ├── DemoScene.meta │ └── SampleScene.meta ├── Prefabs │ ├── Entity.prefab.meta │ ├── DeathParticles.prefab.meta │ ├── HouseEntry.prefab.meta │ └── HouseEntry.prefab ├── Models.meta ├── Prefabs.meta ├── Scenes.meta ├── Scripts.meta ├── Materials.meta ├── UniversalRenderPipelineAsset.asset.meta ├── UniversalRenderPipelineAsset_Renderer.asset.meta ├── Scripts │ ├── Entity.cs.meta │ ├── House.cs.meta │ ├── Virus.cs.meta │ ├── FlyCamera.cs.meta │ ├── PatientZero.cs.meta │ ├── EditorCameraAnimation.cs.meta │ ├── EntityCustomEditor.cs.meta │ ├── InfectionManager.cs.meta │ ├── PatientZero.cs │ ├── Virus.cs │ ├── EditorCameraAnimation.cs │ ├── EntityCustomEditor.cs │ ├── House.cs │ ├── FlyCamera.cs │ ├── InfectionManager.cs │ └── Entity.cs ├── UniversalRenderPipelineAsset_Renderer.asset └── UniversalRenderPipelineAsset.asset ├── ProjectSettings ├── ProjectVersion.txt ├── ClusterInputManager.asset ├── PresetManager.asset ├── XRSettings.asset ├── TimeManager.asset ├── EditorBuildSettings.asset ├── VFXManager.asset ├── URPProjectSettings.asset ├── AudioManager.asset ├── TagManager.asset ├── UnityConnectSettings.asset ├── EditorSettings.asset ├── DynamicsManager.asset ├── NavMeshAreas.asset ├── Physics2DSettings.asset ├── GraphicsSettings.asset ├── QualitySettings.asset └── InputManager.asset ├── VisualizationTools ├── Comfortaa-Light.ttf ├── Comfortaa-Regular.ttf ├── infection_summary_profile.json └── graph_visualizer.py ├── README.md └── Packages └── manifest.json /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Library/ 2 | .vscode/ 3 | Build/ 4 | obj/ 5 | Logs/ 6 | 7 | *.csproj 8 | *.sln -------------------------------------------------------------------------------- /Assets/Models/Guy.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Models/Guy.fbx -------------------------------------------------------------------------------- /Assets/Models/House.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Models/House.fbx -------------------------------------------------------------------------------- /Assets/Models/Tree.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Models/Tree.fbx -------------------------------------------------------------------------------- /Assets/Models/Hospital.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Models/Hospital.fbx -------------------------------------------------------------------------------- /Assets/Models/Terrain.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Models/Terrain.fbx -------------------------------------------------------------------------------- /Assets/Models/Rock/LargeRock.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Models/Rock/LargeRock.fbx -------------------------------------------------------------------------------- /Assets/Models/Rock/SmallRock.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Models/Rock/SmallRock.fbx -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2019.3.13f1 2 | m_EditorVersionWithRevision: 2019.3.13f1 (d4ddf0d95db9) 3 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/circle.png -------------------------------------------------------------------------------- /Assets/Materials/Textures/BlueGuy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/BlueGuy.png -------------------------------------------------------------------------------- /Assets/Materials/Textures/GreenGuy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/GreenGuy.png -------------------------------------------------------------------------------- /Assets/Scenes/DemoScene/NavMesh.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Scenes/DemoScene/NavMesh.asset -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/NavMesh.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Scenes/SampleScene/NavMesh.asset -------------------------------------------------------------------------------- /VisualizationTools/Comfortaa-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/VisualizationTools/Comfortaa-Light.ttf -------------------------------------------------------------------------------- /Assets/Materials/Textures/GuyInfected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/GuyInfected.png -------------------------------------------------------------------------------- /Assets/Materials/Textures/TreeTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/TreeTexture.png -------------------------------------------------------------------------------- /VisualizationTools/Comfortaa-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/VisualizationTools/Comfortaa-Regular.ttf -------------------------------------------------------------------------------- /Assets/Materials/Textures/HouseTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/HouseTexture.png -------------------------------------------------------------------------------- /Assets/Materials/Textures/TerrainTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/TerrainTexture.png -------------------------------------------------------------------------------- /Assets/Materials/Textures/HospitalTexture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/carl-vbn/virus-evolution/HEAD/Assets/Materials/Textures/HospitalTexture.png -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /Assets/Prefabs/Entity.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 27da4fbbf2e2fab4c9d3d8c82f7302e7 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes/DemoScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0265077421af894083ca0c64756376d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Models.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 05f7c399273a8c64ebb05e5eab024d5f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a580cf82bdbce224a9fee88b8318851b 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Prefabs/DeathParticles.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4fe122547334ce46b7df26dc6faa351 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Prefabs/HouseEntry.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9def1bfc6f3b698419e85aa91477b7b2 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scenes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c22b4b715cfdb947b43628765fe01dc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fc0d4010bbf28b4594072e72b8655ab 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a431b09773cb8214e8a1efe02dd4d3e2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c69e5440afce17741a1ac1f1df7554b8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Models/Rock.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2560a4835ed85d646853a4e28f00bd05 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/People.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d1b90a14c483b424c93b3605c75ef199 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/DemoScene.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3535703e62288348b40292789e97951 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Textures.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6933a89e837c3e644b8fb3ed3011b2d4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2bf11f3ed611c424fb38fbb949eaa714 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /Assets/Materials/Sky.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c0d8fe4d76f39374b92d975148069c9c 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Dead.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2c8e9cbc0bd75b40b9f14b991dc77a6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Healthy.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 26e35dfbfcab52d4bacaa4dd4486d954 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Hospital.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c7f8d434c9f0d0a4db859ee2495772e1 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/House.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a02130a7883c8a648bf17029980d4fbe 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Infected.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1b11cdf338e9c54ebe88a71a38ea882 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Rock.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e73cc94e45d77d7428f12ad00640cbe2 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Tree.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0837ac78aeda77d4e86a83ec65d7f29e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/Checkpoint.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3889196331a863549845fe80a3f4f9c6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/TerrainMat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0dd7fc0f91d4ed940afddd70f6240472 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/CoughParticles.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fff83f9386e78fa438e8affbceda7e27 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/People/BlueGuy.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d331b27664a46db4e8ff961a4127789a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/People/GreenGuy.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7909724b7167e44aa438ec1ec757fea 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Materials/People/GuyInfected.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e932523aa2b226e4f84dbfa17e29396f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/DemoScene/NavMesh.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e006a718ecfae8f45b47faa54097e34e 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/NavMesh.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 48bfa0a9b448421469bcefc49ca9801f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineAsset.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 26de1e943f6101944b0e6c8a657a60c7 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/Main Camera Profile.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b86e8e95ef4b3f541aef99530e6b190f 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineAsset_Renderer.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e7d32d6908a9850438932b23007d13d4 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Scripts/Entity.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f55dce9f1e4fca44b1dd5502fc41b33 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/House.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 49fe2995e6e7a964683c657b4832e0e0 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/Virus.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c2482a8db49dc124d87001da764a8d58 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/FlyCamera.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b67abd3bdab68974587049c28fe9b4ff 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/PatientZero.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f6d9e4c5d7832ee4e93896fffde1dc5a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /VisualizationTools/infection_summary_profile.json: -------------------------------------------------------------------------------- 1 | { 2 | "arg_overrides": { 3 | "fullscreen": true, 4 | "hide": ["dominant_virus", "dead"] 5 | }, 6 | "curve_colors": { 7 | "healthy": [70, 160, 224], 8 | "infected": [224, 70, 119], 9 | "dead": [50,50,50] 10 | } 11 | } -------------------------------------------------------------------------------- /Assets/Scripts/EditorCameraAnimation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 477d5fa163a74c04ca3f6e46f5a209c0 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/EntityCustomEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2b4f366f6f85f7944830fb70b0620b7e 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/InfectionManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 87ff663b16dc71b44be33f23adb322a0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 100 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/SampleScene.unity 10 | guid: 9fc0d4010bbf28b4594072e72b8655ab 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Scripts/PatientZero.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | [RequireComponent(typeof(Entity))] 6 | public class PatientZero : MonoBehaviour 7 | { 8 | public string virusName; 9 | 10 | // Start is called before the first frame update 11 | void Start() 12 | { 13 | GetComponent().SetInfection(new Virus(virusName, 0)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ProjectSettings/URPProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_LastMaterialVersion: 1 16 | -------------------------------------------------------------------------------- /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/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 | - Entity 8 | - HouseEntry 9 | - HospitalEntry 10 | layers: 11 | - Default 12 | - TransparentFX 13 | - Ignore Raycast 14 | - 15 | - Water 16 | - UI 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | - 41 | - 42 | - 43 | m_SortingLayers: 44 | - name: Default 45 | uniqueID: 0 46 | locked: 0 47 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Virus-Evolution 2 | 3 | The Unity project I made to simulate the evolution of a virus on very high-level. 4 | I explained and showcased the project in this video on my YouTube channel: 5 | [![video_thumbnail](https://i.ytimg.com/vi/g7xzVqpyiPY/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLCqVjLzCegP8thqtZqGjj18scJ81Q) 6 | ](https://youtu.be/g7xzVqpyiPY) 7 | 8 | ## Usage 9 | Once opened with Unity, just play the "SampleScene" scene and it should work. 10 | Currently, most parameters are hard-coded into `Entity.cs` so you'll have to edit that if you want to tweak the simulation. 11 | You can use `Space` and `Shift+Space` to change the simulation to 800% and 1600% respectively (and back to 100%). 12 | 13 | ## Data & graphs 14 | While the simulation is running, the program saves data about the amount of infected and healthy people, average trait multipliers and entity states over time as `.csv` files inside the `CSV_DATA`folder. 15 | I wrote the `graph_visualizer.py` script (located inside the `VisualizationTools` folder) which is capable of displaying this data as nicely colored graphs, and if you're interested you should be able to get it running pretty easily, but it's still a work in progress and might one day be a project of it's own. -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 9 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 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: 0 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/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 | -------------------------------------------------------------------------------- /Assets/Scripts/Virus.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using UnityEngine; 5 | 6 | public class Virus 7 | { 8 | public string Name {get; private set;} 9 | public int Generation {get; private set;} 10 | public Dictionary HostTraitMultipliers {get; private set;} 11 | 12 | public Virus(string name, int generation) { 13 | this.Name = name; 14 | this.Generation = generation; 15 | 16 | HostTraitMultipliers = new Dictionary(); 17 | 18 | foreach (string key in Entity.TRAIT_KEYS) { 19 | HostTraitMultipliers[key] = 1F; 20 | } 21 | } 22 | 23 | public Virus CreateCopy(float mutationRate, float mutationForce) { 24 | bool mutation = Random.value < mutationRate; 25 | 26 | Virus copy = new Virus(this.Name, this.Generation+(mutation ? 1 : 0)); 27 | 28 | foreach (string traitName in HostTraitMultipliers.Keys) { 29 | copy.HostTraitMultipliers[traitName] = this.HostTraitMultipliers[traitName]; 30 | 31 | if (Random.value < mutationRate) { 32 | copy.HostTraitMultipliers[traitName] += Random.Range(-mutationForce, mutationForce); 33 | } 34 | } 35 | 36 | return copy; 37 | } 38 | 39 | public override string ToString() 40 | { 41 | return Name+"-G"+Generation; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Assets/Scripts/EditorCameraAnimation.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR 2 | using UnityEngine; 3 | using UnityEditor; 4 | using Unity.EditorCoroutines.Editor; 5 | 6 | [CustomEditor(typeof(FlyCamera))] 7 | public class EditorCameraAnimation : Editor { 8 | 9 | private float speed = 1; 10 | private Vector3 firstPos; 11 | private Vector3 secondPos; 12 | 13 | public override void OnInspectorGUI() { 14 | base.OnInspectorGUI(); 15 | 16 | EditorGUILayout.Space(); 17 | EditorGUILayout.LabelField("Camera animation utility", EditorStyles.boldLabel); 18 | 19 | speed = EditorGUILayout.FloatField("Speed", speed); 20 | FlyCamera targetCam = (FlyCamera) target; 21 | 22 | if (GUILayout.Button("First position")) { 23 | firstPos = targetCam.transform.position; 24 | } 25 | 26 | if (GUILayout.Button("Second position")) { 27 | secondPos = targetCam.transform.position; 28 | } 29 | 30 | if (GUILayout.Button("Play")) { 31 | EditorCoroutineUtility.StartCoroutine(AnimationCoroutine(targetCam.transform), this); 32 | } 33 | } 34 | 35 | System.Collections.IEnumerator AnimationCoroutine(Transform cameraTransform) { 36 | for (float i = 0; i<100; i+=speed) { 37 | cameraTransform.position = Vector3.Lerp(firstPos, secondPos, i/100F); 38 | yield return new EditorWaitForSeconds(0.01F); 39 | } 40 | } 41 | } 42 | #endif -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineAsset_Renderer.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: de640fe3d0db1804a85f9fc8f5cadab6, type: 3} 13 | m_Name: UniversalRenderPipelineAsset_Renderer 14 | m_EditorClassIdentifier: 15 | m_RendererFeatures: [] 16 | m_RendererFeatureMap: 17 | postProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2} 18 | shaders: 19 | blitPS: {fileID: 4800000, guid: c17132b1f77d20942aa75f8429c0f8bc, type: 3} 20 | copyDepthPS: {fileID: 4800000, guid: d6dae50ee9e1bfa4db75f19f99355220, type: 3} 21 | screenSpaceShadowPS: {fileID: 4800000, guid: 0f854b35a0cf61a429bd5dcfea30eddd, 22 | type: 3} 23 | samplingPS: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3} 24 | fallbackErrorPS: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3} 25 | m_OpaqueLayerMask: 26 | serializedVersion: 2 27 | m_Bits: 4294967295 28 | m_TransparentLayerMask: 29 | serializedVersion: 2 30 | m_Bits: 4294967295 31 | m_DefaultStencilState: 32 | overrideStencilState: 0 33 | stencilReference: 0 34 | stencilCompareFunction: 8 35 | passOperation: 0 36 | failOperation: 0 37 | zFailOperation: 0 38 | m_ShadowTransparentReceive: 1 39 | -------------------------------------------------------------------------------- /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: Avoid 15 | cost: 2 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 | -------------------------------------------------------------------------------- /Assets/Scripts/EntityCustomEditor.cs: -------------------------------------------------------------------------------- 1 | #if UNITY_EDITOR 2 | 3 | using UnityEngine; 4 | using UnityEditor; 5 | 6 | [CustomEditor(typeof(Entity))] 7 | public class EntityCustomEditor : Editor { 8 | public override void OnInspectorGUI() { 9 | base.OnInspectorGUI(); 10 | 11 | Entity entity = (Entity) target; 12 | 13 | EditorGUILayout.Space(); 14 | EditorGUILayout.LabelField("Infection info", EditorStyles.boldLabel); 15 | 16 | Virus currentInfection = entity.Infection; 17 | if (currentInfection != null) { 18 | EditorGUILayout.LabelField("Virus name: "+currentInfection.Name); 19 | EditorGUILayout.LabelField("Virus generation: "+currentInfection.Generation); 20 | } else { 21 | EditorGUILayout.LabelField("Entity is healthy."); 22 | } 23 | 24 | if (entity.BaseTraits != null) { 25 | EditorGUILayout.Space(); 26 | EditorGUILayout.LabelField("Traits", EditorStyles.boldLabel); 27 | foreach (string traitName in entity.BaseTraits.Keys) { 28 | EditorGUILayout.LabelField(traitName+"="+entity.GetTraitValue(traitName)+(entity.Infection != null ? " [x"+entity.Infection.HostTraitMultipliers[traitName]+"]" : "")); 29 | } 30 | } 31 | 32 | EditorGUILayout.Space(); 33 | EditorGUILayout.LabelField("Health: "+entity.Health); 34 | EditorGUILayout.LabelField("Energy: "+entity.Energy); 35 | EditorGUILayout.LabelField("State: "+entity.CurrentState); 36 | //EditorGUILayout.LabelField("Speed: "+entity.GetComponent().velocity.magnitude); 37 | 38 | if (GUILayout.Button("Kill")) { 39 | entity.SendMessage("Die"); 40 | } 41 | } 42 | } 43 | #endif -------------------------------------------------------------------------------- /Assets/UniversalRenderPipelineAsset.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} 13 | m_Name: UniversalRenderPipelineAsset 14 | m_EditorClassIdentifier: 15 | k_AssetVersion: 5 16 | k_AssetPreviousVersion: 5 17 | m_RendererType: 1 18 | m_RendererData: {fileID: 0} 19 | m_RendererDataList: 20 | - {fileID: 11400000, guid: e7d32d6908a9850438932b23007d13d4, type: 2} 21 | m_DefaultRendererIndex: 0 22 | m_RequireDepthTexture: 0 23 | m_RequireOpaqueTexture: 0 24 | m_OpaqueDownsampling: 1 25 | m_SupportsTerrainHoles: 1 26 | m_SupportsHDR: 0 27 | m_MSAA: 4 28 | m_RenderScale: 1 29 | m_MainLightRenderingMode: 1 30 | m_MainLightShadowsSupported: 1 31 | m_MainLightShadowmapResolution: 4096 32 | m_AdditionalLightsRenderingMode: 1 33 | m_AdditionalLightsPerObjectLimit: 4 34 | m_AdditionalLightShadowsSupported: 0 35 | m_AdditionalLightsShadowmapResolution: 512 36 | m_ShadowDistance: 300 37 | m_ShadowCascades: 0 38 | m_Cascade2Split: 0.25 39 | m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} 40 | m_ShadowDepthBias: 1 41 | m_ShadowNormalBias: 1 42 | m_SoftShadowsSupported: 1 43 | m_UseSRPBatcher: 1 44 | m_SupportsDynamicBatching: 0 45 | m_MixedLightingSupported: 1 46 | m_DebugLevel: 0 47 | m_PostProcessingFeatureSet: 0 48 | m_ColorGradingMode: 0 49 | m_ColorGradingLutSize: 32 50 | m_ShadowType: 1 51 | m_LocalShadowsSupported: 0 52 | m_LocalShadowsAtlasResolution: 256 53 | m_MaxPixelLights: 0 54 | m_ShadowAtlasResolution: 256 55 | m_ShaderVariantLogLevel: 0 56 | -------------------------------------------------------------------------------- /Assets/Scripts/House.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.AI; 5 | 6 | public class House : MonoBehaviour 7 | { 8 | public int inhabitantCount; 9 | public GameObject entityPrefab; 10 | public Material inhabitantMaterial; 11 | 12 | private List inhabitants; 13 | 14 | // Start is called before the first frame update 15 | void Start() 16 | { 17 | inhabitants = new List(); 18 | for (int i = 0; i(); 21 | instance.GetComponent().material = inhabitantMaterial; 22 | entity.healthyMaterial = inhabitantMaterial; 23 | entity.home = this; 24 | instance.transform.position = transform.position; 25 | instance.GetComponent().Warp(transform.position); 26 | inhabitants.Add(entity); 27 | } 28 | } 29 | 30 | void OnTriggerEnter(Collider other) { 31 | if (other.gameObject.CompareTag("Entity")) { 32 | Entity entity = other.GetComponent(); 33 | if (entity.CurrentState == EntityState.Going_Home) { 34 | entity.SendMessage("EnterHome"); 35 | } 36 | } 37 | } 38 | 39 | // Every healthy person that is currently in the house will have a high chance of getting infected when this is called 40 | public void SpreadInfection(Entity infector, Virus virus) { 41 | foreach(Entity inhabitant in inhabitants) { 42 | if (inhabitant.CurrentState == EntityState.At_Home && inhabitant.Infection == null && Random.value < 0.75F) { 43 | infector.Infect(inhabitant); 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "1.2.16", 4 | "com.unity.editorcoroutines": "1.0.0", 5 | "com.unity.ide.rider": "1.1.4", 6 | "com.unity.ide.vscode": "1.2.0", 7 | "com.unity.render-pipelines.universal": "7.3.1", 8 | "com.unity.shadergraph": "7.3.1", 9 | "com.unity.test-framework": "1.1.13", 10 | "com.unity.textmeshpro": "2.0.1", 11 | "com.unity.timeline": "1.2.14", 12 | "com.unity.ugui": "1.0.0", 13 | "com.unity.modules.ai": "1.0.0", 14 | "com.unity.modules.androidjni": "1.0.0", 15 | "com.unity.modules.animation": "1.0.0", 16 | "com.unity.modules.assetbundle": "1.0.0", 17 | "com.unity.modules.audio": "1.0.0", 18 | "com.unity.modules.cloth": "1.0.0", 19 | "com.unity.modules.director": "1.0.0", 20 | "com.unity.modules.imageconversion": "1.0.0", 21 | "com.unity.modules.imgui": "1.0.0", 22 | "com.unity.modules.jsonserialize": "1.0.0", 23 | "com.unity.modules.particlesystem": "1.0.0", 24 | "com.unity.modules.physics": "1.0.0", 25 | "com.unity.modules.physics2d": "1.0.0", 26 | "com.unity.modules.screencapture": "1.0.0", 27 | "com.unity.modules.terrain": "1.0.0", 28 | "com.unity.modules.terrainphysics": "1.0.0", 29 | "com.unity.modules.tilemap": "1.0.0", 30 | "com.unity.modules.ui": "1.0.0", 31 | "com.unity.modules.uielements": "1.0.0", 32 | "com.unity.modules.umbra": "1.0.0", 33 | "com.unity.modules.unityanalytics": "1.0.0", 34 | "com.unity.modules.unitywebrequest": "1.0.0", 35 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 36 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 37 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 38 | "com.unity.modules.unitywebrequestwww": "1.0.0", 39 | "com.unity.modules.vehicles": "1.0.0", 40 | "com.unity.modules.video": "1.0.0", 41 | "com.unity.modules.vr": "1.0.0", 42 | "com.unity.modules.wind": "1.0.0", 43 | "com.unity.modules.xr": "1.0.0" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Assets/Prefabs/HouseEntry.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &7864708710034973283 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: 7864708710034973285} 12 | - component: {fileID: 7864708710034973286} 13 | - component: {fileID: 5192315448029074208} 14 | m_Layer: 0 15 | m_Name: HouseEntry 16 | m_TagString: HouseEntry 17 | m_Icon: {fileID: -5397416234189338067, guid: 0000000000000000d000000000000000, type: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &7864708710034973285 22 | Transform: 23 | m_ObjectHideFlags: 0 24 | m_CorrespondingSourceObject: {fileID: 0} 25 | m_PrefabInstance: {fileID: 0} 26 | m_PrefabAsset: {fileID: 0} 27 | m_GameObject: {fileID: 7864708710034973283} 28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 29 | m_LocalPosition: {x: -17.35, y: 0, z: -107.92} 30 | m_LocalScale: {x: 1, y: 1, z: 1} 31 | m_Children: [] 32 | m_Father: {fileID: 0} 33 | m_RootOrder: 0 34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 35 | --- !u!114 &7864708710034973286 36 | MonoBehaviour: 37 | m_ObjectHideFlags: 0 38 | m_CorrespondingSourceObject: {fileID: 0} 39 | m_PrefabInstance: {fileID: 0} 40 | m_PrefabAsset: {fileID: 0} 41 | m_GameObject: {fileID: 7864708710034973283} 42 | m_Enabled: 1 43 | m_EditorHideFlags: 0 44 | m_Script: {fileID: 11500000, guid: 49fe2995e6e7a964683c657b4832e0e0, type: 3} 45 | m_Name: 46 | m_EditorClassIdentifier: 47 | inhabitantCount: 5 48 | entityPrefab: {fileID: 3267574790048072092, guid: 27da4fbbf2e2fab4c9d3d8c82f7302e7, 49 | type: 3} 50 | inhabitantMaterial: {fileID: 2100000, guid: d331b27664a46db4e8ff961a4127789a, type: 2} 51 | --- !u!65 &5192315448029074208 52 | BoxCollider: 53 | m_ObjectHideFlags: 0 54 | m_CorrespondingSourceObject: {fileID: 0} 55 | m_PrefabInstance: {fileID: 0} 56 | m_PrefabAsset: {fileID: 0} 57 | m_GameObject: {fileID: 7864708710034973283} 58 | m_Material: {fileID: 0} 59 | m_IsTrigger: 1 60 | m_Enabled: 1 61 | serializedVersion: 2 62 | m_Size: {x: 0.1, y: 0.1, z: 0.02} 63 | m_Center: {x: -0.02, y: 0.04, z: 0} 64 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/BlueGuy.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ca7ed968f9a35d54cb07566d39c141d1 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/GreenGuy.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5817d667b6a6f8c46815998aad455014 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/GuyInfected.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e9984920f6139c438abdbde8ce293f7 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/HouseTexture.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 12b0047c670bbd944ae2c3c22e314592 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/TerrainTexture.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dfb539ba9461d1749a744ebc6680de50 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/TreeTexture.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba0ddecd80b2fe24684a2a572425e156 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/HospitalTexture.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 135e889f04865a544a9bffa2f9da052b 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 1 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 0 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | spriteSheet: 75 | serializedVersion: 2 76 | sprites: [] 77 | outline: [] 78 | physicsShape: [] 79 | bones: [] 80 | spriteID: 81 | internalID: 0 82 | vertices: [] 83 | indices: 84 | edges: [] 85 | weights: [] 86 | secondaryTextures: [] 87 | spritePackingTag: 88 | pSDRemoveMatte: 0 89 | pSDShowRemoveMatteOption: 0 90 | userData: 91 | assetBundleName: 92 | assetBundleVariant: 93 | -------------------------------------------------------------------------------- /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 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0} 39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0} 40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0} 41 | m_PreloadedShaders: [] 42 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 43 | type: 0} 44 | m_CustomRenderPipeline: {fileID: 11400000, guid: 26de1e943f6101944b0e6c8a657a60c7, 45 | type: 2} 46 | m_TransparencySortMode: 0 47 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 48 | m_DefaultRenderingPath: 1 49 | m_DefaultMobileRenderingPath: 1 50 | m_TierSettings: [] 51 | m_LightmapStripping: 0 52 | m_FogStripping: 0 53 | m_InstancingStripping: 0 54 | m_LightmapKeepPlain: 1 55 | m_LightmapKeepDirCombined: 1 56 | m_LightmapKeepDynamicPlain: 1 57 | m_LightmapKeepDynamicDirCombined: 1 58 | m_LightmapKeepShadowMask: 1 59 | m_LightmapKeepSubtractive: 1 60 | m_FogKeepLinear: 1 61 | m_FogKeepExp: 1 62 | m_FogKeepExp2: 1 63 | m_AlbedoSwatchInfos: [] 64 | m_LightsUseLinearIntensity: 0 65 | m_LightsUseColorTemperature: 0 66 | m_LogWhenShaderIsCompiled: 0 67 | m_AllowEnlightenSupportForUpgradedProject: 0 68 | -------------------------------------------------------------------------------- /Assets/Materials/Rock.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: Rock 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 0} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _EmissionMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _MainTex: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _MetallicGlossMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _OcclusionMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _SpecGlossMap: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | m_Floats: 52 | - _AlphaClip: 0 53 | - _Blend: 0 54 | - _BumpScale: 1 55 | - _Cull: 2 56 | - _Cutoff: 0.5 57 | - _DstBlend: 0 58 | - _EnvironmentReflections: 1 59 | - _GlossMapScale: 0 60 | - _Glossiness: 0 61 | - _GlossyReflections: 0 62 | - _Metallic: 0.297 63 | - _OcclusionStrength: 1 64 | - _QueueOffset: 0 65 | - _ReceiveShadows: 1 66 | - _Smoothness: 0 67 | - _SmoothnessTextureChannel: 0 68 | - _SpecularHighlights: 1 69 | - _SrcBlend: 1 70 | - _Surface: 0 71 | - _WorkflowMode: 1 72 | - _ZWrite: 1 73 | m_Colors: 74 | - _BaseColor: {r: 0.6132076, g: 0.6132076, b: 0.6132076, a: 1} 75 | - _Color: {r: 1, g: 1, b: 1, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 78 | --- !u!114 &7860868368792539153 79 | MonoBehaviour: 80 | m_ObjectHideFlags: 11 81 | m_CorrespondingSourceObject: {fileID: 0} 82 | m_PrefabInstance: {fileID: 0} 83 | m_PrefabAsset: {fileID: 0} 84 | m_GameObject: {fileID: 0} 85 | m_Enabled: 1 86 | m_EditorHideFlags: 0 87 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 88 | m_Name: 89 | m_EditorClassIdentifier: 90 | version: 1 91 | -------------------------------------------------------------------------------- /Assets/Models/Terrain.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 36e373b47e96db44f936af3033dd717d 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | materialImportMode: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 0 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 1 72 | humanDescription: 73 | serializedVersion: 3 74 | human: [] 75 | skeleton: [] 76 | armTwist: 0.5 77 | foreArmTwist: 0.5 78 | upperLegTwist: 0.5 79 | legTwist: 0.5 80 | armStretch: 0.05 81 | legStretch: 0.05 82 | feetSpacing: 0 83 | globalScale: 1 84 | rootMotionBoneName: 85 | hasTranslationDoF: 0 86 | hasExtraRoot: 0 87 | skeletonHasParents: 1 88 | lastHumanDescriptionAvatarSource: {instanceID: 0} 89 | autoGenerateAvatarMappingIfUnspecified: 1 90 | animationType: 2 91 | humanoidOversampling: 1 92 | avatarSetup: 0 93 | additionalBone: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /Assets/Models/Hospital.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 870423b9c77d90e4d8aef5a8e9f96435 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: {} 7 | materials: 8 | materialImportMode: 1 9 | materialName: 0 10 | materialSearch: 1 11 | materialLocation: 1 12 | animations: 13 | legacyGenerateAnimations: 4 14 | bakeSimulation: 0 15 | resampleCurves: 1 16 | optimizeGameObjects: 0 17 | motionNodeName: 18 | rigImportErrors: 19 | rigImportWarnings: 20 | animationImportErrors: 21 | animationImportWarnings: 22 | animationRetargetingWarnings: 23 | animationDoRetargetingWarnings: 0 24 | importAnimatedCustomProperties: 0 25 | importConstraints: 0 26 | animationCompression: 1 27 | animationRotationError: 0.5 28 | animationPositionError: 0.5 29 | animationScaleError: 0.5 30 | animationWrapMode: 0 31 | extraExposedTransformPaths: [] 32 | extraUserProperties: [] 33 | clipAnimations: [] 34 | isReadable: 0 35 | meshes: 36 | lODScreenPercentages: [] 37 | globalScale: 1 38 | meshCompression: 0 39 | addColliders: 0 40 | useSRGBMaterialColor: 1 41 | sortHierarchyByName: 1 42 | importVisibility: 1 43 | importBlendShapes: 1 44 | importCameras: 1 45 | importLights: 1 46 | swapUVChannels: 0 47 | generateSecondaryUV: 0 48 | useFileUnits: 1 49 | keepQuads: 0 50 | weldVertices: 1 51 | preserveHierarchy: 0 52 | skinWeightsMode: 0 53 | maxBonesPerVertex: 4 54 | minBoneWeight: 0.001 55 | meshOptimizationFlags: -1 56 | indexFormat: 0 57 | secondaryUVAngleDistortion: 8 58 | secondaryUVAreaDistortion: 15.000001 59 | secondaryUVHardAngle: 88 60 | secondaryUVPackMargin: 4 61 | useFileScale: 1 62 | tangentSpace: 63 | normalSmoothAngle: 60 64 | normalImportMode: 0 65 | tangentImportMode: 3 66 | normalCalculationMode: 4 67 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 68 | blendShapeNormalImportMode: 1 69 | normalSmoothingSource: 0 70 | referencedClips: [] 71 | importAnimation: 1 72 | humanDescription: 73 | serializedVersion: 3 74 | human: [] 75 | skeleton: [] 76 | armTwist: 0.5 77 | foreArmTwist: 0.5 78 | upperLegTwist: 0.5 79 | legTwist: 0.5 80 | armStretch: 0.05 81 | legStretch: 0.05 82 | feetSpacing: 0 83 | globalScale: 1 84 | rootMotionBoneName: 85 | hasTranslationDoF: 0 86 | hasExtraRoot: 0 87 | skeletonHasParents: 1 88 | lastHumanDescriptionAvatarSource: {instanceID: 0} 89 | autoGenerateAvatarMappingIfUnspecified: 1 90 | animationType: 2 91 | humanoidOversampling: 1 92 | avatarSetup: 0 93 | additionalBone: 0 94 | userData: 95 | assetBundleName: 96 | assetBundleVariant: 97 | -------------------------------------------------------------------------------- /Assets/Materials/House.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-5070832237366575012 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 1 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: House 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2050 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 2800000, guid: 12b0047c670bbd944ae2c3c22e314592, type: 3} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 2800000, guid: 12b0047c670bbd944ae2c3c22e314592, type: 3} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _SpecGlossMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | m_Floats: 65 | - _AlphaClip: 0 66 | - _Blend: 0 67 | - _BumpScale: 1 68 | - _Cull: 2 69 | - _Cutoff: 0.5 70 | - _DstBlend: 0 71 | - _EnvironmentReflections: 1 72 | - _GlossMapScale: 0 73 | - _Glossiness: 0 74 | - _GlossyReflections: 0 75 | - _Metallic: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0 80 | - _SmoothnessTextureChannel: 0 81 | - _SpecularHighlights: 1 82 | - _SrcBlend: 1 83 | - _Surface: 0 84 | - _WorkflowMode: 1 85 | - _ZWrite: 1 86 | m_Colors: 87 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 88 | - _Color: {r: 1, g: 1, b: 1, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 91 | -------------------------------------------------------------------------------- /Assets/Materials/Hospital.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-6736903420768219162 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 1 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Hospital 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2050 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 2800000, guid: 135e889f04865a544a9bffa2f9da052b, type: 3} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 2800000, guid: 135e889f04865a544a9bffa2f9da052b, type: 3} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _SpecGlossMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | m_Floats: 65 | - _AlphaClip: 0 66 | - _Blend: 0 67 | - _BumpScale: 1 68 | - _Cull: 2 69 | - _Cutoff: 0.5 70 | - _DstBlend: 0 71 | - _EnvironmentReflections: 1 72 | - _GlossMapScale: 0 73 | - _Glossiness: 0 74 | - _GlossyReflections: 0 75 | - _Metallic: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0 80 | - _SmoothnessTextureChannel: 0 81 | - _SpecularHighlights: 1 82 | - _SrcBlend: 1 83 | - _Surface: 0 84 | - _WorkflowMode: 1 85 | - _ZWrite: 1 86 | m_Colors: 87 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 88 | - _Color: {r: 1, g: 1, b: 1, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 91 | -------------------------------------------------------------------------------- /Assets/Materials/TerrainMat.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: TerrainMat 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 2800000, guid: dfb539ba9461d1749a744ebc6680de50, type: 3} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _EmissionMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _MainTex: 36 | m_Texture: {fileID: 2800000, guid: dfb539ba9461d1749a744ebc6680de50, type: 3} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _MetallicGlossMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _OcclusionMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _SpecGlossMap: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | m_Floats: 52 | - _AlphaClip: 0 53 | - _Blend: 0 54 | - _BumpScale: 1 55 | - _Cull: 2 56 | - _Cutoff: 0.5 57 | - _DstBlend: 0 58 | - _EnvironmentReflections: 1 59 | - _GlossMapScale: 0 60 | - _Glossiness: 0 61 | - _GlossyReflections: 0 62 | - _Metallic: 0 63 | - _OcclusionStrength: 1 64 | - _QueueOffset: 0 65 | - _ReceiveShadows: 1 66 | - _Smoothness: 0.5 67 | - _SmoothnessTextureChannel: 0 68 | - _SpecularHighlights: 1 69 | - _SrcBlend: 1 70 | - _Surface: 0 71 | - _WorkflowMode: 1 72 | - _ZWrite: 1 73 | m_Colors: 74 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 75 | - _Color: {r: 1, g: 1, b: 1, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 78 | --- !u!114 &9164702970304566894 79 | MonoBehaviour: 80 | m_ObjectHideFlags: 11 81 | m_CorrespondingSourceObject: {fileID: 0} 82 | m_PrefabInstance: {fileID: 0} 83 | m_PrefabAsset: {fileID: 0} 84 | m_GameObject: {fileID: 0} 85 | m_Enabled: 1 86 | m_EditorHideFlags: 0 87 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 88 | m_Name: 89 | m_EditorClassIdentifier: 90 | version: 1 91 | -------------------------------------------------------------------------------- /Assets/Materials/Tree.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: Tree 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 2800000, guid: ba0ddecd80b2fe24684a2a572425e156, type: 3} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _EmissionMap: 32 | m_Texture: {fileID: 2800000, guid: ba0ddecd80b2fe24684a2a572425e156, type: 3} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _MainTex: 36 | m_Texture: {fileID: 2800000, guid: ba0ddecd80b2fe24684a2a572425e156, type: 3} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _MetallicGlossMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _OcclusionMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _SpecGlossMap: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | m_Floats: 52 | - _AlphaClip: 0 53 | - _Blend: 0 54 | - _BumpScale: 1 55 | - _Cull: 2 56 | - _Cutoff: 0.5 57 | - _DstBlend: 0 58 | - _EnvironmentReflections: 1 59 | - _GlossMapScale: 0 60 | - _Glossiness: 0 61 | - _GlossyReflections: 0 62 | - _Metallic: 0 63 | - _OcclusionStrength: 1 64 | - _QueueOffset: 0 65 | - _ReceiveShadows: 1 66 | - _Smoothness: 0 67 | - _SmoothnessTextureChannel: 0 68 | - _SpecularHighlights: 1 69 | - _SrcBlend: 1 70 | - _Surface: 0 71 | - _WorkflowMode: 1 72 | - _ZWrite: 1 73 | m_Colors: 74 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 75 | - _Color: {r: 1, g: 1, b: 1, a: 1} 76 | - _EmissionColor: {r: 0.3490566, g: 0.3490566, b: 0.3490566, a: 1} 77 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 78 | --- !u!114 &1478103417291136081 79 | MonoBehaviour: 80 | m_ObjectHideFlags: 11 81 | m_CorrespondingSourceObject: {fileID: 0} 82 | m_PrefabInstance: {fileID: 0} 83 | m_PrefabAsset: {fileID: 0} 84 | m_GameObject: {fileID: 0} 85 | m_Enabled: 1 86 | m_EditorHideFlags: 0 87 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 88 | m_Name: 89 | m_EditorClassIdentifier: 90 | version: 1 91 | -------------------------------------------------------------------------------- /Assets/Models/House.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f3f5e3004243c884f862658f5371d892 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: 7 | - first: 8 | type: UnityEngine:Material 9 | assembly: UnityEngine.CoreModule 10 | name: Material 11 | second: {fileID: 2100000, guid: a02130a7883c8a648bf17029980d4fbe, type: 2} 12 | materials: 13 | materialImportMode: 1 14 | materialName: 0 15 | materialSearch: 1 16 | materialLocation: 1 17 | animations: 18 | legacyGenerateAnimations: 4 19 | bakeSimulation: 0 20 | resampleCurves: 1 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | rigImportErrors: 24 | rigImportWarnings: 25 | animationImportErrors: 26 | animationImportWarnings: 27 | animationRetargetingWarnings: 28 | animationDoRetargetingWarnings: 0 29 | importAnimatedCustomProperties: 0 30 | importConstraints: 0 31 | animationCompression: 1 32 | animationRotationError: 0.5 33 | animationPositionError: 0.5 34 | animationScaleError: 0.5 35 | animationWrapMode: 0 36 | extraExposedTransformPaths: [] 37 | extraUserProperties: [] 38 | clipAnimations: [] 39 | isReadable: 0 40 | meshes: 41 | lODScreenPercentages: [] 42 | globalScale: 1 43 | meshCompression: 0 44 | addColliders: 0 45 | useSRGBMaterialColor: 1 46 | sortHierarchyByName: 1 47 | importVisibility: 1 48 | importBlendShapes: 1 49 | importCameras: 1 50 | importLights: 1 51 | swapUVChannels: 0 52 | generateSecondaryUV: 0 53 | useFileUnits: 1 54 | keepQuads: 0 55 | weldVertices: 1 56 | preserveHierarchy: 0 57 | skinWeightsMode: 0 58 | maxBonesPerVertex: 4 59 | minBoneWeight: 0.001 60 | meshOptimizationFlags: -1 61 | indexFormat: 0 62 | secondaryUVAngleDistortion: 8 63 | secondaryUVAreaDistortion: 15.000001 64 | secondaryUVHardAngle: 88 65 | secondaryUVPackMargin: 4 66 | useFileScale: 1 67 | tangentSpace: 68 | normalSmoothAngle: 60 69 | normalImportMode: 0 70 | tangentImportMode: 3 71 | normalCalculationMode: 4 72 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 73 | blendShapeNormalImportMode: 1 74 | normalSmoothingSource: 0 75 | referencedClips: [] 76 | importAnimation: 1 77 | humanDescription: 78 | serializedVersion: 3 79 | human: [] 80 | skeleton: [] 81 | armTwist: 0.5 82 | foreArmTwist: 0.5 83 | upperLegTwist: 0.5 84 | legTwist: 0.5 85 | armStretch: 0.05 86 | legStretch: 0.05 87 | feetSpacing: 0 88 | globalScale: 1 89 | rootMotionBoneName: 90 | hasTranslationDoF: 0 91 | hasExtraRoot: 0 92 | skeletonHasParents: 1 93 | lastHumanDescriptionAvatarSource: {instanceID: 0} 94 | autoGenerateAvatarMappingIfUnspecified: 1 95 | animationType: 2 96 | humanoidOversampling: 1 97 | avatarSetup: 0 98 | additionalBone: 0 99 | userData: 100 | assetBundleName: 101 | assetBundleVariant: 102 | -------------------------------------------------------------------------------- /Assets/Models/Guy.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0fa25acb839be914a8e320af84d3622e 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: 7 | - first: 8 | type: UnityEngine:Material 9 | assembly: UnityEngine.CoreModule 10 | name: Material.001 11 | second: {fileID: 2100000, guid: d331b27664a46db4e8ff961a4127789a, type: 2} 12 | materials: 13 | materialImportMode: 1 14 | materialName: 0 15 | materialSearch: 1 16 | materialLocation: 1 17 | animations: 18 | legacyGenerateAnimations: 4 19 | bakeSimulation: 0 20 | resampleCurves: 1 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | rigImportErrors: 24 | rigImportWarnings: 25 | animationImportErrors: 26 | animationImportWarnings: 27 | animationRetargetingWarnings: 28 | animationDoRetargetingWarnings: 0 29 | importAnimatedCustomProperties: 0 30 | importConstraints: 0 31 | animationCompression: 1 32 | animationRotationError: 0.5 33 | animationPositionError: 0.5 34 | animationScaleError: 0.5 35 | animationWrapMode: 0 36 | extraExposedTransformPaths: [] 37 | extraUserProperties: [] 38 | clipAnimations: [] 39 | isReadable: 0 40 | meshes: 41 | lODScreenPercentages: [] 42 | globalScale: 50 43 | meshCompression: 0 44 | addColliders: 0 45 | useSRGBMaterialColor: 1 46 | sortHierarchyByName: 1 47 | importVisibility: 1 48 | importBlendShapes: 1 49 | importCameras: 1 50 | importLights: 1 51 | swapUVChannels: 0 52 | generateSecondaryUV: 0 53 | useFileUnits: 1 54 | keepQuads: 0 55 | weldVertices: 1 56 | preserveHierarchy: 0 57 | skinWeightsMode: 0 58 | maxBonesPerVertex: 4 59 | minBoneWeight: 0.001 60 | meshOptimizationFlags: -1 61 | indexFormat: 0 62 | secondaryUVAngleDistortion: 8 63 | secondaryUVAreaDistortion: 15.000001 64 | secondaryUVHardAngle: 88 65 | secondaryUVPackMargin: 4 66 | useFileScale: 1 67 | tangentSpace: 68 | normalSmoothAngle: 60 69 | normalImportMode: 0 70 | tangentImportMode: 3 71 | normalCalculationMode: 4 72 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 73 | blendShapeNormalImportMode: 1 74 | normalSmoothingSource: 0 75 | referencedClips: [] 76 | importAnimation: 1 77 | humanDescription: 78 | serializedVersion: 3 79 | human: [] 80 | skeleton: [] 81 | armTwist: 0.5 82 | foreArmTwist: 0.5 83 | upperLegTwist: 0.5 84 | legTwist: 0.5 85 | armStretch: 0.05 86 | legStretch: 0.05 87 | feetSpacing: 0 88 | globalScale: 0.5 89 | rootMotionBoneName: 90 | hasTranslationDoF: 0 91 | hasExtraRoot: 0 92 | skeletonHasParents: 1 93 | lastHumanDescriptionAvatarSource: {instanceID: 0} 94 | autoGenerateAvatarMappingIfUnspecified: 1 95 | animationType: 2 96 | humanoidOversampling: 1 97 | avatarSetup: 0 98 | additionalBone: 0 99 | userData: 100 | assetBundleName: 101 | assetBundleVariant: 102 | -------------------------------------------------------------------------------- /Assets/Models/Tree.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 46afb75b5cc82854799712c481ba08f3 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: 7 | - first: 8 | type: UnityEngine:Material 9 | assembly: UnityEngine.CoreModule 10 | name: Material.001 11 | second: {fileID: 2100000, guid: 0837ac78aeda77d4e86a83ec65d7f29e, type: 2} 12 | materials: 13 | materialImportMode: 1 14 | materialName: 0 15 | materialSearch: 1 16 | materialLocation: 1 17 | animations: 18 | legacyGenerateAnimations: 4 19 | bakeSimulation: 0 20 | resampleCurves: 1 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | rigImportErrors: 24 | rigImportWarnings: 25 | animationImportErrors: 26 | animationImportWarnings: 27 | animationRetargetingWarnings: 28 | animationDoRetargetingWarnings: 0 29 | importAnimatedCustomProperties: 0 30 | importConstraints: 0 31 | animationCompression: 1 32 | animationRotationError: 0.5 33 | animationPositionError: 0.5 34 | animationScaleError: 0.5 35 | animationWrapMode: 0 36 | extraExposedTransformPaths: [] 37 | extraUserProperties: [] 38 | clipAnimations: [] 39 | isReadable: 0 40 | meshes: 41 | lODScreenPercentages: [] 42 | globalScale: 1 43 | meshCompression: 0 44 | addColliders: 0 45 | useSRGBMaterialColor: 1 46 | sortHierarchyByName: 1 47 | importVisibility: 1 48 | importBlendShapes: 1 49 | importCameras: 1 50 | importLights: 1 51 | swapUVChannels: 0 52 | generateSecondaryUV: 0 53 | useFileUnits: 1 54 | keepQuads: 0 55 | weldVertices: 1 56 | preserveHierarchy: 0 57 | skinWeightsMode: 0 58 | maxBonesPerVertex: 4 59 | minBoneWeight: 0.001 60 | meshOptimizationFlags: -1 61 | indexFormat: 0 62 | secondaryUVAngleDistortion: 8 63 | secondaryUVAreaDistortion: 15.000001 64 | secondaryUVHardAngle: 88 65 | secondaryUVPackMargin: 4 66 | useFileScale: 1 67 | tangentSpace: 68 | normalSmoothAngle: 60 69 | normalImportMode: 0 70 | tangentImportMode: 3 71 | normalCalculationMode: 4 72 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 73 | blendShapeNormalImportMode: 1 74 | normalSmoothingSource: 0 75 | referencedClips: [] 76 | importAnimation: 1 77 | humanDescription: 78 | serializedVersion: 3 79 | human: [] 80 | skeleton: [] 81 | armTwist: 0.5 82 | foreArmTwist: 0.5 83 | upperLegTwist: 0.5 84 | legTwist: 0.5 85 | armStretch: 0.05 86 | legStretch: 0.05 87 | feetSpacing: 0 88 | globalScale: 1 89 | rootMotionBoneName: 90 | hasTranslationDoF: 0 91 | hasExtraRoot: 0 92 | skeletonHasParents: 1 93 | lastHumanDescriptionAvatarSource: {instanceID: 0} 94 | autoGenerateAvatarMappingIfUnspecified: 1 95 | animationType: 2 96 | humanoidOversampling: 1 97 | avatarSetup: 0 98 | additionalBone: 0 99 | userData: 100 | assetBundleName: 101 | assetBundleVariant: 102 | -------------------------------------------------------------------------------- /Assets/Models/Rock/LargeRock.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c5161abd8426ab341a2d7fa9a108fd05 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: 7 | - first: 8 | type: UnityEngine:Material 9 | assembly: UnityEngine.CoreModule 10 | name: Material 11 | second: {fileID: 2100000, guid: e73cc94e45d77d7428f12ad00640cbe2, type: 2} 12 | materials: 13 | materialImportMode: 1 14 | materialName: 0 15 | materialSearch: 1 16 | materialLocation: 1 17 | animations: 18 | legacyGenerateAnimations: 4 19 | bakeSimulation: 0 20 | resampleCurves: 1 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | rigImportErrors: 24 | rigImportWarnings: 25 | animationImportErrors: 26 | animationImportWarnings: 27 | animationRetargetingWarnings: 28 | animationDoRetargetingWarnings: 0 29 | importAnimatedCustomProperties: 0 30 | importConstraints: 0 31 | animationCompression: 1 32 | animationRotationError: 0.5 33 | animationPositionError: 0.5 34 | animationScaleError: 0.5 35 | animationWrapMode: 0 36 | extraExposedTransformPaths: [] 37 | extraUserProperties: [] 38 | clipAnimations: [] 39 | isReadable: 0 40 | meshes: 41 | lODScreenPercentages: [] 42 | globalScale: 1 43 | meshCompression: 0 44 | addColliders: 0 45 | useSRGBMaterialColor: 1 46 | sortHierarchyByName: 1 47 | importVisibility: 1 48 | importBlendShapes: 1 49 | importCameras: 1 50 | importLights: 1 51 | swapUVChannels: 0 52 | generateSecondaryUV: 0 53 | useFileUnits: 1 54 | keepQuads: 0 55 | weldVertices: 1 56 | preserveHierarchy: 0 57 | skinWeightsMode: 0 58 | maxBonesPerVertex: 4 59 | minBoneWeight: 0.001 60 | meshOptimizationFlags: -1 61 | indexFormat: 0 62 | secondaryUVAngleDistortion: 8 63 | secondaryUVAreaDistortion: 15.000001 64 | secondaryUVHardAngle: 88 65 | secondaryUVPackMargin: 4 66 | useFileScale: 1 67 | tangentSpace: 68 | normalSmoothAngle: 60 69 | normalImportMode: 0 70 | tangentImportMode: 3 71 | normalCalculationMode: 4 72 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 73 | blendShapeNormalImportMode: 1 74 | normalSmoothingSource: 0 75 | referencedClips: [] 76 | importAnimation: 1 77 | humanDescription: 78 | serializedVersion: 3 79 | human: [] 80 | skeleton: [] 81 | armTwist: 0.5 82 | foreArmTwist: 0.5 83 | upperLegTwist: 0.5 84 | legTwist: 0.5 85 | armStretch: 0.05 86 | legStretch: 0.05 87 | feetSpacing: 0 88 | globalScale: 1 89 | rootMotionBoneName: 90 | hasTranslationDoF: 0 91 | hasExtraRoot: 0 92 | skeletonHasParents: 1 93 | lastHumanDescriptionAvatarSource: {instanceID: 0} 94 | autoGenerateAvatarMappingIfUnspecified: 1 95 | animationType: 2 96 | humanoidOversampling: 1 97 | avatarSetup: 0 98 | additionalBone: 0 99 | userData: 100 | assetBundleName: 101 | assetBundleVariant: 102 | -------------------------------------------------------------------------------- /Assets/Models/Rock/SmallRock.fbx.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fc0b10c3d3ebc5048b7c87689ab2c179 3 | ModelImporter: 4 | serializedVersion: 19300 5 | internalIDToNameTable: [] 6 | externalObjects: 7 | - first: 8 | type: UnityEngine:Material 9 | assembly: UnityEngine.CoreModule 10 | name: Material 11 | second: {fileID: 2100000, guid: e73cc94e45d77d7428f12ad00640cbe2, type: 2} 12 | materials: 13 | materialImportMode: 1 14 | materialName: 0 15 | materialSearch: 1 16 | materialLocation: 1 17 | animations: 18 | legacyGenerateAnimations: 4 19 | bakeSimulation: 0 20 | resampleCurves: 1 21 | optimizeGameObjects: 0 22 | motionNodeName: 23 | rigImportErrors: 24 | rigImportWarnings: 25 | animationImportErrors: 26 | animationImportWarnings: 27 | animationRetargetingWarnings: 28 | animationDoRetargetingWarnings: 0 29 | importAnimatedCustomProperties: 0 30 | importConstraints: 0 31 | animationCompression: 1 32 | animationRotationError: 0.5 33 | animationPositionError: 0.5 34 | animationScaleError: 0.5 35 | animationWrapMode: 0 36 | extraExposedTransformPaths: [] 37 | extraUserProperties: [] 38 | clipAnimations: [] 39 | isReadable: 0 40 | meshes: 41 | lODScreenPercentages: [] 42 | globalScale: 1 43 | meshCompression: 0 44 | addColliders: 0 45 | useSRGBMaterialColor: 1 46 | sortHierarchyByName: 1 47 | importVisibility: 1 48 | importBlendShapes: 1 49 | importCameras: 1 50 | importLights: 1 51 | swapUVChannels: 0 52 | generateSecondaryUV: 0 53 | useFileUnits: 1 54 | keepQuads: 0 55 | weldVertices: 1 56 | preserveHierarchy: 0 57 | skinWeightsMode: 0 58 | maxBonesPerVertex: 4 59 | minBoneWeight: 0.001 60 | meshOptimizationFlags: -1 61 | indexFormat: 0 62 | secondaryUVAngleDistortion: 8 63 | secondaryUVAreaDistortion: 15.000001 64 | secondaryUVHardAngle: 88 65 | secondaryUVPackMargin: 4 66 | useFileScale: 1 67 | tangentSpace: 68 | normalSmoothAngle: 60 69 | normalImportMode: 0 70 | tangentImportMode: 3 71 | normalCalculationMode: 4 72 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 73 | blendShapeNormalImportMode: 1 74 | normalSmoothingSource: 0 75 | referencedClips: [] 76 | importAnimation: 1 77 | humanDescription: 78 | serializedVersion: 3 79 | human: [] 80 | skeleton: [] 81 | armTwist: 0.5 82 | foreArmTwist: 0.5 83 | upperLegTwist: 0.5 84 | legTwist: 0.5 85 | armStretch: 0.05 86 | legStretch: 0.05 87 | feetSpacing: 0 88 | globalScale: 1 89 | rootMotionBoneName: 90 | hasTranslationDoF: 0 91 | hasExtraRoot: 0 92 | skeletonHasParents: 1 93 | lastHumanDescriptionAvatarSource: {instanceID: 0} 94 | autoGenerateAvatarMappingIfUnspecified: 1 95 | animationType: 2 96 | humanoidOversampling: 1 97 | avatarSetup: 0 98 | additionalBone: 0 99 | userData: 100 | assetBundleName: 101 | assetBundleVariant: 102 | -------------------------------------------------------------------------------- /Assets/Materials/Sky.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-1566195536121376262 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 1 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Sky 24 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} 25 | m_ShaderKeywords: _EMISSION 26 | m_LightmapFlags: 2 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: -1 30 | stringTagMap: {} 31 | disabledShaderPasses: [] 32 | m_SavedProperties: 33 | serializedVersion: 3 34 | m_TexEnvs: 35 | - _BaseMap: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _BumpMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _DetailAlbedoMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _DetailMask: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _DetailNormalMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _EmissionMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | - _MainTex: 60 | m_Texture: {fileID: 0} 61 | m_Scale: {x: 1, y: 1} 62 | m_Offset: {x: 0, y: 0} 63 | - _MetallicGlossMap: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | - _OcclusionMap: 68 | m_Texture: {fileID: 0} 69 | m_Scale: {x: 1, y: 1} 70 | m_Offset: {x: 0, y: 0} 71 | - _ParallaxMap: 72 | m_Texture: {fileID: 0} 73 | m_Scale: {x: 1, y: 1} 74 | m_Offset: {x: 0, y: 0} 75 | - _SpecGlossMap: 76 | m_Texture: {fileID: 0} 77 | m_Scale: {x: 1, y: 1} 78 | m_Offset: {x: 0, y: 0} 79 | m_Floats: 80 | - _AlphaClip: 0 81 | - _Blend: 0 82 | - _BumpScale: 1 83 | - _Cull: 2 84 | - _Cutoff: 0.5 85 | - _DetailNormalMapScale: 1 86 | - _DstBlend: 0 87 | - _EnvironmentReflections: 1 88 | - _GlossMapScale: 1 89 | - _Glossiness: 0 90 | - _GlossyReflections: 1 91 | - _Metallic: 0 92 | - _Mode: 0 93 | - _OcclusionStrength: 1 94 | - _Parallax: 0.02 95 | - _QueueOffset: 0 96 | - _ReceiveShadows: 1 97 | - _Smoothness: 0 98 | - _SmoothnessTextureChannel: 0 99 | - _SpecularHighlights: 1 100 | - _SrcBlend: 1 101 | - _Surface: 0 102 | - _UVSec: 0 103 | - _WorkflowMode: 1 104 | - _ZWrite: 1 105 | m_Colors: 106 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 107 | - _Color: {r: 1, g: 1, b: 1, a: 1} 108 | - _EmissionColor: {r: 0, g: 0.7310055, b: 0.9150943, a: 1} 109 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 110 | -------------------------------------------------------------------------------- /Assets/Materials/Dead.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: Dead 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 0} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailAlbedoMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailMask: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _DetailNormalMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _EmissionMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _MainTex: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _MetallicGlossMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _OcclusionMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | - _ParallaxMap: 60 | m_Texture: {fileID: 0} 61 | m_Scale: {x: 1, y: 1} 62 | m_Offset: {x: 0, y: 0} 63 | - _SpecGlossMap: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | m_Floats: 68 | - _AlphaClip: 0 69 | - _Blend: 0 70 | - _BumpScale: 1 71 | - _Cull: 2 72 | - _Cutoff: 0.5 73 | - _DetailNormalMapScale: 1 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0.3 78 | - _GlossyReflections: 1 79 | - _Metallic: 0 80 | - _Mode: 0 81 | - _OcclusionStrength: 1 82 | - _Parallax: 0.02 83 | - _QueueOffset: 0 84 | - _ReceiveShadows: 1 85 | - _Smoothness: 0.3 86 | - _SmoothnessTextureChannel: 0 87 | - _SpecularHighlights: 1 88 | - _SrcBlend: 1 89 | - _Surface: 0 90 | - _UVSec: 0 91 | - _WorkflowMode: 1 92 | - _ZWrite: 1 93 | m_Colors: 94 | - _BaseColor: {r: 0, g: 0, b: 0, a: 1} 95 | - _Color: {r: 0, g: 0, b: 0, a: 1} 96 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 97 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 98 | --- !u!114 &44109358994275403 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 11 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 108 | m_Name: 109 | m_EditorClassIdentifier: 110 | version: 1 111 | -------------------------------------------------------------------------------- /Assets/Materials/Healthy.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: Healthy 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 0} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailAlbedoMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailMask: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _DetailNormalMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _EmissionMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _MainTex: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _MetallicGlossMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _OcclusionMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | - _ParallaxMap: 60 | m_Texture: {fileID: 0} 61 | m_Scale: {x: 1, y: 1} 62 | m_Offset: {x: 0, y: 0} 63 | - _SpecGlossMap: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | m_Floats: 68 | - _AlphaClip: 0 69 | - _Blend: 0 70 | - _BumpScale: 1 71 | - _Cull: 2 72 | - _Cutoff: 0.5 73 | - _DetailNormalMapScale: 1 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0 78 | - _GlossyReflections: 1 79 | - _Metallic: 0 80 | - _Mode: 0 81 | - _OcclusionStrength: 1 82 | - _Parallax: 0.02 83 | - _QueueOffset: 0 84 | - _ReceiveShadows: 1 85 | - _Smoothness: 0 86 | - _SmoothnessTextureChannel: 0 87 | - _SpecularHighlights: 1 88 | - _SrcBlend: 1 89 | - _Surface: 0 90 | - _UVSec: 0 91 | - _WorkflowMode: 1 92 | - _ZWrite: 1 93 | m_Colors: 94 | - _BaseColor: {r: 0, g: 1, b: 0.06607723, a: 1} 95 | - _Color: {r: 0, g: 1, b: 0.06607723, a: 1} 96 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 97 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 98 | --- !u!114 &7462612801937173197 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 11 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 108 | m_Name: 109 | m_EditorClassIdentifier: 110 | version: 1 111 | -------------------------------------------------------------------------------- /Assets/Materials/Infected.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: Infected 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 0} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailAlbedoMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailMask: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _DetailNormalMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _EmissionMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _MainTex: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _MetallicGlossMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _OcclusionMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | - _ParallaxMap: 60 | m_Texture: {fileID: 0} 61 | m_Scale: {x: 1, y: 1} 62 | m_Offset: {x: 0, y: 0} 63 | - _SpecGlossMap: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | m_Floats: 68 | - _AlphaClip: 0 69 | - _Blend: 0 70 | - _BumpScale: 1 71 | - _Cull: 2 72 | - _Cutoff: 0.5 73 | - _DetailNormalMapScale: 1 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0 78 | - _GlossyReflections: 1 79 | - _Metallic: 0 80 | - _Mode: 0 81 | - _OcclusionStrength: 1 82 | - _Parallax: 0.02 83 | - _QueueOffset: 0 84 | - _ReceiveShadows: 1 85 | - _Smoothness: 0 86 | - _SmoothnessTextureChannel: 0 87 | - _SpecularHighlights: 1 88 | - _SrcBlend: 1 89 | - _Surface: 0 90 | - _UVSec: 0 91 | - _WorkflowMode: 1 92 | - _ZWrite: 1 93 | m_Colors: 94 | - _BaseColor: {r: 1, g: 0.17174733, b: 0, a: 1} 95 | - _Color: {r: 1, g: 0.17174733, b: 0, a: 1} 96 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 97 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 98 | --- !u!114 &8526134576315534181 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 11 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 108 | m_Name: 109 | m_EditorClassIdentifier: 110 | version: 1 111 | -------------------------------------------------------------------------------- /Assets/Materials/CoughParticles.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-7865076732886205730 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 1 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: CoughParticles 24 | m_Shader: {fileID: 4800000, guid: 0406db5a14f94604a8c57ccfbc9f3b46, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 3050 30 | stringTagMap: 31 | RenderType: Transparent 32 | disabledShaderPasses: 33 | - SHADOWCASTER 34 | m_SavedProperties: 35 | serializedVersion: 3 36 | m_TexEnvs: 37 | - _BaseMap: 38 | m_Texture: {fileID: 2800000, guid: 62520c11124c56342875a35deaf37d99, type: 3} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _BumpMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _EmissionMap: 46 | m_Texture: {fileID: 0} 47 | m_Scale: {x: 1, y: 1} 48 | m_Offset: {x: 0, y: 0} 49 | - _MainTex: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _MetallicGlossMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _OcclusionMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | - _SpecGlossMap: 62 | m_Texture: {fileID: 0} 63 | m_Scale: {x: 1, y: 1} 64 | m_Offset: {x: 0, y: 0} 65 | m_Floats: 66 | - _AlphaClip: 0 67 | - _Blend: 0 68 | - _BlendOp: 0 69 | - _BumpScale: 1 70 | - _CameraFadingEnabled: 0 71 | - _CameraFarFadeDistance: 2 72 | - _CameraNearFadeDistance: 1 73 | - _ColorMode: 0 74 | - _Cull: 2 75 | - _Cutoff: 0.5 76 | - _DistortionBlend: 0.5 77 | - _DistortionEnabled: 0 78 | - _DistortionStrength: 1 79 | - _DistortionStrengthScaled: 0.1 80 | - _DstBlend: 10 81 | - _EnvironmentReflections: 1 82 | - _FlipbookBlending: 0 83 | - _FlipbookMode: 0 84 | - _GlossMapScale: 0 85 | - _Glossiness: 0 86 | - _GlossyReflections: 0 87 | - _Metallic: 0 88 | - _Mode: 0 89 | - _OcclusionStrength: 1 90 | - _QueueOffset: 0 91 | - _ReceiveShadows: 1 92 | - _Smoothness: 0.5 93 | - _SmoothnessTextureChannel: 0 94 | - _SoftParticlesEnabled: 0 95 | - _SoftParticlesFarFadeDistance: 1 96 | - _SoftParticlesNearFadeDistance: 0 97 | - _SpecularHighlights: 1 98 | - _SrcBlend: 5 99 | - _Surface: 1 100 | - _WorkflowMode: 1 101 | - _ZWrite: 0 102 | m_Colors: 103 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 104 | - _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0} 105 | - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} 106 | - _Color: {r: 1, g: 1, b: 1, a: 1} 107 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 108 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 109 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 110 | -------------------------------------------------------------------------------- /Assets/Materials/Checkpoint.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: Checkpoint 11 | m_Shader: {fileID: 4800000, guid: 0406db5a14f94604a8c57ccfbc9f3b46, type: 3} 12 | m_ShaderKeywords: _EMISSION 13 | m_LightmapFlags: 2 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 3050 17 | stringTagMap: 18 | RenderType: Transparent 19 | disabledShaderPasses: 20 | - SHADOWCASTER 21 | m_SavedProperties: 22 | serializedVersion: 3 23 | m_TexEnvs: 24 | - _BaseMap: 25 | m_Texture: {fileID: 2800000, guid: 62520c11124c56342875a35deaf37d99, type: 3} 26 | m_Scale: {x: 1, y: 1} 27 | m_Offset: {x: 0, y: 0} 28 | - _BumpMap: 29 | m_Texture: {fileID: 0} 30 | m_Scale: {x: 1, y: 1} 31 | m_Offset: {x: 0, y: 0} 32 | - _EmissionMap: 33 | m_Texture: {fileID: 0} 34 | m_Scale: {x: 1, y: 1} 35 | m_Offset: {x: 0, y: 0} 36 | - _MainTex: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _MetallicGlossMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _OcclusionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _SpecGlossMap: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | m_Floats: 53 | - _AlphaClip: 0 54 | - _Blend: 0 55 | - _BlendOp: 0 56 | - _BumpScale: 1 57 | - _CameraFadingEnabled: 0 58 | - _CameraFarFadeDistance: 2 59 | - _CameraNearFadeDistance: 1 60 | - _ColorMode: 0 61 | - _Cull: 2 62 | - _Cutoff: 0.5 63 | - _DistortionBlend: 0.5 64 | - _DistortionEnabled: 0 65 | - _DistortionStrength: 1 66 | - _DistortionStrengthScaled: 0.1 67 | - _DstBlend: 10 68 | - _EnvironmentReflections: 1 69 | - _FlipbookBlending: 0 70 | - _FlipbookMode: 0 71 | - _GlossMapScale: 0 72 | - _Glossiness: 0 73 | - _GlossyReflections: 0 74 | - _Metallic: 0 75 | - _Mode: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0 80 | - _SmoothnessTextureChannel: 0 81 | - _SoftParticlesEnabled: 0 82 | - _SoftParticlesFarFadeDistance: 1 83 | - _SoftParticlesNearFadeDistance: 0 84 | - _SpecularHighlights: 1 85 | - _SrcBlend: 5 86 | - _Surface: 1 87 | - _WorkflowMode: 1 88 | - _ZWrite: 0 89 | m_Colors: 90 | - _BaseColor: {r: 0, g: 1, b: 1, a: 1} 91 | - _BaseColorAddSubDiff: {r: 1, g: 0, b: 0, a: 0} 92 | - _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0} 93 | - _Color: {r: 1, g: 1, b: 1, a: 1} 94 | - _EmissionColor: {r: 0, g: 7.3772106, b: 7.3772106, a: 1} 95 | - _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0} 96 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 97 | --- !u!114 &6289856147021149285 98 | MonoBehaviour: 99 | m_ObjectHideFlags: 11 100 | m_CorrespondingSourceObject: {fileID: 0} 101 | m_PrefabInstance: {fileID: 0} 102 | m_PrefabAsset: {fileID: 0} 103 | m_GameObject: {fileID: 0} 104 | m_Enabled: 1 105 | m_EditorHideFlags: 0 106 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 107 | m_Name: 108 | m_EditorClassIdentifier: 109 | version: 1 110 | -------------------------------------------------------------------------------- /Assets/Materials/People/BlueGuy.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: BlueGuy 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: _EMISSION 13 | m_LightmapFlags: 2 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 2800000, guid: ca7ed968f9a35d54cb07566d39c141d1, type: 3} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailAlbedoMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailMask: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _DetailNormalMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _EmissionMap: 44 | m_Texture: {fileID: 2800000, guid: ca7ed968f9a35d54cb07566d39c141d1, type: 3} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _MainTex: 48 | m_Texture: {fileID: 2800000, guid: ca7ed968f9a35d54cb07566d39c141d1, type: 3} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _MetallicGlossMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _OcclusionMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | - _ParallaxMap: 60 | m_Texture: {fileID: 0} 61 | m_Scale: {x: 1, y: 1} 62 | m_Offset: {x: 0, y: 0} 63 | - _SpecGlossMap: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | m_Floats: 68 | - _AlphaClip: 0 69 | - _Blend: 0 70 | - _BumpScale: 1 71 | - _Cull: 2 72 | - _Cutoff: 0.5 73 | - _DetailNormalMapScale: 1 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0 78 | - _GlossyReflections: 1 79 | - _Metallic: 0 80 | - _Mode: 0 81 | - _OcclusionStrength: 1 82 | - _Parallax: 0.02 83 | - _QueueOffset: 0 84 | - _ReceiveShadows: 1 85 | - _Smoothness: 0 86 | - _SmoothnessTextureChannel: 0 87 | - _SpecularHighlights: 1 88 | - _SrcBlend: 1 89 | - _Surface: 0 90 | - _UVSec: 0 91 | - _WorkflowMode: 1 92 | - _ZWrite: 1 93 | m_Colors: 94 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 95 | - _Color: {r: 1, g: 1, b: 1, a: 1} 96 | - _EmissionColor: {r: 0.5188679, g: 0.5188679, b: 0.5188679, a: 1} 97 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 98 | --- !u!114 &5492526774487149938 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 11 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 108 | m_Name: 109 | m_EditorClassIdentifier: 110 | version: 1 111 | -------------------------------------------------------------------------------- /Assets/Materials/People/GreenGuy.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: GreenGuy 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: _EMISSION 13 | m_LightmapFlags: 2 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 2800000, guid: 5817d667b6a6f8c46815998aad455014, type: 3} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailAlbedoMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailMask: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _DetailNormalMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _EmissionMap: 44 | m_Texture: {fileID: 2800000, guid: 5817d667b6a6f8c46815998aad455014, type: 3} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _MainTex: 48 | m_Texture: {fileID: 2800000, guid: 5817d667b6a6f8c46815998aad455014, type: 3} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _MetallicGlossMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _OcclusionMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | - _ParallaxMap: 60 | m_Texture: {fileID: 0} 61 | m_Scale: {x: 1, y: 1} 62 | m_Offset: {x: 0, y: 0} 63 | - _SpecGlossMap: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | m_Floats: 68 | - _AlphaClip: 0 69 | - _Blend: 0 70 | - _BumpScale: 1 71 | - _Cull: 2 72 | - _Cutoff: 0.5 73 | - _DetailNormalMapScale: 1 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0 78 | - _GlossyReflections: 1 79 | - _Metallic: 0 80 | - _Mode: 0 81 | - _OcclusionStrength: 1 82 | - _Parallax: 0.02 83 | - _QueueOffset: 0 84 | - _ReceiveShadows: 1 85 | - _Smoothness: 0 86 | - _SmoothnessTextureChannel: 0 87 | - _SpecularHighlights: 1 88 | - _SrcBlend: 1 89 | - _Surface: 0 90 | - _UVSec: 0 91 | - _WorkflowMode: 1 92 | - _ZWrite: 1 93 | m_Colors: 94 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 95 | - _Color: {r: 1, g: 1, b: 1, a: 1} 96 | - _EmissionColor: {r: 0.5176471, g: 0.5176471, b: 0.5176471, a: 1} 97 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 98 | --- !u!114 &3951545516068187313 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 11 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 108 | m_Name: 109 | m_EditorClassIdentifier: 110 | version: 1 111 | -------------------------------------------------------------------------------- /Assets/Materials/People/GuyInfected.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: GuyInfected 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: _EMISSION 13 | m_LightmapFlags: 2 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 2800000, guid: 9e9984920f6139c438abdbde8ce293f7, type: 3} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _DetailAlbedoMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _DetailMask: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _DetailNormalMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _EmissionMap: 44 | m_Texture: {fileID: 2800000, guid: 9e9984920f6139c438abdbde8ce293f7, type: 3} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _MainTex: 48 | m_Texture: {fileID: 2800000, guid: 9e9984920f6139c438abdbde8ce293f7, type: 3} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | - _MetallicGlossMap: 52 | m_Texture: {fileID: 0} 53 | m_Scale: {x: 1, y: 1} 54 | m_Offset: {x: 0, y: 0} 55 | - _OcclusionMap: 56 | m_Texture: {fileID: 0} 57 | m_Scale: {x: 1, y: 1} 58 | m_Offset: {x: 0, y: 0} 59 | - _ParallaxMap: 60 | m_Texture: {fileID: 0} 61 | m_Scale: {x: 1, y: 1} 62 | m_Offset: {x: 0, y: 0} 63 | - _SpecGlossMap: 64 | m_Texture: {fileID: 0} 65 | m_Scale: {x: 1, y: 1} 66 | m_Offset: {x: 0, y: 0} 67 | m_Floats: 68 | - _AlphaClip: 0 69 | - _Blend: 0 70 | - _BumpScale: 1 71 | - _Cull: 2 72 | - _Cutoff: 0.5 73 | - _DetailNormalMapScale: 1 74 | - _DstBlend: 0 75 | - _EnvironmentReflections: 1 76 | - _GlossMapScale: 1 77 | - _Glossiness: 0 78 | - _GlossyReflections: 1 79 | - _Metallic: 0 80 | - _Mode: 0 81 | - _OcclusionStrength: 1 82 | - _Parallax: 0.02 83 | - _QueueOffset: 0 84 | - _ReceiveShadows: 1 85 | - _Smoothness: 0 86 | - _SmoothnessTextureChannel: 0 87 | - _SpecularHighlights: 1 88 | - _SrcBlend: 1 89 | - _Surface: 0 90 | - _UVSec: 0 91 | - _WorkflowMode: 1 92 | - _ZWrite: 1 93 | m_Colors: 94 | - _BaseColor: {r: 1, g: 1, b: 1, a: 1} 95 | - _Color: {r: 1, g: 1, b: 1, a: 1} 96 | - _EmissionColor: {r: 0.5176471, g: 0.5176471, b: 0.5176471, a: 1} 97 | - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} 98 | --- !u!114 &5773228313016790511 99 | MonoBehaviour: 100 | m_ObjectHideFlags: 11 101 | m_CorrespondingSourceObject: {fileID: 0} 102 | m_PrefabInstance: {fileID: 0} 103 | m_PrefabAsset: {fileID: 0} 104 | m_GameObject: {fileID: 0} 105 | m_Enabled: 1 106 | m_EditorHideFlags: 0 107 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 108 | m_Name: 109 | m_EditorClassIdentifier: 110 | version: 1 111 | -------------------------------------------------------------------------------- /Assets/Materials/Textures/circle.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 62520c11124c56342875a35deaf37d99 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | grayScaleToAlpha: 0 27 | generateCubemap: 6 28 | cubemapConvolution: 0 29 | seamlessCubemap: 0 30 | textureFormat: 1 31 | maxTextureSize: 2048 32 | textureSettings: 33 | serializedVersion: 2 34 | filterMode: -1 35 | aniso: -1 36 | mipBias: -100 37 | wrapU: -1 38 | wrapV: -1 39 | wrapW: -1 40 | nPOTScale: 0 41 | lightmap: 0 42 | compressionQuality: 50 43 | spriteMode: 1 44 | spriteExtrude: 1 45 | spriteMeshType: 1 46 | alignment: 0 47 | spritePivot: {x: 0.5, y: 0.5} 48 | spritePixelsToUnits: 100 49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 50 | spriteGenerateFallbackPhysicsShape: 1 51 | alphaUsage: 1 52 | alphaIsTransparency: 0 53 | spriteTessellationDetail: -1 54 | textureType: 0 55 | textureShape: 1 56 | singleChannelComponent: 0 57 | maxTextureSizeSet: 0 58 | compressionQualitySet: 0 59 | textureFormatSet: 0 60 | applyGammaDecoding: 0 61 | platformSettings: 62 | - serializedVersion: 3 63 | buildTarget: DefaultTexturePlatform 64 | maxTextureSize: 2048 65 | resizeAlgorithm: 0 66 | textureFormat: -1 67 | textureCompression: 1 68 | compressionQuality: 50 69 | crunchedCompression: 0 70 | allowsAlphaSplitting: 0 71 | overridden: 0 72 | androidETC2FallbackOverride: 0 73 | forceMaximumCompressionQuality_BC6H_BC7: 0 74 | - serializedVersion: 3 75 | buildTarget: Standalone 76 | maxTextureSize: 2048 77 | resizeAlgorithm: 0 78 | textureFormat: -1 79 | textureCompression: 1 80 | compressionQuality: 50 81 | crunchedCompression: 0 82 | allowsAlphaSplitting: 0 83 | overridden: 0 84 | androidETC2FallbackOverride: 0 85 | forceMaximumCompressionQuality_BC6H_BC7: 0 86 | - serializedVersion: 3 87 | buildTarget: iPhone 88 | maxTextureSize: 2048 89 | resizeAlgorithm: 0 90 | textureFormat: -1 91 | textureCompression: 1 92 | compressionQuality: 50 93 | crunchedCompression: 0 94 | allowsAlphaSplitting: 0 95 | overridden: 0 96 | androidETC2FallbackOverride: 0 97 | forceMaximumCompressionQuality_BC6H_BC7: 0 98 | - serializedVersion: 3 99 | buildTarget: Android 100 | maxTextureSize: 2048 101 | resizeAlgorithm: 0 102 | textureFormat: -1 103 | textureCompression: 1 104 | compressionQuality: 50 105 | crunchedCompression: 0 106 | allowsAlphaSplitting: 0 107 | overridden: 0 108 | androidETC2FallbackOverride: 0 109 | forceMaximumCompressionQuality_BC6H_BC7: 0 110 | spriteSheet: 111 | serializedVersion: 2 112 | sprites: [] 113 | outline: [] 114 | physicsShape: [] 115 | bones: [] 116 | spriteID: 5e97eb03825dee720800000000000000 117 | internalID: 0 118 | vertices: [] 119 | indices: 120 | edges: [] 121 | weights: [] 122 | secondaryTextures: [] 123 | spritePackingTag: 124 | pSDRemoveMatte: 0 125 | pSDShowRemoveMatteOption: 0 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Scripts/FlyCamera.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | public class FlyCamera : MonoBehaviour { 5 | 6 | /* 7 | Writen by Windexglow 11-13-10. Use it, edit it, steal it I don't care. 8 | Converted to C# 27-02-13 - no credit wanted. 9 | Simple flycam I made, since I couldn't find any others made public. 10 | Made simple to use (drag and drop, done) for regular keyboard layout 11 | wasd : basic movement 12 | shift : Makes camera accelerate 13 | space : Moves camera on X and Z axis only. So camera doesn't gain any height*/ 14 | 15 | 16 | public float mainSpeed = 100.0f; //regular speed 17 | public float shiftAdd = 250.0f; //multiplied by how long shift is held. Basically running 18 | public float maxShift = 1000.0f; //Maximum speed when holdin gshift 19 | public float camSens = 0.25f; //How sensitive it with mouse 20 | private Vector3 lastMouse = new Vector3(255, 255, 255); //kind of in the middle of the screen, rather than at the top (play) 21 | private float totalRun= 1.0f; 22 | private Camera cam; 23 | private Transform focusedEntity; 24 | private Vector3 focusedEntityOffset; 25 | 26 | void Start() { 27 | Cursor.visible = false; 28 | cam = GetComponent(); 29 | } 30 | 31 | void Update () { 32 | if (focusedEntity != null) { 33 | transform.position = focusedEntity.transform.position - focusedEntityOffset; 34 | } 35 | 36 | lastMouse = Input.mousePosition - lastMouse ; 37 | lastMouse = new Vector3(-lastMouse.y * camSens, lastMouse.x * camSens, 0 ); 38 | lastMouse = new Vector3(transform.eulerAngles.x + lastMouse.x , transform.eulerAngles.y + lastMouse.y, 0); 39 | transform.eulerAngles = lastMouse; 40 | lastMouse = Input.mousePosition; 41 | //Mouse camera angle done. 42 | 43 | //Keyboard commands 44 | Vector3 p = GetBaseInput(); 45 | if (Input.GetKey (KeyCode.LeftShift)){ 46 | totalRun += Time.deltaTime; 47 | p = p * totalRun * shiftAdd; 48 | p.x = Mathf.Clamp(p.x, -maxShift, maxShift); 49 | p.y = Mathf.Clamp(p.y, -maxShift, maxShift); 50 | p.z = Mathf.Clamp(p.z, -maxShift, maxShift); 51 | } 52 | else{ 53 | totalRun = Mathf.Clamp(totalRun * 0.5f, 1f, 1000f); 54 | p = p * mainSpeed; 55 | } 56 | 57 | p = p * Time.deltaTime / Time.timeScale; 58 | Vector3 newPosition = transform.position; 59 | if (Input.GetKey(KeyCode.Space)){ //If player wants to move on X and Z axis only 60 | transform.Translate(p); 61 | newPosition.x = transform.position.x; 62 | newPosition.z = transform.position.z; 63 | 64 | transform.position = newPosition; 65 | } 66 | else{ 67 | if (focusedEntity == null) transform.Translate(p); 68 | else focusedEntityOffset += p; 69 | } 70 | 71 | if (Input.GetMouseButtonDown(0)) { 72 | if (Physics.Raycast(cam.ScreenPointToRay(Input.mousePosition), out RaycastHit hit)) { 73 | if (hit.collider.CompareTag("Entity")) { 74 | focusedEntity = hit.collider.transform; 75 | focusedEntityOffset = hit.collider.transform.position - transform.position; 76 | } 77 | } 78 | } else if (Input.GetMouseButtonDown(1)) { 79 | focusedEntity = null; 80 | } 81 | 82 | } 83 | 84 | private Vector3 GetBaseInput() { //returns the basic values, if it's 0 than it's not active. 85 | Vector3 p_Velocity = new Vector3(); 86 | if (Input.GetKey (KeyCode.W)){ 87 | p_Velocity += new Vector3(0, 0 , 1); 88 | } 89 | if (Input.GetKey (KeyCode.S)){ 90 | p_Velocity += new Vector3(0, 0, -1); 91 | } 92 | if (Input.GetKey (KeyCode.A)){ 93 | p_Velocity += new Vector3(-1, 0, 0); 94 | } 95 | if (Input.GetKey (KeyCode.D)){ 96 | p_Velocity += new Vector3(1, 0, 0); 97 | } 98 | return p_Velocity; 99 | } 100 | } -------------------------------------------------------------------------------- /Assets/Scripts/InfectionManager.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Text; 5 | using UnityEngine; 6 | using UnityEngine.UI; 7 | 8 | public class InfectionManager : MonoBehaviour 9 | { 10 | public Text txtPopulationInfo; 11 | public Text txtAverageTraits; 12 | public Slider averageHealth; 13 | public Slider averageEnergy; 14 | 15 | const string AVG_DISEASE_TRAITS_FILENAME = "CSV_DATA\\AverageTraitMultipliers.csv"; 16 | const string INFECTION_SUMMARY_FILENAME = "CSV_DATA\\InfectionSummary.csv"; 17 | const string ENTITY_STATES_FILENAME = "CSV_DATA\\EntityStates.csv"; 18 | 19 | private int initialEntityCount; 20 | 21 | void Start() 22 | { 23 | InvokeRepeating("CollectAndSaveData", 1F, 5F); 24 | 25 | File.WriteAllText(AVG_DISEASE_TRAITS_FILENAME, string.Join(";", Entity.TRAIT_KEYS)+"\r\n"); 26 | File.WriteAllText(INFECTION_SUMMARY_FILENAME, "healthy;infected;dead;#dominant_virus\r\n"); 27 | File.WriteAllText(ENTITY_STATES_FILENAME, "at_home;at_hospital;wandering;chasing;going_home;going_to_hospital\r\n"); 28 | 29 | int totalInhabitants = 0; 30 | foreach(GameObject house in GameObject.FindGameObjectsWithTag("HouseEntry")) { 31 | totalInhabitants += house.GetComponent().inhabitantCount; 32 | } 33 | initialEntityCount = GameObject.FindGameObjectsWithTag("Entity").Length; 34 | } 35 | 36 | void Update() { 37 | if (Input.GetKeyDown(KeyCode.Space)) { 38 | if (Time.timeScale == 1) { 39 | Time.timeScale = Input.GetKey(KeyCode.LeftShift) ? 16 : 8; 40 | } else { 41 | Time.timeScale = 1; 42 | } 43 | } 44 | } 45 | 46 | void CollectAndSaveData() 47 | { 48 | System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("EN-US"); 49 | 50 | int infections = 0; 51 | int healthyCount = 0; 52 | float healthSum = 0; 53 | float energySum = 0; 54 | Dictionary entitiesPerVirusGeneration = new Dictionary(); 55 | Dictionary traitMultiplierSums = new Dictionary(); 56 | Dictionary entityStateSummary = new Dictionary(); 57 | 58 | foreach (string traitName in Entity.TRAIT_KEYS) { 59 | traitMultiplierSums.Add(traitName, 0); 60 | } 61 | 62 | int aliveEntities = 0; 63 | foreach (GameObject entityObj in GameObject.FindGameObjectsWithTag("Entity")) { 64 | Entity entity = entityObj.GetComponent(); 65 | Virus infection = entity.Infection; 66 | 67 | EntityState state = entity.CurrentState; 68 | if (entityStateSummary.ContainsKey(state)) 69 | entityStateSummary[state]++; 70 | else 71 | entityStateSummary.Add(state, 1); 72 | 73 | if (entity.Health > 0) { 74 | aliveEntities++; 75 | healthSum += entity.Health; 76 | energySum += entity.Energy; 77 | 78 | if (infection != null) { 79 | infections++; 80 | 81 | if (entitiesPerVirusGeneration.ContainsKey(infection.ToString())) { 82 | entitiesPerVirusGeneration[infection.ToString()]++; 83 | } else { 84 | entitiesPerVirusGeneration[infection.ToString()] = 1; 85 | } 86 | 87 | foreach (string traitName in Entity.TRAIT_KEYS) { 88 | traitMultiplierSums[traitName] += infection.HostTraitMultipliers[traitName]; 89 | } 90 | } else { 91 | healthyCount++; 92 | } 93 | } 94 | 95 | } 96 | 97 | int deaths = initialEntityCount - aliveEntities; 98 | 99 | float[] traitMultiplierAverages = new float[traitMultiplierSums.Count]; 100 | StringBuilder sb = new StringBuilder(); 101 | 102 | int i = 0; 103 | foreach (string key in traitMultiplierSums.Keys) { 104 | traitMultiplierAverages[i] = traitMultiplierSums[key] / infections; 105 | if (i > 0) sb.Append("\n"); 106 | sb.Append(key+"="+traitMultiplierAverages[i]); 107 | i++; 108 | } 109 | 110 | string dominantVirusGeneration = null; 111 | foreach (string virusGeneration in entitiesPerVirusGeneration.Keys) { 112 | if (dominantVirusGeneration == null || entitiesPerVirusGeneration[virusGeneration] > entitiesPerVirusGeneration[dominantVirusGeneration]) { 113 | dominantVirusGeneration = virusGeneration; 114 | } 115 | } 116 | 117 | txtPopulationInfo.text = "Healthy: "+healthyCount+"\nInfected: "+infections+"\nDead: "+deaths+"\n\nDominant virus: "+dominantVirusGeneration; 118 | txtAverageTraits.text = sb.ToString(); 119 | 120 | averageHealth.value = healthSum / aliveEntities / 100; 121 | averageEnergy.value = energySum / aliveEntities / 100; 122 | 123 | using (StreamWriter sw = File.AppendText(AVG_DISEASE_TRAITS_FILENAME)) { 124 | sw.WriteLine(string.Join(";", traitMultiplierAverages)); 125 | } 126 | 127 | using (StreamWriter sw = File.AppendText(INFECTION_SUMMARY_FILENAME)) { 128 | sw.WriteLine(healthyCount+";"+infections+";"+deaths+";"+dominantVirusGeneration); 129 | } 130 | 131 | foreach (EntityState entityState in System.Enum.GetValues(typeof(EntityState))) { 132 | if (!entityStateSummary.ContainsKey(entityState)) 133 | entityStateSummary.Add(entityState, 0); 134 | } 135 | 136 | using (StreamWriter sw = File.AppendText(ENTITY_STATES_FILENAME)) { 137 | sw.WriteLine(entityStateSummary[EntityState.At_Home]+";"+entityStateSummary[EntityState.At_Hospital]+";"+entityStateSummary[EntityState.Wandering]+";"+entityStateSummary[EntityState.Chasing]+";"+entityStateSummary[EntityState.Going_Home]+";"+entityStateSummary[EntityState.Going_To_Hospital]); 138 | } 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /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 | skinWeights: 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 | customRenderPipeline: {fileID: 0} 44 | excludedTargetPlatforms: [] 45 | - serializedVersion: 2 46 | name: Low 47 | pixelLightCount: 0 48 | shadows: 0 49 | shadowResolution: 0 50 | shadowProjection: 1 51 | shadowCascades: 1 52 | shadowDistance: 20 53 | shadowNearPlaneOffset: 3 54 | shadowCascade2Split: 0.33333334 55 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 56 | shadowmaskMode: 0 57 | skinWeights: 2 58 | textureQuality: 0 59 | anisotropicTextures: 0 60 | antiAliasing: 0 61 | softParticles: 0 62 | softVegetation: 0 63 | realtimeReflectionProbes: 0 64 | billboardsFaceCameraPosition: 0 65 | vSyncCount: 0 66 | lodBias: 0.4 67 | maximumLODLevel: 0 68 | streamingMipmapsActive: 0 69 | streamingMipmapsAddAllCameras: 1 70 | streamingMipmapsMemoryBudget: 512 71 | streamingMipmapsRenderersPerFrame: 512 72 | streamingMipmapsMaxLevelReduction: 2 73 | streamingMipmapsMaxFileIORequests: 1024 74 | particleRaycastBudget: 16 75 | asyncUploadTimeSlice: 2 76 | asyncUploadBufferSize: 16 77 | asyncUploadPersistentBuffer: 1 78 | resolutionScalingFixedDPIFactor: 1 79 | customRenderPipeline: {fileID: 0} 80 | excludedTargetPlatforms: [] 81 | - serializedVersion: 2 82 | name: Medium 83 | pixelLightCount: 1 84 | shadows: 1 85 | shadowResolution: 0 86 | shadowProjection: 1 87 | shadowCascades: 1 88 | shadowDistance: 20 89 | shadowNearPlaneOffset: 3 90 | shadowCascade2Split: 0.33333334 91 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 92 | shadowmaskMode: 0 93 | skinWeights: 2 94 | textureQuality: 0 95 | anisotropicTextures: 1 96 | antiAliasing: 0 97 | softParticles: 0 98 | softVegetation: 0 99 | realtimeReflectionProbes: 0 100 | billboardsFaceCameraPosition: 0 101 | vSyncCount: 1 102 | lodBias: 0.7 103 | maximumLODLevel: 0 104 | streamingMipmapsActive: 0 105 | streamingMipmapsAddAllCameras: 1 106 | streamingMipmapsMemoryBudget: 512 107 | streamingMipmapsRenderersPerFrame: 512 108 | streamingMipmapsMaxLevelReduction: 2 109 | streamingMipmapsMaxFileIORequests: 1024 110 | particleRaycastBudget: 64 111 | asyncUploadTimeSlice: 2 112 | asyncUploadBufferSize: 16 113 | asyncUploadPersistentBuffer: 1 114 | resolutionScalingFixedDPIFactor: 1 115 | customRenderPipeline: {fileID: 0} 116 | excludedTargetPlatforms: [] 117 | - serializedVersion: 2 118 | name: High 119 | pixelLightCount: 2 120 | shadows: 2 121 | shadowResolution: 1 122 | shadowProjection: 1 123 | shadowCascades: 2 124 | shadowDistance: 40 125 | shadowNearPlaneOffset: 3 126 | shadowCascade2Split: 0.33333334 127 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 128 | shadowmaskMode: 1 129 | skinWeights: 2 130 | textureQuality: 0 131 | anisotropicTextures: 1 132 | antiAliasing: 0 133 | softParticles: 0 134 | softVegetation: 1 135 | realtimeReflectionProbes: 1 136 | billboardsFaceCameraPosition: 1 137 | vSyncCount: 1 138 | lodBias: 1 139 | maximumLODLevel: 0 140 | streamingMipmapsActive: 0 141 | streamingMipmapsAddAllCameras: 1 142 | streamingMipmapsMemoryBudget: 512 143 | streamingMipmapsRenderersPerFrame: 512 144 | streamingMipmapsMaxLevelReduction: 2 145 | streamingMipmapsMaxFileIORequests: 1024 146 | particleRaycastBudget: 256 147 | asyncUploadTimeSlice: 2 148 | asyncUploadBufferSize: 16 149 | asyncUploadPersistentBuffer: 1 150 | resolutionScalingFixedDPIFactor: 1 151 | customRenderPipeline: {fileID: 0} 152 | excludedTargetPlatforms: [] 153 | - serializedVersion: 2 154 | name: Very High 155 | pixelLightCount: 3 156 | shadows: 2 157 | shadowResolution: 2 158 | shadowProjection: 1 159 | shadowCascades: 2 160 | shadowDistance: 70 161 | shadowNearPlaneOffset: 3 162 | shadowCascade2Split: 0.33333334 163 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 164 | shadowmaskMode: 1 165 | skinWeights: 4 166 | textureQuality: 0 167 | anisotropicTextures: 2 168 | antiAliasing: 2 169 | softParticles: 1 170 | softVegetation: 1 171 | realtimeReflectionProbes: 1 172 | billboardsFaceCameraPosition: 1 173 | vSyncCount: 1 174 | lodBias: 1.5 175 | maximumLODLevel: 0 176 | streamingMipmapsActive: 0 177 | streamingMipmapsAddAllCameras: 1 178 | streamingMipmapsMemoryBudget: 512 179 | streamingMipmapsRenderersPerFrame: 512 180 | streamingMipmapsMaxLevelReduction: 2 181 | streamingMipmapsMaxFileIORequests: 1024 182 | particleRaycastBudget: 1024 183 | asyncUploadTimeSlice: 2 184 | asyncUploadBufferSize: 16 185 | asyncUploadPersistentBuffer: 1 186 | resolutionScalingFixedDPIFactor: 1 187 | customRenderPipeline: {fileID: 0} 188 | excludedTargetPlatforms: [] 189 | - serializedVersion: 2 190 | name: Ultra 191 | pixelLightCount: 4 192 | shadows: 2 193 | shadowResolution: 2 194 | shadowProjection: 1 195 | shadowCascades: 4 196 | shadowDistance: 150 197 | shadowNearPlaneOffset: 3 198 | shadowCascade2Split: 0.33333334 199 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 200 | shadowmaskMode: 1 201 | skinWeights: 4 202 | textureQuality: 0 203 | anisotropicTextures: 2 204 | antiAliasing: 0 205 | softParticles: 1 206 | softVegetation: 1 207 | realtimeReflectionProbes: 1 208 | billboardsFaceCameraPosition: 1 209 | vSyncCount: 1 210 | lodBias: 2 211 | maximumLODLevel: 0 212 | streamingMipmapsActive: 0 213 | streamingMipmapsAddAllCameras: 1 214 | streamingMipmapsMemoryBudget: 512 215 | streamingMipmapsRenderersPerFrame: 512 216 | streamingMipmapsMaxLevelReduction: 2 217 | streamingMipmapsMaxFileIORequests: 1024 218 | particleRaycastBudget: 4096 219 | asyncUploadTimeSlice: 2 220 | asyncUploadBufferSize: 16 221 | asyncUploadPersistentBuffer: 1 222 | resolutionScalingFixedDPIFactor: 1 223 | customRenderPipeline: {fileID: 11400000, guid: 26de1e943f6101944b0e6c8a657a60c7, 224 | type: 2} 225 | excludedTargetPlatforms: [] 226 | m_PerPlatformDefaultQuality: 227 | Android: 2 228 | Lumin: 5 229 | Nintendo 3DS: 5 230 | Nintendo Switch: 5 231 | PS4: 5 232 | PSP2: 2 233 | Stadia: 5 234 | Standalone: 5 235 | WebGL: 3 236 | Windows Store Apps: 5 237 | XboxOne: 5 238 | iPhone: 2 239 | tvOS: 2 240 | -------------------------------------------------------------------------------- /Assets/Scenes/SampleScene/Main Camera Profile.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} 13 | m_Name: Main Camera Profile 14 | m_EditorClassIdentifier: 15 | components: 16 | - {fileID: 3059219201369777934} 17 | - {fileID: 3306821381245681947} 18 | - {fileID: 6740333227971364610} 19 | --- !u!114 &3059219201369777934 20 | MonoBehaviour: 21 | m_ObjectHideFlags: 3 22 | m_CorrespondingSourceObject: {fileID: 0} 23 | m_PrefabInstance: {fileID: 0} 24 | m_PrefabAsset: {fileID: 0} 25 | m_GameObject: {fileID: 0} 26 | m_Enabled: 1 27 | m_EditorHideFlags: 0 28 | m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} 29 | m_Name: Bloom 30 | m_EditorClassIdentifier: 31 | active: 1 32 | m_AdvancedMode: 0 33 | threshold: 34 | m_OverrideState: 1 35 | m_Value: 9.9 36 | min: 0 37 | intensity: 38 | m_OverrideState: 1 39 | m_Value: 0.29 40 | min: 0 41 | scatter: 42 | m_OverrideState: 1 43 | m_Value: 0.632 44 | min: 0 45 | max: 1 46 | clamp: 47 | m_OverrideState: 0 48 | m_Value: 65472 49 | min: 0 50 | tint: 51 | m_OverrideState: 0 52 | m_Value: {r: 1, g: 1, b: 1, a: 1} 53 | hdr: 0 54 | showAlpha: 0 55 | showEyeDropper: 1 56 | highQualityFiltering: 57 | m_OverrideState: 0 58 | m_Value: 0 59 | dirtTexture: 60 | m_OverrideState: 0 61 | m_Value: {fileID: 0} 62 | dirtIntensity: 63 | m_OverrideState: 0 64 | m_Value: 0 65 | min: 0 66 | --- !u!114 &3306821381245681947 67 | MonoBehaviour: 68 | m_ObjectHideFlags: 3 69 | m_CorrespondingSourceObject: {fileID: 0} 70 | m_PrefabInstance: {fileID: 0} 71 | m_PrefabAsset: {fileID: 0} 72 | m_GameObject: {fileID: 0} 73 | m_Enabled: 1 74 | m_EditorHideFlags: 0 75 | m_Script: {fileID: 11500000, guid: 66f335fb1ffd8684294ad653bf1c7564, type: 3} 76 | m_Name: ColorAdjustments 77 | m_EditorClassIdentifier: 78 | active: 1 79 | m_AdvancedMode: 0 80 | postExposure: 81 | m_OverrideState: 1 82 | m_Value: 0.2 83 | contrast: 84 | m_OverrideState: 0 85 | m_Value: 7 86 | min: -100 87 | max: 100 88 | colorFilter: 89 | m_OverrideState: 0 90 | m_Value: {r: 1, g: 1, b: 1, a: 1} 91 | hdr: 1 92 | showAlpha: 0 93 | showEyeDropper: 1 94 | hueShift: 95 | m_OverrideState: 0 96 | m_Value: 0 97 | min: -180 98 | max: 180 99 | saturation: 100 | m_OverrideState: 1 101 | m_Value: 54 102 | min: -100 103 | max: 100 104 | --- !u!114 &6740333227971364610 105 | MonoBehaviour: 106 | m_ObjectHideFlags: 3 107 | m_CorrespondingSourceObject: {fileID: 0} 108 | m_PrefabInstance: {fileID: 0} 109 | m_PrefabAsset: {fileID: 0} 110 | m_GameObject: {fileID: 0} 111 | m_Enabled: 1 112 | m_EditorHideFlags: 0 113 | m_Script: {fileID: 11500000, guid: 3eb4b772797da9440885e8bd939e9560, type: 3} 114 | m_Name: ColorCurves 115 | m_EditorClassIdentifier: 116 | active: 1 117 | m_AdvancedMode: 0 118 | master: 119 | m_OverrideState: 1 120 | m_Value: 121 | k__BackingField: 3 122 | m_Loop: 0 123 | m_ZeroValue: 0 124 | m_Range: 1 125 | m_Curve: 126 | serializedVersion: 2 127 | m_Curve: 128 | - serializedVersion: 3 129 | time: 0 130 | value: 0 131 | inSlope: 0 132 | outSlope: 1 133 | tangentMode: 0 134 | weightedMode: 0 135 | inWeight: 0 136 | outWeight: 0 137 | - serializedVersion: 3 138 | time: 0.57482994 139 | value: 0.44525546 140 | inSlope: 1 141 | outSlope: 1 142 | tangentMode: 0 143 | weightedMode: 0 144 | inWeight: 0 145 | outWeight: 0 146 | - serializedVersion: 3 147 | time: 1 148 | value: 1 149 | inSlope: 1 150 | outSlope: 0 151 | tangentMode: 0 152 | weightedMode: 0 153 | inWeight: 0 154 | outWeight: 0 155 | m_PreInfinity: 2 156 | m_PostInfinity: 2 157 | m_RotationOrder: 4 158 | red: 159 | m_OverrideState: 0 160 | m_Value: 161 | k__BackingField: 2 162 | m_Loop: 0 163 | m_ZeroValue: 0 164 | m_Range: 1 165 | m_Curve: 166 | serializedVersion: 2 167 | m_Curve: 168 | - serializedVersion: 3 169 | time: 0 170 | value: 0 171 | inSlope: 1 172 | outSlope: 1 173 | tangentMode: 0 174 | weightedMode: 0 175 | inWeight: 0 176 | outWeight: 0 177 | - serializedVersion: 3 178 | time: 1 179 | value: 1 180 | inSlope: 1 181 | outSlope: 1 182 | tangentMode: 0 183 | weightedMode: 0 184 | inWeight: 0 185 | outWeight: 0 186 | m_PreInfinity: 2 187 | m_PostInfinity: 2 188 | m_RotationOrder: 4 189 | green: 190 | m_OverrideState: 0 191 | m_Value: 192 | k__BackingField: 3 193 | m_Loop: 0 194 | m_ZeroValue: 0 195 | m_Range: 1 196 | m_Curve: 197 | serializedVersion: 2 198 | m_Curve: 199 | - serializedVersion: 3 200 | time: 0 201 | value: 0 202 | inSlope: 0 203 | outSlope: 1 204 | tangentMode: 0 205 | weightedMode: 0 206 | inWeight: 0 207 | outWeight: 0 208 | - serializedVersion: 3 209 | time: 1 210 | value: 1 211 | inSlope: 1 212 | outSlope: 0 213 | tangentMode: 0 214 | weightedMode: 0 215 | inWeight: 0 216 | outWeight: 0 217 | m_PreInfinity: 2 218 | m_PostInfinity: 2 219 | m_RotationOrder: 4 220 | blue: 221 | m_OverrideState: 0 222 | m_Value: 223 | k__BackingField: 2 224 | m_Loop: 0 225 | m_ZeroValue: 0 226 | m_Range: 1 227 | m_Curve: 228 | serializedVersion: 2 229 | m_Curve: 230 | - serializedVersion: 3 231 | time: 0 232 | value: 0 233 | inSlope: 1 234 | outSlope: 1 235 | tangentMode: 0 236 | weightedMode: 0 237 | inWeight: 0 238 | outWeight: 0 239 | - serializedVersion: 3 240 | time: 1 241 | value: 1 242 | inSlope: 1 243 | outSlope: 1 244 | tangentMode: 0 245 | weightedMode: 0 246 | inWeight: 0 247 | outWeight: 0 248 | m_PreInfinity: 2 249 | m_PostInfinity: 2 250 | m_RotationOrder: 4 251 | hueVsHue: 252 | m_OverrideState: 0 253 | m_Value: 254 | k__BackingField: 0 255 | m_Loop: 1 256 | m_ZeroValue: 0.5 257 | m_Range: 1 258 | m_Curve: 259 | serializedVersion: 2 260 | m_Curve: [] 261 | m_PreInfinity: 2 262 | m_PostInfinity: 2 263 | m_RotationOrder: 4 264 | hueVsSat: 265 | m_OverrideState: 0 266 | m_Value: 267 | k__BackingField: 0 268 | m_Loop: 1 269 | m_ZeroValue: 0.5 270 | m_Range: 1 271 | m_Curve: 272 | serializedVersion: 2 273 | m_Curve: [] 274 | m_PreInfinity: 2 275 | m_PostInfinity: 2 276 | m_RotationOrder: 4 277 | satVsSat: 278 | m_OverrideState: 0 279 | m_Value: 280 | k__BackingField: 0 281 | m_Loop: 0 282 | m_ZeroValue: 0.5 283 | m_Range: 1 284 | m_Curve: 285 | serializedVersion: 2 286 | m_Curve: [] 287 | m_PreInfinity: 2 288 | m_PostInfinity: 2 289 | m_RotationOrder: 4 290 | lumVsSat: 291 | m_OverrideState: 0 292 | m_Value: 293 | k__BackingField: 0 294 | m_Loop: 0 295 | m_ZeroValue: 0.5 296 | m_Range: 1 297 | m_Curve: 298 | serializedVersion: 2 299 | m_Curve: [] 300 | m_PreInfinity: 2 301 | m_PostInfinity: 2 302 | m_RotationOrder: 4 303 | -------------------------------------------------------------------------------- /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 | - serializedVersion: 3 297 | m_Name: Enable Debug Button 1 298 | descriptiveName: 299 | descriptiveNegativeName: 300 | negativeButton: 301 | positiveButton: left ctrl 302 | altNegativeButton: 303 | altPositiveButton: joystick button 8 304 | gravity: 0 305 | dead: 0 306 | sensitivity: 0 307 | snap: 0 308 | invert: 0 309 | type: 0 310 | axis: 0 311 | joyNum: 0 312 | - serializedVersion: 3 313 | m_Name: Enable Debug Button 2 314 | descriptiveName: 315 | descriptiveNegativeName: 316 | negativeButton: 317 | positiveButton: backspace 318 | altNegativeButton: 319 | altPositiveButton: joystick button 9 320 | gravity: 0 321 | dead: 0 322 | sensitivity: 0 323 | snap: 0 324 | invert: 0 325 | type: 0 326 | axis: 0 327 | joyNum: 0 328 | - serializedVersion: 3 329 | m_Name: Debug Reset 330 | descriptiveName: 331 | descriptiveNegativeName: 332 | negativeButton: 333 | positiveButton: left alt 334 | altNegativeButton: 335 | altPositiveButton: joystick button 1 336 | gravity: 0 337 | dead: 0 338 | sensitivity: 0 339 | snap: 0 340 | invert: 0 341 | type: 0 342 | axis: 0 343 | joyNum: 0 344 | - serializedVersion: 3 345 | m_Name: Debug Next 346 | descriptiveName: 347 | descriptiveNegativeName: 348 | negativeButton: 349 | positiveButton: page down 350 | altNegativeButton: 351 | altPositiveButton: joystick button 5 352 | gravity: 0 353 | dead: 0 354 | sensitivity: 0 355 | snap: 0 356 | invert: 0 357 | type: 0 358 | axis: 0 359 | joyNum: 0 360 | - serializedVersion: 3 361 | m_Name: Debug Previous 362 | descriptiveName: 363 | descriptiveNegativeName: 364 | negativeButton: 365 | positiveButton: page up 366 | altNegativeButton: 367 | altPositiveButton: joystick button 4 368 | gravity: 0 369 | dead: 0 370 | sensitivity: 0 371 | snap: 0 372 | invert: 0 373 | type: 0 374 | axis: 0 375 | joyNum: 0 376 | - serializedVersion: 3 377 | m_Name: Debug Validate 378 | descriptiveName: 379 | descriptiveNegativeName: 380 | negativeButton: 381 | positiveButton: return 382 | altNegativeButton: 383 | altPositiveButton: joystick button 0 384 | gravity: 0 385 | dead: 0 386 | sensitivity: 0 387 | snap: 0 388 | invert: 0 389 | type: 0 390 | axis: 0 391 | joyNum: 0 392 | - serializedVersion: 3 393 | m_Name: Debug Persistent 394 | descriptiveName: 395 | descriptiveNegativeName: 396 | negativeButton: 397 | positiveButton: right shift 398 | altNegativeButton: 399 | altPositiveButton: joystick button 2 400 | gravity: 0 401 | dead: 0 402 | sensitivity: 0 403 | snap: 0 404 | invert: 0 405 | type: 0 406 | axis: 0 407 | joyNum: 0 408 | - serializedVersion: 3 409 | m_Name: Debug Multiplier 410 | descriptiveName: 411 | descriptiveNegativeName: 412 | negativeButton: 413 | positiveButton: left shift 414 | altNegativeButton: 415 | altPositiveButton: joystick button 3 416 | gravity: 0 417 | dead: 0 418 | sensitivity: 0 419 | snap: 0 420 | invert: 0 421 | type: 0 422 | axis: 0 423 | joyNum: 0 424 | - serializedVersion: 3 425 | m_Name: Debug Horizontal 426 | descriptiveName: 427 | descriptiveNegativeName: 428 | negativeButton: left 429 | positiveButton: right 430 | altNegativeButton: 431 | altPositiveButton: 432 | gravity: 1000 433 | dead: 0.001 434 | sensitivity: 1000 435 | snap: 0 436 | invert: 0 437 | type: 0 438 | axis: 0 439 | joyNum: 0 440 | - serializedVersion: 3 441 | m_Name: Debug Vertical 442 | descriptiveName: 443 | descriptiveNegativeName: 444 | negativeButton: down 445 | positiveButton: up 446 | altNegativeButton: 447 | altPositiveButton: 448 | gravity: 1000 449 | dead: 0.001 450 | sensitivity: 1000 451 | snap: 0 452 | invert: 0 453 | type: 0 454 | axis: 0 455 | joyNum: 0 456 | - serializedVersion: 3 457 | m_Name: Debug Vertical 458 | descriptiveName: 459 | descriptiveNegativeName: 460 | negativeButton: down 461 | positiveButton: up 462 | altNegativeButton: 463 | altPositiveButton: 464 | gravity: 1000 465 | dead: 0.001 466 | sensitivity: 1000 467 | snap: 0 468 | invert: 0 469 | type: 2 470 | axis: 6 471 | joyNum: 0 472 | - serializedVersion: 3 473 | m_Name: Debug Horizontal 474 | descriptiveName: 475 | descriptiveNegativeName: 476 | negativeButton: left 477 | positiveButton: right 478 | altNegativeButton: 479 | altPositiveButton: 480 | gravity: 1000 481 | dead: 0.001 482 | sensitivity: 1000 483 | snap: 0 484 | invert: 0 485 | type: 2 486 | axis: 5 487 | joyNum: 0 488 | -------------------------------------------------------------------------------- /VisualizationTools/graph_visualizer.py: -------------------------------------------------------------------------------- 1 | import os, sys 2 | import pygame, pygame.freetype, pygame.time 3 | import argparse 4 | import math 5 | import csv 6 | import json 7 | 8 | parser = argparse.ArgumentParser(description='2D Graph visualization tool') 9 | parser.add_argument("--profile", default=None, help="Path to a JSON profile to use") 10 | parser.add_argument('--width', default=1280, help="The width of the visualization window", type=int) 11 | parser.add_argument('--height', default=720, help="The height of the visualization window", type=int) 12 | parser.add_argument("--data", default="../CSV_DATA/InfectionSummary.csv", help="The CSV file to read data from") 13 | parser.add_argument("--title", default="Evolution graph", help="The title of the graph") 14 | parser.add_argument("--xscale", default=5, help="Scale of the X axis", type=float) 15 | parser.add_argument("--yscale", default=5, help="Scale of the Y axis", type=float) 16 | parser.add_argument("--x-multiplier", default=1, help="How much to multiply the values of the X axis with", type=float) 17 | parser.add_argument("--fullscreen", action="store_true", help="Should the window open in fullscreen mode") 18 | parser.add_argument("--stack", action="store_true", help="Stack the curves", default=True) 19 | parser.add_argument("--hide", nargs="+", help="Columns to hide") 20 | parser.add_argument("--show-negative", default=False, action="store_true", help="Show negative axis (WIP)") # WORK IN PROGRESS 21 | args = parser.parse_args() 22 | 23 | profile = None 24 | 25 | if args.profile is not None: 26 | with open(args.profile, 'r') as json_file: 27 | profile = json.load(json_file) 28 | 29 | if profile and "arg_overrides" in profile: 30 | for override in profile["arg_overrides"]: 31 | setattr(args, override, profile["arg_overrides"][override]) 32 | 33 | if args.fullscreen: 34 | os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (0,0) 35 | 36 | pygame.init() 37 | display_size = pygame.display.Info() 38 | size = width, height = display_size.current_w, display_size.current_h 39 | screen = pygame.display.set_mode(size, pygame.NOFRAME) 40 | else: 41 | os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (100, 100) 42 | 43 | pygame.init() 44 | size = width, height = args.width, args.height 45 | screen = pygame.display.set_mode(size) 46 | 47 | 48 | axis_font = pygame.freetype.Font("Comfortaa-Regular.ttf", 15) 49 | 50 | padding = 100 51 | background_col = (2,0,13) 52 | axis_col = (180,180,180) 53 | curve_colors = [(70, 160, 224), (224, 70, 119), (222, 73, 217), (143, 73, 222), (73, 222, 195), (232, 146, 26), (141, 227, 30), (73, 30, 227)] 54 | next_curve_color_index = 0 55 | 56 | x_scale = args.xscale # The distance between two steps on the X axis 57 | y_scale = args.yscale # The distance between two steps on the Y axis 58 | step_size = 50 # The amount of pixels between two steps 59 | 60 | t=1 # For animation 61 | 62 | if args.show_negative: 63 | screen_graph_origin = (padding, height/2) 64 | else: 65 | screen_graph_origin = (padding, height-padding) 66 | 67 | pygame.display.set_caption("NamePointer's graph visualization tool") 68 | 69 | class Curve: 70 | def __init__(self, name, color): 71 | self.x_coords = [] 72 | self.y_coords = [] 73 | self.name = name 74 | self.color = color 75 | 76 | def add_point(self, x, y): 77 | self.x_coords.append(x) 78 | self.y_coords.append(y) 79 | 80 | class PointSequence: 81 | def __init__(self, name, color, height): 82 | self.x_coords = [] 83 | self.values = [] 84 | self.name = name 85 | self.color = color 86 | self.height = height 87 | 88 | def add_point(self, x, val): 89 | self.x_coords.append(x) 90 | self.values.append(val) 91 | 92 | def last_point(self): 93 | last_index = 0 94 | last_x = 0 95 | 96 | for i in range(len(self.x_coords)): 97 | if self.x_coords[i] > last_x: 98 | last_x = self.x_coords[i] 99 | last_index = i 100 | 101 | return (last_x, self.values[last_index]) 102 | 103 | def lerp(a, b, t): 104 | return a+(b-a)*t 105 | 106 | def lerp2d(a, b, t): 107 | return (a[0]+(b[0]-a[0])*t, a[1]+(b[1]-a[1])*t) 108 | 109 | def inverse_lerp(a, b, l): 110 | return (l - a) / (b - a) 111 | 112 | def new_curve_color(): 113 | global next_curve_color_index 114 | col = curve_colors[next_curve_color_index] 115 | next_curve_color_index+=1 116 | return col 117 | 118 | def draw_axes(t=1): 119 | x_max_point = lerp2d(screen_graph_origin, (width-padding, screen_graph_origin[1]), t) 120 | y_max_point = lerp2d((padding,height-padding), (padding,padding), t) 121 | 122 | # Axes themselves 123 | pygame.draw.line(screen, axis_col, screen_graph_origin, x_max_point) 124 | pygame.draw.line(screen, axis_col, (padding,height-padding), y_max_point) 125 | 126 | # Arrows 127 | pygame.draw.line(screen, axis_col, y_max_point, (y_max_point[0]-5,y_max_point[1]+5)) 128 | pygame.draw.line(screen, axis_col, y_max_point, (y_max_point[0]+5,y_max_point[1]+5)) 129 | if args.show_negative: 130 | pygame.draw.line(screen, axis_col, (padding,height-padding), (padding-5,height-padding-5)) 131 | pygame.draw.line(screen, axis_col, (padding,height-padding), (padding+5,height-padding-5)) 132 | 133 | pygame.draw.line(screen, axis_col, x_max_point, (x_max_point[0]-5,x_max_point[1]+5)) 134 | pygame.draw.line(screen, axis_col, x_max_point, (x_max_point[0]-5,x_max_point[1]-5)) 135 | 136 | # Steps 137 | i = 1 138 | for x in range(padding+step_size, width-padding, step_size): 139 | if x > x_max_point[0]: 140 | continue 141 | 142 | opacity = 1 143 | distance_from_end = x_max_point[0] - x 144 | if t < 1 and distance_from_end < step_size: 145 | opacity = distance_from_end / step_size 146 | 147 | pygame.draw.line(screen, axis_col, (x, screen_graph_origin[1]-5*opacity), (x, screen_graph_origin[1]+5*opacity)) 148 | 149 | text_surface, rect = axis_font.render(str(i*x_scale), (200, 200, 200, opacity * 255)) 150 | screen.blit(text_surface,(x-rect.width/2,screen_graph_origin[1]+10)) 151 | i+=1 152 | 153 | i = 1 154 | for y in range(height-padding-step_size, padding, -step_size): 155 | if y < y_max_point[1]: 156 | continue 157 | 158 | opacity = 1 159 | distance_from_end = y - y_max_point[1] 160 | if t < 1 and distance_from_end < step_size: 161 | opacity = distance_from_end / step_size 162 | 163 | pygame.draw.line(screen, axis_col, (padding-5*opacity, y), (padding+5*opacity, y)) 164 | 165 | text_surface, rect = axis_font.render(str(i*y_scale), (200, 200, 200, opacity * 255)) 166 | screen.blit(text_surface,(padding-10-rect.width,y-rect.height/2)) 167 | i+=1 168 | 169 | def draw_curve(curve, t=1): 170 | if len(curve.x_coords) != len(curve.y_coords): 171 | raise Exception("x_coords and y_coords must have same length") 172 | 173 | max_graph_x = (width-2*padding)/step_size*x_scale 174 | max_x = screen_graph_origin[0]+lerp(0, min(max_graph_x, max(curve.x_coords)), t)/x_scale*step_size 175 | 176 | if t <= 0 or max_x < 2: 177 | return # Do not bother drawing anything 178 | 179 | last_point = None 180 | for i in range(len(curve.x_coords)): 181 | point = (screen_graph_origin[0]+curve.x_coords[i]/x_scale*step_size, screen_graph_origin[1]-curve.y_coords[i]/y_scale*step_size) 182 | 183 | if last_point is not None: 184 | if point[0] > max_x: 185 | t = inverse_lerp(last_point[0], point[0], max_x) 186 | point = (max_x, lerp(last_point[1], point[1], t)) 187 | pygame.draw.line(screen, curve.color, last_point, point, 2) 188 | 189 | last_point = point 190 | 191 | text_surface, rect = axis_font.render(curve.name, curve.color) 192 | screen.blit(text_surface, (last_point[0]+5,last_point[1]-rect.height/2)) 193 | 194 | def draw_point_sequence(pt_sequence): 195 | if len(pt_sequence.x_coords) != len(pt_sequence.values): 196 | raise Exception("x_coords and values must have same length") 197 | 198 | for i in range(len(pt_sequence.x_coords)): 199 | point = (math.floor(screen_graph_origin[0]+pt_sequence.x_coords[i]/x_scale*step_size), math.floor(screen_graph_origin[1]-pt_sequence.height/y_scale*step_size)) 200 | pygame.draw.circle(screen, pt_sequence.color, point, 5) 201 | text_surface, rect = axis_font.render(str(pt_sequence.values[i]), pt_sequence.color) 202 | screen.blit(text_surface,(point[0]-rect.width/2,point[1] + 20)) 203 | 204 | # Load data 205 | curves = [] 206 | point_sequences = [] 207 | with open(args.data, newline='') as csvfile: 208 | reader = csv.reader(csvfile, delimiter=";", quotechar="|") 209 | row_index = 0 210 | point_sequence_columns = [] 211 | for row in reader: 212 | if row_index == 0: # First row defines names 213 | for i in range(len(row)): 214 | curve_name = row[i] 215 | if curve_name.startswith('#'): # If name starts with '#' it's a point sequence 216 | point_sequences.append(PointSequence(curve_name[1:], new_curve_color(), 5)) 217 | point_sequence_columns.append(i) 218 | else: 219 | curves.append(Curve(curve_name, new_curve_color())) 220 | else: 221 | for i in range(len(row)): # i is the column index 222 | if i in point_sequence_columns: 223 | if (row_index <= 1 or row[i] != point_sequences[len(curves)-i].last_point()[1]): # Make sure the value is different from the last one 224 | point_sequences[len(curves)-i].add_point((row_index-1)*args.x_multiplier, row[i]) 225 | else: 226 | curves[i].add_point((row_index-1)*args.x_multiplier, float(row[i])) 227 | row_index+=1 228 | 229 | if profile and "curve_colors" in profile: 230 | for curve_name in profile["curve_colors"]: 231 | for curve in curves: 232 | if curve.name == curve_name: 233 | curve.color = profile["curve_colors"][curve_name] 234 | 235 | for pt_seq in point_sequences: 236 | if pt_seq.name == curve_name: 237 | pt_seq.color = profile["curve_colors"][curve_name] 238 | 239 | clock = pygame.time.Clock() 240 | while 1: 241 | deltaTime = clock.tick() 242 | 243 | pressed = pygame.key.get_pressed() 244 | 245 | for event in pygame.event.get(): 246 | if event.type == pygame.QUIT or pressed[pygame.K_ESCAPE]: 247 | sys.exit() 248 | 249 | if event.type == pygame.KEYUP: 250 | if pressed[pygame.K_F12]: 251 | t = 1 if t<=0 else 0 252 | 253 | if event.type == pygame.MOUSEBUTTONDOWN: 254 | if pressed[pygame.K_x]: 255 | if event.button == 4 and x_scale > 0.5: 256 | x_scale-=0.5 257 | elif event.button == 5: 258 | x_scale+=0.5 259 | if pressed[pygame.K_y] or pressed[pygame.K_z]: 260 | if event.button == 4 and y_scale > 0.5: 261 | y_scale-=0.5 262 | elif event.button == 5: 263 | y_scale+=0.5 264 | 265 | elif not pressed[pygame.K_x]: 266 | if event.button == 4 and step_size > 1: 267 | step_size-=1 268 | elif event.button == 5: 269 | step_size+=1 270 | 271 | if pressed[pygame.K_RIGHT]: 272 | if t < 1: 273 | t+=0.0001*deltaTime 274 | elif pressed[pygame.K_LEFT]: 275 | if t > 0: 276 | t-=0.0001*deltaTime 277 | 278 | if t <= 0.25: 279 | t1 = t/0.25 280 | t2 = 0 281 | else: 282 | t1 = 1 283 | t2 = (t-0.25)/0.75 284 | 285 | screen.fill(background_col) 286 | for c in curves: 287 | if args.hide is None or c.name not in args.hide: 288 | draw_curve(c, t2) 289 | for pt_seq in point_sequences: 290 | if args.hide is None or pt_seq.name not in args.hide: 291 | draw_point_sequence(pt_seq) 292 | draw_axes(t1) 293 | pygame.display.flip() -------------------------------------------------------------------------------- /Assets/Scripts/Entity.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | using UnityEngine.UI; 6 | using UnityEngine.AI; 7 | 8 | public class Entity : MonoBehaviour 9 | { 10 | public bool permanentlyInfected = false; 11 | public bool drawTargetDirection = false; 12 | public float movementAreaSize = 100; 13 | public float movementEnergyCost = 0.1F; 14 | public float movementSpeedDamageThreshold; 15 | public House home; 16 | public Material healthyMaterial; 17 | public Material infectedMaterial; 18 | public Material deadMaterial; 19 | public Text txtInfectionState; 20 | public Slider healthBar; 21 | public Slider energyBar; 22 | public ParticleSystem coughParticles; 23 | public GameObject deathParticles; 24 | 25 | public Dictionary BaseTraits {get; private set;} 26 | public Virus Infection {get; private set;} 27 | public EntityState CurrentState {get; private set;} 28 | public float Health {get; private set;} 29 | public float Energy {get; private set;} 30 | 31 | public static string[] TRAIT_KEYS = new string[]{"cough_rate", "sweating", "virus_resistance", "aggressiveness", "movement_speed", "exhaustion_tolerance", "pain_tolerance"}; 32 | 33 | private Rigidbody rb; 34 | private NavMeshAgent navMeshAgent; 35 | private int timeSinceInfection; 36 | private Vector3 targetPosition; 37 | private Transform movingTarget; 38 | private RectTransform canvasTransform; 39 | private CanvasGroup canvasGroup; 40 | private Camera cam; 41 | private MeshRenderer meshRenderer; 42 | private bool outdatedPath; 43 | 44 | private HashSet immunity; 45 | 46 | // Anti-stuck system 47 | private Vector3 lastPosition; 48 | private int stuckCounter; 49 | 50 | // Start is called before the first frame update 51 | void Start() 52 | { 53 | BaseTraits = new Dictionary(); 54 | foreach (string traitName in TRAIT_KEYS) { 55 | BaseTraits.Add(traitName, 1F); 56 | } 57 | 58 | rb = GetComponent(); 59 | navMeshAgent = GetComponent(); 60 | meshRenderer = GetComponent(); 61 | timeSinceInfection = 0; 62 | Health = 100; 63 | Energy = Random.Range(90, 150); // 150 is above the max but it's there to avoid that every entity runs out of energy at the same time 64 | immunity = new HashSet(); 65 | cam = Camera.main; 66 | CurrentState = EntityState.Wandering; 67 | 68 | Canvas canvas = GetComponentInChildren(); 69 | canvasTransform = canvas.GetComponent(); 70 | canvasGroup = canvas.GetComponent(); 71 | 72 | InvokeRepeating("Tick", 1F, 1F); 73 | 74 | targetPosition = NewTarget(); 75 | lastPosition = transform.position; 76 | 77 | outdatedPath = true; 78 | 79 | txtInfectionState.text = "Healthy ["+CurrentState+"]"; 80 | } 81 | 82 | void Tick() { 83 | if (Infection != null) { 84 | timeSinceInfection++; 85 | 86 | if (!permanentlyInfected && Random.value < 0.01F/GetTraitValue("virus_resistance")) { 87 | immunity.Add(Infection.ToString()); 88 | SetInfection(null); 89 | navMeshAgent.speed = GetTraitValue("movement_speed")*3.5F; 90 | } 91 | } 92 | 93 | if (!IsInside() && lastPosition == transform.position) { 94 | stuckCounter++; 95 | 96 | if (stuckCounter > 5) { 97 | if (CurrentState == EntityState.Going_Home && Vector3.Distance(transform.position, home.transform.position) < 10F) { 98 | EnterHome(); 99 | } 100 | 101 | movingTarget = null; 102 | targetPosition = NewTarget(); 103 | } 104 | } else { 105 | stuckCounter = 0; 106 | } 107 | 108 | lastPosition = transform.position; 109 | 110 | if (!IsInside() && outdatedPath && navMeshAgent.isOnNavMesh) { 111 | navMeshAgent.SetDestination(targetPosition); 112 | outdatedPath = false; 113 | } 114 | 115 | if (!IsInside() && Random.value < GetTraitValue("cough_rate") * 0.05F) { 116 | Energy -= 3; 117 | Cough(); 118 | } 119 | } 120 | 121 | void Update() { 122 | if (Health <= 0) return; 123 | 124 | if (CurrentState == EntityState.At_Home || CurrentState == EntityState.At_Hospital) { 125 | Energy += Time.deltaTime * 10; 126 | 127 | if (CurrentState == EntityState.At_Hospital) 128 | Health += Time.deltaTime * 2; 129 | else if (Health < 85) 130 | Health += Time.deltaTime; 131 | 132 | if (CurrentState == EntityState.At_Home && Energy > 100 && Health > 85) { 133 | Energy = 100; 134 | Health = Mathf.Min(Health, 100); 135 | SetInside(false); 136 | targetPosition = NewTarget(); 137 | } else if (CurrentState == EntityState.At_Hospital && Health > 100 && Energy > 100) { 138 | Energy = 100; 139 | Health = 100; 140 | SetInside(false); 141 | targetPosition = NewTarget(); 142 | 143 | if (Infection != null && Random.value < 0.75F) SetInfection(null); 144 | } 145 | } else { 146 | float immunityEnergyCost = 0.4F * GetTraitValue("virus_resistance"); 147 | Energy -= (navMeshAgent.velocity.magnitude * movementEnergyCost + immunityEnergyCost) * Time.deltaTime; 148 | 149 | if (navMeshAgent.velocity.magnitude > movementSpeedDamageThreshold) { 150 | Health -= 5F * Time.deltaTime; 151 | } 152 | 153 | if (Energy < 0) { 154 | Health -= 1.25F * Time.deltaTime; 155 | } 156 | 157 | if (Health < 50F - ((GetTraitValue("pain_tolerance")-1) * 25F)) { 158 | Vector3 closestHospital = ClosestHospital(); 159 | if (CurrentState != EntityState.Going_Home || Vector3.Distance(transform.position, home.transform.position) > Vector3.Distance(transform.position, closestHospital)) { 160 | CurrentState = EntityState.Going_To_Hospital; 161 | targetPosition = closestHospital; 162 | outdatedPath = true; 163 | } 164 | } 165 | 166 | if ((CurrentState == EntityState.Wandering || CurrentState == EntityState.Chasing) && (Energy < 40F - ((GetTraitValue("exhaustion_tolerance")-1) * 20) || Health < 75F - ((GetTraitValue("pain_tolerance")-1) * 40F))) { 167 | CurrentState = EntityState.Going_Home; 168 | targetPosition = home.transform.position; 169 | outdatedPath = true; 170 | } 171 | 172 | 173 | if (Vector3.Distance(transform.position, targetPosition) < 0.6F) { 174 | if (CurrentState == EntityState.Going_Home) { 175 | EnterHome(); 176 | } else if (CurrentState == EntityState.Going_To_Hospital) { 177 | SetInside(true); 178 | CurrentState = EntityState.At_Hospital; 179 | } else { 180 | targetPosition = NewTarget(); 181 | } 182 | } 183 | } 184 | 185 | if (drawTargetDirection) Debug.DrawLine(transform.position, targetPosition, Color.blue); 186 | 187 | if (CurrentState == EntityState.Chasing) { 188 | if (movingTarget != null) { 189 | targetPosition = movingTarget.position; 190 | outdatedPath = true; 191 | } else { 192 | CurrentState = EntityState.Wandering; 193 | } 194 | } 195 | 196 | Vector3 fwd = Camera.main.transform.forward; 197 | canvasTransform.rotation = Quaternion.LookRotation(fwd); 198 | 199 | if (!IsInside()) { 200 | float distanceFromCamera = Vector3.Distance(transform.position, cam.transform.position); 201 | float opacity = Mathf.Min(1, Mathf.Max(0, -0.5F*distanceFromCamera+10)); 202 | canvasGroup.alpha = opacity; 203 | if (opacity > 0.01F) { 204 | healthBar.value = Health/100F; 205 | energyBar.value = Energy/100F; 206 | } 207 | } else { 208 | canvasGroup.alpha = 0; 209 | } 210 | 211 | if (Health <= 0) { 212 | Die(); 213 | } 214 | } 215 | 216 | void EnterHome() { 217 | SetInside(true); 218 | if (Infection != null) home.SpreadInfection(this, Infection); 219 | 220 | CurrentState = EntityState.At_Home; 221 | } 222 | 223 | void Cough() { 224 | coughParticles.Play(); 225 | if (Infection != null) { 226 | foreach (GameObject entity in GameObject.FindGameObjectsWithTag("Entity")) { 227 | if (Vector3.Distance(entity.transform.position, transform.position) < 4F) { 228 | Debug.DrawLine(entity.transform.position, transform.position, Color.cyan); 229 | Infect(entity.GetComponent()); 230 | } 231 | } 232 | } 233 | } 234 | 235 | // Used to make entities disappear when entering their home or an hospital 236 | void SetInside(bool inside) { 237 | if (inside) { 238 | outdatedPath = false; 239 | } 240 | 241 | navMeshAgent.enabled = !inside; 242 | GetComponent().enabled = !inside; 243 | meshRenderer.enabled = !inside; 244 | } 245 | 246 | bool IsInside() { 247 | return CurrentState == EntityState.At_Home || CurrentState == EntityState.At_Hospital; 248 | } 249 | 250 | Vector3 ClosestHospital() { 251 | GameObject closestHospital = null; 252 | foreach (GameObject hospital in GameObject.FindGameObjectsWithTag("HospitalEntry")) { 253 | if (closestHospital == null || Vector3.Distance(transform.position, hospital.transform.position) < Vector3.Distance(transform.position, closestHospital.transform.position)) { 254 | closestHospital = hospital; 255 | } 256 | } 257 | 258 | return closestHospital.transform.position; 259 | } 260 | 261 | Vector3 NewTarget() { 262 | outdatedPath = true; 263 | if (Random.value < (GetTraitValue("aggressiveness")-1)*0.5F) { 264 | Entity closestHealthy = null; 265 | foreach (GameObject entityGO in GameObject.FindGameObjectsWithTag("Entity")) { 266 | Entity entity = entityGO.GetComponent(); 267 | if (entityGO == gameObject || entity.IsInside() || entity.Infection != null) continue; 268 | 269 | if (closestHealthy == null || Vector3.Distance(transform.position, entity.transform.position) < Vector3.Distance(transform.position, closestHealthy.transform.position)) { 270 | closestHealthy = entity; 271 | } 272 | } 273 | if (closestHealthy != null && Mathf.Abs(closestHealthy.transform.position.x) <= movementAreaSize && Mathf.Abs(closestHealthy.transform.position.z) <= movementAreaSize) { 274 | movingTarget = closestHealthy.transform; 275 | CurrentState = EntityState.Chasing; 276 | return movingTarget.position; 277 | } else { 278 | CurrentState = EntityState.Wandering; 279 | movingTarget = null; 280 | return RandomPositionOnMap(); 281 | } 282 | } else { 283 | CurrentState = EntityState.Wandering; 284 | movingTarget = null; 285 | return RandomPositionOnMap(); 286 | } 287 | } 288 | 289 | Vector3 RandomPositionOnMap() { 290 | Vector3 randomDirection = Random.insideUnitSphere * movementAreaSize; 291 | NavMeshHit hit; 292 | NavMesh.SamplePosition(randomDirection, out hit, movementAreaSize, 1); 293 | return hit.position; 294 | } 295 | 296 | public float GetTraitValue(string name) { 297 | if (BaseTraits.ContainsKey(name)) { 298 | if (Infection != null && Infection.HostTraitMultipliers.ContainsKey(name)) { 299 | return BaseTraits[name] * Infection.HostTraitMultipliers[name]; 300 | } else { 301 | return BaseTraits[name]; 302 | } 303 | } else { 304 | return 1; 305 | } 306 | } 307 | 308 | public void SetInfection(Virus Infection) { 309 | this.Infection = Infection; 310 | 311 | if (Infection != null) { 312 | meshRenderer.material = infectedMaterial; 313 | txtInfectionState.text = "Infected ["+CurrentState+"]"; 314 | timeSinceInfection = 0; 315 | 316 | navMeshAgent.speed = 3.5F + (GetTraitValue("movement_speed")-1); 317 | } else { 318 | meshRenderer.material = healthyMaterial; 319 | txtInfectionState.text = "Healthy ["+CurrentState+"]"; 320 | } 321 | 322 | if (CurrentState == EntityState.Chasing) { 323 | targetPosition = NewTarget(); 324 | } 325 | } 326 | 327 | public bool IsImmuneTo(Virus infection) { 328 | if (infection == null) return true; 329 | return immunity.Contains(infection.ToString()); 330 | } 331 | 332 | void Die() { 333 | CancelInvoke("Tick"); 334 | Health = 0; 335 | meshRenderer.material = deadMaterial; 336 | navMeshAgent.enabled = false; 337 | rb.freezeRotation = false; 338 | rb.isKinematic = true; 339 | canvasGroup.alpha = 0; 340 | 341 | StartCoroutine(DeathAnimation()); 342 | 343 | Debug.DrawLine(transform.position, transform.position+new Vector3(0, 10, 0), Color.red, 1000F); 344 | } 345 | 346 | IEnumerator DeathAnimation() { 347 | for (float rot = 0; rot<97; rot+=3F) { 348 | transform.Rotate(new Vector3(0,0,3F)); 349 | yield return new WaitForSeconds(0.025F); 350 | } 351 | 352 | GameObject instance = Instantiate(deathParticles); 353 | instance.transform.position = transform.position - new Vector3(0F, 2F, 0F); 354 | instance.GetComponent().Play(); 355 | Destroy(instance, 3F); 356 | Destroy(gameObject, 0.25F); 357 | } 358 | 359 | public void Infect(Entity other) { 360 | if (Infection == null) 361 | throw new System.Exception("Infection cannot be null"); 362 | 363 | if (other.Infection == null && !other.IsImmuneTo(Infection)) { 364 | other.SetInfection(this.Infection.CreateCopy(0.1F, 1F)); 365 | } 366 | } 367 | 368 | void OnTriggerEnter(Collider collider) { 369 | if (BaseTraits == null) return; // Collision detected before Start() was called 370 | 371 | if (!IsInside() && collider.gameObject.CompareTag("Entity")) { 372 | Entity collidedEntity = collider.gameObject.GetComponent(); 373 | if (CurrentState == EntityState.Chasing && movingTarget == collider.transform) { 374 | collidedEntity.Health -= 25; // Attack causes damage 375 | if (Infection != null) Infect(collidedEntity); // 100% infection chance when attacking 376 | } else if (Infection != null && Random.value < GetTraitValue("sweating")*0.33F) { 377 | Infect(collidedEntity); 378 | } 379 | 380 | if (CurrentState == EntityState.Wandering || CurrentState == EntityState.Chasing) targetPosition = NewTarget(); 381 | } 382 | } 383 | } 384 | 385 | public enum EntityState { 386 | At_Home, At_Hospital, Wandering, Chasing, Going_Home, Going_To_Hospital 387 | } --------------------------------------------------------------------------------