summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/ParticleSystem/Modules/SubModule.h
blob: 093c8ba7f46f4514ddf388fc8f95368ef6822ca6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef SHURIKENMODULESUB_H
#define SHURIKENMODULESUB_H

#include "ParticleSystemModule.h"
#include "Runtime/BaseClasses/BaseObject.h"

class ParticleSystem;
struct ParticleSystemParticles;


class SubModule : public ParticleSystemModule
{
public:
	DECLARE_MODULE (SubModule)
	SubModule ();

	void Update (const ParticleSystemReadOnlyState& roState, ParticleSystemState& state, ParticleSystemParticles& ps, size_t fromIndex, size_t toIndex, float dt) const;
	void CheckConsistency() {};

	int GetSubEmitterTypeCount(ParticleSystemSubType type) const;

	template<class TransferFunction>
	void Transfer (TransferFunction& transfer);

	static void RemoveDuplicatePtrs (ParticleSystem** shurikens);
	int GetSubEmitterPtrs (ParticleSystem** shurikens) const;
	int GetSubEmitterPtrsBirth (ParticleSystem** shurikens) const;
	int GetSubEmitterPtrsCollision (ParticleSystem** shurikens) const;
	int GetSubEmitterPtrsDeath(ParticleSystem** shurikens) const;


private:
	PPtr<ParticleSystem> m_SubEmittersBirth[kParticleSystemMaxSubBirth];
	PPtr<ParticleSystem> m_SubEmittersCollision[kParticleSystemMaxSubCollision];
	PPtr<ParticleSystem> m_SubEmittersDeath[kParticleSystemMaxSubDeath];
};

#endif // SHURIKENMODULESUB_H