-- @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