Files
2026-06-01 12:46:52 +02:00

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__