Parser = class("Parser") local initialChipName = chip():getChipName() local function setStatus(status) setName(string.format("%s (%s)", initialChipName, status)) end function Parser:initialize(link, maxQuota) if CLIENT then local triangles = mesh.trianglesLeft() local createFromObjCoroutine = coroutine.create(function(objData) self:OnLoaded(objData, mesh.createFromObj(objData, true)) end) setStatus("Getting file...") http.get(link, function(objData) local loadMesh = coroutine.wrap(function() self.meshData = mesh.createFromObj(objData, true) return true end) setStatus("File received, start parsing...") hook.add("think", "loadingMesh", function() while quotaAverage() < quotaMax() * (maxQuota or 0.75) do if loadMesh() then setName(initialChipName) self:onLoaded(objData, self.meshData, triangles - mesh.trianglesLeft()) hook.remove("think", "loadingMesh") return end end end) end) end end function Parser:onLoaded(objData, meshData, usedTriangles) end