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

41 lines
1.2 KiB
Plaintext

-- @client
ObjParser = class("ObjParser")
local initialChipName = chip():getChipName()
local function setStatus(status)
setName(string.format("%s (%s)", initialChipName, status))
end
function ObjParser:initialize(link, maxQuota)
self.maxQuota = maxQuota or 0.6
local triangles = mesh.trianglesLeft()
setStatus("Getting file...")
http.get(link, function(objData)
objData = string.gsub(objData, "\nl%s%d+%s%d+", "")
local loadMesh = coroutine.wrap(function()
self.meshData = mesh.createFromObj(objData, true, true)
return true
end)
setStatus("File received, start parsing...")
hook.add("think", "loadingMesh", function()
while math.max(quotaAverage(), quotaUsed()) < quotaMax() * self.maxQuota do
if loadMesh() then
setName(initialChipName)
self:onLoaded(objData, self.meshData, triangles - mesh.trianglesLeft())
hook.remove("think", "loadingMesh")
return
end
end
end)
end)
end
function ObjParser:onLoaded(objData, meshData, usedTriangles)
end