Nikita Kruglickiy 4c12c9d9ed mesh loader v2
2021-03-23 00:42:00 +06:00

58 lines
1.5 KiB
Plaintext

-- @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, maxQuota)
self.link = link
self.meshData = {}
self._objects = {}
self._parser = ObjParser:new(link, maxQuota)
self._parser.onLoaded = function(parser, objData, meshData, usedTriangles)
self.meshData = meshData
self:_applyMeshes()
end
net.receive("holograms", function()
local newObjects = {}
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, meshApplied = false}
table.insert(newObjects, object)
table.insert(self._objects, object)
end)
hasNext = net.readBit()
end
timer.simple(0, function()
self:_applyMeshes()
self:onHologramsReceived(newObjects, self._objects)
end)
end)
end
function MeshBuilder:_applyMeshes()
for _, v in pairs(self._objects) do
if self.meshData[v.name] ~= nil and not v.meshApplied then
v.holo:setMesh(self.meshData[v.name])
v.holo:setRenderBounds(Vector(-200), Vector(200))
v.meshApplied = true
end
end
end
function MeshBuilder:onHologramsReceived(objects)
end