diff --git a/modules/going/checkpoint.cpp b/modules/going/checkpoint.cpp index 2a520f89..0454a2a5 100644 --- a/modules/going/checkpoint.cpp +++ b/modules/going/checkpoint.cpp @@ -5,8 +5,7 @@ void Checkpoint::_bind_methods() { BIND_PROPERTY(Variant::VECTOR3, location); - BIND_PROPERTY(Variant::BOOL, can_jump); - BIND_PROPERTY(Variant::BOOL, can_bash); + BIND_PROPERTY(Variant::VECTOR3, camera_location); } void Checkpoint::set_location(Transform3D location) { @@ -17,32 +16,22 @@ Transform3D Checkpoint::get_location() const { return this->location; } -void Checkpoint::set_can_jump(bool can_jump) { - this->can_jump = can_jump; +void Checkpoint::set_camera_location(Transform3D location) { + this->camera_location = location; } -bool Checkpoint::get_can_jump() const { - return this->can_jump; -} - -void Checkpoint::set_can_bash(bool can_bash) { - this->can_bash = can_bash; -} - -bool Checkpoint::get_can_bash() const { - return this->can_bash; +Transform3D Checkpoint::get_camera_location() const { + return this->camera_location; } void Checkpoint::load(PlayerBody *body) const { body->set_global_transform(this->location); - body->set_can_jump(this->can_jump); - // body->set_can_bash(this->can_bash); + body->get_camera()->set_global_transform(this->camera_location); } void Checkpoint::save(PlayerBody *body) { this->set_location(body->get_global_transform_interpolated()); - this->set_can_jump(body->get_can_jump()); - // self->set_can_bash(body->get_can_bash()); + this->set_camera_location(body->get_camera()->get_global_transform_interpolated()); } Ref Checkpoint::save_new(PlayerBody *body) { diff --git a/modules/going/checkpoint.h b/modules/going/checkpoint.h index 53afddd9..5ffc58fa 100644 --- a/modules/going/checkpoint.h +++ b/modules/going/checkpoint.h @@ -13,16 +13,15 @@ class Checkpoint : public Resource { public: void set_location(Transform3D location); Transform3D get_location() const; - void set_can_jump(bool can_jump); - bool get_can_jump() const; - void set_can_bash(bool can_bash); - bool get_can_bash() const; + void set_camera_location(Transform3D camera_location); + Transform3D get_camera_location() const; void load(PlayerBody *body) const; void save(PlayerBody *body); static Ref save_new(PlayerBody *body); private: Transform3D location{}; + Transform3D camera_location{}; bool can_jump{false}, can_bash{false}; }; diff --git a/modules/going/player_body.cpp b/modules/going/player_body.cpp index 8dca37ab..6c984563 100644 --- a/modules/going/player_body.cpp +++ b/modules/going/player_body.cpp @@ -46,6 +46,9 @@ void PlayerBody::_notification(int what) { case NOTIFICATION_ENTER_TREE: this->enter_tree(); return; + case NOTIFICATION_READY: + this->ready(); + return; case NOTIFICATION_PROCESS: this->process(this->get_process_delta_time()); return; @@ -61,6 +64,10 @@ void PlayerBody::enter_tree() { this->model = Object::cast_to(this->get_node(NodePath("character"))); this->anim = Object::cast_to(this->get_node(NodePath("character/AnimationPlayer"))); this->camera = Object::cast_to(this->get_node(NodePath("Camera3D"))); + this->state = Object::cast_to(this->get_node(NodePath("%PlayerStateMachine"))); +} + +void PlayerBody::ready() { this->camera->set_fov(this->min_fov); this->last_checkpoint = Checkpoint::save_new(this); } @@ -85,6 +92,8 @@ void PlayerBody::save_checkpoint() { void PlayerBody::load_checkpoint() { this->last_checkpoint->load(this); + this->force_update_transform(); + this->set_velocity(Vector3{}); this->state->force_state(); } diff --git a/modules/going/player_body.h b/modules/going/player_body.h index 35426ef6..c3b7016c 100644 --- a/modules/going/player_body.h +++ b/modules/going/player_body.h @@ -12,6 +12,7 @@ class PlayerBody : public CharacterBody3D { static void _bind_methods(); void _notification(int what); void enter_tree(); + void ready(); void process(double delta); void physics_process(double delta); diff --git a/project/models/player/character.blend b/project/models/player/character.blend index bfe001e9..ee3167fb 100644 Binary files a/project/models/player/character.blend and b/project/models/player/character.blend differ diff --git a/project/models/player/character.blend1 b/project/models/player/character.blend1 index 835f2789..a37078e1 100644 Binary files a/project/models/player/character.blend1 and b/project/models/player/character.blend1 differ diff --git a/project/models/terrains/level.blend b/project/models/terrains/level.blend index c0c940b0..f9c2c950 100644 Binary files a/project/models/terrains/level.blend and b/project/models/terrains/level.blend differ diff --git a/project/models/terrains/level.blend1 b/project/models/terrains/level.blend1 index 0ea119ef..d3b71a23 100644 Binary files a/project/models/terrains/level.blend1 and b/project/models/terrains/level.blend1 differ diff --git a/project/objects/player.tscn b/project/objects/player.tscn index 71efd7f4..1c9f7104 100644 --- a/project/objects/player.tscn +++ b/project/objects/player.tscn @@ -36,6 +36,7 @@ target_speed = 25.0 jump_impulse = Vector2(0.9, 5) [node name="PlayerStateMachine" type="PlayerStateMachine" parent="."] +unique_name_in_owner = true [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.05124, 0) diff --git a/project/project.godot b/project/project.godot index 1f20dc33..334884bc 100644 --- a/project/project.godot +++ b/project/project.godot @@ -27,31 +27,37 @@ window/vsync/vsync_mode=0 move_left={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) ] } move_right={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) ] } move_forward={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) ] } move_back={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) ] } split_step={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null) ] } jump={ "deadzone": 0.2, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null) ] } diff --git a/project/scenes/valley.tscn b/project/scenes/valley.tscn index 0d21ef2a..55948b2f 100644 --- a/project/scenes/valley.tscn +++ b/project/scenes/valley.tscn @@ -150,6 +150,70 @@ transform = Transform3D(0.419484, 0.0507518, -0.906343, 1.17347e-07, 0.998436, 0 [node name="Node3D169" parent="level" instance=ExtResource("3_lj5yw")] transform = Transform3D(0.952997, 0.103831, -0.284635, -0.108312, 0.994117, 1.04308e-07, 0.282961, 0.0308292, 0.958637, 145.181, 0.286187, 130.351) +[node name="Node3D173" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.952997, 0.103831, -0.284635, -0.108312, 0.994117, 1.04308e-07, 0.282961, 0.0308292, 0.958637, 168.889, 12.9213, 158.179) +metadata/_edit_group_ = true + +[node name="Node3D234" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.952997, 0.103831, -0.284635, -0.108312, 0.994117, 1.04308e-07, 0.282961, 0.0308292, 0.958637, 162.185, 12.9213, 137.723) +metadata/_edit_group_ = true + +[node name="Node3D237" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.952997, 0.103831, -0.284635, -0.108312, 0.994117, 1.04308e-07, 0.282961, 0.0308292, 0.958637, 185.523, 12.9213, 134.48) +metadata/_edit_group_ = true + +[node name="Node3D255" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.952997, 0.103831, -0.284635, -0.108312, 0.994117, 1.04308e-07, 0.282961, 0.0308292, 0.958637, 169.521, 12.9213, 113.706) +metadata/_edit_group_ = true + +[node name="Node3D238" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.952997, 0.103831, -0.284635, -0.108312, 0.994117, 1.04308e-07, 0.282961, 0.0308292, 0.958637, 206.013, 12.9213, 115.293) +metadata/_edit_group_ = true + +[node name="Node3D244" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.952997, 0.103831, -0.284635, -0.108312, 0.994117, 1.04308e-07, 0.282961, 0.0308292, 0.958637, 228.596, 12.9213, 107.531) +metadata/_edit_group_ = true + +[node name="Node3D174" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 191.303, 12.9213, 156.299) +metadata/_edit_group_ = true + +[node name="Node3D177" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 210.785, 12.9213, 155.892) +metadata/_edit_group_ = true + +[node name="Node3D213" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 229.302, 12.9213, 145.232) +metadata/_edit_group_ = true + +[node name="Node3D218" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 229.302, 12.9213, 145.232) +metadata/_edit_group_ = true + +[node name="Node3D219" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 209.497, 12.9213, 140.626) +metadata/_edit_group_ = true + +[node name="Node3D258" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 156.069, 12.9213, 94.6004) +metadata/_edit_group_ = true + +[node name="Node3D226" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 249.623, 12.9213, 148.498) +metadata/_edit_group_ = true + +[node name="Node3D233" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 237.032, 12.9213, 130.943) +metadata/_edit_group_ = true + +[node name="Node3D179" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 198.203, 6.57293, 166.993) +metadata/_edit_group_ = true + +[node name="Node3D180" parent="level" instance=ExtResource("3_lj5yw")] +transform = Transform3D(0.725555, 0, 0.688165, 0, 1, 0, -0.688165, 0, 0.725555, 216.786, 6.57293, 165.119) +metadata/_edit_group_ = true + [node name="Node3D176" parent="level" instance=ExtResource("3_lj5yw")] transform = Transform3D(0.0886341, 0.0799352, 0.992852, -1.1595e-07, 0.996775, -0.0802511, -0.996065, 0.00711287, 0.0883483, 143.025, -0.200879, 148.057) @@ -1368,6 +1432,75 @@ transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561 [node name="Evertre14" parent="level" instance=ExtResource("8_l73gk")] transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -3.38254, 18.4091, 399.123) +[node name="Evertre33" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -17.2473, 11.2643, 443.769) + +[node name="Evertre34" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -32.4798, 11.2643, 454.614) + +[node name="Evertre35" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -12.378, 11.2643, 456.756) + +[node name="Evertre36" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, 4.30957, 11.2643, 453.546) + +[node name="Evertre37" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, 2.6091, 11.2643, 443.211) + +[node name="Evertre39" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, 10.0671, 11.2643, 420.669) + +[node name="Evertre38" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -8.8195, 11.2643, 447.976) + +[node name="Evertre40" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, 15.4028, 11.2643, 446.201) + +[node name="Evertre41" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, 22.8192, 11.2643, 428.729) + +[node name="Evertre42" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -35.9533, 11.2643, 441.454) + +[node name="Evertre43" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -45.0486, 11.2643, 457.168) + +[node name="Evertre44" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -80.4115, 11.2643, 407.324) + +[node name="Evertre51" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -60.7866, 11.2643, 414.031) + +[node name="Evertre52" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -17.5432, 11.2643, 415.655) + +[node name="Evertre53" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -36.6727, 11.2643, 415.34) + +[node name="Evertre54" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, 17.3577, 11.2643, 411.762) + +[node name="Evertre55" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -0.192945, 11.2643, 411.762) + +[node name="Evertre45" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -95.6595, 11.2643, 394.926) + +[node name="Evertre46" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -51.2812, 11.2643, 432.799) + +[node name="Evertre47" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -58.7669, 11.2643, 444.695) + +[node name="Evertre48" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -75.6998, 11.2643, 439.298) + +[node name="Evertre49" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -66.3773, 11.2643, 431.034) + +[node name="Evertre50" parent="level" instance=ExtResource("8_l73gk")] +transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -82.3773, 11.2643, 425.034) + [node name="Evertre28" parent="level" instance=ExtResource("8_l73gk")] transform = Transform3D(0.0847561, 0, 0.996402, 0, 1, 0, -0.996402, 0, 0.0847561, -19.7205, 18.4091, 397.907)