Particle
Universe V 0.8 - the 'Red' version
GeometryRotator: Add 'geom_rot_axis'. If the rotation axis is set, all particles are rotating around this vector, otherwise the particles are rotating random.
VortexAffector: 'vortex_aff_speed' is now a dynamic attribute (although it doesnīt use the particle lifetime)
ParticleSystem: Added option 'tight_bounding_box' to wrap the bounding box tight around the particle system instead of let it grow and never shrink (which is default).
ParticleEmitter: 'angle' is a DynamicAttribute. This makes it for possible to let the angle increase or decrease over time.
SlaveEmitter: Makes it possible to emit a particle on the same location and with the same direction as a just emitted particle from another emitter (of another technique).
SlaveBehaviour: Expands the SlaveEmitter. If you add both to your ParticleTechnique, the particle will not only start at the same location as another emitter particle, but it also follows that particle.
Replaced IPipe with TechniqueListener, which allows multiple listeners per ParticleTechnique. Callback functions are particleEmitted() and particleExpired().
ParticleObserver: Added 'enabled', to be used in an observer script.
Added 'keep_local' to Particle System, Technique and Emitter. This makes particles move relative to the system, technique or emitter. Only useful if system, technique or emitter itself are moving/emitted.
ColourAffector: Add 'colour_operation' to define operations on particle colour and ColourAffector.
ParticleEmitter: Add 'start_colour_range', 'end_colour_range' and 'colour', to initialise a particle with a colour.
Create SphereRenderer and SphereSet, which is similar to the BoxRenderer. This renderer used a SphereSet, which can also be use stand-alone, just as a BillboardSet.
Validate in all Observers whether the particle is null (if it is used).
DynamicAttibutes in ScaleAffector, TextureRotator, JetAffector and GeometryRotator receive the particle time-to-live fraction instead of the time since the start of the particle system. This is needed to define dynamic_curved_... in such a way, that it enables control points between begin..end of the particles' time to live.
Bugfix: Scale description of ParticleSystem in the manual is corrupt.
Bugfix: If iteration_interval is set, the techniques are updated only once. This is inaccurate if the framerate is really low.
Bugfix: An alias that includes an emitter with a duration property crashes.
Bugfix: A restarted technique doesnīt start with the proper mEnabled value.
Bugfix: Name was not copied in cloned ParticleObservers.
Bugfix: Potential infinite loop in LineAffector::_preProcessParticles, because mTimeStep is initialised with 0.
Bugfix: Regular particles emitted with keep_local set to true arenīt emitted in local space.
Bugfix (partly): If a framedrop occurs, some particles are affected heavily (a ScaleAffector causes a particle to expand rapidly).
Bugfix: Scaling of a Box in the BoxRenderer doesnīt work.
Bugfix: Particle system with ColourAffector causes flashes, which disappear after a while.
Particle
Universe V 0.7 - the 'Aquamarine' version
ParticleAffector: Add attribute 'affect_specialisation', which can be used to differentiate behaviour in a few standards situations. One example is to affect older particles less than particles, which are just emitted. Applied to ScaleAffector, GravityAffector and LinearForceAffector. If needed, other affectors may follow.
ParticleTechnique: Added 'max_velocity', which makes it possible to limit the particle velocity. For example, in case the particle system represents a flock of birds, a maximum velocity must be set to prevent unrealistic behaviour.
Flocking behaviour, which is accomplished be three new affectors:
i) FlockCenteringAffector - Particles tend to steer towards the center of a flock.
ii)CollisionAvoidanceAffector - Particles try to avoid collision with neighbouring particles. Note, that collision avoidance with plane-, sphere- and box- colliders is still on the todo list.
iii)VelocityMatchingAffector - Particles try to match their velocity with their neighbouring particles.
A new example script (027) demonstrates the flocking behaviour.
ParticleObserver: Added 'observe_until_event', which is used to observe (a particle), until the event occurs and the eventhandler(s) are called. After that, the observer doesn't observe anymore.
ParticleObserver: Added 'observe_interval', to observe after each interval.
EntityRender: Added 'entity_orientation_type' to allow besides the particles' own orientation, also orientation towards the particle direction.
CircleEmitter: Added 'circle_em_normal' to apply orientation to the circle emitter.
Created ParticleUniverseSystemManager::removeAllParticleSystemTemplates() to explicitly delete templates and aliasses.
OnRandomObserver: New observer that generates a random value between 0..1 and if the value exceeds a certain threshold (0..1) it fires an event.
DoEnableComponentEventHandler: Is now also able to enable/disable an 'observer_component'. This is demonstrated in the windyFireSystem script, where two observers are switching each other on and off, while they also switch between two LinearForceAffectors. This flip/flop mechanism creates a windy-like effect.
DynamicAttribute: Added Oscillate types Sine and Square (others types later, if needed). A lot of properties make use of a DynamicAttribute, which provides a lot more possibilities. For example, you can assign a Sine-function to the 'emission_rate' property, which gives a pulsating emission effect.
ParticleTechnique: Add Spatial Hashing algorithm to determine nearest neighbours, instead of a brute-force method.
InterParticleCollider: New collider, which makes it possible that particles can collide with each other.
Particle: Added hasEventFlags() to Particle and changed getEventFlags() in if-statements with hasEventFlags().
Bugfix: Creating an alias technique causes an exception when the plugin shuts down.
Bugfix: Splashes in rainSystem_1 are not visible anymore.
Particle
Universe V 0.6 - the 'Dark Orange' version
Scale the Particle System as a whole. Scaling applies to (relative) positions, particle size, velocity and time. These aspects can be scale
independent from each other.
PositionEmitter: Add positions to an emitter so that the particles emit on these positions.
Added distance threshold to Attachable. Any attachable can use it to determine whether it still has any influence on the particle if the distance between the particle and the SceneNode to which the Attachable is attached exceeds the threshold.
Add 'pre_post' indication to the DoEnableAffectorEventHandler, to execute also the pre- and post processing functions.
DoScaleEventHandler: Scales the velocity or time-to-live, with a scale value if an event occurs.
VortexExtern: This a a wrapper around the VortexAffector, which makes it possible to apply the vortex effect from outside the particle system. a VortexExtern can be attached to another SceneNode and the vortex effect depends on the mutual distance between the particle and the VortexExtern.
Moved _getSortMode() to the ParticleRenderer.
Moved renderqueue to the ParticleRenderer level.
Solved linker warnings 4217
Create ParticleUniverse_d.dll in debug mode and move .lib files to the lib folder.
Bugfix: MeshSurfaceEmitter crashes randomly.
Bugfix: Cannot attach more than 1 Extern (affector wrapper), because it is created without any name.
Particle
Universe V 0.5 - the 'Royal Blue' version
Compatible with Visual C++ 2008.
Bugfixes (asserts in particle pool) and correct use of enumerations.
Particle Systems themselves can also be emitted.
New renderer, the 'LightRenderer', which enable particles to be emitted as lights.
Added new script 'FXpression'.
'keep_local' added to ParticleTechnique, to allow particles to be emitted in local space instead of worldspace.
'mesh_surface_scale' added to MeshSurfaceEmitter, to scale the mesh independent of the node.
'vertex_em_scale' added to VertexEmitter, to scale the mesh independent of the node.
VortexAffector also takes
orientation of the particle itself into account.
Emitted components other than visual particles are now initialised correctly after emission and expiration.
Manual updated.
Particle Universe V 0.4 - the
'Violet' version (available now)
First public release

Particle Universe V 1.0 - the 'Chartreuse' version
First complete version.
Particle Universe > V1.0
Multi-threading support.
Create video from active particle system, so it can be played on a single billboard.
Particle System editor with wxWidgets or better, create an editor plugin in a worldeditor (still to be
determined which one).
Replace current scripts parser (based on compiler2pass) with Preators' version.
Create BillboardChainRenderer.
Soft particles.
GPU renderer.
Hardware instancing renderer.
Flocking behaviour.
Particles with sensors + Target steering behaviour (seek, pursuit, ...).
Particles with field of view + Neighbor steering behaviour (alignment, keep distance).
Fluid system.
Create predefined animation tracks.
Extend PhysX plugin.
Metaball Renderer.
Animation of particles.
Add Oscillate types (Sine, ...) to DynamicAttribute.
TurbulenceAffector, using Perlin noise.
ColourImageAffector, similar to the one in Ogre.
TextureEmitter, emits from certain colours of a texture, also takes the object shape on which the texture
is wrapped into account.
PositionEmitter, stores a list with positions and emits a particle on every position
OverlayEmitter, emit particles on an overlay.
ParticleSystem::stop(): expire incremental.
SphereCollider and BoxCollider.
Add posibility to keep the particles inside the shape.
API documentation extended.
|