3636
3737namespace godot {
3838
39- class CallableCustomMethodPointerBase {
40- public:
41- virtual Object *get_object () const = 0;
42- virtual void call (const Variant **p_arguments, int p_argcount, Variant &r_return_value, GDExtensionCallError &r_call_error) const = 0;
43- virtual ~CallableCustomMethodPointerBase () {}
39+ class CallableCustomMethodPointerBase : public CallableCustomBase {
4440};
4541
4642namespace internal {
4743
48- Callable create_custom_callable (CallableCustomMethodPointerBase *p_callable_method_pointer);
44+ Callable create_callable_from_ccmp (CallableCustomMethodPointerBase *p_callable_method_pointer);
4945
5046} // namespace internal
5147
@@ -59,8 +55,8 @@ class CallableCustomMethodPointer : public CallableCustomMethodPointerBase {
5955void (T::*method)(P...);
6056
6157public:
62- virtual Object * get_object () const override {
63- return instance;
58+ virtual ObjectID get_object () const override {
59+ return ObjectID ( instance-> get_instance_id ()) ;
6460}
6561
6662virtual void call (const Variant **p_arguments, int p_argcount, Variant &r_return_value, GDExtensionCallError &r_call_error) const override {
@@ -77,7 +73,7 @@ template <class T, class... P>
7773Callable create_custom_callable_function_pointer (T *p_instance, void (T::*p_method)(P...)) {
7874typedef CallableCustomMethodPointer<T, P...> CCMP;
7975CCMP *ccmp = memnew (CCMP (p_instance, p_method));
80- return ::godot::internal::create_custom_callable (ccmp);
76+ return ::godot::internal::create_callable_from_ccmp (ccmp);
8177}
8278
8379//
@@ -91,8 +87,8 @@ class CallableCustomMethodPointerRet : public CallableCustomMethodPointerBase {
9187(P...);
9288
9389public:
94- virtual Object * get_object () const override {
95- return instance;
90+ virtual ObjectID get_object () const override {
91+ return ObjectID ( instance-> get_instance_id ()) ;
9692}
9793
9894virtual void call (const Variant **p_arguments, int p_argcount, Variant &r_return_value, GDExtensionCallError &r_call_error) const override {
@@ -109,7 +105,7 @@ template <class T, class R, class... P>
109105Callable create_custom_callable_function_pointer (T *p_instance, R (T::*p_method)(P...)) {
110106typedef CallableCustomMethodPointerRet<T, R, P...> CCMP; // Messes with memnew otherwise.
111107CCMP *ccmp = memnew (CCMP (p_instance, p_method));
112- return ::godot::internal::create_custom_callable (ccmp);
108+ return ::godot::internal::create_callable_from_ccmp (ccmp);
113109}
114110
115111//
@@ -123,8 +119,8 @@ class CallableCustomMethodPointerRetC : public CallableCustomMethodPointerBase {
123119(P...) const ;
124120
125121public:
126- virtual Object * get_object () const override {
127- return instance;
122+ virtual ObjectID get_object () const override {
123+ return ObjectID ( instance-> get_instance_id ()) ;
128124}
129125
130126virtual void call (const Variant **p_arguments, int p_argcount, Variant &r_return_value, GDExtensionCallError &r_call_error) const override {
@@ -141,7 +137,7 @@ template <class T, class R, class... P>
141137Callable create_custom_callable_function_pointer (const T *p_instance, R (T::*p_method)(P...) const ) {
142138typedef CallableCustomMethodPointerRetC<T, R, P...> CCMP; // Messes with memnew otherwise.
143139CCMP *ccmp = memnew (CCMP (p_instance, p_method));
144- return ::godot::internal::create_custom_callable (ccmp);
140+ return ::godot::internal::create_callable_from_ccmp (ccmp);
145141}
146142
147143//
@@ -153,8 +149,8 @@ class CallableCustomStaticMethodPointer : public CallableCustomMethodPointerBase
153149void (*method)(P...);
154150
155151public:
156- virtual Object * get_object () const override {
157- return nullptr ;
152+ virtual ObjectID get_object () const override {
153+ return ObjectID () ;
158154}
159155
160156virtual void call (const Variant **p_arguments, int p_argcount, Variant &r_return_value, GDExtensionCallError &r_call_error) const override {
@@ -171,7 +167,7 @@ template <class... P>
171167Callable create_custom_callable_static_function_pointer (void (*p_method)(P...)) {
172168typedef CallableCustomStaticMethodPointer<P...> CCMP;
173169CCMP *ccmp = memnew (CCMP (p_method));
174- return ::godot::internal::create_custom_callable (ccmp);
170+ return ::godot::internal::create_callable_from_ccmp (ccmp);
175171}
176172
177173//
@@ -184,8 +180,8 @@ class CallableCustomStaticMethodPointerRet : public CallableCustomMethodPointerB
184180(P...);
185181
186182public:
187- virtual Object * get_object () const override {
188- return nullptr ;
183+ virtual ObjectID get_object () const override {
184+ return ObjectID () ;
189185}
190186
191187virtual void call (const Variant **p_arguments, int p_argcount, Variant &r_return_value, GDExtensionCallError &r_call_error) const override {
@@ -201,7 +197,7 @@ template <class R, class... P>
201197Callable create_custom_callable_static_function_pointer (R (*p_method)(P...)) {
202198typedef CallableCustomStaticMethodPointerRet<R, P...> CCMP;
203199CCMP *ccmp = memnew (CCMP (p_method));
204- return ::godot::internal::create_custom_callable (ccmp);
200+ return ::godot::internal::create_callable_from_ccmp (ccmp);
205201}
206202
207203//
0 commit comments