/* ==================== idMD5Anim::GetBounds ==================== */ void idMD5Anim::GetBounds( idBounds &bnds, int time, int cyclecount ) const { frameBlend_t frame; idVec3 offset; ConvertTimeToFrame( time, cyclecount, frame ); bnds = bounds[ frame.frame1 ]; bnds.AddBounds( bounds[ frame.frame2 ] ); // origin position offset = baseFrame[ 0 ].t; if ( jointInfo[ 0 ].animBits & ( ANIM_TX | ANIM_TY | ANIM_TZ ) ) { const float *componentPtr1 = &componentFrames[ numAnimatedComponents * frame.frame1 + jointInfo[ 0 ].firstComponent ]; const float *componentPtr2 = &componentFrames[ numAnimatedComponents * frame.frame2 + jointInfo[ 0 ].firstComponent ]; if ( jointInfo[ 0 ].animBits & ANIM_TX ) { offset.x = *componentPtr1 * frame.frontlerp + *componentPtr2 * frame.backlerp; componentPtr1++; componentPtr2++; } if ( jointInfo[ 0 ].animBits & ANIM_TY ) { offset.y = *componentPtr1 * frame.frontlerp + *componentPtr2 * frame.backlerp; componentPtr1++; componentPtr2++; } if ( jointInfo[ 0 ].animBits & ANIM_TZ ) { offset.z = *componentPtr1 * frame.frontlerp + *componentPtr2 * frame.backlerp; } } bnds[ 0 ] -= offset; bnds[ 1 ] -= offset; }
/* ================ idPhysics_StaticMulti::GetBounds ================ */ const idBounds &idPhysics_StaticMulti::GetBounds( int id ) const { int i; static idBounds bounds; if ( id >= 0 && id < clipModels.Num() ) { if ( clipModels[id] ) { return clipModels[id]->GetBounds(); } } if ( id == -1 ) { bounds.Clear(); for ( i = 0; i < clipModels.Num(); i++ ) { if ( clipModels[i] ) { bounds.AddBounds( clipModels[i]->GetAbsBounds() ); } } for ( i = 0; i < clipModels.Num(); i++ ) { if ( clipModels[i] ) { bounds[0] -= clipModels[i]->GetOrigin(); bounds[1] -= clipModels[i]->GetOrigin(); break; } } return bounds; } return bounds_zero; }