41 lines
1.1 KiB
Plaintext
41 lines
1.1 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.5
|
|
|
|
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 quotaAverage() < 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
|