EgtMachKernel :

- in simulazione migliorata scelta oggetti da visualizzare per collisione.
This commit is contained in:
Dario Sassi
2024-07-23 12:02:09 +02:00
parent db580f95d2
commit c68d841b46
+21 -4
View File
@@ -1514,6 +1514,25 @@ Simulator::ExecCollisionCheck( int& nCdInd, int& nObjInd, int nMoveType)
return true ;
}
//----------------------------------------------------------------------------
static int
FindCollisionMarkId( const IGeomDB* pGeomDB, int nCollId)
{
int nCollParId = pGeomDB->GetParentId( nCollId) ;
string sCollParName = "COLLISION" ;
pGeomDB->GetName( nCollParId, sCollParName) ;
if ( sCollParName != "COLLISION")
return nCollParId ;
else {
int nCollGprId = pGeomDB->GetParentId( nCollParId) ;
int nCollSolId = pGeomDB->GetFirstNameInGroup( nCollGprId, "SOLID") ;
if ( nCollSolId != GDB_ID_NULL)
return nCollSolId ;
else
return nCollGprId ;
}
}
//----------------------------------------------------------------------------
bool
Simulator::SetCollisionMark( int nCdInd, int nObjInd)
@@ -1521,10 +1540,8 @@ Simulator::SetCollisionMark( int nCdInd, int nObjInd)
if ( m_pGeomDB == nullptr)
return false ;
m_nCollMarkId.clear() ;
int nCdGeoId = m_pGeomDB->GetParentId( m_pGeomDB->GetParentId( m_CdId[nCdInd])) ;
int nCoGeoId = m_pGeomDB->GetParentId( m_pGeomDB->GetParentId( m_CollObj[nObjInd].nFrameId)) ;
m_nCollMarkId.push_back( nCdGeoId) ;
m_nCollMarkId.push_back( nCoGeoId) ;
m_nCollMarkId.push_back( FindCollisionMarkId( m_pGeomDB, m_CdId[nCdInd])) ;
m_nCollMarkId.push_back( FindCollisionMarkId( m_pGeomDB, m_CollObj[nObjInd].nFrameId)) ;
for ( auto nId : m_nCollMarkId)
m_pGeomDB->SetMark( nId) ;
return true ;