void KMovableObject::ProcessMove() { if (m_eMoveType == mosFree) { MoveXY(m_nVelocityX, m_nVelocityY); MoveZ(m_nVelocityZ); AfterProcessMoveZ(); CheckCollisionObj(); ProcessRebounds(); assert(!m_bXYRebound && !m_bXZRebound && !m_bYZRebound); } }
void vrObject::Move( ) { /* if ( v_speed.x > v_maxspeed.x ) v_speed.x = v_maxspeed.x; if ( v_speed.y > v_maxspeed.y ) v_speed.y = v_maxspeed.y; if ( v_speed.z > v_maxspeed.z ) v_speed.z = v_maxspeed.z; */ //v_speed.x = ( v_speed.x > v_maxspeed.x ) ? v_maxspeed.x : v_speed.x; if ( v_speed.x !=0 ) MoveX( ); if ( v_speed.y !=0 ) MoveY( ); if ( v_speed.z !=0 ) MoveZ( ); }
void KMovableObject::OnTrackMove(int nCurLoop) { BOOL bMoveFinished = false; KPOSITION cCur = GetPosition(); KPOSITION cDst; assert(m_pPath); assert(m_eMoveType == mosTrackMove); KGLOG_PROCESS_ERROR(nCurLoop >= m_pPath->GetStartFrame()); cDst = m_pPath->GetPosAtFrame(nCurLoop); m_pPath->GetVelocity(nCurLoop, m_nVelocityX, m_nVelocityY, m_nVelocityZ); MoveXY(cDst.nX - cCur.nX, cDst.nY - cCur.nY); MoveZ(cDst.nZ - cCur.nZ); if (m_bXZRebound || m_bYZRebound || m_bXYRebound) { ProcessRebounds(); TurnToMoveType(mosFree); goto Exit0; } CheckCollisionObj(); bMoveFinished = m_pPath->IsFinished(nCurLoop); if (bMoveFinished) { m_eTrackMoveState = tmsFinished; TurnToMoveType(mosFree); } Exit0: return; }