![]() |
Skyline Lua API
Version 1.0
Lua Script Reference for Skyline Game Engine.
|
#include <LUA_API_Particle.h>
Public Member Functions | |
| void | attach (int particleFX_HND, int EntityID, float x, float y, float z, int flipDirection) |
| This Function attaches the particle to another object. More... | |
| void | setEffectDuration (int duration) |
| This Function sets a particle effects life time duration. More... | |
| void | setEffectName (string name) |
| This Function sets the name if the particle effect. More... | |
| void | setEffectFile (String filename) |
| Set the file name of the particle effect to load. More... | |
| int | createParticleFX () |
| Creates a new Ogre particle effect ready for spawning. More... | |
| int | createSkyParticleFX () |
| Creates a new SkyParticle effect ready for spawning. More... | |
| int | spawnEffect (int particleFX_ID, float posx, float posy, float posz) |
| This function will spawn an existing Ogre particle system to the provided position. More... | |
| int | spawnSkyParticleEffect (int particleFX_ID, float posx, float posy, float posz) |
| This function will spawn an existing SkyParticle effect to the provided position. More... | |
| void | deleteParticleFX (int particleFX_hnd) |
| This Function deletes a particle effect with the id of particleFX_ID. More... | |
| void | setParticlePosition (int particleFX_ID, float posx, float posy, float posz) |
| Set the position of the particle effect whose ID equals particleFX_ID. More... | |
| void | setEmitting (int particleFX_hnd, int state) |
| Sets whether a particle emitter is emitting particles or not. More... | |
| void | setEmitterRate (int particleFX_hnd, int rate) |
| Sets the rate of the particle emitter. More... | |
| void | setParticleSpeed (int particleFX_hnd, float speed) |
| Sets the Speed of the particle effects movements. More... | |
| void | lookAtObj (int particleFX_ID, int objID) |
| Aim the particle rotation towards an object. More... | |
| void | lookAtPoint (int particleFX_ID, float x, float y, float z) |
| Set the target position of the particle effect whose ID equals particleFX_ID. More... | |
| void | setScale (int particleFX_ID, float scalex, float scaley, float scalez) |
| Set the scale of the particle effect whose ID equals particleFX_ID. More... | |
| void | setRotation (int particleFX_ID, float rotw, float rotx, float roty, float rotz) |
| Set the Rotation of the particle effect whose ID equals particleFX_ID. More... | |
| void | changeParticleData (int particleFX_ID, string filename) |
| This Function Changes the template data for this sky particle to the data provide in the new file. More... | |
| void particle | setRenderOrder (hndl, order) |
| particle.setRenderOrder(hndl, order); More... | |
| void | setVisibleDistance (float distance) |
| Visible distance for the effect. More... | |
| int | PU_Create () |
| Creates a new Particle Universe particle effect ready for spawning. More... | |
| int | PU_Run (int PU_ID, float posx, float posy, float posz) |
| This function will Run an existing Particle Universe(PU) effect in the provided position. More... | |
| PU_Stop (int PU_ID, int fadeoutTime) | |
| This function will Stop a running Particle Universe(PU) effect.. More... | |
| PU_Pause (int PU_ID, int pauseTime) | |
| This function will Pause a running Particle Universe(PU) effect for the time passed in the arg. More... | |
| PU_setRenderOrder (int PU_ID, int order) | |
| This function will set the render order of a Particle Universe(PU) effect. More... | |
All Particle functions can be accessed through the use of this class. Use as particle.function()
The following is a working example of particle spawning, it also demonstrates many other Skyline Lua features. Copy and save the code to a new lua script, attach it to an entity then press the run button.
--[[
|-----------------------------------------------------------------
| Spawn Sky particle example.
| Instructions: Attach this script to an entity.
| Hit A key to Spawn Particles at random positions on the screen
|-----------------------------------------------------------------
--]]
obj = 0
Fx_Data_ID = 0
hnd = 0
x = 0
y = 0
z = 0
function onInit( objID )
------------------------------------------------------------------
-- Create our effect Data, only do this setup once.
------------------------------------------------------------------
obj = objID
sky.lprint ( "\nLUA: onInit() Creating Sky Particle Effects\n" )
effectDuration = 2000 -- Time this effect will live in ms( 1000ms = 1sec )
particleFile = "Boom01" -- this is a *.skyparticle file without the extension
particle.setEffectDuration(effectDuration)
particle.setEffectFile(particleFile)
Fx_Data_ID = particle.createSkyParticleFX() -- create the particle template
x,y,z = entity.getPosition(obj)
end
function onKeyDown( key )
sky.lprint ( "\nLUA: KEY() ")
posx = x + math.random(-60,60)
posy = y + math.random(-60,60)
hnd = particle.spawnSkyParticleEffect(Fx_Data_ID,posx,posy,z-100)
sky.trace()
endFor more information on how these functions can be used please visit the User Manual - https://home.aurasoft-skyline.co.uk
| void particle::attach | ( | int | particleFX_HND, |
| int | EntityID, | ||
| float | x, | ||
| float | y, | ||
| float | z, | ||
| int | flipDirection | ||
| ) |
This Function attaches the particle to another object.
| particleFX_HND | :The handle of the spawned particle effect |
| EntityID | :The ID of the object to attach to. |
| x | y z : The positional offset |
| flip | : Int flip to change the direction along the z axis |
This is a self managed attach. There is no need to deattach on deleting this effect
as this is automatically done for you on a call to delete effect.
The command can be seen as "attach particleFX_HND to object EntityID.
The following is a Small Example on how to use this function:
function onInit(objID)
particle.setEffectDuration(effectDuration)
particle.setEffectFile(particleFile)
Fx_Data_ID = particle.createSkyParticleFX() -- create the particle template
FX_HND = particle.spawnSkyParticleEffect(Fx_Data_ID,posx,posy,z-100)
particle.attach( FX_HND, objID, x, y, z, 1 );
end
| void particle::changeParticleData | ( | int | particleFX_ID, |
| string | filename | ||
| ) |
This Function Changes the template data for this sky particle to the data provide in the new file.
| particleFX_ID | :The ID of the effect which you would like to change the data. |
| filename | :The name of the file containing the particle data. |
The following is a Small Example on how to use this function:
function onInit(objID)
particle.changeParticleData( particleFX_ID, "Cool Effect" );
end
| int particle::createParticleFX | ( | ) |
Creates a new Ogre particle effect ready for spawning.
| None |
Once you have defined the particle params a call to particle.createParticleFX()
will set your particle system up ready for spawning.
The following is a Small Example on how to use this function:
function onInit(objID)
particleFX_ID = particle.createSkyParticleFX()
end
| int particle::createSkyParticleFX | ( | ) |
Creates a new SkyParticle effect ready for spawning.
| None |
Create a new sky particle ready for loading a fresh template files or dynamic editing.
The following is a Small Example on how to use this function:
function onInit(objID)
-- create the particle template
particleFX_ID = particle.createSkyParticleFX()
end
| void particle::deleteParticleFX | ( | int | particleFX_hnd | ) |
This Function deletes a particle effect with the id of particleFX_ID.
| particleFX_hnd | :The ID of the spawned effect which you would like to delete. |
NOTE: Pass the ID handle of the spawned particle, NOT the ID of the data used when creating the particle template.
ie.
particleFX_ID = particle.createSkyParticleFX()
particleFX_hnd = particle.spawnSkyParticleEffect(Fx_Data_ID,posx,posy,z-100);
The following is a Small Example on how to use this function:
function onStop(objID)
particle.deleteParticleFX( particleFX_hnd );
end
| void particle::lookAtObj | ( | int | particleFX_ID, |
| int | objID | ||
| ) |
Aim the particle rotation towards an object.
| particleFX_ID | :The ID of the effect which you would like to affect. |
| objID | : the ID of the object to point the particle at |
The following is a Small Example on how to use this function:
function onUpdate(objID)
particle.lookAtObj(particle_ID, objID);
end
| void particle::lookAtPoint | ( | int | particleFX_ID, |
| float | x, | ||
| float | y, | ||
| float | z | ||
| ) |
Set the target position of the particle effect whose ID equals particleFX_ID.
| particleFX_ID | :The ID of the effect which you would like to work with. |
| posx | :New X Position of the target. |
| posy | :New Y Position of the target. |
| posz | :New Z Position of the target. |
The following is a Small Example on how to use this function:
function onUpdate(objID)
particle.lookAtPoint(particle_ID, 2, 1, 2);
end
| int particle::PU_Create | ( | ) |
Creates a new Particle Universe particle effect ready for spawning.
| None | This command needs to be called if you wish to run any Particle Universe effects. |
The following is a Small Example on how to use this function:
obj = 0;
PU_ID = 0
function onInit(objID)
sky.lprint("LUA: PU Particle Test Script Active!");
obj = objID;
--prepare PU effect
effectDuration = 2000; -- Time this effect will live in ms( 1000ms = 1sec )
particleFile = "mp_torch"; -- this is a *.skyparticle file without the extension
particle.setEffectDuration(effectDuration);
particle.setEffectFile(particleFile);
particle.setVisibleDistance(80);
PU_ID = particle.PU_Create() -- create the PU particle
particle.setScale( PU_ID ,0.2, 0.2, 0.2)
end
| particle::PU_Pause | ( | int | PU_ID, |
| int | pauseTime | ||
| ) |
This function will Pause a running Particle Universe(PU) effect for the time passed in the arg.
| PU_ID | : the PU effect ID for the previously created PU effect. |
The following is a Small Example on how to use this function:
obj = 0;
PU_ID = 0
function onInit(objID)
sky.lprint("LUA: PU Particle Test Script Active!");
obj = objID;
--prepare PU effect
effectDuration = 2000; -- Time this effect will live in ms( 1000ms = 1sec )
particleFile = "mp_torch"; -- this is a *.skyparticle file without the extension
particle.setEffectDuration(effectDuration);
particle.setEffectFile(particleFile);
particle.setVisibleDistance(80);
PU_ID = particle.PU_Create() -- create the PU particle
end
function onKeyDown( key )
x,y,z = entity.getPosition(obj);
particle.PU_Run(PU_ID, x, y, z);
end
function onKeyUp( key )
particle.PU_Pause(PU_ID, 1); --pause for 1 second
end
| int particle::PU_Run | ( | int | PU_ID, |
| float | posx, | ||
| float | posy, | ||
| float | posz | ||
| ) |
This function will Run an existing Particle Universe(PU) effect in the provided position.
| PU_ID | : the effect ID for the previously created PU effect. |
| posx | :X Position to spawn the skyParticle effect. |
| posy | :Y Position to spawn the skyParticle effect. |
| posz | :Z Position to spawn the skyParticle effect. |
This function will spawn an existing PU system at the position x,y,z. Note you must have
already created a PU particle system by the call to the command PU_Create()
The following is a Small Example on how to use this function:
obj = 0;
PU_ID = 0
function onInit(objID)
sky.lprint("LUA: PU Particle Test Script Active!");
obj = objID;
--prepare PU effect
effectDuration = 2000; -- Time this effect will live in ms( 1000ms = 1sec )
particleFile = "mp_torch"; -- this is a *.pu file without the extension
particle.setEffectDuration(effectDuration);
particle.setEffectFile(particleFile);
particle.setVisibleDistance(80);
PU_ID = particle.PU_Create() -- create the PU particle
particle.setScale( PU_ID ,0.2, 0.2, 0.2)
end
function onKeyDown( key )
x,y,z = entity.getPosition(obj);
particle.PU_Run(PU_ID, x, y+1.8, z);
end
| particle::PU_setRenderOrder | ( | int | PU_ID, |
| int | order | ||
| ) |
This function will set the render order of a Particle Universe(PU) effect.
| PU_ID | : the PU effect ID for a previously created PU effect. |
| particle::PU_Stop | ( | int | PU_ID, |
| int | fadeoutTime | ||
| ) |
This function will Stop a running Particle Universe(PU) effect..
| PU_ID | : the PU effect Handle for the previously created PU effect. |
This function will stop a running PU system. By passing a fadeoutTime = 0 a fast stop will be activated
any time other than zero will add a fade out to the PU effect. the Fade out time is set by the arg "fadeoutTime"
this is use in seconds fadeoutTime = 1 will fade out over one second once the effect sequence has completed.
The following is a Small Example on how to use this function:
obj = 0;
PU_ID = 0
function onInit(objID)
sky.lprint("LUA: PU Particle Test Script Active!");
obj = objID;
--prepare PU effect
effectDuration = 2000; -- Time this effect will live in ms( 1000ms = 1sec )
particleFile = "mp_torch"; -- this is a *.skyparticle file without the extension
particle.setEffectDuration(effectDuration);
particle.setEffectFile(particleFile);
particle.setVisibleDistance(80);
PU_ID = particle.PU_Create() -- create the PU particle
end
function onKeyDown( key )
x,y,z = entity.getPosition(obj);
particle.PU_Run(PU_ID, x, y, z);
end
function onKeyUp( key )
particle.PU_Stop(PU_ID, 1);
end
| void particle::setEffectDuration | ( | int | duration | ) |
This Function sets a particle effects life time duration.
| duration | :Sets the lifetime duration (ms) for the particle effect to exist. Note: 1000ms = 1sec |
The following is a Small Example on how to use this function:
function onInit(objID)
particle.setEffectDuration( 2000 );
end
| void particle::setEffectFile | ( | String | filename | ) |
Set the file name of the particle effect to load.
| filename | :File name of the particle effect to load. |
NOTE: The file name string does NOT need to include the file extension, "myParticle" not "myParticle.effect"
The following is a Small Example on how to use this function:
function onInit(objID)
particleFile = "Boom01"; -- this is a *.skyparticle file without the extension
particle.setEffectFile( particleFile );
end
| void particle::setEffectName | ( | string | name | ) |
This Function sets the name if the particle effect.
| name | :set the particle name |
The following is a Small Example on how to use this function:
function onInit(objID)
particle.setEffectName( "myParticle" );
end
| void particle::setEmitterRate | ( | int | particleFX_hnd, |
| int | rate | ||
| ) |
Sets the rate of the particle emitter.
| particleFX_ID | :The handle of the effect which you would like to change the position. |
| rate | : number of particles per second |
This will set the number of particles to be fired by the emitter per second.
function onUpdate(objID)
particle.setEmitterRate(particleFX_hnd, 10);
end
| void particle::setEmitting | ( | int | particleFX_hnd, |
| int | state | ||
| ) |
Sets whether a particle emitter is emitting particles or not.
| particleFX_ID | :The handle of the effect which you would like to change the position. |
| state | : 1 = true, 0 = false - this sets the emitter to spit particles out or not. |
This effect is useful for moving particles that only need particles to emit at certain points, e.g. a vehicle's tire breaking traction. The following is a Small Example on how to use this function:
function onUpdate(objID)
particle.setEmitting(particleFX_hnd, 1);
end
| void particle::setParticlePosition | ( | int | particleFX_ID, |
| float | posx, | ||
| float | posy, | ||
| float | posz | ||
| ) |
Set the position of the particle effect whose ID equals particleFX_ID.
| particleFX_ID | :The ID of the effect which you would like to change the position. |
| posx | :New X Position of the effect. |
| posy | :New Y Position of the effect. |
| posz | :New Z Position of the effect. |
The following is a Small Example on how to use this function:
function onUpdate(objID)
particle.setParticlePosition(particleFX_ID, 0, 10, 0);
end
| void particle::setParticleSpeed | ( | int | particleFX_hnd, |
| float | speed | ||
| ) |
Sets the Speed of the particle effects movements.
| particleFX_ID | :The handle of the effect which you would like to change the position. |
| speed | : > 1 is faster movements, < 1 is slower movements. |
function onUpdate(objID)
particle.setParicleSpeed(particleFX_hnd, 2);
end
| void particle particle::setRenderOrder | ( | hndl | , |
| order | |||
| ) |
particle.setRenderOrder(hndl, order);
| Handle | : |
| Order | : |
Set the render order of particles.
The following is a Small Example on how to use this function:
function onInit(objID)
example coming soon
end
| void particle::setRotation | ( | int | particleFX_ID, |
| float | rotw, | ||
| float | rotx, | ||
| float | roty, | ||
| float | rotz | ||
| ) |
Set the Rotation of the particle effect whose ID equals particleFX_ID.
| particleFX_ID | :The ID of the effect which you would like to change the scale. |
| rotw | :New X Rotation of the effect. |
| rotx | :New X Rotation of the effect. |
| roty | :New Y Rotation of the effect. |
| rotz | :New Z Rotation of the effect. |
The following is a Small Example on how to use this function:
function onUpdate(objID)
particle.setRotation(particle_ID,w,x,y,z);
end
| void particle::setScale | ( | int | particleFX_ID, |
| float | scalex, | ||
| float | scaley, | ||
| float | scalez | ||
| ) |
Set the scale of the particle effect whose ID equals particleFX_ID.
| particleFX_ID | :The ID of the effect which you would like to change the scale. |
| posx | :New X Scale of the effect. |
| posy | :New Y Scale of the effect. |
| posz | :New Z Scale of the effect. |
The following is a Small Example on how to use this function:
function onUpdate(objID)
particle.setParticleScale(particle_ID, 0.5, 0.5, 0.5);
end
| void particle::setVisibleDistance | ( | float | distance | ) |
Visible distance for the effect.
| distance | :thde distance in m untill the effect will be visible. |
once the camewra hs moved further than the visible distance this effect will pause
helping keep performance up.
The following is a Small Example on how to use this function:
function onInit(objID)
particle.changeParticleData( particleFX_ID, "Cool Effect" );
end
| int particle::spawnEffect | ( | int | particleFX_ID, |
| float | posx, | ||
| float | posy, | ||
| float | posz | ||
| ) |
This function will spawn an existing Ogre particle system to the provided position.
| particleFX_ID | : the ID for the previously created particle effect. |
| posx | :X Position to spawn the particle effect. |
| posy | :Y Position to spawn the particle effect. |
| posz | :Z Position to spawn the particle effect. |
This function will spawn an existing particle system to the position x,y,z. Note you must have already
creates a particle system by the call to the command createParticleFX() and the file must be of type *.particle
The following is a Small Example on how to use this function:
function onInit(objID)
particle.spawnEffect(particleFX_ID, 0, 10, -50)
end
| int particle::spawnSkyParticleEffect | ( | int | particleFX_ID, |
| float | posx, | ||
| float | posy, | ||
| float | posz | ||
| ) |
This function will spawn an existing SkyParticle effect to the provided position.
| particleFX_ID | : the ID for the previously created skyParticle effect. |
| posx | :X Position to spawn the skyParticle effect. |
| posy | :Y Position to spawn the skyParticle effect. |
| posz | :Z Position to spawn the skyParticle effect. |
This function will spawn an existing Sky particle system to the position x,y,z. Note you must have
already creates a particle system by the call to the command createParticleFX() and the file must
be of type *.skyparticle
The following is a Small Example on how to use this function:
function onInit(objID)
posx = x + math.random(-60,60);
posy = y + math.random(-60,60);
hnd = particle.spawnSkyParticleEffect(Fx_Data_ID,posx,posy,z-100);
end