Files
Client/GameTools/Zallad3D SceneClass/ParticleManager.cpp
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

93 lines
2.2 KiB
C++

// ParticleManager.cpp: implementation of the CParticleManager class.
//
//////////////////////////////////////////////////////////////////////
#include "ParticleManager.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
List<CParticleSequence*> CParticleManager::m_ParticleList;
CParticleManager::CParticleManager()
{
}
CParticleManager::~CParticleManager()
{
}
CParticleSequence* CParticleManager::AddParticle(PartcleType Type,vector3 vecPos,vector3 vecTarget)
{
CParticleSequence *AddNode=new CParticleSequence;
CParticle *AddParticle;
switch(Type)
{
case MAGICMISSLE_PARTICLE:
/*
AddParticle=new CScatterParticle();
((CScatterParticle*)AddParticle)->Create(vecPos);
AddNode->m_ParticleList.Add(AddParticle);
*/
AddParticle=new CCircleParticle();
((CCircleParticle*)AddParticle)->Create(vecPos,vecTarget);
AddNode->m_ParticleList.Add(AddParticle);
AddParticle=new CScatterParticle();
((CScatterParticle*)AddParticle)->Create(vecTarget);
AddNode->m_ParticleList.Add(AddParticle);
break;
case SMOKE_PARTICLE:
AddParticle=new CSmokeParticle();
((CSmokeParticle*)AddParticle)->Create(vecPos,vecTarget);
AddNode->m_ParticleList.Add(AddParticle);
default:
break;
}
m_ParticleList.Add(AddNode);
return AddNode;
}
void CParticleManager::Render(LPDIRECT3DDEVICE8 pd3dDevice)
{
for(int cParticleSeq=0;cParticleSeq<m_ParticleList.num;cParticleSeq++)
{
m_ParticleList[cParticleSeq]->Render(pd3dDevice);
}
}
void CParticleManager::Update(float fUpdateTime)
{
bool isDelete=false;
for(int cParticle=0;cParticle<m_ParticleList.num;cParticle++)
{
isDelete=false;
isDelete=m_ParticleList[cParticle]->Update(fUpdateTime);
if(isDelete)
{
}
}
}
bool CParticleSequence::Update(float fUpdateTime)
{
if(m_ParticleList[m_ParticleSeq]->Update(fUpdateTime))
{
m_ParticleSeq++;
if(m_ParticleSeq>=m_ParticleList.num)
{
return true;
}
}
return false;
}
void CParticleSequence::Render(LPDIRECT3DDEVICE8 pd3dDevice)
{
if(m_ParticleSeq>=m_ParticleList.num)
return;
m_ParticleList[m_ParticleSeq]->Render(pd3dDevice);
}