@@ -30,10 +30,10 @@ void CLuaBuildingDefs::AddClass(lua_State* luaVM)
3030
3131 lua_classfunction (luaVM, " create" , " createBuilding" );
3232
33- lua_registerclass (luaVM, " Building" );
33+ lua_registerclass (luaVM, " Building" , " Element " );
3434}
3535
36- CClientBuilding* CLuaBuildingDefs::CreateBuilding (lua_State* const luaVM, uint16_t modelId, CVector pos, CVector rot, std::optional<uint8_t > interior)
36+ CClientBuilding* CLuaBuildingDefs::CreateBuilding (lua_State* const luaVM, std:: uint16_t modelId, CVector pos, std::optional< CVector> rot, std::optional<std:: uint8_t > interior)
3737{
3838 CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine (luaVM);
3939
@@ -48,11 +48,14 @@ CClientBuilding* CLuaBuildingDefs::CreateBuilding(lua_State* const luaVM, uint16
4848 if (!CClientBuildingManager::IsValidPosition (pos))
4949 throw std::invalid_argument (" Position is outside of game world" );
5050
51- ConvertDegreesToRadians (rot);
51+ if (rot.has_value ())
52+ ConvertDegreesToRadians (rot.value ());
53+ else
54+ rot.emplace (CVector (0 , 0 , 0 ));
5255
5356 m_pBuildingManager->ResizePoolIfNeeds ();
5457
55- CClientBuilding* pBuilding = new CClientBuilding (m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot, interior.value_or (0 ));
58+ CClientBuilding* pBuilding = new CClientBuilding (m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot. value () , interior.value_or (0 ));
5659
5760 CClientEntity* pRoot = pResource->GetResourceDynamicEntity ();
5861 pBuilding->SetParent (pRoot);
0 commit comments