90 lines
2.2 KiB
C++
Executable File
90 lines
2.2 KiB
C++
Executable File
//-----------------------------------------------------------------------------
|
|
// Torque Game Engine
|
|
// Copyright (C) GarageGames.com, Inc.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef _CAMERAFXMGR_H_
|
|
#define _CAMERAFXMGR_H_
|
|
|
|
#ifndef _LLIST_H_
|
|
#include "core/llist.h"
|
|
#endif
|
|
#ifndef _MPOINT_H_
|
|
#include "math/mPoint.h"
|
|
#endif
|
|
#ifndef _MMATRIX_H_
|
|
#include "math/mMatrix.h"
|
|
#endif
|
|
|
|
//**************************************************************************
|
|
// Abstract camera effect template
|
|
//**************************************************************************
|
|
class CameraFX
|
|
{
|
|
protected:
|
|
F32 mElapsedTime;
|
|
F32 mDuration;
|
|
MatrixF mCamFXTrans;
|
|
|
|
public:
|
|
CameraFX();
|
|
|
|
MatrixF & getTrans(){ return mCamFXTrans; }
|
|
bool isExpired(){ return mElapsedTime >= mDuration; }
|
|
void setDuration( F32 duration ){ mDuration = duration; }
|
|
|
|
virtual void update( F32 dt );
|
|
};
|
|
|
|
//--------------------------------------------------------------------------
|
|
// Camera shake effect
|
|
//--------------------------------------------------------------------------
|
|
class CameraShake : public CameraFX
|
|
{
|
|
typedef CameraFX Parent;
|
|
|
|
VectorF mFreq; // these are vectors to represent these values in 3D
|
|
VectorF mStartAmp;
|
|
VectorF mAmp;
|
|
VectorF mTimeOffset;
|
|
F32 mFalloff;
|
|
|
|
public:
|
|
CameraShake();
|
|
|
|
void init();
|
|
void fadeAmplitude();
|
|
void setFalloff( F32 falloff ){ mFalloff = falloff; }
|
|
void setFrequency( VectorF &freq ){ mFreq = freq; }
|
|
void setAmplitude( VectorF & ){ mStartAmp = amp; }
|
|
|
|
virtual void update( F32 dt );
|
|
};
|
|
|
|
|
|
//**************************************************************************
|
|
// CameraFXManager
|
|
//**************************************************************************
|
|
class CameraFXManager
|
|
{
|
|
typedef CameraFX * CameraFXPtr;
|
|
|
|
LList< CameraFXPtr > mFXList;
|
|
MatrixF mCamFXTrans;
|
|
|
|
public:
|
|
void addFX( CameraFX *newFX );
|
|
void clear();
|
|
MatrixF & getTrans(){ return mCamFXTrans; }
|
|
void update( F32 dt );
|
|
|
|
CameraFXManager();
|
|
~CameraFXManager();
|
|
|
|
};
|
|
|
|
extern CameraFXManager gCamFXMgr;
|
|
|
|
|
|
#endif
|