diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-11-30 09:55:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-30 09:55:30 +0100 |
commit | 11b2700b235b3bce2ddb2be0b2bb806461ebc05c (patch) | |
tree | ed3151364b5fa2907fe4d2eb62685b81d77c521c /test/src | |
parent | f3143c7a9c592ce7fdc735b8e39631718f3df276 (diff) | |
parent | 20c4e843b09b7263078c23ec635198feae03c227 (diff) | |
download | redot-cpp-11b2700b235b3bce2ddb2be0b2bb806461ebc05c.tar.gz |
Merge pull request #1321 from dsnopek/postinitialize
Send NOTIFICATION_POSTINITIALIZE to extension classes
Diffstat (limited to 'test/src')
-rw-r--r-- | test/src/example.cpp | 15 | ||||
-rw-r--r-- | test/src/example.h | 7 |
2 files changed, 22 insertions, 0 deletions
diff --git a/test/src/example.cpp b/test/src/example.cpp index 2b8bef6..5372d70 100644 --- a/test/src/example.cpp +++ b/test/src/example.cpp @@ -63,10 +63,18 @@ int ExampleRef::get_id() const { return id; } +void ExampleRef::_notification(int p_what) { + if (p_what == NOTIFICATION_POSTINITIALIZE) { + post_initialized = true; + } +} + void ExampleRef::_bind_methods() { ClassDB::bind_method(D_METHOD("set_id", "id"), &ExampleRef::set_id); ClassDB::bind_method(D_METHOD("get_id"), &ExampleRef::get_id); + ClassDB::bind_method(D_METHOD("was_post_initialized"), &ExampleRef::was_post_initialized); + ADD_PROPERTY(PropertyInfo(Variant::INT, "id"), "set_id", "get_id"); } @@ -220,6 +228,7 @@ void Example::_bind_methods() { ClassDB::bind_method(D_METHOD("def_args", "a", "b"), &Example::def_args, DEFVAL(100), DEFVAL(200)); ClassDB::bind_method(D_METHOD("callable_bind"), &Example::callable_bind); + ClassDB::bind_method(D_METHOD("test_post_initialize"), &Example::test_post_initialize); ClassDB::bind_static_method("Example", D_METHOD("test_static", "a", "b"), &Example::test_static); ClassDB::bind_static_method("Example", D_METHOD("test_static2"), &Example::test_static2); @@ -597,6 +606,12 @@ Vector4 Example::get_v4() const { return Vector4(1.2, 3.4, 5.6, 7.8); } +bool Example::test_post_initialize() const { + Ref<ExampleRef> new_example_ref; + new_example_ref.instantiate(); + return new_example_ref->was_post_initialized(); +} + // Virtual function override. bool Example::_has_point(const Vector2 &point) const { Label *label = get_node<Label>("Label"); diff --git a/test/src/example.h b/test/src/example.h index 388cc8c..72f6783 100644 --- a/test/src/example.h +++ b/test/src/example.h @@ -35,16 +35,21 @@ private: static int last_id; int id; + bool post_initialized = false; protected: static void _bind_methods(); + void _notification(int p_what); + public: ExampleRef(); ~ExampleRef(); void set_id(int p_id); int get_id() const; + + bool was_post_initialized() const { return post_initialized; } }; class ExampleMin : public Control { @@ -167,6 +172,8 @@ public: Vector2 get_custom_position() const; Vector4 get_v4() const; + bool test_post_initialize() const; + // Static method. static int test_static(int p_a, int p_b); static void test_static2(); |