From 7a1d857de96174dfa5a0fa40f8c14acbd2f651c2 Mon Sep 17 00:00:00 2001 From: Anson Bridges Date: Sun, 25 Sep 2022 06:39:12 -0400 Subject: weapons, viewmodels, some performance fixes --- src/player_controller/playercam.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/player_controller/playercam.cpp') diff --git a/src/player_controller/playercam.cpp b/src/player_controller/playercam.cpp index f321c09..dd78834 100644 --- a/src/player_controller/playercam.cpp +++ b/src/player_controller/playercam.cpp @@ -47,12 +47,17 @@ void PlayerCam::_input(const Ref event) { } void PlayerCam::attach(Node* new_parent, String c_mode, String extra_path) { - if(get_parent() != nullptr) - get_parent()->remove_child(this); + if(get_parent() != nullptr) { + get_parent()->call_deferred("remove_child",this);} if(c_mode == "FIRSTPERSON") { head = (Spatial*)new_parent->find_node("Head", true, false); neck = (Spatial*)new_parent->find_node("Neck", true, false); arm = nullptr; mode = c_mode; } + else if (c_mode == "STATIC") { + head = nullptr; neck = nullptr; arm = nullptr; + mode = c_mode; + + } else if (c_mode == "THIRDPERSON") { head = (Spatial*)new_parent->find_node("Head", true, false); neck = (Spatial*)new_parent->find_node("Neck", true, false); arm = (SpringArm*)new_parent->find_node("SpringArm", true, false); mode = c_mode; @@ -64,7 +69,8 @@ void PlayerCam::attach(Node* new_parent, String c_mode, String extra_path) { else { head = nullptr; neck = nullptr; arm = nullptr; } - new_parent->get_node(NodePath(extra_path))->add_child(this); + add_exception(new_parent); + new_parent->get_node(NodePath(extra_path))->call_deferred("add_child",this); set_transform(Transform::IDENTITY); } -- cgit v1.2.3