├── .gitignore ├── entities ├── weapon │ ├── assets │ │ ├── sounds │ │ │ ├── reload.mp3 │ │ │ ├── gun_fire.wav │ │ │ ├── reload.mp3.import │ │ │ └── gun_fire.wav.import │ │ ├── models │ │ │ ├── AKM.glb │ │ │ ├── 7.62x39mm.glb │ │ │ ├── AKM.glb.import │ │ │ └── 7.62x39mm.glb.import │ │ ├── textures │ │ │ ├── muzzle_flash.png │ │ │ └── muzzle_flash.png.import │ │ ├── tools │ │ │ └── spray_path_designer.tscn │ │ ├── resources │ │ │ ├── pistol_recoil_curve.tres │ │ │ ├── akm_recoil_curve.tres │ │ │ └── ak.tres │ │ └── shaders │ │ │ └── viewmodel.gdshader │ ├── weapon_mesh.gd │ ├── states │ │ ├── idle.gd │ │ ├── reload.gd │ │ ├── sprint.gd │ │ └── shoot.gd │ ├── weapon_fsm.gd │ ├── weapon_model.gd │ └── weapon.gd ├── player │ ├── states │ │ ├── jump.gd │ │ ├── idle.gd │ │ ├── walk.gd │ │ ├── crouch.gd │ │ ├── sprint.gd │ │ └── player_state.gd │ ├── player_fsm.gd │ ├── camera3d.gd │ ├── player.gd │ └── player.tscn ├── fsm │ ├── state.gd │ └── fsm.gd └── enemy │ ├── enemy.gd │ └── enemy.tscn ├── icon.svg ├── default_bus_layout.tres ├── imgs └── clip.gif ├── scenes ├── target │ └── assets │ │ ├── target_dummy.glb │ │ └── target_dummy.glb.import ├── bullet_decal │ ├── assets │ │ ├── bullet_stain.png │ │ └── bullet_stain.png.import │ ├── bullet_decal.gd │ └── bullet_decal.tscn ├── assets │ ├── floor_material.tres │ ├── obstacle_material.tres │ └── wall_material.tres ├── world.gd ├── bullet_impact │ └── bullet_impact.tscn └── world.tscn ├── addons └── kenney_prototype_textures │ ├── dark │ ├── texture_01.png │ ├── texture_02.png │ ├── texture_03.png │ ├── texture_04.png │ ├── texture_05.png │ ├── texture_06.png │ ├── texture_07.png │ ├── texture_08.png │ ├── texture_09.png │ ├── texture_10.png │ ├── texture_11.png │ ├── texture_12.png │ ├── texture_13.png │ ├── texture_01.png.import │ ├── texture_02.png.import │ ├── texture_03.png.import │ ├── texture_04.png.import │ ├── texture_05.png.import │ ├── texture_06.png.import │ ├── texture_07.png.import │ ├── texture_08.png.import │ ├── texture_10.png.import │ ├── texture_11.png.import │ ├── texture_12.png.import │ ├── texture_13.png.import │ └── texture_09.png.import │ ├── green │ ├── texture_09.png │ ├── texture_01.png │ ├── texture_02.png │ ├── texture_03.png │ ├── texture_04.png │ ├── texture_05.png │ ├── texture_06.png │ ├── texture_07.png │ ├── texture_08.png │ ├── texture_10.png │ ├── texture_11.png │ ├── texture_12.png │ ├── texture_13.png │ ├── texture_03.png.import │ ├── texture_06.png.import │ ├── texture_08.png.import │ ├── texture_10.png.import │ ├── texture_01.png.import │ ├── texture_02.png.import │ ├── texture_04.png.import │ ├── texture_05.png.import │ ├── texture_07.png.import │ ├── texture_09.png.import │ ├── texture_11.png.import │ ├── texture_12.png.import │ └── texture_13.png.import │ ├── light │ ├── texture_07.png │ ├── texture_01.png │ ├── texture_02.png │ ├── texture_03.png │ ├── texture_04.png │ ├── texture_05.png │ ├── texture_06.png │ ├── texture_08.png │ ├── texture_09.png │ ├── texture_10.png │ ├── texture_11.png │ ├── texture_12.png │ ├── texture_13.png │ ├── texture_03.png.import │ ├── texture_01.png.import │ ├── texture_02.png.import │ ├── texture_04.png.import │ ├── texture_05.png.import │ ├── texture_06.png.import │ ├── texture_07.png.import │ ├── texture_08.png.import │ ├── texture_09.png.import │ ├── texture_10.png.import │ ├── texture_11.png.import │ ├── texture_12.png.import │ └── texture_13.png.import │ ├── red │ ├── texture_01.png │ ├── texture_02.png │ ├── texture_03.png │ ├── texture_04.png │ ├── texture_05.png │ ├── texture_06.png │ ├── texture_07.png │ ├── texture_08.png │ ├── texture_09.png │ ├── texture_10.png │ ├── texture_11.png │ ├── texture_12.png │ ├── texture_13.png │ ├── texture_01.png.import │ ├── texture_02.png.import │ ├── texture_03.png.import │ ├── texture_04.png.import │ ├── texture_05.png.import │ ├── texture_06.png.import │ ├── texture_07.png.import │ ├── texture_08.png.import │ ├── texture_09.png.import │ ├── texture_10.png.import │ ├── texture_11.png.import │ ├── texture_12.png.import │ └── texture_13.png.import │ ├── orange │ ├── texture_01.png │ ├── texture_02.png │ ├── texture_03.png │ ├── texture_04.png │ ├── texture_05.png │ ├── texture_06.png │ ├── texture_07.png │ ├── texture_08.png │ ├── texture_09.png │ ├── texture_10.png │ ├── texture_11.png │ ├── texture_12.png │ ├── texture_13.png │ ├── texture_01.png.import │ ├── texture_02.png.import │ ├── texture_03.png.import │ ├── texture_04.png.import │ ├── texture_05.png.import │ ├── texture_06.png.import │ ├── texture_07.png.import │ ├── texture_08.png.import │ ├── texture_09.png.import │ ├── texture_11.png.import │ ├── texture_12.png.import │ ├── texture_13.png.import │ └── texture_10.png.import │ ├── purple │ ├── texture_01.png │ ├── texture_02.png │ ├── texture_03.png │ ├── texture_04.png │ ├── texture_05.png │ ├── texture_06.png │ ├── texture_07.png │ ├── texture_08.png │ ├── texture_09.png │ ├── texture_10.png │ ├── texture_11.png │ ├── texture_12.png │ ├── texture_13.png │ ├── texture_01.png.import │ ├── texture_02.png.import │ ├── texture_05.png.import │ ├── texture_06.png.import │ ├── texture_07.png.import │ ├── texture_08.png.import │ ├── texture_09.png.import │ ├── texture_10.png.import │ ├── texture_11.png.import │ ├── texture_12.png.import │ ├── texture_13.png.import │ ├── texture_04.png.import │ └── texture_03.png.import │ └── LICENSE.txt ├── .gitattributes ├── script_templates └── Node │ └── state.gd ├── interfaces └── hud │ ├── hud.gd │ └── hud.tscn ├── icon.svg.import ├── LICENSE ├── README.md └── project.godot /.gitignore: -------------------------------------------------------------------------------- 1 | # Godot 4+ specific ignores 2 | .godot/ 3 | -------------------------------------------------------------------------------- /entities/weapon/assets/sounds/reload.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Dodoveloper/godot4-fps-prototype/HEAD/entities/weapon/assets/sounds/reload.mp3 -------------------------------------------------------------------------------- /icon.svg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a9aefeba9c74ac2d7405003b6aa45fb3082304dc55dcee73b4ec7ae28823bda2 3 | size 950 4 | -------------------------------------------------------------------------------- /default_bus_layout.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="AudioBusLayout" format=3 uid="uid://cr8ajfre2xtkc"] 2 | 3 | [resource] 4 | bus/0/volume_db = -5.04224 5 | -------------------------------------------------------------------------------- /imgs/clip.gif: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f82d71cddbbcddf333a5a23919619d9425f93a33485e2121c3f295185da27da8 3 | size 6226063 4 | -------------------------------------------------------------------------------- /entities/weapon/assets/models/AKM.glb: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7df991a88544ca92c468347dcfb99e7324430751aa55792c041e60452396a286 3 | size 580756 4 | -------------------------------------------------------------------------------- /scenes/target/assets/target_dummy.glb: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f056b1e5fe0e187f0c62cbb1a7d454c030465adea72e50409fc23aa72393c421 3 | size 194448 4 | -------------------------------------------------------------------------------- /entities/weapon/assets/models/7.62x39mm.glb: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a8ee8750b0e83c41a769c872b37fb7dc04427281d66d65f3c6ba4ece2a70ed65 3 | size 12092 4 | -------------------------------------------------------------------------------- /entities/weapon/assets/sounds/gun_fire.wav: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:62680f17481ea5f35742fbdfc10e768905f9d5242f223e4e101a788b18526294 3 | size 713270 4 | -------------------------------------------------------------------------------- /scenes/bullet_decal/assets/bullet_stain.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:383b105fb779fa10f77ea1edad31e86d875c3bdfa409e3dc9396d060617c01cd 3 | size 21086 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:60a6f0a0b5e597962b399c39a31116f92f6a4564f087fcd2c6c2db4fc7cc2d4d 3 | size 2004 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c1031088472a5b0fd515d9e1438cebe9924f7d8dcf4beecd8be444961ada3370 3 | size 1333 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:830f1c808c7786a51e158878e7de3fbb81563b33e191813d58c45f5c6da2a16c 3 | size 1954 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9b56fcbead5b3709c29df79f17a70b0c46d69187d27bfccbeac6e940a3827090 3 | size 7015 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:21af37abfca38156725b1bbdd9ea529ca9b3c63e859efc05449707c75966a043 3 | size 8833 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_06.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2d980790a6c956a374cefd759a67d528e183afb631027ebb1fffdebb31d6e1a3 3 | size 2092 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_07.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0e96c5434260dfc0163321ab20bdc32e86a62414302ffa823c6114c6a2ee943e 3 | size 1912 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_08.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ab80f2fd0209fb879d372c45b1fd895ee737497a299fa6be3269c328ec290f68 3 | size 635 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_09.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:46e1233f862fb4da9e7ab6821bb5614f5574bfc39d3199606628b91f05f82e1d 3 | size 2039 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_10.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:84b467f3e135ea8230167d79d2c0a6be2795de257e1eeae095528e94ec3d1082 3 | size 6154 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_11.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d965ceab2c2f4ee98e6849207016e2b7fbdd9a85ea5b4130acfbcc911a0d0105 3 | size 6051 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_12.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7b05f2a01ba7e8ee1ef8652b4422eb1dd2187eab0bfafafcb34b840bb6efb16a 3 | size 6411 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_13.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9b1f482f45f00baef9c991912e14052cfccfae0a847409c94b32cf5081428318 3 | size 6635 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_09.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d057e30b150968630e3f61aec6ed7594338705fda3d929892b48d84cc5e34010 3 | size 635 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_07.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1c1dd4fd069508277a902b209d2cc1366f07ad751b586dd5d8c1b489458c05d3 3 | size 635 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d19f080106264131c3a8c12ce93f8a45514a7a27d6b3c0f87478d00500259c65 3 | size 6703 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ec1e83ddff3d8f8cba9305fc26bb9c29f6c1d7e92adc96d7fba7c6c99d40d955 3 | size 2004 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:322d269e7ef8885d2245f518a0bf669a060a459ea18d55107b4beacca8c24acf 3 | size 1333 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:450cf635d6d2781f4e64348bfd497da2df5ea3455e212c4e873c14c439ce4d28 3 | size 1954 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:87ca0550ef9b1990309f622b71f56132a565ebc6b048743e2151f451473b7f51 3 | size 7015 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_06.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f081cfcd633009f2d3a9b6a497f33196f48a4f81ae3cbad06d4817a8b415e33b 3 | size 8833 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_07.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1aa0dad13979cfd12c56b0cce9b1ad81047a30228e399600d0a018880c74c6e0 3 | size 2092 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_08.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0796bda23090dd588fc9dd5b2943b24f5fc5affdeca46583f8149efc9bb6ab33 3 | size 1916 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_09.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7487e63b49bb45f229840a3f6c96dce587563734b0a23e11fb37b3593848fcef 3 | size 635 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_10.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1adba454c5c169275c335897dcb31d6016086a85944ddb8dd9de8f6f39d98770 3 | size 2007 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_11.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:ac9fc117af85f4a572a100ef62ceaa9fe108cd5a050db353f49c1ae912886f25 3 | size 6107 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_12.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1ba59aedfdc32d7a2f3e3cbf84bb24e5076e325e1aecfc24611de2bd081f9097 3 | size 6073 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_13.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0c6054d12e4fd15bb5e5232b5cb8785ec46e269c53225b5b721b2b8ce17ca2f1 3 | size 6427 4 | -------------------------------------------------------------------------------- /entities/weapon/assets/textures/muzzle_flash.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:54d88839ece6027189c3f6c374a82b0a62b1774b731093d4587e909538044c52 3 | size 79005 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8e86396e4925a54e4efe989e7e603d2292577cfd5ac137a9e31f256413b0b417 3 | size 6706 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:69ee5db94d08594fe58fe8a6c0803183004cdc1fe2ff2b3a5d63d9a12e90841a 3 | size 2004 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:196d318d02553262ca815b885dfde27089354f48837e9840a16ccaa2d5f2bc86 3 | size 1333 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b1582c14e845c222deb5e24a89007b65cc9b9f7e3d9f3124a9261050ce7636b5 3 | size 1954 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:065688f6680f60cad8d911b7ff85bcdf5be8e87bef253a09535433c6bc6ab51d 3 | size 7015 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_06.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c267e8944c15cbeba31e1d81403f6928183ceaedbdb6c2f60e53e1cb811f1bc0 3 | size 8841 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_07.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d78d2cdb18e877c685c1c943a53da1a274be4c4b8a7031d126e2902ab69c3bca 3 | size 2092 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_08.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:06cb9cc3a4aa09b8e200b7d8cb7f4394b9ee9aef261f362517de05c2c5304bb4 3 | size 1916 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_10.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:806b4a599635ada635c042d06cc34f6404846ff1fd452bf20e6c1348c76df948 3 | size 2007 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_11.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9d0e5075673e191d05bb47026f5a7a5b5e451caa47be2f7b5477a96731bc59fc 3 | size 6101 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_12.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6c595d39e95f723a092960d724af4ef88cd72494c6622fd7f1ee850b21c7fa0f 3 | size 6079 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_13.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3b21eef15d7ae12b5655aebea503aa267776af19c18a5036bc4b97aa3076c4fa 3 | size 6479 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4aae886c87b41c48c69683428b7043ea2ddb30101bd3cd7cebe16ef774741ee0 3 | size 1333 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:42faf3cb8f2169e2c60a7957d47b1b98109abca72f9c95e6ebd9617dcba08430 3 | size 1954 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f4bd31987e85d8ef6f12e8f92a3cce3bd3921d30f7e0e907e45938b5dd7a61fa 3 | size 7015 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:af3ed6a6e1376f5a266e9823cdf7821b598730896dc5d3b5ebd58f86ca353a26 3 | size 7498 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bb761d451a464d559ec123e1ab9cbdb7ffcbbadc95d2e4d84141d55532fe1fec 3 | size 2092 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_06.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d6865d9338f5760b5f2c9188101edb005a345140d3eeb3170ea6d5228e180f68 3 | size 1912 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_08.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:eeb46f53add1f27bf18bb3d4f408cb5acfcc81f215dd289eadcd1444dd6a7b9a 3 | size 2007 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_09.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2156b8eae883b97921591bb5277dd9aa2b26d0972278a4edc426a2c66dbb79f1 3 | size 6072 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_10.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f9ddb9436216fab607c1100c2102b7ab40ed8893ad2496cdb2fae0498759fcc9 3 | size 6068 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_11.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:dc756e7eba8506c915961d61b3b196fb8c7803ee4945dccf98b0424a63e320f5 3 | size 6415 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_12.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0e156b16cda47ecc5f24307090eb944ffe56a0d7a19b8651ae354f9a2c5ac5d3 3 | size 6194 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_13.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:24420c25a4deb64093ae8a6576e2ef7f8db60220fda7be8d8c549846fb1360cf 3 | size 2004 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4e7b5f3d0392c34dd6ce9f44e501dd43ecd91502da33589c9305a34ec17bde94 3 | size 6688 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a4b72c53867988c20fd049836e5641de377ee6246f10bc479f68e46014aec58e 3 | size 2004 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9fadf52e460e536604f18618163f54bfe18d07b070660087864d7ac11424b0dd 3 | size 1333 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c9b8892a33d3f7b5e56122338c8eb6556f58e562eac213d8f912b96622001996 3 | size 1954 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f2d663061baf28354f69e2756b581d301dc225cd14f4858fb2327c409de3c96a 3 | size 7015 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_06.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4f837d5ab06620829787807111263b589fa1cec94eb3ffdf6b4820b98b13d3b5 3 | size 8844 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_07.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e6f01b5ae1b315e2ae6dbe9c2ee3c22053479ecb4bed90910f1142d0563b8d83 3 | size 2092 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_08.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:51e2bda8c2a6736ba8ac15a8c4fab9b92239bbeef73b4fc65cc9ee53545dcd78 3 | size 1916 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_09.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6fb33751454dcfeb0181041e2e70d438bd3847be1fc8c72123a9477d22dc5c34 3 | size 635 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_10.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0df0e6619c45484385dd3ec3f750e5e2993d0ce6dad19fabfa53c96e910f4561 3 | size 2007 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_11.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:50e00ca6ac1ac1267e51203f8635778e03951e2669a8d000de7f2cd25ee7f62d 3 | size 6104 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_12.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3506ea2edff2167f67675041c18920cf2f0105e22c8a1dce91dc6a899722e99c 3 | size 6073 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_13.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0377913e8b9dada58802640f7818561f82d6f4927e36a31c30766fa327b0faf3 3 | size 6465 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_01.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d44fdeca0579f7811387b9d1cbf781ec64f48d10a985538e10af99e7b0d2346d 3 | size 6615 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_02.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a75022baf95856c4be295f652fe3e6cd007dd2ad200638325149898d6d4aee91 3 | size 2004 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_03.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b63e622107d2541b7d411b08689cc3aafd9b1ba65827aeb3044e3f3ec2747eba 3 | size 1333 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_04.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1d03de685030df2f30caaf5bb236c9ee0b5a5551d29154806eb14e631f54c066 3 | size 1954 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_05.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1dfe6685a4b418d11c9f6694428f0ef48f101e3e2e09ce68bb0da52b4a239062 3 | size 7015 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_06.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:531de35eb48866d559e4cacb7b3de165233f7b4e202c32474b2c2bc75e7df854 3 | size 8841 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_07.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7c8adabf9b1c46f3293c6fc09a0ce9c88ed3ccb5763ce9f46d1a1e558053da26 3 | size 2092 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_08.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:56de5662bd6810efa5fae5f2cf86def1b423e73136c3207a8ca3a5fc45298bf0 3 | size 1916 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_09.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b7fc175a0cff2d6ba57191caac19fdb02cf576dd2fd8292aaca669e000db3759 3 | size 635 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_10.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d0202fee1e10d6436f8039123210bdccd863ac15d1633c7e7ca343eb37a00ba2 3 | size 2007 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_11.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bf90c7df78d5ae54f9631d58a8f2b52fea67e9e9fb0c1d069c632a6d72e2eb41 3 | size 6107 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_12.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:acdef937e72f4bcff8b426e3b4335eed760c1344fbb22b403e7179a1164175c3 3 | size 6078 4 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_13.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cff141ed75deb945bdfe61570b7f3b5ea8f2c37613b757e7ea64c5b92c984993 3 | size 6449 4 | -------------------------------------------------------------------------------- /entities/weapon/assets/tools/spray_path_designer.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://hjnl72g4qbay"] 2 | 3 | [ext_resource type="Curve2D" uid="uid://tfks2n55dk16" path="res://entities/weapon/assets/resources/ak.tres" id="1_hoy33"] 4 | 5 | [node name="SprayPathDesigner" type="Path2D"] 6 | curve = ExtResource("1_hoy33") 7 | -------------------------------------------------------------------------------- /entities/weapon/assets/resources/pistol_recoil_curve.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Curve" format=3 uid="uid://b3ih7qoj6oywl"] 2 | 3 | [resource] 4 | min_value = -1.0 5 | _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.114, -0.25), 0.0, 0.0, 0, 0, Vector2(0.258, 0.15), 0.0, 0.0, 0, 0, Vector2(0.369, 0), 0.0, 0.0, 0, 0] 6 | point_count = 4 7 | -------------------------------------------------------------------------------- /scenes/assets/floor_material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dqyggwkbhvu1l"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://dw5mk6qrfjn7b" path="res://addons/kenney_prototype_textures/dark/texture_09.png" id="1_6je6n"] 4 | 5 | [resource] 6 | albedo_texture = ExtResource("1_6je6n") 7 | uv1_triplanar = true 8 | -------------------------------------------------------------------------------- /scenes/assets/obstacle_material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cgbjgxlm3fo42"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://xrjdme522osk" path="res://addons/kenney_prototype_textures/purple/texture_04.png" id="1_osr7b"] 4 | 5 | [resource] 6 | albedo_texture = ExtResource("1_osr7b") 7 | uv1_triplanar = true 8 | -------------------------------------------------------------------------------- /scenes/bullet_decal/bullet_decal.gd: -------------------------------------------------------------------------------- 1 | extends Node3D 2 | 3 | 4 | const FADE_OUT_DURATION := 0.5 5 | 6 | @onready var mesh := $MeshInstance3D as MeshInstance3D 7 | 8 | 9 | func _on_life_timer_timeout() -> void: 10 | var tween := create_tween() 11 | tween.tween_property(mesh, ^"transparency", 0.0, FADE_OUT_DURATION) 12 | tween.tween_callback(queue_free) 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Normalize EOL for all files that Git considers text files. 2 | * text=auto eol=lf 3 | *.svg filter=lfs diff=lfs merge=lfs -text 4 | *.png filter=lfs diff=lfs merge=lfs -text 5 | *.obj filter=lfs diff=lfs merge=lfs -text 6 | *.wav filter=lfs diff=lfs merge=lfs -text 7 | *.glb filter=lfs diff=lfs merge=lfs -text 8 | *.gif filter=lfs diff=lfs merge=lfs -text 9 | -------------------------------------------------------------------------------- /script_templates/Node/state.gd: -------------------------------------------------------------------------------- 1 | extends State 2 | 3 | 4 | func enter() -> void: 5 | return 6 | 7 | 8 | func exit() -> void: 9 | return 10 | 11 | 12 | func handle_input(event: InputEvent) -> InputEvent: 13 | return super(event) 14 | 15 | 16 | func update(_delta: float) -> void: 17 | return 18 | 19 | 20 | func _on_animation_finished() -> void: 21 | return 22 | -------------------------------------------------------------------------------- /entities/weapon/assets/resources/akm_recoil_curve.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Curve" format=3 uid="uid://cefw25gc28nry"] 2 | 3 | [resource] 4 | min_value = -1.0 5 | _data = [Vector2(0, 0.420144), 0.0, 0.0, 0, 0, Vector2(0.141643, -0.201913), 0.0, 0.0, 0, 0, Vector2(0.29745, 0.129649), 0.0, 0.0, 0, 0, Vector2(0.459364, 0.00863314), 0.0, 0.0345982, 0, 1, Vector2(1, 0.0273381), 0.0, 0.0, 0, 0] 6 | point_count = 5 7 | -------------------------------------------------------------------------------- /scenes/assets/wall_material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cmrq1lp2x1tmt"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://c3he5glkx53en" path="res://addons/kenney_prototype_textures/orange/texture_10.png" id="1_wj7dc"] 4 | 5 | [resource] 6 | albedo_color = Color(0.866667, 0.890196, 0.698039, 1) 7 | albedo_texture = ExtResource("1_wj7dc") 8 | uv1_triplanar = true 9 | -------------------------------------------------------------------------------- /entities/weapon/weapon_mesh.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends MeshInstance3D 3 | ## Tool script to adjust all ShaderMaterial's FOV. 4 | ## This is needed for the models' shader, which is used to fix gun clipping. 5 | ## Make sure to set it equal to the camera's FOV. 6 | 7 | 8 | @export var viewmodel_fov: float = 75.0: 9 | set = set_viewmodel_fov 10 | 11 | 12 | func set_viewmodel_fov(value: float) -> void: 13 | viewmodel_fov = value 14 | RenderingServer.global_shader_parameter_set(&"viewmodel_fov", value) 15 | -------------------------------------------------------------------------------- /entities/weapon/assets/sounds/reload.mp3.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="mp3" 4 | type="AudioStreamMP3" 5 | uid="uid://by0mybqfl2lsa" 6 | path="res://.godot/imported/reload.mp3-c030090ecb1c1f1fa833805bbb356c41.mp3str" 7 | 8 | [deps] 9 | 10 | source_file="res://entities/weapon/assets/sounds/reload.mp3" 11 | dest_files=["res://.godot/imported/reload.mp3-c030090ecb1c1f1fa833805bbb356c41.mp3str"] 12 | 13 | [params] 14 | 15 | loop=false 16 | loop_offset=0 17 | bpm=0 18 | beat_count=0 19 | bar_beats=4 20 | -------------------------------------------------------------------------------- /entities/player/states/jump.gd: -------------------------------------------------------------------------------- 1 | extends PlayerState 2 | 3 | 4 | @export var jump_power := 7.5 5 | 6 | 7 | func enter() -> void: 8 | player.velocity.y = jump_power 9 | 10 | 11 | func update(delta: float) -> void: 12 | if player.is_on_floor(): 13 | if _get_normalized_direction(): 14 | if Input.is_action_pressed(&"sprint") and player.weapon.can_sprint: 15 | finished.emit("sprint") 16 | else: 17 | finished.emit("walk") 18 | else: 19 | finished.emit("idle") 20 | 21 | _move(delta) 22 | -------------------------------------------------------------------------------- /entities/weapon/states/idle.gd: -------------------------------------------------------------------------------- 1 | extends State 2 | 3 | 4 | @onready var weapon: Weapon = owner 5 | 6 | 7 | func enter() -> void: 8 | (weapon.get_node("AnimationPlayer") as AnimationPlayer).play("idling", 0.2) 9 | 10 | 11 | func handle_input(event: InputEvent) -> InputEvent: 12 | if event.is_action_pressed(&"fire1"): 13 | finished.emit("shoot" if weapon.cur_ammo else "reload") 14 | elif event.is_action_pressed(&"reload") and not weapon.is_mag_full(): 15 | finished.emit("reload") 16 | 17 | return super(event) 18 | -------------------------------------------------------------------------------- /entities/fsm/state.gd: -------------------------------------------------------------------------------- 1 | class_name State 2 | extends Node 3 | 4 | 5 | signal finished(next_state_name: String) 6 | 7 | 8 | # Initialize the state. E.g. change the animation 9 | func enter() -> void: 10 | return 11 | 12 | 13 | # Clean up the state. Reinitialize values like a timer 14 | func exit() -> void: 15 | return 16 | 17 | 18 | func handle_input(event: InputEvent) -> InputEvent: 19 | return event 20 | 21 | 22 | func update(_delta: float) -> void: 23 | return 24 | 25 | 26 | func _on_animation_finished() -> void: 27 | return 28 | -------------------------------------------------------------------------------- /entities/weapon/states/reload.gd: -------------------------------------------------------------------------------- 1 | extends State 2 | 3 | 4 | @onready var reload_timer := $ReloadTimer as Timer 5 | 6 | 7 | func enter() -> void: 8 | (owner as Weapon).can_sprint = false 9 | reload_timer.start((owner as Weapon).reload_time) 10 | (owner as Weapon).anim_player.play("reloading") 11 | 12 | 13 | func exit() -> void: 14 | (owner as Weapon).can_sprint = true 15 | reload_timer.stop() 16 | 17 | 18 | func _on_reload_timer_timeout() -> void: 19 | (owner as Weapon).cur_ammo = (owner as Weapon).mag_size 20 | finished.emit("idle" if not Input.is_action_pressed(&"fire1") else "shoot") 21 | -------------------------------------------------------------------------------- /entities/weapon/weapon_fsm.gd: -------------------------------------------------------------------------------- 1 | class_name WeaponStateMachine 2 | extends StateMachine 3 | 4 | 5 | func _ready() -> void: 6 | # FSM initializations 7 | for state_node in get_children(): 8 | (state_node as State).finished.connect(_change_state) 9 | states_map[String(state_node.name).to_lower()] = state_node 10 | initialize(start_state_path) 11 | 12 | 13 | # Special case: we want the player (parent) to control the sprint state. 14 | # This method is used to "synchronize" sprinting between player and weapon 15 | func force_toggle_sprint(enabled: bool) -> void: 16 | _change_state("sprint" if enabled else "idle") 17 | -------------------------------------------------------------------------------- /interfaces/hud/hud.gd: -------------------------------------------------------------------------------- 1 | class_name Hud 2 | extends Control 3 | 4 | 5 | @onready var crosshair := $Crosshair as TextureRect 6 | @onready var fps_label := $FpsLabel as Label 7 | @onready var player_state_label := $PlayerStateLabel as Label 8 | @onready var weapon_state_label := $WeaponStateLabel as Label 9 | @onready var heat_label := $HeatLabel as Label 10 | @onready var ammo_label := $AmmoLabel as Label 11 | 12 | 13 | func _process(_delta: float) -> void: 14 | fps_label.text = "FPS: %s" % [Engine.get_frames_per_second()] 15 | 16 | 17 | func _on_weapon_heat_changed(value: int) -> void: 18 | heat_label.text = str(value) 19 | -------------------------------------------------------------------------------- /entities/player/states/idle.gd: -------------------------------------------------------------------------------- 1 | extends PlayerState 2 | 3 | 4 | func enter() -> void: 5 | player.speed = 0 6 | if player.weapon: 7 | player.weapon.recoil_randomness = player.weapon.DEFAULT_RECOIL_RANDOMNESS 8 | 9 | 10 | func handle_input(event: InputEvent) -> InputEvent: 11 | if event.is_action_pressed(&"crouch"): 12 | finished.emit("crouch") 13 | return super(event) 14 | 15 | 16 | func update(delta: float) -> void: 17 | if _get_normalized_direction(): 18 | if Input.is_action_pressed(&"sprint") and player.weapon.can_sprint: 19 | finished.emit("sprint") 20 | else: 21 | finished.emit("walk") 22 | _move(delta) 23 | -------------------------------------------------------------------------------- /entities/player/states/walk.gd: -------------------------------------------------------------------------------- 1 | extends PlayerState 2 | 3 | 4 | @export var default_speed := 10 5 | 6 | 7 | func enter() -> void: 8 | player.speed = default_speed 9 | player.weapon.recoil_randomness *= 1.5 10 | 11 | 12 | func handle_input(event: InputEvent) -> InputEvent: 13 | if event.is_action_pressed(&"crouch"): 14 | finished.emit("crouch") 15 | elif event.is_action_pressed(&"sprint") and player.weapon.can_sprint: 16 | finished.emit("sprint") 17 | 18 | return super(event) 19 | 20 | 21 | func update(delta: float) -> void: 22 | if not _get_normalized_direction(): 23 | finished.emit("idle") 24 | 25 | _move(delta) 26 | -------------------------------------------------------------------------------- /entities/weapon/assets/sounds/gun_fire.wav.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wav" 4 | type="AudioStreamWAV" 5 | uid="uid://dlj8n8h2c78nj" 6 | path="res://.godot/imported/gun_fire.wav-fbbbd26281cfece33744b924e79f4b94.sample" 7 | 8 | [deps] 9 | 10 | source_file="res://entities/weapon/assets/sounds/gun_fire.wav" 11 | dest_files=["res://.godot/imported/gun_fire.wav-fbbbd26281cfece33744b924e79f4b94.sample"] 12 | 13 | [params] 14 | 15 | force/8_bit=false 16 | force/mono=false 17 | force/max_rate=false 18 | force/max_rate_hz=44100 19 | edit/trim=false 20 | edit/normalize=false 21 | edit/loop_mode=0 22 | edit/loop_begin=0 23 | edit/loop_end=-1 24 | compress/mode=0 25 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | Prototype Textures 1.0 4 | 5 | Created/distributed by Kenney (www.kenney.nl) 6 | Creation date: 08-04-2020 7 | 8 | ------------------------------ 9 | 10 | License: (Creative Commons Zero, CC0) 11 | http://creativecommons.org/publicdomain/zero/1.0/ 12 | 13 | This content is free to use in personal, educational and commercial projects. 14 | Support us by crediting Kenney or www.kenney.nl (this is not mandatory) 15 | 16 | ------------------------------ 17 | 18 | Donate: http://support.kenney.nl 19 | Request: http://request.kenney.nl 20 | Patreon: http://patreon.com/kenney/ 21 | 22 | Follow on Twitter for updates: 23 | http://twitter.com/KenneyNL 24 | -------------------------------------------------------------------------------- /entities/weapon/states/sprint.gd: -------------------------------------------------------------------------------- 1 | extends State 2 | ## Weapon's sprint state. 3 | ## This state is an exception, because it's not triggered by other weapon states, 4 | ## but it's forced by the state machine, which in turn gets notified by the 5 | ## player script about when to toggle this state. 6 | 7 | 8 | @export var bob_frequency_multiplier := 2 9 | @export var bob_amplitude_multiplier := 4 10 | 11 | 12 | func enter() -> void: 13 | (owner as Weapon).bob_frequency *= bob_frequency_multiplier 14 | (owner as Weapon).bob_amplitude *= bob_amplitude_multiplier 15 | 16 | 17 | func exit() -> void: 18 | (owner as Weapon).bob_frequency /= bob_frequency_multiplier 19 | (owner as Weapon).bob_amplitude /= bob_amplitude_multiplier 20 | -------------------------------------------------------------------------------- /entities/player/states/crouch.gd: -------------------------------------------------------------------------------- 1 | extends PlayerState 2 | 3 | 4 | @export var crouch_speed := 6 5 | 6 | 7 | func enter() -> void: 8 | player.anim_player.play("player/crouch") 9 | player.speed = crouch_speed 10 | player.weapon.recoil_randomness /= 2.0 11 | 12 | 13 | func exit() -> void: 14 | player.anim_player.play_backwards("player/crouch") 15 | 16 | 17 | func handle_input(event: InputEvent) -> InputEvent: 18 | if event.is_action_pressed(&"crouch"): 19 | finished.emit("idle" if not _get_normalized_direction() else "walk") 20 | elif event.is_action_pressed(&"sprint") and player.weapon.can_sprint: 21 | finished.emit("sprint") 22 | 23 | return super(event) 24 | 25 | 26 | func update(delta: float) -> void: 27 | _move(delta) 28 | -------------------------------------------------------------------------------- /entities/weapon/assets/resources/ak.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Curve2D" format=3 uid="uid://tfks2n55dk16"] 2 | 3 | [resource] 4 | _data = { 5 | "points": PackedVector2Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -3, 0, 0, 0, 0, 0, -12, 0, 0, 0, 0, 1, -27, 0, 0, 0, 0, 2, -43, 0, 0, 0, 0, -5, -56, 0, 0, 0, 0, -9, -69, 0, 0, 0, 0, -15, -79, 0, 0, 0, 0, -7, -88, 0, 0, 0, 0, 14, -85, 0, 0, 0, 0, 24, -88, 0, 0, 0, 0, 38, -91, 0, 0, 0, 0, 40, -93, 0, 0, 0, 0, 25, -93, 0, 0, 0, 0, 21, -95, 0, 0, 0, 0, 17, -92, 0, 0, 0, 0, 10, -97, 0, 0, 0, 0, 4, -99, 0, 0, 0, 0, -8, -101, 0, 0, 0, 0, -14, -99, 0, 0, 0, 0, -15, -97, 0, 0, 0, 0, -18, -96, 0, 0, 0, 0, -27, -96, 0, 0, 0, 0, -22, -102, 0, 0, 0, 0, -20, -101, 0, 0, 0, 0, -12, -102, 0, 0, 0, 0, -11, -103, 0, 0, 0, 0, 3, -100, 0, 0, 0, 0, 24, -95, 0, 0, 0, 0, 33, -93) 6 | } 7 | point_count = 30 8 | -------------------------------------------------------------------------------- /entities/player/player_fsm.gd: -------------------------------------------------------------------------------- 1 | class_name PlayerStateMachine 2 | extends StateMachine 3 | 4 | 5 | var can_sprint := true 6 | 7 | @onready var sprint_cooldown := Timer.new() 8 | 9 | 10 | func _ready() -> void: 11 | # FSM initializations 12 | for state_node in get_children(): 13 | (state_node as State).finished.connect(_change_state) 14 | states_map[String(state_node.name).to_lower()] = state_node 15 | initialize(start_state_path) 16 | # sprint cooldown 17 | add_child(sprint_cooldown) 18 | sprint_cooldown.one_shot = true 19 | sprint_cooldown.timeout.connect(_on_sprint_cooldown_timeout) 20 | 21 | 22 | func _change_state(state_name: String) -> void: 23 | if state_name == "sprint" and not can_sprint: 24 | return 25 | super(state_name) 26 | 27 | 28 | func _on_sprint_cooldown_timeout() -> void: 29 | can_sprint = true 30 | 31 | 32 | func _on_sprint_exited(wait_time: float, time_left: float) -> void: 33 | can_sprint = false 34 | sprint_cooldown.start(wait_time - time_left) 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_01.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://2tvygs75gmtv" 6 | path="res://.godot/imported/texture_01.png-60e3b3d3143b179c069dbcbff77ff160.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_01.png" 14 | dest_files=["res://.godot/imported/texture_01.png-60e3b3d3143b179c069dbcbff77ff160.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_02.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b4djhcnr1lhsq" 6 | path="res://.godot/imported/texture_02.png-814d4f515892bb8274d285748f4a73a0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_02.png" 14 | dest_files=["res://.godot/imported/texture_02.png-814d4f515892bb8274d285748f4a73a0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_03.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://3gd3y5hp63mb" 6 | path="res://.godot/imported/texture_03.png-eef45c22e5a84c5df22e7f80e41112c6.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_03.png" 14 | dest_files=["res://.godot/imported/texture_03.png-eef45c22e5a84c5df22e7f80e41112c6.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_04.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cg2fmoi4ywoxy" 6 | path="res://.godot/imported/texture_04.png-af505c12b2a7903458bb29299e718506.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_04.png" 14 | dest_files=["res://.godot/imported/texture_04.png-af505c12b2a7903458bb29299e718506.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_05.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://6dnollva8ycg" 6 | path="res://.godot/imported/texture_05.png-ed8122ecdc41ff5aeccab84e8db1e4f0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_05.png" 14 | dest_files=["res://.godot/imported/texture_05.png-ed8122ecdc41ff5aeccab84e8db1e4f0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_06.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ctdkh6pm3jvqp" 6 | path="res://.godot/imported/texture_06.png-004ed3d5b88361cdfb83a20714e917e7.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_06.png" 14 | dest_files=["res://.godot/imported/texture_06.png-004ed3d5b88361cdfb83a20714e917e7.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_07.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bikfcqjdck7h3" 6 | path="res://.godot/imported/texture_07.png-7c77ff22e41b4a54319073cb71530d81.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_07.png" 14 | dest_files=["res://.godot/imported/texture_07.png-7c77ff22e41b4a54319073cb71530d81.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_08.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://db2bkeqpgq2ci" 6 | path="res://.godot/imported/texture_08.png-5883ddd047173c8b118ead887054e6fc.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_08.png" 14 | dest_files=["res://.godot/imported/texture_08.png-5883ddd047173c8b118ead887054e6fc.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_10.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ckrtcqnexypxh" 6 | path="res://.godot/imported/texture_10.png-1e788999a192eabd201c3b3435475799.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_10.png" 14 | dest_files=["res://.godot/imported/texture_10.png-1e788999a192eabd201c3b3435475799.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_11.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://k008ngpcxhm4" 6 | path="res://.godot/imported/texture_11.png-f61ad46caf1a41d85454e490ec43c8ec.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_11.png" 14 | dest_files=["res://.godot/imported/texture_11.png-f61ad46caf1a41d85454e490ec43c8ec.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_12.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dhdpl3kirgbcn" 6 | path="res://.godot/imported/texture_12.png-aa893b2c5354267551e55ec14bb1999b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_12.png" 14 | dest_files=["res://.godot/imported/texture_12.png-aa893b2c5354267551e55ec14bb1999b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_13.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cym4y63i4iet0" 6 | path="res://.godot/imported/texture_13.png-51cb3f38ea774c85cb3ad561d20c5b53.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/dark/texture_13.png" 14 | dest_files=["res://.godot/imported/texture_13.png-51cb3f38ea774c85cb3ad561d20c5b53.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_03.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://8xwe84eowpjy" 6 | path="res://.godot/imported/texture_03.png-3fec31a20982e9bd2e5e1aa731ea99cf.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_03.png" 14 | dest_files=["res://.godot/imported/texture_03.png-3fec31a20982e9bd2e5e1aa731ea99cf.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_06.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://7chaixl54pnh" 6 | path="res://.godot/imported/texture_06.png-01c48f82ab8bc613ec4efc2c2c669b12.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_06.png" 14 | dest_files=["res://.godot/imported/texture_06.png-01c48f82ab8bc613ec4efc2c2c669b12.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_08.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://d8ka1e0idyle" 6 | path="res://.godot/imported/texture_08.png-d1888869b0d1d3a0ab2d517cbac7820a.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_08.png" 14 | dest_files=["res://.godot/imported/texture_08.png-d1888869b0d1d3a0ab2d517cbac7820a.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_10.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://hp5umh5k40yv" 6 | path="res://.godot/imported/texture_10.png-3f72abba172432380bd86a508e997833.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_10.png" 14 | dest_files=["res://.godot/imported/texture_10.png-3f72abba172432380bd86a508e997833.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_03.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://7jrru6y0fxa8" 6 | path="res://.godot/imported/texture_03.png-6e55012c4e1c3f4d809747f3852d75ad.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_03.png" 14 | dest_files=["res://.godot/imported/texture_03.png-6e55012c4e1c3f4d809747f3852d75ad.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_01.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://brfi6jusuvpxa" 6 | path="res://.godot/imported/texture_01.png-44f9331a67ce6f062549bc436289d3c9.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_01.png" 14 | dest_files=["res://.godot/imported/texture_01.png-44f9331a67ce6f062549bc436289d3c9.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_02.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://w0vf7d0dop14" 6 | path="res://.godot/imported/texture_02.png-bb6eefc15212ba5b8098e9e672c21f12.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_02.png" 14 | dest_files=["res://.godot/imported/texture_02.png-bb6eefc15212ba5b8098e9e672c21f12.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_03.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bg0qljvnf4rq8" 6 | path="res://.godot/imported/texture_03.png-dcaf463e914c7896b38a95f49416e75a.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_03.png" 14 | dest_files=["res://.godot/imported/texture_03.png-dcaf463e914c7896b38a95f49416e75a.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_04.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://jvqd4d27nu5x" 6 | path="res://.godot/imported/texture_04.png-1d63b32ccdbf1561b92a917dfb5f84ea.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_04.png" 14 | dest_files=["res://.godot/imported/texture_04.png-1d63b32ccdbf1561b92a917dfb5f84ea.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_05.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dyiixhdd4cfqm" 6 | path="res://.godot/imported/texture_05.png-a44b3d75bc02c9b33606b6fe46e8c886.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_05.png" 14 | dest_files=["res://.godot/imported/texture_05.png-a44b3d75bc02c9b33606b6fe46e8c886.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_06.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://boejpaatrf46q" 6 | path="res://.godot/imported/texture_06.png-566b521660a0c01cabf8778c12eb1f51.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_06.png" 14 | dest_files=["res://.godot/imported/texture_06.png-566b521660a0c01cabf8778c12eb1f51.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_07.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dytb67wretng7" 6 | path="res://.godot/imported/texture_07.png-ba1d32ad61ab49ac0edaf4930e4d081f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_07.png" 14 | dest_files=["res://.godot/imported/texture_07.png-ba1d32ad61ab49ac0edaf4930e4d081f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_08.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://chgwwcr33h1dt" 6 | path="res://.godot/imported/texture_08.png-add0c08e78cde6ad4eaac64e7b9a9204.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_08.png" 14 | dest_files=["res://.godot/imported/texture_08.png-add0c08e78cde6ad4eaac64e7b9a9204.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_09.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bk4kws00tm5vh" 6 | path="res://.godot/imported/texture_09.png-4fe3f0e3bd94fb29789b41c9100c3ac9.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_09.png" 14 | dest_files=["res://.godot/imported/texture_09.png-4fe3f0e3bd94fb29789b41c9100c3ac9.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_10.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bxfjas0js10c3" 6 | path="res://.godot/imported/texture_10.png-6fd251723c4fc19b26785b571c62b6ac.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_10.png" 14 | dest_files=["res://.godot/imported/texture_10.png-6fd251723c4fc19b26785b571c62b6ac.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_11.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://c26drw7qipima" 6 | path="res://.godot/imported/texture_11.png-44ab559d4c1ab996ce064426a9e01b38.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_11.png" 14 | dest_files=["res://.godot/imported/texture_11.png-44ab559d4c1ab996ce064426a9e01b38.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_12.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bfp87men1m84k" 6 | path="res://.godot/imported/texture_12.png-6af19821abb02cb29bb6ed24ee4670e0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_12.png" 14 | dest_files=["res://.godot/imported/texture_12.png-6af19821abb02cb29bb6ed24ee4670e0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/red/texture_13.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://d4i4yksw8oko6" 6 | path="res://.godot/imported/texture_13.png-891332ffbf32d9b94212aaf3a11a15a9.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/red/texture_13.png" 14 | dest_files=["res://.godot/imported/texture_13.png-891332ffbf32d9b94212aaf3a11a15a9.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_01.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bage1ox2clrrh" 6 | path="res://.godot/imported/texture_01.png-94ebd82494c839e91a05b9e1cc2750ca.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_01.png" 14 | dest_files=["res://.godot/imported/texture_01.png-94ebd82494c839e91a05b9e1cc2750ca.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_02.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b4l0tg8awmuus" 6 | path="res://.godot/imported/texture_02.png-aa1bb055b55bdc7c20e196b7286eebdf.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_02.png" 14 | dest_files=["res://.godot/imported/texture_02.png-aa1bb055b55bdc7c20e196b7286eebdf.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_04.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dhp6rle30nu68" 6 | path="res://.godot/imported/texture_04.png-4678cc1dfb831f775bdc30cfd7f78769.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_04.png" 14 | dest_files=["res://.godot/imported/texture_04.png-4678cc1dfb831f775bdc30cfd7f78769.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_05.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b7e0crahl1avx" 6 | path="res://.godot/imported/texture_05.png-8448519b39c1d98d64cf807b48969765.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_05.png" 14 | dest_files=["res://.godot/imported/texture_05.png-8448519b39c1d98d64cf807b48969765.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_07.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cgbgemnmdon4q" 6 | path="res://.godot/imported/texture_07.png-eec10b758cacbb71a02166a7f8cee6c0.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_07.png" 14 | dest_files=["res://.godot/imported/texture_07.png-eec10b758cacbb71a02166a7f8cee6c0.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_09.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dlaaslnqwkfls" 6 | path="res://.godot/imported/texture_09.png-a21adfe1a090b0dd8f0d376d9ee5f68e.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_09.png" 14 | dest_files=["res://.godot/imported/texture_09.png-a21adfe1a090b0dd8f0d376d9ee5f68e.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_11.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://c1hfl85edg1o3" 6 | path="res://.godot/imported/texture_11.png-ad76ef70f9eb459fb1e8d9ba9cc092c4.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_11.png" 14 | dest_files=["res://.godot/imported/texture_11.png-ad76ef70f9eb459fb1e8d9ba9cc092c4.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_12.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://djvb04od52wyw" 6 | path="res://.godot/imported/texture_12.png-d4577347200436d9060aa21fce76cd93.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_12.png" 14 | dest_files=["res://.godot/imported/texture_12.png-d4577347200436d9060aa21fce76cd93.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/green/texture_13.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cjx50kjuhxfcp" 6 | path="res://.godot/imported/texture_13.png-f5b9867fd39cd83793f3a92217d9eac6.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/green/texture_13.png" 14 | dest_files=["res://.godot/imported/texture_13.png-f5b9867fd39cd83793f3a92217d9eac6.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_01.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cpxxco6nh38o3" 6 | path="res://.godot/imported/texture_01.png-e10423e44834e1b4a90c3134e446b32d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_01.png" 14 | dest_files=["res://.godot/imported/texture_01.png-e10423e44834e1b4a90c3134e446b32d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_02.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dv1yknyamedkn" 6 | path="res://.godot/imported/texture_02.png-ffde4d38b35463525c3815b255790206.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_02.png" 14 | dest_files=["res://.godot/imported/texture_02.png-ffde4d38b35463525c3815b255790206.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_04.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bitbegqrckc3h" 6 | path="res://.godot/imported/texture_04.png-201edfe05d5c4f7f54049864048cfaf1.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_04.png" 14 | dest_files=["res://.godot/imported/texture_04.png-201edfe05d5c4f7f54049864048cfaf1.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_05.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bv6a6750r85jc" 6 | path="res://.godot/imported/texture_05.png-07ce2eafef84a176bcf77bc59cb1f6ec.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_05.png" 14 | dest_files=["res://.godot/imported/texture_05.png-07ce2eafef84a176bcf77bc59cb1f6ec.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_06.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://c2yb6tcc2ixyv" 6 | path="res://.godot/imported/texture_06.png-88331a9f246e47943dc01d0128a4ca4e.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_06.png" 14 | dest_files=["res://.godot/imported/texture_06.png-88331a9f246e47943dc01d0128a4ca4e.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_07.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ce2tr4g81apfm" 6 | path="res://.godot/imported/texture_07.png-ab5f4a6ad655d06104ea7939a06ec496.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_07.png" 14 | dest_files=["res://.godot/imported/texture_07.png-ab5f4a6ad655d06104ea7939a06ec496.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_08.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dvk1mah61l8bk" 6 | path="res://.godot/imported/texture_08.png-7b5c5c16cd076d2bbc9eeb33a454861b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_08.png" 14 | dest_files=["res://.godot/imported/texture_08.png-7b5c5c16cd076d2bbc9eeb33a454861b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_09.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cdyabt8s47pqu" 6 | path="res://.godot/imported/texture_09.png-53f655f3d7e1722128f99e8aff9071f9.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_09.png" 14 | dest_files=["res://.godot/imported/texture_09.png-53f655f3d7e1722128f99e8aff9071f9.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_10.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dp3a6qbah652a" 6 | path="res://.godot/imported/texture_10.png-499479b9aaf089d55adf67874bc0ff66.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_10.png" 14 | dest_files=["res://.godot/imported/texture_10.png-499479b9aaf089d55adf67874bc0ff66.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_11.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://byu1woruuhagy" 6 | path="res://.godot/imported/texture_11.png-4e4ade9ab136614b6cf0b0e879f1d510.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_11.png" 14 | dest_files=["res://.godot/imported/texture_11.png-4e4ade9ab136614b6cf0b0e879f1d510.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_12.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cb7x0sjf5eq35" 6 | path="res://.godot/imported/texture_12.png-8fe800bbb69d01cae0c0d84c062244bf.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_12.png" 14 | dest_files=["res://.godot/imported/texture_12.png-8fe800bbb69d01cae0c0d84c062244bf.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/light/texture_13.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bxjgr8me3afaq" 6 | path="res://.godot/imported/texture_13.png-a43b6ac63b0fe1c4a3f66335474e59b6.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/light/texture_13.png" 14 | dest_files=["res://.godot/imported/texture_13.png-a43b6ac63b0fe1c4a3f66335474e59b6.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_01.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bvw1mwagw2eci" 6 | path="res://.godot/imported/texture_01.png-2bf7db98e09b5b5073e8e8ca66419718.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_01.png" 14 | dest_files=["res://.godot/imported/texture_01.png-2bf7db98e09b5b5073e8e8ca66419718.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_02.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://k41rwftoss46" 6 | path="res://.godot/imported/texture_02.png-4eab4e19c2171e5b0668b65373b74c6d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_02.png" 14 | dest_files=["res://.godot/imported/texture_02.png-4eab4e19c2171e5b0668b65373b74c6d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_03.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://j6jaax8yqpx3" 6 | path="res://.godot/imported/texture_03.png-129b8387293b325752961580c78873e2.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_03.png" 14 | dest_files=["res://.godot/imported/texture_03.png-129b8387293b325752961580c78873e2.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_04.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://btb7dnxun3htt" 6 | path="res://.godot/imported/texture_04.png-e978f0e00463b6cfc60da06ec0abdb7a.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_04.png" 14 | dest_files=["res://.godot/imported/texture_04.png-e978f0e00463b6cfc60da06ec0abdb7a.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_05.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://5nxamu4deil0" 6 | path="res://.godot/imported/texture_05.png-57f4196ea276097368d03084372aa101.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_05.png" 14 | dest_files=["res://.godot/imported/texture_05.png-57f4196ea276097368d03084372aa101.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_06.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dsdy8djw53myx" 6 | path="res://.godot/imported/texture_06.png-96fbf63c84855b5763ca7a9239b4162f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_06.png" 14 | dest_files=["res://.godot/imported/texture_06.png-96fbf63c84855b5763ca7a9239b4162f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_07.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dwlbbu8xk1erc" 6 | path="res://.godot/imported/texture_07.png-3fa938673385861e205adbc05b5cb69f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_07.png" 14 | dest_files=["res://.godot/imported/texture_07.png-3fa938673385861e205adbc05b5cb69f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_08.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://din81a2mvovtg" 6 | path="res://.godot/imported/texture_08.png-9f039f47cba295ef5881d7b94c369b5d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_08.png" 14 | dest_files=["res://.godot/imported/texture_08.png-9f039f47cba295ef5881d7b94c369b5d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_09.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bq4xl8pnsik8n" 6 | path="res://.godot/imported/texture_09.png-d3e0d0da868b68102c983480f9cde71d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_09.png" 14 | dest_files=["res://.godot/imported/texture_09.png-d3e0d0da868b68102c983480f9cde71d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_11.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://drq7ijsdo42s" 6 | path="res://.godot/imported/texture_11.png-ebf2797e5f22648b239ddd9dce347372.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_11.png" 14 | dest_files=["res://.godot/imported/texture_11.png-ebf2797e5f22648b239ddd9dce347372.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_12.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://drt16i28dkdwf" 6 | path="res://.godot/imported/texture_12.png-079a27ce3f0ee0e1854090577bd0ba2a.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_12.png" 14 | dest_files=["res://.godot/imported/texture_12.png-079a27ce3f0ee0e1854090577bd0ba2a.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_13.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://byvvw0uytrugy" 6 | path="res://.godot/imported/texture_13.png-a11a0cfe132bc07bf4c480fd4334a284.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/orange/texture_13.png" 14 | dest_files=["res://.godot/imported/texture_13.png-a11a0cfe132bc07bf4c480fd4334a284.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_01.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://5nrvvl3rssot" 6 | path="res://.godot/imported/texture_01.png-38f28acdb9a95ea2efd835531b47e519.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_01.png" 14 | dest_files=["res://.godot/imported/texture_01.png-38f28acdb9a95ea2efd835531b47e519.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_02.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://l05jdhue3qdf" 6 | path="res://.godot/imported/texture_02.png-fcb52d424cd62d43221e4153fa3176f8.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_02.png" 14 | dest_files=["res://.godot/imported/texture_02.png-fcb52d424cd62d43221e4153fa3176f8.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_05.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cxtlgxol7t8vd" 6 | path="res://.godot/imported/texture_05.png-888b467a21712cbc594106138f9173b8.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_05.png" 14 | dest_files=["res://.godot/imported/texture_05.png-888b467a21712cbc594106138f9173b8.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_06.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bw8hy342p60yr" 6 | path="res://.godot/imported/texture_06.png-352782bc60b4b3fe4a632b0a6af5553d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_06.png" 14 | dest_files=["res://.godot/imported/texture_06.png-352782bc60b4b3fe4a632b0a6af5553d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_07.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b3civcg7hniiu" 6 | path="res://.godot/imported/texture_07.png-042b529a59b56931d5b854290aa24a7f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_07.png" 14 | dest_files=["res://.godot/imported/texture_07.png-042b529a59b56931d5b854290aa24a7f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_08.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bbn3d6nbg4bqn" 6 | path="res://.godot/imported/texture_08.png-ae3e54cc23ad438ea83a8932fe526f9f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_08.png" 14 | dest_files=["res://.godot/imported/texture_08.png-ae3e54cc23ad438ea83a8932fe526f9f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_09.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://da7j3rrkc2idi" 6 | path="res://.godot/imported/texture_09.png-bfc57ad7b0bd0aecb6d4584eb0197660.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_09.png" 14 | dest_files=["res://.godot/imported/texture_09.png-bfc57ad7b0bd0aecb6d4584eb0197660.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_10.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ckl0lgxq5r832" 6 | path="res://.godot/imported/texture_10.png-6ebba9cac53386550299b9fc7ba436fd.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_10.png" 14 | dest_files=["res://.godot/imported/texture_10.png-6ebba9cac53386550299b9fc7ba436fd.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_11.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://buo1u87844wv6" 6 | path="res://.godot/imported/texture_11.png-0fd2ee750e7568773caf6d873885f437.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_11.png" 14 | dest_files=["res://.godot/imported/texture_11.png-0fd2ee750e7568773caf6d873885f437.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_12.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cqun3to3uob7q" 6 | path="res://.godot/imported/texture_12.png-8a7cfbfe5b83f5813249f6314841357c.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_12.png" 14 | dest_files=["res://.godot/imported/texture_12.png-8a7cfbfe5b83f5813249f6314841357c.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_13.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dngp7jx3yrle2" 6 | path="res://.godot/imported/texture_13.png-ae54826bbb20288cf5ae03de2f2de21d.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/kenney_prototype_textures/purple/texture_13.png" 14 | dest_files=["res://.godot/imported/texture_13.png-ae54826bbb20288cf5ae03de2f2de21d.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /entities/weapon/assets/models/AKM.glb.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="scene" 4 | importer_version=1 5 | type="PackedScene" 6 | uid="uid://lfbaghj22jw7" 7 | path="res://.godot/imported/AKM.glb-31ca02edca05d6d2ce1adff582f0e493.scn" 8 | 9 | [deps] 10 | 11 | source_file="res://entities/weapon/assets/models/AKM.glb" 12 | dest_files=["res://.godot/imported/AKM.glb-31ca02edca05d6d2ce1adff582f0e493.scn"] 13 | 14 | [params] 15 | 16 | nodes/root_type="Node3D" 17 | nodes/root_name="Scene Root" 18 | nodes/apply_root_scale=true 19 | nodes/root_scale=1.0 20 | meshes/ensure_tangents=true 21 | meshes/generate_lods=true 22 | meshes/create_shadow_meshes=true 23 | meshes/light_baking=1 24 | meshes/lightmap_texel_size=0.2 25 | meshes/force_disable_compression=false 26 | skins/use_named_skins=true 27 | animation/import=true 28 | animation/fps=30 29 | animation/trimming=false 30 | animation/remove_immutable_tracks=true 31 | import_script/path="" 32 | _subresources={} 33 | gltf/naming_version=0 34 | gltf/embedded_image_handling=1 35 | -------------------------------------------------------------------------------- /icon.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://blxr2025skc8h" 6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://icon.svg" 14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=1.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /scenes/target/assets/target_dummy.glb.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="scene" 4 | importer_version=1 5 | type="PackedScene" 6 | uid="uid://ijbgkhs830j3" 7 | path="res://.godot/imported/target_dummy.glb-145efd5af970d03f47e5855aa6780f74.scn" 8 | 9 | [deps] 10 | 11 | source_file="res://scenes/target/assets/target_dummy.glb" 12 | dest_files=["res://.godot/imported/target_dummy.glb-145efd5af970d03f47e5855aa6780f74.scn"] 13 | 14 | [params] 15 | 16 | nodes/root_type="Node3D" 17 | nodes/root_name="TargetDummy" 18 | nodes/apply_root_scale=true 19 | nodes/root_scale=1.0 20 | meshes/ensure_tangents=true 21 | meshes/generate_lods=true 22 | meshes/create_shadow_meshes=true 23 | meshes/light_baking=1 24 | meshes/lightmap_texel_size=0.2 25 | meshes/force_disable_compression=false 26 | skins/use_named_skins=true 27 | animation/import=true 28 | animation/fps=30 29 | animation/trimming=false 30 | animation/remove_immutable_tracks=true 31 | import_script/path="" 32 | _subresources={} 33 | gltf/naming_version=1 34 | gltf/embedded_image_handling=1 35 | -------------------------------------------------------------------------------- /entities/weapon/assets/models/7.62x39mm.glb.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="scene" 4 | importer_version=1 5 | type="PackedScene" 6 | uid="uid://dtna2168aaa8v" 7 | path="res://.godot/imported/7.62x39mm.glb-60aa4988f07e0aaed207c474803b36c0.scn" 8 | 9 | [deps] 10 | 11 | source_file="res://entities/weapon/assets/models/7.62x39mm.glb" 12 | dest_files=["res://.godot/imported/7.62x39mm.glb-60aa4988f07e0aaed207c474803b36c0.scn"] 13 | 14 | [params] 15 | 16 | nodes/root_type="Node3D" 17 | nodes/root_name="Scene Root" 18 | nodes/apply_root_scale=true 19 | nodes/root_scale=1.0 20 | meshes/ensure_tangents=true 21 | meshes/generate_lods=true 22 | meshes/create_shadow_meshes=true 23 | meshes/light_baking=1 24 | meshes/lightmap_texel_size=0.2 25 | meshes/force_disable_compression=false 26 | skins/use_named_skins=true 27 | animation/import=true 28 | animation/fps=30 29 | animation/trimming=false 30 | animation/remove_immutable_tracks=true 31 | import_script/path="" 32 | _subresources={} 33 | gltf/naming_version=0 34 | gltf/embedded_image_handling=1 35 | -------------------------------------------------------------------------------- /scenes/bullet_decal/assets/bullet_stain.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://df306svw7a0tu" 6 | path.s3tc="res://.godot/imported/bullet_stain.png-a135783fa46d4c91e8bec7b6d86322d0.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://scenes/bullet_decal/assets/bullet_stain.png" 15 | dest_files=["res://.godot/imported/bullet_stain.png-a135783fa46d4c91e8bec7b6d86322d0.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /entities/player/camera3d.gd: -------------------------------------------------------------------------------- 1 | extends Camera3D 2 | 3 | 4 | @export var trauma_reduction_rate := 2.0 5 | @export var max_y := 10.0 6 | @export var max_z := 5.0 7 | @export var noise: FastNoiseLite 8 | @export var noise_speed := 50.0 9 | 10 | var trauma := 0.0 11 | var time := 0.0 12 | 13 | @onready var initial_rotation := rotation_degrees 14 | 15 | 16 | func _process(delta: float) -> void: 17 | time += delta 18 | trauma = max(trauma - delta * trauma_reduction_rate, 0.0) 19 | rotation_degrees.y = initial_rotation.y + max_y \ 20 | * _get_shake_intensity() * _get_noise_from_seed(1) 21 | rotation_degrees.z = initial_rotation.z + max_z \ 22 | * _get_shake_intensity() * _get_noise_from_seed(2) 23 | 24 | 25 | func add_trauma(trauma_amount: float) -> void: 26 | trauma = clamp(trauma + trauma_amount, 0.0, 1.0) 27 | 28 | 29 | func _get_shake_intensity() -> float: 30 | return pow(trauma, 2) 31 | 32 | 33 | func _get_noise_from_seed(_seed: int) -> float: 34 | noise.seed = _seed 35 | 36 | return noise.get_noise_1d(time * noise_speed) 37 | -------------------------------------------------------------------------------- /entities/player/states/sprint.gd: -------------------------------------------------------------------------------- 1 | extends PlayerState 2 | 3 | 4 | signal exited(wait_time: float, time_left: float) # used for sprint cooldown 5 | 6 | @export var sprint_speed := 15 7 | 8 | @onready var duration_timer := $Duration as Timer 9 | 10 | 11 | func enter() -> void: 12 | player.speed = sprint_speed 13 | duration_timer.start() 14 | player.weapon.fsm.force_toggle_sprint(true) 15 | 16 | 17 | func exit() -> void: 18 | exited.emit(duration_timer.wait_time, duration_timer.time_left) 19 | duration_timer.stop() 20 | player.weapon.fsm.force_toggle_sprint(false) 21 | 22 | 23 | func handle_input(event: InputEvent) -> InputEvent: 24 | if event.is_action_pressed(&"crouch"): 25 | finished.emit("crouch") 26 | elif event.is_action_released(&"sprint"): 27 | finished.emit("walk") 28 | 29 | return super(event) 30 | 31 | 32 | func update(delta: float) -> void: 33 | if not _get_normalized_direction(): 34 | finished.emit("idle") 35 | 36 | _move(delta) 37 | 38 | 39 | func _on_duration_timeout() -> void: 40 | finished.emit("walk") 41 | -------------------------------------------------------------------------------- /entities/weapon/assets/textures/muzzle_flash.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bg75febfxs3h" 6 | path.s3tc="res://.godot/imported/muzzle_flash.png-d062330fcdb645e0ffee76758b916844.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://entities/weapon/assets/textures/muzzle_flash.png" 15 | dest_files=["res://.godot/imported/muzzle_flash.png-d062330fcdb645e0ffee76758b916844.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/dark/texture_09.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dw5mk6qrfjn7b" 6 | path.s3tc="res://.godot/imported/texture_09.png-8e25cd5657e2d326068eb27bfa1aacec.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://addons/kenney_prototype_textures/dark/texture_09.png" 15 | dest_files=["res://.godot/imported/texture_09.png-8e25cd5657e2d326068eb27bfa1aacec.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_04.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://xrjdme522osk" 6 | path.s3tc="res://.godot/imported/texture_04.png-6783bd4aa338a51e03fa71a2a0ba6c73.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://addons/kenney_prototype_textures/purple/texture_04.png" 15 | dest_files=["res://.godot/imported/texture_04.png-6783bd4aa338a51e03fa71a2a0ba6c73.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/orange/texture_10.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://c3he5glkx53en" 6 | path.s3tc="res://.godot/imported/texture_10.png-6f0f09db66c0562f01b2d2954722e3af.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://addons/kenney_prototype_textures/orange/texture_10.png" 15 | dest_files=["res://.godot/imported/texture_10.png-6f0f09db66c0562f01b2d2954722e3af.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /addons/kenney_prototype_textures/purple/texture_03.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cdag1v178quul" 6 | path.s3tc="res://.godot/imported/texture_03.png-10a2d13d96fe9dba00c822080243f048.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://addons/kenney_prototype_textures/purple/texture_03.png" 15 | dest_files=["res://.godot/imported/texture_03.png-10a2d13d96fe9dba00c822080243f048.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /entities/player/states/player_state.gd: -------------------------------------------------------------------------------- 1 | class_name PlayerState 2 | extends State 3 | 4 | 5 | @onready var player := owner as Player 6 | 7 | 8 | func handle_input(event: InputEvent) -> InputEvent: 9 | if event.is_action_pressed(&"ui_select") and player.is_on_floor(): 10 | finished.emit("jump") 11 | 12 | return super(event) 13 | 14 | 15 | func _move(delta: float) -> void: 16 | # lerp the direction to get some acceleration when moving/stopping 17 | player.direction = lerp(player.direction, _get_normalized_direction(), player.acceleration * delta) 18 | 19 | if player.direction: 20 | player.velocity.x = player.direction.x * player.speed 21 | player.velocity.z = player.direction.z * player.speed 22 | else: 23 | player.velocity.x = move_toward(player.velocity.x, 0.0, player.speed) 24 | player.velocity.z = move_toward(player.velocity.z, 0.0, player.speed) 25 | 26 | 27 | func _get_normalized_direction() -> Vector3: 28 | var input_dir := Input.get_vector(&"move_left", &"move_right", &"move_forward", &"move_backwards") 29 | return (player.head.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Davide Cortellucci 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /scenes/world.gd: -------------------------------------------------------------------------------- 1 | class_name World 2 | extends Node3D 3 | 4 | 5 | const BULLET_DECAL := preload("res://scenes/bullet_decal/bullet_decal.tscn") 6 | const BULLET_IMPACT := preload("res://scenes/bullet_impact/bullet_impact.tscn") 7 | 8 | @onready var impacts_container: Node3D = $Impacts 9 | 10 | 11 | func _process(_delta: float) -> void: 12 | if Input.is_action_just_pressed("ui_cancel"): 13 | Input.mouse_mode = Input.MOUSE_MODE_VISIBLE 14 | 15 | 16 | func _on_player_decal_requested(collision_info: Dictionary) -> void: 17 | var decal := BULLET_DECAL.instantiate() 18 | (collision_info["collider"] as Node).add_child(decal) 19 | decal.global_position = collision_info["position"] 20 | var collision_normal := collision_info["normal"] as Vector3 21 | decal.look_at(decal.global_position + collision_normal, 22 | Vector3.RIGHT if collision_normal in [Vector3.UP, Vector3.DOWN] else Vector3.UP) 23 | 24 | 25 | func _on_player_impact_requested(pos: Vector3, weapon_pos: Vector3) -> void: 26 | var impact := BULLET_IMPACT.instantiate() as GPUParticles3D 27 | impacts_container.add_child(impact) 28 | impact.global_position = pos 29 | impact.look_at(weapon_pos) 30 | impact.emitting = true 31 | -------------------------------------------------------------------------------- /scenes/bullet_decal/bullet_decal.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=3 uid="uid://c5p36felxduqr"] 2 | 3 | [ext_resource type="Script" path="res://scenes/bullet_decal/bullet_decal.gd" id="1_pnwkq"] 4 | [ext_resource type="Texture2D" uid="uid://df306svw7a0tu" path="res://scenes/bullet_decal/assets/bullet_stain.png" id="1_wr0m6"] 5 | 6 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cm0ft"] 7 | transparency = 1 8 | albedo_color = Color(0.188235, 0.188235, 0.188235, 1) 9 | albedo_texture = ExtResource("1_wr0m6") 10 | 11 | [sub_resource type="QuadMesh" id="QuadMesh_0vvqg"] 12 | material = SubResource("StandardMaterial3D_cm0ft") 13 | size = Vector2(0.3, 0.3) 14 | 15 | [node name="BulletDecal" type="Node3D"] 16 | script = ExtResource("1_pnwkq") 17 | 18 | [node name="MeshInstance3D" type="MeshInstance3D" parent="."] 19 | transform = Transform3D(-0.25, 0, -3.7749e-08, 0, 0.25, 0, 3.7749e-08, 0, -0.25, 0, 0, -0.02) 20 | cast_shadow = 0 21 | mesh = SubResource("QuadMesh_0vvqg") 22 | 23 | [node name="LifeTimer" type="Timer" parent="."] 24 | wait_time = 10.0 25 | one_shot = true 26 | autostart = true 27 | 28 | [connection signal="timeout" from="LifeTimer" to="." method="_on_life_timer_timeout"] 29 | -------------------------------------------------------------------------------- /entities/fsm/fsm.gd: -------------------------------------------------------------------------------- 1 | class_name StateMachine 2 | extends Node 3 | 4 | 5 | signal state_changed(states_stack: Array) 6 | 7 | @export var start_state_path: NodePath 8 | @export var states_stack_count := 2 9 | 10 | var states_stack := [] 11 | var current_state: State = null 12 | var states_map := {} 13 | var is_input_blocked := false 14 | 15 | 16 | func _physics_process(delta: float) -> void: 17 | current_state.update(delta) 18 | 19 | 20 | func _unhandled_input(event: InputEvent) -> void: 21 | if is_input_blocked: 22 | return 23 | current_state.handle_input(event) 24 | 25 | 26 | func initialize(state_path: NodePath) -> void: 27 | states_stack.push_front(get_node(state_path)) 28 | current_state = states_stack[0] 29 | current_state.enter() 30 | 31 | 32 | func _change_state(state_name: String) -> void: 33 | # exit the current state 34 | current_state.exit() 35 | states_stack.push_front(states_map[state_name]) 36 | if states_stack.size() > states_stack_count: 37 | states_stack.pop_back() 38 | # enter the new one 39 | current_state = states_stack[0] 40 | state_changed.emit(states_stack) 41 | current_state.enter() 42 | 43 | 44 | func _on_animation_finished() -> void: 45 | current_state._on_animation_finished() 46 | -------------------------------------------------------------------------------- /entities/weapon/weapon_model.gd: -------------------------------------------------------------------------------- 1 | extends Node3D 2 | ## Weapon model script. 3 | ## Takes care of implementing procedural visual recoil when shooting. 4 | 5 | 6 | @export var recoil_rotation_x: Curve 7 | @export var recoil_rotation_z: Curve 8 | @export var recoil_position_z: Curve 9 | @export var recoil_amplitude := Vector3.ONE 10 | ## The higher, the ligher the weapon will look when recoiling 11 | @export var lerp_speed := 5.0 12 | 13 | var target_rot := Vector3.ZERO 14 | var target_pos := Vector3.ZERO 15 | var current_time: float 16 | 17 | 18 | func _ready() -> void: 19 | target_rot.y = rotation.y 20 | current_time = 1.0 21 | 22 | 23 | func _physics_process(delta: float) -> void: 24 | if current_time < 1.0: 25 | current_time += delta 26 | position.z = lerp(position.z, target_pos.z, lerp_speed * delta) 27 | rotation.z = lerp(rotation.z, target_rot.z, lerp_speed * delta) 28 | rotation.x = lerp(rotation.x, target_rot.x, lerp_speed * delta) 29 | 30 | target_rot.z = recoil_rotation_z.sample(current_time) * -recoil_amplitude.y 31 | target_rot.x = recoil_rotation_x.sample(current_time) * -recoil_amplitude.x 32 | target_pos.z = recoil_position_z.sample(current_time) * recoil_amplitude.z 33 | 34 | 35 | ## Called in the weapon's shoot state 36 | func apply_recoil() -> void: 37 | target_rot.z = recoil_rotation_z.sample(0) 38 | target_rot.x = recoil_rotation_x.sample(0) 39 | target_pos.z = recoil_position_z.sample(0) 40 | current_time = 0.0 41 | -------------------------------------------------------------------------------- /scenes/bullet_impact/bullet_impact.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=3 uid="uid://c1yreg1av753n"] 2 | 3 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f06xa"] 4 | albedo_color = Color(0.156863, 0.156863, 0.156863, 1) 5 | roughness = 0.3 6 | emission_enabled = true 7 | emission = Color(0.372549, 0.372549, 0.372549, 1) 8 | emission_energy_multiplier = 0.2 9 | 10 | [sub_resource type="Curve" id="Curve_iblgo"] 11 | _data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] 12 | point_count = 2 13 | 14 | [sub_resource type="CurveTexture" id="CurveTexture_c066i"] 15 | curve = SubResource("Curve_iblgo") 16 | 17 | [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_aodgs"] 18 | emission_shape = 1 19 | emission_sphere_radius = 0.5 20 | direction = Vector3(0, 0, -1) 21 | spread = 20.0 22 | initial_velocity_min = 6.0 23 | initial_velocity_max = 8.0 24 | gravity = Vector3(0, -20, 0) 25 | scale_min = 0.5 26 | scale_curve = SubResource("CurveTexture_c066i") 27 | 28 | [sub_resource type="SphereMesh" id="SphereMesh_t7qt5"] 29 | radius = 0.03 30 | height = 0.06 31 | 32 | [node name="BulletImpact" type="GPUParticles3D"] 33 | material_override = SubResource("StandardMaterial3D_f06xa") 34 | cast_shadow = 0 35 | emitting = false 36 | amount = 4 37 | one_shot = true 38 | explosiveness = 1.0 39 | randomness = 0.25 40 | process_material = SubResource("ParticleProcessMaterial_aodgs") 41 | draw_pass_1 = SubResource("SphereMesh_t7qt5") 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Godot 4 FPS Prototype 2 | This project is a 3D FPS developed in Godot 4.2, showcasing various features and aiming to implement a spray pattern system with the Godot game engine. 3 | 4 | Its primary objective is to serve as both a demonstration of advanced gameplay mechanics and a learning resource, since I haven't been able to find many implementations of this particular recoil system in Godot. 5 | 6 | ![gif](./imgs/clip.gif) 7 | 8 | ## Features 9 | - Spray pattern system 10 | - Player movement mechanics (crouching, sprinting, jumping) 11 | - Procedural visual recoil, weapon tilting/swaying/bobbing, camera screenshake 12 | - Weapon functionality (shooting, reloading, idle) 13 | - Support for multiple weapons (although currently featuring one), each with customizable spray patterns by using 2D curves 14 | - Polishing effects (muzzle flash, bullet trails, debris) 15 | 16 | ## Requirements 17 | Godot 4.2 and higher is recommended. 18 | 19 | ## Usage 20 | Just clone the repo and launch the game within Godot. 21 | 22 | ## Asset attributions 23 | - FPS pack by J-Toastie [CC-BY] via Poly Pizza 24 | - Gun fire sound by GoodSoundForYou: https://soundbible.com/1998-Gun-Fire.html 25 | - Reload sound: https://pixabay.com/sound-effects/mag-reload-81594/ 26 | - Muzzle flash texture: https://opengameart.org/content/16-toon-muzzle-flash 27 | - Prototype textures: https://www.kenney.nl/assets/prototype-textures 28 | - Weapon model shader by 2nafish117: https://github.com/2nafish117/godot-viewmodel-render-test 29 | -------------------------------------------------------------------------------- /entities/enemy/enemy.gd: -------------------------------------------------------------------------------- 1 | class_name Enemy 2 | extends CharacterBody3D 3 | 4 | 5 | signal destroyed 6 | 7 | @export var health := 100 8 | @export var speed := 7.5 9 | 10 | var gravity: float = ProjectSettings.get("physics/3d/default_gravity") 11 | var target: Node3D 12 | 13 | @onready var space_state := get_world_3d().direct_space_state 14 | @onready var body_mesh := $Body as MeshInstance3D 15 | 16 | 17 | func _ready() -> void: 18 | # ensure the material is unique for each instance 19 | var duplicated_material := body_mesh.get_active_material(0).duplicate() 20 | body_mesh.set_surface_override_material(0, duplicated_material) 21 | 22 | 23 | func _physics_process(delta: float) -> void: 24 | var direction := Vector3.ZERO 25 | # apply gravity 26 | velocity.y -= gravity * delta 27 | # look at the player while checking if there is a line of sight 28 | if target: 29 | var result := space_state.intersect_ray(PhysicsRayQueryParameters3D.create( 30 | global_position, target.global_position)) 31 | if result.collider is Player: 32 | look_at(target.global_position) 33 | _set_body_albedo(Color.RED) 34 | # move to target 35 | direction = (target.transform.origin - transform.origin).normalized() 36 | else: 37 | _set_body_albedo(Color.GREEN) 38 | velocity.x = direction.x * speed 39 | velocity.z = direction.z * speed 40 | 41 | move_and_slide() 42 | 43 | 44 | func take_damage(amount: int) -> void: 45 | health = max(health - amount, 0) 46 | if health == 0: 47 | # destroy 48 | destroyed.emit() 49 | queue_free() 50 | 51 | 52 | func _set_body_albedo(color: Color) -> void: 53 | (body_mesh.get_active_material(0) as StandardMaterial3D).albedo_color = color 54 | 55 | 56 | func _on_detector_area_3d_body_entered(body: Node3D) -> void: 57 | if body is Player: 58 | target = body 59 | _set_body_albedo(Color.RED) 60 | 61 | 62 | func _on_detector_area_3d_body_exited(body: Node3D) -> void: 63 | if body is Player: 64 | target = null 65 | _set_body_albedo(Color.GREEN) 66 | -------------------------------------------------------------------------------- /entities/enemy/enemy.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=3 uid="uid://dvw4wy2xvdnxq"] 2 | 3 | [ext_resource type="Script" path="res://entities/enemy/enemy.gd" id="1_xqyyb"] 4 | 5 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_75cep"] 6 | albedo_color = Color(0, 1, 0, 1) 7 | 8 | [sub_resource type="CapsuleMesh" id="CapsuleMesh_1ju31"] 9 | material = SubResource("StandardMaterial3D_75cep") 10 | 11 | [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_hxdi3"] 12 | 13 | [sub_resource type="PrismMesh" id="PrismMesh_w1ct3"] 14 | size = Vector3(0.25, 0.25, 0.25) 15 | 16 | [node name="Enemy" type="CharacterBody3D" groups=["enemies"]] 17 | collision_layer = 4 18 | collision_mask = 3 19 | script = ExtResource("1_xqyyb") 20 | health = 40 21 | speed = 6.0 22 | 23 | [node name="Body" type="MeshInstance3D" parent="."] 24 | mesh = SubResource("CapsuleMesh_1ju31") 25 | 26 | [node name="CollisionShape3D" type="CollisionShape3D" parent="."] 27 | shape = SubResource("CapsuleShape3D_hxdi3") 28 | 29 | [node name="Nose" type="MeshInstance3D" parent="."] 30 | transform = Transform3D(-1, -8.74228e-08, 0, -3.82137e-15, 4.37114e-08, -1, 8.74228e-08, -1, -4.37114e-08, 0, 0.368499, -0.601234) 31 | mesh = SubResource("PrismMesh_w1ct3") 32 | 33 | [node name="PlayerDetector" type="Area3D" parent="."] 34 | transform = Transform3D(-4.37114e-08, 1, -4.37114e-08, 0, -4.37114e-08, -1, -1, -4.37114e-08, 1.91069e-15, 0, 0, -0.531334) 35 | collision_layer = 0 36 | collision_mask = 2 37 | metadata/_edit_group_ = true 38 | 39 | [node name="CollisionPolygon3D" type="CollisionPolygon3D" parent="PlayerDetector"] 40 | transform = Transform3D(0.999999, 0.000451471, -0.0010114, -0.000449169, 0.999997, 0.0022951, 0.00101243, -0.00229465, 0.999997, 0, 0, 0) 41 | polygon = PackedVector2Array(0, 0, 15, 6, 15, -6) 42 | 43 | [connection signal="body_entered" from="PlayerDetector" to="." method="_on_detector_area_3d_body_entered"] 44 | [connection signal="body_exited" from="PlayerDetector" to="." method="_on_detector_area_3d_body_exited"] 45 | -------------------------------------------------------------------------------- /entities/weapon/assets/shaders/viewmodel.gdshader: -------------------------------------------------------------------------------- 1 | shader_type spatial; 2 | render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx; 3 | 4 | global uniform float viewmodel_fov = 75.0f; 5 | 6 | uniform vec4 albedo : source_color = vec4(1.0f); 7 | uniform sampler2D texture_albedo : source_color; 8 | uniform float specular = 0.5f; 9 | uniform float metallic = 1.0f; 10 | uniform float roughness : hint_range(0,1) = 1.0f; 11 | uniform sampler2D texture_metallic : hint_default_white; 12 | uniform vec4 metallic_texture_channel = vec4(1.0, 0.0, 0.0, 0.0); 13 | uniform sampler2D texture_roughness : hint_default_white; 14 | uniform vec4 roughness_texture_channel = vec4(1.0, 0.0, 0.0, 0.0); 15 | uniform sampler2D texture_normal : hint_normal; 16 | uniform float normal_scale : hint_range(-16,16) = 0.5f; 17 | uniform vec3 uv1_scale = vec3(1.0f); 18 | uniform vec3 uv1_offset = vec3(0.0f); 19 | 20 | void vertex() { 21 | UV = UV * uv1_scale.xy + uv1_offset.xy; 22 | 23 | /* begin shader magic*/ 24 | float onetanfov = 1.0f / tan(0.5f * (viewmodel_fov * PI / 180.0f)); 25 | float aspect = VIEWPORT_SIZE.x / VIEWPORT_SIZE.y; 26 | // modify projection matrix 27 | PROJECTION_MATRIX[1][1] = -onetanfov; 28 | PROJECTION_MATRIX[0][0] = onetanfov / aspect; 29 | // draws the viewmodel over everything (disable if you want dof near on viewmodel) 30 | POSITION = PROJECTION_MATRIX * MODELVIEW_MATRIX * vec4(VERTEX.xyz, 1.0); 31 | POSITION.z = mix(POSITION.z, 0, 0.999); 32 | /* end shader magic */ 33 | } 34 | 35 | void fragment() { 36 | vec2 base_uv = UV; 37 | vec4 albedo_tex = texture(texture_albedo,base_uv); 38 | albedo_tex *= COLOR; 39 | ALBEDO = albedo.rgb * albedo_tex.rgb; 40 | float metallic_tex = dot(texture(texture_metallic,base_uv),metallic_texture_channel); 41 | METALLIC = metallic_tex * metallic; 42 | float roughness_tex = dot(texture(texture_roughness,base_uv),roughness_texture_channel); 43 | ROUGHNESS = roughness_tex * roughness; 44 | SPECULAR = specular; 45 | NORMAL_MAP = texture(texture_normal,base_uv).rgb; 46 | 47 | NORMAL_MAP_DEPTH = normal_scale; 48 | } -------------------------------------------------------------------------------- /entities/weapon/states/shoot.gd: -------------------------------------------------------------------------------- 1 | extends State 2 | 3 | 4 | var can_shoot := true 5 | var heat_increase_tween: Tween 6 | var heat_decrease_tween: Tween 7 | var tracer_speed := 1000 8 | 9 | @onready var weapon: Weapon = owner 10 | @onready var rng := RandomNumberGenerator.new() 11 | @onready var fire_rate_timer := $FireRateTimer as Timer 12 | 13 | 14 | func enter() -> void: 15 | # handle heat 16 | if heat_decrease_tween: 17 | heat_decrease_tween.kill() 18 | heat_increase_tween = create_tween() 19 | heat_increase_tween.tween_property(weapon, ^"heat", weapon.max_heat, 1.0) 20 | 21 | 22 | # Clean up the state. Reinitialize values like a timer 23 | func exit() -> void: 24 | weapon.shot_index = 0 25 | # handle heat 26 | var decrease_duration := heat_increase_tween.get_total_elapsed_time() 27 | heat_increase_tween.kill() 28 | heat_decrease_tween = create_tween() 29 | heat_decrease_tween.tween_property(weapon, ^"heat", 0, decrease_duration / 2.0) 30 | 31 | 32 | func handle_input(event: InputEvent) -> InputEvent: 33 | if event.is_action_pressed(&"reload") and not weapon.is_mag_full(): 34 | finished.emit("reload") 35 | 36 | return super(event) 37 | 38 | 39 | func update(delta: float) -> void: 40 | # move the bullet tracer 41 | weapon.tracer.position += Vector3.FORWARD * tracer_speed * delta 42 | 43 | if Input.is_action_pressed(&"fire1"): 44 | if weapon.cur_ammo: 45 | _shoot() 46 | else: 47 | finished.emit("reload") 48 | else: 49 | finished.emit("idle" if weapon.cur_ammo else "reload") 50 | 51 | 52 | func _shoot() -> void: 53 | if not can_shoot: 54 | return 55 | 56 | can_shoot = false 57 | weapon.cur_ammo -= 1 58 | weapon.check_hitscan_collision() 59 | weapon.shot_index += 1 60 | fire_rate_timer.start(weapon.fire_rate) 61 | # bullet spray 62 | weapon.has_shot.emit(weapon.spray_curve.get_point_position(weapon.shot_index)) 63 | # gun recoil 64 | weapon.model.apply_recoil() 65 | # sound 66 | weapon.gun_fire.play() 67 | # tracer 68 | weapon.tracer.position = weapon.tracer_position 69 | create_tween().tween_property(weapon.tracer, 70 | ^"material_override:albedo_color:a", 0.0, weapon.fire_rate).from(1.0) 71 | # muzzle flash 72 | weapon.muzzle_flash.emitting = true 73 | 74 | 75 | func _on_fire_rate_timer_timeout() -> void: 76 | can_shoot = true 77 | -------------------------------------------------------------------------------- /entities/player/player.gd: -------------------------------------------------------------------------------- 1 | class_name Player 2 | extends CharacterBody3D 3 | 4 | 5 | signal decal_requested(collision_info: Dictionary) 6 | signal impact_requested(pos: Vector3, weapon_pos: Vector3) 7 | 8 | const MAX_X_ROTATION := deg_to_rad(80) 9 | 10 | @export var acceleration := 10 11 | @export var mouse_sentitivity := 0.05 12 | 13 | # Get the gravity from the project settings to be synced with RigidBody nodes. 14 | var gravity: float = ProjectSettings.get("physics/3d/default_gravity") 15 | var direction := Vector3.ZERO 16 | var speed: int 17 | 18 | # Nodes 19 | @onready var fsm := $StateMachine as PlayerStateMachine 20 | @onready var mesh_instance := $MeshInstance3D as MeshInstance3D 21 | @onready var collision := $CollisionShape3D as CollisionShape3D 22 | @onready var head := $Head as Node3D 23 | @onready var camera := $Head/Camera3D as Camera3D 24 | @onready var anim_player := $AnimationPlayer as AnimationPlayer 25 | @onready var hud := $Head/Camera3D/HUD as Hud 26 | @onready var weapon := $Head/Camera3D/Weapon as Weapon 27 | 28 | 29 | func _ready() -> void: 30 | # lock mouse to the window 31 | Input.mouse_mode = Input.MOUSE_MODE_CAPTURED 32 | 33 | 34 | func _unhandled_input(event: InputEvent) -> void: 35 | if event is InputEventMouseMotion: 36 | # mouse movement (left and right) 37 | head.rotate_y(deg_to_rad(-event.relative.x * mouse_sentitivity)) 38 | # camera x rotation (up and down) 39 | camera.rotate_x(deg_to_rad(-event.relative.y * mouse_sentitivity)) 40 | camera.rotation.x = clamp(camera.rotation.x, -MAX_X_ROTATION, MAX_X_ROTATION) 41 | 42 | 43 | func _physics_process(delta: float) -> void: 44 | # apply gravity 45 | velocity.y -= gravity * delta 46 | # bob animation 47 | if is_on_floor(): 48 | weapon.apply_bob(velocity, delta) 49 | # weapon tilt 50 | weapon.tilt(velocity, delta) 51 | 52 | move_and_slide() 53 | 54 | 55 | func _on_weapon_has_shot(_recoil_offset: Vector2) -> void: 56 | # camera screenshake 57 | camera.add_trauma(weapon.screenshake_amount) 58 | 59 | 60 | func _on_weapon_decal_requested(collider_info: Dictionary) -> void: 61 | decal_requested.emit(collider_info) 62 | 63 | 64 | func _on_weapon_impact_requested(pos: Vector3, weapon_pos: Vector3) -> void: 65 | impact_requested.emit(pos, weapon_pos) 66 | 67 | 68 | func _on_state_machine_state_changed(states_stack: Array) -> void: 69 | hud.player_state_label.text = (states_stack[0] as State).name 70 | 71 | 72 | func _on_weapon_state_changed(states_stack: Array) -> void: 73 | hud.weapon_state_label.text = (states_stack[0] as State).name 74 | 75 | 76 | func _on_weapon_ammo_changed(ammo: int) -> void: 77 | hud.ammo_label.text = str(ammo) 78 | -------------------------------------------------------------------------------- /interfaces/hud/hud.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://g0wap7e024se"] 2 | 3 | [ext_resource type="Script" path="res://interfaces/hud/hud.gd" id="1_rno08"] 4 | 5 | [node name="HUD" type="Control"] 6 | layout_mode = 3 7 | anchors_preset = 15 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | grow_horizontal = 2 11 | grow_vertical = 2 12 | mouse_filter = 2 13 | script = ExtResource("1_rno08") 14 | 15 | [node name="Crosshair" type="TextureRect" parent="."] 16 | layout_mode = 1 17 | anchors_preset = 8 18 | anchor_left = 0.5 19 | anchor_top = 0.5 20 | anchor_right = 0.5 21 | anchor_bottom = 0.5 22 | offset_left = -24.0 23 | offset_top = -24.0 24 | offset_right = 24.0 25 | offset_bottom = 24.0 26 | grow_horizontal = 2 27 | grow_vertical = 2 28 | mouse_filter = 2 29 | 30 | [node name="TextureRect" type="ColorRect" parent="Crosshair"] 31 | layout_mode = 1 32 | anchors_preset = 8 33 | anchor_left = 0.5 34 | anchor_top = 0.5 35 | anchor_right = 0.5 36 | anchor_bottom = 0.5 37 | offset_left = -20.0 38 | offset_top = -1.0 39 | offset_right = 20.0 40 | offset_bottom = 1.0 41 | grow_horizontal = 2 42 | grow_vertical = 2 43 | mouse_filter = 2 44 | color = Color(0.113725, 0.678431, 0.305882, 1) 45 | 46 | [node name="TextureRect2" type="ColorRect" parent="Crosshair"] 47 | layout_mode = 1 48 | anchors_preset = 8 49 | anchor_left = 0.5 50 | anchor_top = 0.5 51 | anchor_right = 0.5 52 | anchor_bottom = 0.5 53 | offset_left = -1.0 54 | offset_top = -20.0 55 | offset_right = 1.0 56 | offset_bottom = 20.0 57 | grow_horizontal = 2 58 | grow_vertical = 2 59 | mouse_filter = 2 60 | color = Color(0.113725, 0.678431, 0.305882, 1) 61 | 62 | [node name="FpsLabel" type="Label" parent="."] 63 | layout_mode = 1 64 | offset_left = 8.0 65 | offset_top = 8.0 66 | offset_right = 36.0 67 | offset_bottom = 34.0 68 | theme_override_font_sizes/font_size = 32 69 | text = "FPS: 60" 70 | 71 | [node name="PlayerStateLabel" type="Label" parent="."] 72 | layout_mode = 1 73 | anchors_preset = 10 74 | anchor_right = 1.0 75 | offset_right = -16.0 76 | offset_bottom = 48.0 77 | grow_horizontal = 2 78 | theme_override_font_sizes/font_size = 32 79 | text = "Idle" 80 | horizontal_alignment = 2 81 | vertical_alignment = 1 82 | 83 | [node name="WeaponStateLabel" type="Label" parent="."] 84 | layout_mode = 1 85 | anchors_preset = 10 86 | anchor_right = 1.0 87 | offset_top = 40.0 88 | offset_right = -16.0 89 | offset_bottom = 88.0 90 | grow_horizontal = 2 91 | theme_override_font_sizes/font_size = 32 92 | text = "Idle" 93 | horizontal_alignment = 2 94 | vertical_alignment = 1 95 | 96 | [node name="HeatLabel" type="Label" parent="."] 97 | layout_mode = 1 98 | anchors_preset = 6 99 | anchor_left = 1.0 100 | anchor_top = 0.5 101 | anchor_right = 1.0 102 | anchor_bottom = 0.5 103 | offset_left = -72.0 104 | offset_top = -35.0 105 | offset_bottom = 35.0 106 | grow_horizontal = 0 107 | grow_vertical = 2 108 | theme_override_font_sizes/font_size = 48 109 | text = "0" 110 | 111 | [node name="AmmoLabel" type="Label" parent="."] 112 | layout_mode = 1 113 | anchors_preset = 3 114 | anchor_left = 1.0 115 | anchor_top = 1.0 116 | anchor_right = 1.0 117 | anchor_bottom = 1.0 118 | offset_left = -72.0 119 | offset_top = -70.0 120 | grow_horizontal = 0 121 | grow_vertical = 0 122 | theme_override_font_sizes/font_size = 48 123 | text = "30" 124 | -------------------------------------------------------------------------------- /project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=5 10 | 11 | [application] 12 | 13 | config/name="FPS Prototype" 14 | config/tags=PackedStringArray("3d", "4.2", "fps") 15 | run/main_scene="res://scenes/world.tscn" 16 | config/features=PackedStringArray("4.2", "Forward Plus") 17 | config/icon="res://icon.svg" 18 | 19 | [debug] 20 | 21 | gdscript/warnings/untyped_declaration=1 22 | 23 | [display] 24 | 25 | window/size/viewport_width=1920 26 | window/size/viewport_height=1080 27 | 28 | [file_customization] 29 | 30 | folder_colors={ 31 | "res://addons/": "orange", 32 | "res://entities/": "pink", 33 | "res://interfaces/": "green", 34 | "res://scenes/": "blue", 35 | "res://script_templates/": "gray" 36 | } 37 | 38 | [input] 39 | 40 | move_forward={ 41 | "deadzone": 0.5, 42 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) 43 | ] 44 | } 45 | move_backwards={ 46 | "deadzone": 0.5, 47 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) 48 | ] 49 | } 50 | move_left={ 51 | "deadzone": 0.5, 52 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) 53 | ] 54 | } 55 | move_right={ 56 | "deadzone": 0.5, 57 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) 58 | ] 59 | } 60 | reload={ 61 | "deadzone": 0.5, 62 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"echo":false,"script":null) 63 | ] 64 | } 65 | fire1={ 66 | "deadzone": 0.5, 67 | "events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null) 68 | ] 69 | } 70 | sprint={ 71 | "deadzone": 0.5, 72 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"echo":false,"script":null) 73 | ] 74 | } 75 | crouch={ 76 | "deadzone": 0.5, 77 | "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":67,"key_label":0,"unicode":99,"echo":false,"script":null) 78 | ] 79 | } 80 | 81 | [layer_names] 82 | 83 | 3d_physics/layer_1="World" 84 | 3d_physics/layer_2="Player" 85 | 3d_physics/layer_3="Enemy" 86 | 3d_physics/layer_4="Target" 87 | 88 | [physics] 89 | 90 | 3d/default_gravity=20.0 91 | 92 | [shader_globals] 93 | 94 | viewmodel_fov={ 95 | "type": "float", 96 | "value": 75.0 97 | } 98 | -------------------------------------------------------------------------------- /entities/weapon/weapon.gd: -------------------------------------------------------------------------------- 1 | class_name Weapon 2 | extends Node3D 3 | 4 | 5 | signal has_shot(recoil_offset: Vector2) 6 | signal state_changed(states_stack: Array) 7 | signal ammo_changed(ammo: int) 8 | signal heat_changed(value: int) 9 | signal decal_requested(collider_info: Dictionary) 10 | signal impact_requested(pos: Vector3, weapon_pos: Vector3) 11 | 12 | const DEFAULT_RECOIL_RANDOMNESS := 1.0 13 | 14 | @export var damage := 10 15 | @export var fire_rate := 0.08 16 | @export var mag_size := 30 17 | @export var reload_time := 1.2 18 | @export var weapon_range := 200 19 | @export var camera_path: NodePath 20 | @export var spray_scene: PackedScene 21 | @export var max_heat := 13 22 | @export var screenshake_amount := 0.2 23 | @export var max_x_recoil_rotation := 5.0 # degrees 24 | @export var sway_amount := 0.015 25 | @export var tilt_amount := 0.05 26 | @export var default_position: Vector3 27 | 28 | var cur_ammo: int = mag_size: 29 | set(value): 30 | cur_ammo = value 31 | ammo_changed.emit(cur_ammo) 32 | var can_sprint := true 33 | var mouse_movement: Vector2 34 | var spray_curve: Curve2D 35 | var heat := 0: 36 | set(value): 37 | heat = min(value, max_heat) 38 | heat_changed.emit(heat) 39 | var rng := RandomNumberGenerator.new() 40 | var recoil_randomness := DEFAULT_RECOIL_RANDOMNESS 41 | var shot_index := 0: 42 | set(value): 43 | shot_index = min(value, mag_size - 1) 44 | var bob_frequency := 0.01 # can be used to determine how often footsteps happen 45 | var bob_amplitude := 0.01 46 | 47 | # Nodes 48 | @onready var fsm := $StateMachine as WeaponStateMachine 49 | @onready var model := $Model as Node3D 50 | @onready var bullet_spawn := $Model/BulletSpawn as Marker3D 51 | @onready var camera := get_node(camera_path) as Camera3D 52 | @onready var weapon_mesh: MeshInstance3D = $Model/RootNode/Armature/Skeleton3D/Mesh 53 | @onready var muzzle_flash: GPUParticles3D = $Model/BulletSpawn/MuzzleFlash 54 | @onready var tracer: MeshInstance3D = $Model/BulletSpawn/Tracer 55 | @onready var gun_fire := $GunFIre as AudioStreamPlayer 56 | @onready var anim_player := $AnimationPlayer as AnimationPlayer 57 | # Other variables 58 | @onready var heat_tween := create_tween() 59 | @onready var tracer_position := tracer.position 60 | 61 | 62 | func _ready() -> void: 63 | position = default_position 64 | heat_tween.stop() 65 | # set the camera FOV to the model shader 66 | weapon_mesh.viewmodel_fov = camera.fov 67 | 68 | if spray_scene != null: 69 | var spray := spray_scene.instantiate() as Path2D 70 | spray_curve = spray.curve 71 | 72 | 73 | func _unhandled_input(event: InputEvent) -> void: 74 | if event is InputEventMouseMotion: 75 | mouse_movement = event.relative 76 | 77 | 78 | func _physics_process(delta: float) -> void: 79 | _apply_sway(delta) 80 | 81 | 82 | func is_mag_full() -> bool: 83 | return cur_ammo == mag_size 84 | 85 | 86 | func apply_bob(velocity: Vector3, delta: float) -> void: 87 | if velocity.length() < 1.0: 88 | position.y = lerp(position.y, default_position.y, 10 * delta) 89 | position.x = lerp(position.x, default_position.x, 10 * delta) 90 | else: 91 | position.y = lerp(position.y, 92 | default_position.y + sin(Time.get_ticks_msec() * bob_frequency) * bob_amplitude, 93 | 10 * delta) 94 | position.x = lerp(position.x, 95 | default_position.x + sin(Time.get_ticks_msec() * bob_frequency / 2.0) * bob_amplitude, 96 | 10 * delta) 97 | 98 | 99 | func tilt(velocity: Vector3, delta: float) -> void: 100 | # horizontal tilt 101 | var input_dir := Input.get_vector(&"move_left", &"move_right", &"move_forward", &"move_backwards") 102 | rotation.z = lerp(rotation.z, -input_dir.x * tilt_amount, 5 * delta) 103 | # vertical tilt 104 | rotation.x = lerp(rotation.x, -velocity.y * tilt_amount, 5 * delta) 105 | 106 | 107 | func check_hitscan_collision() -> void: 108 | var collision_pos := _get_camera_collision() 109 | var bullet_dir := bullet_spawn.global_position.direction_to(collision_pos) 110 | var query := PhysicsRayQueryParameters3D.create(bullet_spawn.global_position, 111 | collision_pos + bullet_dir*2) 112 | var bullet_collision := get_world_3d().direct_space_state.intersect_ray(query) 113 | 114 | if bullet_collision: 115 | decal_requested.emit(bullet_collision) 116 | impact_requested.emit(collision_pos, bullet_spawn.global_position) 117 | 118 | var collider := bullet_collision["collider"] as Node 119 | if collider is Enemy: 120 | collider.take_damage(damage) 121 | 122 | 123 | ## Projects a ray from the weapon's muzzle to the camera center. 124 | ## The ray's length is the weapon's range. 125 | ## Returns the collision's position, if present, otherwise the ray's end position. 126 | func _get_camera_collision() -> Vector3: 127 | var viewport_center := get_viewport().get_visible_rect().size / 2 128 | 129 | var ray_origin := camera.project_ray_origin(viewport_center) 130 | var recoil_offset := spray_curve.get_point_position(shot_index) # point on the spray pattern 131 | var max_spray := recoil_randomness * heat # higher heat == higher spread 132 | var rand_spray := Vector2(rng.randf_range(-max_spray, max_spray), 133 | rng.randf_range(-max_spray, max_spray)) 134 | var ray_end := ray_origin + camera.project_ray_normal( 135 | viewport_center + recoil_offset + rand_spray) * weapon_range 136 | 137 | var query := PhysicsRayQueryParameters3D.create(ray_origin, ray_end) 138 | var collision := get_world_3d().direct_space_state.intersect_ray(query) 139 | 140 | return collision.position if not collision.is_empty() else ray_end 141 | 142 | 143 | func _apply_sway(delta: float) -> void: 144 | # make it go back to its default position 145 | mouse_movement = lerp(mouse_movement, Vector2.ZERO, 10 * delta) 146 | rotation.x = lerp(rotation.x, mouse_movement.y * sway_amount, 10 * delta) 147 | rotation.y = lerp(rotation.y, mouse_movement.x * sway_amount, 10 * delta) 148 | 149 | 150 | func _on_state_machine_state_changed(states_stack: Array) -> void: 151 | state_changed.emit(states_stack) 152 | -------------------------------------------------------------------------------- /entities/player/player.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=20 format=3 uid="uid://dkr12d528ypo0"] 2 | 3 | [ext_resource type="Script" path="res://entities/player/player.gd" id="1_sbhg4"] 4 | [ext_resource type="Script" path="res://entities/player/player_fsm.gd" id="2_mmcdy"] 5 | [ext_resource type="PackedScene" uid="uid://g0wap7e024se" path="res://interfaces/hud/hud.tscn" id="2_wmwnf"] 6 | [ext_resource type="Script" path="res://entities/player/states/idle.gd" id="3_sdfdx"] 7 | [ext_resource type="PackedScene" uid="uid://hfrop8mvtgwq" path="res://entities/weapon/weapon.tscn" id="3_yiye0"] 8 | [ext_resource type="Script" path="res://entities/player/states/walk.gd" id="4_wg1ks"] 9 | [ext_resource type="Script" path="res://entities/player/states/sprint.gd" id="5_4taip"] 10 | [ext_resource type="Script" path="res://entities/player/states/jump.gd" id="5_rtd2e"] 11 | [ext_resource type="Script" path="res://entities/player/states/crouch.gd" id="7_po5wv"] 12 | [ext_resource type="Script" path="res://entities/player/camera3d.gd" id="8_r6wnb"] 13 | 14 | [sub_resource type="CapsuleMesh" id="CapsuleMesh_i3sya"] 15 | height = 3.0 16 | 17 | [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_bp4pk"] 18 | height = 3.0 19 | 20 | [sub_resource type="FastNoiseLite" id="FastNoiseLite_3aafk"] 21 | fractal_octaves = 4 22 | 23 | [sub_resource type="CylinderShape3D" id="CylinderShape3D_0pspf"] 24 | height = 0.1 25 | 26 | [sub_resource type="Animation" id="Animation_t7flm"] 27 | length = 0.001 28 | tracks/0/type = "value" 29 | tracks/0/imported = false 30 | tracks/0/enabled = true 31 | tracks/0/path = NodePath("MeshInstance3D:mesh:height") 32 | tracks/0/interp = 1 33 | tracks/0/loop_wrap = true 34 | tracks/0/keys = { 35 | "times": PackedFloat32Array(0), 36 | "transitions": PackedFloat32Array(1), 37 | "update": 0, 38 | "values": [3.0] 39 | } 40 | tracks/1/type = "value" 41 | tracks/1/imported = false 42 | tracks/1/enabled = true 43 | tracks/1/path = NodePath("CollisionShape3D:shape:height") 44 | tracks/1/interp = 1 45 | tracks/1/loop_wrap = true 46 | tracks/1/keys = { 47 | "times": PackedFloat32Array(0), 48 | "transitions": PackedFloat32Array(1), 49 | "update": 0, 50 | "values": [3.0] 51 | } 52 | tracks/2/type = "value" 53 | tracks/2/imported = false 54 | tracks/2/enabled = true 55 | tracks/2/path = NodePath("Head:position") 56 | tracks/2/interp = 1 57 | tracks/2/loop_wrap = true 58 | tracks/2/keys = { 59 | "times": PackedFloat32Array(0), 60 | "transitions": PackedFloat32Array(1), 61 | "update": 0, 62 | "values": [Vector3(0, 1, 0)] 63 | } 64 | tracks/3/type = "value" 65 | tracks/3/imported = false 66 | tracks/3/enabled = true 67 | tracks/3/path = NodePath("Pivot:position") 68 | tracks/3/interp = 1 69 | tracks/3/loop_wrap = true 70 | tracks/3/keys = { 71 | "times": PackedFloat32Array(0), 72 | "transitions": PackedFloat32Array(1), 73 | "update": 0, 74 | "values": [Vector3(0, -1.45, 0)] 75 | } 76 | tracks/4/type = "value" 77 | tracks/4/imported = false 78 | tracks/4/enabled = true 79 | tracks/4/path = NodePath("Head/Camera3D/Weapon:position") 80 | tracks/4/interp = 1 81 | tracks/4/loop_wrap = true 82 | tracks/4/keys = { 83 | "times": PackedFloat32Array(0), 84 | "transitions": PackedFloat32Array(1), 85 | "update": 0, 86 | "values": [Vector3(0.18, -0.22, -0.375)] 87 | } 88 | tracks/5/type = "value" 89 | tracks/5/imported = false 90 | tracks/5/enabled = true 91 | tracks/5/path = NodePath("Head/Camera3D/Weapon:rotation") 92 | tracks/5/interp = 1 93 | tracks/5/loop_wrap = true 94 | tracks/5/keys = { 95 | "times": PackedFloat32Array(0), 96 | "transitions": PackedFloat32Array(1), 97 | "update": 0, 98 | "values": [Vector3(0, 0, 0)] 99 | } 100 | 101 | [sub_resource type="AnimationLibrary" id="AnimationLibrary_7pyrr"] 102 | _data = { 103 | "RESET": SubResource("Animation_t7flm") 104 | } 105 | 106 | [sub_resource type="AnimationLibrary" id="AnimationLibrary_ltetk"] 107 | 108 | [sub_resource type="Animation" id="Animation_evt8v"] 109 | length = 0.3 110 | tracks/0/type = "value" 111 | tracks/0/imported = false 112 | tracks/0/enabled = true 113 | tracks/0/path = NodePath("MeshInstance3D:mesh:height") 114 | tracks/0/interp = 1 115 | tracks/0/loop_wrap = true 116 | tracks/0/keys = { 117 | "times": PackedFloat32Array(0, 0.3), 118 | "transitions": PackedFloat32Array(1, 1), 119 | "update": 0, 120 | "values": [3.0, 2.0] 121 | } 122 | tracks/1/type = "value" 123 | tracks/1/imported = false 124 | tracks/1/enabled = true 125 | tracks/1/path = NodePath("CollisionShape3D:shape:height") 126 | tracks/1/interp = 1 127 | tracks/1/loop_wrap = true 128 | tracks/1/keys = { 129 | "times": PackedFloat32Array(0, 0.3), 130 | "transitions": PackedFloat32Array(1, 1), 131 | "update": 0, 132 | "values": [3.0, 2.0] 133 | } 134 | tracks/2/type = "value" 135 | tracks/2/imported = false 136 | tracks/2/enabled = true 137 | tracks/2/path = NodePath("Head:position:y") 138 | tracks/2/interp = 1 139 | tracks/2/loop_wrap = true 140 | tracks/2/keys = { 141 | "times": PackedFloat32Array(0, 0.3), 142 | "transitions": PackedFloat32Array(1, 1), 143 | "update": 0, 144 | "values": [1.0, 0.6] 145 | } 146 | tracks/3/type = "value" 147 | tracks/3/imported = false 148 | tracks/3/enabled = true 149 | tracks/3/path = NodePath("Pivot:position") 150 | tracks/3/interp = 1 151 | tracks/3/loop_wrap = true 152 | tracks/3/keys = { 153 | "times": PackedFloat32Array(0, 0.3), 154 | "transitions": PackedFloat32Array(1, 1), 155 | "update": 0, 156 | "values": [Vector3(0, -1.45, 0), Vector3(0, -0.96, 0)] 157 | } 158 | 159 | [sub_resource type="AnimationLibrary" id="AnimationLibrary_ri71f"] 160 | _data = { 161 | "crouch": SubResource("Animation_evt8v") 162 | } 163 | 164 | [node name="Player" type="CharacterBody3D"] 165 | collision_layer = 2 166 | collision_mask = 5 167 | script = ExtResource("1_sbhg4") 168 | mouse_sentitivity = 0.2 169 | 170 | [node name="StateMachine" type="Node" parent="."] 171 | script = ExtResource("2_mmcdy") 172 | start_state_path = NodePath("Idle") 173 | 174 | [node name="Idle" type="Node" parent="StateMachine"] 175 | script = ExtResource("3_sdfdx") 176 | 177 | [node name="Walk" type="Node" parent="StateMachine"] 178 | script = ExtResource("4_wg1ks") 179 | default_speed = 8 180 | 181 | [node name="Jump" type="Node" parent="StateMachine"] 182 | script = ExtResource("5_rtd2e") 183 | jump_power = 9.0 184 | 185 | [node name="Sprint" type="Node" parent="StateMachine"] 186 | script = ExtResource("5_4taip") 187 | 188 | [node name="Duration" type="Timer" parent="StateMachine/Sprint"] 189 | wait_time = 3.0 190 | one_shot = true 191 | 192 | [node name="Crouch" type="Node" parent="StateMachine"] 193 | script = ExtResource("7_po5wv") 194 | 195 | [node name="MeshInstance3D" type="MeshInstance3D" parent="."] 196 | mesh = SubResource("CapsuleMesh_i3sya") 197 | 198 | [node name="CollisionShape3D" type="CollisionShape3D" parent="."] 199 | shape = SubResource("CapsuleShape3D_bp4pk") 200 | 201 | [node name="Head" type="Node3D" parent="."] 202 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) 203 | 204 | [node name="Camera3D" type="Camera3D" parent="Head"] 205 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.4) 206 | current = true 207 | script = ExtResource("8_r6wnb") 208 | max_y = 2.5 209 | max_z = 2.5 210 | noise = SubResource("FastNoiseLite_3aafk") 211 | 212 | [node name="HUD" parent="Head/Camera3D" instance=ExtResource("2_wmwnf")] 213 | 214 | [node name="Weapon" parent="Head/Camera3D" instance=ExtResource("3_yiye0")] 215 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.18, -0.22, -0.375) 216 | camera_path = NodePath("..") 217 | max_x_recoil_rotation = 6.5 218 | 219 | [node name="Pivot" type="Node3D" parent="."] 220 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.45, 0) 221 | 222 | [node name="Feet" type="StaticBody3D" parent="Pivot"] 223 | collision_layer = 0 224 | 225 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Pivot/Feet"] 226 | shape = SubResource("CylinderShape3D_0pspf") 227 | 228 | [node name="Timer" type="Timer" parent="."] 229 | 230 | [node name="AnimationPlayer" type="AnimationPlayer" parent="."] 231 | libraries = { 232 | "": SubResource("AnimationLibrary_7pyrr"), 233 | "camera": SubResource("AnimationLibrary_ltetk"), 234 | "player": SubResource("AnimationLibrary_ri71f") 235 | } 236 | 237 | [connection signal="state_changed" from="StateMachine" to="." method="_on_state_machine_state_changed"] 238 | [connection signal="exited" from="StateMachine/Sprint" to="StateMachine" method="_on_sprint_exited"] 239 | [connection signal="timeout" from="StateMachine/Sprint/Duration" to="StateMachine/Sprint" method="_on_duration_timeout"] 240 | [connection signal="ammo_changed" from="Head/Camera3D/Weapon" to="." method="_on_weapon_ammo_changed"] 241 | [connection signal="decal_requested" from="Head/Camera3D/Weapon" to="." method="_on_weapon_decal_requested"] 242 | [connection signal="has_shot" from="Head/Camera3D/Weapon" to="." method="_on_weapon_has_shot"] 243 | [connection signal="heat_changed" from="Head/Camera3D/Weapon" to="Head/Camera3D/HUD" method="_on_weapon_heat_changed"] 244 | [connection signal="impact_requested" from="Head/Camera3D/Weapon" to="." method="_on_weapon_impact_requested"] 245 | [connection signal="state_changed" from="Head/Camera3D/Weapon" to="." method="_on_weapon_state_changed"] 246 | -------------------------------------------------------------------------------- /scenes/world.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=25 format=3 uid="uid://b2nirh036ket0"] 2 | 3 | [ext_resource type="Script" path="res://scenes/world.gd" id="1_aqqlb"] 4 | [ext_resource type="PackedScene" uid="uid://dkr12d528ypo0" path="res://entities/player/player.tscn" id="1_cnybd"] 5 | [ext_resource type="Material" uid="uid://dqyggwkbhvu1l" path="res://scenes/assets/floor_material.tres" id="2_cmo5a"] 6 | [ext_resource type="PackedScene" uid="uid://dvw4wy2xvdnxq" path="res://entities/enemy/enemy.tscn" id="3_h1m5e"] 7 | [ext_resource type="Material" uid="uid://cmrq1lp2x1tmt" path="res://scenes/assets/wall_material.tres" id="3_kxtie"] 8 | [ext_resource type="Material" uid="uid://cgbjgxlm3fo42" path="res://scenes/assets/obstacle_material.tres" id="4_4klao"] 9 | [ext_resource type="PackedScene" uid="uid://bjrf6wolgjjlx" path="res://scenes/target/target_dummy.tscn" id="7_47rgn"] 10 | 11 | [sub_resource type="BoxMesh" id="BoxMesh_ccynb"] 12 | material = ExtResource("2_cmo5a") 13 | size = Vector3(64, 0.5, 64) 14 | 15 | [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_50tbi"] 16 | points = PackedVector3Array(-32, -0.25, -32, -32, 0.25, -32, 32, -0.25, -32, -32, -0.25, 32, -32, 0.25, 32, 32, 0.25, -32, 32, -0.25, 32, 32, 0.25, 32) 17 | 18 | [sub_resource type="BoxMesh" id="BoxMesh_hq2rc"] 19 | material = ExtResource("3_kxtie") 20 | size = Vector3(64, 6, 0.5) 21 | 22 | [sub_resource type="BoxShape3D" id="BoxShape3D_pe1oo"] 23 | size = Vector3(64, 6, 0.5) 24 | 25 | [sub_resource type="BoxMesh" id="BoxMesh_pgomi"] 26 | material = ExtResource("3_kxtie") 27 | size = Vector3(30, 1.5, 0.5) 28 | 29 | [sub_resource type="BoxShape3D" id="BoxShape3D_n2has"] 30 | size = Vector3(30, 1.5, 0.5) 31 | 32 | [sub_resource type="BoxMesh" id="BoxMesh_let4w"] 33 | material = ExtResource("3_kxtie") 34 | size = Vector3(36, 3, 0.5) 35 | 36 | [sub_resource type="BoxShape3D" id="BoxShape3D_tb01v"] 37 | size = Vector3(36, 3, 0.5) 38 | 39 | [sub_resource type="PrismMesh" id="PrismMesh_tul5f"] 40 | material = ExtResource("4_4klao") 41 | size = Vector3(8, 4, 8) 42 | 43 | [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_8lwyf"] 44 | points = PackedVector3Array(-4, -2, -4, -4, -2, 4, 0, 2, -4, 4, -2, -4, 4, -2, 4, 0, 2, 4) 45 | 46 | [sub_resource type="CylinderMesh" id="CylinderMesh_3r8ri"] 47 | material = ExtResource("4_4klao") 48 | top_radius = 1.0 49 | bottom_radius = 1.0 50 | height = 6.0 51 | 52 | [sub_resource type="CylinderShape3D" id="CylinderShape3D_ocp42"] 53 | height = 6.0 54 | radius = 1.0 55 | 56 | [sub_resource type="BoxMesh" id="BoxMesh_51ujv"] 57 | material = ExtResource("4_4klao") 58 | size = Vector3(8, 1.5, 0.5) 59 | 60 | [sub_resource type="BoxShape3D" id="BoxShape3D_81mxv"] 61 | size = Vector3(8, 1.5, 0.5) 62 | 63 | [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_g5nm4"] 64 | sky_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) 65 | ground_horizon_color = Color(0.64625, 0.65575, 0.67075, 1) 66 | 67 | [sub_resource type="Sky" id="Sky_ta2n3"] 68 | sky_material = SubResource("ProceduralSkyMaterial_g5nm4") 69 | 70 | [sub_resource type="Environment" id="Environment_ywp5y"] 71 | background_mode = 2 72 | sky = SubResource("Sky_ta2n3") 73 | tonemap_mode = 2 74 | glow_enabled = true 75 | 76 | [node name="World" type="Node3D"] 77 | script = ExtResource("1_aqqlb") 78 | 79 | [node name="Ground" type="StaticBody3D" parent="."] 80 | collision_mask = 7 81 | metadata/_edit_lock_ = true 82 | metadata/_edit_group_ = true 83 | 84 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Ground"] 85 | mesh = SubResource("BoxMesh_ccynb") 86 | skeleton = NodePath("../..") 87 | 88 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"] 89 | shape = SubResource("ConvexPolygonShape3D_50tbi") 90 | 91 | [node name="Room" type="Node3D" parent="."] 92 | 93 | [node name="Walls" type="Node3D" parent="Room"] 94 | 95 | [node name="Wall1" type="StaticBody3D" parent="Room/Walls"] 96 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.75, 31.75) 97 | collision_mask = 7 98 | metadata/_edit_group_ = true 99 | metadata/_edit_lock_ = true 100 | 101 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Walls/Wall1"] 102 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) 103 | mesh = SubResource("BoxMesh_hq2rc") 104 | skeleton = NodePath("../../..") 105 | 106 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Walls/Wall1"] 107 | shape = SubResource("BoxShape3D_pe1oo") 108 | 109 | [node name="Wall2" type="StaticBody3D" parent="Room/Walls"] 110 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -31.75, 2.75, 0) 111 | collision_mask = 7 112 | metadata/_edit_group_ = true 113 | metadata/_edit_lock_ = true 114 | 115 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Walls/Wall2"] 116 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) 117 | mesh = SubResource("BoxMesh_hq2rc") 118 | skeleton = NodePath("../../..") 119 | 120 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Walls/Wall2"] 121 | shape = SubResource("BoxShape3D_pe1oo") 122 | 123 | [node name="Wall3" type="StaticBody3D" parent="Room/Walls"] 124 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 31.75, 2.75, 0) 125 | collision_mask = 7 126 | metadata/_edit_group_ = true 127 | metadata/_edit_lock_ = true 128 | 129 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Walls/Wall3"] 130 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) 131 | mesh = SubResource("BoxMesh_hq2rc") 132 | skeleton = NodePath("../../..") 133 | 134 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Walls/Wall3"] 135 | shape = SubResource("BoxShape3D_pe1oo") 136 | 137 | [node name="Wall4" type="StaticBody3D" parent="Room/Walls"] 138 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.75, -31.75) 139 | collision_mask = 7 140 | metadata/_edit_group_ = true 141 | metadata/_edit_lock_ = true 142 | 143 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Walls/Wall4"] 144 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) 145 | mesh = SubResource("BoxMesh_hq2rc") 146 | skeleton = NodePath("../../..") 147 | 148 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Walls/Wall4"] 149 | shape = SubResource("BoxShape3D_pe1oo") 150 | 151 | [node name="Wall5" type="StaticBody3D" parent="Room/Walls"] 152 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -17.529, 1, 3.5) 153 | collision_mask = 7 154 | metadata/_edit_group_ = true 155 | metadata/_edit_lock_ = true 156 | 157 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Walls/Wall5"] 158 | mesh = SubResource("BoxMesh_pgomi") 159 | skeleton = NodePath("../../..") 160 | 161 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Walls/Wall5"] 162 | shape = SubResource("BoxShape3D_n2has") 163 | 164 | [node name="Wall6" type="StaticBody3D" parent="Room/Walls"] 165 | transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -2.779, 1, -14.25) 166 | collision_mask = 7 167 | metadata/_edit_group_ = true 168 | metadata/_edit_lock_ = true 169 | 170 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Walls/Wall6"] 171 | mesh = SubResource("BoxMesh_let4w") 172 | skeleton = NodePath("../../..") 173 | 174 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Walls/Wall6"] 175 | shape = SubResource("BoxShape3D_tb01v") 176 | 177 | [node name="Obstacles" type="Node3D" parent="Room"] 178 | 179 | [node name="Ramp" type="StaticBody3D" parent="Room/Obstacles"] 180 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.5, 1.5, 19.75) 181 | collision_mask = 7 182 | metadata/_edit_group_ = true 183 | 184 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Ramp"] 185 | mesh = SubResource("PrismMesh_tul5f") 186 | 187 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Ramp"] 188 | shape = SubResource("ConvexPolygonShape3D_8lwyf") 189 | 190 | [node name="Pillar1" type="StaticBody3D" parent="Room/Obstacles"] 191 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 3.25, 3.5) 192 | metadata/_edit_group_ = true 193 | 194 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Pillar1"] 195 | mesh = SubResource("CylinderMesh_3r8ri") 196 | 197 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Pillar1"] 198 | shape = SubResource("CylinderShape3D_ocp42") 199 | 200 | [node name="Pillar2" type="StaticBody3D" parent="Room/Obstacles"] 201 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 3.25, 3.5) 202 | metadata/_edit_group_ = true 203 | 204 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Pillar2"] 205 | mesh = SubResource("CylinderMesh_3r8ri") 206 | 207 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Pillar2"] 208 | shape = SubResource("CylinderShape3D_ocp42") 209 | 210 | [node name="Pillar3" type="StaticBody3D" parent="Room/Obstacles"] 211 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 3.25, -8.5) 212 | metadata/_edit_group_ = true 213 | 214 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Pillar3"] 215 | mesh = SubResource("CylinderMesh_3r8ri") 216 | 217 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Pillar3"] 218 | shape = SubResource("CylinderShape3D_ocp42") 219 | 220 | [node name="Pillar4" type="StaticBody3D" parent="Room/Obstacles"] 221 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 3.25, -8.5) 222 | metadata/_edit_group_ = true 223 | 224 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Pillar4"] 225 | mesh = SubResource("CylinderMesh_3r8ri") 226 | 227 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Pillar4"] 228 | shape = SubResource("CylinderShape3D_ocp42") 229 | 230 | [node name="Pillar5" type="StaticBody3D" parent="Room/Obstacles"] 231 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.5, 3.25, -20.5) 232 | metadata/_edit_group_ = true 233 | 234 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Pillar5"] 235 | mesh = SubResource("CylinderMesh_3r8ri") 236 | 237 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Pillar5"] 238 | shape = SubResource("CylinderShape3D_ocp42") 239 | 240 | [node name="Pillar6" type="StaticBody3D" parent="Room/Obstacles"] 241 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.5, 3.25, -20.5) 242 | metadata/_edit_group_ = true 243 | 244 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Pillar6"] 245 | mesh = SubResource("CylinderMesh_3r8ri") 246 | 247 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Pillar6"] 248 | shape = SubResource("CylinderShape3D_ocp42") 249 | 250 | [node name="Obstacle1" type="StaticBody3D" parent="Room/Obstacles"] 251 | transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.5, 1, 19.75) 252 | metadata/_edit_group_ = true 253 | 254 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Obstacle1"] 255 | mesh = SubResource("BoxMesh_51ujv") 256 | 257 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Obstacle1"] 258 | shape = SubResource("BoxShape3D_81mxv") 259 | 260 | [node name="Obstacle2" type="StaticBody3D" parent="Room/Obstacles"] 261 | transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 12.5, 1, 19.75) 262 | metadata/_edit_group_ = true 263 | 264 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Obstacle2"] 265 | mesh = SubResource("BoxMesh_51ujv") 266 | 267 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Obstacle2"] 268 | shape = SubResource("BoxShape3D_81mxv") 269 | 270 | [node name="Obstacle3" type="StaticBody3D" parent="Room/Obstacles"] 271 | transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 19.75, 1, 19.75) 272 | metadata/_edit_group_ = true 273 | 274 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Room/Obstacles/Obstacle3"] 275 | mesh = SubResource("BoxMesh_51ujv") 276 | 277 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Room/Obstacles/Obstacle3"] 278 | shape = SubResource("BoxShape3D_81mxv") 279 | 280 | [node name="Player" parent="." instance=ExtResource("1_cnybd")] 281 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.4388, 1.75, 20.0927) 282 | 283 | [node name="Enemies" type="Node3D" parent="."] 284 | 285 | [node name="Enemy1" parent="Enemies" instance=ExtResource("3_h1m5e")] 286 | transform = Transform3D(-0.669546, 0, -0.742771, 0, 1, 0, 0.742771, 0, -0.669546, 5.3949, 1.25, -26.7578) 287 | 288 | [node name="Enemy2" parent="Enemies" instance=ExtResource("3_h1m5e")] 289 | transform = Transform3D(0.716643, 0, 0.69744, 0, 1, 0, -0.69744, 0, 0.716643, 27.6426, 1.25, -12.1635) 290 | 291 | [node name="Enemy3" parent="Enemies" instance=ExtResource("3_h1m5e")] 292 | transform = Transform3D(-0.997867, 0, -0.0652812, 0, 1, 0, 0.0652812, 0, -0.997867, 16.4194, 1.25, -18.2011) 293 | 294 | [node name="Enemy4" parent="Enemies" instance=ExtResource("3_h1m5e")] 295 | transform = Transform3D(-0.909976, 0, 0.414661, 0, 1, 0, -0.414661, 0, -0.909976, 24.618, 1.25, -26.7076) 296 | 297 | [node name="Enemy5" parent="Enemies" instance=ExtResource("3_h1m5e")] 298 | transform = Transform3D(0.926226, 0, 0.376968, 0, 1, 0, -0.376968, 0, 0.926226, 15.519, 1.25, -1.8022) 299 | 300 | [node name="Enemy6" parent="Enemies" instance=ExtResource("3_h1m5e")] 301 | transform = Transform3D(-0.679851, 0, -0.73335, 0, 1, 0, 0.73335, 0, -0.679851, 0.524599, 1.25, -9.9458) 302 | 303 | [node name="Enemy7" parent="Enemies" instance=ExtResource("3_h1m5e")] 304 | transform = Transform3D(-0.996287, 0, 0.0860951, 0, 1, 0, -0.0860951, 0, -0.996287, 3.90024, 1.25, -18.2011) 305 | 306 | [node name="Enemy8" parent="Enemies" instance=ExtResource("3_h1m5e")] 307 | transform = Transform3D(-0.154072, 0, 0.98806, 0, 1, 0, -0.98806, 0, -0.154072, 23.9303, 1.25, 2.41479) 308 | 309 | [node name="Targets" type="Node3D" parent="."] 310 | 311 | [node name="TargetDummy1" parent="Targets" instance=ExtResource("7_47rgn")] 312 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -24.75, 1.84003, -3) 313 | 314 | [node name="TargetDummy2" parent="Targets" instance=ExtResource("7_47rgn")] 315 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -18, 1.84003, -3) 316 | 317 | [node name="TargetDummy3" parent="Targets" instance=ExtResource("7_47rgn")] 318 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -11.5, 1.84003, -3) 319 | 320 | [node name="TargetDummy4" parent="Targets" instance=ExtResource("7_47rgn")] 321 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -28, 1.84003, -13) 322 | 323 | [node name="TargetDummy5" parent="Targets" instance=ExtResource("7_47rgn")] 324 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -21.25, 1.84003, -13) 325 | 326 | [node name="TargetDummy6" parent="Targets" instance=ExtResource("7_47rgn")] 327 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -14.75, 1.84003, -13) 328 | 329 | [node name="TargetDummy7" parent="Targets" instance=ExtResource("7_47rgn")] 330 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -7.75, 1.84003, -13) 331 | 332 | [node name="TargetDummy8" parent="Targets" instance=ExtResource("7_47rgn")] 333 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -24.25, 1.84003, -22) 334 | 335 | [node name="TargetDummy9" parent="Targets" instance=ExtResource("7_47rgn")] 336 | transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -11.5, 1.84003, -22) 337 | 338 | [node name="Impacts" type="Node3D" parent="."] 339 | 340 | [node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] 341 | transform = Transform3D(0.0229774, -0.367979, 0.92955, 0.00909326, 0.929834, 0.367867, -0.999695, 2.51528e-08, 0.0247113, 48.7779, 22.5789, 1.87348) 342 | light_color = Color(1, 0.854902, 0.87451, 1) 343 | shadow_enabled = true 344 | 345 | [node name="WorldEnvironment" type="WorldEnvironment" parent="."] 346 | environment = SubResource("Environment_ywp5y") 347 | 348 | [connection signal="decal_requested" from="Player" to="." method="_on_player_decal_requested"] 349 | [connection signal="impact_requested" from="Player" to="." method="_on_player_impact_requested"] 350 | --------------------------------------------------------------------------------