void CCollisionComponent::InitFromStructure( Script::CStruct* pParams ) { Dbg_MsgAssert( pParams, ( "No node data?" ) ); Dbg_MsgAssert( !mp_collision, ( "Set up collision twice?" ) ); uint32 col_type_checksum = Nx::vCOLL_TYPE_NONE; pParams->GetChecksum( CRCD(0x2d7e583b,"CollisionMode"), &col_type_checksum ); Nx::CollType col_type = Nx::CCollObj::sConvertTypeChecksum( col_type_checksum ); if ( col_type != Nx::vCOLL_TYPE_NONE ) { uint32 class_checksum = 0; pParams->GetChecksum("class", &class_checksum); if ( class_checksum == CRCD(0xb7b3bd86,"LevelObject") ) { uint32 name; pParams->GetChecksum(CRCD(0xa1dc81f9,"name"), &name, Script::ASSERT); Nx::CSector *p_sector = Nx::CEngine::sGetSector(name); Dbg_MsgAssert( p_sector, ( "WARNING: sGetSector(0x%x) returned NULL (%s)\n", name, Script::FindChecksumName(name) ) ); Nx::CCollObjTriData *p_coll_tri_data = p_sector->GetCollSector()->GetGeometry(); InitCollision(col_type, p_coll_tri_data); } else { InitCollision(col_type); } } }
void Physics::ResetCollision( void ) { ExitCollision(); InitCollision(); }