-- @server MeshBuilder = class("MeshBuilder") function MeshBuilder:initialize(link, modelPlaceholder) self.link = link self.modelPlaceholder = modelPlaceholder or "models/holograms/cube.mdl" self.isReady = false self._objectsNames = {} self._objects = {} self._readyPlayers = {} http.get(link, function(response) for object in string.gmatch(response, "^?\n?o%s([%w_%.%-]+)") do table.insert(self._objectsNames, object) end timer.simple(0, function() self.isReady = true self:onReady(self._objectsNames) end) for _, v in pairs(self._readyPlayers) do self:_sendHolograms(v) end end) net.receive("ready", function(len, ply) table.insert(self._readyPlayers, ply) self:_sendHolograms(ply) end) end function MeshBuilder:_sendHolograms(ply) if #self._objects == 0 then return end net.start("holograms") for _, v in pairs(self._objects) do net.writeBit(1) net.writeString(v.name) net.writeEntity(v.holo) end net.writeBit(0) net.send(ply) end function MeshBuilder:onReady(objectsNames) end function MeshBuilder:build(name, pos, ang, scale, color, mat, parent, relativeTo) if isValid(relativeTo) then pos = relativeTo:localToWorld(pos) ang = relativeTo:localToWorldAngles(ang) end local holo = holograms.create(pos, ang, self.modelPlaceholder, scale) holo:setColor(color) holo:setMaterial(mat) if isValid(parent) then holo:setParent(parent) end table.insert(self._objects, {name = name, holo = holo}) return name, holo end function MeshBuilder:buildAll(pos, ang, scale, color, mat, parent, relativeTo) for _, v in pairs(self._objectsNames) do self:build(v, pos, ang, scale, color, mat, parent, relativeTo) end end