/* SFxMesh.h 라펠즈 FX용 기본 primitive/model 2005/06, by JiYoung */ #ifndef __SFXMESH_H__ #define __SFXMESH_H__ #include "SMorphedMesh.h" //================================================================= /** 외곽선 aura 모델 resize된 모델을 n개 만들어 놓고, 루프 애니메이션 시킨다 무기 강화 이펙트 등등등 */ //================================================================= class FxAnimatedEdgeGlow : public MorphedModel { public: FxAnimatedEdgeGlow(); virtual ~FxAnimatedEdgeGlow(); // // Original // void setParams( // init()에서 사용할 기초 파라미터들 int _numFrames ///< 전체 애니메이션 프레임 수. 대충 16~32 , int _loopWindowSize ///< 반복될 애니메이션 간의 간격. 대충 4~8 , int _animationDelay ///< 프레임 advance사이의 간격 , int _markFrame ///< 중간의 어떤 적절한 프레임. 애니메이션 경계를 주기 위해 사용 , DWORD _startColor0, DWORD _startColor1 ///< 0번 프레임의 컬러 , DWORD _markColor0, DWORD _markColor1 ///< (markFrame)번 프레임의 컬러 , DWORD _endColor0, DWORD _endColor1 ///< (numFrames-1)번 프레임의 컬러 , float _startSizeOffset ///< 0번 프레임의 메쉬 크기. 대충 +0.01정도? , float _markSizeOffset ///< (markFrame)번 프레임의 메쉬 크기. , float _endSizeOffset ///< (numFrames-1)번 프레임의 메쉬 크기. 대충 +0.3정도? ); void init( KMeshPrimitive *source , int _numFrames, int _loopWindowSize, int _animationDelay, int _markFrame , DWORD _startColor0, DWORD _startColor1, DWORD _markColor0, DWORD _markColor1, DWORD _endColor0, DWORD _endColor1 , float _startSizeOffset, float _markSizeOffset, float _endSizeOffset ) { setParams(_numFrames, _loopWindowSize, _animationDelay, _markFrame , _startColor0, _startColor1, _markColor0, _markColor1, _endColor0, _endColor1 , _startSizeOffset, _markSizeOffset, _endSizeOffset); FxAnimatedEdgeGlow::init(source); } // // Inherits // virtual void init(KMeshPrimitive *source); virtual void close(); virtual int Process(DWORD dwTime); virtual void Render( KViewportObject *viewport, DWORD flag = RENDEREFX_NONE, const K3DMatrix * pAttachMat = NULL ); protected: // Parameters int numFrames; int loopWindowSize; int animationDelay; int markFrame; DWORD startColor0, startColor1; DWORD markColor0, markColor1; DWORD endColor0, endColor1; float startSizeOffset; float markSizeOffset; float endSizeOffset; // Variables DWORD previousTime; int currentFrame; ///< 0 <= current < loopWindowSize FxResizedPrimitive *primitiveArray; ///< primitive[numFrames] }; #endif // __SFXMESH_H__