Commit 9f50c25b authored by hybrid's avatar hybrid

Changed from vector2df to dimension2df

Deprecated setParticleSize from ParticleSystemSceneNode, use setMaxStartSize/setMinStartSize from the emitter instead.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@1753 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 94fce476
......@@ -70,10 +70,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) = 0;
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) = 0;
virtual void setMaxStartSize( const core::dimension2df& size ) = 0;
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) = 0;
virtual void setMinStartSize( const core::dimension2df& size ) = 0;
//! Get direction the emitter emits particles
virtual const core::vector3df& getDirection() const = 0;
......@@ -91,15 +91,16 @@ public:
virtual const video::SColor& getMaxStartColor() const = 0;
//! Get the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const = 0;
virtual const core::dimension2df& getMaxStartSize() const = 0;
//! Get the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const = 0;
virtual const core::dimension2df& getMinStartSize() const = 0;
//! Writes attributes of the object.
/** Implement this to expose the attributes of your scene node animator for
scripting languages, editors, debuggers or xml serialization purposes. */
virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const {}
virtual void serializeAttributes(io::IAttributes* out,
io::SAttributeReadWriteOptions* options=0) const {}
//! Reads attributes of the object.
/** Implement this to set the attributes of your scene node animator for
......@@ -108,7 +109,8 @@ public:
\param in The attributes to work with.
\param options Additional options.
\return Last index of an attribute read by this affector */
virtual s32 deserializeAttributes(s32 startIndex, io::IAttributes* in, io::SAttributeReadWriteOptions* options=0) { return 0; }
virtual s32 deserializeAttributes(s32 startIndex, io::IAttributes* in,
io::SAttributeReadWriteOptions* options=0) { return 0; }
//! Get emitter type
virtual E_PARTICLE_EMITTER_TYPE getType() const { return EPET_POINT; }
......
......@@ -148,8 +148,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) ) = 0;
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
//! Creates a box particle emitter.
/** \param box: The box for the emitter.
......@@ -187,8 +187,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) ) = 0;
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
//! Creates a particle emitter for emitting from a cylinder
/** \param center: The center of the circle at the base of the cylinder
......@@ -232,8 +232,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) ) = 0;
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
//! Creates a mesh particle emitter.
/** \param mesh: Pointer to mesh to emit particles from
......@@ -288,8 +288,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) ) = 0;
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
//! Creates a point particle emitter.
/** \param direction: Direction and speed of particle emission.
......@@ -325,8 +325,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) ) = 0;
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
//! Creates a ring particle emitter.
/** \param center: Center of ring
......@@ -368,8 +368,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) ) = 0;
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
//! Creates a sphere particle emitter.
/** \param center: Center of sphere
......@@ -408,8 +408,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) ) = 0;
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) ) = 0;
//! Creates a point attraction affector.
/** This affector modifies the positions of the particles and attracts
......@@ -442,7 +442,7 @@ public:
just call addAffector(). Note that you'll have to drop() the
returned pointer, after you don't need it any more, see
IReferenceCounted::drop() for more information. */
virtual IParticleAffector* createScaleParticleAffector(const core::vector2df& scaleTo = core::vector2df(1.0f, 1.0f)) = 0;
virtual IParticleAffector* createScaleParticleAffector(const core::dimension2df& scaleTo = core::dimension2df(1.0f, 1.0f)) = 0;
//! Creates a fade out particle affector.
/** This affector modifies the color of every particle and and reaches
......
......@@ -6,7 +6,7 @@
#define __S_PARTICLE_H_INCLUDED__
#include "vector3d.h"
#include "vector2d.h"
#include "dimension2d.h"
#include "SColor.h"
namespace irr
......@@ -41,11 +41,11 @@ namespace scene
//! Scale of the particle.
/** The current scale of the particle. */
core::vector2df size;
core::dimension2df size;
//! Original scale of the particle.
/** The scale of the particle when it was emitted. */
core::vector2df startSize;
core::dimension2df startSize;
};
......
......@@ -72,6 +72,20 @@ namespace core
return dimension2d<T>(Width*scale, Height*scale);
}
//! Add two dimensions
dimension2d<T>& operator+=(const dimension2d<T>& other)
{
Width *= other.Width;
Height *= other.Height;
return *this;
}
//! Add two dimensions
dimension2d<T> operator+(const dimension2d<T>& other) const
{
return dimension2d<T>(Width+other.Width, Height+other.Height);
}
//! Get area
T getArea() const
{
......@@ -125,6 +139,17 @@ namespace core
return dimension2d<T>((T)i,(T)j);
}
//! Get the interpolated dimension
/** \param other Other dimension to interpolate with.
\param d Value between 0.0f and 1.0f.
\return Interpolated dimension. */
dimension2d<T> getInterpolated(const dimension2d<T>& other, f32 d) const
{
T inv = (T) (1.0f - d);
return dimension2d<T>(other.Width*inv + Width*d, other.Height*inv + Height*d);
}
//! Width of the dimension.
T Width;
//! Height of the dimension.
......
......@@ -20,7 +20,7 @@ CParticleAnimatedMeshSceneNodeEmitter::CParticleAnimatedMeshSceneNodeEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize, const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize, const core::dimension2df& maxStartSize )
: Node(0), AnimatedMesh(0), BaseMesh(0), TotalVertices(0), MBCount(0), MBNumber(mbNumber),
Direction(direction), NormalDirectionModifier(normalDirectionModifier),
MinParticlesPerSecond(minParticlesPerSecond), MaxParticlesPerSecond(maxParticlesPerSecond),
......
......@@ -33,8 +33,8 @@ public:
u32 lifeTimeMin = 2000,
u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f)
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f)
);
//! Prepares an array with new particles to emitt into the system
......@@ -70,10 +70,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) { MaxStartColor = color; }
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) { MaxStartSize = size; };
virtual void setMaxStartSize( const core::dimension2df& size ) { MaxStartSize = size; };
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) { MinStartSize = size; };
virtual void setMinStartSize( const core::dimension2df& size ) { MinStartSize = size; };
//! Get Mesh we're emitting particles from
virtual const IAnimatedMeshSceneNode* getAnimatedMeshSceneNode() const { return Node; }
......@@ -104,10 +104,10 @@ public:
virtual const video::SColor& getMaxStartColor() const { return MaxStartColor; }
//! Get the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const { return MaxStartSize; };
virtual const core::dimension2df& getMaxStartSize() const { return MaxStartSize; };
//! Get the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const { return MinStartSize; };
virtual const core::dimension2df& getMinStartSize() const { return MinStartSize; };
private:
......@@ -125,7 +125,7 @@ private:
u32 MinParticlesPerSecond, MaxParticlesPerSecond;
video::SColor MinStartColor, MaxStartColor;
u32 MinLifeTime, MaxLifeTime;
core::vector2df MaxStartSize, MinStartSize;
core::dimension2df MaxStartSize, MinStartSize;
u32 Time;
u32 Emitted;
......
......@@ -18,7 +18,7 @@ CParticleBoxEmitter::CParticleBoxEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
video::SColor minStartColor, video::SColor maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize, const core::vector2df& maxStartSize)
const core::dimension2df& minStartSize, const core::dimension2df& maxStartSize)
: Box(box), Direction(direction),
MaxStartSize(maxStartSize), MinStartSize(minStartSize),
MinParticlesPerSecond(minParticlesPerSecond),
......
......@@ -30,8 +30,8 @@ public:
u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f)
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f)
);
//! Prepares an array with new particles to emitt into the system
......@@ -54,10 +54,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) { MaxStartColor = color; }
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) { MaxStartSize = size; };
virtual void setMaxStartSize( const core::dimension2df& size ) { MaxStartSize = size; };
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) { MinStartSize = size; };
virtual void setMinStartSize( const core::dimension2df& size ) { MinStartSize = size; };
//! Set box from which the particles are emitted.
virtual void setBox( const core::aabbox3df& box ) { Box = box; }
......@@ -78,10 +78,10 @@ public:
virtual const video::SColor& getMaxStartColor() const { return MaxStartColor; }
//! Gets the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const { return MaxStartSize; };
virtual const core::dimension2df& getMaxStartSize() const { return MaxStartSize; };
//! Gets the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const { return MinStartSize; };
virtual const core::dimension2df& getMinStartSize() const { return MinStartSize; };
//! Get box from which the particles are emitted.
virtual const core::aabbox3df& getBox() const { return Box; }
......@@ -97,7 +97,7 @@ private:
core::array<SParticle> Particles;
core::aabbox3df Box;
core::vector3df Direction;
core::vector2df MaxStartSize, MinStartSize;
core::dimension2df MaxStartSize, MinStartSize;
u32 MinParticlesPerSecond, MaxParticlesPerSecond;
video::SColor MinStartColor, MaxStartColor;
u32 MinLifeTime, MaxLifeTime;
......
......@@ -18,8 +18,8 @@ CParticleCylinderEmitter::CParticleCylinderEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
: Center(center), Normal(normal), Direction(direction),
MaxStartSize(maxStartSize), MinStartSize(minStartSize),
MinParticlesPerSecond(minParticlesPerSecond),
......
......@@ -30,8 +30,8 @@ public:
u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f)
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f)
);
//! Prepares an array with new particles to emitt into the system
......@@ -69,10 +69,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) { MaxStartColor = color; }
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) { MaxStartSize = size; };
virtual void setMaxStartSize( const core::dimension2df& size ) { MaxStartSize = size; };
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) { MinStartSize = size; };
virtual void setMinStartSize( const core::dimension2df& size ) { MinStartSize = size; };
//! Get the center of the cylinder
virtual const core::vector3df& getCenter() const { return Center; }
......@@ -105,10 +105,10 @@ public:
virtual const video::SColor& getMaxStartColor() const { return MaxStartColor; }
//! Gets the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const { return MaxStartSize; };
virtual const core::dimension2df& getMaxStartSize() const { return MaxStartSize; };
//! Gets the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const { return MinStartSize; };
virtual const core::dimension2df& getMinStartSize() const { return MinStartSize; };
private:
......@@ -117,7 +117,7 @@ private:
core::vector3df Center;
core::vector3df Normal;
core::vector3df Direction;
core::vector2df MaxStartSize, MinStartSize;
core::dimension2df MaxStartSize, MinStartSize;
u32 MinParticlesPerSecond, MaxParticlesPerSecond;
video::SColor MinStartColor, MaxStartColor;
u32 MinLifeTime, MaxLifeTime;
......
......@@ -19,8 +19,8 @@ CParticleMeshEmitter::CParticleMeshEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
: Mesh(0), TotalVertices(0), MBCount(0), MBNumber(mbNumber),
NormalDirectionModifier(normalDirectionModifier), Direction(direction),
MaxStartSize(maxStartSize), MinStartSize(minStartSize),
......
......@@ -34,8 +34,8 @@ public:
u32 lifeTimeMin = 2000,
u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f)
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f)
);
//! Prepares an array with new particles to emitt into the system
......@@ -71,10 +71,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) { MaxStartColor = color; }
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) { MaxStartSize = size; };
virtual void setMaxStartSize( const core::dimension2df& size ) { MaxStartSize = size; };
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) { MinStartSize = size; };
virtual void setMinStartSize( const core::dimension2df& size ) { MinStartSize = size; };
//! Get Mesh we're emitting particles from
virtual const IMesh* getMesh() const { return Mesh; }
......@@ -105,10 +105,10 @@ public:
virtual const video::SColor& getMaxStartColor() const { return MaxStartColor; }
//! Gets the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const { return MaxStartSize; };
virtual const core::dimension2df& getMaxStartSize() const { return MaxStartSize; };
//! Gets the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const { return MinStartSize; };
virtual const core::dimension2df& getMinStartSize() const { return MinStartSize; };
private:
......@@ -121,7 +121,7 @@ private:
f32 NormalDirectionModifier;
core::array<SParticle> Particles;
core::vector3df Direction;
core::vector2df MaxStartSize, MinStartSize;
core::dimension2df MaxStartSize, MinStartSize;
u32 MinParticlesPerSecond, MaxParticlesPerSecond;
video::SColor MinStartColor, MaxStartColor;
u32 MinLifeTime, MaxLifeTime;
......
......@@ -17,8 +17,8 @@ CParticlePointEmitter::CParticlePointEmitter(
u32 maxParticlesPerSecond, video::SColor minStartColor,
video::SColor maxStartColor, u32 lifeTimeMin, u32 lifeTimeMax,
s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize)
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize)
: Direction(direction),
MinStartSize(minStartSize), MaxStartSize(maxStartSize),
MinParticlesPerSecond(minParticlesPerSecond),
......
......@@ -28,8 +28,8 @@ public:
u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Prepares an array with new particles to emitt into the system
//! and returns how much new particles there are.
......@@ -51,10 +51,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) { MaxStartColor = color; }
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) { MaxStartSize = size; };
virtual void setMaxStartSize( const core::dimension2df& size ) { MaxStartSize = size; };
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) { MinStartSize = size; };
virtual void setMinStartSize( const core::dimension2df& size ) { MinStartSize = size; };
//! Gets direction the emitter emits particles.
virtual const core::vector3df& getDirection() const { return Direction; }
......@@ -72,10 +72,10 @@ public:
virtual const video::SColor& getMaxStartColor() const { return MaxStartColor; }
//! Gets the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const { return MaxStartSize; };
virtual const core::dimension2df& getMaxStartSize() const { return MaxStartSize; };
//! Gets the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const { return MinStartSize; };
virtual const core::dimension2df& getMinStartSize() const { return MinStartSize; };
//! Writes attributes of the object.
virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const;
......@@ -87,7 +87,7 @@ private:
SParticle Particle;
core::vector3df Direction;
core::vector2df MinStartSize, MaxStartSize;
core::dimension2df MinStartSize, MaxStartSize;
u32 MinParticlesPerSecond, MaxParticlesPerSecond;
video::SColor MinStartColor, MaxStartColor;
u32 MinLifeTime, MaxLifeTime;
......
......@@ -17,8 +17,8 @@ CParticleRingEmitter::CParticleRingEmitter(
u32 maxParticlesPerSecond, const video::SColor& minStartColor,
const video::SColor& maxStartColor, u32 lifeTimeMin, u32 lifeTimeMax,
s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
: Center(center), Radius(radius), RingThickness(ringThickness),
Direction(direction),
MaxStartSize(maxStartSize), MinStartSize(minStartSize),
......
......@@ -29,8 +29,8 @@ public:
u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f)
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f)
);
//! Prepares an array with new particles to emitt into the system
......@@ -53,10 +53,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) { MaxStartColor = color; }
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) { MaxStartSize = size; };
virtual void setMaxStartSize( const core::dimension2df& size ) { MaxStartSize = size; };
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) { MinStartSize = size; };
virtual void setMinStartSize( const core::dimension2df& size ) { MinStartSize = size; };
//! Set the center of the ring
virtual void setCenter( const core::vector3df& center ) { Center = center; }
......@@ -83,10 +83,10 @@ public:
virtual const video::SColor& getMaxStartColor() const { return MaxStartColor; }
//! Gets the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const { return MaxStartSize; };
virtual const core::dimension2df& getMaxStartSize() const { return MaxStartSize; };
//! Gets the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const { return MinStartSize; };
virtual const core::dimension2df& getMinStartSize() const { return MinStartSize; };
//! Get the center of the ring
virtual const core::vector3df& getCenter() const { return Center; }
......@@ -106,7 +106,7 @@ private:
f32 RingThickness;
core::vector3df Direction;
core::vector2df MaxStartSize, MinStartSize;
core::dimension2df MaxStartSize, MinStartSize;
u32 MinParticlesPerSecond, MaxParticlesPerSecond;
video::SColor MinStartColor, MaxStartColor;
u32 MinLifeTime, MaxLifeTime;
......
......@@ -5,7 +5,7 @@ namespace irr
{
namespace scene
{
CParticleScaleAffector::CParticleScaleAffector(const core::vector2df& scaleTo)
CParticleScaleAffector::CParticleScaleAffector(const core::dimension2df& scaleTo)
: ScaleTo(scaleTo)
{
}
......@@ -18,22 +18,22 @@ namespace irr
const u32 maxdiff = particlearray[i].endTime - particlearray[i].startTime;
const u32 curdiff = now - particlearray[i].startTime;
const f32 newscale = (f32)curdiff/maxdiff;
particlearray[i].size = particlearray[i].startSize+newscale*ScaleTo;
particlearray[i].size = particlearray[i].startSize+ScaleTo*newscale;
}
}
void CParticleScaleAffector::serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options)
{
out->addFloat("ScaleToX", ScaleTo.X);
out->addFloat("ScaleToY", ScaleTo.Y);
out->addFloat("ScaleToWidth", ScaleTo.Width);
out->addFloat("ScaleToHeight", ScaleTo.Height);
}
s32 CParticleScaleAffector::deserializeAttributes(s32 startIndex, io::IAttributes* in, io::SAttributeReadWriteOptions* options)
{
ScaleTo.X = in->getAttributeAsFloat("ScaleToX");
ScaleTo.Y = in->getAttributeAsFloat("ScaleToY");
ScaleTo.Width = in->getAttributeAsFloat("ScaleToWidth");
ScaleTo.Height = in->getAttributeAsFloat("ScaleToHeight");
return 0;
}
......
......@@ -10,7 +10,7 @@ namespace irr
class CParticleScaleAffector : public IParticleAffector
{
public:
CParticleScaleAffector(const core::vector2df& scaleTo = core::vector2df(1.0f, 1.0f));
CParticleScaleAffector(const core::dimension2df& scaleTo = core::dimension2df(1.0f, 1.0f));
virtual void affect(u32 now, SParticle *particlearray, u32 count);
......@@ -30,7 +30,7 @@ namespace irr
virtual E_PARTICLE_AFFECTOR_TYPE getType() const;
protected:
core::vector2df ScaleTo;
core::dimension2df ScaleTo;
};
}
}
......
......@@ -18,8 +18,8 @@ CParticleSphereEmitter::CParticleSphereEmitter(
u32 maxParticlesPerSecond, const video::SColor& minStartColor,
const video::SColor& maxStartColor, u32 lifeTimeMin, u32 lifeTimeMax,
s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
: Center(center), Radius(radius), Direction(direction),
MinStartSize(minStartSize), MaxStartSize(maxStartSize),
MinParticlesPerSecond(minParticlesPerSecond),
......
......@@ -30,8 +30,8 @@ public:
u32 lifeTimeMin=2000,
u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Prepares an array with new particles to emitt into the system
//! and returns how much new particles there are.
......@@ -53,10 +53,10 @@ public:
virtual void setMaxStartColor( const video::SColor& color ) { MaxStartColor = color; }
//! Set the maximum starting size for particles
virtual void setMaxStartSize( const core::vector2df& size ) { MaxStartSize = size; };
virtual void setMaxStartSize( const core::dimension2df& size ) { MaxStartSize = size; };
//! Set the minimum starting size for particles
virtual void setMinStartSize( const core::vector2df& size ) { MinStartSize = size; };
virtual void setMinStartSize( const core::dimension2df& size ) { MinStartSize = size; };
//! Set the center of the sphere for particle emissions
virtual void setCenter( const core::vector3df& center ) { Center = center; }
......@@ -80,10 +80,10 @@ public:
virtual const video::SColor& getMaxStartColor() const { return MaxStartColor; }
//! Gets the maximum starting size for particles
virtual const core::vector2df& getMaxStartSize() const { return MaxStartSize; };
virtual const core::dimension2df& getMaxStartSize() const { return MaxStartSize; };
//! Gets the minimum starting size for particles
virtual const core::vector2df& getMinStartSize() const { return MinStartSize; };
virtual const core::dimension2df& getMinStartSize() const { return MinStartSize; };
//! Get the center of the sphere for particle emissions
virtual const core::vector3df& getCenter() const { return Center; }
......@@ -99,7 +99,7 @@ private:
f32 Radius;
core::vector3df Direction;
core::vector2df MinStartSize, MaxStartSize;
core::dimension2df MinStartSize, MaxStartSize;
u32 MinParticlesPerSecond, MaxParticlesPerSecond;
video::SColor MinStartColor, MaxStartColor;
u32 MinLifeTime, MaxLifeTime;
......
......@@ -127,8 +127,8 @@ CParticleSystemSceneNode::createAnimatedMeshSceneNodeEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
{
return new CParticleAnimatedMeshSceneNodeEmitter( node,
useNormalDirection, direction, normalDirectionModifier,
......@@ -146,8 +146,8 @@ IParticleBoxEmitter* CParticleSystemSceneNode::createBoxEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax,
s32 maxAngleDegrees, const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
s32 maxAngleDegrees, const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
{
return new CParticleBoxEmitter(box, direction, minParticlesPerSecond,
maxParticlesPerSecond, minStartColor, maxStartColor,
......@@ -164,8 +164,8 @@ IParticleCylinderEmitter* CParticleSystemSceneNode::createCylinderEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
{
return new CParticleCylinderEmitter( center, radius, normal, length,
outlineOnly, direction,
......@@ -184,8 +184,8 @@ IParticleMeshEmitter* CParticleSystemSceneNode::createMeshEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize,
const core::vector2df& maxStartSize)
const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize)
{
return new CParticleMeshEmitter( mesh, useNormalDirection, direction,
normalDirectionModifier, mbNumber, everyMeshVertex,
......@@ -201,8 +201,8 @@ IParticlePointEmitter* CParticleSystemSceneNode::createPointEmitter(
const core::vector3df& direction, u32 minParticlesPerSecond,
u32 maxParticlesPerSecond, const video::SColor& minStartColor,
const video::SColor& maxStartColor, u32 lifeTimeMin, u32 lifeTimeMax,
s32 maxAngleDegrees, const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
s32 maxAngleDegrees, const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
{
return new CParticlePointEmitter(direction, minParticlesPerSecond,
maxParticlesPerSecond, minStartColor, maxStartColor,
......@@ -218,7 +218,7 @@ IParticleRingEmitter* CParticleSystemSceneNode::createRingEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax, s32 maxAngleDegrees,
const core::vector2df& minStartSize, const core::vector2df& maxStartSize )
const core::dimension2df& minStartSize, const core::dimension2df& maxStartSize )
{
return new CParticleRingEmitter( center, radius, ringThickness, direction,
minParticlesPerSecond, maxParticlesPerSecond, minStartColor,
......@@ -233,8 +233,8 @@ IParticleSphereEmitter* CParticleSystemSceneNode::createSphereEmitter(
u32 minParticlesPerSecond, u32 maxParticlesPerSecond,
const video::SColor& minStartColor, const video::SColor& maxStartColor,
u32 lifeTimeMin, u32 lifeTimeMax,
s32 maxAngleDegrees, const core::vector2df& minStartSize,
const core::vector2df& maxStartSize )
s32 maxAngleDegrees, const core::dimension2df& minStartSize,
const core::dimension2df& maxStartSize )
{
return new CParticleSphereEmitter(center, radius, direction,
minParticlesPerSecond, maxParticlesPerSecond,
......@@ -254,7 +254,7 @@ IParticleAttractionAffector* CParticleSystemSceneNode::createAttractionAffector(
}
//! Creates a scale particle affector.
IParticleAffector* CParticleSystemSceneNode::createScaleParticleAffector(const core::vector2df& scaleTo)
IParticleAffector* CParticleSystemSceneNode::createScaleParticleAffector(const core::dimension2df& scaleTo)
{
return new CParticleScaleAffector(scaleTo);
}
......@@ -335,19 +335,19 @@ void CParticleSystemSceneNode::render()
#if 0
core::vector3df horizontal = camera->getUpVector().crossProduct(view);
horizontal.normalize();
horizontal *= 0.5f * particle.size.X;
horizontal *= 0.5f * particle.size.Width;
core::vector3df vertical = horizontal.crossProduct(view);
vertical.normalize();
vertical *= 0.5f * particle.size.Y;
vertical *= 0.5f * particle.size.Height;
#else
f32 f;
f = 0.5f * particle.size.X;
f = 0.5f * particle.size.Width;
const core::vector3df horizontal ( m[0] * f, m[4] * f, m[8] * f );
f = -0.5f * particle.size.Y;
f = -0.5f * particle.size.Height;
const core::vector3df vertical ( m[1] * f, m[5] * f, m[9] * f );
#endif
......@@ -489,12 +489,12 @@ void CParticleSystemSceneNode::setParticlesAreGlobal(bool global)
//! Sets the size of all particles.
void CParticleSystemSceneNode::setParticleSize(const core::dimension2d<f32> &size)
{
os::Printer::log("Deprecated, use setMinStartSize/setMaxStartSize in emitter.", irr::ELL_WARNING);
//A bit of a hack, but better here than in the particle code
const core::vector2df tempsize(size.Width, size.Height);
if (Emitter)
{
Emitter->setMinStartSize(tempsize);
Emitter->setMaxStartSize(tempsize);
Emitter->setMinStartSize(size);
Emitter->setMaxStartSize(size);
}
ParticleSize = size;
}
......
......@@ -71,8 +71,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Creates a box particle emitter.
virtual IParticleBoxEmitter* createBoxEmitter(
......@@ -84,8 +84,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Creates a particle emitter for emitting from a cylinder
virtual IParticleCylinderEmitter* createCylinderEmitter(
......@@ -97,8 +97,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Creates a mesh particle emitter.
virtual IParticleMeshEmitter* createMeshEmitter(
......@@ -112,8 +112,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin = 2000, u32 lifeTimeMax = 4000,
s32 maxAngleDegrees = 0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Creates a point particle emitter.
virtual IParticlePointEmitter* createPointEmitter(
......@@ -124,8 +124,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Creates a ring particle emitter.
virtual IParticleRingEmitter* createRingEmitter(
......@@ -137,8 +137,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Creates a sphere particle emitter.
virtual IParticleSphereEmitter* createSphereEmitter(
......@@ -150,8 +150,8 @@ public:
const video::SColor& maxStartColor = video::SColor(255,255,255,255),
u32 lifeTimeMin=2000, u32 lifeTimeMax=4000,
s32 maxAngleDegrees=0,
const core::vector2df& minStartSize = core::vector2df(5.0f,5.0f),
const core::vector2df& maxStartSize = core::vector2df(5.0f,5.0f) );
const core::dimension2df& minStartSize = core::dimension2df(5.0f,5.0f),
const core::dimension2df& maxStartSize = core::dimension2df(5.0f,5.0f) );
//! Creates a point attraction affector. This affector modifies the positions of the
//! particles and attracts them to a specified point at a specified speed per second.
......@@ -160,7 +160,7 @@ public:
bool affectX = true, bool affectY = true, bool affectZ = true);
//! Creates a scale particle affector.
virtual IParticleAffector* createScaleParticleAffector(const core::vector2df& scaleTo = core::vector2df(1.0f, 1.0f));
virtual IParticleAffector* createScaleParticleAffector(const core::dimension2df& scaleTo = core::dimension2df(1.0f, 1.0f));
//! Creates a fade out particle affector.
virtual IParticleFadeOutAffector* createFadeOutParticleAffector(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment