aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp
diff options
context:
space:
mode:
authorDavid Walter Seikel2013-01-13 18:54:10 +1000
committerDavid Walter Seikel2013-01-13 18:54:10 +1000
commit959831f4ef5a3e797f576c3de08cd65032c997ad (patch)
treee7351908be5995f0b325b2ebeaa02d5a34b82583 /libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp
parentAdd info about changes to Irrlicht. (diff)
downloadSledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.zip
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.gz
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.bz2
SledjHamr-959831f4ef5a3e797f576c3de08cd65032c997ad.tar.xz
Remove damned ancient DOS line endings from Irrlicht. Hopefully I did not go overboard.
Diffstat (limited to 'libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp')
-rw-r--r--libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp294
1 files changed, 147 insertions, 147 deletions
diff --git a/libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp b/libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp
index 34dc51d..890f525 100644
--- a/libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp
+++ b/libraries/irrlicht-1.8/source/Irrlicht/CParticlePointEmitter.cpp
@@ -1,147 +1,147 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt 1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine". 2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h 3// For conditions of distribution and use, see copyright notice in irrlicht.h
4 4
5#include "CParticlePointEmitter.h" 5#include "CParticlePointEmitter.h"
6#include "os.h" 6#include "os.h"
7#include "IAttributes.h" 7#include "IAttributes.h"
8 8
9namespace irr 9namespace irr
10{ 10{
11namespace scene 11namespace scene
12{ 12{
13 13
14//! constructor 14//! constructor
15CParticlePointEmitter::CParticlePointEmitter( 15CParticlePointEmitter::CParticlePointEmitter(
16 const core::vector3df& direction, u32 minParticlesPerSecond, 16 const core::vector3df& direction, u32 minParticlesPerSecond,
17 u32 maxParticlesPerSecond, video::SColor minStartColor, 17 u32 maxParticlesPerSecond, video::SColor minStartColor,
18 video::SColor maxStartColor, u32 lifeTimeMin, u32 lifeTimeMax, 18 video::SColor maxStartColor, u32 lifeTimeMin, u32 lifeTimeMax,
19 s32 maxAngleDegrees, 19 s32 maxAngleDegrees,
20 const core::dimension2df& minStartSize, 20 const core::dimension2df& minStartSize,
21 const core::dimension2df& maxStartSize) 21 const core::dimension2df& maxStartSize)
22 : Direction(direction), 22 : Direction(direction),
23 MinStartSize(minStartSize), MaxStartSize(maxStartSize), 23 MinStartSize(minStartSize), MaxStartSize(maxStartSize),
24 MinParticlesPerSecond(minParticlesPerSecond), 24 MinParticlesPerSecond(minParticlesPerSecond),
25 MaxParticlesPerSecond(maxParticlesPerSecond), 25 MaxParticlesPerSecond(maxParticlesPerSecond),
26 MinStartColor(minStartColor), MaxStartColor(maxStartColor), 26 MinStartColor(minStartColor), MaxStartColor(maxStartColor),
27 MinLifeTime(lifeTimeMin), MaxLifeTime(lifeTimeMax), 27 MinLifeTime(lifeTimeMin), MaxLifeTime(lifeTimeMax),
28 MaxAngleDegrees(maxAngleDegrees), Time(0), Emitted(0) 28 MaxAngleDegrees(maxAngleDegrees), Time(0), Emitted(0)
29{ 29{
30 #ifdef _DEBUG 30 #ifdef _DEBUG
31 setDebugName("CParticlePointEmitter"); 31 setDebugName("CParticlePointEmitter");
32 #endif 32 #endif
33} 33}
34 34
35 35
36//! Prepares an array with new particles to emitt into the system 36//! Prepares an array with new particles to emitt into the system
37//! and returns how much new particles there are. 37//! and returns how much new particles there are.
38s32 CParticlePointEmitter::emitt(u32 now, u32 timeSinceLastCall, SParticle*& outArray) 38s32 CParticlePointEmitter::emitt(u32 now, u32 timeSinceLastCall, SParticle*& outArray)
39{ 39{
40 Time += timeSinceLastCall; 40 Time += timeSinceLastCall;
41 41
42 const u32 pps = (MaxParticlesPerSecond - MinParticlesPerSecond); 42 const u32 pps = (MaxParticlesPerSecond - MinParticlesPerSecond);
43 const f32 perSecond = pps ? ((f32)MinParticlesPerSecond + os::Randomizer::frand() * pps) : MinParticlesPerSecond; 43 const f32 perSecond = pps ? ((f32)MinParticlesPerSecond + os::Randomizer::frand() * pps) : MinParticlesPerSecond;
44 const f32 everyWhatMillisecond = 1000.0f / perSecond; 44 const f32 everyWhatMillisecond = 1000.0f / perSecond;
45 45
46 if (Time > everyWhatMillisecond) 46 if (Time > everyWhatMillisecond)
47 { 47 {
48 Time = 0; 48 Time = 0;
49 Particle.startTime = now; 49 Particle.startTime = now;
50 Particle.vector = Direction; 50 Particle.vector = Direction;
51 51
52 if (MaxAngleDegrees) 52 if (MaxAngleDegrees)
53 { 53 {
54 core::vector3df tgt = Direction; 54 core::vector3df tgt = Direction;
55 tgt.rotateXYBy(os::Randomizer::frand() * MaxAngleDegrees); 55 tgt.rotateXYBy(os::Randomizer::frand() * MaxAngleDegrees);
56 tgt.rotateYZBy(os::Randomizer::frand() * MaxAngleDegrees); 56 tgt.rotateYZBy(os::Randomizer::frand() * MaxAngleDegrees);
57 tgt.rotateXZBy(os::Randomizer::frand() * MaxAngleDegrees); 57 tgt.rotateXZBy(os::Randomizer::frand() * MaxAngleDegrees);
58 Particle.vector = tgt; 58 Particle.vector = tgt;
59 } 59 }
60 60
61 Particle.endTime = now + MinLifeTime; 61 Particle.endTime = now + MinLifeTime;
62 if (MaxLifeTime != MinLifeTime) 62 if (MaxLifeTime != MinLifeTime)
63 Particle.endTime += os::Randomizer::rand() % (MaxLifeTime - MinLifeTime); 63 Particle.endTime += os::Randomizer::rand() % (MaxLifeTime - MinLifeTime);
64 64
65 if (MinStartColor==MaxStartColor) 65 if (MinStartColor==MaxStartColor)
66 Particle.color=MinStartColor; 66 Particle.color=MinStartColor;
67 else 67 else
68 Particle.color = MinStartColor.getInterpolated(MaxStartColor, os::Randomizer::frand()); 68 Particle.color = MinStartColor.getInterpolated(MaxStartColor, os::Randomizer::frand());
69 69
70 Particle.startColor = Particle.color; 70 Particle.startColor = Particle.color;
71 Particle.startVector = Particle.vector; 71 Particle.startVector = Particle.vector;
72 72
73 if (MinStartSize==MaxStartSize) 73 if (MinStartSize==MaxStartSize)
74 Particle.startSize = MinStartSize; 74 Particle.startSize = MinStartSize;
75 else 75 else
76 Particle.startSize = MinStartSize.getInterpolated(MaxStartSize, os::Randomizer::frand()); 76 Particle.startSize = MinStartSize.getInterpolated(MaxStartSize, os::Randomizer::frand());
77 Particle.size = Particle.startSize; 77 Particle.size = Particle.startSize;
78 78
79 outArray = &Particle; 79 outArray = &Particle;
80 return 1; 80 return 1;
81 } 81 }
82 82
83 return 0; 83 return 0;
84} 84}
85 85
86 86
87//! Writes attributes of the object. 87//! Writes attributes of the object.
88void CParticlePointEmitter::serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const 88void CParticlePointEmitter::serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const
89{ 89{
90 out->addVector3d("Direction", Direction); 90 out->addVector3d("Direction", Direction);
91 out->addFloat("MinStartSizeWidth", MinStartSize.Width); 91 out->addFloat("MinStartSizeWidth", MinStartSize.Width);
92 out->addFloat("MinStartSizeHeight", MinStartSize.Height); 92 out->addFloat("MinStartSizeHeight", MinStartSize.Height);
93 out->addFloat("MaxStartSizeWidth", MaxStartSize.Width); 93 out->addFloat("MaxStartSizeWidth", MaxStartSize.Width);
94 out->addFloat("MaxStartSizeHeight", MaxStartSize.Height); 94 out->addFloat("MaxStartSizeHeight", MaxStartSize.Height);
95 out->addInt("MinParticlesPerSecond", MinParticlesPerSecond); 95 out->addInt("MinParticlesPerSecond", MinParticlesPerSecond);
96 out->addInt("MaxParticlesPerSecond", MaxParticlesPerSecond); 96 out->addInt("MaxParticlesPerSecond", MaxParticlesPerSecond);
97 out->addColor("MinStartColor", MinStartColor); 97 out->addColor("MinStartColor", MinStartColor);
98 out->addColor("MaxStartColor", MaxStartColor); 98 out->addColor("MaxStartColor", MaxStartColor);
99 out->addInt("MinLifeTime", MinLifeTime); 99 out->addInt("MinLifeTime", MinLifeTime);
100 out->addInt("MaxLifeTime", MaxLifeTime); 100 out->addInt("MaxLifeTime", MaxLifeTime);
101 out->addInt("MaxAngleDegrees", MaxAngleDegrees); 101 out->addInt("MaxAngleDegrees", MaxAngleDegrees);
102} 102}
103 103
104//! Reads attributes of the object. 104//! Reads attributes of the object.
105void CParticlePointEmitter::deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options) 105void CParticlePointEmitter::deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options)
106{ 106{
107 Direction = in->getAttributeAsVector3d("Direction"); 107 Direction = in->getAttributeAsVector3d("Direction");
108 if (Direction.getLength() == 0) 108 if (Direction.getLength() == 0)
109 Direction.set(0,0.01f,0); 109 Direction.set(0,0.01f,0);
110 110
111 int idx = -1; 111 int idx = -1;
112 idx = in->findAttribute("MinStartSizeWidth"); 112 idx = in->findAttribute("MinStartSizeWidth");
113 if ( idx >= 0 ) 113 if ( idx >= 0 )
114 MinStartSize.Width = in->getAttributeAsFloat(idx); 114 MinStartSize.Width = in->getAttributeAsFloat(idx);
115 idx = in->findAttribute("MinStartSizeHeight"); 115 idx = in->findAttribute("MinStartSizeHeight");
116 if ( idx >= 0 ) 116 if ( idx >= 0 )
117 MinStartSize.Height = in->getAttributeAsFloat(idx); 117 MinStartSize.Height = in->getAttributeAsFloat(idx);
118 idx = in->findAttribute("MaxStartSizeWidth"); 118 idx = in->findAttribute("MaxStartSizeWidth");
119 if ( idx >= 0 ) 119 if ( idx >= 0 )
120 MaxStartSize.Width = in->getAttributeAsFloat(idx); 120 MaxStartSize.Width = in->getAttributeAsFloat(idx);
121 idx = in->findAttribute("MaxStartSizeHeight"); 121 idx = in->findAttribute("MaxStartSizeHeight");
122 if ( idx >= 0 ) 122 if ( idx >= 0 )
123 MaxStartSize.Height = in->getAttributeAsFloat(idx); 123 MaxStartSize.Height = in->getAttributeAsFloat(idx);
124 124
125 MinParticlesPerSecond = in->getAttributeAsInt("MinParticlesPerSecond"); 125 MinParticlesPerSecond = in->getAttributeAsInt("MinParticlesPerSecond");
126 MaxParticlesPerSecond = in->getAttributeAsInt("MaxParticlesPerSecond"); 126 MaxParticlesPerSecond = in->getAttributeAsInt("MaxParticlesPerSecond");
127 127
128 MinParticlesPerSecond = core::max_(1u, MinParticlesPerSecond); 128 MinParticlesPerSecond = core::max_(1u, MinParticlesPerSecond);
129 MaxParticlesPerSecond = core::max_(MaxParticlesPerSecond, 1u); 129 MaxParticlesPerSecond = core::max_(MaxParticlesPerSecond, 1u);
130 MaxParticlesPerSecond = core::min_(MaxParticlesPerSecond, 200u); 130 MaxParticlesPerSecond = core::min_(MaxParticlesPerSecond, 200u);
131 MinParticlesPerSecond = core::min_(MinParticlesPerSecond, MaxParticlesPerSecond); 131 MinParticlesPerSecond = core::min_(MinParticlesPerSecond, MaxParticlesPerSecond);
132 132
133 MinStartColor = in->getAttributeAsColor("MinStartColor"); 133 MinStartColor = in->getAttributeAsColor("MinStartColor");
134 MaxStartColor = in->getAttributeAsColor("MaxStartColor"); 134 MaxStartColor = in->getAttributeAsColor("MaxStartColor");
135 MinLifeTime = in->getAttributeAsInt("MinLifeTime"); 135 MinLifeTime = in->getAttributeAsInt("MinLifeTime");
136 MaxLifeTime = in->getAttributeAsInt("MaxLifeTime"); 136 MaxLifeTime = in->getAttributeAsInt("MaxLifeTime");
137 MaxAngleDegrees = in->getAttributeAsInt("MaxAngleDegrees"); 137 MaxAngleDegrees = in->getAttributeAsInt("MaxAngleDegrees");
138 138
139 MinLifeTime = core::max_(0u, MinLifeTime); 139 MinLifeTime = core::max_(0u, MinLifeTime);
140 MaxLifeTime = core::max_(MaxLifeTime, MinLifeTime); 140 MaxLifeTime = core::max_(MaxLifeTime, MinLifeTime);
141 MinLifeTime = core::min_(MinLifeTime, MaxLifeTime); 141 MinLifeTime = core::min_(MinLifeTime, MaxLifeTime);
142} 142}
143 143
144 144
145} // end namespace scene 145} // end namespace scene
146} // end namespace irr 146} // end namespace irr
147 147