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 |