88 lines
2.7 KiB
C++
88 lines
2.7 KiB
C++
/*
|
|
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__
|