LuaPlus::LuaObject LuaScriptComponent::GetObjectId() { // return the object id to lua LuaPlus::LuaObject ret; ret.AssignInteger(LuaStateManager::Get()->GetLuaState(), m_pOwner->GetId()); return ret; }
LuaPlus::LuaObject BaseScriptComponent::GetActorId(void) { //GCC_LOG("ObjectSystem", "BaseScriptComponent::GetEntityId() return 0x" + ToStr(m_pOwner->GetId(), 16) + " on C++ side"); // [rez] Wtf?? Returning an unsigned int here will produce really odd results in Release mode (debug is // fine). The number will sometimes get truncated, so 0xb1437643 might become 0xb1437600. Even though the // C++ side is getting the right number, it gets mangled on the way out to Lua. The somewhat hacky fix here // is to return a LuaPlus::LuaObject, which seems to work just fine. I'm not sure if this will cause any // efficiency issues, but I'm guessing the LuaPlus internals do something like this anyway to marshal the // data back to Lua land, so it's probably okay. LuaPlus::LuaObject ret; ret.AssignInteger(LuaStateManager::Get()->GetLuaState(), m_pOwner->GetId()); return ret; //return m_pOwner->GetId(); }