metaforce/Runtime/Character/CParticleDatabase.hpp

47 lines
1.9 KiB
C++
Raw Normal View History

2016-04-13 06:07:23 +00:00
#ifndef __URDE_CPARTICLEDATABASE_HPP__
#define __URDE_CPARTICLEDATABASE_HPP__
#include "CCharacterInfo.hpp"
#include "CParticleGenInfo.hpp"
2016-09-04 02:27:35 +00:00
#include "zeus/CFrustum.hpp"
2017-03-01 06:02:54 +00:00
#include "CToken.hpp"
#include <map>
namespace urde
{
2016-09-04 02:27:35 +00:00
class CPoseAsTransforms;
class CCharLayoutInfo;
2017-03-01 06:02:54 +00:00
class CGenDescription;
class CSwooshDescription;
class CElectricDescription;
class CParticleDatabase
{
2017-03-01 06:02:54 +00:00
std::map<ResId, std::shared_ptr<TLockedToken<CGenDescription>>> x0_particleDescs;
std::map<ResId, std::shared_ptr<TLockedToken<CSwooshDescription>>> x14_swooshDescs;
std::map<ResId, std::shared_ptr<TLockedToken<CElectricDescription>>> x28_electricDescs;
std::map<std::string, std::unique_ptr<CParticleGenInfo>> x3c_;
2017-03-01 06:02:54 +00:00
std::map<std::string, std::unique_ptr<CParticleGenInfo>> x50_;
std::map<std::string, std::unique_ptr<CParticleGenInfo>> x64_;
std::map<std::string, std::unique_ptr<CParticleGenInfo>> x78_;
std::map<std::string, std::unique_ptr<CParticleGenInfo>> x8c_;
std::map<std::string, std::unique_ptr<CParticleGenInfo>> xa0_;
2016-11-20 21:53:15 +00:00
public:
void CacheParticleDesc(const CCharacterInfo::CParticleResData& desc);
void SetModulationColorAllActiveEffects(const zeus::CColor& color);
2016-08-21 20:39:18 +00:00
void SuspendAllActiveEffects(CStateManager& stateMgr);
2016-11-20 21:53:15 +00:00
void StartEffect(const std::string& name, u32 flags, const CParticleData& data, const zeus::CVector3f& scale,
CStateManager& stateMgr, TAreaId aid, u32 unk1);
void Update(float dt, const CPoseAsTransforms& pose, const CCharLayoutInfo& charInfo, const zeus::CTransform& xf,
const zeus::CVector3f& vec, CStateManager& stateMgr);
2016-09-04 02:27:35 +00:00
void AddToRendererClipped(const zeus::CFrustum& frustum);
2016-11-20 21:53:15 +00:00
void GetActiveParticleLightIds(std::vector<TUniqueId>&);
void GetActiveParticleLightIdsFromParticleDB(
std::vector<TUniqueId>&,
const std::map<std::string, std::unique_ptr<CParticleGenInfo>, std::less<std::string>>&);
};
}
2016-04-13 06:07:23 +00:00
#endif // __URDE_CPARTICLEDATABASE_HPP__