├── .gitattributes ├── .import ├── VineBricks.png-4b7799bd11e8612cef52aa68fa2c54fb.stex ├── brick_hs.png-42c562ae12196970fc59af2d5f15e669.stex ├── brick_ls.png-8342b7733f526d1beb476267bb0ac72d.etc2.stex ├── brick_ls.png-8342b7733f526d1beb476267bb0ac72d.res ├── brick_ls.png-8342b7733f526d1beb476267bb0ac72d.s3tc.stex ├── brick_ls.png-8342b7733f526d1beb476267bb0ac72d.stex ├── brick_normal.png-dee738c456a1060f575ef5f10daa54a9.res ├── brick_normal.png-dee738c456a1060f575ef5f10daa54a9.stex ├── brick_normal_i.png-946b7a9b62f27df1b6ec5011bd8ce0a8.stex ├── gems.png-9456845cbfb2d99f381c87e9b318b0ec.etc2.stex ├── gems.png-9456845cbfb2d99f381c87e9b318b0ec.s3tc.stex ├── gems.png-9456845cbfb2d99f381c87e9b318b0ec.stex ├── health.png-fe502f4981772d05429453c15570bb25.stex ├── health_bar.png-e3c1ba68a4d4bb2335768cf176425994.stex ├── health_mask.png-6558726acf0f6fc4eee7e84e658f554d.etc2.stex ├── health_mask.png-6558726acf0f6fc4eee7e84e658f554d.s3tc.stex ├── health_mask.png-6558726acf0f6fc4eee7e84e658f554d.stex ├── icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex ├── icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex ├── icon.png-487276ed1e3a0c39cad0279d744ee560.stex ├── knife.gltf-6a266b377ea1609beef6f0a241f777a1.scn ├── rope_16.png-90838104947dfc36f6b0ededff463016.etc2.stex ├── rope_16.png-90838104947dfc36f6b0ededff463016.s3tc.stex ├── rope_16.png-90838104947dfc36f6b0ededff463016.stex ├── rope_30.png-d56562bf05d306f1cd59ad706557b589.etc2.stex ├── rope_30.png-d56562bf05d306f1cd59ad706557b589.s3tc.stex ├── rope_30.png-d56562bf05d306f1cd59ad706557b589.stex ├── square.glb-e15d0b3538d9bd212f92107859646477.scn ├── square.gltf-6932d6badab0ebc3ec89148a6f928755.scn ├── square.obj-98173846cc71c8199cb1a040b51c6231.mesh ├── untitled.obj-5fb92f5dcc7b4054d67db5a78a6cad5e.mesh ├── vineBarProofOfConcept.png-7b6f52454f3f958d85d8db3524fa6ca4.stex ├── vine_rope.png-78e1b423ae51f878372bbf0eeb57023e.stex ├── wall.obj-f38a682d5b508d9efc107dc1fdd50537.mesh ├── wall_corner.obj-4829f3b5082c4b34b9fb351d0aa65fe6.mesh ├── wall_floor.obj-01febb5d6569d004178b53e0680f592f.mesh └── wall_floor_corner.obj-91cddd3742f0fcc8f585fa1de8bfabb9.mesh ├── Animations └── whip_attack.anim ├── LICENSE ├── Materials └── ground_regular.tres ├── Models ├── floor.tres ├── knife.mtl ├── untitled.obj └── untitled.obj.import ├── PlayerNew.gd ├── Prefabs ├── player.scn ├── test-enemy.tscn ├── tiles.tscn └── whip.tscn ├── README.md ├── Scenes ├── FPS.gd ├── LightAnim.gd ├── LightAnim.vs ├── MeshInstance2.gd ├── Scene.tscn └── TextureRect.gd ├── Scripts ├── FP-Camera.gd ├── Player.gd ├── Sprite.gd ├── System.gd ├── test-enemy.gd └── whip.gd ├── Tiles ├── Material.material ├── square.fbx ├── square.glb ├── square.glb.import ├── square.mesh ├── square.mtl ├── square.obj ├── square.obj.import ├── wall.mesh ├── wall.mtl ├── wall.obj ├── wall.obj.import ├── wall_corner.mesh ├── wall_corner.mtl ├── wall_corner.obj ├── wall_corner.obj.import ├── wall_floor.mesh ├── wall_floor.mtl ├── wall_floor.obj ├── wall_floor.obj.import ├── wall_floor_corner.mesh ├── wall_floor_corner.mtl ├── wall_floor_corner.obj └── wall_floor_corner.obj.import ├── WorldEnvironment.res ├── billboard.shader ├── default_env.tres ├── export_presets.cfg ├── ground.tres ├── icon.png ├── icon.png.import ├── new_environment.tres ├── project.godot ├── shader.shader ├── shader.tres ├── sprites ├── VineBricks.png ├── VineBricks.png.import ├── brick_hs.png ├── brick_hs.png.import ├── brick_ls.png ├── brick_ls.png.import ├── gems.png ├── gems.png.import ├── health.png ├── health.png.import ├── health_bar.png ├── health_bar.png.import ├── health_mask.png ├── health_mask.png.import ├── rope_16.png ├── rope_16.png.import ├── rope_30.png ├── rope_30.png.import ├── vineBarProofOfConcept.png ├── vineBarProofOfConcept.png.import ├── vine_rope.png └── vine_rope.png.import ├── test.gdns ├── test.vs ├── tiles.meshlib ├── tiles.tres └── untitled.mtl /.gitattributes: -------------------------------------------------------------------------------- 1 | *.png filter=lfs diff=lfs merge=lfs -text 2 | *.obj filter=lfs diff=lfs merge=lfs -text 3 | *.mtl filter=lfs diff=lfs merge=lfs -text 4 | -------------------------------------------------------------------------------- /.import/VineBricks.png-4b7799bd11e8612cef52aa68fa2c54fb.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/VineBricks.png-4b7799bd11e8612cef52aa68fa2c54fb.stex -------------------------------------------------------------------------------- /.import/brick_hs.png-42c562ae12196970fc59af2d5f15e669.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_hs.png-42c562ae12196970fc59af2d5f15e669.stex -------------------------------------------------------------------------------- /.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.etc2.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.etc2.stex -------------------------------------------------------------------------------- /.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.res -------------------------------------------------------------------------------- /.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.s3tc.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.s3tc.stex -------------------------------------------------------------------------------- /.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.stex -------------------------------------------------------------------------------- /.import/brick_normal.png-dee738c456a1060f575ef5f10daa54a9.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_normal.png-dee738c456a1060f575ef5f10daa54a9.res -------------------------------------------------------------------------------- /.import/brick_normal.png-dee738c456a1060f575ef5f10daa54a9.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_normal.png-dee738c456a1060f575ef5f10daa54a9.stex -------------------------------------------------------------------------------- /.import/brick_normal_i.png-946b7a9b62f27df1b6ec5011bd8ce0a8.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/brick_normal_i.png-946b7a9b62f27df1b6ec5011bd8ce0a8.stex -------------------------------------------------------------------------------- /.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.etc2.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.etc2.stex -------------------------------------------------------------------------------- /.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.s3tc.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.s3tc.stex -------------------------------------------------------------------------------- /.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.stex -------------------------------------------------------------------------------- /.import/health.png-fe502f4981772d05429453c15570bb25.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/health.png-fe502f4981772d05429453c15570bb25.stex -------------------------------------------------------------------------------- /.import/health_bar.png-e3c1ba68a4d4bb2335768cf176425994.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/health_bar.png-e3c1ba68a4d4bb2335768cf176425994.stex -------------------------------------------------------------------------------- /.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.etc2.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.etc2.stex -------------------------------------------------------------------------------- /.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.s3tc.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.s3tc.stex -------------------------------------------------------------------------------- /.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.stex -------------------------------------------------------------------------------- /.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex -------------------------------------------------------------------------------- /.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex -------------------------------------------------------------------------------- /.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex -------------------------------------------------------------------------------- /.import/knife.gltf-6a266b377ea1609beef6f0a241f777a1.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/knife.gltf-6a266b377ea1609beef6f0a241f777a1.scn -------------------------------------------------------------------------------- /.import/rope_16.png-90838104947dfc36f6b0ededff463016.etc2.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/rope_16.png-90838104947dfc36f6b0ededff463016.etc2.stex -------------------------------------------------------------------------------- /.import/rope_16.png-90838104947dfc36f6b0ededff463016.s3tc.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/rope_16.png-90838104947dfc36f6b0ededff463016.s3tc.stex -------------------------------------------------------------------------------- /.import/rope_16.png-90838104947dfc36f6b0ededff463016.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/rope_16.png-90838104947dfc36f6b0ededff463016.stex -------------------------------------------------------------------------------- /.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.etc2.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.etc2.stex -------------------------------------------------------------------------------- /.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.s3tc.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.s3tc.stex -------------------------------------------------------------------------------- /.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.stex -------------------------------------------------------------------------------- /.import/square.glb-e15d0b3538d9bd212f92107859646477.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/square.glb-e15d0b3538d9bd212f92107859646477.scn -------------------------------------------------------------------------------- /.import/square.gltf-6932d6badab0ebc3ec89148a6f928755.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/square.gltf-6932d6badab0ebc3ec89148a6f928755.scn -------------------------------------------------------------------------------- /.import/square.obj-98173846cc71c8199cb1a040b51c6231.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/square.obj-98173846cc71c8199cb1a040b51c6231.mesh -------------------------------------------------------------------------------- /.import/untitled.obj-5fb92f5dcc7b4054d67db5a78a6cad5e.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/untitled.obj-5fb92f5dcc7b4054d67db5a78a6cad5e.mesh -------------------------------------------------------------------------------- /.import/vineBarProofOfConcept.png-7b6f52454f3f958d85d8db3524fa6ca4.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/vineBarProofOfConcept.png-7b6f52454f3f958d85d8db3524fa6ca4.stex -------------------------------------------------------------------------------- /.import/vine_rope.png-78e1b423ae51f878372bbf0eeb57023e.stex: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/vine_rope.png-78e1b423ae51f878372bbf0eeb57023e.stex -------------------------------------------------------------------------------- /.import/wall.obj-f38a682d5b508d9efc107dc1fdd50537.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/wall.obj-f38a682d5b508d9efc107dc1fdd50537.mesh -------------------------------------------------------------------------------- /.import/wall_corner.obj-4829f3b5082c4b34b9fb351d0aa65fe6.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/wall_corner.obj-4829f3b5082c4b34b9fb351d0aa65fe6.mesh -------------------------------------------------------------------------------- /.import/wall_floor.obj-01febb5d6569d004178b53e0680f592f.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/wall_floor.obj-01febb5d6569d004178b53e0680f592f.mesh -------------------------------------------------------------------------------- /.import/wall_floor_corner.obj-91cddd3742f0fcc8f585fa1de8bfabb9.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/.import/wall_floor_corner.obj-91cddd3742f0fcc8f585fa1de8bfabb9.mesh -------------------------------------------------------------------------------- /Animations/whip_attack.anim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Animations/whip_attack.anim -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 turtlewit and Blasterott18 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 | -------------------------------------------------------------------------------- /Materials/ground_regular.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="SpatialMaterial" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://sprites/brick_ls.png" type="Texture" id=1] 4 | 5 | [resource] 6 | 7 | render_priority = 0 8 | flags_transparent = false 9 | flags_unshaded = false 10 | flags_vertex_lighting = false 11 | flags_no_depth_test = false 12 | flags_use_point_size = false 13 | flags_world_triplanar = false 14 | flags_fixed_size = false 15 | flags_albedo_tex_force_srgb = false 16 | vertex_color_use_as_albedo = false 17 | vertex_color_is_srgb = false 18 | params_diffuse_mode = 0 19 | params_specular_mode = 0 20 | params_blend_mode = 0 21 | params_cull_mode = 0 22 | params_depth_draw_mode = 0 23 | params_line_width = 1.0 24 | params_point_size = 1.0 25 | params_billboard_mode = 0 26 | params_grow = false 27 | params_use_alpha_scissor = false 28 | albedo_color = Color( 1, 1, 1, 1 ) 29 | albedo_texture = ExtResource( 1 ) 30 | metallic = 0.0 31 | metallic_specular = 0.5 32 | metallic_texture_channel = 0 33 | roughness = 0.0 34 | roughness_texture_channel = 0 35 | emission_enabled = false 36 | normal_enabled = false 37 | rim_enabled = false 38 | clearcoat_enabled = false 39 | anisotropy_enabled = false 40 | ao_enabled = false 41 | depth_enabled = false 42 | subsurf_scatter_enabled = false 43 | transmission_enabled = false 44 | refraction_enabled = false 45 | detail_enabled = false 46 | uv1_scale = Vector3( 1, 1, 1 ) 47 | uv1_offset = Vector3( 0, 0, 0 ) 48 | uv1_triplanar = false 49 | uv1_triplanar_sharpness = 1.0 50 | uv2_scale = Vector3( 1, 1, 1 ) 51 | uv2_offset = Vector3( 0, 0, 0 ) 52 | uv2_triplanar = false 53 | uv2_triplanar_sharpness = 1.0 54 | proximity_fade_enable = false 55 | distance_fade_enable = false 56 | _sections_unfolded = [ "Albedo", "Distance Fade" ] 57 | 58 | -------------------------------------------------------------------------------- /Models/knife.mtl: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9f4a57bf478caa83c2eef6d737043dbdb3508814594a5fc7e824719f7ab17baa 3 | size 605 4 | -------------------------------------------------------------------------------- /Models/untitled.obj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4f245c10464b2e443775b4652278c8ee23767e739d40e61be30657e9a646c214 3 | size 98484 4 | -------------------------------------------------------------------------------- /Models/untitled.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | type="Mesh" 5 | path="res://.import/untitled.obj-5fb92f5dcc7b4054d67db5a78a6cad5e.mesh" 6 | 7 | [deps] 8 | 9 | files=[ "res://.import/untitled.obj-5fb92f5dcc7b4054d67db5a78a6cad5e.mesh" ] 10 | 11 | source_file="res://Models/untitled.obj" 12 | source_md5="cb9c1a8d8b39cd3e9e2affadbde29375" 13 | 14 | dest_files=[ "res://.import/untitled.obj-5fb92f5dcc7b4054d67db5a78a6cad5e.mesh", "res://.import/untitled.obj-5fb92f5dcc7b4054d67db5a78a6cad5e.mesh" ] 15 | dest_md5="fc76e92718560244b5b85cda07617b92" 16 | 17 | [params] 18 | 19 | generate_tangents=true 20 | -------------------------------------------------------------------------------- /PlayerNew.gd: -------------------------------------------------------------------------------- 1 | extends KinematicBody 2 | 3 | var cmd = { 4 | forward_move = 0.0, 5 | right_move = 0.0, 6 | up_move = 0.0 7 | } 8 | 9 | export var x_mouse_sensitivity = .1 10 | 11 | export var gravity = 20 12 | 13 | export var friction = 6.0 14 | 15 | export var move_speed = 15.0 16 | export var run_acceleration = 14.0 17 | export var run_deacceleration = 10.0 18 | export var air_acceleration = 2.0 19 | export var air_deacceleration = 2.0 20 | export var air_control = 0.3 21 | export var side_strafe_acceleration = 50.0 22 | export var side_strafe_speed = 1.0 23 | export var jump_speed = 8.0 24 | export var move_scale = 1.0 25 | 26 | export var ground_snap_tolerance = 1 27 | 28 | var move_direction_norm = Vector3() 29 | var player_velocity = Vector3() 30 | 31 | var up = Vector3(0,1,0) 32 | 33 | var wish_jump = false; 34 | 35 | var touching_ground = false; 36 | 37 | func _ready(): 38 | set_physics_process(true) 39 | 40 | func _physics_process(delta): 41 | queue_jump() 42 | if touching_ground: 43 | ground_move(delta) 44 | else: 45 | air_move(delta) 46 | 47 | player_velocity = move_and_slide(player_velocity, up) 48 | touching_ground = is_on_floor() 49 | 50 | func snap_to_ground(from): 51 | #var from = global_transform.origin 52 | var to = from + -global_transform.basis.y * ground_snap_tolerance 53 | var space_state = get_world().get_direct_space_state() 54 | 55 | var result = space_state.intersect_ray(from, to) 56 | if !result.empty(): 57 | global_transform.origin.y = result.position.y 58 | 59 | func set_movement_dir(): 60 | cmd.forward_move = 0.0 61 | cmd.right_move = 0.0 62 | cmd.forward_move += int(Input.is_action_pressed("move_forward")) 63 | cmd.forward_move -= int(Input.is_action_pressed("move_backward")) 64 | cmd.right_move += int(Input.is_action_pressed("move_right")) 65 | cmd.right_move -= int(Input.is_action_pressed("move_left")) 66 | 67 | func queue_jump(): 68 | if Input.is_action_just_pressed("jump") and !wish_jump: 69 | wish_jump = true 70 | if Input.is_action_just_released("jump"): 71 | wish_jump = false 72 | 73 | func air_move(delta): 74 | var wishdir = Vector3() 75 | var wishvel = air_acceleration 76 | var accel = 0.0 77 | 78 | var scale = cmd_scale() 79 | 80 | set_movement_dir() 81 | 82 | wishdir += transform.basis.x * cmd.right_move 83 | wishdir -= transform.basis.z * cmd.forward_move 84 | 85 | var wishspeed = wishdir.length() 86 | wishspeed *= move_speed 87 | 88 | wishdir = wishdir.normalized() 89 | move_direction_norm = wishdir 90 | 91 | var wishspeed2 = wishspeed 92 | if player_velocity.dot(wishdir) < 0: 93 | accel = air_deacceleration 94 | else: 95 | accel = air_acceleration 96 | 97 | if(cmd.forward_move == 0) and (cmd.right_move != 0): 98 | if wishspeed > side_strafe_speed: 99 | wishspeed = side_strafe_speed 100 | accel = side_strafe_acceleration 101 | 102 | accelerate(wishdir, wishspeed, accel, delta) 103 | if air_control > 0: 104 | air_control(wishdir, wishspeed2, delta) 105 | 106 | player_velocity.y -= gravity * delta 107 | 108 | func air_control(wishdir, wishspeed, delta): 109 | var zspeed = 0.0 110 | var speed = 0.0 111 | var dot = 0.0 112 | var k = 0.0 113 | 114 | if (abs(cmd.forward_move) < 0.001) or (abs(wishspeed) < 0.001): 115 | return 116 | zspeed = player_velocity.y 117 | player_velocity.y = 0 118 | 119 | speed = player_velocity.length() 120 | player_velocity = player_velocity.normalized() 121 | 122 | dot = player_velocity.dot(wishdir) 123 | k = 32.0 124 | k *= air_control * dot * dot * delta 125 | 126 | if dot > 0: 127 | player_velocity.x = player_velocity.x * speed + wishdir.x * k 128 | player_velocity.y = player_velocity.y * speed + wishdir.y * k 129 | player_velocity.z = player_velocity.z * speed + wishdir.z * k 130 | 131 | player_velocity = player_velocity.normalized() 132 | move_direction_norm = player_velocity 133 | 134 | player_velocity.x *= speed 135 | player_velocity.y = zspeed 136 | player_velocity.z *= speed 137 | 138 | func ground_move(delta): 139 | var wishdir = Vector3() 140 | 141 | if (!wish_jump): 142 | apply_friction(1.0, delta) 143 | else: 144 | apply_friction(0, delta) 145 | 146 | set_movement_dir() 147 | 148 | var scale = cmd_scale() 149 | 150 | wishdir += transform.basis.x * cmd.right_move 151 | wishdir -= transform.basis.z * cmd.forward_move 152 | 153 | wishdir = wishdir.normalized() 154 | move_direction_norm = wishdir 155 | 156 | var wishspeed = wishdir.length() 157 | wishspeed *= move_speed 158 | 159 | accelerate(wishdir, wishspeed, run_acceleration, delta) 160 | 161 | player_velocity.y = 0.0 162 | 163 | if wish_jump: 164 | player_velocity.y = jump_speed 165 | wish_jump = false 166 | 167 | func apply_friction(t, delta): 168 | var vec = player_velocity 169 | var speed = 0.0 170 | var newspeed = 0.0 171 | var control = 0.0 172 | var drop = 0.0 173 | 174 | vec.y = 0.0 175 | speed = vec.length() 176 | drop = 0.0 177 | 178 | if touching_ground: 179 | if speed < run_deacceleration: 180 | control = run_deacceleration 181 | else: 182 | control = speed 183 | drop = control * friction * delta * t 184 | 185 | newspeed = speed - drop; 186 | if newspeed < 0: 187 | newspeed = 0 188 | if speed > 0: 189 | newspeed /= speed 190 | 191 | player_velocity.x *= newspeed 192 | player_velocity.z *= newspeed 193 | 194 | func accelerate(wishdir, wishspeed, accel, delta): 195 | var addspeed = 0.0 196 | var accelspeed = 0.0 197 | var currentspeed = 0.0 198 | 199 | currentspeed = player_velocity.dot(wishdir) 200 | addspeed = wishspeed - currentspeed 201 | if addspeed <=0: 202 | return 203 | accelspeed = accel * delta * wishspeed 204 | if accelspeed > addspeed: 205 | accelspeed = addspeed 206 | 207 | player_velocity.x += accelspeed * wishdir.x 208 | player_velocity.z += accelspeed * wishdir.z 209 | 210 | func cmd_scale(): 211 | var var_max = 0 212 | var total = 0.0 213 | var scale = 0.0 214 | 215 | var_max = int(abs(cmd.forward_move)) 216 | if(abs(cmd.right_move) > var_max): 217 | var_max = int(abs(cmd.right_move)) 218 | if var_max <= 0: 219 | return 0 220 | 221 | total = sqrt(cmd.forward_move * cmd.forward_move + cmd.right_move * cmd.right_move) 222 | scale = move_speed * var_max / (move_scale * total) 223 | 224 | return scale 225 | 226 | func _input(ev): 227 | if (ev is InputEventMouseMotion): 228 | rotate_y(-deg2rad(ev.relative.x) * x_mouse_sensitivity) -------------------------------------------------------------------------------- /Prefabs/player.scn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Prefabs/player.scn -------------------------------------------------------------------------------- /Prefabs/test-enemy.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://Scripts/test-enemy.gd" type="Script" id=1] 4 | [ext_resource path="res://sprites/gems.png" type="Texture" id=2] 5 | 6 | [sub_resource type="BoxShape" id=1] 7 | 8 | extents = Vector3( 2.5, 2.5, 0.25 ) 9 | 10 | [sub_resource type="SpatialMaterial" id=2] 11 | 12 | render_priority = 0 13 | flags_transparent = true 14 | flags_unshaded = false 15 | flags_vertex_lighting = false 16 | flags_no_depth_test = false 17 | flags_use_point_size = false 18 | flags_world_triplanar = false 19 | flags_fixed_size = false 20 | flags_albedo_tex_force_srgb = true 21 | vertex_color_use_as_albedo = false 22 | vertex_color_is_srgb = false 23 | params_diffuse_mode = 0 24 | params_specular_mode = 0 25 | params_blend_mode = 0 26 | params_cull_mode = 0 27 | params_depth_draw_mode = 0 28 | params_line_width = 1.0 29 | params_point_size = 1.0 30 | params_billboard_mode = 2 31 | params_grow = false 32 | params_use_alpha_scissor = false 33 | albedo_color = Color( 1, 1, 1, 1 ) 34 | metallic = 0.0 35 | metallic_specular = 0.5 36 | metallic_texture_channel = 0 37 | roughness = 0.0 38 | roughness_texture_channel = 0 39 | emission_enabled = false 40 | normal_enabled = false 41 | rim_enabled = false 42 | clearcoat_enabled = false 43 | anisotropy_enabled = false 44 | ao_enabled = false 45 | depth_enabled = false 46 | subsurf_scatter_enabled = false 47 | transmission_enabled = false 48 | refraction_enabled = false 49 | detail_enabled = false 50 | uv1_scale = Vector3( 1, 1, 1 ) 51 | uv1_offset = Vector3( 0, 0, 0 ) 52 | uv1_triplanar = false 53 | uv1_triplanar_sharpness = 1.0 54 | uv2_scale = Vector3( 1, 1, 1 ) 55 | uv2_offset = Vector3( 0, 0, 0 ) 56 | uv2_triplanar = false 57 | uv2_triplanar_sharpness = 1.0 58 | proximity_fade_enable = false 59 | distance_fade_enable = false 60 | _sections_unfolded = [ "Flags", "Parameters" ] 61 | 62 | [sub_resource type="Animation" id=3] 63 | 64 | length = 0.4 65 | loop = true 66 | step = 0.1 67 | tracks/0/type = "value" 68 | tracks/0/path = NodePath(".:frame") 69 | tracks/0/interp = 1 70 | tracks/0/loop_wrap = true 71 | tracks/0/imported = false 72 | tracks/0/enabled = true 73 | tracks/0/keys = { 74 | "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), 75 | "transitions": PoolRealArray( 1, 1, 1, 1 ), 76 | "update": 1, 77 | "values": [ 0, 1, 2, 1 ] 78 | } 79 | 80 | [node name="enemy" type="KinematicBody"] 81 | 82 | input_ray_pickable = true 83 | input_capture_on_drag = false 84 | collision_layer = 1 85 | collision_mask = 1 86 | axis_lock_linear_x = false 87 | axis_lock_linear_y = false 88 | axis_lock_linear_z = false 89 | axis_lock_angular_x = false 90 | axis_lock_angular_y = true 91 | axis_lock_angular_z = false 92 | collision/safe_margin = 0.001 93 | script = ExtResource( 1 ) 94 | _sections_unfolded = [ "Animation", "Axis Lock", "Geometry" ] 95 | 96 | [node name="CollisionShape" type="CollisionShape" parent="." index="0"] 97 | 98 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0 ) 99 | shape = SubResource( 1 ) 100 | disabled = false 101 | _sections_unfolded = [ "Transform" ] 102 | 103 | [node name="sprite" type="Sprite3D" parent="." index="1"] 104 | 105 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.1058, 0 ) 106 | layers = 1 107 | material_override = SubResource( 2 ) 108 | cast_shadow = 1 109 | extra_cull_margin = 0.0 110 | use_in_baked_light = false 111 | lod_min_distance = 0.0 112 | lod_min_hysteresis = 0.0 113 | lod_max_distance = 0.0 114 | lod_max_hysteresis = 0.0 115 | centered = true 116 | offset = Vector2( 0, 0 ) 117 | flip_h = false 118 | flip_v = false 119 | modulate = Color( 1, 1, 1, 1 ) 120 | opacity = 1.0 121 | pixel_size = 0.1563 122 | axis = 2 123 | transparent = true 124 | shaded = false 125 | double_sided = true 126 | alpha_cut = 0 127 | texture = ExtResource( 2 ) 128 | vframes = 1 129 | hframes = 3 130 | frame = 2 131 | region_enabled = false 132 | region_rect = Rect2( 0, 0, 0, 0 ) 133 | _sections_unfolded = [ "Animation", "Geometry" ] 134 | 135 | [node name="AnimationPlayer" type="AnimationPlayer" parent="sprite" index="0"] 136 | 137 | root_node = NodePath("..") 138 | autoplay = "" 139 | playback_process_mode = 1 140 | playback_default_blend_time = 0.0 141 | playback_speed = 0.4 142 | "anims/New Anim" = SubResource( 3 ) 143 | blend_times = [ ] 144 | _sections_unfolded = [ "Pause", "Playback Options" ] 145 | 146 | 147 | -------------------------------------------------------------------------------- /Prefabs/tiles.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=12 format=2] 2 | 3 | [ext_resource path="res://Tiles/wall_floor.obj" type="ArrayMesh" id=1] 4 | [ext_resource path="res://Tiles/Material.material" type="Material" id=2] 5 | [ext_resource path="res://Tiles/square.obj" type="ArrayMesh" id=3] 6 | [ext_resource path="res://Tiles/wall_floor_corner.obj" type="ArrayMesh" id=4] 7 | [ext_resource path="res://Tiles/wall_corner.obj" type="ArrayMesh" id=5] 8 | [ext_resource path="res://Tiles/wall.obj" type="ArrayMesh" id=6] 9 | 10 | [sub_resource type="ConcavePolygonShape" id=1] 11 | 12 | data = PoolVector3Array( 2.5, 0, 2.5, 2.5, 0, -2.5, -2.5, 0, 2.5, -2.5, 0, 2.5, 2.5, 0, -2.5, -2.5, 0, -2.5, -2.5, 0.5, -2.5, 2.5, 0.5, -2.5, -2.5, 0.5, 2.5, -2.5, 0.5, 2.5, 2.5, 0.5, -2.5, 2.498, 0.5, 2.5, 2.5, 0.5, -2.5, 2.5, 0, -2.5, 2.498, 0.5, 2.5, 2.498, 0.5, 2.5, 2.5, 0, -2.5, 2.5, 0, 2.5, 2.498, 0.5, 2.5, 2.5, 0, 2.5, -2.5, 0.5, 2.5, -2.5, 0.5, 2.5, 2.5, 0, 2.5, -2.5, 0, 2.5, -2.5, 0.5, 2.5, -2.5, 0, 2.5, -2.5, 0.5, -2.5, -2.5, 0.5, -2.5, -2.5, 0, 2.5, -2.5, 0, -2.5, 2.5, 0, -2.5, 2.5, 0.5, -2.5, -2.5, 0, -2.5, -2.5, 0, -2.5, 2.5, 0.5, -2.5, -2.5, 0.5, -2.5, -2.5, 5, 2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, -2.5, -2, 5, -2.5, -2, 5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, -2.5, -2, 5, -2.5, -2, 0.5, -2.5, -2, 5, 2.5, -2, 5, 2.5, -2, 0.5, -2.5, -2, 0.5, 2.5, -2, 5, 2.5, -2, 0.5, 2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, 2.5, -2, 0.5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2, 5, -2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 5, -2.5, -2, 5, 2.5 ) 13 | 14 | [sub_resource type="ConcavePolygonShape" id=2] 15 | 16 | data = PoolVector3Array( 2.5, 0, 2.5, 2.5, 0, -2.5, -2.5, 0, 2.5, -2.5, 0, 2.5, 2.5, 0, -2.5, -2.5, 0, -2.5, -2.5, 0.5, -2.5, 2.5, 0.5, -2.5, -2.5, 0.5, 2.5, -2.5, 0.5, 2.5, 2.5, 0.5, -2.5, 2.498, 0.5, 2.5, 2.5, 0.5, -2.5, 2.5, 0, -2.5, 2.498, 0.5, 2.5, 2.498, 0.5, 2.5, 2.5, 0, -2.5, 2.5, 0, 2.5, 2.498, 0.5, 2.5, 2.5, 0, 2.5, -2.5, 0.5, 2.5, -2.5, 0.5, 2.5, 2.5, 0, 2.5, -2.5, 0, 2.5, -2.5, 0.5, 2.5, -2.5, 0, 2.5, -2.5, 0.5, -2.5, -2.5, 0.5, -2.5, -2.5, 0, 2.5, -2.5, 0, -2.5, 2.5, 0, -2.5, 2.5, 0.5, -2.5, -2.5, 0, -2.5, -2.5, 0, -2.5, 2.5, 0.5, -2.5, -2.5, 0.5, -2.5 ) 17 | 18 | [sub_resource type="ConcavePolygonShape" id=3] 19 | 20 | data = PoolVector3Array( 2.5, 0, 2.5, 2.5, 0, -2.5, -2.5, 0, 2.5, -2.5, 0, 2.5, 2.5, 0, -2.5, -2.5, 0, -2.5, -2.5, 0.5, -2.5, 2.5, 0.5, -2.5, -2.5, 0.5, 2.5, -2.5, 0.5, 2.5, 2.5, 0.5, -2.5, 2.498, 0.5, 2.5, 2.5, 0.5, -2.5, 2.5, 0, -2.5, 2.498, 0.5, 2.5, 2.498, 0.5, 2.5, 2.5, 0, -2.5, 2.5, 0, 2.5, 2.498, 0.5, 2.5, 2.5, 0, 2.5, -2.5, 0.5, 2.5, -2.5, 0.5, 2.5, 2.5, 0, 2.5, -2.5, 0, 2.5, -2.5, 0.5, 2.5, -2.5, 0, 2.5, -2.5, 0.5, -2.5, -2.5, 0.5, -2.5, -2.5, 0, 2.5, -2.5, 0, -2.5, 2.5, 0, -2.5, 2.5, 0.5, -2.5, -2.5, 0, -2.5, -2.5, 0, -2.5, 2.5, 0.5, -2.5, -2.5, 0.5, -2.5, -2.5, 5, 2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, -2.5, -2, 5, -2.5, -2, 5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, -2.5, -2, 5, -2.5, -2, 0.5, -2.5, -2, 5, 2.5, -2, 5, 2.5, -2, 0.5, -2.5, -2, 0.5, 2.5, -2, 5, 2.5, -2, 0.5, 2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, 2.5, -2, 0.5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2, 5, -2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 5, -2.5, -2, 5, 2.5, -2, 5, -2, -2, 0.5, -2, -2, 5, -2.5, -2, 5, -2.5, -2, 0.5, -2, -2, 0.5, -2.5, -2, 5, -2.5, -2, 0.5, -2.5, 2.5, 5, -2.5, 2.5, 5, -2.5, -2, 0.5, -2.5, 2.5, 0.5, -2.5, 2.5, 5, -2.5, 2.5, 0.5, -2.5, 2.5, 5, -2, 2.5, 5, -2, 2.5, 0.5, -2.5, 2.5, 0.5, -2, 2.5, 5, -2, 2.5, 0.5, -2, -2, 5, -2, -2, 5, -2, 2.5, 0.5, -2, -2, 0.5, -2, 2.5, 0.5, -2.5, -2, 0.5, -2.5, 2.5, 0.5, -2, 2.5, 0.5, -2, -2, 0.5, -2.5, -2, 0.5, -2, -2, 5, -2.5, 2.5, 5, -2.5, -2, 5, -2, -2, 5, -2, 2.5, 5, -2.5, 2.5, 5, -2 ) 21 | 22 | [sub_resource type="ConcavePolygonShape" id=4] 23 | 24 | data = PoolVector3Array( -2.5, 5, 2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, -2.5, -2, 5, -2.5, -2, 5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, -2.5, -2, 5, -2.5, -2, 0.5, -2.5, -2, 5, 2.5, -2, 5, 2.5, -2, 0.5, -2.5, -2, 0.5, 2.5, -2, 5, 2.5, -2, 0.5, 2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, 2.5, -2, 0.5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2, 5, -2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 5, -2.5, -2, 5, 2.5, -2, 5, -2, -2, 0.5, -2, -2, 5, -2.5, -2, 5, -2.5, -2, 0.5, -2, -2, 0.5, -2.5, -2, 5, -2.5, -2, 0.5, -2.5, 2.5, 5, -2.5, 2.5, 5, -2.5, -2, 0.5, -2.5, 2.5, 0.5, -2.5, 2.5, 5, -2.5, 2.5, 0.5, -2.5, 2.5, 5, -2, 2.5, 5, -2, 2.5, 0.5, -2.5, 2.5, 0.5, -2, 2.5, 5, -2, 2.5, 0.5, -2, -2, 5, -2, -2, 5, -2, 2.5, 0.5, -2, -2, 0.5, -2, 2.5, 0.5, -2.5, -2, 0.5, -2.5, 2.5, 0.5, -2, 2.5, 0.5, -2, -2, 0.5, -2.5, -2, 0.5, -2, -2, 5, -2.5, 2.5, 5, -2.5, -2, 5, -2, -2, 5, -2, 2.5, 5, -2.5, 2.5, 5, -2 ) 25 | 26 | [sub_resource type="ConcavePolygonShape" id=5] 27 | 28 | data = PoolVector3Array( -2.5, 5, 2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 5, -2.5, -2.5, 0.5, -2.5, -2, 5, -2.5, -2, 5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, -2.5, -2, 5, -2.5, -2, 0.5, -2.5, -2, 5, 2.5, -2, 5, 2.5, -2, 0.5, -2.5, -2, 0.5, 2.5, -2, 5, 2.5, -2, 0.5, 2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, 2.5, -2, 0.5, -2.5, -2.5, 0.5, -2.5, -2, 0.5, 2.5, -2, 0.5, 2.5, -2.5, 0.5, -2.5, -2.5, 0.5, 2.5, -2.5, 5, -2.5, -2, 5, -2.5, -2.5, 5, 2.5, -2.5, 5, 2.5, -2, 5, -2.5, -2, 5, 2.5 ) 29 | 30 | [node name="Spatial" type="Spatial"] 31 | 32 | [node name="wall_floor" type="MeshInstance" parent="." index="0"] 33 | 34 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -9.36852, -0.397072, -1.15006 ) 35 | layers = 1 36 | material_override = null 37 | cast_shadow = 1 38 | extra_cull_margin = 0.0 39 | use_in_baked_light = false 40 | lod_min_distance = 0.0 41 | lod_min_hysteresis = 0.0 42 | lod_max_distance = 0.0 43 | lod_max_hysteresis = 0.0 44 | mesh = ExtResource( 1 ) 45 | skeleton = NodePath("..") 46 | material/0 = ExtResource( 2 ) 47 | _sections_unfolded = [ "material" ] 48 | 49 | [node name="StaticBody" type="StaticBody" parent="wall_floor" index="0"] 50 | 51 | input_ray_pickable = true 52 | input_capture_on_drag = false 53 | collision_layer = 1 54 | collision_mask = 1 55 | friction = 1.0 56 | bounce = 0.0 57 | constant_linear_velocity = Vector3( 0, 0, 0 ) 58 | constant_angular_velocity = Vector3( 0, 0, 0 ) 59 | 60 | [node name="CollisionShape" type="CollisionShape" parent="wall_floor/StaticBody" index="0"] 61 | 62 | shape = SubResource( 1 ) 63 | disabled = false 64 | 65 | [node name="floor" type="MeshInstance" parent="." index="1"] 66 | 67 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.65828, -0.300496, -7.42424 ) 68 | layers = 1 69 | material_override = null 70 | cast_shadow = 1 71 | extra_cull_margin = 0.0 72 | use_in_baked_light = false 73 | lod_min_distance = 0.0 74 | lod_min_hysteresis = 0.0 75 | lod_max_distance = 0.0 76 | lod_max_hysteresis = 0.0 77 | mesh = ExtResource( 3 ) 78 | skeleton = NodePath("..") 79 | material/0 = ExtResource( 2 ) 80 | _sections_unfolded = [ "material" ] 81 | 82 | [node name="StaticBody" type="StaticBody" parent="floor" index="0"] 83 | 84 | input_ray_pickable = true 85 | input_capture_on_drag = false 86 | collision_layer = 1 87 | collision_mask = 1 88 | friction = 1.0 89 | bounce = 0.0 90 | constant_linear_velocity = Vector3( 0, 0, 0 ) 91 | constant_angular_velocity = Vector3( 0, 0, 0 ) 92 | 93 | [node name="CollisionShape" type="CollisionShape" parent="floor/StaticBody" index="0"] 94 | 95 | shape = SubResource( 2 ) 96 | disabled = false 97 | 98 | [node name="wall_floor_corner" type="MeshInstance" parent="." index="2"] 99 | 100 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5.56832, -1.22399, 5.76743 ) 101 | layers = 1 102 | material_override = null 103 | cast_shadow = 1 104 | extra_cull_margin = 0.0 105 | use_in_baked_light = false 106 | lod_min_distance = 0.0 107 | lod_min_hysteresis = 0.0 108 | lod_max_distance = 0.0 109 | lod_max_hysteresis = 0.0 110 | mesh = ExtResource( 4 ) 111 | skeleton = NodePath("..") 112 | material/0 = ExtResource( 2 ) 113 | _sections_unfolded = [ "material" ] 114 | 115 | [node name="StaticBody" type="StaticBody" parent="wall_floor_corner" index="0"] 116 | 117 | input_ray_pickable = true 118 | input_capture_on_drag = false 119 | collision_layer = 1 120 | collision_mask = 1 121 | friction = 1.0 122 | bounce = 0.0 123 | constant_linear_velocity = Vector3( 0, 0, 0 ) 124 | constant_angular_velocity = Vector3( 0, 0, 0 ) 125 | 126 | [node name="CollisionShape" type="CollisionShape" parent="wall_floor_corner/StaticBody" index="0"] 127 | 128 | shape = SubResource( 3 ) 129 | disabled = false 130 | 131 | [node name="wall_corner" type="MeshInstance" parent="." index="3"] 132 | 133 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 7.10842, -1.21745, -6.53129 ) 134 | layers = 1 135 | material_override = null 136 | cast_shadow = 1 137 | extra_cull_margin = 0.0 138 | use_in_baked_light = false 139 | lod_min_distance = 0.0 140 | lod_min_hysteresis = 0.0 141 | lod_max_distance = 0.0 142 | lod_max_hysteresis = 0.0 143 | mesh = ExtResource( 5 ) 144 | skeleton = NodePath("..") 145 | material/0 = ExtResource( 2 ) 146 | _sections_unfolded = [ "material" ] 147 | 148 | [node name="StaticBody" type="StaticBody" parent="wall_corner" index="0"] 149 | 150 | input_ray_pickable = true 151 | input_capture_on_drag = false 152 | collision_layer = 1 153 | collision_mask = 1 154 | friction = 1.0 155 | bounce = 0.0 156 | constant_linear_velocity = Vector3( 0, 0, 0 ) 157 | constant_angular_velocity = Vector3( 0, 0, 0 ) 158 | 159 | [node name="CollisionShape" type="CollisionShape" parent="wall_corner/StaticBody" index="0"] 160 | 161 | shape = SubResource( 4 ) 162 | disabled = false 163 | 164 | [node name="wall" type="MeshInstance" parent="." index="4"] 165 | 166 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.13939, -0.392742, 8.76482 ) 167 | layers = 1 168 | material_override = null 169 | cast_shadow = 1 170 | extra_cull_margin = 0.0 171 | use_in_baked_light = false 172 | lod_min_distance = 0.0 173 | lod_min_hysteresis = 0.0 174 | lod_max_distance = 0.0 175 | lod_max_hysteresis = 0.0 176 | mesh = ExtResource( 6 ) 177 | skeleton = NodePath("..") 178 | material/0 = ExtResource( 2 ) 179 | _sections_unfolded = [ "material" ] 180 | 181 | [node name="StaticBody" type="StaticBody" parent="wall" index="0"] 182 | 183 | input_ray_pickable = true 184 | input_capture_on_drag = false 185 | collision_layer = 1 186 | collision_mask = 1 187 | friction = 1.0 188 | bounce = 0.0 189 | constant_linear_velocity = Vector3( 0, 0, 0 ) 190 | constant_angular_velocity = Vector3( 0, 0, 0 ) 191 | 192 | [node name="CollisionShape" type="CollisionShape" parent="wall/StaticBody" index="0"] 193 | 194 | shape = SubResource( 5 ) 195 | disabled = false 196 | 197 | 198 | -------------------------------------------------------------------------------- /Prefabs/whip.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=7 format=2] 2 | 3 | [ext_resource path="res://Scripts/whip.gd" type="Script" id=1] 4 | [ext_resource path="res://sprites/rope_16.png" type="Texture" id=2] 5 | [ext_resource path="res://sprites/rope_30.png" type="Texture" id=3] 6 | [ext_resource path="res://Animations/whip_attack.anim" type="Animation" id=4] 7 | 8 | [sub_resource type="SpatialMaterial" id=1] 9 | 10 | render_priority = 0 11 | flags_transparent = true 12 | flags_unshaded = true 13 | flags_vertex_lighting = false 14 | flags_no_depth_test = false 15 | flags_use_point_size = false 16 | flags_world_triplanar = false 17 | flags_fixed_size = false 18 | flags_albedo_tex_force_srgb = true 19 | vertex_color_use_as_albedo = false 20 | vertex_color_is_srgb = false 21 | params_diffuse_mode = 0 22 | params_specular_mode = 0 23 | params_blend_mode = 0 24 | params_cull_mode = 0 25 | params_depth_draw_mode = 0 26 | params_line_width = 1.0 27 | params_point_size = 1.0 28 | params_billboard_mode = 1 29 | params_grow = false 30 | params_use_alpha_scissor = false 31 | albedo_color = Color( 0.59375, 0.59375, 0.59375, 1 ) 32 | metallic = 0.0 33 | metallic_specular = 0.5 34 | metallic_texture_channel = 0 35 | roughness = 0.0 36 | roughness_texture_channel = 0 37 | emission_enabled = false 38 | normal_enabled = false 39 | rim_enabled = false 40 | clearcoat_enabled = false 41 | anisotropy_enabled = false 42 | ao_enabled = false 43 | depth_enabled = false 44 | subsurf_scatter_enabled = false 45 | transmission_enabled = false 46 | refraction_enabled = false 47 | detail_enabled = false 48 | uv1_scale = Vector3( 1, 1, 1 ) 49 | uv1_offset = Vector3( 0, 0, 0 ) 50 | uv1_triplanar = false 51 | uv1_triplanar_sharpness = 1.0 52 | uv2_scale = Vector3( 1, 1, 1 ) 53 | uv2_offset = Vector3( 0, 0, 0 ) 54 | uv2_triplanar = false 55 | uv2_triplanar_sharpness = 1.0 56 | proximity_fade_enable = false 57 | distance_fade_enable = false 58 | _sections_unfolded = [ "Albedo", "Flags", "Metallic", "Parameters" ] 59 | 60 | [sub_resource type="Animation" id=2] 61 | 62 | resource_name = "Idle" 63 | length = 1.0 64 | loop = true 65 | step = 0.1 66 | tracks/0/type = "value" 67 | tracks/0/path = NodePath("section_0:rotation_degrees") 68 | tracks/0/interp = 1 69 | tracks/0/loop_wrap = true 70 | tracks/0/imported = false 71 | tracks/0/enabled = true 72 | tracks/0/keys = { 73 | "times": PoolRealArray( 0 ), 74 | "transitions": PoolRealArray( 1 ), 75 | "update": 0, 76 | "values": [ Vector3( -71.7996, 0, 0 ) ] 77 | } 78 | tracks/1/type = "value" 79 | tracks/1/path = NodePath("section_0/section_1:rotation_degrees") 80 | tracks/1/interp = 1 81 | tracks/1/loop_wrap = true 82 | tracks/1/imported = false 83 | tracks/1/enabled = true 84 | tracks/1/keys = { 85 | "times": PoolRealArray( 0 ), 86 | "transitions": PoolRealArray( 1 ), 87 | "update": 0, 88 | "values": [ Vector3( -7.91559, 0, 0 ) ] 89 | } 90 | tracks/2/type = "value" 91 | tracks/2/path = NodePath("section_0/section_1/section_2:rotation_degrees") 92 | tracks/2/interp = 1 93 | tracks/2/loop_wrap = true 94 | tracks/2/imported = false 95 | tracks/2/enabled = true 96 | tracks/2/keys = { 97 | "times": PoolRealArray( 0 ), 98 | "transitions": PoolRealArray( 1 ), 99 | "update": 0, 100 | "values": [ Vector3( 2.15442, 0, 0 ) ] 101 | } 102 | tracks/3/type = "value" 103 | tracks/3/path = NodePath("section_0/section_1/section_2/section_3:rotation_degrees") 104 | tracks/3/interp = 1 105 | tracks/3/loop_wrap = true 106 | tracks/3/imported = false 107 | tracks/3/enabled = true 108 | tracks/3/keys = { 109 | "times": PoolRealArray( 0 ), 110 | "transitions": PoolRealArray( 1 ), 111 | "update": 0, 112 | "values": [ Vector3( -8.03857, 0, 0 ) ] 113 | } 114 | tracks/4/type = "value" 115 | tracks/4/path = NodePath("section_0/section_1/section_2/section_3/section_4:rotation_degrees") 116 | tracks/4/interp = 1 117 | tracks/4/loop_wrap = true 118 | tracks/4/imported = false 119 | tracks/4/enabled = true 120 | tracks/4/keys = { 121 | "times": PoolRealArray( 0 ), 122 | "transitions": PoolRealArray( 1 ), 123 | "update": 0, 124 | "values": [ Vector3( 4.44161, 0, 0 ) ] 125 | } 126 | tracks/5/type = "value" 127 | tracks/5/path = NodePath("section_0/section_1/section_2/section_3/section_4/section_5:rotation_degrees") 128 | tracks/5/interp = 1 129 | tracks/5/loop_wrap = true 130 | tracks/5/imported = false 131 | tracks/5/enabled = true 132 | tracks/5/keys = { 133 | "times": PoolRealArray( 0 ), 134 | "transitions": PoolRealArray( 1 ), 135 | "update": 0, 136 | "values": [ Vector3( -3.61635, 0, 0 ) ] 137 | } 138 | tracks/6/type = "value" 139 | tracks/6/path = NodePath("section_0/section_1/section_2/section_3/section_4/section_5/section_6:rotation_degrees") 140 | tracks/6/interp = 1 141 | tracks/6/loop_wrap = true 142 | tracks/6/imported = false 143 | tracks/6/enabled = true 144 | tracks/6/keys = { 145 | "times": PoolRealArray( 0 ), 146 | "transitions": PoolRealArray( 1 ), 147 | "update": 0, 148 | "values": [ Vector3( -1.63172, 0, 0 ) ] 149 | } 150 | tracks/7/type = "value" 151 | tracks/7/path = NodePath("section_0/section_1/section_2/section_3/section_4/section_5/section_6/section_7:rotation_degrees") 152 | tracks/7/interp = 1 153 | tracks/7/loop_wrap = true 154 | tracks/7/imported = false 155 | tracks/7/enabled = true 156 | tracks/7/keys = { 157 | "times": PoolRealArray( 0 ), 158 | "transitions": PoolRealArray( 1 ), 159 | "update": 0, 160 | "values": [ Vector3( -5.40952, 0, 0 ) ] 161 | } 162 | 163 | [node name="whip" type="Spatial"] 164 | 165 | transform = Transform( 2.73688, 0, 0, 0, 2.73688, 0, 0, 0, 2.73688, 0, 0, 0 ) 166 | script = ExtResource( 1 ) 167 | _sections_unfolded = [ "Transform" ] 168 | 169 | [node name="section_0" type="Sprite3D" parent="." index="0"] 170 | 171 | transform = Transform( 0.912189, 0.409769, 0, -0.409769, 0.91219, 0, 0, 0, 1, 0, 0, 0 ) 172 | layers = 2 173 | material_override = SubResource( 1 ) 174 | cast_shadow = 1 175 | extra_cull_margin = 0.0 176 | use_in_baked_light = false 177 | lod_min_distance = 0.0 178 | lod_min_hysteresis = 0.0 179 | lod_max_distance = 0.0 180 | lod_max_hysteresis = 0.0 181 | centered = true 182 | offset = Vector2( 0, 0 ) 183 | flip_h = false 184 | flip_v = false 185 | modulate = Color( 1, 1, 1, 1 ) 186 | opacity = 1.0 187 | pixel_size = 0.04 188 | axis = 2 189 | transparent = true 190 | shaded = false 191 | double_sided = true 192 | alpha_cut = 0 193 | texture = ExtResource( 2 ) 194 | vframes = 1 195 | hframes = 1 196 | frame = 0 197 | region_enabled = false 198 | region_rect = Rect2( 0, 0, 0, 0 ) 199 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 200 | 201 | [node name="section_1" type="Sprite3D" parent="section_0" index="0"] 202 | 203 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1.94801e-09, -7.45058e-09, -0.152393 ) 204 | layers = 2 205 | material_override = SubResource( 1 ) 206 | cast_shadow = 1 207 | extra_cull_margin = 0.0 208 | use_in_baked_light = false 209 | lod_min_distance = 0.0 210 | lod_min_hysteresis = 0.0 211 | lod_max_distance = 0.0 212 | lod_max_hysteresis = 0.0 213 | centered = true 214 | offset = Vector2( 0, 0 ) 215 | flip_h = false 216 | flip_v = false 217 | modulate = Color( 1, 1, 1, 1 ) 218 | opacity = 1.0 219 | pixel_size = 0.04 220 | axis = 2 221 | transparent = true 222 | shaded = false 223 | double_sided = true 224 | alpha_cut = 0 225 | texture = ExtResource( 2 ) 226 | vframes = 1 227 | hframes = 1 228 | frame = 0 229 | region_enabled = false 230 | region_rect = Rect2( 0, 0, 0, 0 ) 231 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 232 | 233 | [node name="section_2" type="Sprite3D" parent="section_0/section_1" index="0"] 234 | 235 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -2.23517e-08, 5.96046e-08, -0.196666 ) 236 | layers = 2 237 | material_override = SubResource( 1 ) 238 | cast_shadow = 1 239 | extra_cull_margin = 0.0 240 | use_in_baked_light = false 241 | lod_min_distance = 0.0 242 | lod_min_hysteresis = 0.0 243 | lod_max_distance = 0.0 244 | lod_max_hysteresis = 0.0 245 | centered = true 246 | offset = Vector2( 0, 0 ) 247 | flip_h = false 248 | flip_v = false 249 | modulate = Color( 1, 1, 1, 1 ) 250 | opacity = 1.0 251 | pixel_size = 0.04 252 | axis = 2 253 | transparent = true 254 | shaded = false 255 | double_sided = true 256 | alpha_cut = 0 257 | texture = ExtResource( 2 ) 258 | vframes = 1 259 | hframes = 1 260 | frame = 0 261 | region_enabled = false 262 | region_rect = Rect2( 0, 0, 0, 0 ) 263 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 264 | 265 | [node name="section_3" type="Sprite3D" parent="section_0/section_1/section_2" index="0"] 266 | 267 | transform = Transform( 1, 0, 0, 0, 0.999999, 0, 0, 0, 0.999999, 3.72529e-09, 2.98023e-08, -0.262312 ) 268 | layers = 2 269 | material_override = SubResource( 1 ) 270 | cast_shadow = 1 271 | extra_cull_margin = 0.0 272 | use_in_baked_light = false 273 | lod_min_distance = 0.0 274 | lod_min_hysteresis = 0.0 275 | lod_max_distance = 0.0 276 | lod_max_hysteresis = 0.0 277 | centered = true 278 | offset = Vector2( 0, 0 ) 279 | flip_h = false 280 | flip_v = false 281 | modulate = Color( 1, 1, 1, 1 ) 282 | opacity = 1.0 283 | pixel_size = 0.04 284 | axis = 2 285 | transparent = true 286 | shaded = false 287 | double_sided = true 288 | alpha_cut = 0 289 | texture = ExtResource( 2 ) 290 | vframes = 1 291 | hframes = 1 292 | frame = 0 293 | region_enabled = false 294 | region_rect = Rect2( 0, 0, 0, 0 ) 295 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 296 | 297 | [node name="section_4" type="Sprite3D" parent="section_0/section_1/section_2/section_3" index="0"] 298 | 299 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1.86265e-09, -5.96046e-08, -0.308283 ) 300 | layers = 2 301 | material_override = SubResource( 1 ) 302 | cast_shadow = 1 303 | extra_cull_margin = 0.0 304 | use_in_baked_light = false 305 | lod_min_distance = 0.0 306 | lod_min_hysteresis = 0.0 307 | lod_max_distance = 0.0 308 | lod_max_hysteresis = 0.0 309 | centered = true 310 | offset = Vector2( 0, 0 ) 311 | flip_h = false 312 | flip_v = false 313 | modulate = Color( 1, 1, 1, 1 ) 314 | opacity = 1.0 315 | pixel_size = 0.04 316 | axis = 2 317 | transparent = true 318 | shaded = false 319 | double_sided = true 320 | alpha_cut = 0 321 | texture = ExtResource( 2 ) 322 | vframes = 1 323 | hframes = 1 324 | frame = 0 325 | region_enabled = false 326 | region_rect = Rect2( 0, 0, 0, 0 ) 327 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 328 | 329 | [node name="section_5" type="Sprite3D" parent="section_0/section_1/section_2/section_3/section_4" index="0"] 330 | 331 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 1.11759e-08, -5.96046e-08, -0.315066 ) 332 | layers = 2 333 | material_override = SubResource( 1 ) 334 | cast_shadow = 1 335 | extra_cull_margin = 0.0 336 | use_in_baked_light = false 337 | lod_min_distance = 0.0 338 | lod_min_hysteresis = 0.0 339 | lod_max_distance = 0.0 340 | lod_max_hysteresis = 0.0 341 | centered = true 342 | offset = Vector2( 0, 0 ) 343 | flip_h = false 344 | flip_v = false 345 | modulate = Color( 1, 1, 1, 1 ) 346 | opacity = 1.0 347 | pixel_size = 0.04 348 | axis = 2 349 | transparent = true 350 | shaded = false 351 | double_sided = true 352 | alpha_cut = 0 353 | texture = ExtResource( 2 ) 354 | vframes = 1 355 | hframes = 1 356 | frame = 0 357 | region_enabled = false 358 | region_rect = Rect2( 0, 0, 0, 0 ) 359 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 360 | 361 | [node name="section_6" type="Sprite3D" parent="section_0/section_1/section_2/section_3/section_4/section_5" index="0"] 362 | 363 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -5.96046e-08, -0.40227 ) 364 | layers = 2 365 | material_override = SubResource( 1 ) 366 | cast_shadow = 1 367 | extra_cull_margin = 0.0 368 | use_in_baked_light = false 369 | lod_min_distance = 0.0 370 | lod_min_hysteresis = 0.0 371 | lod_max_distance = 0.0 372 | lod_max_hysteresis = 0.0 373 | centered = true 374 | offset = Vector2( 0, 0 ) 375 | flip_h = false 376 | flip_v = false 377 | modulate = Color( 1, 1, 1, 1 ) 378 | opacity = 1.0 379 | pixel_size = 0.04 380 | axis = 2 381 | transparent = true 382 | shaded = false 383 | double_sided = true 384 | alpha_cut = 0 385 | texture = ExtResource( 2 ) 386 | vframes = 1 387 | hframes = 1 388 | frame = 0 389 | region_enabled = false 390 | region_rect = Rect2( 0, 0, 0, 0 ) 391 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 392 | 393 | [node name="section_7" type="Sprite3D" parent="section_0/section_1/section_2/section_3/section_4/section_5/section_6" index="0"] 394 | 395 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.42844e-07, -0.438531 ) 396 | layers = 2 397 | material_override = SubResource( 1 ) 398 | cast_shadow = 1 399 | extra_cull_margin = 0.0 400 | use_in_baked_light = false 401 | lod_min_distance = 0.0 402 | lod_min_hysteresis = 0.0 403 | lod_max_distance = 0.0 404 | lod_max_hysteresis = 0.0 405 | centered = true 406 | offset = Vector2( 0, 0 ) 407 | flip_h = false 408 | flip_v = false 409 | modulate = Color( 1, 1, 1, 1 ) 410 | opacity = 1.0 411 | pixel_size = 0.04 412 | axis = 2 413 | transparent = true 414 | shaded = false 415 | double_sided = true 416 | alpha_cut = 0 417 | texture = ExtResource( 2 ) 418 | vframes = 1 419 | hframes = 1 420 | frame = 0 421 | region_enabled = false 422 | region_rect = Rect2( 0, 0, 0, 0 ) 423 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 424 | 425 | [node name="end" type="Sprite3D" parent="section_0/section_1/section_2/section_3/section_4/section_5/section_6/section_7" index="0"] 426 | 427 | transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.51473 ) 428 | layers = 2 429 | material_override = SubResource( 1 ) 430 | cast_shadow = 1 431 | extra_cull_margin = 0.0 432 | use_in_baked_light = false 433 | lod_min_distance = 0.0 434 | lod_min_hysteresis = 0.0 435 | lod_max_distance = 0.0 436 | lod_max_hysteresis = 0.0 437 | centered = true 438 | offset = Vector2( 0, 0 ) 439 | flip_h = false 440 | flip_v = false 441 | modulate = Color( 1, 1, 1, 1 ) 442 | opacity = 1.0 443 | pixel_size = 0.04 444 | axis = 2 445 | transparent = true 446 | shaded = false 447 | double_sided = true 448 | alpha_cut = 0 449 | texture = ExtResource( 3 ) 450 | vframes = 1 451 | hframes = 1 452 | frame = 0 453 | region_enabled = false 454 | region_rect = Rect2( 0, 0, 0, 0 ) 455 | _sections_unfolded = [ "Flags", "Geometry", "Transform" ] 456 | 457 | [node name="AnimationPlayer" type="AnimationPlayer" parent="." index="1"] 458 | 459 | root_node = NodePath("..") 460 | autoplay = "" 461 | playback_process_mode = 1 462 | playback_default_blend_time = 0.0 463 | playback_speed = 1.0 464 | anims/Attack = ExtResource( 4 ) 465 | anims/Idle = SubResource( 2 ) 466 | blend_times = [ ] 467 | _sections_unfolded = [ "Playback Options" ] 468 | 469 | 470 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # VineCrawler 2 | Welcome to VineCrawler, a simple first-person, dungeon-crawler, inspired many games, made in Godot Engine. 3 | -------------------------------------------------------------------------------- /Scenes/FPS.gd: -------------------------------------------------------------------------------- 1 | extends Label 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | var avg_fps = 0.0 7 | var time_since_last_update = 0.0 8 | 9 | func _ready(): 10 | # Called every time the node is added to the scene. 11 | # Initialization here 12 | pass 13 | 14 | func _process(delta): 15 | # Called every frame. Delta is time since last frame. 16 | # Update game logic here. 17 | if time_since_last_update >= 0.5: 18 | set_text("%d" % round(1 / avg_fps)) 19 | time_since_last_update = 0.0 20 | avg_fps = delta 21 | else: 22 | time_since_last_update += delta 23 | avg_fps = (avg_fps + delta) / 2 24 | -------------------------------------------------------------------------------- /Scenes/LightAnim.gd: -------------------------------------------------------------------------------- 1 | extends AnimationPlayer 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | 7 | func _ready(): 8 | # Called every time the node is added to the scene. 9 | # Initialization here 10 | play("flicker") 11 | 12 | #func _process(delta): 13 | # # Called every frame. Delta is time since last frame. 14 | # # Update game logic here. 15 | # pass 16 | -------------------------------------------------------------------------------- /Scenes/LightAnim.vs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Scenes/LightAnim.vs -------------------------------------------------------------------------------- /Scenes/MeshInstance2.gd: -------------------------------------------------------------------------------- 1 | extends MeshInstance 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | 7 | func _ready(): 8 | # Called every time the node is added to the scene. 9 | # Initialization here 10 | pass 11 | 12 | #func _process(delta): 13 | # # Called every frame. Delta is time since last frame. 14 | # # Update game logic here. 15 | # pass 16 | -------------------------------------------------------------------------------- /Scenes/TextureRect.gd: -------------------------------------------------------------------------------- 1 | extends TextureRect 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | 7 | func _ready(): 8 | # Called every time the node is added to the scene. 9 | # Initialization here 10 | texture = get_node("/root/Scene/Player/Player_Camera/ViewportContainer/Viewport").get_texture() 11 | 12 | #func _process(delta): 13 | # # Called every frame. Delta is time since last frame. 14 | # # Update game logic here. 15 | # pass 16 | -------------------------------------------------------------------------------- /Scripts/FP-Camera.gd: -------------------------------------------------------------------------------- 1 | extends Camera 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | var sensitivity = .1 7 | 8 | var max_angle = 90 9 | 10 | func _ready(): 11 | # Called every time the node is added to the scene. 12 | # Initialization here 13 | Input.set_mouse_mode(2) 14 | 15 | func _process(delta): 16 | # Called every frame. Delta is time since last frame. 17 | # Update game logic here. 18 | pass 19 | 20 | 21 | func _input(ev): 22 | if (ev is InputEventMouseMotion): 23 | var angle = rotation 24 | rotate_x(-deg2rad(ev.relative.y) * sensitivity) 25 | if (not (rotation.x <= deg2rad(max_angle) and rotation.x >= -deg2rad(max_angle))) or (rotation.z < -deg2rad(1) or rotation.z > deg2rad(1)): 26 | set("rotation", angle) -------------------------------------------------------------------------------- /Scripts/Player.gd: -------------------------------------------------------------------------------- 1 | extends KinematicBody 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | var sensitivity = 1.0 7 | 8 | var max_speed = 20 9 | 10 | var gravity = Vector3(0, -9.8, 0) 11 | var linear_velocity = Vector3() 12 | var accel = 100.0 13 | var deaccel = 100.0 14 | 15 | var odir = Vector3() #old direction 16 | var speed = 0.0 17 | 18 | func _ready(): 19 | # Called every time the node is added to the scene. 20 | # Initialization here 21 | set_physics_process(true) 22 | 23 | func _physics_process(delta): 24 | # Called every frame. Delta is time since last frame. 25 | # Update game logic here. 26 | var lv = linear_velocity 27 | lv += gravity * delta 28 | var up = -gravity.normalized() # (up is against gravity) 29 | var vv = up.dot(lv) # Vertical velocity 30 | var hv = lv * Vector3(1,0,1) 31 | 32 | var dir = Vector3() 33 | 34 | if Input.is_action_pressed("move_forward"): 35 | dir += -transform.basis.z 36 | if Input.is_action_pressed("move_backward"): 37 | dir += transform.basis.z 38 | if Input.is_action_pressed("move_left"): 39 | dir += -transform.basis.x 40 | if Input.is_action_pressed("move_right"): 41 | dir += transform.basis.x 42 | 43 | if dir.length() > 0: 44 | #odir = Vector3(lerp(odir.x, dir.x, .1),0,lerp(odir.z, dir.z, .1)) 45 | odir = dir 46 | if true: 47 | if dir.length() >= 0.001: 48 | if speed <= max_speed: 49 | speed += accel * delta 50 | 51 | hv += odir.normalized() * ((max_speed - hv.length()) / max_speed) * accel * delta 52 | 53 | 54 | else: 55 | if speed > 0: 56 | speed -= deaccel * delta 57 | else: 58 | speed = 0 59 | var nhv = hv - odir.normalized() * deaccel * delta 60 | if nhv.length() < hv.length(): 61 | hv -= odir.normalized() * deaccel * delta 62 | else: 63 | hv = Vector3(0,0,0) 64 | print(hv.length()) 65 | lv = hv+up*vv 66 | 67 | linear_velocity = move_and_slide(lv) 68 | 69 | 70 | func _input(ev): 71 | if (ev is InputEventMouseMotion): 72 | rotate_y(-deg2rad(ev.relative.x) * sensitivity) -------------------------------------------------------------------------------- /Scripts/Sprite.gd: -------------------------------------------------------------------------------- 1 | extends Sprite 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | var rtt 7 | 8 | func _ready(): 9 | # Called every time the node is added to the scene. 10 | # Initialization here 11 | rtt = get_node("/root/Scene/Player/Viewport").get_texture() 12 | 13 | func _process(delta): 14 | # Called every frame. Delta is time since last frame. 15 | # Update game logic here. 16 | rtt = get_node("/root/Scene/Player/Viewport").get_texture() 17 | set_texture(rtt) 18 | -------------------------------------------------------------------------------- /Scripts/System.gd: -------------------------------------------------------------------------------- 1 | extends Spatial 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | 7 | func _ready(): 8 | # Called every time the node is added to the scene. 9 | # Initialization here 10 | pass 11 | 12 | func _process(delta): 13 | # Called every frame. Delta is time since last frame. 14 | # Update game logic here. 15 | if Input.is_action_just_pressed("quit"): 16 | get_tree().quit() 17 | -------------------------------------------------------------------------------- /Scripts/test-enemy.gd: -------------------------------------------------------------------------------- 1 | extends KinematicBody 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | 7 | var player 8 | var move_to_player = false 9 | var visibility_length = 30 10 | var touching_ground = false 11 | var speed = 7.0 12 | var gravity = 20.0 13 | var linear_velocity = Vector3() 14 | 15 | var health = 5 16 | 17 | func _ready(): 18 | # Called every time the node is added to the scene. 19 | # Initialization here 20 | player = get_node("/root/Scene/Player") 21 | set_physics_process(true) 22 | $sprite/AnimationPlayer.play("New Anim") 23 | 24 | func _process(delta): 25 | # Called every frame. Delta is time since last frame. 26 | # Update game logic here. 27 | if abs((player.translation - translation).length()) <= visibility_length: 28 | move_to_player = true 29 | else: 30 | move_to_player = false 31 | 32 | func _physics_process(delta): 33 | if move_to_player: 34 | look_at(Vector3(player.translation.x, translation.y, player.translation.z), Vector3(0,1,0)) 35 | if touching_ground: 36 | linear_velocity = -transform.basis.z * speed 37 | linear_velocity.y = 0.0 38 | else: 39 | linear_velocity.y -= gravity * delta 40 | else: 41 | if touching_ground: 42 | linear_velocity = Vector3() 43 | else: 44 | linear_velocity.y -= gravity * delta 45 | linear_velocity = move_and_slide(linear_velocity, Vector3(0,1,0)) 46 | touching_ground = is_on_floor() 47 | 48 | func on_hit(damage, knockback): 49 | health -= damage 50 | linear_velocity = (-transform.basis.z * -knockback) + Vector3(0, 7, 0) 51 | touching_ground = false 52 | if health <= 0: 53 | on_die() 54 | 55 | func on_die(): 56 | queue_free() 57 | -------------------------------------------------------------------------------- /Scripts/whip.gd: -------------------------------------------------------------------------------- 1 | extends Spatial 2 | 3 | # class member variables go here, for example: 4 | # var a = 2 5 | # var b = "textvar" 6 | var anim_player 7 | var ray_length = 15 8 | var camera 9 | var has_attacked = false 10 | func _ready(): 11 | # Called every time the node is added to the scene. 12 | # Initialization here 13 | anim_player = $AnimationPlayer 14 | camera = get_node("/root/Scene/Player/Player_Camera") 15 | 16 | func _process(delta): 17 | # Called every frame. Delta is time since last frame. 18 | # Update game logic here. 19 | 20 | if Input.is_action_just_pressed("attack"): 21 | has_attacked = false 22 | anim_player.play("Attack") 23 | 24 | else: 25 | if !anim_player.is_playing(): 26 | anim_player.play("Idle") 27 | 28 | if anim_player.current_animation == "Attack" and anim_player.current_animation_position >= 0.46 and !has_attacked: 29 | attack() 30 | has_attacked = true 31 | 32 | func attack(): 33 | var from = camera.global_transform.origin 34 | var to = from + -camera.global_transform.basis.z * ray_length 35 | var space_state = get_world().get_direct_space_state() 36 | 37 | var result = space_state.intersect_ray(from, to) 38 | if not result.empty(): 39 | if result.collider.name == "enemy": 40 | var distance = abs((camera.global_transform.origin - (result.collider.translation + Vector3(0,1,0) * camera.global_transform.origin.y)).length()) 41 | result.collider.on_hit(1, 10 * (ray_length / distance)) 42 | -------------------------------------------------------------------------------- /Tiles/Material.material: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/Material.material -------------------------------------------------------------------------------- /Tiles/square.fbx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/square.fbx -------------------------------------------------------------------------------- /Tiles/square.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/square.glb -------------------------------------------------------------------------------- /Tiles/square.glb.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="scene" 4 | type="PackedScene" 5 | path="res://.import/square.glb-e15d0b3538d9bd212f92107859646477.scn" 6 | 7 | [deps] 8 | 9 | source_file="res://Tiles/square.glb" 10 | source_md5="4216983fe269c98ec974edfb4cfc0565" 11 | 12 | dest_files=[ "res://.import/square.glb-e15d0b3538d9bd212f92107859646477.scn" ] 13 | dest_md5="531ca03224aeab5ff523e7e2e3a47946" 14 | 15 | [params] 16 | 17 | nodes/root_type="Spatial" 18 | nodes/root_name="Scene Root" 19 | nodes/root_scale=1.0 20 | nodes/custom_script="" 21 | nodes/storage=0 22 | materials/location=1 23 | materials/storage=1 24 | materials/keep_on_reimport=true 25 | meshes/compress=true 26 | meshes/ensure_tangents=true 27 | meshes/storage=0 28 | meshes/light_baking=0 29 | meshes/lightmap_texel_size=0.1 30 | external_files/store_in_subdir=false 31 | animation/import=true 32 | animation/fps=15 33 | animation/filter_script="" 34 | animation/storage=false 35 | animation/keep_custom_tracks=false 36 | animation/optimizer/enabled=true 37 | animation/optimizer/max_linear_error=0.05 38 | animation/optimizer/max_angular_error=0.01 39 | animation/optimizer/max_angle=22 40 | animation/optimizer/remove_unused_tracks=true 41 | animation/clips/amount=0 42 | animation/clip_1/name="" 43 | animation/clip_1/start_frame=0 44 | animation/clip_1/end_frame=0 45 | animation/clip_1/loops=false 46 | animation/clip_2/name="" 47 | animation/clip_2/start_frame=0 48 | animation/clip_2/end_frame=0 49 | animation/clip_2/loops=false 50 | animation/clip_3/name="" 51 | animation/clip_3/start_frame=0 52 | animation/clip_3/end_frame=0 53 | animation/clip_3/loops=false 54 | animation/clip_4/name="" 55 | animation/clip_4/start_frame=0 56 | animation/clip_4/end_frame=0 57 | animation/clip_4/loops=false 58 | animation/clip_5/name="" 59 | animation/clip_5/start_frame=0 60 | animation/clip_5/end_frame=0 61 | animation/clip_5/loops=false 62 | animation/clip_6/name="" 63 | animation/clip_6/start_frame=0 64 | animation/clip_6/end_frame=0 65 | animation/clip_6/loops=false 66 | animation/clip_7/name="" 67 | animation/clip_7/start_frame=0 68 | animation/clip_7/end_frame=0 69 | animation/clip_7/loops=false 70 | animation/clip_8/name="" 71 | animation/clip_8/start_frame=0 72 | animation/clip_8/end_frame=0 73 | animation/clip_8/loops=false 74 | animation/clip_9/name="" 75 | animation/clip_9/start_frame=0 76 | animation/clip_9/end_frame=0 77 | animation/clip_9/loops=false 78 | animation/clip_10/name="" 79 | animation/clip_10/start_frame=0 80 | animation/clip_10/end_frame=0 81 | animation/clip_10/loops=false 82 | animation/clip_11/name="" 83 | animation/clip_11/start_frame=0 84 | animation/clip_11/end_frame=0 85 | animation/clip_11/loops=false 86 | animation/clip_12/name="" 87 | animation/clip_12/start_frame=0 88 | animation/clip_12/end_frame=0 89 | animation/clip_12/loops=false 90 | animation/clip_13/name="" 91 | animation/clip_13/start_frame=0 92 | animation/clip_13/end_frame=0 93 | animation/clip_13/loops=false 94 | animation/clip_14/name="" 95 | animation/clip_14/start_frame=0 96 | animation/clip_14/end_frame=0 97 | animation/clip_14/loops=false 98 | animation/clip_15/name="" 99 | animation/clip_15/start_frame=0 100 | animation/clip_15/end_frame=0 101 | animation/clip_15/loops=false 102 | animation/clip_16/name="" 103 | animation/clip_16/start_frame=0 104 | animation/clip_16/end_frame=0 105 | animation/clip_16/loops=false 106 | animation/clip_17/name="" 107 | animation/clip_17/start_frame=0 108 | animation/clip_17/end_frame=0 109 | animation/clip_17/loops=false 110 | animation/clip_18/name="" 111 | animation/clip_18/start_frame=0 112 | animation/clip_18/end_frame=0 113 | animation/clip_18/loops=false 114 | animation/clip_19/name="" 115 | animation/clip_19/start_frame=0 116 | animation/clip_19/end_frame=0 117 | animation/clip_19/loops=false 118 | animation/clip_20/name="" 119 | animation/clip_20/start_frame=0 120 | animation/clip_20/end_frame=0 121 | animation/clip_20/loops=false 122 | animation/clip_21/name="" 123 | animation/clip_21/start_frame=0 124 | animation/clip_21/end_frame=0 125 | animation/clip_21/loops=false 126 | animation/clip_22/name="" 127 | animation/clip_22/start_frame=0 128 | animation/clip_22/end_frame=0 129 | animation/clip_22/loops=false 130 | animation/clip_23/name="" 131 | animation/clip_23/start_frame=0 132 | animation/clip_23/end_frame=0 133 | animation/clip_23/loops=false 134 | animation/clip_24/name="" 135 | animation/clip_24/start_frame=0 136 | animation/clip_24/end_frame=0 137 | animation/clip_24/loops=false 138 | animation/clip_25/name="" 139 | animation/clip_25/start_frame=0 140 | animation/clip_25/end_frame=0 141 | animation/clip_25/loops=false 142 | animation/clip_26/name="" 143 | animation/clip_26/start_frame=0 144 | animation/clip_26/end_frame=0 145 | animation/clip_26/loops=false 146 | animation/clip_27/name="" 147 | animation/clip_27/start_frame=0 148 | animation/clip_27/end_frame=0 149 | animation/clip_27/loops=false 150 | animation/clip_28/name="" 151 | animation/clip_28/start_frame=0 152 | animation/clip_28/end_frame=0 153 | animation/clip_28/loops=false 154 | animation/clip_29/name="" 155 | animation/clip_29/start_frame=0 156 | animation/clip_29/end_frame=0 157 | animation/clip_29/loops=false 158 | animation/clip_30/name="" 159 | animation/clip_30/start_frame=0 160 | animation/clip_30/end_frame=0 161 | animation/clip_30/loops=false 162 | animation/clip_31/name="" 163 | animation/clip_31/start_frame=0 164 | animation/clip_31/end_frame=0 165 | animation/clip_31/loops=false 166 | animation/clip_32/name="" 167 | animation/clip_32/start_frame=0 168 | animation/clip_32/end_frame=0 169 | animation/clip_32/loops=false 170 | animation/clip_33/name="" 171 | animation/clip_33/start_frame=0 172 | animation/clip_33/end_frame=0 173 | animation/clip_33/loops=false 174 | animation/clip_34/name="" 175 | animation/clip_34/start_frame=0 176 | animation/clip_34/end_frame=0 177 | animation/clip_34/loops=false 178 | animation/clip_35/name="" 179 | animation/clip_35/start_frame=0 180 | animation/clip_35/end_frame=0 181 | animation/clip_35/loops=false 182 | animation/clip_36/name="" 183 | animation/clip_36/start_frame=0 184 | animation/clip_36/end_frame=0 185 | animation/clip_36/loops=false 186 | animation/clip_37/name="" 187 | animation/clip_37/start_frame=0 188 | animation/clip_37/end_frame=0 189 | animation/clip_37/loops=false 190 | animation/clip_38/name="" 191 | animation/clip_38/start_frame=0 192 | animation/clip_38/end_frame=0 193 | animation/clip_38/loops=false 194 | animation/clip_39/name="" 195 | animation/clip_39/start_frame=0 196 | animation/clip_39/end_frame=0 197 | animation/clip_39/loops=false 198 | animation/clip_40/name="" 199 | animation/clip_40/start_frame=0 200 | animation/clip_40/end_frame=0 201 | animation/clip_40/loops=false 202 | animation/clip_41/name="" 203 | animation/clip_41/start_frame=0 204 | animation/clip_41/end_frame=0 205 | animation/clip_41/loops=false 206 | animation/clip_42/name="" 207 | animation/clip_42/start_frame=0 208 | animation/clip_42/end_frame=0 209 | animation/clip_42/loops=false 210 | animation/clip_43/name="" 211 | animation/clip_43/start_frame=0 212 | animation/clip_43/end_frame=0 213 | animation/clip_43/loops=false 214 | animation/clip_44/name="" 215 | animation/clip_44/start_frame=0 216 | animation/clip_44/end_frame=0 217 | animation/clip_44/loops=false 218 | animation/clip_45/name="" 219 | animation/clip_45/start_frame=0 220 | animation/clip_45/end_frame=0 221 | animation/clip_45/loops=false 222 | animation/clip_46/name="" 223 | animation/clip_46/start_frame=0 224 | animation/clip_46/end_frame=0 225 | animation/clip_46/loops=false 226 | animation/clip_47/name="" 227 | animation/clip_47/start_frame=0 228 | animation/clip_47/end_frame=0 229 | animation/clip_47/loops=false 230 | animation/clip_48/name="" 231 | animation/clip_48/start_frame=0 232 | animation/clip_48/end_frame=0 233 | animation/clip_48/loops=false 234 | animation/clip_49/name="" 235 | animation/clip_49/start_frame=0 236 | animation/clip_49/end_frame=0 237 | animation/clip_49/loops=false 238 | animation/clip_50/name="" 239 | animation/clip_50/start_frame=0 240 | animation/clip_50/end_frame=0 241 | animation/clip_50/loops=false 242 | animation/clip_51/name="" 243 | animation/clip_51/start_frame=0 244 | animation/clip_51/end_frame=0 245 | animation/clip_51/loops=false 246 | animation/clip_52/name="" 247 | animation/clip_52/start_frame=0 248 | animation/clip_52/end_frame=0 249 | animation/clip_52/loops=false 250 | animation/clip_53/name="" 251 | animation/clip_53/start_frame=0 252 | animation/clip_53/end_frame=0 253 | animation/clip_53/loops=false 254 | animation/clip_54/name="" 255 | animation/clip_54/start_frame=0 256 | animation/clip_54/end_frame=0 257 | animation/clip_54/loops=false 258 | animation/clip_55/name="" 259 | animation/clip_55/start_frame=0 260 | animation/clip_55/end_frame=0 261 | animation/clip_55/loops=false 262 | animation/clip_56/name="" 263 | animation/clip_56/start_frame=0 264 | animation/clip_56/end_frame=0 265 | animation/clip_56/loops=false 266 | animation/clip_57/name="" 267 | animation/clip_57/start_frame=0 268 | animation/clip_57/end_frame=0 269 | animation/clip_57/loops=false 270 | animation/clip_58/name="" 271 | animation/clip_58/start_frame=0 272 | animation/clip_58/end_frame=0 273 | animation/clip_58/loops=false 274 | animation/clip_59/name="" 275 | animation/clip_59/start_frame=0 276 | animation/clip_59/end_frame=0 277 | animation/clip_59/loops=false 278 | animation/clip_60/name="" 279 | animation/clip_60/start_frame=0 280 | animation/clip_60/end_frame=0 281 | animation/clip_60/loops=false 282 | animation/clip_61/name="" 283 | animation/clip_61/start_frame=0 284 | animation/clip_61/end_frame=0 285 | animation/clip_61/loops=false 286 | animation/clip_62/name="" 287 | animation/clip_62/start_frame=0 288 | animation/clip_62/end_frame=0 289 | animation/clip_62/loops=false 290 | animation/clip_63/name="" 291 | animation/clip_63/start_frame=0 292 | animation/clip_63/end_frame=0 293 | animation/clip_63/loops=false 294 | animation/clip_64/name="" 295 | animation/clip_64/start_frame=0 296 | animation/clip_64/end_frame=0 297 | animation/clip_64/loops=false 298 | animation/clip_65/name="" 299 | animation/clip_65/start_frame=0 300 | animation/clip_65/end_frame=0 301 | animation/clip_65/loops=false 302 | animation/clip_66/name="" 303 | animation/clip_66/start_frame=0 304 | animation/clip_66/end_frame=0 305 | animation/clip_66/loops=false 306 | animation/clip_67/name="" 307 | animation/clip_67/start_frame=0 308 | animation/clip_67/end_frame=0 309 | animation/clip_67/loops=false 310 | animation/clip_68/name="" 311 | animation/clip_68/start_frame=0 312 | animation/clip_68/end_frame=0 313 | animation/clip_68/loops=false 314 | animation/clip_69/name="" 315 | animation/clip_69/start_frame=0 316 | animation/clip_69/end_frame=0 317 | animation/clip_69/loops=false 318 | animation/clip_70/name="" 319 | animation/clip_70/start_frame=0 320 | animation/clip_70/end_frame=0 321 | animation/clip_70/loops=false 322 | animation/clip_71/name="" 323 | animation/clip_71/start_frame=0 324 | animation/clip_71/end_frame=0 325 | animation/clip_71/loops=false 326 | animation/clip_72/name="" 327 | animation/clip_72/start_frame=0 328 | animation/clip_72/end_frame=0 329 | animation/clip_72/loops=false 330 | animation/clip_73/name="" 331 | animation/clip_73/start_frame=0 332 | animation/clip_73/end_frame=0 333 | animation/clip_73/loops=false 334 | animation/clip_74/name="" 335 | animation/clip_74/start_frame=0 336 | animation/clip_74/end_frame=0 337 | animation/clip_74/loops=false 338 | animation/clip_75/name="" 339 | animation/clip_75/start_frame=0 340 | animation/clip_75/end_frame=0 341 | animation/clip_75/loops=false 342 | animation/clip_76/name="" 343 | animation/clip_76/start_frame=0 344 | animation/clip_76/end_frame=0 345 | animation/clip_76/loops=false 346 | animation/clip_77/name="" 347 | animation/clip_77/start_frame=0 348 | animation/clip_77/end_frame=0 349 | animation/clip_77/loops=false 350 | animation/clip_78/name="" 351 | animation/clip_78/start_frame=0 352 | animation/clip_78/end_frame=0 353 | animation/clip_78/loops=false 354 | animation/clip_79/name="" 355 | animation/clip_79/start_frame=0 356 | animation/clip_79/end_frame=0 357 | animation/clip_79/loops=false 358 | animation/clip_80/name="" 359 | animation/clip_80/start_frame=0 360 | animation/clip_80/end_frame=0 361 | animation/clip_80/loops=false 362 | animation/clip_81/name="" 363 | animation/clip_81/start_frame=0 364 | animation/clip_81/end_frame=0 365 | animation/clip_81/loops=false 366 | animation/clip_82/name="" 367 | animation/clip_82/start_frame=0 368 | animation/clip_82/end_frame=0 369 | animation/clip_82/loops=false 370 | animation/clip_83/name="" 371 | animation/clip_83/start_frame=0 372 | animation/clip_83/end_frame=0 373 | animation/clip_83/loops=false 374 | animation/clip_84/name="" 375 | animation/clip_84/start_frame=0 376 | animation/clip_84/end_frame=0 377 | animation/clip_84/loops=false 378 | animation/clip_85/name="" 379 | animation/clip_85/start_frame=0 380 | animation/clip_85/end_frame=0 381 | animation/clip_85/loops=false 382 | animation/clip_86/name="" 383 | animation/clip_86/start_frame=0 384 | animation/clip_86/end_frame=0 385 | animation/clip_86/loops=false 386 | animation/clip_87/name="" 387 | animation/clip_87/start_frame=0 388 | animation/clip_87/end_frame=0 389 | animation/clip_87/loops=false 390 | animation/clip_88/name="" 391 | animation/clip_88/start_frame=0 392 | animation/clip_88/end_frame=0 393 | animation/clip_88/loops=false 394 | animation/clip_89/name="" 395 | animation/clip_89/start_frame=0 396 | animation/clip_89/end_frame=0 397 | animation/clip_89/loops=false 398 | animation/clip_90/name="" 399 | animation/clip_90/start_frame=0 400 | animation/clip_90/end_frame=0 401 | animation/clip_90/loops=false 402 | animation/clip_91/name="" 403 | animation/clip_91/start_frame=0 404 | animation/clip_91/end_frame=0 405 | animation/clip_91/loops=false 406 | animation/clip_92/name="" 407 | animation/clip_92/start_frame=0 408 | animation/clip_92/end_frame=0 409 | animation/clip_92/loops=false 410 | animation/clip_93/name="" 411 | animation/clip_93/start_frame=0 412 | animation/clip_93/end_frame=0 413 | animation/clip_93/loops=false 414 | animation/clip_94/name="" 415 | animation/clip_94/start_frame=0 416 | animation/clip_94/end_frame=0 417 | animation/clip_94/loops=false 418 | animation/clip_95/name="" 419 | animation/clip_95/start_frame=0 420 | animation/clip_95/end_frame=0 421 | animation/clip_95/loops=false 422 | animation/clip_96/name="" 423 | animation/clip_96/start_frame=0 424 | animation/clip_96/end_frame=0 425 | animation/clip_96/loops=false 426 | animation/clip_97/name="" 427 | animation/clip_97/start_frame=0 428 | animation/clip_97/end_frame=0 429 | animation/clip_97/loops=false 430 | animation/clip_98/name="" 431 | animation/clip_98/start_frame=0 432 | animation/clip_98/end_frame=0 433 | animation/clip_98/loops=false 434 | animation/clip_99/name="" 435 | animation/clip_99/start_frame=0 436 | animation/clip_99/end_frame=0 437 | animation/clip_99/loops=false 438 | animation/clip_100/name="" 439 | animation/clip_100/start_frame=0 440 | animation/clip_100/end_frame=0 441 | animation/clip_100/loops=false 442 | animation/clip_101/name="" 443 | animation/clip_101/start_frame=0 444 | animation/clip_101/end_frame=0 445 | animation/clip_101/loops=false 446 | animation/clip_102/name="" 447 | animation/clip_102/start_frame=0 448 | animation/clip_102/end_frame=0 449 | animation/clip_102/loops=false 450 | animation/clip_103/name="" 451 | animation/clip_103/start_frame=0 452 | animation/clip_103/end_frame=0 453 | animation/clip_103/loops=false 454 | animation/clip_104/name="" 455 | animation/clip_104/start_frame=0 456 | animation/clip_104/end_frame=0 457 | animation/clip_104/loops=false 458 | animation/clip_105/name="" 459 | animation/clip_105/start_frame=0 460 | animation/clip_105/end_frame=0 461 | animation/clip_105/loops=false 462 | animation/clip_106/name="" 463 | animation/clip_106/start_frame=0 464 | animation/clip_106/end_frame=0 465 | animation/clip_106/loops=false 466 | animation/clip_107/name="" 467 | animation/clip_107/start_frame=0 468 | animation/clip_107/end_frame=0 469 | animation/clip_107/loops=false 470 | animation/clip_108/name="" 471 | animation/clip_108/start_frame=0 472 | animation/clip_108/end_frame=0 473 | animation/clip_108/loops=false 474 | animation/clip_109/name="" 475 | animation/clip_109/start_frame=0 476 | animation/clip_109/end_frame=0 477 | animation/clip_109/loops=false 478 | animation/clip_110/name="" 479 | animation/clip_110/start_frame=0 480 | animation/clip_110/end_frame=0 481 | animation/clip_110/loops=false 482 | animation/clip_111/name="" 483 | animation/clip_111/start_frame=0 484 | animation/clip_111/end_frame=0 485 | animation/clip_111/loops=false 486 | animation/clip_112/name="" 487 | animation/clip_112/start_frame=0 488 | animation/clip_112/end_frame=0 489 | animation/clip_112/loops=false 490 | animation/clip_113/name="" 491 | animation/clip_113/start_frame=0 492 | animation/clip_113/end_frame=0 493 | animation/clip_113/loops=false 494 | animation/clip_114/name="" 495 | animation/clip_114/start_frame=0 496 | animation/clip_114/end_frame=0 497 | animation/clip_114/loops=false 498 | animation/clip_115/name="" 499 | animation/clip_115/start_frame=0 500 | animation/clip_115/end_frame=0 501 | animation/clip_115/loops=false 502 | animation/clip_116/name="" 503 | animation/clip_116/start_frame=0 504 | animation/clip_116/end_frame=0 505 | animation/clip_116/loops=false 506 | animation/clip_117/name="" 507 | animation/clip_117/start_frame=0 508 | animation/clip_117/end_frame=0 509 | animation/clip_117/loops=false 510 | animation/clip_118/name="" 511 | animation/clip_118/start_frame=0 512 | animation/clip_118/end_frame=0 513 | animation/clip_118/loops=false 514 | animation/clip_119/name="" 515 | animation/clip_119/start_frame=0 516 | animation/clip_119/end_frame=0 517 | animation/clip_119/loops=false 518 | animation/clip_120/name="" 519 | animation/clip_120/start_frame=0 520 | animation/clip_120/end_frame=0 521 | animation/clip_120/loops=false 522 | animation/clip_121/name="" 523 | animation/clip_121/start_frame=0 524 | animation/clip_121/end_frame=0 525 | animation/clip_121/loops=false 526 | animation/clip_122/name="" 527 | animation/clip_122/start_frame=0 528 | animation/clip_122/end_frame=0 529 | animation/clip_122/loops=false 530 | animation/clip_123/name="" 531 | animation/clip_123/start_frame=0 532 | animation/clip_123/end_frame=0 533 | animation/clip_123/loops=false 534 | animation/clip_124/name="" 535 | animation/clip_124/start_frame=0 536 | animation/clip_124/end_frame=0 537 | animation/clip_124/loops=false 538 | animation/clip_125/name="" 539 | animation/clip_125/start_frame=0 540 | animation/clip_125/end_frame=0 541 | animation/clip_125/loops=false 542 | animation/clip_126/name="" 543 | animation/clip_126/start_frame=0 544 | animation/clip_126/end_frame=0 545 | animation/clip_126/loops=false 546 | animation/clip_127/name="" 547 | animation/clip_127/start_frame=0 548 | animation/clip_127/end_frame=0 549 | animation/clip_127/loops=false 550 | animation/clip_128/name="" 551 | animation/clip_128/start_frame=0 552 | animation/clip_128/end_frame=0 553 | animation/clip_128/loops=false 554 | animation/clip_129/name="" 555 | animation/clip_129/start_frame=0 556 | animation/clip_129/end_frame=0 557 | animation/clip_129/loops=false 558 | animation/clip_130/name="" 559 | animation/clip_130/start_frame=0 560 | animation/clip_130/end_frame=0 561 | animation/clip_130/loops=false 562 | animation/clip_131/name="" 563 | animation/clip_131/start_frame=0 564 | animation/clip_131/end_frame=0 565 | animation/clip_131/loops=false 566 | animation/clip_132/name="" 567 | animation/clip_132/start_frame=0 568 | animation/clip_132/end_frame=0 569 | animation/clip_132/loops=false 570 | animation/clip_133/name="" 571 | animation/clip_133/start_frame=0 572 | animation/clip_133/end_frame=0 573 | animation/clip_133/loops=false 574 | animation/clip_134/name="" 575 | animation/clip_134/start_frame=0 576 | animation/clip_134/end_frame=0 577 | animation/clip_134/loops=false 578 | animation/clip_135/name="" 579 | animation/clip_135/start_frame=0 580 | animation/clip_135/end_frame=0 581 | animation/clip_135/loops=false 582 | animation/clip_136/name="" 583 | animation/clip_136/start_frame=0 584 | animation/clip_136/end_frame=0 585 | animation/clip_136/loops=false 586 | animation/clip_137/name="" 587 | animation/clip_137/start_frame=0 588 | animation/clip_137/end_frame=0 589 | animation/clip_137/loops=false 590 | animation/clip_138/name="" 591 | animation/clip_138/start_frame=0 592 | animation/clip_138/end_frame=0 593 | animation/clip_138/loops=false 594 | animation/clip_139/name="" 595 | animation/clip_139/start_frame=0 596 | animation/clip_139/end_frame=0 597 | animation/clip_139/loops=false 598 | animation/clip_140/name="" 599 | animation/clip_140/start_frame=0 600 | animation/clip_140/end_frame=0 601 | animation/clip_140/loops=false 602 | animation/clip_141/name="" 603 | animation/clip_141/start_frame=0 604 | animation/clip_141/end_frame=0 605 | animation/clip_141/loops=false 606 | animation/clip_142/name="" 607 | animation/clip_142/start_frame=0 608 | animation/clip_142/end_frame=0 609 | animation/clip_142/loops=false 610 | animation/clip_143/name="" 611 | animation/clip_143/start_frame=0 612 | animation/clip_143/end_frame=0 613 | animation/clip_143/loops=false 614 | animation/clip_144/name="" 615 | animation/clip_144/start_frame=0 616 | animation/clip_144/end_frame=0 617 | animation/clip_144/loops=false 618 | animation/clip_145/name="" 619 | animation/clip_145/start_frame=0 620 | animation/clip_145/end_frame=0 621 | animation/clip_145/loops=false 622 | animation/clip_146/name="" 623 | animation/clip_146/start_frame=0 624 | animation/clip_146/end_frame=0 625 | animation/clip_146/loops=false 626 | animation/clip_147/name="" 627 | animation/clip_147/start_frame=0 628 | animation/clip_147/end_frame=0 629 | animation/clip_147/loops=false 630 | animation/clip_148/name="" 631 | animation/clip_148/start_frame=0 632 | animation/clip_148/end_frame=0 633 | animation/clip_148/loops=false 634 | animation/clip_149/name="" 635 | animation/clip_149/start_frame=0 636 | animation/clip_149/end_frame=0 637 | animation/clip_149/loops=false 638 | animation/clip_150/name="" 639 | animation/clip_150/start_frame=0 640 | animation/clip_150/end_frame=0 641 | animation/clip_150/loops=false 642 | animation/clip_151/name="" 643 | animation/clip_151/start_frame=0 644 | animation/clip_151/end_frame=0 645 | animation/clip_151/loops=false 646 | animation/clip_152/name="" 647 | animation/clip_152/start_frame=0 648 | animation/clip_152/end_frame=0 649 | animation/clip_152/loops=false 650 | animation/clip_153/name="" 651 | animation/clip_153/start_frame=0 652 | animation/clip_153/end_frame=0 653 | animation/clip_153/loops=false 654 | animation/clip_154/name="" 655 | animation/clip_154/start_frame=0 656 | animation/clip_154/end_frame=0 657 | animation/clip_154/loops=false 658 | animation/clip_155/name="" 659 | animation/clip_155/start_frame=0 660 | animation/clip_155/end_frame=0 661 | animation/clip_155/loops=false 662 | animation/clip_156/name="" 663 | animation/clip_156/start_frame=0 664 | animation/clip_156/end_frame=0 665 | animation/clip_156/loops=false 666 | animation/clip_157/name="" 667 | animation/clip_157/start_frame=0 668 | animation/clip_157/end_frame=0 669 | animation/clip_157/loops=false 670 | animation/clip_158/name="" 671 | animation/clip_158/start_frame=0 672 | animation/clip_158/end_frame=0 673 | animation/clip_158/loops=false 674 | animation/clip_159/name="" 675 | animation/clip_159/start_frame=0 676 | animation/clip_159/end_frame=0 677 | animation/clip_159/loops=false 678 | animation/clip_160/name="" 679 | animation/clip_160/start_frame=0 680 | animation/clip_160/end_frame=0 681 | animation/clip_160/loops=false 682 | animation/clip_161/name="" 683 | animation/clip_161/start_frame=0 684 | animation/clip_161/end_frame=0 685 | animation/clip_161/loops=false 686 | animation/clip_162/name="" 687 | animation/clip_162/start_frame=0 688 | animation/clip_162/end_frame=0 689 | animation/clip_162/loops=false 690 | animation/clip_163/name="" 691 | animation/clip_163/start_frame=0 692 | animation/clip_163/end_frame=0 693 | animation/clip_163/loops=false 694 | animation/clip_164/name="" 695 | animation/clip_164/start_frame=0 696 | animation/clip_164/end_frame=0 697 | animation/clip_164/loops=false 698 | animation/clip_165/name="" 699 | animation/clip_165/start_frame=0 700 | animation/clip_165/end_frame=0 701 | animation/clip_165/loops=false 702 | animation/clip_166/name="" 703 | animation/clip_166/start_frame=0 704 | animation/clip_166/end_frame=0 705 | animation/clip_166/loops=false 706 | animation/clip_167/name="" 707 | animation/clip_167/start_frame=0 708 | animation/clip_167/end_frame=0 709 | animation/clip_167/loops=false 710 | animation/clip_168/name="" 711 | animation/clip_168/start_frame=0 712 | animation/clip_168/end_frame=0 713 | animation/clip_168/loops=false 714 | animation/clip_169/name="" 715 | animation/clip_169/start_frame=0 716 | animation/clip_169/end_frame=0 717 | animation/clip_169/loops=false 718 | animation/clip_170/name="" 719 | animation/clip_170/start_frame=0 720 | animation/clip_170/end_frame=0 721 | animation/clip_170/loops=false 722 | animation/clip_171/name="" 723 | animation/clip_171/start_frame=0 724 | animation/clip_171/end_frame=0 725 | animation/clip_171/loops=false 726 | animation/clip_172/name="" 727 | animation/clip_172/start_frame=0 728 | animation/clip_172/end_frame=0 729 | animation/clip_172/loops=false 730 | animation/clip_173/name="" 731 | animation/clip_173/start_frame=0 732 | animation/clip_173/end_frame=0 733 | animation/clip_173/loops=false 734 | animation/clip_174/name="" 735 | animation/clip_174/start_frame=0 736 | animation/clip_174/end_frame=0 737 | animation/clip_174/loops=false 738 | animation/clip_175/name="" 739 | animation/clip_175/start_frame=0 740 | animation/clip_175/end_frame=0 741 | animation/clip_175/loops=false 742 | animation/clip_176/name="" 743 | animation/clip_176/start_frame=0 744 | animation/clip_176/end_frame=0 745 | animation/clip_176/loops=false 746 | animation/clip_177/name="" 747 | animation/clip_177/start_frame=0 748 | animation/clip_177/end_frame=0 749 | animation/clip_177/loops=false 750 | animation/clip_178/name="" 751 | animation/clip_178/start_frame=0 752 | animation/clip_178/end_frame=0 753 | animation/clip_178/loops=false 754 | animation/clip_179/name="" 755 | animation/clip_179/start_frame=0 756 | animation/clip_179/end_frame=0 757 | animation/clip_179/loops=false 758 | animation/clip_180/name="" 759 | animation/clip_180/start_frame=0 760 | animation/clip_180/end_frame=0 761 | animation/clip_180/loops=false 762 | animation/clip_181/name="" 763 | animation/clip_181/start_frame=0 764 | animation/clip_181/end_frame=0 765 | animation/clip_181/loops=false 766 | animation/clip_182/name="" 767 | animation/clip_182/start_frame=0 768 | animation/clip_182/end_frame=0 769 | animation/clip_182/loops=false 770 | animation/clip_183/name="" 771 | animation/clip_183/start_frame=0 772 | animation/clip_183/end_frame=0 773 | animation/clip_183/loops=false 774 | animation/clip_184/name="" 775 | animation/clip_184/start_frame=0 776 | animation/clip_184/end_frame=0 777 | animation/clip_184/loops=false 778 | animation/clip_185/name="" 779 | animation/clip_185/start_frame=0 780 | animation/clip_185/end_frame=0 781 | animation/clip_185/loops=false 782 | animation/clip_186/name="" 783 | animation/clip_186/start_frame=0 784 | animation/clip_186/end_frame=0 785 | animation/clip_186/loops=false 786 | animation/clip_187/name="" 787 | animation/clip_187/start_frame=0 788 | animation/clip_187/end_frame=0 789 | animation/clip_187/loops=false 790 | animation/clip_188/name="" 791 | animation/clip_188/start_frame=0 792 | animation/clip_188/end_frame=0 793 | animation/clip_188/loops=false 794 | animation/clip_189/name="" 795 | animation/clip_189/start_frame=0 796 | animation/clip_189/end_frame=0 797 | animation/clip_189/loops=false 798 | animation/clip_190/name="" 799 | animation/clip_190/start_frame=0 800 | animation/clip_190/end_frame=0 801 | animation/clip_190/loops=false 802 | animation/clip_191/name="" 803 | animation/clip_191/start_frame=0 804 | animation/clip_191/end_frame=0 805 | animation/clip_191/loops=false 806 | animation/clip_192/name="" 807 | animation/clip_192/start_frame=0 808 | animation/clip_192/end_frame=0 809 | animation/clip_192/loops=false 810 | animation/clip_193/name="" 811 | animation/clip_193/start_frame=0 812 | animation/clip_193/end_frame=0 813 | animation/clip_193/loops=false 814 | animation/clip_194/name="" 815 | animation/clip_194/start_frame=0 816 | animation/clip_194/end_frame=0 817 | animation/clip_194/loops=false 818 | animation/clip_195/name="" 819 | animation/clip_195/start_frame=0 820 | animation/clip_195/end_frame=0 821 | animation/clip_195/loops=false 822 | animation/clip_196/name="" 823 | animation/clip_196/start_frame=0 824 | animation/clip_196/end_frame=0 825 | animation/clip_196/loops=false 826 | animation/clip_197/name="" 827 | animation/clip_197/start_frame=0 828 | animation/clip_197/end_frame=0 829 | animation/clip_197/loops=false 830 | animation/clip_198/name="" 831 | animation/clip_198/start_frame=0 832 | animation/clip_198/end_frame=0 833 | animation/clip_198/loops=false 834 | animation/clip_199/name="" 835 | animation/clip_199/start_frame=0 836 | animation/clip_199/end_frame=0 837 | animation/clip_199/loops=false 838 | animation/clip_200/name="" 839 | animation/clip_200/start_frame=0 840 | animation/clip_200/end_frame=0 841 | animation/clip_200/loops=false 842 | animation/clip_201/name="" 843 | animation/clip_201/start_frame=0 844 | animation/clip_201/end_frame=0 845 | animation/clip_201/loops=false 846 | animation/clip_202/name="" 847 | animation/clip_202/start_frame=0 848 | animation/clip_202/end_frame=0 849 | animation/clip_202/loops=false 850 | animation/clip_203/name="" 851 | animation/clip_203/start_frame=0 852 | animation/clip_203/end_frame=0 853 | animation/clip_203/loops=false 854 | animation/clip_204/name="" 855 | animation/clip_204/start_frame=0 856 | animation/clip_204/end_frame=0 857 | animation/clip_204/loops=false 858 | animation/clip_205/name="" 859 | animation/clip_205/start_frame=0 860 | animation/clip_205/end_frame=0 861 | animation/clip_205/loops=false 862 | animation/clip_206/name="" 863 | animation/clip_206/start_frame=0 864 | animation/clip_206/end_frame=0 865 | animation/clip_206/loops=false 866 | animation/clip_207/name="" 867 | animation/clip_207/start_frame=0 868 | animation/clip_207/end_frame=0 869 | animation/clip_207/loops=false 870 | animation/clip_208/name="" 871 | animation/clip_208/start_frame=0 872 | animation/clip_208/end_frame=0 873 | animation/clip_208/loops=false 874 | animation/clip_209/name="" 875 | animation/clip_209/start_frame=0 876 | animation/clip_209/end_frame=0 877 | animation/clip_209/loops=false 878 | animation/clip_210/name="" 879 | animation/clip_210/start_frame=0 880 | animation/clip_210/end_frame=0 881 | animation/clip_210/loops=false 882 | animation/clip_211/name="" 883 | animation/clip_211/start_frame=0 884 | animation/clip_211/end_frame=0 885 | animation/clip_211/loops=false 886 | animation/clip_212/name="" 887 | animation/clip_212/start_frame=0 888 | animation/clip_212/end_frame=0 889 | animation/clip_212/loops=false 890 | animation/clip_213/name="" 891 | animation/clip_213/start_frame=0 892 | animation/clip_213/end_frame=0 893 | animation/clip_213/loops=false 894 | animation/clip_214/name="" 895 | animation/clip_214/start_frame=0 896 | animation/clip_214/end_frame=0 897 | animation/clip_214/loops=false 898 | animation/clip_215/name="" 899 | animation/clip_215/start_frame=0 900 | animation/clip_215/end_frame=0 901 | animation/clip_215/loops=false 902 | animation/clip_216/name="" 903 | animation/clip_216/start_frame=0 904 | animation/clip_216/end_frame=0 905 | animation/clip_216/loops=false 906 | animation/clip_217/name="" 907 | animation/clip_217/start_frame=0 908 | animation/clip_217/end_frame=0 909 | animation/clip_217/loops=false 910 | animation/clip_218/name="" 911 | animation/clip_218/start_frame=0 912 | animation/clip_218/end_frame=0 913 | animation/clip_218/loops=false 914 | animation/clip_219/name="" 915 | animation/clip_219/start_frame=0 916 | animation/clip_219/end_frame=0 917 | animation/clip_219/loops=false 918 | animation/clip_220/name="" 919 | animation/clip_220/start_frame=0 920 | animation/clip_220/end_frame=0 921 | animation/clip_220/loops=false 922 | animation/clip_221/name="" 923 | animation/clip_221/start_frame=0 924 | animation/clip_221/end_frame=0 925 | animation/clip_221/loops=false 926 | animation/clip_222/name="" 927 | animation/clip_222/start_frame=0 928 | animation/clip_222/end_frame=0 929 | animation/clip_222/loops=false 930 | animation/clip_223/name="" 931 | animation/clip_223/start_frame=0 932 | animation/clip_223/end_frame=0 933 | animation/clip_223/loops=false 934 | animation/clip_224/name="" 935 | animation/clip_224/start_frame=0 936 | animation/clip_224/end_frame=0 937 | animation/clip_224/loops=false 938 | animation/clip_225/name="" 939 | animation/clip_225/start_frame=0 940 | animation/clip_225/end_frame=0 941 | animation/clip_225/loops=false 942 | animation/clip_226/name="" 943 | animation/clip_226/start_frame=0 944 | animation/clip_226/end_frame=0 945 | animation/clip_226/loops=false 946 | animation/clip_227/name="" 947 | animation/clip_227/start_frame=0 948 | animation/clip_227/end_frame=0 949 | animation/clip_227/loops=false 950 | animation/clip_228/name="" 951 | animation/clip_228/start_frame=0 952 | animation/clip_228/end_frame=0 953 | animation/clip_228/loops=false 954 | animation/clip_229/name="" 955 | animation/clip_229/start_frame=0 956 | animation/clip_229/end_frame=0 957 | animation/clip_229/loops=false 958 | animation/clip_230/name="" 959 | animation/clip_230/start_frame=0 960 | animation/clip_230/end_frame=0 961 | animation/clip_230/loops=false 962 | animation/clip_231/name="" 963 | animation/clip_231/start_frame=0 964 | animation/clip_231/end_frame=0 965 | animation/clip_231/loops=false 966 | animation/clip_232/name="" 967 | animation/clip_232/start_frame=0 968 | animation/clip_232/end_frame=0 969 | animation/clip_232/loops=false 970 | animation/clip_233/name="" 971 | animation/clip_233/start_frame=0 972 | animation/clip_233/end_frame=0 973 | animation/clip_233/loops=false 974 | animation/clip_234/name="" 975 | animation/clip_234/start_frame=0 976 | animation/clip_234/end_frame=0 977 | animation/clip_234/loops=false 978 | animation/clip_235/name="" 979 | animation/clip_235/start_frame=0 980 | animation/clip_235/end_frame=0 981 | animation/clip_235/loops=false 982 | animation/clip_236/name="" 983 | animation/clip_236/start_frame=0 984 | animation/clip_236/end_frame=0 985 | animation/clip_236/loops=false 986 | animation/clip_237/name="" 987 | animation/clip_237/start_frame=0 988 | animation/clip_237/end_frame=0 989 | animation/clip_237/loops=false 990 | animation/clip_238/name="" 991 | animation/clip_238/start_frame=0 992 | animation/clip_238/end_frame=0 993 | animation/clip_238/loops=false 994 | animation/clip_239/name="" 995 | animation/clip_239/start_frame=0 996 | animation/clip_239/end_frame=0 997 | animation/clip_239/loops=false 998 | animation/clip_240/name="" 999 | animation/clip_240/start_frame=0 1000 | animation/clip_240/end_frame=0 1001 | animation/clip_240/loops=false 1002 | animation/clip_241/name="" 1003 | animation/clip_241/start_frame=0 1004 | animation/clip_241/end_frame=0 1005 | animation/clip_241/loops=false 1006 | animation/clip_242/name="" 1007 | animation/clip_242/start_frame=0 1008 | animation/clip_242/end_frame=0 1009 | animation/clip_242/loops=false 1010 | animation/clip_243/name="" 1011 | animation/clip_243/start_frame=0 1012 | animation/clip_243/end_frame=0 1013 | animation/clip_243/loops=false 1014 | animation/clip_244/name="" 1015 | animation/clip_244/start_frame=0 1016 | animation/clip_244/end_frame=0 1017 | animation/clip_244/loops=false 1018 | animation/clip_245/name="" 1019 | animation/clip_245/start_frame=0 1020 | animation/clip_245/end_frame=0 1021 | animation/clip_245/loops=false 1022 | animation/clip_246/name="" 1023 | animation/clip_246/start_frame=0 1024 | animation/clip_246/end_frame=0 1025 | animation/clip_246/loops=false 1026 | animation/clip_247/name="" 1027 | animation/clip_247/start_frame=0 1028 | animation/clip_247/end_frame=0 1029 | animation/clip_247/loops=false 1030 | animation/clip_248/name="" 1031 | animation/clip_248/start_frame=0 1032 | animation/clip_248/end_frame=0 1033 | animation/clip_248/loops=false 1034 | animation/clip_249/name="" 1035 | animation/clip_249/start_frame=0 1036 | animation/clip_249/end_frame=0 1037 | animation/clip_249/loops=false 1038 | animation/clip_250/name="" 1039 | animation/clip_250/start_frame=0 1040 | animation/clip_250/end_frame=0 1041 | animation/clip_250/loops=false 1042 | animation/clip_251/name="" 1043 | animation/clip_251/start_frame=0 1044 | animation/clip_251/end_frame=0 1045 | animation/clip_251/loops=false 1046 | animation/clip_252/name="" 1047 | animation/clip_252/start_frame=0 1048 | animation/clip_252/end_frame=0 1049 | animation/clip_252/loops=false 1050 | animation/clip_253/name="" 1051 | animation/clip_253/start_frame=0 1052 | animation/clip_253/end_frame=0 1053 | animation/clip_253/loops=false 1054 | animation/clip_254/name="" 1055 | animation/clip_254/start_frame=0 1056 | animation/clip_254/end_frame=0 1057 | animation/clip_254/loops=false 1058 | animation/clip_255/name="" 1059 | animation/clip_255/start_frame=0 1060 | animation/clip_255/end_frame=0 1061 | animation/clip_255/loops=false 1062 | animation/clip_256/name="" 1063 | animation/clip_256/start_frame=0 1064 | animation/clip_256/end_frame=0 1065 | animation/clip_256/loops=false 1066 | -------------------------------------------------------------------------------- /Tiles/square.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/square.mesh -------------------------------------------------------------------------------- /Tiles/square.mtl: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9473af658993ea8798cf0348b1d13854e278fb6b8b71c3caed8c50d38b7899ab 3 | size 294 4 | -------------------------------------------------------------------------------- /Tiles/square.obj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:bf2765734c14d73c1b01b396b4b86a97c42c65a119af1bee2fe7f796e551d90a 3 | size 1093 4 | -------------------------------------------------------------------------------- /Tiles/square.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | type="Mesh" 5 | path="res://.import/square.obj-98173846cc71c8199cb1a040b51c6231.mesh" 6 | 7 | [deps] 8 | 9 | files=[ "res://.import/square.obj-98173846cc71c8199cb1a040b51c6231.mesh" ] 10 | 11 | source_file="res://Tiles/square.obj" 12 | source_md5="240790700a5cb72f785b51ea673e1416" 13 | 14 | dest_files=[ "res://.import/square.obj-98173846cc71c8199cb1a040b51c6231.mesh", "res://.import/square.obj-98173846cc71c8199cb1a040b51c6231.mesh" ] 15 | dest_md5="9f98d181ecf075f57c140f12fb25ccfb" 16 | 17 | [params] 18 | 19 | generate_tangents=true 20 | -------------------------------------------------------------------------------- /Tiles/wall.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/wall.mesh -------------------------------------------------------------------------------- /Tiles/wall.mtl: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:0f3004ef58ff596a3ff7052c4c5fd7a740aa878a5ffaec538b00d41062c5c0be 3 | size 292 4 | -------------------------------------------------------------------------------- /Tiles/wall.obj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1e8b05070a6832c93d63a476337728eaa0c837aaee82ae6c1c5022b137819cb0 3 | size 1090 4 | -------------------------------------------------------------------------------- /Tiles/wall.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | type="Mesh" 5 | path="res://.import/wall.obj-f38a682d5b508d9efc107dc1fdd50537.mesh" 6 | 7 | [deps] 8 | 9 | files=[ "res://.import/wall.obj-f38a682d5b508d9efc107dc1fdd50537.mesh" ] 10 | 11 | source_file="res://Tiles/wall.obj" 12 | source_md5="5ba4b93ee8eb4a807ed5cdc819cc4bf7" 13 | 14 | dest_files=[ "res://.import/wall.obj-f38a682d5b508d9efc107dc1fdd50537.mesh", "res://.import/wall.obj-f38a682d5b508d9efc107dc1fdd50537.mesh" ] 15 | dest_md5="ab3e76c3c0fd0ca4482e83f3910121be" 16 | 17 | [params] 18 | 19 | generate_tangents=true 20 | -------------------------------------------------------------------------------- /Tiles/wall_corner.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/wall_corner.mesh -------------------------------------------------------------------------------- /Tiles/wall_corner.mtl: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3dbe6d1b0fcc49520e4b256cd01e20baf2a023e0f7d839e281761fa09df3dab7 3 | size 299 4 | -------------------------------------------------------------------------------- /Tiles/wall_corner.obj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:1679e66584e655931f7516a549fc77d256801821df064d189dc1945725dc1ef8 3 | size 1969 4 | -------------------------------------------------------------------------------- /Tiles/wall_corner.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | type="Mesh" 5 | path="res://.import/wall_corner.obj-4829f3b5082c4b34b9fb351d0aa65fe6.mesh" 6 | 7 | [deps] 8 | 9 | files=[ "res://.import/wall_corner.obj-4829f3b5082c4b34b9fb351d0aa65fe6.mesh" ] 10 | 11 | source_file="res://Tiles/wall_corner.obj" 12 | source_md5="175a2416cd7cce761f32165194aa52d5" 13 | 14 | dest_files=[ "res://.import/wall_corner.obj-4829f3b5082c4b34b9fb351d0aa65fe6.mesh", "res://.import/wall_corner.obj-4829f3b5082c4b34b9fb351d0aa65fe6.mesh" ] 15 | dest_md5="0a90be83353d783359e814d2a962ff86" 16 | 17 | [params] 18 | 19 | generate_tangents=true 20 | -------------------------------------------------------------------------------- /Tiles/wall_floor.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/wall_floor.mesh -------------------------------------------------------------------------------- /Tiles/wall_floor.mtl: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e5f8369f2ec2f4e5c225fe52b7230a1043a42f1d835a8126a631cb26e3ee94cb 3 | size 298 4 | -------------------------------------------------------------------------------- /Tiles/wall_floor.obj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:71518ba099ea42978ee8df993eba8dce7bec96270a307c5f6c96b16fd892970d 3 | size 1966 4 | -------------------------------------------------------------------------------- /Tiles/wall_floor.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | type="Mesh" 5 | path="res://.import/wall_floor.obj-01febb5d6569d004178b53e0680f592f.mesh" 6 | 7 | [deps] 8 | 9 | files=[ "res://.import/wall_floor.obj-01febb5d6569d004178b53e0680f592f.mesh" ] 10 | 11 | source_file="res://Tiles/wall_floor.obj" 12 | source_md5="5022d4f904022da2598f45630b87dfcd" 13 | 14 | dest_files=[ "res://.import/wall_floor.obj-01febb5d6569d004178b53e0680f592f.mesh", "res://.import/wall_floor.obj-01febb5d6569d004178b53e0680f592f.mesh" ] 15 | dest_md5="ff5da3c2e5078fa70033f4000ed2d576" 16 | 17 | [params] 18 | 19 | generate_tangents=true 20 | -------------------------------------------------------------------------------- /Tiles/wall_floor_corner.mesh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/Tiles/wall_floor_corner.mesh -------------------------------------------------------------------------------- /Tiles/wall_floor_corner.mtl: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9f539ce2d1bdcbe04a5c816cac1be103a1cc6ef907b8c7f8ff499db41eeb573c 3 | size 305 4 | -------------------------------------------------------------------------------- /Tiles/wall_floor_corner.obj: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aa70a4f0e4652cbad0fc796437885803c37c7cbc1de55b60cd27622b24139509 3 | size 2848 4 | -------------------------------------------------------------------------------- /Tiles/wall_floor_corner.obj.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="wavefront_obj" 4 | type="Mesh" 5 | path="res://.import/wall_floor_corner.obj-91cddd3742f0fcc8f585fa1de8bfabb9.mesh" 6 | 7 | [deps] 8 | 9 | files=[ "res://.import/wall_floor_corner.obj-91cddd3742f0fcc8f585fa1de8bfabb9.mesh" ] 10 | 11 | source_file="res://Tiles/wall_floor_corner.obj" 12 | source_md5="d86de17c7855d41e80ca8d15c256881d" 13 | 14 | dest_files=[ "res://.import/wall_floor_corner.obj-91cddd3742f0fcc8f585fa1de8bfabb9.mesh", "res://.import/wall_floor_corner.obj-91cddd3742f0fcc8f585fa1de8bfabb9.mesh" ] 15 | dest_md5="7badac0cbb0f45cac779f7c3e4c13928" 16 | 17 | [params] 18 | 19 | generate_tangents=true 20 | -------------------------------------------------------------------------------- /WorldEnvironment.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/WorldEnvironment.res -------------------------------------------------------------------------------- /billboard.shader: -------------------------------------------------------------------------------- 1 | shader_type spatial; 2 | render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx,unshaded, skip_vertex_transform; 3 | uniform vec4 albedo : hint_color; 4 | uniform sampler2D texture_albedo : hint_albedo; 5 | uniform float specular; 6 | uniform float metallic; 7 | uniform float roughness : hint_range(0,1); 8 | uniform float point_size : hint_range(0,128); 9 | uniform sampler2D texture_metallic : hint_white; 10 | uniform vec4 metallic_texture_channel; 11 | uniform sampler2D texture_roughness : hint_white; 12 | uniform vec4 roughness_texture_channel; 13 | uniform vec3 uv1_scale; 14 | uniform vec3 uv1_offset; 15 | uniform vec3 uv2_scale; 16 | uniform vec3 uv2_offset; 17 | 18 | varying vec4 VAR1; 19 | 20 | void vertex() { 21 | 22 | MODELVIEW_MATRIX = INV_CAMERA_MATRIX * mat4(CAMERA_MATRIX[0],WORLD_MATRIX[1],vec4(normalize(cross(CAMERA_MATRIX[0].xyz,WORLD_MATRIX[1].xyz)),0.0),WORLD_MATRIX[3]); 23 | vec4 snap_to_pixel = PROJECTION_MATRIX * MODELVIEW_MATRIX * vec4(VERTEX, 1.0); 24 | NORMAL = (MODELVIEW_MATRIX * vec4(VERTEX, 0.0)).xyz; 25 | vec4 norm = MODELVIEW_MATRIX * vec4(VERTEX, 1.0); 26 | 27 | vec4 vert = snap_to_pixel; 28 | vert.xyz = snap_to_pixel.xyz / snap_to_pixel.w; 29 | vert.x = floor(160.0 * vert.x) / 160.0; 30 | vert.y = floor(120.0 * vert.y) / 120.0; 31 | vert.xyz *= snap_to_pixel.w; 32 | VERTEX = (INV_PROJECTION_MATRIX * vert).xyz; 33 | //VERTEX = (PROJECTION_MATRIX * vec4(VERTEX, 1.0)).xyz; 34 | float dist = length(norm); 35 | //UV *= dist + vert.w / dist / 2.0 ; 36 | UV=UV*uv1_scale.xy+uv1_offset.xy; 37 | VAR1 = vec4(UV * VERTEX.z, VERTEX.z, 0); 38 | } 39 | 40 | 41 | 42 | 43 | void fragment() { 44 | vec2 base_uv = UV; 45 | vec4 albedo_tex = texture(texture_albedo,VAR1.xy / VAR1.z); 46 | albedo_tex.rgb = mix(pow((albedo_tex.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)),vec3(2.4)),albedo_tex.rgb.rgb * (1.0 / 12.92),lessThan(albedo_tex.rgb,vec3(0.04045))); 47 | ALBEDO = albedo.rgb * albedo_tex.rgb; 48 | float metallic_tex = dot(texture(texture_metallic,base_uv),metallic_texture_channel); 49 | METALLIC = metallic_tex * metallic; 50 | float roughness_tex = dot(texture(texture_roughness,base_uv),roughness_texture_channel); 51 | ROUGHNESS = roughness_tex * roughness; 52 | SPECULAR = specular; 53 | ALPHA = albedo.a * albedo_tex.a; 54 | } 55 | -------------------------------------------------------------------------------- /default_env.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" load_steps=2 format=2] 2 | 3 | [sub_resource type="ProceduralSky" id=1] 4 | 5 | radiance_size = 4 6 | sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 ) 7 | sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 ) 8 | sky_curve = 0.25 9 | sky_energy = 1.0 10 | ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 ) 11 | ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 ) 12 | ground_curve = 0.01 13 | ground_energy = 1.0 14 | sun_color = Color( 1, 1, 1, 1 ) 15 | sun_latitude = 35.0 16 | sun_longitude = 0.0 17 | sun_angle_min = 1.0 18 | sun_angle_max = 100.0 19 | sun_curve = 0.05 20 | sun_energy = 16.0 21 | texture_size = 2 22 | 23 | [resource] 24 | 25 | background_mode = 2 26 | background_sky = SubResource( 1 ) 27 | background_sky_custom_fov = 0.0 28 | background_color = Color( 0, 0, 0, 1 ) 29 | background_energy = 1.0 30 | background_canvas_max_layer = 0 31 | ambient_light_color = Color( 0, 0, 0, 1 ) 32 | ambient_light_energy = 1.0 33 | ambient_light_sky_contribution = 1.0 34 | fog_enabled = false 35 | fog_color = Color( 0.5, 0.6, 0.7, 1 ) 36 | fog_sun_color = Color( 1, 0.9, 0.7, 1 ) 37 | fog_sun_amount = 0.0 38 | fog_depth_enabled = true 39 | fog_depth_begin = 10.0 40 | fog_depth_curve = 1.0 41 | fog_transmit_enabled = false 42 | fog_transmit_curve = 1.0 43 | fog_height_enabled = false 44 | fog_height_min = 0.0 45 | fog_height_max = 100.0 46 | fog_height_curve = 1.0 47 | tonemap_mode = 0 48 | tonemap_exposure = 1.0 49 | tonemap_white = 1.0 50 | auto_exposure_enabled = false 51 | auto_exposure_scale = 0.4 52 | auto_exposure_min_luma = 0.05 53 | auto_exposure_max_luma = 8.0 54 | auto_exposure_speed = 0.5 55 | ss_reflections_enabled = false 56 | ss_reflections_max_steps = 64 57 | ss_reflections_fade_in = 0.15 58 | ss_reflections_fade_out = 2.0 59 | ss_reflections_depth_tolerance = 0.2 60 | ss_reflections_roughness = true 61 | ssao_enabled = false 62 | ssao_radius = 1.0 63 | ssao_intensity = 1.0 64 | ssao_radius2 = 0.0 65 | ssao_intensity2 = 1.0 66 | ssao_bias = 0.01 67 | ssao_light_affect = 0.0 68 | ssao_color = Color( 0, 0, 0, 1 ) 69 | ssao_quality = 0 70 | ssao_blur = 3 71 | ssao_edge_sharpness = 4.0 72 | dof_blur_far_enabled = false 73 | dof_blur_far_distance = 10.0 74 | dof_blur_far_transition = 5.0 75 | dof_blur_far_amount = 0.1 76 | dof_blur_far_quality = 1 77 | dof_blur_near_enabled = false 78 | dof_blur_near_distance = 2.0 79 | dof_blur_near_transition = 1.0 80 | dof_blur_near_amount = 0.1 81 | dof_blur_near_quality = 1 82 | glow_enabled = false 83 | glow_levels/1 = false 84 | glow_levels/2 = false 85 | glow_levels/3 = true 86 | glow_levels/4 = false 87 | glow_levels/5 = true 88 | glow_levels/6 = false 89 | glow_levels/7 = false 90 | glow_intensity = 0.8 91 | glow_strength = 1.0 92 | glow_bloom = 0.0 93 | glow_blend_mode = 2 94 | glow_hdr_threshold = 1.0 95 | glow_hdr_scale = 2.0 96 | glow_bicubic_upscale = false 97 | adjustment_enabled = false 98 | adjustment_brightness = 1.0 99 | adjustment_contrast = 1.0 100 | adjustment_saturation = 1.0 101 | 102 | -------------------------------------------------------------------------------- /export_presets.cfg: -------------------------------------------------------------------------------- 1 | [preset.0] 2 | 3 | name="Linux/X11" 4 | platform="Linux/X11" 5 | runnable=true 6 | custom_features="" 7 | export_filter="all_resources" 8 | include_filter="" 9 | exclude_filter="" 10 | patch_list=PoolStringArray( ) 11 | 12 | [preset.0.options] 13 | 14 | texture_format/s3tc=true 15 | texture_format/etc=false 16 | texture_format/etc2=false 17 | binary_format/64_bits=true 18 | custom_template/release="" 19 | custom_template/debug="" 20 | 21 | [preset.1] 22 | 23 | name="Windows Desktop" 24 | platform="Windows Desktop" 25 | runnable=true 26 | custom_features="" 27 | export_filter="all_resources" 28 | include_filter="" 29 | exclude_filter="" 30 | patch_list=PoolStringArray( ) 31 | 32 | [preset.1.options] 33 | 34 | texture_format/s3tc=true 35 | texture_format/etc=false 36 | texture_format/etc2=false 37 | binary_format/64_bits=true 38 | custom_template/release="" 39 | custom_template/debug="" 40 | application/icon="" 41 | application/file_version="" 42 | application/product_version="" 43 | application/company_name="" 44 | application/product_name="" 45 | application/file_description="" 46 | application/copyright="" 47 | application/trademarks="" 48 | -------------------------------------------------------------------------------- /ground.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="ShaderMaterial" load_steps=3 format=2] 2 | 3 | [ext_resource path="res://shader.shader" type="Shader" id=1] 4 | [ext_resource path="res://sprites/brick_ls.png" type="Texture" id=2] 5 | 6 | [resource] 7 | 8 | render_priority = 0 9 | shader = ExtResource( 1 ) 10 | shader_param/albedo = Color( 1, 1, 1, 1 ) 11 | shader_param/specular = 0.5 12 | shader_param/metallic = 0.0 13 | shader_param/roughness = 0.0 14 | shader_param/point_size = 1.0 15 | shader_param/metallic_texture_channel = Plane( 1, 0, 0, 0 ) 16 | shader_param/roughness_texture_channel = Plane( 1, 0, 0, 0 ) 17 | shader_param/uv1_scale = Vector3( 1, 1, 1 ) 18 | shader_param/uv1_offset = Vector3( 0, 0, 0 ) 19 | shader_param/uv2_scale = Vector3( 1, 1, 1 ) 20 | shader_param/uv2_offset = Vector3( 0, 0, 0 ) 21 | shader_param/texture_albedo = ExtResource( 2 ) 22 | _sections_unfolded = [ "shader_param" ] 23 | 24 | -------------------------------------------------------------------------------- /icon.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:edc731aec2996737ff484ab48aeb91861732b232c26e1abb01325a10e9df69df 3 | size 3496 4 | -------------------------------------------------------------------------------- /icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path.s3tc="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex" 6 | path.etc2="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex" 7 | 8 | [deps] 9 | 10 | source_file="res://icon.png" 11 | source_md5="11e2273ca91c26792762cf6c8df54bae" 12 | 13 | dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.s3tc.stex", "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.etc2.stex" ] 14 | dest_md5="d5dd547f2c3cc00da22e45ebb6adede1" 15 | 16 | [params] 17 | 18 | compress/mode=2 19 | compress/lossy_quality=0.7 20 | compress/hdr_mode=0 21 | compress/normal_map=0 22 | flags/repeat=true 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=1 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | stream=false 31 | size_limit=0 32 | detect_3d=false 33 | svg/scale=1.0 34 | -------------------------------------------------------------------------------- /new_environment.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" format=2] 2 | 3 | [resource] 4 | 5 | background_mode = 1 6 | background_sky_custom_fov = 0.0 7 | background_color = Color( 0.623529, 0.623529, 0.623529, 1 ) 8 | background_energy = 1.0 9 | background_canvas_max_layer = 0 10 | ambient_light_color = Color( 0.363281, 0.363281, 0.363281, 1 ) 11 | ambient_light_energy = 1.0 12 | ambient_light_sky_contribution = 1.0 13 | fog_enabled = true 14 | fog_color = Color( 0.625, 0.625, 0.625, 1 ) 15 | fog_sun_color = Color( 1, 1, 1, 1 ) 16 | fog_sun_amount = 0.0 17 | fog_depth_enabled = true 18 | fog_depth_begin = 0.0 19 | fog_depth_curve = 0.341511 20 | fog_transmit_enabled = false 21 | fog_transmit_curve = 1.03526 22 | fog_height_enabled = false 23 | fog_height_min = 0.0 24 | fog_height_max = 100.0 25 | fog_height_curve = 1.0 26 | tonemap_mode = 0 27 | tonemap_exposure = 1.0 28 | tonemap_white = 1.0 29 | auto_exposure_enabled = false 30 | auto_exposure_scale = 0.4 31 | auto_exposure_min_luma = 0.05 32 | auto_exposure_max_luma = 8.0 33 | auto_exposure_speed = 0.5 34 | ss_reflections_enabled = false 35 | ss_reflections_max_steps = 64 36 | ss_reflections_fade_in = 0.15 37 | ss_reflections_fade_out = 2.0 38 | ss_reflections_depth_tolerance = 0.2 39 | ss_reflections_roughness = true 40 | ssao_enabled = false 41 | ssao_radius = 1.0 42 | ssao_intensity = 1.0 43 | ssao_radius2 = 0.0 44 | ssao_intensity2 = 1.0 45 | ssao_bias = 0.01 46 | ssao_light_affect = 0.0 47 | ssao_color = Color( 0, 0, 0, 1 ) 48 | ssao_quality = 0 49 | ssao_blur = 3 50 | ssao_edge_sharpness = 4.0 51 | dof_blur_far_enabled = false 52 | dof_blur_far_distance = 10.0 53 | dof_blur_far_transition = 5.0 54 | dof_blur_far_amount = 0.1 55 | dof_blur_far_quality = 1 56 | dof_blur_near_enabled = false 57 | dof_blur_near_distance = 2.0 58 | dof_blur_near_transition = 1.0 59 | dof_blur_near_amount = 0.1 60 | dof_blur_near_quality = 1 61 | glow_enabled = false 62 | glow_levels/1 = false 63 | glow_levels/2 = false 64 | glow_levels/3 = true 65 | glow_levels/4 = false 66 | glow_levels/5 = true 67 | glow_levels/6 = false 68 | glow_levels/7 = false 69 | glow_intensity = 0.8 70 | glow_strength = 1.0 71 | glow_bloom = 0.0 72 | glow_blend_mode = 2 73 | glow_hdr_threshold = 1.0 74 | glow_hdr_scale = 2.0 75 | glow_bicubic_upscale = false 76 | adjustment_enabled = false 77 | adjustment_brightness = 1.0 78 | adjustment_contrast = 1.0 79 | adjustment_saturation = 1.0 80 | _sections_unfolded = [ "Background", "Fog" ] 81 | 82 | -------------------------------------------------------------------------------- /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=3 10 | 11 | [application] 12 | 13 | config/name="VineCrawler" 14 | run/main_scene="res://Scenes/Scene.tscn" 15 | config/icon="res://icon.png" 16 | 17 | [display] 18 | 19 | window/size/width=1920 20 | window/size/height=1080 21 | window/size/resizable=false 22 | window/size/fullscreen=true 23 | window/stretch/mode="viewport" 24 | window/stretch/aspect="keep_width" 25 | window/stretch/shrink="1" 26 | 27 | [input] 28 | 29 | move_forward=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) 30 | ] 31 | move_backward=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) 32 | ] 33 | move_left=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) 34 | ] 35 | move_right=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) 36 | ] 37 | jump=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) 38 | ] 39 | quit=[ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null) 40 | ] 41 | attack=[ Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"button_mask":0,"position":Vector2( 0, 0 ),"global_position":Vector2( 0, 0 ),"factor":1.0,"button_index":1,"pressed":false,"doubleclick":false,"script":null) 42 | ] 43 | 44 | [physics] 45 | 46 | common/physics_fps=120 47 | 3d/physics_engine="Bullet" 48 | 49 | [rendering] 50 | 51 | threads/thread_model=2 52 | quality/filters/anisotropic_filter_level=16 53 | environment/default_environment="res://default_env.tres" 54 | -------------------------------------------------------------------------------- /shader.shader: -------------------------------------------------------------------------------- 1 | shader_type spatial; 2 | //render_mode blend_mix,depth_draw_opaque,cull_back,diffuse_burley,specular_schlick_ggx,skip_vertex_transform; 3 | render_mode skip_vertex_transform, vertex_lighting; 4 | uniform vec4 albedo : hint_color; 5 | uniform sampler2D texture_albedo : hint_albedo; 6 | uniform sampler2D alpha_mask; 7 | uniform float specular; 8 | uniform float metallic; 9 | uniform float roughness : hint_range(0,1); 10 | uniform float point_size : hint_range(0,128); 11 | uniform sampler2D texture_metallic : hint_white; 12 | uniform vec4 metallic_texture_channel; 13 | uniform sampler2D texture_roughness : hint_white; 14 | uniform vec4 roughness_texture_channel; 15 | uniform vec3 uv1_scale; 16 | uniform vec3 uv1_offset; 17 | uniform vec3 uv2_scale; 18 | uniform vec3 uv2_offset; 19 | 20 | varying vec4 VAR1; 21 | 22 | void vertex() { 23 | 24 | //MODELVIEW_MATRIX = PROJECTION_MATRIX * MODELVIEW_MATRIX; 25 | 26 | vec4 snap_to_pixel = PROJECTION_MATRIX * MODELVIEW_MATRIX * vec4(VERTEX, 1.0); 27 | 28 | 29 | 30 | 31 | vec4 vert = snap_to_pixel; 32 | vert.xyz = snap_to_pixel.xyz / snap_to_pixel.w; 33 | vert.x = floor(160.0 * vert.x) / 160.0; 34 | vert.y = floor(120.0 * vert.y) / 120.0; 35 | vert.xyz *= snap_to_pixel.w; 36 | //VERTEX = (INV_PROJECTION_MATRIX * vert).xyz; 37 | VERTEX = (MODELVIEW_MATRIX * vec4(VERTEX, 1.0)).xyz; 38 | NORMAL = (INV_PROJECTION_MATRIX * MODELVIEW_MATRIX * vec4(VERTEX, 0.0)).xyz; 39 | //VERTEX = (PROJECTION_MATRIX * vec4(VERTEX, 1.0)).xyz; 40 | //float dist = length(norm); 41 | //UV *= (dist + (vert.w) / dist / 2.0) ; 42 | 43 | UV=UV*uv1_scale.xy+uv1_offset.xy; 44 | VAR1 = vec4(UV * VERTEX.z, VERTEX.z, 0); 45 | 46 | } 47 | 48 | 49 | //float4 frag(v2f IN) : COLOR 50 | // { 51 | // half4 c = tex2D(_MainTex, IN.uv_MainTex / IN.normal.r)*IN.color; 52 | // half4 color = c*(IN.colorFog.a); 53 | // color.rgb += IN.colorFog.rgb*(1 - IN.colorFog.a); 54 | // return color; 55 | //} 56 | void fragment() { 57 | vec2 base_uv = UV; 58 | vec4 albedo_tex = texture(texture_albedo,VAR1.xy / VAR1.z); 59 | ALBEDO = albedo.rgb * albedo_tex.rgb; 60 | float metallic_tex = dot(texture(texture_metallic,base_uv),metallic_texture_channel); 61 | //METALLIC = metallic_tex * metallic; 62 | float roughness_tex = dot(texture(texture_roughness,base_uv),roughness_texture_channel); 63 | //ROUGHNESS = roughness_tex * roughness; 64 | //SPECULAR = specular; 65 | 66 | } 67 | 68 | void light(){ 69 | //SPECULAR_LIGHT = vec3(0); 70 | } 71 | -------------------------------------------------------------------------------- /shader.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="ShaderMaterial" load_steps=3 format=2] 2 | 3 | [ext_resource path="res://shader.shader" type="Shader" id=1] 4 | [ext_resource path="res://icon.png" type="Texture" id=2] 5 | 6 | [resource] 7 | 8 | render_priority = 0 9 | shader = ExtResource( 1 ) 10 | shader_param/albedo = Color( 1, 1, 1, 1 ) 11 | shader_param/specular = 0.5 12 | shader_param/metallic = 0.0 13 | shader_param/roughness = 0.0 14 | shader_param/point_size = 1.0 15 | shader_param/metallic_texture_channel = Plane( 1, 0, 0, 0 ) 16 | shader_param/roughness_texture_channel = Plane( 1, 0, 0, 0 ) 17 | shader_param/uv1_scale = Vector3( 4, 8, 0.01 ) 18 | shader_param/uv1_offset = Vector3( 0, 0, 0 ) 19 | shader_param/uv2_scale = Vector3( 1, 1, 1 ) 20 | shader_param/uv2_offset = Vector3( 0, 0, 0 ) 21 | shader_param/texture_albedo = ExtResource( 2 ) 22 | _sections_unfolded = [ "shader_param" ] 23 | 24 | -------------------------------------------------------------------------------- /sprites/VineBricks.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8b904a71762a1dad0048adf903f60c9e7fc17880b1a24e0b83969b57dc07a33e 3 | size 1143 4 | -------------------------------------------------------------------------------- /sprites/VineBricks.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/VineBricks.png-4b7799bd11e8612cef52aa68fa2c54fb.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://sprites/VineBricks.png" 10 | source_md5="84c62c7c36f5594f088d856b816c16f8" 11 | 12 | dest_files=[ "res://.import/VineBricks.png-4b7799bd11e8612cef52aa68fa2c54fb.stex" ] 13 | dest_md5="2dea5271aacb4b8cc0eb0485f40f2cb0" 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/normal_map=0 21 | flags/repeat=0 22 | flags/filter=true 23 | flags/mipmaps=false 24 | flags/anisotropic=false 25 | flags/srgb=2 26 | process/fix_alpha_border=true 27 | process/premult_alpha=false 28 | process/HDR_as_SRGB=false 29 | stream=false 30 | size_limit=0 31 | detect_3d=true 32 | svg/scale=1.0 33 | -------------------------------------------------------------------------------- /sprites/brick_hs.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:48ca77e363a1576c3940ef5e729cdba6351817ca0eaf3f8cc3cc64d77018e998 3 | size 796 4 | -------------------------------------------------------------------------------- /sprites/brick_hs.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/brick_hs.png-42c562ae12196970fc59af2d5f15e669.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://sprites/brick_hs.png" 10 | source_md5="1f5ae18d0909ec8f7453e18928767021" 11 | 12 | dest_files=[ "res://.import/brick_hs.png-42c562ae12196970fc59af2d5f15e669.stex" ] 13 | dest_md5="d484be131c77cf24a876a9f7c1995d72" 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/normal_map=0 21 | flags/repeat=0 22 | flags/filter=false 23 | flags/mipmaps=false 24 | flags/anisotropic=false 25 | flags/srgb=2 26 | process/fix_alpha_border=true 27 | process/premult_alpha=false 28 | process/HDR_as_SRGB=false 29 | stream=false 30 | size_limit=0 31 | detect_3d=true 32 | svg/scale=1.0 33 | -------------------------------------------------------------------------------- /sprites/brick_ls.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:337f5bf8841ec7fd9f23af5e64b1089e349ac839564ed6f109669f63af60a633 3 | size 763 4 | -------------------------------------------------------------------------------- /sprites/brick_ls.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path.s3tc="res://.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.s3tc.stex" 6 | path.etc2="res://.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.etc2.stex" 7 | 8 | [deps] 9 | 10 | source_file="res://sprites/brick_ls.png" 11 | source_md5="a644e3affb3deaedbf15728feba2b256" 12 | 13 | dest_files=[ "res://.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.s3tc.stex", "res://.import/brick_ls.png-8342b7733f526d1beb476267bb0ac72d.etc2.stex" ] 14 | dest_md5="af5842f68acd745ed51597398cf27c35" 15 | 16 | [params] 17 | 18 | compress/mode=2 19 | compress/lossy_quality=0.7 20 | compress/hdr_mode=0 21 | compress/normal_map=0 22 | flags/repeat=true 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=0 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | stream=false 31 | size_limit=0 32 | detect_3d=false 33 | svg/scale=1.0 34 | -------------------------------------------------------------------------------- /sprites/gems.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f27fbd7ace8835050de60ad6c0b72750ec2dcdb001cd4442ec667fafb4036ea1 3 | size 1279 4 | -------------------------------------------------------------------------------- /sprites/gems.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path.s3tc="res://.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.s3tc.stex" 6 | path.etc2="res://.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.etc2.stex" 7 | 8 | [deps] 9 | 10 | source_file="res://sprites/gems.png" 11 | source_md5="3c544264baeacd4180fd9e19f90e6f75" 12 | 13 | dest_files=[ "res://.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.s3tc.stex", "res://.import/gems.png-9456845cbfb2d99f381c87e9b318b0ec.etc2.stex" ] 14 | dest_md5="5203988b80a53e85e8e2b36fdd262c31" 15 | 16 | [params] 17 | 18 | compress/mode=2 19 | compress/lossy_quality=0.7 20 | compress/hdr_mode=0 21 | compress/normal_map=0 22 | flags/repeat=true 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | stream=false 31 | size_limit=0 32 | detect_3d=false 33 | svg/scale=1.0 34 | -------------------------------------------------------------------------------- /sprites/health.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:cb7d5a26abc97be83ab81aead5fb6f2dac915ac5a5a83910dbda449944d38543 3 | size 962 4 | -------------------------------------------------------------------------------- /sprites/health.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/health.png-fe502f4981772d05429453c15570bb25.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://sprites/health.png" 10 | source_md5="ba76348fa8823630ae36942a4c854beb" 11 | 12 | dest_files=[ "res://.import/health.png-fe502f4981772d05429453c15570bb25.stex" ] 13 | dest_md5="9024231f3278ed5f33e56d4279e5d807" 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/normal_map=0 21 | flags/repeat=0 22 | flags/filter=false 23 | flags/mipmaps=false 24 | flags/anisotropic=false 25 | flags/srgb=2 26 | process/fix_alpha_border=true 27 | process/premult_alpha=false 28 | process/HDR_as_SRGB=false 29 | stream=false 30 | size_limit=0 31 | detect_3d=true 32 | svg/scale=1.0 33 | -------------------------------------------------------------------------------- /sprites/health_bar.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3f4cc4b645c701e9b630e2f7437ccdb78dbef1f6f0d1220a9435fa65fc7d800e 3 | size 267 4 | -------------------------------------------------------------------------------- /sprites/health_bar.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/health_bar.png-e3c1ba68a4d4bb2335768cf176425994.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://sprites/health_bar.png" 10 | source_md5="853f231dacdae65af97390b0c03e5991" 11 | 12 | dest_files=[ "res://.import/health_bar.png-e3c1ba68a4d4bb2335768cf176425994.stex" ] 13 | dest_md5="db5cd6199ac6cdb24d85e60b86efadc9" 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/normal_map=0 21 | flags/repeat=0 22 | flags/filter=false 23 | flags/mipmaps=false 24 | flags/anisotropic=false 25 | flags/srgb=2 26 | process/fix_alpha_border=true 27 | process/premult_alpha=false 28 | process/HDR_as_SRGB=false 29 | stream=false 30 | size_limit=0 31 | detect_3d=true 32 | svg/scale=1.0 33 | -------------------------------------------------------------------------------- /sprites/health_mask.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:09b3b2e50ad754883b89b49da32cbf36fb57ec815288263879b83c1481243e19 3 | size 186 4 | -------------------------------------------------------------------------------- /sprites/health_mask.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path.s3tc="res://.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.s3tc.stex" 6 | path.etc2="res://.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.etc2.stex" 7 | 8 | [deps] 9 | 10 | source_file="res://sprites/health_mask.png" 11 | source_md5="b90d5c268dbe4d8d47838aba0f796631" 12 | 13 | dest_files=[ "res://.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.s3tc.stex", "res://.import/health_mask.png-6558726acf0f6fc4eee7e84e658f554d.etc2.stex" ] 14 | dest_md5="692064af2cb3f6d48cccaea9ccd7f522" 15 | 16 | [params] 17 | 18 | compress/mode=2 19 | compress/lossy_quality=0.7 20 | compress/hdr_mode=0 21 | compress/normal_map=0 22 | flags/repeat=true 23 | flags/filter=true 24 | flags/mipmaps=true 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | stream=false 31 | size_limit=0 32 | detect_3d=false 33 | svg/scale=1.0 34 | -------------------------------------------------------------------------------- /sprites/rope_16.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:22afd746cefe20e470e6eecff1037d4d16a5af17dd7720e5a7aab8e595aa0c2d 3 | size 413 4 | -------------------------------------------------------------------------------- /sprites/rope_16.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path.s3tc="res://.import/rope_16.png-90838104947dfc36f6b0ededff463016.s3tc.stex" 6 | path.etc2="res://.import/rope_16.png-90838104947dfc36f6b0ededff463016.etc2.stex" 7 | 8 | [deps] 9 | 10 | source_file="res://sprites/rope_16.png" 11 | source_md5="71365f0790de51ea3466d74f98762e59" 12 | 13 | dest_files=[ "res://.import/rope_16.png-90838104947dfc36f6b0ededff463016.s3tc.stex", "res://.import/rope_16.png-90838104947dfc36f6b0ededff463016.etc2.stex" ] 14 | dest_md5="82c90668010b6330facef803b3d0147e" 15 | 16 | [params] 17 | 18 | compress/mode=2 19 | compress/lossy_quality=0.7 20 | compress/hdr_mode=0 21 | compress/normal_map=0 22 | flags/repeat=true 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | stream=false 31 | size_limit=0 32 | detect_3d=false 33 | svg/scale=1.0 34 | -------------------------------------------------------------------------------- /sprites/rope_30.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:66008f4e7eece7bfbfd5a221eeedefc5430474acfce82f4a63878f9a39a842fe 3 | size 731 4 | -------------------------------------------------------------------------------- /sprites/rope_30.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path.s3tc="res://.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.s3tc.stex" 6 | path.etc2="res://.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.etc2.stex" 7 | 8 | [deps] 9 | 10 | source_file="res://sprites/rope_30.png" 11 | source_md5="74e8ce3e25629a18a4903926610271a0" 12 | 13 | dest_files=[ "res://.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.s3tc.stex", "res://.import/rope_30.png-d56562bf05d306f1cd59ad706557b589.etc2.stex" ] 14 | dest_md5="cebc6ba2247105ead5d609d7285c36ca" 15 | 16 | [params] 17 | 18 | compress/mode=2 19 | compress/lossy_quality=0.7 20 | compress/hdr_mode=0 21 | compress/normal_map=0 22 | flags/repeat=true 23 | flags/filter=false 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | stream=false 31 | size_limit=0 32 | detect_3d=false 33 | svg/scale=1.0 34 | -------------------------------------------------------------------------------- /sprites/vineBarProofOfConcept.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f8f5a1f9ce1fe85b0d1838c5b9043da81ed0043efd01d69758f64fec5b9f6d7e 3 | size 1153 4 | -------------------------------------------------------------------------------- /sprites/vineBarProofOfConcept.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/vineBarProofOfConcept.png-7b6f52454f3f958d85d8db3524fa6ca4.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://sprites/vineBarProofOfConcept.png" 10 | source_md5="30dd2d35aa5a1198595f8098d42f2de2" 11 | 12 | dest_files=[ "res://.import/vineBarProofOfConcept.png-7b6f52454f3f958d85d8db3524fa6ca4.stex" ] 13 | dest_md5="eff5f60fb3a922c4a5d6efdc9f1dd2fe" 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/normal_map=0 21 | flags/repeat=0 22 | flags/filter=true 23 | flags/mipmaps=false 24 | flags/anisotropic=false 25 | flags/srgb=2 26 | process/fix_alpha_border=true 27 | process/premult_alpha=false 28 | process/HDR_as_SRGB=false 29 | stream=false 30 | size_limit=0 31 | detect_3d=true 32 | svg/scale=1.0 33 | -------------------------------------------------------------------------------- /sprites/vine_rope.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:aea1d6e6cb97353743f53609e77802d9c6520ab30c659a24607986d6da3331f6 3 | size 975 4 | -------------------------------------------------------------------------------- /sprites/vine_rope.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/vine_rope.png-78e1b423ae51f878372bbf0eeb57023e.stex" 6 | 7 | [deps] 8 | 9 | source_file="res://sprites/vine_rope.png" 10 | source_md5="162374b8159ca60a66b3423b19295ead" 11 | 12 | dest_files=[ "res://.import/vine_rope.png-78e1b423ae51f878372bbf0eeb57023e.stex" ] 13 | dest_md5="58b5d82a656b106478bba5d02afc3080" 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/normal_map=0 21 | flags/repeat=0 22 | flags/filter=true 23 | flags/mipmaps=false 24 | flags/anisotropic=false 25 | flags/srgb=2 26 | process/fix_alpha_border=true 27 | process/premult_alpha=false 28 | process/HDR_as_SRGB=false 29 | stream=false 30 | size_limit=0 31 | detect_3d=true 32 | svg/scale=1.0 33 | -------------------------------------------------------------------------------- /test.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" format=2] 2 | 3 | [resource] 4 | 5 | resource_name = "test" 6 | class_name = "test" 7 | 8 | -------------------------------------------------------------------------------- /test.vs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/test.vs -------------------------------------------------------------------------------- /tiles.meshlib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlewit/VineCrawler/fbcb2419991951eeaaf74c7dbddb53824e152c95/tiles.meshlib -------------------------------------------------------------------------------- /untitled.mtl: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6bef05ffe22bf1918c479eecec9be20ed7f98455e6ebcebdcc14e5fc88ce8546 3 | size 47 4 | --------------------------------------------------------------------------------