Files
Client/GameTools/Effect/X3DEffectParticle.h
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

115 lines
3.7 KiB
C++

// X3DEffectParticle.h: interface for the CX3DEffectParticle class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_X3DEFFECTPARTICLE_H__0750B6D9_11E2_41A9_BFEF_D92F0F1E0CC5__INCLUDED_)
#define AFX_X3DEFFECTPARTICLE_H__0750B6D9_11E2_41A9_BFEF_D92F0F1E0CC5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "X3DEffectBase.h"
typedef struct _Particle
{
vector3 vecPos;
vector3 vecVel;
float fLifetime;
float fMaxLife;
float fTexFrame;
float fRotation;
unsigned long dwRotationCount;
float fWidth;
float fHeight;
color lColor;
} Particle, *LPParticle;
class CX3DEffectParticle : public CX3DEffectBase
{
protected:
unsigned long m_dwMaxAmount;
unsigned long m_dwDrawAmount;
float m_fAlpha;
float m_fPower;
float m_fAngle;
vector3 m_vecEForce;
quaternion m_quatDir;
float m_fPowerSeed;
float m_fLifetime;
float m_fLifetimeSeed;
float m_fRotation;
float m_fTexSpeed;
// 볼륨
unsigned long m_dwVolumeType; // 0 : None, 1 : Square, 2 : Circle
float m_fVolX;
float m_fVolY;
float m_fVolZ;
float m_fRadius;
float m_fInnerRadius;
// 파티클 정보 / 버퍼
LPParticle m_lpVerticeInfo;
LPDIRECT3DVERTEXBUFFER8 m_lpVertices;
LPDIRECT3DVERTEXBUFFER8 m_lpVerticesBlend;
LPDIRECT3DINDEXBUFFER8 m_lpVerticeIndex;
public:
CKeyList<FloatKeyList> m_lstAmount;
CKeyList<FloatKeyList> m_lstAlpha;
CKeyList<FloatKeyList> m_lstPower;
CKeyList<FloatKeyList> m_lstAngle;
CKeyList<VectorKeyList> m_lstEForce;
CKeyList<QuaternionKeyList> m_lstDirection;
// Scenario용 리스트
CKeyList<FloatKeyList> m_lstWidth;
CKeyList<FloatKeyList> m_lstHeight;
public:
CX3DEffectParticle();
virtual ~CX3DEffectParticle();
void SetVolumeNone(void);
void SetVolumeSquare(float fVolX, float fVolY, float fVolZ);
void SetVolumeCircle(float fRadius, float fInnerRadius);
void SetPowerSeed(float fPowerSeed) { m_fPowerSeed = fPowerSeed; }
void SetLifetime(float fLifetime) { m_fLifetime = fLifetime; }
void SetLifetimeSeed(float fLifetimeSeed) { m_fLifetimeSeed = fLifetimeSeed; }
void SetRotation(float fRotation) { m_fRotation = fRotation; }
void SetTexSpeed(float fTexSpeed) { m_fTexSpeed = fTexSpeed; }
vector3 GetEForce(void) { return m_vecEForce; }
unsigned char GetMainAlpha(void) { return (unsigned char)(m_fAlpha * 255); }
float GetAmount(float fFrame) { float temp; m_lstAmount.Interpolation(fFrame, temp); return temp;}
float GetLifetime(void) { return m_fLifetime; }
float GetPower(void) { return m_fPower; }
float GetAngle(void) { return m_fAngle; }
quaternion GetDirection(void) { return m_quatDir; }
float GetWidth(float fFrame) { float temp; m_lstWidth.Interpolation(fFrame, temp); return temp; }
float GetHeight(float fFrame) { float temp; m_lstHeight.Interpolation(fFrame, temp); return temp; }
unsigned char GetAlpha(float fFrame) { color temp; m_lstColor.InterpolationC(fFrame, temp); return temp.a; }
unsigned char GetRColor(float fFrame) { color temp; m_lstColor.InterpolationC(fFrame, temp); return temp.r; }
unsigned char GetGColor(float fFrame) { color temp; m_lstColor.InterpolationC(fFrame, temp); return temp.g; }
unsigned char GetBColor(float fFrame) { color temp; m_lstColor.InterpolationC(fFrame, temp); return temp.b; }
BOOL CreateParticle(LPParticle lpParticle);
void Create(unsigned long dwStartFrame, unsigned long dwEndFrame);
BOOL CreateBuffer(void);
void Render(void);
BOOL Interpolation(float fFrame);
void Load(FILE *fp, const char *strOriginalPath = NULL);
void Save(FILE *fp, const char *strOriginalPath = NULL);
BOOL ParticleInterpolation(unsigned long dwNumber);
};
#endif // !defined(AFX_X3DEFFECTPARTICLE_H__0750B6D9_11E2_41A9_BFEF_D92F0F1E0CC5__INCLUDED_)