generalize BGAnimation, BGAnimationLayer to eliminate shared code with ActorFrame
58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
#ifndef ActorScroller_H
|
|
#define ActorScroller_H
|
|
/*
|
|
-----------------------------------------------------------------------------
|
|
Class: ActorScroller
|
|
|
|
Desc: An ActorFrame that moves its children.
|
|
|
|
Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
Chris Danford
|
|
-----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "ActorFrame.h"
|
|
|
|
|
|
class ActorScroller : public ActorFrame
|
|
{
|
|
public:
|
|
ActorScroller();
|
|
|
|
void Load(
|
|
float fScrollSecondsPerItem,
|
|
int iNumItemsToDraw,
|
|
const RageVector3 &vRotationDegrees,
|
|
const RageVector3 &vTranslateTerm0,
|
|
const RageVector3 &vTranslateTerm1,
|
|
const RageVector3 &vTranslateTerm2 );
|
|
|
|
virtual void Update( float fDelta );
|
|
virtual void DrawPrimitives(); // DOES draw
|
|
|
|
void SetDestinationItem( int iItem ) { m_fDestinationItem = float(iItem); }
|
|
void SetCurrentAndDestinationItem( int iItem ) { m_fCurrentItem = m_fDestinationItem = float(iItem); }
|
|
|
|
protected:
|
|
bool m_bLoaded;
|
|
float m_fCurrentItem; // usually between 0 and m_SubActors.size()
|
|
float m_fDestinationItem;
|
|
float m_fSecondsPerItem;
|
|
int m_iNumItemsToDraw;
|
|
|
|
// Note: Rotation is applied before translation.
|
|
|
|
// rot = m_vRotationDegrees*itemOffset^1
|
|
RageVector3 m_vRotationDegrees;
|
|
|
|
// trans = m_vTranslateTerm0*itemOffset^0 +
|
|
// m_vTranslateTerm1*itemOffset^1 +
|
|
// m_vTranslateTerm2*itemOffset^2
|
|
RageVector3 m_vTranslateTerm0;
|
|
RageVector3 m_vTranslateTerm1;
|
|
RageVector3 m_vTranslateTerm2;
|
|
};
|
|
|
|
|
|
#endif
|