aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/source/Irrlicht/CParticleFadeOutAffector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/source/Irrlicht/CParticleFadeOutAffector.cpp')
-rw-r--r--src/others/irrlicht-1.8.1/source/Irrlicht/CParticleFadeOutAffector.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/source/Irrlicht/CParticleFadeOutAffector.cpp b/src/others/irrlicht-1.8.1/source/Irrlicht/CParticleFadeOutAffector.cpp
new file mode 100644
index 0000000..b14d830
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/source/Irrlicht/CParticleFadeOutAffector.cpp
@@ -0,0 +1,70 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#include "CParticleFadeOutAffector.h"
6#include "IAttributes.h"
7#include "os.h"
8
9namespace irr
10{
11namespace scene
12{
13
14//! constructor
15CParticleFadeOutAffector::CParticleFadeOutAffector(
16 const video::SColor& targetColor, u32 fadeOutTime)
17 : IParticleFadeOutAffector(), TargetColor(targetColor)
18{
19
20 #ifdef _DEBUG
21 setDebugName("CParticleFadeOutAffector");
22 #endif
23
24 FadeOutTime = fadeOutTime ? static_cast<f32>(fadeOutTime) : 1.0f;
25}
26
27
28//! Affects an array of particles.
29void CParticleFadeOutAffector::affect(u32 now, SParticle* particlearray, u32 count)
30{
31 if (!Enabled)
32 return;
33 f32 d;
34
35 for (u32 i=0; i<count; ++i)
36 {
37 if (particlearray[i].endTime - now < FadeOutTime)
38 {
39 d = (particlearray[i].endTime - now) / FadeOutTime; // FadeOutTime probably f32 to save casts here (just guessing)
40 particlearray[i].color = particlearray[i].startColor.getInterpolated(
41 TargetColor, d);
42 }
43 }
44}
45
46
47//! Writes attributes of the object.
48//! Implement this to expose the attributes of your scene node animator for
49//! scripting languages, editors, debuggers or xml serialization purposes.
50void CParticleFadeOutAffector::serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const
51{
52 out->addColor("TargetColor", TargetColor);
53 out->addFloat("FadeOutTime", FadeOutTime);
54}
55
56//! Reads attributes of the object.
57//! Implement this to set the attributes of your scene node animator for
58//! scripting languages, editors, debuggers or xml deserialization purposes.
59//! \param startIndex: start index where to start reading attributes.
60//! \return: returns last index of an attribute read by this affector
61void CParticleFadeOutAffector::deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options)
62{
63 TargetColor = in->getAttributeAsColor("TargetColor");
64 FadeOutTime = in->getAttributeAsFloat("FadeOutTime");
65}
66
67
68} // end namespace scene
69} // end namespace irr
70