81 lines
1.8 KiB
Plaintext
81 lines
1.8 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)
|
|
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.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
|