-- LUA Script - precede every function and global member with lowercase name of script + '_main' local emitterList = {} local namedEmitter = { rain = { animSpd = 0, SR = 0, freq = 20, lifeMin = 1000, lifeMax = 1000, -- minX minY minZ maxX maxY maxZ offset = { -150, 200, -150, 150, 200, 150 }, speed = { 0, -4, 0, 0, -6, 0 }, rotate = { 0, 0 },-- currently only Z rotate processed -- startMin startMax endMin endMax scale = { 2, 10, 5, 15 }, alpha = { 40, 40, 20, 20 } } } -- caller must load image local function PE_CreateNamedEmitter( name, image, frames, entity ) 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 entity == 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, entity, 0, image, frames ) end return emitter end function rain_particle_init(e) end local controlEnt = nil local testImg = nil function rain_particle_main(e) if controlEnt == nil then controlEnt = e end local emitter = emitterList[e] if emitter == nil then emitterList[e] = { used = false } --if testImg == nil then testImg = ParticlesLoadImage( "effectbank\\particles\\raindrop.dds", 4 ) end if testImg == nil then testImg = ParticlesLoadImage( "entitybank\\decals\\Green Flare.dds", 4 ) end else if not emitter.used then local numFrames = 16 local smoke = PE_CreateNamedEmitter( 'rain', testImg, numFrames ) emitter.used = true ParticlesSetWindVector( 0, 0 ) end end end