summaryrefslogtreecommitdiff
path: root/src/player_controller/playercam.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/player_controller/playercam.cpp')
-rw-r--r--src/player_controller/playercam.cpp12
1 files changed, 9 insertions, 3 deletions
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<InputEvent> 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);
}