Никита Круглицкий 9f19c7d618 update
2025-05-10 19:21:51 +06:00

60 lines
1.2 KiB
Plaintext

--@name koptilnya/mesh_loader/obj_parser
--@client
--@include /koptilnya/libs/workers.txt
require("/koptilnya/libs/workers.txt")
ObjParser = class("ObjParser")
local initialChipName = chip():getChipName()
local function setStatus(status)
setName(string.format("%s (%s)", initialChipName, status))
end
function ObjParser:initialize(link)
self.link = link
self.rawData = nil
self.objData = {}
end
function ObjParser:parse()
addWorker(coroutine.wrap(function()
setStatus("Getting file...")
while not http.canRequest() do
coroutine.yield(1)
end
local rawObj
http.get(self.link, function(response)
rawObj = response
end)
while not rawObj do
coroutine.yield(1)
end
self.rawObj = rawObj
self:onLoaded(rawObj)
setStatus("File received, start parsing...")
local triangles = mesh.trianglesLeft()
self.objData = mesh.createFromObj(self.rawObj, true)
self:onParsed(self.objData, triangles - mesh.trianglesLeft())
setName(initialChipName)
return 2
end))
end
-- STUB
function ObjParser:onLoaded(objData)
end
function ObjParser:onParsed(meshData, usedTriangles)
end