@@ -286,37 +286,61 @@ LuaError *LuaState::pushVariant(lua_State *state, Variant var) {
286286 }
287287 case Variant::Type::VECTOR2: {
288288 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
289+ #ifndef LAPI_GDEXTENSION
290+ *userdata = var;
291+ #else
289292 memmove (userdata, (void *)&var, sizeof (Variant));
293+ #endif
290294 luaL_setmetatable (state, " mt_Vector2" );
291295 break ;
292296 }
293297 case Variant::Type::VECTOR3: {
294298 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
299+ #ifndef LAPI_GDEXTENSION
300+ *userdata = var;
301+ #else
295302 memmove (userdata, (void *)&var, sizeof (Variant));
303+ #endif
296304 luaL_setmetatable (state, " mt_Vector3" );
297305 break ;
298306 }
299307 case Variant::Type::COLOR: {
300308 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
309+ #ifndef LAPI_GDEXTENSION
310+ *userdata = var;
311+ #else
301312 memmove (userdata, (void *)&var, sizeof (Variant));
313+ #endif
302314 luaL_setmetatable (state, " mt_Color" );
303315 break ;
304316 }
305317 case Variant::Type::RECT2: {
306318 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
319+ #ifndef LAPI_GDEXTENSION
320+ *userdata = var;
321+ #else
307322 memmove (userdata, (void *)&var, sizeof (Variant));
323+ #endif
308324 luaL_setmetatable (state, " mt_Rect2" );
309325 break ;
310326 }
311327 case Variant::Type::PLANE: {
312328 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
329+ #ifndef LAPI_GDEXTENSION
330+ *userdata = var;
331+ #else
313332 memmove (userdata, (void *)&var, sizeof (Variant));
333+ #endif
314334 luaL_setmetatable (state, " mt_Plane" );
315335 break ;
316336 }
317337 case Variant::Type::SIGNAL: {
318338 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
339+ #ifndef LAPI_GDEXTENSION
340+ *userdata = var;
341+ #else
319342 memmove (userdata, (void *)&var, sizeof (Variant));
343+ #endif
320344 luaL_setmetatable (state, " mt_Signal" );
321345 break ;
322346 }
@@ -358,10 +382,12 @@ LuaError *LuaState::pushVariant(lua_State *state, Variant var) {
358382 break ;
359383 }
360384
385+ #ifdef LAPI_GDEXTENSION
361386 // If the type being pushed is a RefCounted, increase its refcount.
362387 if (RefCounted *ref = Object::cast_to<RefCounted>(var.operator Object *()); ref != nullptr ) {
363388 ref->reference ();
364389 }
390+ #endif
365391
366392// If the type being pushed is a LuaCallableExtra. use mt_CallableExtra instead
367393#ifndef LAPI_GDEXTENSION
@@ -370,33 +396,48 @@ LuaError *LuaState::pushVariant(lua_State *state, Variant var) {
370396 // blame this on https://github.com/godotengine/godot-cpp/issues/995
371397 if (LuaCallableExtra *func = dynamic_cast <LuaCallableExtra *>(var.operator Object *()); func != nullptr ) {
372398#endif
373- void *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
399+ Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
400+ #ifndef LAPI_GDEXTENSION
401+ *userdata = var;
402+ #else
374403 memmove (userdata, (void *)&var, sizeof (Variant));
404+ #endif
375405 luaL_setmetatable (state, " mt_CallableExtra" );
376406 break ;
377407 }
378408
379409 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
410+ #ifndef LAPI_GDEXTENSION
411+ *userdata = var;
412+ #else
380413 memmove (userdata, (void *)&var, sizeof (Variant));
414+ #endif
381415 luaL_setmetatable (state, " mt_Object" );
382416 break ;
383417 }
384418 case Variant::Type::CALLABLE: {
385- #ifndef LAPI_GDEXTENSION
386- // If the callable type is a luaCallable, just push the actual lua function onto the stack.
387419 Callable callable = var.operator Callable ();
388420 if (callable.is_custom ()) {
389- CallableCustom *custom = callable. get_custom ();
390- LuaCallable * luaCallable = dynamic_cast <LuaCallable *>(custom);
391- if (luaCallable != nullptr ) {
421+ # ifndef LAPI_GDEXTENSION
422+ // If the callable type is a luaCallable, just push the actual lua function onto the stack.
423+ if (LuaCallable *luaCallable = dynamic_cast <LuaCallable *>(callable. get_custom ()); luaCallable != nullptr ) {
392424 lua_rawgeti (state, LUA_REGISTRYINDEX, luaCallable->getFuncRef ());
393425 break ;
394426 }
395- }
396427#endif
428+ Ref<LuaCallableExtra> callableCustom;
429+ callableCustom.instantiate ();
430+ callableCustom->setInfo (callable, 0 , false , false );
431+ LuaState::pushVariant (state, callableCustom);
432+ break ;
433+ }
397434
398435 Variant *userdata = (Variant *)lua_newuserdata (state, sizeof (Variant));
436+ #ifndef LAPI_GDEXTENSION
437+ *userdata = var;
438+ #else
399439 memmove (userdata, (void *)&var, sizeof (Variant));
440+ #endif
400441 luaL_setmetatable (state, " mt_Callable" );
401442 break ;
402443 }
0 commit comments