-- @name koptilnya/mesh_loader/cl_builder -- @client -- @include /koptilnya/libs/table.txt -- @include obj_parser.txt require("/koptilnya/libs/table.txt") require("obj_parser.txt") MeshBuilder = class("MeshBuilder") function MeshBuilder:initialize(link) self.link = link self.meshData = {} self._objects = {} self._parser = ObjParser:new(link) self._parser.onLoaded = function(parser, objData) self:onObjLoaded(objData) end self._parser.onParsed = function(parser, meshData, usedTriangles) net.start("obj_parsed") net.send() self:onObjParsed(meshData, usedTriangles) self.meshData = meshData self:_applyMeshes() end net.start("initialized") net.send() net.receive("objects", function() self._objects = {} local hasNext = net.readBit() while hasNext == 1 do local name = net.readString() net.readEntity(function(ent) local holo = ent:toHologram() local object = {name = name, holo = holo} table.insert(self._objects, object) end) hasNext = net.readBit() end timer.simple(0.5, function() self:onHologramsReceived(self._objects) self:_applyMeshes() end) end) end function MeshBuilder:_applyMeshes() for _, v in pairs(self._objects) do if self.meshData[v.name] ~= nil then v.holo:setMesh(self.meshData[v.name]) v.holo:setRenderBounds(Vector(-200), Vector(200)) v.meshApplied = true end end if #self._objects > 0 then self:onMeshesApplied() end end -- STUB function MeshBuilder:onObjLoaded(objData) end function MeshBuilder:onObjParsed(meshData, usedTriangles) end function MeshBuilder:onHologramsReceived(objects) end function MeshBuilder:onMeshesApplied() end