-- LUA Script - precede every function and global member with lowercase name of script + '_main' local emitterList = {} local namedEmitter = { snow = { animSpd = 0, SR = 1, freq = 20, lifeMin = 2000, lifeMax = 3000, -- minX minY minZ maxX maxY maxZ offset = { -250, 80, -250, 250, 120, 250 }, speed = { -0.1, -0.6, -0.1, 0.1, -0.3, 0.1 }, rotate = { -3, 3 }, -- currently only Z rotate processed -- startMin startMax endMin endMax scale = { 1, 4, 1, 5 }, alpha = { 40, 75, 0, 0 } }, smoke = { animSpd = 1/2, SR = 1, freq = 40, lifeMin = 500, lifeMax = 4000, -- minX minY minZ maxX maxY maxZ offset = { -5, 20, -5, 7, 20, 17 }, speed = { 0, 0, 0.1, 0.2, 0.5, 0.3 }, rotate = { -0.2, 0.2 },-- currently only Z rotate processed -- startMin startMax endMin endMax scale = { 5, 10, 20, 30 }, alpha = { 40, 75, 0, 0 } } } -- caller must load image local function PE_CreateNamedEmitter( name, image, frames, object ) image = image or 1 -- default to smoke frames = frames or 64 local et = namedEmitter[ name ] if et == nil then return end local emitter = ParticlesGetFreeEmitter() if emitter == -1 then return end local pos, spd, scl = et.offset, et.speed, et.scale if object == nil then ParticlesAddEmitterEx( emitter, et.animSpd, et.SR, pos[1], pos[2], pos[3], pos[4], pos[5], pos[6], scl[1], scl[2], scl[3], scl[4], spd[1], spd[2], spd[3], spd[4], spd[5], spd[6], et.rotate[1], et.rotate[2], et.lifeMin, et.lifeMax, et.alpha[1], et.alpha[2], et.alpha[3], et.alpha[4], et.freq, -1, 0, image, frames ) else ParticlesAddEmitterEx( emitter, et.animSpd, et.SR, pos[1], pos[2], pos[3], pos[4], pos[5], pos[6], scl[1], scl[2], scl[3], scl[4], spd[1], spd[2], spd[3], spd[4], spd[5], spd[6], et.rotate[1], et.rotate[2], et.lifeMin, et.lifeMax, et.alpha[1], et.alpha[2], et.alpha[3], et.alpha[4], et.freq, object, 0, image, frames ) end return emitter end function snow_particle_emitter_init(e) Hide( e ) CollisionOff( e ) end function snow_particle_emitter_main(e) local emitter = emitterList[e] if emitter == nil then emitterList[e] = { used = false } else -- ParticlesLoadImage( "effectbank\\particles\\64snowflakes.dds" ) -- ParticlesLoadImage( "effectbank\\particles\\flowerpuff.png" ) if not emitter.used then local imageFile = ParticlesLoadImage( "effectbank\\particles\\64snowflakes.dds" ) local numFrames = 64 PE_CreateNamedEmitter( 'snow', imageFile, numFrames ) PE_CreateNamedEmitter( 'snow', imageFile, numFrames ) PE_CreateNamedEmitter( 'snow', imageFile, numFrames ) PE_CreateNamedEmitter( 'snow', imageFile, numFrames ) emitter.used = true end end end