DDraceNetwork Documentation
Loading...
Searching...
No Matches
particles.h
Go to the documentation of this file.
1/* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */
2/* If you are missing that file, acquire a complete release at teeworlds.com. */
3#ifndef GAME_CLIENT_COMPONENTS_PARTICLES_H
4#define GAME_CLIENT_COMPONENTS_PARTICLES_H
5#include <base/color.h>
6#include <base/vmath.h>
7
9
10// particles
12{
14 {
15 m_Pos = vec2(0, 0);
16 m_Vel = vec2(0, 0);
17 m_LifeSpan = 0;
18 m_StartSize = 32;
19 m_EndSize = 32;
20 m_UseAlphaFading = false;
21 m_StartAlpha = 1;
22 m_EndAlpha = 1;
23 m_Rot = 0;
24 m_Rotspeed = 0;
25 m_Gravity = 0;
26 m_Friction = 0;
27 m_FlowAffected = 1.0f;
28 m_Color = ColorRGBA(1, 1, 1, 1);
29 m_Collides = true;
30 }
31
34
35 int m_Spr;
36
38
40
42 float m_EndSize;
43
47
48 float m_Rot;
50
51 float m_Gravity;
53
55
57
58 // set by the particle system
59 float m_Life;
62};
63
64class CParticles : public CComponent
65{
66 friend class CGameClient;
67
68public:
69 enum
70 {
77 };
78
79 CParticles();
80 int Sizeof() const override { return sizeof(*this); }
81
82 void Add(int Group, CParticle *pPart, float TimePassed = 0.f);
83
84 void OnReset() override;
85 void OnRender() override;
86 void OnInit() override;
87
88private:
91
92 enum
93 {
94 MAX_PARTICLES = 1024 * 8,
95 };
96
100
101 float m_FrictionFraction = 0.0f;
102 int64_t m_LastRenderTime = 0;
103
104 void RenderGroup(int Group);
105 void Update(float TimePassed);
106
107 template<int TGROUP>
109 {
110 public:
112 int Sizeof() const override { return sizeof(*this); }
113 void OnRender() override { m_pParts->RenderGroup(TGROUP); }
114 };
115
116 // behind players
119 // in front of players
123
124 bool ParticleIsVisibleOnScreen(const vec2 &CurPos, float CurSize);
125};
126#endif
Definition component.h:165
Definition particles.h:109
int Sizeof() const override
Definition particles.h:112
void OnRender() override
Definition particles.h:113
CParticles * m_pParts
Definition particles.h:111
CRenderGroup< GROUP_EXTRA > m_RenderExtra
Definition particles.h:121
CRenderGroup< GROUP_PROJECTILE_TRAIL > m_RenderTrail
Definition particles.h:117
void OnInit() override
Definition particles.cpp:169
CParticles()
Definition particles.cpp:14
int64_t m_LastRenderTime
Definition particles.h:102
void OnReset() override
Definition particles.cpp:24
void Update(float TimePassed)
Definition particles.cpp:78
@ MAX_PARTICLES
Definition particles.h:94
float m_FrictionFraction
Definition particles.h:101
friend class CGameClient
Definition particles.h:66
int Sizeof() const override
Definition particles.h:80
CRenderGroup< GROUP_EXPLOSIONS > m_RenderExplosions
Definition particles.h:120
int m_aFirstPart[NUM_GROUPS]
Definition particles.h:99
int m_FirstFree
Definition particles.h:98
void RenderGroup(int Group)
Definition particles.cpp:209
@ GROUP_PROJECTILE_TRAIL
Definition particles.h:71
@ GROUP_EXTRA
Definition particles.h:74
@ NUM_GROUPS
Definition particles.h:76
@ GROUP_TRAIL_EXTRA
Definition particles.h:72
@ GROUP_GENERAL
Definition particles.h:75
@ GROUP_EXPLOSIONS
Definition particles.h:73
CRenderGroup< GROUP_TRAIL_EXTRA > m_RenderTrailExtra
Definition particles.h:118
int m_ExtraParticleQuadContainerIndex
Definition particles.h:90
CParticle m_aParticles[MAX_PARTICLES]
Definition particles.h:97
void Add(int Group, CParticle *pPart, float TimePassed=0.f)
Definition particles.cpp:41
int m_ParticleQuadContainerIndex
Definition particles.h:89
bool ParticleIsVisibleOnScreen(const vec2 &CurPos, float CurSize)
Definition particles.cpp:194
void OnRender() override
Definition particles.cpp:146
CRenderGroup< GROUP_GENERAL > m_RenderGeneral
Definition particles.h:122
Definition color.h:182
Definition particles.h:12
int m_PrevPart
Definition particles.h:60
float m_Gravity
Definition particles.h:51
int m_Spr
Definition particles.h:35
float m_Rotspeed
Definition particles.h:49
float m_LifeSpan
Definition particles.h:39
int m_NextPart
Definition particles.h:61
float m_EndSize
Definition particles.h:42
ColorRGBA m_Color
Definition particles.h:54
float m_FlowAffected
Definition particles.h:37
void SetDefault()
Definition particles.h:13
float m_Rot
Definition particles.h:48
float m_EndAlpha
Definition particles.h:46
bool m_UseAlphaFading
Definition particles.h:44
float m_Friction
Definition particles.h:52
float m_StartSize
Definition particles.h:41
float m_Life
Definition particles.h:59
vec2 m_Pos
Definition particles.h:32
vec2 m_Vel
Definition particles.h:33
bool m_Collides
Definition particles.h:56
float m_StartAlpha
Definition particles.h:45
vector2_base< float > vec2
Definition vmath.h:161