@@ -38,6 +38,8 @@ void CLuaEngineDefs::LoadFunctions()
3838 {" engineGetModelIDFromName" , EngineGetModelIDFromName},
3939 {" engineGetModelTextureNames" , EngineGetModelTextureNames},
4040 {" engineGetVisibleTextureNames" , EngineGetVisibleTextureNames},
41+ {" engineSetModelVisibleTime" , ArgumentParser<EngineSetModelVisibleTime>},
42+ {" engineGetModelVisibleTime" , ArgumentParser<EngineGetModelVisibleTime>},
4143 {" engineGetModelTextures" , EngineGetModelTextures},
4244 {" engineGetSurfaceProperties" , EngineGetSurfaceProperties},
4345 {" engineSetSurfaceProperties" , EngineSetSurfaceProperties},
@@ -72,13 +74,15 @@ void CLuaEngineDefs::AddClass(lua_State* luaVM)
7274 lua_classfunction (luaVM, " setAsynchronousLoading" , " engineSetAsynchronousLoading" );
7375 lua_classfunction (luaVM, " setModelLODDistance" , " engineSetModelLODDistance" );
7476 lua_classfunction (luaVM, " resetModelLODDistance" , " engineResetModelLODDistance" );
77+ lua_classfunction (luaVM, " setModelVisibleTime" , " engineSetModelVisibleTime" );
7578
7679 lua_classfunction (luaVM, " getVisibleTextureNames" , " engineGetVisibleTextureNames" );
7780 lua_classfunction (luaVM, " getModelLODDistance" , " engineGetModelLODDistance" );
7881 lua_classfunction (luaVM, " getModelTextureNames" , " engineGetModelTextureNames" );
7982 lua_classfunction (luaVM, " getModelTextures" , " engineGetModelTextures" );
8083 lua_classfunction (luaVM, " getModelIDFromName" , " engineGetModelIDFromName" );
8184 lua_classfunction (luaVM, " getModelNameFromID" , " engineGetModelNameFromID" );
85+ lua_classfunction (luaVM, " getModelVisibleTime" , " engineGetModelVisibleTime" );
8286 lua_classfunction (luaVM, " getModelPhysicalPropertiesGroup" , " engineGetModelPhysicalPropertiesGroup" );
8387 lua_classfunction (luaVM, " setModelPhysicalPropertiesGroup" , " engineSetModelPhysicalPropertiesGroup" );
8488 lua_classfunction (luaVM, " restoreModelPhysicalPropertiesGroup" , " engineRestoreModelPhysicalPropertiesGroup" );
@@ -1098,6 +1102,40 @@ int CLuaEngineDefs::EngineGetVisibleTextureNames(lua_State* luaVM)
10981102 return 1 ;
10991103}
11001104
1105+ bool CLuaEngineDefs::EngineSetModelVisibleTime (std::string strModelId, char cHourOn, char cHourOff)
1106+ {
1107+ ushort usModelID = CModelNames::ResolveModelID (strModelId);
1108+ CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
1109+ if (pModelInfo)
1110+ {
1111+ if (cHourOn >= 0 && cHourOn <= 24 && cHourOff >= 0 && cHourOff <= 24 )
1112+ {
1113+ return pModelInfo->SetTime (cHourOn, cHourOff);
1114+ }
1115+ }
1116+ return false ;
1117+ }
1118+
1119+ std::variant<bool , std::tuple<char , char >> CLuaEngineDefs::EngineGetModelVisibleTime (std::string strModelId)
1120+ {
1121+ ushort usModelID = CModelNames::ResolveModelID (strModelId);
1122+ CModelInfo* pModelInfo = g_pGame->GetModelInfo (usModelID);
1123+ if (pModelInfo)
1124+ {
1125+ char cHourOn, cHourOff;
1126+ if (pModelInfo->GetTime (cHourOn, cHourOff))
1127+ {
1128+ return std::tuple (cHourOn, cHourOff);
1129+ }
1130+ else // Model is incompatible, don't let confuse user.
1131+ {
1132+ return std::tuple (0 , 24 );
1133+ }
1134+ }
1135+
1136+ return false ;
1137+ }
1138+
11011139int CLuaEngineDefs::EngineGetModelTextures (lua_State* luaVM)
11021140{
11031141 // table engineGetModelTextures ( string/int modelName/modelID, string/table textureNames )
0 commit comments