EgtMachKernel 2.3a2 :
- aggiunte funzioni lua EmtExecCollisionCheck e EmtOnCollision utilizzabili solo durante la simulazione.
This commit is contained in:
@@ -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 ;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user