local MAX_QUOTA = 0.75 Parser = class("Parser") function Parser:initialize(link) if CLIENT then local triangles = mesh.trianglesLeft() local createFromObjCoroutine = coroutine.create(function(objData) self:OnLoaded(objData, mesh.createFromObj(objData, true)) end) print("Getting file...") http.get(link, function(objData) local loadMesh = coroutine.wrap(function() self.meshData = mesh.createFromObj(objData, true) return true end) print("File received, start parsing...") hook.add("think", "loadingMesh", function() while quotaAverage() < quotaMax() * MAX_QUOTA do if loadMesh() then 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