#include "global.h" // testing updates /* ----------------------------------------------------------------------------- Class: ActorFrame Desc: See header. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford ----------------------------------------------------------------------------- */ #include "ActorFrame.h" void ActorFrame::AddChild( Actor* pActor ) { #if _DEBUG // check that this Actor isn't already added. vector::iterator iter = find( m_SubActors.begin(), m_SubActors.end(), pActor ); ASSERT( iter == m_SubActors.end() ); // didn't find #endif ASSERT( pActor ); ASSERT( (void*)pActor != (void*)0xC0000005 ); m_SubActors.push_back( pActor ); } void ActorFrame::MoveToTail( Actor* pActor ) { vector::iterator iter = find( m_SubActors.begin(), m_SubActors.end(), pActor ); if( iter == m_SubActors.end() ) // didn't find { ASSERT(0); // called with a pActor that doesn't exist return; } m_SubActors.erase( iter ); m_SubActors.push_back( pActor ); } void ActorFrame::MoveToHead( Actor* pActor ) { vector::iterator iter = find( m_SubActors.begin(), m_SubActors.end(), pActor ); if( iter == m_SubActors.end() ) // didn't find { ASSERT(0); // called with a pActor that doesn't exist return; } m_SubActors.erase( iter ); m_SubActors.insert( m_SubActors.begin(), pActor ); } void ActorFrame::DrawPrimitives() { // Don't set Actor-defined render states because we won't be drawing // any geometry that belongs to this object. // Actor::DrawPrimitives(); // draw all sub-ActorFrames while we're in the ActorFrame's local coordinate space for( unsigned i=0; iDraw(); } } void ActorFrame::Update( float fDeltaTime ) { // LOG->Trace( "ActorFrame::Update( %f )", fDeltaTime ); Actor::Update( fDeltaTime ); // update all sub-Actors for( vector::iterator it=m_SubActors.begin(); it!=m_SubActors.end(); it++ ) (*it)->Update(fDeltaTime); } void ActorFrame::SetDiffuse( RageColor c ) { Actor::SetDiffuse( c ); // set all sub-Actors for( unsigned i=0; iSetDiffuse(c ); } void ActorFrame::SetUseZBuffer( bool b ) { Actor::SetUseZBuffer( b ); // set all sub-Actors for( unsigned i=0; iSetUseZBuffer( b ); } void ActorFrame::FinishTweening() { Actor::FinishTweening(); // set all sub-Actors for( unsigned i=0; iFinishTweening(); } float ActorFrame::GetTweenTimeLeft() const { float m = Actor::GetTweenTimeLeft(); for( unsigned i=0; iGetTweenTimeLeft()); return m; } bool CompareActorsByZDesc(const Actor *p1, const Actor *p2) { return p1->GetZ() > p2->GetZ(); } void ActorFrame::SortByZ() { // Preserve ordering of Actors with equal Z values. stable_sort( m_SubActors.begin(), m_SubActors.end(), CompareActorsByZDesc ); }