From 2c7a982a28b7e037302db5450b20a0dc9c49e81c Mon Sep 17 00:00:00 2001 From: Relintai Date: Wed, 29 Jul 2020 15:21:29 +0200 Subject: [PATCH] Added a body changed signal, and a vmethod to Entity. --- entities/entity.cpp | 13 +++++++++++++ entities/entity.h | 1 + 2 files changed, 14 insertions(+) diff --git a/entities/entity.cpp b/entities/entity.cpp index 1f04b4a..226bbca 100644 --- a/entities/entity.cpp +++ b/entities/entity.cpp @@ -192,9 +192,18 @@ void Entity::instance_body(const Ref &data, const int model_index) { add_child(node); set_body(node); + + on_body_changed(); } } +void Entity::on_body_changed() { + if (has_method("_body_changed")) + call("_body_changed"); + + emit_signal("body_changed", this); +} + NodePath Entity::get_character_skeleton_path() { return _character_skeleton_path; } @@ -7335,6 +7344,10 @@ void Entity::_bind_methods() { ClassDB::bind_method(D_METHOD("set_character_skeleton", "skeleton"), &Entity::set_character_skeleton); ClassDB::bind_method(D_METHOD("instance_body"), &Entity::instance_body); + ClassDB::bind_method(D_METHOD("on_body_changed"), &Entity::on_body_changed); + + BIND_VMETHOD(MethodInfo("_body_changed")); + ADD_SIGNAL(MethodInfo("body_changed", PropertyInfo(Variant::OBJECT, "entity", PROPERTY_HINT_RESOURCE_TYPE, "Entity"))); //Transforms ClassDB::bind_method(D_METHOD("get_transform_3d", "only_stored"), &Entity::get_transform_3d, DEFVAL(false)); diff --git a/entities/entity.h b/entities/entity.h index 3477fc2..a9cf663 100644 --- a/entities/entity.h +++ b/entities/entity.h @@ -235,6 +235,7 @@ public: void set_body(Node *body); void instance_body(const Ref &data, const int model_index); + void on_body_changed(); NodePath get_character_skeleton_path(); void set_character_skeleton_path(NodePath value);