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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
#ifndef SHURIKENMODULEINITIAL_H
#define SHURIKENMODULEINITIAL_H
#include "ParticleSystemModule.h"
#include "Runtime/Graphics/ParticleSystem/ParticleSystemCurves.h"
#include "Runtime/Graphics/ParticleSystem/ParticleSystemGradients.h"
#include "Runtime/Math/Random/rand.h"
struct ParticleSystemState;
class InitialModule : public ParticleSystemModule
{
public:
DECLARE_MODULE (InitialModule)
InitialModule ();
void Start (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const Matrix4x4f& matrix, size_t fromIndex, float t);
void Update (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const size_t fromIndex, const size_t toIndex, float dt) const;
void GenerateProcedural (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state, ParticleSystemParticles& ps, const ParticleSystemEmitReplay& emit);
void CheckConsistency ();
void AwakeFromLoad (ParticleSystem* system, const ParticleSystemReadOnlyState& roState);
void ResetSeed(const ParticleSystemReadOnlyState& roState);
inline MinMaxCurve& GetLifeTimeCurve() { return m_Lifetime; }
inline const MinMaxCurve& GetLifeTimeCurve() const { return m_Lifetime; }
inline MinMaxCurve& GetSpeedCurve() { return m_Speed; }
inline const MinMaxCurve& GetSpeedCurve() const { return m_Speed; }
inline MinMaxCurve& GetSizeCurve() { return m_Size; }
inline const MinMaxCurve& GetSizeCurve() const { return m_Size; }
inline MinMaxCurve& GetRotationCurve() { return m_Rotation; }
inline const MinMaxCurve& GetRotationCurve() const { return m_Rotation; }
inline MinMaxGradient& GetColor() { return m_Color; }
inline const MinMaxGradient& GetColor() const { return m_Color; }
inline void SetGravityModifier(float value) { m_GravityModifier = value; }
inline float GetGravityModifier() const { return m_GravityModifier; }
inline void SetMaxNumParticles(int value) { m_MaxNumParticles = value; }
inline int GetMaxNumParticles() const { return m_MaxNumParticles; }
inline float GetInheritVelocity() const { return m_InheritVelocity; }
Vector3f GetGravity (const ParticleSystemReadOnlyState& roState, const ParticleSystemState& state) const;
template<class TransferFunction>
void Transfer (TransferFunction& transfer);
private:
Rand& GetRandom();
MinMaxCurve m_Lifetime;
MinMaxCurve m_Speed;
MinMaxGradient m_Color;
MinMaxCurve m_Size;
MinMaxCurve m_Rotation;
float m_GravityModifier;
float m_InheritVelocity;
int m_MaxNumParticles;
Rand m_Random;
#if UNITY_EDITOR
public:
Rand m_EditorRandom;
#endif
};
#endif // SHURIKENMODULEINITIAL_H
|