V-Gears 0
Free Final Fantasy VII engine.
ParticleEmitter.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 The V-Gears Team
3 *
4 * This file is part of V-Gears
5 *
6 * V-Gears is free software: you can redistribute it and/or modify it under
7 * terms of the GNU General Public License as published by the Free Software
8 * Foundation, version 3.0 (GPLv3) of the License.
9 *
10 * V-Gears is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#pragma once
17
18#include <OgreStringInterface.h>
19#include "Particle.h"
21
23
27class ParticleEmitter : public Ogre::StringInterface, public Particle{
28
29 public:
30
35
39 virtual ~ParticleEmitter();
40
46 virtual void CopyAttributesTo(ParticleEmitter* emitter);
47
51 virtual void InitForEmission();
52
60 virtual int CalculateRequestedParticles(Ogre::Real time_elapsed);
61
67 virtual void InitParticleForEmission(Particle* particle);
68
76 parent_technique_ = tech;
77 };
78
86 return parent_technique_;
87 };
88
94 void SetName(const Ogre::String& name){name_ = name;};
95
101 const Ogre::String& GetName() const{return name_;};
102
108 void SetEmitterType(const Ogre::String& emitter_type){
109 emitter_type_ = emitter_type;
110 };
111
118
127 void SetEmitsName(const Ogre::String& emits_name);
128
135 const Ogre::String& GetEmitsName() const{return emits_name_;};
136
143 void SetEmitsType(ParticleType emits_type) {emits_type_ = emits_type;};
144
152
158 void SetEmissionRate(int rate) {emission_rate_ = rate;};
159
165 int GetEmissionRate() const {return emission_rate_;};
166
175 void SetEmitDirection(const Ogre::Vector3& dir){
176 emit_direction_1_ = dir;
177 emit_direction_2_ = dir;
178 };
179
191 const Ogre::Vector3& dir_1, const Ogre::Vector3& dir_2
192 ){
193 emit_direction_1_ = dir_1;
194 emit_direction_2_ = dir_2;
195 };
196
204 void SetEmitTotalTimeToLive(float time){
206 };
207
208 protected:
209
214
219
224
229
234
240
245
250
255
259 Ogre::Vector3 emit_direction_1_;
260
264 Ogre::Vector3 emit_direction_2_;
265
271
276};
The direction at which an emitter emits particles.
Definition: ParticleEmitterDictionary.h:71
The emission rate of a particle emitter.
Definition: ParticleEmitterDictionary.h:25
The total time to live for particles emitted by an emitter.
Definition: ParticleEmitterDictionary.h:48
A particle emitter.
Definition: ParticleEmitter.h:27
void SetEmitsName(const Ogre::String &emits_name)
Sets the name of the emits.
Definition: ParticleEmitter.cpp:108
Ogre::Vector3 emit_direction_2_
One of the limits for the range of directions.
Definition: ParticleEmitter.h:264
float emit_total_time_to_live_
Particle duration.
Definition: ParticleEmitter.h:275
ParticleType GetEmitsType() const
Retrieves the type of the emits.
Definition: ParticleEmitter.h:151
void SetEmitDirectionRange(const Ogre::Vector3 &dir_1, const Ogre::Vector3 &dir_2)
Sets the particle direction for the emitter.
Definition: ParticleEmitter.h:190
ParticleEmitter()
Constructor.
Definition: ParticleEmitter.cpp:28
ParticleTechnique * GetParentTechnique() const
Retrieves the parent technique of the emitter.
Definition: ParticleEmitter.h:85
void SetParentTechnique(ParticleTechnique *tech)
Sets the parent technique for emitter.
Definition: ParticleEmitter.h:75
const Ogre::String & GetName() const
Retrieves the emitter name.
Definition: ParticleEmitter.h:101
static ParticleEmitterDictionary::Direction direction_dictionary_
Dictionary for particle directions.
Definition: ParticleEmitter.h:254
void SetEmitterType(const Ogre::String &emitter_type)
Sets the emitter type.
Definition: ParticleEmitter.h:108
const Ogre::String & GetEmitterType() const
Retrieves the emitter type.
Definition: ParticleEmitter.h:117
void SetEmitTotalTimeToLive(float time)
Sets the time the particles must be displayed between being emitted and disappearing.
Definition: ParticleEmitter.h:204
static ParticleEmitterDictionary::EmissionRate emission_rate_dictionary_
Dictionary for emission rates.
Definition: ParticleEmitter.h:239
Ogre::String name_
The emitter name.
Definition: ParticleEmitter.h:218
virtual ~ParticleEmitter()
Destructor.
Definition: ParticleEmitter.cpp:58
virtual void CopyAttributesTo(ParticleEmitter *emitter)
Copies attributes to other particle emmiter.
Definition: ParticleEmitter.cpp:60
int GetEmissionRate() const
Retrieves the emission rate of the emitter.
Definition: ParticleEmitter.h:165
void SetEmitDirection(const Ogre::Vector3 &dir)
Sets the particle direction for the emitter.
Definition: ParticleEmitter.h:175
virtual void InitParticleForEmission(Particle *particle)
Initializes a article to be emmited.
Definition: ParticleEmitter.cpp:92
int emission_rate_
The emission rate.
Definition: ParticleEmitter.h:244
ParticleTechnique * parent_technique_
The particle technique.
Definition: ParticleEmitter.h:213
ParticleType emits_type_
The emits type.
Definition: ParticleEmitter.h:233
const Ogre::String & GetEmitsName() const
Retrieves the name of the emits.
Definition: ParticleEmitter.h:135
void SetEmitsType(ParticleType emits_type)
Sets the type of the emits.
Definition: ParticleEmitter.h:143
void SetName(const Ogre::String &name)
Set a name for the emitter.
Definition: ParticleEmitter.h:94
void SetEmissionRate(int rate)
Set the emission rate for the emitter.
Definition: ParticleEmitter.h:158
Ogre::String emitter_type_
The emitter type.
Definition: ParticleEmitter.h:223
Ogre::String emits_name_
The emits name.
Definition: ParticleEmitter.h:228
static ParticleEmitterDictionary::TotalTimeToLive total_time_to_live_dictionary_
Disctionary for particle durations.
Definition: ParticleEmitter.h:270
virtual void InitForEmission()
Definition: ParticleEmitter.cpp:72
virtual int CalculateRequestedParticles(Ogre::Real time_elapsed)
Calculates how many particles are to be emitted in a given time.
Definition: ParticleEmitter.cpp:74
Ogre::Vector3 emit_direction_1_
One of the limits for the range of directions.
Definition: ParticleEmitter.h:259
Ogre::Real emission_remainder_
The remaining particles to be emitted.
Definition: ParticleEmitter.h:249
A particle technique.
Definition: ParticleTechnique.h:28
A particle.
Definition: Particle.h:30
ParticleType
Types of particles.
Definition: Particle.h:37
Ogre::String String
Definition: TypeDefine.h:37