-
Notifications
You must be signed in to change notification settings - Fork 687
Open
Labels
enhancementNew feature or requestNew feature or request
Description
最近我们这边在代码中发现一个错误,有同事在构造FTransform的时候,本应该是FQuat的参数,他传入了一个FRotator,UnLua这里只是强制转换了一下类型而并没有出现报错,导致这个问题存在了一个多月,直到最近另一个同事使用源码Debug版的引擎,才发现的。
感觉可以在Editor上加一些验证,不然的话这种问题真的很难查证T.T
template<typename _Ty>
_Ty* GetCppInstanceFastWithCheck(lua_State* L, int32 Index) {
bool bTwoLvlPtr = false;
void* Userdata = GetUserdataFast(L, Index, &bTwoLvlPtr);
if (Userdata){
if(bTwoLvlPtr)
Userdata = *((void**)Userdata) ;
#ifdef WITH_EDITOR
if (lua_getmetatable(L, Index)) {
const char* Typename = UnLua::TType<_Ty>::GetName();
luaL_getmetatable(L, Typename);
if (!lua_rawequal(L, -1, -2)) {
const char* ErrorString = nullptr;
luaL_traceback(L, L, ErrorString, 1);
ErrorString = lua_tostring(L, -1);
UE_LOG(LogUnLua, Error, TEXT("Must Use Type: %s \n %s"), UTF8_TO_TCHAR(Typename), UTF8_TO_TCHAR(ErrorString));
}
lua_pop(L, 2);
}
#endif // WITH_EDITOR
return (_Ty*)Userdata; // return instance's address
}
return nullptr;
}Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
