feat: implemented combat basics
This commit is contained in:
		
							parent
							
								
									fdea9b3fdc
								
							
						
					
					
						commit
						c322abdaa4
					
				
							
								
								
									
										22
									
								
								godot/.gdb_history
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								godot/.gdb_history
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					set args -e
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					set args
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					set args -e
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					set args
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					set args
 | 
				
			||||||
 | 
					set args -e
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					set args
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					set args -e
 | 
				
			||||||
 | 
					r
 | 
				
			||||||
 | 
					q
 | 
				
			||||||
| 
						 | 
					@ -1,11 +1,18 @@
 | 
				
			||||||
[gd_scene load_steps=3 format=3 uid="uid://c2kiuk2yxdlfr"]
 | 
					[gd_scene load_steps=4 format=3 uid="uid://c2kiuk2yxdlfr"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://1kr3qqan3trk" path="res://objects/player.tscn" id="1_7kr4i"]
 | 
					[ext_resource type="PackedScene" uid="uid://1kr3qqan3trk" path="res://objects/player.tscn" id="1_7kr4i"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://dm3355tbkvx24" path="res://objects/section_2.tscn" id="2_og5hb"]
 | 
					[ext_resource type="PackedScene" uid="uid://dm3355tbkvx24" path="res://objects/section_2.tscn" id="2_og5hb"]
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://0fykl1mw3c12" path="res://objects/enemy.tscn" id="3_ppe0x"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Boot" type="Node3D"]
 | 
					[node name="Boot" type="Node3D"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Player" parent="." instance=ExtResource("1_7kr4i")]
 | 
					 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.156536, 2.63439, 1.64616)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Environment" parent="." instance=ExtResource("2_og5hb")]
 | 
					[node name="Environment" parent="." instance=ExtResource("2_og5hb")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Enemy" parent="." instance=ExtResource("3_ppe0x")]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.321304, 0.548716, -10.4406)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Enemy2" parent="." instance=ExtResource("3_ppe0x")]
 | 
				
			||||||
 | 
					transform = Transform3D(0.47095, 0, -0.88216, 0, 1, 0, 0.88216, 0, 0.47095, 8.63104, 0.487608, -15.5861)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Player" parent="." instance=ExtResource("1_7kr4i")]
 | 
				
			||||||
 | 
					transform = Transform3D(0.0816776, 0, 0.996659, 0, 1, 0, -0.996659, 0, 0.0816776, -2.58966, 1.45175, -2.77265)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -23,4 +23,4 @@ compress/channel_pack=1
 | 
				
			||||||
mipmaps/generate=false
 | 
					mipmaps/generate=false
 | 
				
			||||||
mipmaps/limit=-1
 | 
					mipmaps/limit=-1
 | 
				
			||||||
slices/horizontal=1
 | 
					slices/horizontal=1
 | 
				
			||||||
slices/vertical=24
 | 
					slices/vertical=28
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								godot/models/animations/Fall_die.res
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/models/animations/Fall_die.res
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										215
									
								
								godot/models/animations/character_tree.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										215
									
								
								godot/models/animations/character_tree.tres
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,215 @@
 | 
				
			||||||
 | 
					[gd_resource type="AnimationNodeBlendTree" load_steps=39 format=3 uid="uid://c7rxfpfy7vt1b"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ukhqm"]
 | 
				
			||||||
 | 
					animation = &"Aim"
 | 
				
			||||||
 | 
					play_mode = 1
 | 
				
			||||||
 | 
					use_custom_timeline = true
 | 
				
			||||||
 | 
					timeline_length = 0.4
 | 
				
			||||||
 | 
					stretch_time_scale = false
 | 
				
			||||||
 | 
					start_offset = 0.0
 | 
				
			||||||
 | 
					loop_mode = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nhlru"]
 | 
				
			||||||
 | 
					animation = &"Aim"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8rbkq"]
 | 
				
			||||||
 | 
					animation = &"Aim_Fire"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ugv1e"]
 | 
				
			||||||
 | 
					animation = &"RESET"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds004"]
 | 
				
			||||||
 | 
					animation = &"RESET"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_axx41"]
 | 
				
			||||||
 | 
					animation = &"Run_forward"
 | 
				
			||||||
 | 
					use_custom_timeline = true
 | 
				
			||||||
 | 
					timeline_length = 0.633
 | 
				
			||||||
 | 
					stretch_time_scale = true
 | 
				
			||||||
 | 
					start_offset = 0.0
 | 
				
			||||||
 | 
					loop_mode = 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_aunq0"]
 | 
				
			||||||
 | 
					filter_enabled = true
 | 
				
			||||||
 | 
					filters = ["skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:Neck", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:spine.002", "skeleton_character/Skeleton3D:spine.003", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hmklb"]
 | 
				
			||||||
 | 
					graph_offset = Vector2(-813.273, 105.409)
 | 
				
			||||||
 | 
					nodes/Rest/node = SubResource("AnimationNodeAnimation_ds004")
 | 
				
			||||||
 | 
					nodes/Rest/position = Vector2(-160, 160)
 | 
				
			||||||
 | 
					nodes/Run/node = SubResource("AnimationNodeAnimation_axx41")
 | 
				
			||||||
 | 
					nodes/Run/position = Vector2(-160, 380)
 | 
				
			||||||
 | 
					nodes/Speed/node = SubResource("AnimationNodeBlend2_aunq0")
 | 
				
			||||||
 | 
					nodes/Speed/position = Vector2(80, 140)
 | 
				
			||||||
 | 
					nodes/output/position = Vector2(320, 140)
 | 
				
			||||||
 | 
					node_connections = [&"Speed", 0, &"Rest", &"Speed", 1, &"Run", &"output", 0, &"Speed"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_4hmb8"]
 | 
				
			||||||
 | 
					filter_enabled = true
 | 
				
			||||||
 | 
					filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:Neck", "Character/Skeleton3D:PoleTarget.Foot.L", "Character/Skeleton3D:PoleTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:spine.003", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_5n7ai"]
 | 
				
			||||||
 | 
					animation = &"RESET"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_pwhry"]
 | 
				
			||||||
 | 
					animation = &"Turn_right"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_rasdy"]
 | 
				
			||||||
 | 
					animation = &"Turn_left"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_xgea8"]
 | 
				
			||||||
 | 
					animation = &"RESET"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_kxn5j"]
 | 
				
			||||||
 | 
					blend_point_0/node = SubResource("AnimationNodeAnimation_pwhry")
 | 
				
			||||||
 | 
					blend_point_0/pos = -1.0
 | 
				
			||||||
 | 
					blend_point_1/node = SubResource("AnimationNodeAnimation_rasdy")
 | 
				
			||||||
 | 
					blend_point_1/pos = 1.0
 | 
				
			||||||
 | 
					blend_point_2/node = SubResource("AnimationNodeAnimation_xgea8")
 | 
				
			||||||
 | 
					blend_point_2/pos = 0.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_p0hk7"]
 | 
				
			||||||
 | 
					graph_offset = Vector2(-480.5, 90)
 | 
				
			||||||
 | 
					nodes/BoneMask/node = SubResource("AnimationNodeBlend2_4hmb8")
 | 
				
			||||||
 | 
					nodes/BoneMask/position = Vector2(140, 140)
 | 
				
			||||||
 | 
					nodes/Rest/node = SubResource("AnimationNodeAnimation_5n7ai")
 | 
				
			||||||
 | 
					nodes/Rest/position = Vector2(-100, 160)
 | 
				
			||||||
 | 
					nodes/Turn/node = SubResource("AnimationNodeBlendSpace1D_kxn5j")
 | 
				
			||||||
 | 
					nodes/Turn/position = Vector2(-100, 380)
 | 
				
			||||||
 | 
					nodes/output/position = Vector2(380, 140)
 | 
				
			||||||
 | 
					node_connections = [&"BoneMask", 0, &"Rest", &"BoneMask", 1, &"Turn", &"output", 0, &"BoneMask"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7ceai"]
 | 
				
			||||||
 | 
					animation = &"RESET"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_rb1jd"]
 | 
				
			||||||
 | 
					filter_enabled = true
 | 
				
			||||||
 | 
					filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R", "skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_psu0r"]
 | 
				
			||||||
 | 
					animation = &"Walk_forward"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_2mbyh"]
 | 
				
			||||||
 | 
					graph_offset = Vector2(-724.58, 74.5681)
 | 
				
			||||||
 | 
					nodes/Base/node = SubResource("AnimationNodeAnimation_7ceai")
 | 
				
			||||||
 | 
					nodes/Base/position = Vector2(-120, 120)
 | 
				
			||||||
 | 
					nodes/Speed/node = SubResource("AnimationNodeBlend2_rb1jd")
 | 
				
			||||||
 | 
					nodes/Speed/position = Vector2(100, 120)
 | 
				
			||||||
 | 
					nodes/Walk/node = SubResource("AnimationNodeAnimation_psu0r")
 | 
				
			||||||
 | 
					nodes/Walk/position = Vector2(-140, 300)
 | 
				
			||||||
 | 
					node_connections = [&"Speed", 0, &"Base", &"Speed", 1, &"Walk", &"output", 0, &"Speed"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4lybd"]
 | 
				
			||||||
 | 
					switch_mode = 2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "!aim_weapon"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5aafd"]
 | 
				
			||||||
 | 
					xfade_time = 0.3
 | 
				
			||||||
 | 
					switch_mode = 2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "get_input_direction() > 0.f"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8f4gl"]
 | 
				
			||||||
 | 
					priority = 2
 | 
				
			||||||
 | 
					switch_mode = 2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "get_fire_weapon()"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xnat3"]
 | 
				
			||||||
 | 
					reset = false
 | 
				
			||||||
 | 
					switch_mode = 2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_12bos"]
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "get_input_directions().y < -0.5"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n0ndr"]
 | 
				
			||||||
 | 
					priority = 2
 | 
				
			||||||
 | 
					switch_mode = 2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0wc5e"]
 | 
				
			||||||
 | 
					xfade_time = 0.2
 | 
				
			||||||
 | 
					priority = 2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "!is_walking || walk_speed <= 0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4hisb"]
 | 
				
			||||||
 | 
					xfade_time = 0.2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "is_walking && walk_speed > 0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bmty6"]
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kyd6p"]
 | 
				
			||||||
 | 
					xfade_time = 0.05
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "aim_weapon"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_w5kob"]
 | 
				
			||||||
 | 
					switch_mode = 2
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g0i3x"]
 | 
				
			||||||
 | 
					xfade_time = 0.4
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "get_is_running()
 | 
				
			||||||
 | 
					"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ocffv"]
 | 
				
			||||||
 | 
					xfade_time = 0.3
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "get_is_running()
 | 
				
			||||||
 | 
					"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_h0my5"]
 | 
				
			||||||
 | 
					xfade_time = 0.4
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "!get_is_running()"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nymcr"]
 | 
				
			||||||
 | 
					xfade_time = 0.3
 | 
				
			||||||
 | 
					advance_mode = 2
 | 
				
			||||||
 | 
					advance_expression = "!get_is_running()"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7smdg"]
 | 
				
			||||||
 | 
					"states/Aim Down [aim]/node" = SubResource("AnimationNodeAnimation_ukhqm")
 | 
				
			||||||
 | 
					"states/Aim Down [aim]/position" = Vector2(666.26, 226.767)
 | 
				
			||||||
 | 
					"states/Aim [aim] [turn]/node" = SubResource("AnimationNodeAnimation_nhlru")
 | 
				
			||||||
 | 
					"states/Aim [aim] [turn]/position" = Vector2(731.26, 94.3447)
 | 
				
			||||||
 | 
					states/End/position = Vector2(195.182, 94.3447)
 | 
				
			||||||
 | 
					"states/Fire [aim]/node" = SubResource("AnimationNodeAnimation_8rbkq")
 | 
				
			||||||
 | 
					"states/Fire [aim]/position" = Vector2(731.26, 14.954)
 | 
				
			||||||
 | 
					"states/RESET To Aim/node" = SubResource("AnimationNodeAnimation_ugv1e")
 | 
				
			||||||
 | 
					"states/RESET To Aim/position" = Vector2(566.993, 94.3447)
 | 
				
			||||||
 | 
					states/Run/node = SubResource("AnimationNodeBlendTree_hmklb")
 | 
				
			||||||
 | 
					states/Run/position = Vector2(297.422, 226.767)
 | 
				
			||||||
 | 
					states/Start/position = Vector2(383.995, 14.954)
 | 
				
			||||||
 | 
					"states/Stationary [turn]/node" = SubResource("AnimationNodeBlendTree_p0hk7")
 | 
				
			||||||
 | 
					"states/Stationary [turn]/position" = Vector2(383.995, 94.3447)
 | 
				
			||||||
 | 
					"states/Walk [turn]/node" = SubResource("AnimationNodeBlendTree_2mbyh")
 | 
				
			||||||
 | 
					"states/Walk [turn]/position" = Vector2(477.995, 226.767)
 | 
				
			||||||
 | 
					transitions = ["Aim [aim] [turn]", "Aim Down [aim]", SubResource("AnimationNodeStateMachineTransition_4lybd"), "Aim Down [aim]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_5aafd"), "Aim [aim] [turn]", "Fire [aim]", SubResource("AnimationNodeStateMachineTransition_8f4gl"), "Fire [aim]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_xnat3"), "Walk [turn]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_12bos"), "Aim Down [aim]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_n0ndr"), "Walk [turn]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_0wc5e"), "Stationary [turn]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_4hisb"), "Start", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_bmty6"), "Stationary [turn]", "RESET To Aim", SubResource("AnimationNodeStateMachineTransition_kyd6p"), "RESET To Aim", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_w5kob"), "Stationary [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_g0i3x"), "Walk [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_ocffv"), "Run", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_h0my5"), "Run", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_nymcr")]
 | 
				
			||||||
 | 
					graph_offset = Vector2(162.422, 4.345)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_au62i"]
 | 
				
			||||||
 | 
					animation = &"Fall_die"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_av3pm"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="AnimationNodeTimeSeek" id="AnimationNodeTimeSeek_p56ym"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					nodes/Actions/node = SubResource("AnimationNodeStateMachine_7smdg")
 | 
				
			||||||
 | 
					nodes/Actions/position = Vector2(0, 140)
 | 
				
			||||||
 | 
					nodes/Death/node = SubResource("AnimationNodeAnimation_au62i")
 | 
				
			||||||
 | 
					nodes/Death/position = Vector2(-200, 300)
 | 
				
			||||||
 | 
					nodes/DeathBlend/node = SubResource("AnimationNodeBlend2_av3pm")
 | 
				
			||||||
 | 
					nodes/DeathBlend/position = Vector2(180, 140)
 | 
				
			||||||
 | 
					nodes/DeathSeek/node = SubResource("AnimationNodeTimeSeek_p56ym")
 | 
				
			||||||
 | 
					nodes/DeathSeek/position = Vector2(20, 300)
 | 
				
			||||||
 | 
					nodes/output/position = Vector2(327.273, 163.636)
 | 
				
			||||||
 | 
					node_connections = [&"DeathBlend", 0, &"Actions", &"DeathBlend", 1, &"DeathSeek", &"DeathSeek", 0, &"Death", &"output", 0, &"DeathBlend"]
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
version https://git-lfs.github.com/spec/v1
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
oid sha256:74d3e24b17ef60e247aed9ed2a48c9cad95b981312439e0573f88aa587a54531
 | 
					oid sha256:915183045de306484168edefdd321c4b0fcf4ba83348536102a4d748c98b7f61
 | 
				
			||||||
size 2017096
 | 
					size 2372336
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										3
									
								
								godot/models/character_muzzleflash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								godot/models/character_muzzleflash.png
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
 | 
					oid sha256:8998ebcf9b8147bbe4edd71e40feac24f0ed4296c54c4f3219461c77de8a6b7c
 | 
				
			||||||
 | 
					size 218335
 | 
				
			||||||
							
								
								
									
										38
									
								
								godot/models/character_muzzleflash.png.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								godot/models/character_muzzleflash.png.import
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,38 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://cr6iscmse3pja"
 | 
				
			||||||
 | 
					path.s3tc="res://.godot/imported/character_muzzleflash.png-982b5cc9aafb2911f8e3e2752c795058.s3tc.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"imported_formats": ["s3tc_bptc"],
 | 
				
			||||||
 | 
					"vram_texture": true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					generator_parameters={
 | 
				
			||||||
 | 
					"md5": "d02c4037a6c9c0bec62182aef0071f85"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://models/character_muzzleflash.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/character_muzzleflash.png-982b5cc9aafb2911f8e3e2752c795058.s3tc.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=2
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=true
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=0
 | 
				
			||||||
							
								
								
									
										16
									
								
								godot/models/materials/Gunshot.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								godot/models/materials/Gunshot.tres
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://38dxpo5acw13"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://cr6iscmse3pja" path="res://models/character_muzzleflash.png" id="1_2oiaa"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					resource_name = "Gunshot"
 | 
				
			||||||
 | 
					transparency = 3
 | 
				
			||||||
 | 
					alpha_hash_scale = 1.0
 | 
				
			||||||
 | 
					alpha_antialiasing_mode = 1
 | 
				
			||||||
 | 
					alpha_antialiasing_edge = 0.3
 | 
				
			||||||
 | 
					cull_mode = 2
 | 
				
			||||||
 | 
					shading_mode = 0
 | 
				
			||||||
 | 
					diffuse_mode = 3
 | 
				
			||||||
 | 
					specular_mode = 1
 | 
				
			||||||
 | 
					albedo_texture = ExtResource("1_2oiaa")
 | 
				
			||||||
 | 
					texture_repeat = false
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
version https://git-lfs.github.com/spec/v1
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
oid sha256:5c546fdfeadb40663f4ab84cd2711f94e1e7ef183f5faf5c09e27c54210d0109
 | 
					oid sha256:9cd36b8939c5584f1e8188eb4c1bdbc3d9d9455441b8937517a2cc150bb9c815
 | 
				
			||||||
size 8134928
 | 
					size 8134804
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
version https://git-lfs.github.com/spec/v1
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
oid sha256:ba49beee1728494f58e21f2d9e8ea0aad61bb5cef5c6b1f4ed5fbbf99bcdddc5
 | 
					oid sha256:2e2e49d4de4e0d1c9f0804741cc656f9eff22b0f4dfb0e12c2e10d3ac51c6f53
 | 
				
			||||||
size 7717648
 | 
					size 7717900
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
version https://git-lfs.github.com/spec/v1
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
oid sha256:906060860d57464b1e1a4b1a9db9ec50de73b2acd1255e3cb432480a6784d50c
 | 
					oid sha256:467530e034f27b891b1dd2010ee2beb3a6544ca04244e66054bec547136ff5b9
 | 
				
			||||||
size 7715712
 | 
					size 7720232
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										126
									
								
								godot/objects/character_model_base.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								godot/objects/character_model_base.tscn
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,126 @@
 | 
				
			||||||
 | 
					[gd_scene load_steps=3 format=3 uid="uid://bnr6lab7heo8e"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://vub54xgk5n0h" path="res://models/character.glb" id="1_vq0u3"]
 | 
				
			||||||
 | 
					[ext_resource type="AnimationNodeBlendTree" uid="uid://c7rxfpfy7vt1b" path="res://models/animations/character_tree.tres" id="2_wdyfc"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CharacterModel" instance=ExtResource("1_vq0u3")]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Skeleton3D" parent="skeleton_character" index="0"]
 | 
				
			||||||
 | 
					bones/0/rotation = Quaternion(1.12928e-22, 1, 2.98023e-08, -1.94707e-07)
 | 
				
			||||||
 | 
					bones/1/position = Vector3(3.28472e-17, 0.826102, -2.26306e-09)
 | 
				
			||||||
 | 
					bones/1/rotation = Quaternion(-0.0189874, -6.30661e-09, -1.08732e-09, 0.99982)
 | 
				
			||||||
 | 
					bones/2/rotation = Quaternion(0.0262842, 8.66579e-09, 1.56723e-09, 0.999655)
 | 
				
			||||||
 | 
					bones/3/rotation = Quaternion(-0.013812, -0.124595, 8.42949e-05, 0.992112)
 | 
				
			||||||
 | 
					bones/4/rotation = Quaternion(0.0100466, -3.89644e-10, 6.78268e-10, 0.99995)
 | 
				
			||||||
 | 
					bones/5/rotation = Quaternion(-0.0233085, 0.0669743, -0.00156502, 0.997481)
 | 
				
			||||||
 | 
					bones/6/rotation = Quaternion(0.623077, 0.672557, 0.307599, -0.254607)
 | 
				
			||||||
 | 
					bones/7/rotation = Quaternion(-0.311931, -0.528262, 0.360764, 0.702487)
 | 
				
			||||||
 | 
					bones/8/rotation = Quaternion(0.385362, 0.19105, 0.552643, 0.71385)
 | 
				
			||||||
 | 
					bones/9/rotation = Quaternion(0.204715, 0.0914037, 0.275611, 0.93476)
 | 
				
			||||||
 | 
					bones/10/rotation = Quaternion(-0.160687, -0.0459478, -0.0475321, 0.984789)
 | 
				
			||||||
 | 
					bones/10/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/11/rotation = Quaternion(-0.0305181, -0.0130498, -0.0216154, 0.999215)
 | 
				
			||||||
 | 
					bones/11/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/12/rotation = Quaternion(0.00872478, 0.00565776, 0.00131029, 0.999945)
 | 
				
			||||||
 | 
					bones/12/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/13/rotation = Quaternion(-0.617934, -0.0462445, 0.180663, 0.763793)
 | 
				
			||||||
 | 
					bones/13/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/14/rotation = Quaternion(-0.23045, 0.0743406, 0.160693, 0.956841)
 | 
				
			||||||
 | 
					bones/15/rotation = Quaternion(-0.541263, -0.00752764, 0.238029, 0.806424)
 | 
				
			||||||
 | 
					bones/15/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/16/rotation = Quaternion(-0.611023, -0.262913, 0.402215, 0.629087)
 | 
				
			||||||
 | 
					bones/16/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/17/rotation = Quaternion(0.0158023, 0.0368156, 0.177499, 0.983305)
 | 
				
			||||||
 | 
					bones/18/rotation = Quaternion(-0.115784, 0.0786986, 0.503797, 0.852402)
 | 
				
			||||||
 | 
					bones/19/rotation = Quaternion(-0.77808, 0.139756, 0.0140335, 0.612261)
 | 
				
			||||||
 | 
					bones/19/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/20/rotation = Quaternion(-0.0923591, 0.0238578, 0.0736642, 0.992711)
 | 
				
			||||||
 | 
					bones/21/rotation = Quaternion(-0.193467, 0.101022, 0.0447897, 0.974864)
 | 
				
			||||||
 | 
					bones/21/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/22/rotation = Quaternion(-0.293695, -0.10649, 0.259809, 0.91373)
 | 
				
			||||||
 | 
					bones/22/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/23/rotation = Quaternion(-0.0310475, -0.0162324, -0.00151601, 0.999385)
 | 
				
			||||||
 | 
					bones/24/rotation = Quaternion(0.140362, -0.0289769, -0.195164, 0.970242)
 | 
				
			||||||
 | 
					bones/25/rotation = Quaternion(0.585184, -0.476496, -0.473244, -0.454479)
 | 
				
			||||||
 | 
					bones/25/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/26/rotation = Quaternion(-0.449756, 0.301541, -0.311322, 0.780943)
 | 
				
			||||||
 | 
					bones/27/rotation = Quaternion(-0.122233, -0.135947, -0.565028, 0.804562)
 | 
				
			||||||
 | 
					bones/27/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/28/rotation = Quaternion(0.155387, -0.432411, -0.521703, 0.71882)
 | 
				
			||||||
 | 
					bones/29/rotation = Quaternion(-0.0486369, 0.0590467, -0.0759536, 0.994173)
 | 
				
			||||||
 | 
					bones/30/rotation = Quaternion(-0.0305179, 0.0130499, 0.0216153, 0.999215)
 | 
				
			||||||
 | 
					bones/30/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/31/rotation = Quaternion(-0.518356, -0.00412336, -0.00408933, 0.855145)
 | 
				
			||||||
 | 
					bones/32/rotation = Quaternion(-0.290993, 0.0788459, 0.0248015, 0.953148)
 | 
				
			||||||
 | 
					bones/33/rotation = Quaternion(-0.419789, -0.067382, -0.039477, 0.904256)
 | 
				
			||||||
 | 
					bones/33/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/34/rotation = Quaternion(-0.266884, 0.00530696, 0.00065886, 0.963714)
 | 
				
			||||||
 | 
					bones/34/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100307, 0.880654)
 | 
				
			||||||
 | 
					bones/36/rotation = Quaternion(-0.345783, -0.0439312, -0.261553, 0.900052)
 | 
				
			||||||
 | 
					bones/36/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/37/rotation = Quaternion(-0.0107008, 0.00769689, 0.00365465, 0.999906)
 | 
				
			||||||
 | 
					bones/37/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906524)
 | 
				
			||||||
 | 
					bones/39/rotation = Quaternion(-0.399909, -0.0921328, -0.130163, 0.902575)
 | 
				
			||||||
 | 
					bones/40/rotation = Quaternion(-0.0125688, 0.0114118, 0.00134584, 0.999855)
 | 
				
			||||||
 | 
					bones/40/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/41/rotation = Quaternion(-0.0497163, 0.0839878, -0.166226, 0.981246)
 | 
				
			||||||
 | 
					bones/42/rotation = Quaternion(-0.0310476, 0.0162325, 0.00151597, 0.999385)
 | 
				
			||||||
 | 
					bones/43/rotation = Quaternion(-0.00109126, -0.0104143, 0.0283538, 0.999543)
 | 
				
			||||||
 | 
					bones/44/position = Vector3(0.16719, 0.195796, -0.0454406)
 | 
				
			||||||
 | 
					bones/44/rotation = Quaternion(-0.610992, 0.0971646, 0.14821, 0.771545)
 | 
				
			||||||
 | 
					bones/45/rotation = Quaternion(-0.82326, 4.1804e-09, -1.03579e-07, 0.567665)
 | 
				
			||||||
 | 
					bones/46/position = Vector3(8.07956e-09, 0.0363644, 0.0392254)
 | 
				
			||||||
 | 
					bones/46/rotation = Quaternion(-0.00112372, -6.23921e-08, 6.44731e-09, 0.999999)
 | 
				
			||||||
 | 
					bones/48/rotation = Quaternion(0.706312, -2.22455e-08, 6.70979e-08, 0.707901)
 | 
				
			||||||
 | 
					bones/48/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/49/position = Vector3(0.0228929, -0.0282939, -0.00824324)
 | 
				
			||||||
 | 
					bones/49/rotation = Quaternion(-0.112129, 0.585203, -0.155744, 0.78785)
 | 
				
			||||||
 | 
					bones/49/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/50/position = Vector3(-0.0246244, 0.246628, -0.0197923)
 | 
				
			||||||
 | 
					bones/50/rotation = Quaternion(0.31578, 0.920316, 0.115311, -0.200014)
 | 
				
			||||||
 | 
					bones/50/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/51/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.015225)
 | 
				
			||||||
 | 
					bones/51/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
 | 
				
			||||||
 | 
					bones/52/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
 | 
				
			||||||
 | 
					bones/54/rotation = Quaternion(0.997309, 0.00549226, -0.0715033, -0.015225)
 | 
				
			||||||
 | 
					bones/54/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
 | 
				
			||||||
 | 
					bones/55/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
 | 
				
			||||||
 | 
					bones/56/scale = Vector3(1, 1, 1)
 | 
				
			||||||
 | 
					bones/57/scale = Vector3(0, 0, 0)
 | 
				
			||||||
 | 
					bones/58/rotation = Quaternion(-2.99921e-13, 0.707107, 0.707107, -2.99921e-13)
 | 
				
			||||||
 | 
					bones/59/rotation = Quaternion(2.01446e-13, 0.707107, 0.707107, 2.01446e-13)
 | 
				
			||||||
 | 
					bones/60/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
 | 
				
			||||||
 | 
					bones/61/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
 | 
				
			||||||
 | 
					bones/62/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
 | 
				
			||||||
 | 
					bones/63/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="BoneAttachment3D" type="BoneAttachment3D" parent="skeleton_character/Skeleton3D" index="3"]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.937186, 0.347435, 0.0311762, 0.0973187, 0.17459, 0.97982, 0.33498, 0.921308, -0.197435, -0.16719, 1.02003, 0.0528419)
 | 
				
			||||||
 | 
					bone_name = "rifle"
 | 
				
			||||||
 | 
					bone_idx = 44
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="HitscanMuzzle" type="HitscanMuzzle" parent="skeleton_character/Skeleton3D/BoneAttachment3D" index="0"]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.37487e-08, 0.5644, 0.0479187)
 | 
				
			||||||
 | 
					enabled = false
 | 
				
			||||||
 | 
					target_position = Vector3(0, 15, 0)
 | 
				
			||||||
 | 
					collision_mask = 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="AnimationPlayer" parent="." index="1"]
 | 
				
			||||||
 | 
					root_motion_track = NodePath("skeleton_character/Skeleton3D:root")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="AnimationTree" type="PlayerAnimTree" parent="." index="2"]
 | 
				
			||||||
 | 
					root_motion_track = NodePath("skeleton_character/Skeleton3D:root")
 | 
				
			||||||
 | 
					tree_root = ExtResource("2_wdyfc")
 | 
				
			||||||
 | 
					anim_player = NodePath("../AnimationPlayer")
 | 
				
			||||||
 | 
					parameters/Actions/Run/Speed/blend_amount = 0
 | 
				
			||||||
 | 
					"parameters/Actions/Stationary [turn]/BoneMask/blend_amount" = 0
 | 
				
			||||||
 | 
					"parameters/Actions/Stationary [turn]/Turn/blend_position" = 0
 | 
				
			||||||
 | 
					"parameters/Actions/Walk [turn]/Speed/blend_amount" = 0
 | 
				
			||||||
 | 
					parameters/DeathBlend/blend_amount = 0
 | 
				
			||||||
 | 
					parameters/DeathSeek/seek_request = -1.0
 | 
				
			||||||
							
								
								
									
										80
									
								
								godot/objects/enemy.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								godot/objects/enemy.tscn
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,80 @@
 | 
				
			||||||
 | 
					[gd_scene load_steps=3 format=3 uid="uid://0fykl1mw3c12"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="PackedScene" uid="uid://bnr6lab7heo8e" path="res://objects/character_model_base.tscn" id="1_i7aop"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3tduq"]
 | 
				
			||||||
 | 
					radius = 0.370388
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Enemy" type="Enemy"]
 | 
				
			||||||
 | 
					collision_layer = 3
 | 
				
			||||||
 | 
					collision_mask = 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CharacterModel" parent="." instance=ExtResource("1_i7aop")]
 | 
				
			||||||
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="Skeleton3D" parent="CharacterModel/skeleton_character" index="0"]
 | 
				
			||||||
 | 
					bones/0/rotation = Quaternion(1.12928e-22, 1, 2.98023e-08, -1.94707e-07)
 | 
				
			||||||
 | 
					bones/1/position = Vector3(3.28472e-17, 0.826102, -2.26306e-09)
 | 
				
			||||||
 | 
					bones/1/rotation = Quaternion(-0.0189874, -6.30661e-09, -1.08732e-09, 0.99982)
 | 
				
			||||||
 | 
					bones/2/rotation = Quaternion(0.0262842, 8.66579e-09, 1.56723e-09, 0.999655)
 | 
				
			||||||
 | 
					bones/3/rotation = Quaternion(-0.013812, -0.124595, 8.42949e-05, 0.992112)
 | 
				
			||||||
 | 
					bones/4/rotation = Quaternion(0.0100466, -3.89644e-10, 6.78268e-10, 0.99995)
 | 
				
			||||||
 | 
					bones/5/rotation = Quaternion(-0.0233085, 0.0669743, -0.00156502, 0.997481)
 | 
				
			||||||
 | 
					bones/6/rotation = Quaternion(0.623077, 0.672557, 0.307599, -0.254607)
 | 
				
			||||||
 | 
					bones/7/rotation = Quaternion(-0.311931, -0.528262, 0.360764, 0.702487)
 | 
				
			||||||
 | 
					bones/8/rotation = Quaternion(0.385362, 0.19105, 0.552643, 0.71385)
 | 
				
			||||||
 | 
					bones/9/rotation = Quaternion(0.204715, 0.0914037, 0.275611, 0.93476)
 | 
				
			||||||
 | 
					bones/10/rotation = Quaternion(-0.160687, -0.0459478, -0.0475321, 0.984789)
 | 
				
			||||||
 | 
					bones/11/rotation = Quaternion(-0.0305181, -0.0130498, -0.0216154, 0.999215)
 | 
				
			||||||
 | 
					bones/12/rotation = Quaternion(0.00872478, 0.00565776, 0.00131029, 0.999945)
 | 
				
			||||||
 | 
					bones/13/rotation = Quaternion(-0.617934, -0.0462445, 0.180663, 0.763793)
 | 
				
			||||||
 | 
					bones/14/rotation = Quaternion(-0.23045, 0.0743406, 0.160693, 0.956841)
 | 
				
			||||||
 | 
					bones/15/rotation = Quaternion(-0.541263, -0.00752764, 0.238029, 0.806424)
 | 
				
			||||||
 | 
					bones/16/rotation = Quaternion(-0.611023, -0.262913, 0.402215, 0.629087)
 | 
				
			||||||
 | 
					bones/17/rotation = Quaternion(0.0158023, 0.0368156, 0.177499, 0.983305)
 | 
				
			||||||
 | 
					bones/18/rotation = Quaternion(-0.115784, 0.0786986, 0.503797, 0.852402)
 | 
				
			||||||
 | 
					bones/19/rotation = Quaternion(-0.77808, 0.139756, 0.0140335, 0.612261)
 | 
				
			||||||
 | 
					bones/20/rotation = Quaternion(-0.0923591, 0.0238578, 0.0736642, 0.992711)
 | 
				
			||||||
 | 
					bones/21/rotation = Quaternion(-0.193467, 0.101022, 0.0447897, 0.974864)
 | 
				
			||||||
 | 
					bones/22/rotation = Quaternion(-0.293695, -0.10649, 0.259809, 0.91373)
 | 
				
			||||||
 | 
					bones/23/rotation = Quaternion(-0.0310475, -0.0162324, -0.00151601, 0.999385)
 | 
				
			||||||
 | 
					bones/24/rotation = Quaternion(0.140362, -0.0289769, -0.195164, 0.970242)
 | 
				
			||||||
 | 
					bones/25/rotation = Quaternion(0.585184, -0.476496, -0.473244, -0.454479)
 | 
				
			||||||
 | 
					bones/26/rotation = Quaternion(-0.449756, 0.301541, -0.311322, 0.780943)
 | 
				
			||||||
 | 
					bones/27/rotation = Quaternion(-0.122233, -0.135947, -0.565028, 0.804562)
 | 
				
			||||||
 | 
					bones/28/rotation = Quaternion(0.155387, -0.432411, -0.521703, 0.71882)
 | 
				
			||||||
 | 
					bones/31/rotation = Quaternion(-0.518356, -0.00412336, -0.00408933, 0.855145)
 | 
				
			||||||
 | 
					bones/32/rotation = Quaternion(-0.290993, 0.0788459, 0.0248015, 0.953148)
 | 
				
			||||||
 | 
					bones/33/rotation = Quaternion(-0.419789, -0.067382, -0.039477, 0.904256)
 | 
				
			||||||
 | 
					bones/34/rotation = Quaternion(-0.266884, 0.00530696, 0.00065886, 0.963714)
 | 
				
			||||||
 | 
					bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100307, 0.880654)
 | 
				
			||||||
 | 
					bones/36/rotation = Quaternion(-0.345783, -0.0439312, -0.261553, 0.900052)
 | 
				
			||||||
 | 
					bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906524)
 | 
				
			||||||
 | 
					bones/39/rotation = Quaternion(-0.399909, -0.0921328, -0.130163, 0.902575)
 | 
				
			||||||
 | 
					bones/44/position = Vector3(0.16719, 0.195796, -0.0454406)
 | 
				
			||||||
 | 
					bones/44/rotation = Quaternion(-0.610992, 0.0971646, 0.14821, 0.771545)
 | 
				
			||||||
 | 
					bones/45/rotation = Quaternion(-0.82326, 4.1804e-09, -1.03579e-07, 0.567665)
 | 
				
			||||||
 | 
					bones/46/position = Vector3(8.07956e-09, 0.0363644, 0.0392254)
 | 
				
			||||||
 | 
					bones/46/rotation = Quaternion(-0.00112372, -6.23921e-08, 6.44731e-09, 0.999999)
 | 
				
			||||||
 | 
					bones/49/position = Vector3(0.0228929, -0.0282939, -0.00824324)
 | 
				
			||||||
 | 
					bones/49/rotation = Quaternion(-0.112129, 0.585203, -0.155744, 0.78785)
 | 
				
			||||||
 | 
					bones/50/position = Vector3(-0.0246244, 0.246628, -0.0197923)
 | 
				
			||||||
 | 
					bones/50/rotation = Quaternion(0.31578, 0.920316, 0.115311, -0.200014)
 | 
				
			||||||
 | 
					bones/51/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.015225)
 | 
				
			||||||
 | 
					bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
 | 
				
			||||||
 | 
					bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
 | 
				
			||||||
 | 
					bones/54/rotation = Quaternion(0.997309, 0.00549226, -0.0715033, -0.015225)
 | 
				
			||||||
 | 
					bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
 | 
				
			||||||
 | 
					bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
 | 
				
			||||||
 | 
					bones/58/rotation = Quaternion(-2.99921e-13, 0.707107, 0.707107, -2.99921e-13)
 | 
				
			||||||
 | 
					bones/59/rotation = Quaternion(2.01446e-13, 0.707107, 0.707107, 2.01446e-13)
 | 
				
			||||||
 | 
					bones/60/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
 | 
				
			||||||
 | 
					bones/61/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
 | 
				
			||||||
 | 
					bones/62/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
 | 
				
			||||||
 | 
					bones/63/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
 | 
				
			||||||
 | 
					shape = SubResource("CapsuleShape3D_3tduq")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[editable path="CharacterModel"]
 | 
				
			||||||
| 
						 | 
					@ -1,202 +1,6 @@
 | 
				
			||||||
[gd_scene load_steps=40 format=3 uid="uid://1kr3qqan3trk"]
 | 
					[gd_scene load_steps=4 format=3 uid="uid://1kr3qqan3trk"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://vub54xgk5n0h" path="res://models/character.glb" id="1_mi4co"]
 | 
					[ext_resource type="PackedScene" uid="uid://bnr6lab7heo8e" path="res://objects/character_model_base.tscn" id="1_cwt7u"]
 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ukhqm"]
 | 
					 | 
				
			||||||
animation = &"Aim"
 | 
					 | 
				
			||||||
play_mode = 1
 | 
					 | 
				
			||||||
use_custom_timeline = true
 | 
					 | 
				
			||||||
timeline_length = 0.4
 | 
					 | 
				
			||||||
stretch_time_scale = false
 | 
					 | 
				
			||||||
start_offset = 0.0
 | 
					 | 
				
			||||||
loop_mode = 0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_nhlru"]
 | 
					 | 
				
			||||||
animation = &"Aim"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_8rbkq"]
 | 
					 | 
				
			||||||
animation = &"Aim_Fire"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ugv1e"]
 | 
					 | 
				
			||||||
animation = &"RESET"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ds004"]
 | 
					 | 
				
			||||||
animation = &"RESET"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_axx41"]
 | 
					 | 
				
			||||||
animation = &"Run_forward"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_aunq0"]
 | 
					 | 
				
			||||||
filter_enabled = true
 | 
					 | 
				
			||||||
filters = ["skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:Neck", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:spine.002", "skeleton_character/Skeleton3D:spine.003", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hmklb"]
 | 
					 | 
				
			||||||
graph_offset = Vector2(-813.273, 105.409)
 | 
					 | 
				
			||||||
nodes/Rest/node = SubResource("AnimationNodeAnimation_ds004")
 | 
					 | 
				
			||||||
nodes/Rest/position = Vector2(-160, 160)
 | 
					 | 
				
			||||||
nodes/Run/node = SubResource("AnimationNodeAnimation_axx41")
 | 
					 | 
				
			||||||
nodes/Run/position = Vector2(-160, 380)
 | 
					 | 
				
			||||||
nodes/Speed/node = SubResource("AnimationNodeBlend2_aunq0")
 | 
					 | 
				
			||||||
nodes/Speed/position = Vector2(80, 140)
 | 
					 | 
				
			||||||
nodes/output/position = Vector2(320, 140)
 | 
					 | 
				
			||||||
node_connections = [&"Speed", 0, &"Rest", &"Speed", 1, &"Run", &"output", 0, &"Speed"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_4hmb8"]
 | 
					 | 
				
			||||||
filter_enabled = true
 | 
					 | 
				
			||||||
filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:Neck", "Character/Skeleton3D:PoleTarget.Foot.L", "Character/Skeleton3D:PoleTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:spine.003", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_5n7ai"]
 | 
					 | 
				
			||||||
animation = &"RESET"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_cmc4t"]
 | 
					 | 
				
			||||||
animation = &"Turn_right"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_wfckx"]
 | 
					 | 
				
			||||||
animation = &"Turn_left"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_6neek"]
 | 
					 | 
				
			||||||
animation = &"RESET"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlendSpace1D" id="AnimationNodeBlendSpace1D_kxn5j"]
 | 
					 | 
				
			||||||
blend_point_0/node = SubResource("AnimationNodeAnimation_cmc4t")
 | 
					 | 
				
			||||||
blend_point_0/pos = -1.0
 | 
					 | 
				
			||||||
blend_point_1/node = SubResource("AnimationNodeAnimation_wfckx")
 | 
					 | 
				
			||||||
blend_point_1/pos = 1.0
 | 
					 | 
				
			||||||
blend_point_2/node = SubResource("AnimationNodeAnimation_6neek")
 | 
					 | 
				
			||||||
blend_point_2/pos = 0.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_p0hk7"]
 | 
					 | 
				
			||||||
graph_offset = Vector2(-480.5, 90)
 | 
					 | 
				
			||||||
nodes/BoneMask/node = SubResource("AnimationNodeBlend2_4hmb8")
 | 
					 | 
				
			||||||
nodes/BoneMask/position = Vector2(140, 140)
 | 
					 | 
				
			||||||
nodes/Rest/node = SubResource("AnimationNodeAnimation_5n7ai")
 | 
					 | 
				
			||||||
nodes/Rest/position = Vector2(-100, 160)
 | 
					 | 
				
			||||||
nodes/Turn/node = SubResource("AnimationNodeBlendSpace1D_kxn5j")
 | 
					 | 
				
			||||||
nodes/Turn/position = Vector2(-100, 380)
 | 
					 | 
				
			||||||
nodes/output/position = Vector2(380, 140)
 | 
					 | 
				
			||||||
node_connections = [&"BoneMask", 0, &"Rest", &"BoneMask", 1, &"Turn", &"output", 0, &"BoneMask"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_7ceai"]
 | 
					 | 
				
			||||||
animation = &"RESET"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_rb1jd"]
 | 
					 | 
				
			||||||
filter_enabled = true
 | 
					 | 
				
			||||||
filters = ["Character/Skeleton3D:Foot.L", "Character/Skeleton3D:Foot.R", "Character/Skeleton3D:IKTarget.Foot.L", "Character/Skeleton3D:IKTarget.Foot.R", "Character/Skeleton3D:hip", "Character/Skeleton3D:lowerleg.L", "Character/Skeleton3D:lowerleg.R", "Character/Skeleton3D:root", "Character/Skeleton3D:upperleg.L", "Character/Skeleton3D:upperleg.R", "skeleton_character/Skeleton3D:Foot.L", "skeleton_character/Skeleton3D:Foot.R", "skeleton_character/Skeleton3D:IKTarget.Foot.L", "skeleton_character/Skeleton3D:IKTarget.Foot.R", "skeleton_character/Skeleton3D:PoleTarget.Foot.L", "skeleton_character/Skeleton3D:PoleTarget.Foot.R", "skeleton_character/Skeleton3D:hip", "skeleton_character/Skeleton3D:lowerleg.L", "skeleton_character/Skeleton3D:lowerleg.R", "skeleton_character/Skeleton3D:root", "skeleton_character/Skeleton3D:spine.001", "skeleton_character/Skeleton3D:upperleg.L", "skeleton_character/Skeleton3D:upperleg.R"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_psu0r"]
 | 
					 | 
				
			||||||
animation = &"Walk_forward"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_2mbyh"]
 | 
					 | 
				
			||||||
graph_offset = Vector2(-724.58, 74.5681)
 | 
					 | 
				
			||||||
nodes/Base/node = SubResource("AnimationNodeAnimation_7ceai")
 | 
					 | 
				
			||||||
nodes/Base/position = Vector2(-120, 120)
 | 
					 | 
				
			||||||
nodes/Speed/node = SubResource("AnimationNodeBlend2_rb1jd")
 | 
					 | 
				
			||||||
nodes/Speed/position = Vector2(100, 120)
 | 
					 | 
				
			||||||
nodes/Walk/node = SubResource("AnimationNodeAnimation_psu0r")
 | 
					 | 
				
			||||||
nodes/Walk/position = Vector2(-140, 300)
 | 
					 | 
				
			||||||
node_connections = [&"Speed", 0, &"Base", &"Speed", 1, &"Walk", &"output", 0, &"Speed"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4lybd"]
 | 
					 | 
				
			||||||
switch_mode = 2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "!aim_weapon"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_5aafd"]
 | 
					 | 
				
			||||||
xfade_time = 0.3
 | 
					 | 
				
			||||||
switch_mode = 2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "get_input_direction() > 0.f"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_8f4gl"]
 | 
					 | 
				
			||||||
priority = 2
 | 
					 | 
				
			||||||
switch_mode = 2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "get_fire_weapon()"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xnat3"]
 | 
					 | 
				
			||||||
reset = false
 | 
					 | 
				
			||||||
switch_mode = 2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_12bos"]
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "get_input_directions().y < -0.5"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_n0ndr"]
 | 
					 | 
				
			||||||
priority = 2
 | 
					 | 
				
			||||||
switch_mode = 2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_0wc5e"]
 | 
					 | 
				
			||||||
xfade_time = 0.2
 | 
					 | 
				
			||||||
priority = 2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "!is_walking || walk_speed <= 0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_4hisb"]
 | 
					 | 
				
			||||||
xfade_time = 0.2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "is_walking && walk_speed > 0.0"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_bmty6"]
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_kyd6p"]
 | 
					 | 
				
			||||||
xfade_time = 0.05
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "aim_weapon"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_w5kob"]
 | 
					 | 
				
			||||||
switch_mode = 2
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_g0i3x"]
 | 
					 | 
				
			||||||
xfade_time = 0.4
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "get_is_running()
 | 
					 | 
				
			||||||
"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ocffv"]
 | 
					 | 
				
			||||||
xfade_time = 0.3
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "get_is_running()
 | 
					 | 
				
			||||||
"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_h0my5"]
 | 
					 | 
				
			||||||
xfade_time = 0.4
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "!get_is_running()"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_nymcr"]
 | 
					 | 
				
			||||||
xfade_time = 0.3
 | 
					 | 
				
			||||||
advance_mode = 2
 | 
					 | 
				
			||||||
advance_expression = "!get_is_running()"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_7smdg"]
 | 
					 | 
				
			||||||
"states/Aim Down [aim]/node" = SubResource("AnimationNodeAnimation_ukhqm")
 | 
					 | 
				
			||||||
"states/Aim Down [aim]/position" = Vector2(666.26, 226.767)
 | 
					 | 
				
			||||||
"states/Aim [aim] [turn]/node" = SubResource("AnimationNodeAnimation_nhlru")
 | 
					 | 
				
			||||||
"states/Aim [aim] [turn]/position" = Vector2(731.26, 94.3447)
 | 
					 | 
				
			||||||
states/End/position = Vector2(195.182, 94.3447)
 | 
					 | 
				
			||||||
"states/Fire [aim]/node" = SubResource("AnimationNodeAnimation_8rbkq")
 | 
					 | 
				
			||||||
"states/Fire [aim]/position" = Vector2(731.26, 14.954)
 | 
					 | 
				
			||||||
"states/RESET To Aim/node" = SubResource("AnimationNodeAnimation_ugv1e")
 | 
					 | 
				
			||||||
"states/RESET To Aim/position" = Vector2(566.993, 94.3447)
 | 
					 | 
				
			||||||
states/Run/node = SubResource("AnimationNodeBlendTree_hmklb")
 | 
					 | 
				
			||||||
states/Run/position = Vector2(297.422, 226.767)
 | 
					 | 
				
			||||||
states/Start/position = Vector2(383.995, 14.954)
 | 
					 | 
				
			||||||
"states/Stationary [turn]/node" = SubResource("AnimationNodeBlendTree_p0hk7")
 | 
					 | 
				
			||||||
"states/Stationary [turn]/position" = Vector2(383.995, 94.3447)
 | 
					 | 
				
			||||||
"states/Walk [turn]/node" = SubResource("AnimationNodeBlendTree_2mbyh")
 | 
					 | 
				
			||||||
"states/Walk [turn]/position" = Vector2(477.995, 226.767)
 | 
					 | 
				
			||||||
transitions = ["Aim [aim] [turn]", "Aim Down [aim]", SubResource("AnimationNodeStateMachineTransition_4lybd"), "Aim Down [aim]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_5aafd"), "Aim [aim] [turn]", "Fire [aim]", SubResource("AnimationNodeStateMachineTransition_8f4gl"), "Fire [aim]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_xnat3"), "Walk [turn]", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_12bos"), "Aim Down [aim]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_n0ndr"), "Walk [turn]", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_0wc5e"), "Stationary [turn]", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_4hisb"), "Start", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_bmty6"), "Stationary [turn]", "RESET To Aim", SubResource("AnimationNodeStateMachineTransition_kyd6p"), "RESET To Aim", "Aim [aim] [turn]", SubResource("AnimationNodeStateMachineTransition_w5kob"), "Stationary [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_g0i3x"), "Walk [turn]", "Run", SubResource("AnimationNodeStateMachineTransition_ocffv"), "Run", "Stationary [turn]", SubResource("AnimationNodeStateMachineTransition_h0my5"), "Run", "Walk [turn]", SubResource("AnimationNodeStateMachineTransition_nymcr")]
 | 
					 | 
				
			||||||
graph_offset = Vector2(-139.078, -60.155)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_hiswf"]
 | 
					 | 
				
			||||||
nodes/Actions/node = SubResource("AnimationNodeStateMachine_7smdg")
 | 
					 | 
				
			||||||
nodes/Actions/position = Vector2(80, 140)
 | 
					 | 
				
			||||||
nodes/output/position = Vector2(327.273, 163.636)
 | 
					 | 
				
			||||||
node_connections = [&"output", 0, &"Actions"]
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ewsvd"]
 | 
					[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ewsvd"]
 | 
				
			||||||
radius = 0.370388
 | 
					radius = 0.370388
 | 
				
			||||||
| 
						 | 
					@ -205,121 +9,22 @@ radius = 0.370388
 | 
				
			||||||
radius = 0.1
 | 
					radius = 0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Player" type="Player"]
 | 
					[node name="Player" type="Player"]
 | 
				
			||||||
slide_on_ceiling = false
 | 
					collision_layer = 3
 | 
				
			||||||
floor_constant_speed = true
 | 
					collision_mask = 3
 | 
				
			||||||
safe_margin = 0.005
 | 
					floor_snap_length = 0.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="CharacterModel" parent="." instance=ExtResource("1_cwt7u")]
 | 
				
			||||||
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="BoneAttachment3D" parent="CharacterModel/skeleton_character/Skeleton3D" index="3"]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.937186, 0.347435, 0.0311762, 0.0973187, 0.17459, 0.97982, 0.33498, 0.921308, -0.197435, -0.16719, 1.02003, 0.0528419)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="HitscanMuzzle" parent="CharacterModel/skeleton_character/Skeleton3D/BoneAttachment3D" index="0"]
 | 
				
			||||||
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.00234e-08, 0.0436091, 0.0479187)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="PlayerInput" type="PlayerInput" parent="."]
 | 
					[node name="PlayerInput" type="PlayerInput" parent="."]
 | 
				
			||||||
unique_name_in_owner = true
 | 
					unique_name_in_owner = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="CharacterModel" parent="." instance=ExtResource("1_mi4co")]
 | 
					 | 
				
			||||||
unique_name_in_owner = true
 | 
					 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0232956, 0)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="Skeleton3D" parent="CharacterModel/skeleton_character" index="0"]
 | 
					 | 
				
			||||||
bones/0/rotation = Quaternion(1.12928e-22, 1, 2.98023e-08, -1.94707e-07)
 | 
					 | 
				
			||||||
bones/1/position = Vector3(3.28472e-17, 0.826102, -2.26306e-09)
 | 
					 | 
				
			||||||
bones/1/rotation = Quaternion(-0.0189874, -6.30661e-09, -1.08732e-09, 0.99982)
 | 
					 | 
				
			||||||
bones/2/rotation = Quaternion(0.0262842, 8.66579e-09, 1.56723e-09, 0.999655)
 | 
					 | 
				
			||||||
bones/3/rotation = Quaternion(-0.013812, -0.124595, 8.42949e-05, 0.992112)
 | 
					 | 
				
			||||||
bones/4/rotation = Quaternion(0.0100466, -3.89644e-10, 6.78268e-10, 0.99995)
 | 
					 | 
				
			||||||
bones/5/rotation = Quaternion(-0.0233085, 0.0669743, -0.00156502, 0.997481)
 | 
					 | 
				
			||||||
bones/6/rotation = Quaternion(0.623077, 0.672557, 0.307599, -0.254607)
 | 
					 | 
				
			||||||
bones/7/rotation = Quaternion(-0.311931, -0.528262, 0.360764, 0.702487)
 | 
					 | 
				
			||||||
bones/8/rotation = Quaternion(0.385362, 0.19105, 0.552643, 0.71385)
 | 
					 | 
				
			||||||
bones/9/rotation = Quaternion(0.204715, 0.0914037, 0.275611, 0.93476)
 | 
					 | 
				
			||||||
bones/10/rotation = Quaternion(-0.160687, -0.0459478, -0.0475321, 0.984789)
 | 
					 | 
				
			||||||
bones/10/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/11/rotation = Quaternion(-0.0305181, -0.0130498, -0.0216154, 0.999215)
 | 
					 | 
				
			||||||
bones/11/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/12/rotation = Quaternion(0.00872478, 0.00565776, 0.00131029, 0.999945)
 | 
					 | 
				
			||||||
bones/12/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/13/rotation = Quaternion(-0.617934, -0.0462445, 0.180663, 0.763793)
 | 
					 | 
				
			||||||
bones/13/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/14/rotation = Quaternion(-0.23045, 0.0743406, 0.160693, 0.956841)
 | 
					 | 
				
			||||||
bones/15/rotation = Quaternion(-0.541263, -0.00752764, 0.238029, 0.806424)
 | 
					 | 
				
			||||||
bones/15/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/16/rotation = Quaternion(-0.611023, -0.262913, 0.402215, 0.629087)
 | 
					 | 
				
			||||||
bones/16/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/17/rotation = Quaternion(0.0158023, 0.0368156, 0.177499, 0.983305)
 | 
					 | 
				
			||||||
bones/18/rotation = Quaternion(-0.115784, 0.0786986, 0.503797, 0.852402)
 | 
					 | 
				
			||||||
bones/19/rotation = Quaternion(-0.77808, 0.139756, 0.0140335, 0.612261)
 | 
					 | 
				
			||||||
bones/19/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/20/rotation = Quaternion(-0.0923591, 0.0238578, 0.0736642, 0.992711)
 | 
					 | 
				
			||||||
bones/21/rotation = Quaternion(-0.193467, 0.101022, 0.0447897, 0.974864)
 | 
					 | 
				
			||||||
bones/21/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/22/rotation = Quaternion(-0.293695, -0.10649, 0.259809, 0.91373)
 | 
					 | 
				
			||||||
bones/22/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/23/rotation = Quaternion(-0.0310475, -0.0162324, -0.00151601, 0.999385)
 | 
					 | 
				
			||||||
bones/24/rotation = Quaternion(0.140362, -0.0289769, -0.195164, 0.970242)
 | 
					 | 
				
			||||||
bones/25/rotation = Quaternion(0.585184, -0.476496, -0.473244, -0.454479)
 | 
					 | 
				
			||||||
bones/25/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/26/rotation = Quaternion(-0.449756, 0.301541, -0.311322, 0.780943)
 | 
					 | 
				
			||||||
bones/27/rotation = Quaternion(-0.122233, -0.135947, -0.565028, 0.804562)
 | 
					 | 
				
			||||||
bones/27/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/28/rotation = Quaternion(0.155387, -0.432411, -0.521703, 0.71882)
 | 
					 | 
				
			||||||
bones/29/rotation = Quaternion(-0.0486369, 0.0590467, -0.0759536, 0.994173)
 | 
					 | 
				
			||||||
bones/30/rotation = Quaternion(-0.0305179, 0.0130499, 0.0216153, 0.999215)
 | 
					 | 
				
			||||||
bones/30/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/31/rotation = Quaternion(-0.518356, -0.00412336, -0.00408933, 0.855145)
 | 
					 | 
				
			||||||
bones/32/rotation = Quaternion(-0.290993, 0.0788459, 0.0248015, 0.953148)
 | 
					 | 
				
			||||||
bones/33/rotation = Quaternion(-0.419789, -0.067382, -0.039477, 0.904256)
 | 
					 | 
				
			||||||
bones/33/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/34/rotation = Quaternion(-0.266884, 0.00530696, 0.00065886, 0.963714)
 | 
					 | 
				
			||||||
bones/34/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/35/rotation = Quaternion(-0.422483, 0.214372, -0.00100307, 0.880654)
 | 
					 | 
				
			||||||
bones/36/rotation = Quaternion(-0.345783, -0.0439312, -0.261553, 0.900052)
 | 
					 | 
				
			||||||
bones/36/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/37/rotation = Quaternion(-0.0107008, 0.00769689, 0.00365465, 0.999906)
 | 
					 | 
				
			||||||
bones/37/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/38/rotation = Quaternion(-0.389883, 0.108139, -0.120461, 0.906524)
 | 
					 | 
				
			||||||
bones/39/rotation = Quaternion(-0.399909, -0.0921328, -0.130163, 0.902575)
 | 
					 | 
				
			||||||
bones/40/rotation = Quaternion(-0.0125688, 0.0114118, 0.00134584, 0.999855)
 | 
					 | 
				
			||||||
bones/40/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/41/rotation = Quaternion(-0.0497163, 0.0839878, -0.166226, 0.981246)
 | 
					 | 
				
			||||||
bones/42/rotation = Quaternion(-0.0310476, 0.0162325, 0.00151597, 0.999385)
 | 
					 | 
				
			||||||
bones/43/rotation = Quaternion(-0.00109126, -0.0104143, 0.0283538, 0.999543)
 | 
					 | 
				
			||||||
bones/44/position = Vector3(0.16719, 0.195796, -0.0454406)
 | 
					 | 
				
			||||||
bones/44/rotation = Quaternion(-0.610992, 0.0971646, 0.14821, 0.771545)
 | 
					 | 
				
			||||||
bones/45/rotation = Quaternion(-0.82326, 4.1804e-09, -1.03579e-07, 0.567665)
 | 
					 | 
				
			||||||
bones/46/position = Vector3(8.07956e-09, 0.0363644, 0.0392254)
 | 
					 | 
				
			||||||
bones/46/rotation = Quaternion(-0.00112372, -6.23921e-08, 6.44731e-09, 0.999999)
 | 
					 | 
				
			||||||
bones/48/rotation = Quaternion(0.706312, -2.22455e-08, 6.70979e-08, 0.707901)
 | 
					 | 
				
			||||||
bones/48/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/49/position = Vector3(0.0228929, -0.0282939, -0.00824324)
 | 
					 | 
				
			||||||
bones/49/rotation = Quaternion(-0.112129, 0.585203, -0.155744, 0.78785)
 | 
					 | 
				
			||||||
bones/49/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/50/rotation = Quaternion(0.31578, 0.920316, 0.115311, -0.200014)
 | 
					 | 
				
			||||||
bones/50/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/51/rotation = Quaternion(0.997309, -0.00549226, 0.0715033, -0.015225)
 | 
					 | 
				
			||||||
bones/51/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/52/rotation = Quaternion(-0.00225666, 0.00306653, -0.000453776, 0.999993)
 | 
					 | 
				
			||||||
bones/52/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/53/rotation = Quaternion(0.665461, 0.000165138, -0.00238783, 0.746429)
 | 
					 | 
				
			||||||
bones/54/rotation = Quaternion(0.997309, 0.00549226, -0.0715033, -0.015225)
 | 
					 | 
				
			||||||
bones/54/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/55/rotation = Quaternion(-0.00225666, -0.0030665, 0.000453778, 0.999993)
 | 
					 | 
				
			||||||
bones/55/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/56/rotation = Quaternion(0.665461, -0.000165001, 0.00238774, 0.746429)
 | 
					 | 
				
			||||||
bones/56/scale = Vector3(1, 1, 1)
 | 
					 | 
				
			||||||
bones/57/rotation = Quaternion(-2.99921e-13, 0.707107, 0.707107, -2.99921e-13)
 | 
					 | 
				
			||||||
bones/58/rotation = Quaternion(2.01446e-13, 0.707107, 0.707107, 2.01446e-13)
 | 
					 | 
				
			||||||
bones/59/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
 | 
					 | 
				
			||||||
bones/60/rotation = Quaternion(-0.707107, 1.25097e-07, 1.25097e-07, 0.707107)
 | 
					 | 
				
			||||||
bones/61/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
 | 
					 | 
				
			||||||
bones/62/rotation = Quaternion(-0.707107, 1.5189e-07, 1.5189e-07, 0.707107)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="AnimationTree" type="PlayerAnimTree" parent="CharacterModel"]
 | 
					 | 
				
			||||||
unique_name_in_owner = true
 | 
					 | 
				
			||||||
root_node = NodePath("%AnimationTree/..")
 | 
					 | 
				
			||||||
root_motion_track = NodePath("skeleton_character/Skeleton3D:root")
 | 
					 | 
				
			||||||
tree_root = SubResource("AnimationNodeBlendTree_hiswf")
 | 
					 | 
				
			||||||
anim_player = NodePath("../AnimationPlayer")
 | 
					 | 
				
			||||||
parameters/Actions/Run/Speed/blend_amount = 1.0
 | 
					 | 
				
			||||||
"parameters/Actions/Stationary [turn]/BoneMask/blend_amount" = 1.0
 | 
					 | 
				
			||||||
"parameters/Actions/Stationary [turn]/Turn/blend_position" = 0.0
 | 
					 | 
				
			||||||
"parameters/Actions/Walk [turn]/Speed/blend_amount" = 1.0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
 | 
					[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
 | 
				
			||||||
shape = SubResource("CapsuleShape3D_ewsvd")
 | 
					shape = SubResource("CapsuleShape3D_ewsvd")
 | 
				
			||||||
| 
						 | 
					@ -335,7 +40,7 @@ shape = SubResource("SphereShape3D_v7ajo")
 | 
				
			||||||
spring_length = 1.3
 | 
					spring_length = 1.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Camera" type="Camera3D" parent="CameraParent/CameraSpring"]
 | 
					[node name="Camera" type="Camera3D" parent="CameraParent/CameraSpring"]
 | 
				
			||||||
transform = Transform3D(0.984053, 0.00860135, -0.177669, 0.0105107, 0.994273, 0.10635, 0.177567, -0.106522, 0.978327, -8.00937e-08, -3.57628e-07, 1.3)
 | 
					transform = Transform3D(0.960689, 0.0368572, -0.27517, 0.00642303, 0.987932, 0.154751, 0.277554, -0.150435, 0.948859, -1.09896e-07, -8.34465e-07, 1.3)
 | 
				
			||||||
fov = 41.9276
 | 
					fov = 41.9276
 | 
				
			||||||
far = 100.0
 | 
					far = 100.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,6 @@
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://bmminombn1t0k" path="res://models/props/dirt_ramp.glb" id="3_2vit1"]
 | 
					[ext_resource type="PackedScene" uid="uid://bmminombn1t0k" path="res://models/props/dirt_ramp.glb" id="3_2vit1"]
 | 
				
			||||||
[ext_resource type="LightmapGIData" uid="uid://6pvqgw5obful" path="res://lighting/section_2.lmbake" id="3_h3v2c"]
 | 
					[ext_resource type="LightmapGIData" uid="uid://6pvqgw5obful" path="res://lighting/section_2.lmbake" id="3_h3v2c"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://b5inibbfdco0d" path="res://models/props/trenchwall_2m.glb" id="4_hbo2r"]
 | 
					[ext_resource type="PackedScene" uid="uid://b5inibbfdco0d" path="res://models/props/trenchwall_2m.glb" id="4_hbo2r"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://c71yj2qpupn33" path="res://models/props/dirtpile_large.glb" id="6_wsb7q"]
 | 
					 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cesooq708ot6t" path="res://models/props/dirtpile_wall.glb" id="7_63acg"]
 | 
					[ext_resource type="PackedScene" uid="uid://cesooq708ot6t" path="res://models/props/dirtpile_wall.glb" id="7_63acg"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://brdhoy3efmba" path="res://models/props/trenchfloor.glb" id="8_14rhs"]
 | 
					[ext_resource type="PackedScene" uid="uid://brdhoy3efmba" path="res://models/props/trenchfloor.glb" id="8_14rhs"]
 | 
				
			||||||
[ext_resource type="PackedScene" uid="uid://cv5ikndnvmwlo" path="res://models/props/dirtpile_wall_large.glb" id="9_y6ebv"]
 | 
					[ext_resource type="PackedScene" uid="uid://cv5ikndnvmwlo" path="res://models/props/dirtpile_wall_large.glb" id="9_y6ebv"]
 | 
				
			||||||
| 
						 | 
					@ -16,6 +15,11 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_ikuna"]
 | 
					[sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_ikuna"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="NavigationMesh" id="NavigationMesh_e0njj"]
 | 
				
			||||||
 | 
					vertices = PackedVector3Array(9.3629, 0.326698, -19.5397, 8.8629, 0.326698, -19.6397, 8.6629, 0.326698, -19.3397, 8.6629, 0.326698, -18.4397, 9.2629, 0.326698, -18.4397, 8.0629, 3.0767, -18.9397, 8.0629, 3.0767, -18.6397, 8.3629, 3.0767, -18.5397, 9.4629, 3.0767, -18.3397, 10.0629, 3.0767, -18.4397, 8.9629, 1.0767, -16.9397, 8.5629, 1.0767, -16.9397, 8.7629, 1.0767, -16.5397, 2.0629, 0.826698, -14.6397, 1.4629, 0.826698, -14.6397, 1.5629, 0.826698, -14.4397, 9.3629, 1.0767, -16.8397, 8.6629, 0.826698, -15.6397, 9.1629, 0.826698, -15.7397, 9.3629, 1.0767, -15.9397, 7.8629, 0.826698, -14.4397, 7.3629, 0.826698, -14.6397, 5.3629, 0.826698, -14.6397, 7.8629, 0.826698, -14.6397, 3.9629, 0.826698, -14.6397, 9.3629, 0.826698, -15.2397, 5.1629, 0.826698, -14.8397, 4.1629, 0.826698, -14.8397, 3.4629, 0.826698, -14.6397, 3.2629, 0.826698, -14.8397, 2.2629, 0.826698, -14.8397, 7.1629, 0.826698, -14.8397, 8.6629, 0.826698, -13.7397, 9.2629, 0.826698, -13.7397, 0.562896, 0.826698, -13.9397, 0.362896, 0.826698, -13.7397, 0.462896, 1.0767, -13.2397, 0.762897, 0.826698, -13.6397, 0.762897, 0.826698, -14.6397, 0.562896, 0.826698, -14.4397, -0.137104, 0.826698, -2.73967, -0.737103, 1.0767, -2.73967, -0.537104, 1.0767, -2.43966, 0.762897, 1.0767, -2.23967, 0.462896, 0.826698, -7.73967, 0.462896, 0.826698, -9.63967, 0.162896, 0.826698, -3.03967, -0.737103, 1.0767, -2.23967, -4.1371, 2.3267, -3.03967, -4.1371, 2.3267, -2.13967, 0.262897, 0.826698, -9.03967, 0.262897, 0.826698, -7.93967, 0.262897, 0.826698, -13.0397, 0.262897, 0.826698, -11.8397, 0.262897, 0.826698, -11.0397, 0.262897, 0.826698, -9.83967, 0.462896, 0.826698, -11.6397, 0.462896, 0.826698, -5.83967, 0.262897, 0.826698, -6.03967, 0.462896, 0.826698, -5.33967, 0.262897, 0.826698, -5.13967, 9.0629, 0.326698, -1.73967, 9.2629, 0.326698, -1.93966, 9.2629, 0.326698, -3.03967, 9.0629, 0.326698, -3.23967, 8.6629, 0.326698, -2.23967, 9.0629, 0.326698, -3.73967, 9.2629, 0.326698, -3.93966, 9.2629, 0.326698, -5.03967, 9.0629, 0.326698, -5.73967, 9.2629, 0.326698, -5.93967, 9.2629, 0.326698, -7.03967, 9.0629, 0.326698, -7.23967, 8.6629, 0.326698, -7.33967, 8.4629, 0.326698, -5.23967, 9.0629, 0.326698, -7.73967, 9.2629, 0.326698, -7.93967, 9.2629, 0.326698, -9.03967, 9.0629, 0.326698, -9.23967, 8.6629, 0.326698, -8.13967, 8.8629, 0.326698, -7.53967, 9.0629, 0.326698, -5.23967, 9.0629, 0.326698, -9.73967, 9.2629, 0.326698, -9.93967, 8.6629, 0.326698, -9.83967, 8.8629, 0.326698, -9.63967, 8.9629, 0.326698, -1.43966, 8.9629, 0.326698, 0.460335, 9.2629, 0.326698, 0.0603352, 11.1629, 3.0767, 6.26033, 11.6629, 3.0767, 6.26033, 11.5629, 3.0767, 5.96033, 8.3629, 3.0767, 4.36033, 7.0629, 3.0767, 3.96033, 9.9629, 3.0767, 5.66033, 6.9629, 3.0767, 1.96033, 6.7629, 3.0767, 2.56034, 7.0629, 3.0767, 3.06034, 7.2629, 3.0767, 2.66033, 6.9629, 3.0767, -5.73967, 7.2629, 2.8267, -6.43967, 6.6629, 3.0767, -6.83967, 6.8629, 3.0767, -3.23967, 6.7629, 3.0767, 0.160334, -4.0371, 0.326698, -2.63967, -4.0371, 0.326698, -2.43966, -3.4371, 0.326698, -2.43966, -3.4371, 0.326698, -2.63967, 9.1629, 0.326698, 1.76033, 9.1629, 0.326698, 0.760334, 8.8629, 0.326698, 1.46033, 15.1629, 0.326698, 4.96033, 15.5629, 0.326698, 4.96033, 15.6629, 0.326698, 4.56034, 15.2629, 0.326698, 4.16033, 14.2629, 0.326698, 3.86033, 14.0629, 0.326698, 4.36033, 14.4629, 0.326698, 4.76033, 10.6629, 0.326698, 3.56034, 12.1629, 0.326698, 3.76033, 11.7629, 0.326698, 3.36033, 11.3629, 0.326698, 2.96033, 9.7629, 0.326698, 2.56034, 9.2629, 0.326698, 2.76033, 13.2629, 0.326698, 3.56034, 12.6629, 0.326698, 4.16033, 13.7629, 0.326698, 3.96033)
 | 
				
			||||||
 | 
					polygons = [PackedInt32Array(1, 0, 2), PackedInt32Array(2, 0, 4), PackedInt32Array(2, 4, 3), PackedInt32Array(6, 5, 7), PackedInt32Array(7, 5, 8), PackedInt32Array(8, 5, 9), PackedInt32Array(12, 11, 10), PackedInt32Array(15, 14, 13), PackedInt32Array(10, 16, 12), PackedInt32Array(12, 16, 19), PackedInt32Array(12, 19, 18), PackedInt32Array(12, 18, 17), PackedInt32Array(22, 21, 20), PackedInt32Array(21, 23, 20), PackedInt32Array(24, 22, 15), PackedInt32Array(15, 22, 20), PackedInt32Array(17, 18, 25), PackedInt32Array(26, 22, 27), PackedInt32Array(27, 22, 24), PackedInt32Array(30, 29, 13), PackedInt32Array(13, 29, 28), PackedInt32Array(22, 31, 21), PackedInt32Array(15, 13, 28), PackedInt32Array(20, 23, 32), PackedInt32Array(32, 23, 33), PackedInt32Array(33, 23, 25), PackedInt32Array(25, 23, 17), PackedInt32Array(15, 28, 24), PackedInt32Array(34, 37, 35), PackedInt32Array(35, 37, 36), PackedInt32Array(39, 38, 34), PackedInt32Array(34, 38, 37), PackedInt32Array(37, 38, 14), PackedInt32Array(37, 14, 15), PackedInt32Array(41, 40, 42), PackedInt32Array(42, 40, 43), PackedInt32Array(45, 37, 44), PackedInt32Array(44, 37, 43), PackedInt32Array(43, 40, 46), PackedInt32Array(42, 47, 41), PackedInt32Array(41, 47, 49), PackedInt32Array(41, 49, 48), PackedInt32Array(51, 50, 44), PackedInt32Array(44, 50, 45), PackedInt32Array(36, 53, 52), PackedInt32Array(55, 54, 45), PackedInt32Array(45, 54, 56), PackedInt32Array(53, 36, 56), PackedInt32Array(56, 36, 37), PackedInt32Array(43, 57, 44), PackedInt32Array(57, 58, 44), PackedInt32Array(43, 59, 57), PackedInt32Array(56, 37, 45), PackedInt32Array(60, 59, 46), PackedInt32Array(46, 59, 43), PackedInt32Array(61, 65, 62), PackedInt32Array(62, 65, 63), PackedInt32Array(63, 65, 64), PackedInt32Array(68, 67, 66), PackedInt32Array(72, 71, 73), PackedInt32Array(73, 71, 70), PackedInt32Array(73, 70, 69), PackedInt32Array(73, 69, 74), PackedInt32Array(75, 79, 76), PackedInt32Array(76, 79, 77), PackedInt32Array(77, 79, 78), PackedInt32Array(72, 80, 75), PackedInt32Array(75, 80, 79), PackedInt32Array(81, 68, 74), PackedInt32Array(74, 68, 66), PackedInt32Array(74, 66, 65), PackedInt32Array(72, 73, 80), PackedInt32Array(85, 84, 82), PackedInt32Array(82, 84, 83), PackedInt32Array(83, 84, 33), PackedInt32Array(33, 84, 32), PackedInt32Array(61, 88, 86), PackedInt32Array(86, 88, 87), PackedInt32Array(69, 81, 74), PackedInt32Array(61, 86, 65), PackedInt32Array(82, 78, 85), PackedInt32Array(85, 78, 79), PackedInt32Array(66, 64, 65), PackedInt32Array(90, 89, 91), PackedInt32Array(91, 89, 94), PackedInt32Array(91, 94, 92), PackedInt32Array(92, 94, 93), PackedInt32Array(97, 96, 98), PackedInt32Array(98, 96, 95), PackedInt32Array(101, 100, 99), PackedInt32Array(97, 98, 93), PackedInt32Array(93, 98, 92), PackedInt32Array(102, 101, 99), PackedInt32Array(95, 103, 98), PackedInt32Array(98, 103, 102), PackedInt32Array(98, 102, 99), PackedInt32Array(107, 106, 104), PackedInt32Array(104, 106, 105), PackedInt32Array(110, 109, 108), PackedInt32Array(113, 112, 111), PackedInt32Array(113, 111, 114), PackedInt32Array(114, 111, 117), PackedInt32Array(114, 117, 116), PackedInt32Array(114, 116, 115), PackedInt32Array(120, 119, 118), PackedInt32Array(120, 118, 121), PackedInt32Array(121, 118, 122), PackedInt32Array(122, 118, 123), PackedInt32Array(126, 116, 124), PackedInt32Array(124, 116, 125), PackedInt32Array(124, 125, 119), PackedInt32Array(124, 119, 120), PackedInt32Array(126, 115, 116), PackedInt32Array(122, 123, 108), PackedInt32Array(108, 123, 110)]
 | 
				
			||||||
 | 
					cell_size = 0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="Environment" type="WorldEnvironment"]
 | 
					[node name="Environment" type="WorldEnvironment"]
 | 
				
			||||||
environment = ExtResource("1_5ixfb")
 | 
					environment = ExtResource("1_5ixfb")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +30,7 @@ bake_mask = 4294967293
 | 
				
			||||||
bake_simplification_distance = 0.2
 | 
					bake_simplification_distance = 0.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="LightmapGI" type="LightmapGI" parent="."]
 | 
					[node name="LightmapGI" type="LightmapGI" parent="."]
 | 
				
			||||||
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.95704, 0, -2.80582)
 | 
				
			||||||
quality = 2
 | 
					quality = 2
 | 
				
			||||||
directional = true
 | 
					directional = true
 | 
				
			||||||
camera_attributes = SubResource("CameraAttributesPractical_ikuna")
 | 
					camera_attributes = SubResource("CameraAttributesPractical_ikuna")
 | 
				
			||||||
| 
						 | 
					@ -33,250 +38,286 @@ generate_probes_subdiv = 1
 | 
				
			||||||
light_data = ExtResource("3_h3v2c")
 | 
					light_data = ExtResource("3_h3v2c")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
					[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
				
			||||||
transform = Transform3D(-0.951786, 0.274079, -0.137775, 0.11918, 0.744237, 0.657196, 0.282661, 0.609092, -0.741021, 0.295643, 3.22867, -2.4707)
 | 
					transform = Transform3D(-0.282662, -0.609093, 0.741018, 0.11918, 0.744235, 0.657198, -0.951787, 0.27408, -0.137775, -1.48634, 3.22867, -2.51018)
 | 
				
			||||||
light_color = Color(0.95484, 0.837153, 0.722321, 1)
 | 
					light_color = Color(0.95484, 0.837153, 0.722321, 1)
 | 
				
			||||||
shadow_enabled = true
 | 
					shadow_enabled = true
 | 
				
			||||||
shadow_blur = 0.118
 | 
					shadow_blur = 0.132
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirt_ramp" parent="." instance=ExtResource("3_2vit1")]
 | 
					[node name="NavigationRegion3D" type="NavigationRegion3D" parent="."]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.252364, 0, -2.29605)
 | 
					navigation_mesh = SubResource("NavigationMesh_e0njj")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirt_ramp2" parent="." instance=ExtResource("3_2vit1")]
 | 
					[node name="dirt_ramp" parent="NavigationRegion3D" instance=ExtResource("3_2vit1")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.252364, 0.674024, -0.250979)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.88223, 0.502552, -2.51509)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="dirt_ramp2" parent="NavigationRegion3D" instance=ExtResource("3_2vit1")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -0.546675)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, -1.9032e-08, 0.976016, -0.2177, -8.5326e-08, -0.2177, -0.976016, 8.92731, -0.455602, -11.143)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m2" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -2.55193)
 | 
					transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -3.41037, 0, -3.0716)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m3" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m2" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -4.4575)
 | 
					transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -1.40511, 0, -3.0716)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m4" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m3" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -6.36306)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557597, 0, -4.67654)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m5" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m4" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -8.32269)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557597, 0, -6.5821)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m6" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m5" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -0.546675)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557597, 0, -8.54173)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m36" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m6" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, 1.45333)
 | 
					transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, -3.41037, 0, -2.03585)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m37" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m36" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, 1.45333)
 | 
					transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -5.41037, 0, -3.0716)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m7" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m37" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -2.55193)
 | 
					transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, -5.41037, 0, -2.03585)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m8" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m7" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -4.4575)
 | 
					transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, -1.40511, 0, -2.03585)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m9" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m46" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -6.36306)
 | 
					transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 0.594886, 0, -2.03585)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m10" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m8" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769973, 0, -8.32269)
 | 
					transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -4.67654)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m11" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m47" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -10.2944)
 | 
					transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -2.67654)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m12" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m9" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265775, 0, -12.2997)
 | 
					transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -6.5821)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m13" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m10" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -14.2053)
 | 
					transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -8.54173)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m14" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m11" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -16.1108)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557587, 0, -10.5134)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m21" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m12" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 0.468356, 0, -21.3728)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0.0557587, 0, -12.5187)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m22" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m13" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 2.46836, 0, -21.3728)
 | 
					transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 2.80878, 0, -15.1156)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m23" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m48" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -1.53164, 0, -21.3728)
 | 
					transform = Transform3D(-0.213371, 0, 0.976971, 0, 1, 0, -0.976971, 0, -0.213371, 1.0041, 0, -14.8983)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m24" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m49" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 4.46836, 0, -21.3728)
 | 
					transform = Transform3D(-0.954026, 0, 0.299724, 0, 1, 0, -0.299724, 0, -0.954026, 0.239106, 0, -14.1092)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m25" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m14" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, -3.53164, 0, -21.3728)
 | 
					transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 4.71428, 0, -15.1156)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m15" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m21" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, -0.265774, 0, -18.0705)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -14.3814)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m26" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m22" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.98323, -2.38419e-07, -19.702)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -12.3814)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m28" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m23" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 2.33259, -2.38419e-07, -19.702)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -16.3814)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m27" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m24" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.98323, -2.38419e-07, -19.702)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -10.3814)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m16" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m25" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -10.2944)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -18.3814)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m17" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m15" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -12.2997)
 | 
					transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 6.67398, 0, -15.1156)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m18" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m26" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -14.2053)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -16.833)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m19" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m28" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769972, 0, -16.1108)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -12.5172)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m20" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m27" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 0.769973, 0, -18.0705)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -18.833)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirtpile_large7" parent="." instance=ExtResource("6_wsb7q")]
 | 
					[node name="trenchwall_2m16" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(0.910943, -3.08519e-09, 0.412532, -0.0232438, 0.998411, 0.0513264, -0.411877, -0.0563443, 0.909496, 0.21254, 0.027355, -19.7922)
 | 
					transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -10.5134)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirtpile_large8" parent="." instance=ExtResource("6_wsb7q")]
 | 
					[node name="trenchwall_2m17" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(0.0524438, -0.030829, 0.998148, -0.0242569, 0.999189, 0.0321357, -0.998329, -0.0258973, 0.0516534, 1.1532, 0.0658178, -20.5826)
 | 
					transform = Transform3D(1, 0, -1.74846e-07, 0, 1, 0, 1.74846e-07, 0, 1, 1.09151, 0, -12.5187)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirtpile_large9" parent="." instance=ExtResource("6_wsb7q")]
 | 
					[node name="trenchwall_2m18" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-0.00839367, 0.0319404, -0.999454, -0.0242569, 0.999189, 0.0321356, 0.99967, 0.0245134, -0.00761209, -0.382088, 0.0658178, -20.5826)
 | 
					transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 2.80878, 0, -14.0798)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirtpile_wall" parent="." instance=ExtResource("7_63acg")]
 | 
					[node name="trenchwall_2m19" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.618189, 4.76837e-07, -11.2607)
 | 
					transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 4.71428, 0, -14.0798)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirtpile_wall2" parent="." instance=ExtResource("7_63acg")]
 | 
					[node name="trenchwall_2m20" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17294, 0, -14.9847)
 | 
					transform = Transform3D(-2.18557e-07, 0, -1, 0, 1, 0, 1, 0, -2.18557e-07, 6.67398, 0, -14.0798)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor2" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="dirtpile_wall" parent="NavigationRegion3D" instance=ExtResource("7_63acg")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -0.558091)
 | 
					transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -0.296655, 4.76837e-07, -11.4797)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor3" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="dirtpile_wall2" parent="NavigationRegion3D" instance=ExtResource("7_63acg")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -2.55809)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 3.58818, 0, -13.6769)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor4" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor2" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -4.55809)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.39895, -2.38419e-07, -2.43765)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor5" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor3" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -6.55809)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.39895, -2.38419e-07, -2.43765)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor6" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor4" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -8.55809)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -4.77713)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor7" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor27" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -10.5581)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0.0999623, 0.994991, -4.36949e-09, 0.994991, -0.0999623, -4.34924e-08, 0.6897, 0.502504, -2.57668)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor8" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor5" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -12.5581)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -6.77713)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor9" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor6" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -14.5581)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -8.77713)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor10" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor7" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -16.5581)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -10.7771)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor11" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor8" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.368166, -2.38419e-07, -18.5581)
 | 
					transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6897, 0.502504, -12.7771)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor12" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor9" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0.368166, -0.0857527, -20.5581)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 3.16158, 0.502504, -14.4816)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor13" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor28" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 2.38479, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 1.16158, 0.502504, -14.4816)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m30" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchfloor10" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.33259, -2.38419e-07, -19.702)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 5.16158, 0.502504, -14.4816)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor16" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchfloor11" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.38479, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 7.16158, 0.502504, -14.4816)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m29" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchfloor12" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 6.46836, 0, -21.3728)
 | 
					transform = Transform3D(0.992548, -0.119669, -0.0229919, 0.119637, 0.992814, -0.00277134, 0.0231583, 5.19146e-10, 0.999732, 9.10488, 0.493173, -14.4816)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m31" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchfloor13" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 6.33259, -2.38419e-07, -19.702)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -12.465)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor17" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m30" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 6.38479, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -10.5172)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m32" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchfloor16" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 8.46836, 0, -21.3728)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -10.465)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m34" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m29" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 10.4684, 0, -21.3728)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -8.38144)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m35" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m31" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 12.4684, 0, -21.3728)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 8.30548, -2.38419e-07, -8.51721)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m38" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchfloor17" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(1.31134e-07, 0, 1, 0, 1, 0, -1, 0, 1.31134e-07, 14.4684, 0, -21.3728)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -8.46501)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m40" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m32" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(0.0428523, 0, 0.999081, 0, 1, 0, -0.999081, 0, 0.0428523, 15.3368, 0, -21.4596)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -6.38144)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m39" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m34" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-0.957541, 0, 0.288297, 0, 1, 0, -0.288297, 0, -0.957541, 17.3791, 0, -22.8527)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -4.3814)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m33" parent="." instance=ExtResource("4_hbo2r")]
 | 
					[node name="trenchwall_2m35" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-0.0650884, 0.0426316, -0.996969, -0.0121901, 0.998978, 0.0435134, 0.997805, 0.0149854, -0.0645022, 8.0479, -0.0569355, -19.6773)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -2.3814)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor18" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m38" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 8.38478, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(1, 0, -1.74845e-07, 0, 1, 0, 1.74845e-07, 0, 1, 9.62828, 0, -0.381403)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor19" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m40" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 10.3848, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(0.999081, 0, -0.0428523, 0, 1, 0, 0.0428523, 0, 0.999081, 9.71508, 0, 0.486997)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor20" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m39" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 12.3848, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(0.288297, 0, 0.957541, 0, 1, 0, -0.957541, 0, 0.288297, 11.1082, 0, 2.5293)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor21" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m41" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 14.3848, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(0.288297, 0, 0.957541, 0, 1, 0, -0.957541, 0, 0.288297, 13.0233, 0, 3.1059)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor22" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m42" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(0.398461, 0, -0.917185, 0, 1, 0, 0.917185, 0, 0.398461, 16.6526, -2.38419e-07, -21.0803)
 | 
					transform = Transform3D(0.288297, 0, 0.957541, 0, 1, 0, -0.957541, 0, 0.288297, 14.9384, 0, 3.6825)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor24" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m43" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(0.982097, 0, -0.188376, 0, 1, 0, 0.188376, 0, 0.982097, 18.688, -2.38419e-07, -23.8306)
 | 
					transform = Transform3D(-0.294608, 0, -0.955618, 0, 1, 0, 0.955618, 0, -0.294608, 14.7206, 0, 5.1742)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor23" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m44" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(0.967806, 0, -0.251698, 0, 1, 0, 0.251698, 0, 0.967806, 18.3409, -0.0373774, -22.3664)
 | 
					transform = Transform3D(-0.294608, 0, -0.955618, 0, 1, 0, 0.955618, 0, -0.294608, 12.8094, 0, 4.585)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor14" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m45" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -1.8833, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(-0.294608, 0, -0.955618, 0, 1, 0, 0.955618, 0, -0.294608, 10.8981, 0, 3.9958)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchfloor15" parent="." instance=ExtResource("8_14rhs")]
 | 
					[node name="trenchwall_2m33" parent="NavigationRegion3D" instance=ExtResource("4_hbo2r")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -3.8833, -2.38419e-07, -20.5581)
 | 
					transform = Transform3D(-0.997805, -0.0149854, 0.0645022, -0.0121901, 0.998978, 0.0435134, -0.0650885, 0.0426316, -0.996969, 8.28078, -0.0569355, -6.8019)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="dirtpile_wall_large" parent="." instance=ExtResource("9_y6ebv")]
 | 
					[node name="trenchfloor18" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-0.176277, 0, -0.984341, 0, 1, 0, 0.984341, 0, -0.176277, -0.984003, 0.109982, -19.4195)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -6.46502)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="wooden_bar_large" parent="." instance=ExtResource("10_r53rh")]
 | 
					[node name="trenchfloor19" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(0.816694, -0.00618675, 0.577037, -0.00080363, 0.999929, 0.0118582, -0.57707, -0.0101483, 0.816632, 16.5566, -0.256461, -21.8492)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -4.465)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="wooden_bar_large2" parent="." instance=ExtResource("10_r53rh")]
 | 
					[node name="trenchfloor20" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-0.699589, 0, 0.714546, 0, 1, 0, -0.714546, 0, -0.699589, -0.798373, -0.242456, -19.1719)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -2.465)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="wooden_bar_large3" parent="." instance=ExtResource("10_r53rh")]
 | 
					[node name="trenchfloor21" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-0.551777, 0, -0.833992, 0, 1, 0, 0.833992, 0, -0.551777, 1.24631, -0.242456, -19.1784)
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.23828, -2.38419e-07, -0.465003)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m_dirt" parent="." instance=ExtResource("11_kca0e")]
 | 
					[node name="trenchfloor22" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, -1.4335, -0.119269, -20.5922)
 | 
					transform = Transform3D(-0.917185, 0, -0.398461, 0, 1, 0, 0.398461, 0, -0.917185, 9.62699, -0.0401146, 1.20087)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_5m_dirt" parent="." instance=ExtResource("12_t2jcw")]
 | 
					[node name="trenchfloor26" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(0.0512255, -0.00609195, -0.998668, 0.118092, 0.993003, -1.16415e-10, 0.991681, -0.117935, 0.0515864, 10.4383, -0.290734, -19.4085)
 | 
					transform = Transform3D(-0.765472, 0, -0.643469, 0, 1, 0, 0.643469, 0, -0.765472, 9.99257, -0.00441432, 2.57248)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_5m_dirt2" parent="." instance=ExtResource("12_t2jcw")]
 | 
					[node name="trenchfloor24" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(0.0512378, 0, -0.998686, 0, 1, 0, 0.998686, 0, 0.0512378, 15.5141, -0.110156, -19.8343)
 | 
					transform = Transform3D(-0.188376, 0, -0.982097, 0, 1, 0, 0.982097, 0, -0.188376, 12.8151, -2.38419e-07, 3.8382)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_5m_dirt3" parent="." instance=ExtResource("12_t2jcw")]
 | 
					[node name="trenchfloor25" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(0.880411, 0, -0.474211, 0, 1, 0, 0.474211, 0, 0.880411, 18.6627, -0.110156, -21.4719)
 | 
					transform = Transform3D(-0.188376, 0, -0.982097, 0, 1, 0, 0.982097, 0, -0.188376, 14.7793, -2.38419e-07, 4.215)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="trenchwall_2m_dirt2" parent="." instance=ExtResource("11_kca0e")]
 | 
					[node name="trenchfloor23" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(0.561232, -0.0192946, -0.827434, 0.0343588, 0.99941, 0, 0.826945, -0.0284296, 0.561564, 17.4683, -0.221343, -20.0395)
 | 
					transform = Transform3D(-0.251698, 0, -0.967806, 0, 1, 0, 0.967806, 0, -0.251698, 11.3509, -0.0373774, 3.4911)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="walkover2" parent="." instance=ExtResource("13_bq7v3")]
 | 
					[node name="trenchfloor14" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 4.38335, 0, -20.4729)
 | 
					transform = Transform3D(-0.99452, -0.0848907, 0.0610269, -0.077975, 0.991095, 0.107938, -0.0696463, 0.102588, -0.992283, 9.14388, 0.575037, -16.4858)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="trenchfloor15" parent="NavigationRegion3D" instance=ExtResource("8_14rhs")]
 | 
				
			||||||
 | 
					transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 9.16158, -2.38419e-07, -18.7331)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="dirtpile_wall_large" parent="NavigationRegion3D" instance=ExtResource("9_y6ebv")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.984341, 0, 0.176277, 0, 1, 0, -0.176277, 0, -0.984341, 8.02298, 0.109982, -15.8338)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="wooden_bar_large" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
 | 
				
			||||||
 | 
					transform = Transform3D(0.57707, 0.0101483, -0.816632, -0.00080363, 0.999929, 0.0118582, 0.816694, -0.00618675, 0.577037, 10.1047, -0.256461, 1.7068)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="wooden_bar_large2" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
 | 
				
			||||||
 | 
					transform = Transform3D(0.714546, 0, 0.699589, 0, 1, 0, -0.699589, 0, 0.714546, 7.77538, -0.242456, -15.6482)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="wooden_bar_large3" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.833992, 0, 0.551777, 0, 1, 0, -0.551777, 0, -0.833992, 7.78188, -0.242456, -13.6035)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="wooden_bar_large4" parent="NavigationRegion3D" instance=ExtResource("10_r53rh")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.741191, 0, -0.671294, 0, 1, 0, 0.671294, 0, -0.741191, 1.68311, -0.242456, -13.5949)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="trenchwall_2m_dirt" parent="NavigationRegion3D" instance=ExtResource("11_kca0e")]
 | 
				
			||||||
 | 
					transform = Transform3D(0.18685, 0, 0.982388, 0, 1, 0, -0.982388, 0, 0.18685, 8.72598, -0.119269, -17.2231)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="trenchwall_5m_dirt" parent="NavigationRegion3D" instance=ExtResource("12_t2jcw")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.991681, 0.117935, -0.0515864, 0.118092, 0.993003, -2.3283e-10, 0.0512255, -0.00609194, -0.998668, 8.01198, -0.290734, -4.4115)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="trenchwall_5m_dirt2" parent="NavigationRegion3D" instance=ExtResource("12_t2jcw")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.998686, 0, -0.0512378, 0, 1, 0, 0.0512378, 0, -0.998686, 8.43778, -0.110156, 0.664297)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="trenchwall_5m_dirt3" parent="NavigationRegion3D" instance=ExtResource("12_t2jcw")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.474211, 0, -0.880411, 0, 1, 0, 0.880411, 0, -0.474211, 10.0754, -0.110156, 3.8129)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="trenchwall_2m_dirt2" parent="NavigationRegion3D" instance=ExtResource("11_kca0e")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.826945, 0.0284296, -0.561564, 0.0343588, 0.99941, 1.04599e-09, 0.561232, -0.0192946, -0.827434, 8.64298, -0.221343, 2.6185)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[node name="walkover3" parent="." instance=ExtResource("13_bq7v3")]
 | 
					[node name="walkover3" parent="." instance=ExtResource("13_bq7v3")]
 | 
				
			||||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 6.39592, 0, -20.4729)
 | 
					transform = Transform3D(0.146791, 0, -0.989167, 0, 1, 0, 0.989167, 0, 0.146791, 6.32769, 0.4036, -14.728)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="walkover4" parent="." instance=ExtResource("13_bq7v3")]
 | 
				
			||||||
 | 
					transform = Transform3D(-0.996345, -0.0854169, 8.7263e-08, -0.0854169, 0.996345, 3.73369e-09, -8.7263e-08, -3.73369e-09, -1, 9.09391, 0.20791, -10.4648)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										50
									
								
								godot/particles/explosion.tscn
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								godot/particles/explosion.tscn
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,50 @@
 | 
				
			||||||
 | 
					[gd_scene load_steps=8 format=3 uid="uid://be2yogspyg40p"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Material" uid="uid://cnpi4nqbif0st" path="res://particles/materials/dirt_splatters.tres" id="1_70hen"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="Curve" id="Curve_f77sp"]
 | 
				
			||||||
 | 
					_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -3.4158, 0.0, 0, 0]
 | 
				
			||||||
 | 
					point_count = 2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="CurveTexture" id="CurveTexture_jj8d7"]
 | 
				
			||||||
 | 
					curve = SubResource("Curve_f77sp")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="Curve" id="Curve_58b4i"]
 | 
				
			||||||
 | 
					max_value = 3.0
 | 
				
			||||||
 | 
					_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(0.0803571, 0.990632), 0.0, 0.0, 0, 0, Vector2(1, 2.70316), 0.0, 0.0, 0, 0]
 | 
				
			||||||
 | 
					point_count = 3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="CurveTexture" id="CurveTexture_62j87"]
 | 
				
			||||||
 | 
					curve = SubResource("Curve_58b4i")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_2cudr"]
 | 
				
			||||||
 | 
					particle_flag_align_y = true
 | 
				
			||||||
 | 
					particle_flag_rotate_y = true
 | 
				
			||||||
 | 
					angle_min = 1.07288e-05
 | 
				
			||||||
 | 
					angle_max = 720.0
 | 
				
			||||||
 | 
					direction = Vector3(0, 0, 1)
 | 
				
			||||||
 | 
					spread = 2.905
 | 
				
			||||||
 | 
					initial_velocity_min = 1.5
 | 
				
			||||||
 | 
					initial_velocity_max = 10.0
 | 
				
			||||||
 | 
					scale_max = 1.5
 | 
				
			||||||
 | 
					scale_curve = SubResource("CurveTexture_62j87")
 | 
				
			||||||
 | 
					scale_over_velocity_min = 1.0
 | 
				
			||||||
 | 
					scale_over_velocity_max = 5.0
 | 
				
			||||||
 | 
					alpha_curve = SubResource("CurveTexture_jj8d7")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[sub_resource type="QuadMesh" id="QuadMesh_ccn0f"]
 | 
				
			||||||
 | 
					material = ExtResource("1_70hen")
 | 
				
			||||||
 | 
					size = Vector2(1.5, 1.5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[node name="ExplosionParticles" type="GPUParticles3D"]
 | 
				
			||||||
 | 
					transform = Transform3D(-1, 0, -8.74228e-08, -8.74228e-08, 4.37114e-08, 1, 0, 1, -4.37114e-08, 0, 0, 0)
 | 
				
			||||||
 | 
					emitting = false
 | 
				
			||||||
 | 
					amount = 20
 | 
				
			||||||
 | 
					lifetime = 1.5
 | 
				
			||||||
 | 
					one_shot = true
 | 
				
			||||||
 | 
					explosiveness = 0.99
 | 
				
			||||||
 | 
					fixed_fps = 60
 | 
				
			||||||
 | 
					visibility_aabb = AABB(-3, -3, -1, 6, 6, 10)
 | 
				
			||||||
 | 
					draw_order = 3
 | 
				
			||||||
 | 
					process_material = SubResource("ParticleProcessMaterial_2cudr")
 | 
				
			||||||
 | 
					draw_pass_1 = SubResource("QuadMesh_ccn0f")
 | 
				
			||||||
							
								
								
									
										13
									
								
								godot/particles/materials/dirt_splatters.tres
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								godot/particles/materials/dirt_splatters.tres
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://cnpi4nqbif0st"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[ext_resource type="Texture2D" uid="uid://evisqjqwkms5" path="res://particles/textures/dirt_splatters.png" id="1_3l7wc"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[resource]
 | 
				
			||||||
 | 
					transparency = 1
 | 
				
			||||||
 | 
					vertex_color_use_as_albedo = true
 | 
				
			||||||
 | 
					albedo_texture = ExtResource("1_3l7wc")
 | 
				
			||||||
 | 
					billboard_mode = 3
 | 
				
			||||||
 | 
					billboard_keep_scale = true
 | 
				
			||||||
 | 
					particles_anim_h_frames = 1
 | 
				
			||||||
 | 
					particles_anim_v_frames = 1
 | 
				
			||||||
 | 
					particles_anim_loop = false
 | 
				
			||||||
							
								
								
									
										3
									
								
								godot/particles/textures/dirt_splatters.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								godot/particles/textures/dirt_splatters.png
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
 | 
					oid sha256:84a48be755cfda4d052cdde6eeb44a53ac5e6181723fe338cb9528175349ee8a
 | 
				
			||||||
 | 
					size 5020550
 | 
				
			||||||
							
								
								
									
										35
									
								
								godot/particles/textures/dirt_splatters.png.import
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								godot/particles/textures/dirt_splatters.png.import
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,35 @@
 | 
				
			||||||
 | 
					[remap]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					importer="texture"
 | 
				
			||||||
 | 
					type="CompressedTexture2D"
 | 
				
			||||||
 | 
					uid="uid://evisqjqwkms5"
 | 
				
			||||||
 | 
					path.s3tc="res://.godot/imported/dirt_splatters.png-0bb5e5bc05cbbd02895b9062e1744bad.s3tc.ctex"
 | 
				
			||||||
 | 
					metadata={
 | 
				
			||||||
 | 
					"imported_formats": ["s3tc_bptc"],
 | 
				
			||||||
 | 
					"vram_texture": true
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[deps]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					source_file="res://particles/textures/dirt_splatters.png"
 | 
				
			||||||
 | 
					dest_files=["res://.godot/imported/dirt_splatters.png-0bb5e5bc05cbbd02895b9062e1744bad.s3tc.ctex"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[params]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					compress/mode=2
 | 
				
			||||||
 | 
					compress/high_quality=false
 | 
				
			||||||
 | 
					compress/lossy_quality=0.7
 | 
				
			||||||
 | 
					compress/hdr_compression=1
 | 
				
			||||||
 | 
					compress/normal_map=0
 | 
				
			||||||
 | 
					compress/channel_pack=0
 | 
				
			||||||
 | 
					mipmaps/generate=true
 | 
				
			||||||
 | 
					mipmaps/limit=-1
 | 
				
			||||||
 | 
					roughness/mode=0
 | 
				
			||||||
 | 
					roughness/src_normal=""
 | 
				
			||||||
 | 
					process/fix_alpha_border=true
 | 
				
			||||||
 | 
					process/premult_alpha=false
 | 
				
			||||||
 | 
					process/normal_map_invert_y=false
 | 
				
			||||||
 | 
					process/hdr_as_srgb=false
 | 
				
			||||||
 | 
					process/hdr_clamp_exposure=false
 | 
				
			||||||
 | 
					process/size_limit=0
 | 
				
			||||||
 | 
					detect_3d/compress_to=0
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								godot/particles/textures/dirt_splatters.png~
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/particles/textures/dirt_splatters.png~
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 912 KiB  | 
| 
						 | 
					@ -18,12 +18,17 @@ config/icon="res://icon.svg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[display]
 | 
					[display]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
window/size/viewport_width=2304
 | 
					window/size/viewport_width=1920
 | 
				
			||||||
window/size/viewport_height=1296
 | 
					window/size/viewport_height=1080
 | 
				
			||||||
window/size/mode=3
 | 
					window/size/mode=3
 | 
				
			||||||
window/stretch/mode="viewport"
 | 
					window/stretch/mode="viewport"
 | 
				
			||||||
window/stretch/aspect="keep_width"
 | 
					window/stretch/aspect="keep_width"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[editor]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					version_control/plugin_name="GitPlugin"
 | 
				
			||||||
 | 
					version_control/autoload_on_startup=true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[input]
 | 
					[input]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dir_forward={
 | 
					dir_forward={
 | 
				
			||||||
| 
						 | 
					@ -83,14 +88,18 @@ run={
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[navigation]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3d/default_cell_size=0.1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[physics]
 | 
					[physics]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2d/run_on_separate_thread=true
 | 
				
			||||||
3d/run_on_separate_thread=true
 | 
					3d/run_on_separate_thread=true
 | 
				
			||||||
 | 
					common/physics_interpolation=true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[rendering]
 | 
					[rendering]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
scaling_3d/mode=1
 | 
					 | 
				
			||||||
scaling_3d/scale=0.8
 | 
					 | 
				
			||||||
anti_aliasing/quality/msaa_3d=2
 | 
					anti_aliasing/quality/msaa_3d=2
 | 
				
			||||||
anti_aliasing/quality/screen_space_aa=1
 | 
					anti_aliasing/quality/screen_space_aa=1
 | 
				
			||||||
occlusion_culling/use_occlusion_culling=true
 | 
					occlusion_culling/use_occlusion_culling=true
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
version https://git-lfs.github.com/spec/v1
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
oid sha256:aac1803a30583ff035439651cc58a6707ea91684a8d8e00d08bb55ced1c03cb4
 | 
					oid sha256:6af4c5ae5eaccc1bec51c9dcca404fea468e5f91de39f0ccaaf9c9bbc4a96db1
 | 
				
			||||||
size 2606184
 | 
					size 2928928
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
version https://git-lfs.github.com/spec/v1
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
oid sha256:9bb1eba3f6d5a39758722fdbbf37fd1a1a434038c6523d9cd9912c220b56381b
 | 
					oid sha256:d304484e4110bdc95a40942687cf07e2f3f8bfbb52edb683f7566d8a23590205
 | 
				
			||||||
size 1149688
 | 
					size 1158024
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -1,3 +1,3 @@
 | 
				
			||||||
version https://git-lfs.github.com/spec/v1
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
oid sha256:beaf6fbde42b0b8e5690e68f9dc7a77067fda1ec832970234a0aa832e8a360c8
 | 
					oid sha256:479ff8e121b24706915dc3f5916f053a34b45dcfa966a1f8ddb28b330a5549ed
 | 
				
			||||||
size 11475425
 | 
					size 21514224
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								models/textures/dirt_splatters.kra
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								models/textures/dirt_splatters.kra
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
 | 
					oid sha256:99076f3132cd657898da06e6dbdfc6e07ab3653a574411b24cc9040c1e9cc4f2
 | 
				
			||||||
 | 
					size 10076876
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								models/textures/dirt_splatters.kra~
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								models/textures/dirt_splatters.kra~
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								models/textures/muzzleflash.kra
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								models/textures/muzzleflash.kra
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
 | 
					oid sha256:3500177489b489c147a4f55f89d8ae432876c10b336f8a8fb2d639257390b25e
 | 
				
			||||||
 | 
					size 594768
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								models/textures/muzzleflash.kra~
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								models/textures/muzzleflash.kra~
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								models/textures/muzzleflash.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								models/textures/muzzleflash.png
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					version https://git-lfs.github.com/spec/v1
 | 
				
			||||||
 | 
					oid sha256:8998ebcf9b8147bbe4edd71e40feac24f0ed4296c54c4f3219461c77de8a6b7c
 | 
				
			||||||
 | 
					size 218335
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								models/textures/muzzleflash.png~
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								models/textures/muzzleflash.png~
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 212 KiB  | 
							
								
								
									
										13
									
								
								src/enemy.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/enemy.cpp
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					#include "enemy.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Enemy::_bind_methods() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Enemy::_ready() {
 | 
				
			||||||
 | 
					    this->anim_tree = this->get_node<PlayerAnimTree>("CharacterModel/AnimationTree");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Enemy::damage() {
 | 
				
			||||||
 | 
					    this->anim_tree->death_animation();
 | 
				
			||||||
 | 
					    this->set_collision_mask(0x0);
 | 
				
			||||||
 | 
					    this->set_collision_layer(0x0);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										19
									
								
								src/enemy.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/enemy.hpp
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,19 @@
 | 
				
			||||||
 | 
					#ifndef ENEMY_HPP
 | 
				
			||||||
 | 
					#define ENEMY_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "damageable_entity.hpp"
 | 
				
			||||||
 | 
					#include "player_anim_tree.hpp"
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/character_body3d.hpp>
 | 
				
			||||||
 | 
					namespace gd = godot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Enemy : public gd::CharacterBody3D, public DamageableEntity {
 | 
				
			||||||
 | 
					    GDCLASS(Enemy, gd::CharacterBody3D);
 | 
				
			||||||
 | 
					    static void _bind_methods();
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    virtual void _ready() override;
 | 
				
			||||||
 | 
					    virtual void damage() override;
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    PlayerAnimTree *anim_tree{nullptr};
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // !ENEMY_HPP
 | 
				
			||||||
							
								
								
									
										37
									
								
								src/hitscan_muzzle.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/hitscan_muzzle.cpp
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,37 @@
 | 
				
			||||||
 | 
					#include "hitscan_muzzle.hpp"
 | 
				
			||||||
 | 
					#include "damageable_entity.hpp"
 | 
				
			||||||
 | 
					#include "godot_cpp/variant/callable.hpp"
 | 
				
			||||||
 | 
					#include "utils/godot_macros.hpp"
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/physics_direct_space_state3d.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/physics_ray_query_parameters3d.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/world3d.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/variant/utility_functions.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void HitscanMuzzle::_bind_methods() {
 | 
				
			||||||
 | 
					#define CLASSNAME HitscanMuzzle
 | 
				
			||||||
 | 
					    GDFUNCTION(fire); // allow fire() to be called from animation tracks
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void HitscanMuzzle::_ready() {
 | 
				
			||||||
 | 
					    this->set_enabled(false);
 | 
				
			||||||
 | 
					    this->set_physics_process(false);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void HitscanMuzzle::_physics_process(double) {
 | 
				
			||||||
 | 
					    this->fire_physics_check();
 | 
				
			||||||
 | 
					    this->set_physics_process(false); // since _physics_process is only used for fire_physics_check, just disable it immediately
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void HitscanMuzzle::fire() {
 | 
				
			||||||
 | 
					    this->set_physics_process(true); // offload physics checks to physics process to avoid multithreading issues
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void HitscanMuzzle::fire_physics_check() {
 | 
				
			||||||
 | 
					    this->force_raycast_update(); // since we disabled automatic updating (set_enabled(false) in _ready), we'll have to force update here.
 | 
				
			||||||
 | 
					    gd::Object *hit{this->get_collider()};
 | 
				
			||||||
 | 
					    if(hit == nullptr) return; // nothing was hit
 | 
				
			||||||
 | 
					    // see if the hit object can be damaged, damage if so
 | 
				
			||||||
 | 
					    DamageableEntity *damage_iface{dynamic_cast<DamageableEntity*>(hit)};
 | 
				
			||||||
 | 
					    if(damage_iface == nullptr) return; // hit object can't be damaged.
 | 
				
			||||||
 | 
					    damage_iface->damage();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										22
									
								
								src/hitscan_muzzle.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/hitscan_muzzle.hpp
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					#ifndef HITSCAN_MUZZLE_HPP
 | 
				
			||||||
 | 
					#define HITSCAN_MUZZLE_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/node3d.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/physics_body3d.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/ray_cast3d.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/templates/vector.hpp>
 | 
				
			||||||
 | 
					namespace gd = godot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class HitscanMuzzle : public gd::RayCast3D {
 | 
				
			||||||
 | 
					    GDCLASS(HitscanMuzzle, gd::RayCast3D);
 | 
				
			||||||
 | 
					    static void _bind_methods();
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    virtual void _ready() override;
 | 
				
			||||||
 | 
					    virtual void _physics_process(double) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void fire(); // prep a deferred call to fire_physics_check
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					    void fire_physics_check();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // !HITSCAN_MUZZLE_HPP
 | 
				
			||||||
| 
						 | 
					@ -11,13 +11,16 @@ void Player::_bind_methods() {
 | 
				
			||||||
void Player::_ready() {
 | 
					void Player::_ready() {
 | 
				
			||||||
    if(gd::Engine::get_singleton()->is_editor_hint())
 | 
					    if(gd::Engine::get_singleton()->is_editor_hint())
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    this->anim_tree = this->get_node<PlayerAnimTree>("%AnimationTree");
 | 
					    // setup input callbacks
 | 
				
			||||||
    this->input = this->get_node<utils::PlayerInput>("%PlayerInput");
 | 
					    this->input = this->get_node<utils::PlayerInput>("%PlayerInput");
 | 
				
			||||||
    this->input->listen_to(utils::PlayerInput::Listener("dir_left", "dir_right", callable_mp(this, &Player::_on_dir_horizontal)));
 | 
					    this->input->listen_to(utils::PlayerInput::Listener("dir_left", "dir_right", callable_mp(this, &Player::_on_dir_horizontal)));
 | 
				
			||||||
    this->input->listen_to(utils::PlayerInput::Listener("dir_backward", "dir_forward", callable_mp(this, &Player::_on_dir_vertical)));
 | 
					    this->input->listen_to(utils::PlayerInput::Listener("dir_backward", "dir_forward", callable_mp(this, &Player::_on_dir_vertical)));
 | 
				
			||||||
    this->input->listen_to(utils::PlayerInput::Listener("fire", callable_mp(this, &Player::_on_fire)));
 | 
					    this->input->listen_to(utils::PlayerInput::Listener("fire", callable_mp(this, &Player::_on_fire)));
 | 
				
			||||||
    this->input->listen_to(utils::PlayerInput::Listener("run", callable_mp(this, &Player::_on_run)));
 | 
					    this->input->listen_to(utils::PlayerInput::Listener("run", callable_mp(this, &Player::_on_run)));
 | 
				
			||||||
 | 
					    // get components
 | 
				
			||||||
 | 
					    this->anim_tree = this->get_node<PlayerAnimTree>("CharacterModel/AnimationTree");
 | 
				
			||||||
    this->model_node = this->get_node<gd::Node3D>("%CharacterModel");
 | 
					    this->model_node = this->get_node<gd::Node3D>("%CharacterModel");
 | 
				
			||||||
 | 
					    // setup camera
 | 
				
			||||||
    this->camera_parent = this->get_node<gd::Node3D>("%CameraParent");
 | 
					    this->camera_parent = this->get_node<gd::Node3D>("%CameraParent");
 | 
				
			||||||
    this->camera_parent->set_global_rotation(this->get_global_rotation());
 | 
					    this->camera_parent->set_global_rotation(this->get_global_rotation());
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -25,22 +28,20 @@ void Player::_ready() {
 | 
				
			||||||
void Player::_process(double delta) {
 | 
					void Player::_process(double delta) {
 | 
				
			||||||
    if(gd::Engine::get_singleton()->is_editor_hint())
 | 
					    if(gd::Engine::get_singleton()->is_editor_hint())
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    if(this->input_fire >= 0.0)
 | 
					    // process rotations
 | 
				
			||||||
        this->input_fire -= delta;
 | 
					    this->process_rotate(delta); // global character rotation
 | 
				
			||||||
    this->process_rotate(delta);
 | 
					    this->process_transform_camera(delta); // camera input rotation
 | 
				
			||||||
    this->process_transform_camera(delta);
 | 
					    // set the global motion based on model-space motion vector
 | 
				
			||||||
    // calculate the motion based on model-space motion and global basis
 | 
					 | 
				
			||||||
    gd::Basis const &model_basis{this->model_node->get_global_basis()};
 | 
					    gd::Basis const &model_basis{this->model_node->get_global_basis()};
 | 
				
			||||||
    this->anim_tree->set_walk_speed(gd::Math::max(0.f, model_basis.get_column(2).dot(this->camera_parent->get_basis().get_column(2))));
 | 
					    this->anim_tree->set_walk_speed(gd::Math::max(0.f, model_basis.get_column(2).dot(this->camera_parent->get_basis().get_column(2))));
 | 
				
			||||||
    gd::Vector3 const local_motion{this->anim_tree->get_root_motion_position()};
 | 
					    gd::Vector3 const local_motion{this->anim_tree->get_root_motion_position()};
 | 
				
			||||||
    gd::Vector3 const motion {
 | 
					    gd::Vector3 const motion {
 | 
				
			||||||
        local_motion.x * model_basis.get_column(0) +
 | 
					        local_motion.x * model_basis.get_column(0) +
 | 
				
			||||||
        local_motion.y * model_basis.get_column(1) +
 | 
					        local_motion.y * model_basis.get_column(1) +
 | 
				
			||||||
        local_motion.z * model_basis.get_column(2) +
 | 
					        local_motion.z * model_basis.get_column(2)
 | 
				
			||||||
        (this->is_on_floor() ? gd::Vector3{} : gd::Vector3{0.f, -1.f, 0.f}) // add some gravity if required
 | 
					        + (this->is_on_floor() ? gd::Vector3{} : gd::Vector3{0.f, -0.05f, 0.f}) // add some gravity if required
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    // set velocity and move
 | 
					    this->set_velocity(motion / delta); // velocity has to be in m/s, root motion is framerate-dependent. meters/second=distance/time.
 | 
				
			||||||
    this->set_velocity(motion / delta);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Player::_physics_process(double delta [[maybe_unused]]) {
 | 
					void Player::_physics_process(double delta [[maybe_unused]]) {
 | 
				
			||||||
| 
						 | 
					@ -50,7 +51,7 @@ void Player::_physics_process(double delta [[maybe_unused]]) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Player::damage() {
 | 
					void Player::damage() {
 | 
				
			||||||
 | 
					    this->anim_tree->death_animation();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Player::process_transform_camera(double delta) {
 | 
					void Player::process_transform_camera(double delta) {
 | 
				
			||||||
| 
						 | 
					@ -79,8 +80,8 @@ void Player::_on_dir_horizontal(gd::Ref<gd::InputEvent>, float value) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Player::_on_dir_vertical(gd::Ref<gd::InputEvent>, float value) {
 | 
					void Player::_on_dir_vertical(gd::Ref<gd::InputEvent>, float value) {
 | 
				
			||||||
    this->input_directions.y = value;
 | 
					    this->input_directions.y = value;
 | 
				
			||||||
    this->anim_tree->set_aim_weapon(value <= -0.9f);
 | 
					    this->anim_tree->set_aim_weapon(value <= AIM_INPUT_THRESHOLD);
 | 
				
			||||||
    this->anim_tree->set_is_walking(value > 0.5f);
 | 
					    this->anim_tree->set_is_walking(value > WALK_INPUT_THRESHOLD);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Player::_on_fire(gd::Ref<gd::InputEvent> event, float) {
 | 
					void Player::_on_fire(gd::Ref<gd::InputEvent> event, float) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,11 +32,12 @@ private:
 | 
				
			||||||
    utils::PlayerInput *input{nullptr};
 | 
					    utils::PlayerInput *input{nullptr};
 | 
				
			||||||
    gd::Node3D *model_node{nullptr};
 | 
					    gd::Node3D *model_node{nullptr};
 | 
				
			||||||
    gd::Vector2 input_directions{0.f, 0.f};
 | 
					    gd::Vector2 input_directions{0.f, 0.f};
 | 
				
			||||||
    double input_fire{0.0};
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float const ROTATION_SPEED{1.8f};
 | 
					    float const ROTATION_SPEED{1.8f};
 | 
				
			||||||
    float const CAMERA_ROTATION_SPEED{2.f};
 | 
					    float const CAMERA_ROTATION_SPEED{2.f};
 | 
				
			||||||
    float const AIMING_CAMERA_ROTATION_SPEED{1.f};
 | 
					    float const AIMING_CAMERA_ROTATION_SPEED{1.f};
 | 
				
			||||||
 | 
					    float const AIM_INPUT_THRESHOLD{-0.9f};
 | 
				
			||||||
 | 
					    float const WALK_INPUT_THRESHOLD{0.5f};
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // !TR_PLAYER_HPP
 | 
					#endif // !TR_PLAYER_HPP
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@ void PlayerAnimTree::_bind_methods() {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void PlayerAnimTree::_ready() {
 | 
					void PlayerAnimTree::_ready() {
 | 
				
			||||||
 | 
					    this->parent_3d = gd::Object::cast_to<gd::Node3D>(this->get_parent());
 | 
				
			||||||
    this->fsm = this->get("parameters/Actions/playback");
 | 
					    this->fsm = this->get("parameters/Actions/playback");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +25,12 @@ void PlayerAnimTree::_process(double delta) {
 | 
				
			||||||
    this->update_tags(this->fsm->get_current_node());
 | 
					    this->update_tags(this->fsm->get_current_node());
 | 
				
			||||||
    this->fire_weapon -= delta;
 | 
					    this->fire_weapon -= delta;
 | 
				
			||||||
    this->running_time -= delta;
 | 
					    this->running_time -= delta;
 | 
				
			||||||
 | 
					    if(this->is_dead && this->death_blend < 1.f) {
 | 
				
			||||||
 | 
					        this->death_blend = gd::Math::min(this->death_blend + float(delta * this->DEATH_BLEND_SPEED), 1.f);
 | 
				
			||||||
 | 
					        this->set("parameters/DeathBlend/blend_amount", this->death_blend);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this->parent_3d->set_quaternion(this->get_root_motion_rotation_accumulator());
 | 
				
			||||||
 | 
					    this->parent_3d->rotate_y(M_PIf);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void PlayerAnimTree::set_target_turn_speed(float value) {
 | 
					void PlayerAnimTree::set_target_turn_speed(float value) {
 | 
				
			||||||
| 
						 | 
					@ -52,7 +59,7 @@ float PlayerAnimTree::get_walk_speed() const {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void PlayerAnimTree::set_is_running() {
 | 
					void PlayerAnimTree::set_is_running() {
 | 
				
			||||||
    this->running_time = 0.25;
 | 
					    this->running_time = this->RUN_PARAM_DECAY;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool PlayerAnimTree::get_is_running() const {
 | 
					bool PlayerAnimTree::get_is_running() const {
 | 
				
			||||||
| 
						 | 
					@ -68,7 +75,7 @@ bool PlayerAnimTree::get_aim_weapon() const {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void PlayerAnimTree::set_fire_weapon() {
 | 
					void PlayerAnimTree::set_fire_weapon() {
 | 
				
			||||||
    this->fire_weapon = 0.5f;
 | 
					    this->fire_weapon = this->FIRE_PARAM_DECAY;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool PlayerAnimTree::get_fire_weapon() {
 | 
					bool PlayerAnimTree::get_fire_weapon() {
 | 
				
			||||||
| 
						 | 
					@ -77,6 +84,11 @@ bool PlayerAnimTree::get_fire_weapon() {
 | 
				
			||||||
    return is_set;
 | 
					    return is_set;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void PlayerAnimTree::death_animation() {
 | 
				
			||||||
 | 
					    this->set("parameters/DeathSeek/request", 0.f);
 | 
				
			||||||
 | 
					    this->is_dead = true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool PlayerAnimTree::match_tags(Tags tags) const {
 | 
					bool PlayerAnimTree::match_tags(Tags tags) const {
 | 
				
			||||||
    return (this->current_tags & tags) != Tags::None;
 | 
					    return (this->current_tags & tags) != Tags::None;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,8 +2,9 @@
 | 
				
			||||||
#define PLAYER_ANIM_TREE_HPP
 | 
					#define PLAYER_ANIM_TREE_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "utils/godot_macros.hpp"
 | 
					#include "utils/godot_macros.hpp"
 | 
				
			||||||
#include <godot_cpp/classes/animation_tree.hpp>
 | 
					 | 
				
			||||||
#include <godot_cpp/classes/animation_node_state_machine_playback.hpp>
 | 
					#include <godot_cpp/classes/animation_node_state_machine_playback.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/animation_tree.hpp>
 | 
				
			||||||
 | 
					#include <godot_cpp/classes/node3d.hpp>
 | 
				
			||||||
namespace gd = godot;
 | 
					namespace gd = godot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class PlayerAnimTree : public gd::AnimationTree {
 | 
					class PlayerAnimTree : public gd::AnimationTree {
 | 
				
			||||||
| 
						 | 
					@ -32,11 +33,17 @@ public:
 | 
				
			||||||
    void set_fire_weapon();
 | 
					    void set_fire_weapon();
 | 
				
			||||||
    bool get_fire_weapon();
 | 
					    bool get_fire_weapon();
 | 
				
			||||||
    bool match_tags(Tags tags) const;
 | 
					    bool match_tags(Tags tags) const;
 | 
				
			||||||
 | 
					    void death_animation();
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
    void update_tags(gd::StringName const &anim);
 | 
					    void update_tags(gd::StringName const &anim);
 | 
				
			||||||
    void commit_turn_speed();
 | 
					    void commit_turn_speed();
 | 
				
			||||||
    void commit_walk_speed();
 | 
					    void commit_walk_speed();
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
 | 
					    double const DEATH_BLEND_SPEED{1. / 0.3}; //!< multiplier for delta_time when blending from state machine to death animation
 | 
				
			||||||
 | 
					    double const FIRE_PARAM_DECAY{0.5}; //!< how many seconds it takes for a fire input to become invalid
 | 
				
			||||||
 | 
					    double const RUN_PARAM_DECAY{0.25}; //!< how many seconds to run every time set_is_running is called
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    gd::Node3D *parent_3d{nullptr};
 | 
				
			||||||
    gd::Ref<gd::AnimationNodeStateMachinePlayback> fsm;
 | 
					    gd::Ref<gd::AnimationNodeStateMachinePlayback> fsm;
 | 
				
			||||||
    float turn_speed{0.f};
 | 
					    float turn_speed{0.f};
 | 
				
			||||||
    float target_turn_speed{0.f};
 | 
					    float target_turn_speed{0.f};
 | 
				
			||||||
| 
						 | 
					@ -45,6 +52,8 @@ private:
 | 
				
			||||||
    double running_time{0.0};
 | 
					    double running_time{0.0};
 | 
				
			||||||
    bool aim_weapon{false};
 | 
					    bool aim_weapon{false};
 | 
				
			||||||
    double fire_weapon{0.0};
 | 
					    double fire_weapon{0.0};
 | 
				
			||||||
 | 
					    float death_blend{0.f};
 | 
				
			||||||
 | 
					    bool is_dead{false};
 | 
				
			||||||
    Tags current_tags{Tags::None};
 | 
					    Tags current_tags{Tags::None};
 | 
				
			||||||
    gd::StringName last_known_anim{};
 | 
					    gd::StringName last_known_anim{};
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,9 @@
 | 
				
			||||||
#include <godot_cpp/godot.hpp>
 | 
					#include <godot_cpp/godot.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "player.hpp"
 | 
					#include "player.hpp"
 | 
				
			||||||
 | 
					#include "player_anim_tree.hpp"
 | 
				
			||||||
 | 
					#include "enemy.hpp"
 | 
				
			||||||
 | 
					#include "hitscan_muzzle.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace godot;
 | 
					using namespace godot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,6 +20,8 @@ void initialize_gdextension_types(ModuleInitializationLevel p_level)
 | 
				
			||||||
    utils::godot_cpp_utils_register_types();
 | 
					    utils::godot_cpp_utils_register_types();
 | 
				
			||||||
    GDREGISTER_CLASS(Player);
 | 
					    GDREGISTER_CLASS(Player);
 | 
				
			||||||
    GDREGISTER_CLASS(PlayerAnimTree);
 | 
					    GDREGISTER_CLASS(PlayerAnimTree);
 | 
				
			||||||
 | 
					    GDREGISTER_CLASS(Enemy);
 | 
				
			||||||
 | 
					    GDREGISTER_CLASS(HitscanMuzzle);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern "C"
 | 
					extern "C"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue