From 62039380a67b6da396d1c8d745d2e2625ba988fc Mon Sep 17 00:00:00 2001 From: Anson Bridges Date: Thu, 22 Sep 2022 08:24:37 -0400 Subject: network lag? camera and movement controller merged to same gdnative script --- src/player_controller/playercontroller.cpp | 44 +++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'src/player_controller/playercontroller.cpp') diff --git a/src/player_controller/playercontroller.cpp b/src/player_controller/playercontroller.cpp index 6ea5544..e14aa5e 100644 --- a/src/player_controller/playercontroller.cpp +++ b/src/player_controller/playercontroller.cpp @@ -126,7 +126,7 @@ void PlayerController::set_net_owner(int owner_id) { nametag->set_text(""); set_network_master(owner_id); if(owner_id != 1) - nametag->set_text(String(world->call("get_players_info")[owner_id][0])); + nametag->set_text(String(world->call("get_players_info", owner_id, 0))); if(get_tree()->get_network_unique_id() != 1){ if(owner_id == (int)world->call("get_client_id")){ nametag->set_visible(false); @@ -143,7 +143,7 @@ void PlayerController::set_net_owner(int owner_id) { void PlayerController::deselect_character() { if(is_network_master()){ - world->call("set_player_char", nullptr); + world->call("set_player_char", "NULL"); if((int)world->call("get_client_id") != 1)cam->attach(world, "STATIC", "./DEFAULTCAM"); rpc("set_net_owner", 1); } @@ -177,12 +177,12 @@ bool PlayerController::on_floor_test() { if(feet->is_colliding()){ is_on_floor = true; floor_normal = Vector3::UP; - floorspeed = feet->get_collider()->has_method("get_linear_velocity") ? feet->get_collider()->get_linear_velocity() : Vector3::ZERO; + floorspeed = feet->get_collider()->has_method("get_linear_velocity") ? ((RigidBody *)(feet->get_collider()))->get_linear_velocity() : Vector3::ZERO; return true; } if(player_state){ - for(int i = 0;i< player_state->get_contact_count()) { - float contact_angle_from_up = Vector3::UP.angle_to(player_state->get_contact_local_normal(i)) + for(int i = 0;i< player_state->get_contact_count(); i++) { + float contact_angle_from_up = Vector3::UP.angle_to(player_state->get_contact_local_normal(i)); if(contact_angle_from_up < FLOOR_MAX_ANGLE) { floor_normal = player_state->get_contact_local_normal(i); is_on_floor = true; @@ -203,12 +203,12 @@ void PlayerController::_integrate_forces(PhysicsDirectBodyState *state) { set_friction(0); break; } - if(i == player_state.get_contact_count() - 1) + if(i == (player_state->get_contact_count() - 1)) set_friction(1); } rpc("set_phys_transform", get_transform(), get_linear_velocity()); if(get_global_transform().origin.y < -30) - rpc("damage", 500000, "drown", Array::make(1, String("Davy Jones")); + rpc("damage", 500000, "drown", Array::make(1, String("Davy Jones"))); } void PlayerController::walk(float _delta) { @@ -236,15 +236,15 @@ void PlayerController::walk(float _delta) { void PlayerController::jump() { can_jump = false; - apply_central_impulse(Vector3.UP*jump_height); - yield(get_tree().create_timer(0.05),"timeout"); + apply_central_impulse(Vector3::UP*jump_height); + //Godot::yield(get_tree().create_timer(0.05),"timeout"); can_jump = true; } void PlayerController::swim(float _delta) { // #drag and buoyancy - add_central_force(Vector3::UP*weight); - add_central_force(-100*linear_velocity); + add_central_force(Vector3::UP*get_weight()); + add_central_force(-100*get_linear_velocity()); // #controls Basis dir = head->get_global_transform().basis; Vector3 m_dir = -move_axis.x * dir.z + move_axis.y * dir.x; @@ -262,32 +262,32 @@ void PlayerController::exit_water() { } void PlayerController::mount_ladder(Spatial *target_ladder) { - Spatial *ladder_tracker = Spatial::new(); - ladder_tracker->name = get_name(); + Spatial *ladder_tracker = Spatial::_new(); + ladder_tracker->set_name(get_name()); target_ladder->add_child(ladder_tracker); - ladder_tracker->set_transform(target_ladder->get_node("BOTTOM")->get_transform(); + ladder_tracker->set_transform(target_ladder->get_node("BOTTOM")->get_transform()); - ladder_tracker->set_global_transform( Transform(target_ladder->call("get_nearest_point_to_route", get_global_transform().origin), ladder_tracker->get_global_transform().basis ) ); - look_at(get_global_transform().origin + target_ladder->get_global_transform().basis.x, target_ladder->get_global_transform().basis.y) + ladder_tracker->set_global_transform( Transform( ladder_tracker->get_global_transform().basis, (Vector3)target_ladder->call("get_nearest_point_to_route", get_global_transform().origin)) ); + look_at(get_global_transform().origin + target_ladder->get_global_transform().basis.x, target_ladder->get_global_transform().basis.y); ladder_m = ladder_tracker; Transform t = ladder_m->get_global_transform(); - set_global_transform( Transform(t.origin, t.basis.orthonormalized())); + set_global_transform( Transform(t.basis.orthonormalized(), t.origin)); set_linear_velocity(Vector3::ZERO); set_gravity_scale(0.0); } void PlayerController::climb_ladder(float delta) { Vector3 new_ladder_pos = ladder_m->get_global_transform().origin + ladder_m->get_global_transform().basis.y.normalized() * move_axis.x * delta * climb_speed; - float prog = ladder_m->get_parent()->call("get_climb_scalar", new_ladder_pos) - if(prog >= 0.0 and && <= 1.0) - ladder_m->set_global_transform(Transform(new_ladder_pos, ladder_m->get_global_transform().basis)); + float prog = ladder_m->get_parent()->call("get_climb_scalar", new_ladder_pos); + if(prog >= 0.0 && prog <= 1.0) + ladder_m->set_global_transform(Transform(ladder_m->get_global_transform().basis, new_ladder_pos)); Transform t = ladder_m->get_global_transform(); - set_global_transform( Transform(t.origin, t.basis.orthonormalized())); + set_global_transform( Transform(t.basis.orthonormalized(), t.origin )); } void PlayerController::leave_ladder() { - if((ladder_m->get_parent()->get_node("TOP")->global_transform.origin - get_global_transform().origin).length_squared() < 0.01) + if((ladder_m->get_parent()->get_node("TOP")->get_global_transform().origin - get_global_transform().origin).length_squared() < 0.01) apply_central_impulse(-400*ladder_m->get_global_transform().basis.z); Transform t = get_global_transform(); t.basis = world->get_global_transform().basis; -- cgit v1.2.3