72 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			No EOL
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| ---@diagnostic disable: duplicate-set-field
 | |
| 
 | |
| Particles = {}
 | |
| Particle = Particles or {}
 | |
| 
 | |
| function Particle.New(data)
 | |
|     assert(data, "Particle data is nil")
 | |
|     assert(data.dict, "Invalid particle data. Must contain string dict.")
 | |
|     assert(data.ptfx, "Invalid particle data. Must contain string ptfx.")
 | |
| 
 | |
|     local _id = data.id or id.CreateUniqueId(Particles)
 | |
|     data = {
 | |
|         id = _id,
 | |
|         dict = data.dict,
 | |
|         ptfx = data.ptfx,
 | |
|         position = data.position or vector3(0.0, 0.0, 0.0),
 | |
|         rotation = data.rotation or vector3(0, 0, 0),
 | |
|         size = data.size or 1.0,
 | |
|         color = data.color or vector3(255, 255, 255),
 | |
|         looped = data.looped or false,
 | |
|         loopLength = data.loopLength or nil,
 | |
|     }
 | |
|     Particles[_id] = data 
 | |
|     return data
 | |
| end
 | |
| 
 | |
| function Particle.Destroy(id)
 | |
|     if not id or not Particles[id] then return end
 | |
|     Particles[id] = nil
 | |
|     return true
 | |
| end
 | |
| 
 | |
| function Particle.Create(data)
 | |
|     local particleData = Particle.New(data)
 | |
|     if not particleData then return end
 | |
|     TriggerClientEvent("community_bridge:Client:Particle", -1, particleData)
 | |
|     return
 | |
| end
 | |
| 
 | |
|     
 | |
| function Particle.Remove(id)
 | |
|     if not Particle.Destroy(id) then return end    
 | |
|     TriggerClientEvent("community_bridge:Client:ParticleRemove", -1, id)
 | |
| end
 | |
|    
 | |
| function Particle.CreateBulk(datas)
 | |
|     if not datas then return end
 | |
|     local toClient = {}
 | |
|     for k, v in pairs(datas) do
 | |
|         local data = Particle.New(v)
 | |
|         table.insert(toClient, data)
 | |
|     end
 | |
|     TriggerClientEvent("community_bridge:Client:ParticleBulk", -1, toClient)
 | |
|     return toClient
 | |
| end
 | |
| 
 | |
| function Particle.RemoveBulk(ids)
 | |
|     if not ids then return end
 | |
|     local toClient = {}
 | |
|     for k, v in pairs(ids) do
 | |
|         local id = v
 | |
|         if type(v) == "table" then
 | |
|             id = v.id
 | |
|         end
 | |
|         Particle.Destroy(id)
 | |
|         table.insert(toClient, id)
 | |
|     end
 | |
|     TriggerClientEvent("community_bridge:Client:ParticleRemoveBulk", -1, toClient)
 | |
|     return ids
 | |
| end
 | |
| 
 | |
| return Particle | 
