EgtMachKernel :
- in simulazione migliorata scelta oggetti da visualizzare per collisione.
This commit is contained in:
+21
-4
@@ -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 ;
|
||||
|
||||
Reference in New Issue
Block a user