EgtMachKernel 2.3a2 :

- aggiunte funzioni lua EmtExecCollisionCheck e EmtOnCollision utilizzabili solo durante la simulazione.
This commit is contained in:
Dario Sassi
2021-01-03 17:10:01 +00:00
parent 850379ad03
commit 6bcfdbf673
6 changed files with 73 additions and 2 deletions
+45
View File
@@ -120,6 +120,10 @@ Machine::LuaInit( const string& sMachineName)
m_LuaMgr.RegisterFunction( "EmtSetWarning", Machine::LuaEmtSetWarning) ;
// registro la funzione per aggiungere un oggetto da verificare per la collisione in simulazione
m_LuaMgr.RegisterFunction( "EmtAddCollisionObj", Machine::LuaEmtAddCollisionObj) ;
// registro la funzione di esecuzione della verifica di collisione in simulazione
m_LuaMgr.RegisterFunction( "EmtExecCollisionCheck", Machine::LuaEmtExecCollisionCheck) ;
// registro la funzione di gestione della collisione in simulazione
m_LuaMgr.RegisterFunction( "EmtOnCollision", Machine::LuaEmtOnCollision) ;
return true ;
}
@@ -1179,3 +1183,44 @@ Machine::LuaEmtAddCollisionObj( lua_State* L)
LuaSetParam( L, bOk) ;
return 1 ;
}
//----------------------------------------------------------------------------
int
Machine::LuaEmtExecCollisionCheck( lua_State* L)
{
// Nessun parametro
LuaClearStack( L) ;
// verifico ci sia una macchina attiva
if ( m_pMchLua == nullptr)
return luaL_error( L, " Unknown Machine") ;
// eseguo la verifica di collisione (nessuna collisione -> true)
int nCdInd = -1, nObjInd = -1 ;
bool bOk = ( m_pMchLua->m_pMchMgr != nullptr && m_pMchLua->m_pMchMgr->SimExecCollisionCheck( nCdInd, nObjInd)) ;
// assegno risultato
LuaSetParam( L, bOk) ;
LuaSetParam( L, nCdInd) ;
LuaSetParam( L, nObjInd) ;
return 3 ;
}
//----------------------------------------------------------------------------
int
Machine::LuaEmtOnCollision( lua_State* L)
{
// Due parametri : nCdInd, nObjInd
int nCdInd ;
LuaCheckParam( L, 1, nCdInd)
int nObjInd ;
LuaCheckParam( L, 2, nObjInd)
LuaClearStack( L) ;
// verifico ci sia una macchina attiva
if ( m_pMchLua == nullptr)
return luaL_error( L, " Unknown Machine") ;
// eseguo la verifica di collisione (nessuna collisione -> true)
int nErr = 0 ;
bool bOk = ( m_pMchLua->m_pMchMgr != nullptr && m_pMchLua->m_pMchMgr->SimOnCollision( nCdInd, nObjInd, nErr)) ;
// assegno risultato
LuaSetParam( L, bOk) ;
LuaSetParam( L, nErr) ;
return 2 ;
}