This commit is contained in:
Nikita Kruglickiy
2021-04-03 21:08:08 +06:00
parent 1e9e783ee6
commit eb6144ae94
22 changed files with 1440 additions and 282 deletions

View File

@@ -1,4 +1,7 @@
-- @client
-- @include /koptilnya/libs/workers.txt
require("/koptilnya/libs/workers.txt")
ObjParser = class("ObjParser")
local initialChipName = chip():getChipName()
@@ -6,35 +9,44 @@ local function setStatus(status)
setName(string.format("%s (%s)", initialChipName, status))
end
function ObjParser:initialize(link, maxQuota)
self.maxQuota = maxQuota or 0.6
function ObjParser:initialize(link)
addWorker(coroutine.wrap(function()
setStatus("Getting file...")
local triangles = mesh.trianglesLeft()
while not http.canRequest() do
coroutine.yield(1)
end
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
local objData
http.get(link, function(response)
objData = response
objData = string.gsub(response, "\nl%s%d+%s%d+", "")
end)
while not objData do
coroutine.yield(1)
end
self:onLoaded(objData)
local triangles = mesh.trianglesLeft()
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)
self.meshData = mesh.createFromObj(objData, true)
self:onParsed(self.meshData, triangles - mesh.trianglesLeft())
setName(initialChipName)
return 2
end))
end
function ObjParser:onLoaded(objData, meshData, usedTriangles)
-- STUB
function ObjParser:onLoaded(objData)
end
function ObjParser:onParsed(meshData, usedTriangles)
end