diff --git a/koptilnya/libs/utils.txt b/koptilnya/libs/utils.txt index 94694cf..eff5fa9 100644 --- a/koptilnya/libs/utils.txt +++ b/koptilnya/libs/utils.txt @@ -69,5 +69,7 @@ function byteTable(str, start, length) end function isURL(str) - return string.match(str, "^https?://") ~= nil + local _1, _2, prefix = tx:find("^(%w-):") + + return prefix == "http" or prefix == "https" or prefix == "data end \ No newline at end of file diff --git a/koptilnya/libs/workers.txt b/koptilnya/libs/workers.txt index 0207ae2..1fa7eaf 100644 --- a/koptilnya/libs/workers.txt +++ b/koptilnya/libs/workers.txt @@ -1,7 +1,7 @@ -- @name koptilnya/libs/workers WORKERS = {} -WORKERS_QUOTA = 0.4 +WORKERS_QUOTA = 0.5 local function execWorker(worker) local status diff --git a/koptilnya/mesh_loader/cl_builder.txt b/koptilnya/mesh_loader/cl_builder.txt index 9326d0d..811c945 100644 --- a/koptilnya/mesh_loader/cl_builder.txt +++ b/koptilnya/mesh_loader/cl_builder.txt @@ -99,10 +99,18 @@ function MeshBuilder:_applyMeshes() end end -function MeshBuilder:_setTexture(mat, name, texture) +function MeshBuilder:_setTexture(mat, name, texture, layoutOptions) if isURL(texture) then + texture = texture .. "#hack" .. math.random(1337) + layoutOptions = layoutOptions or {} + mat:setTextureURL(name, texture, function(_, _, _, _, layout) - layout(0, 0, 1024, 1024) + local x = layoutOptions.x or 0 + local y = layoutOptions.y or 0 + local w = layoutOptions.w or 1024 + local h = layoutOptions.h or 1024 + + layout(x, y, w, h) end) else mat:setTexture(name, texture) @@ -123,10 +131,10 @@ function MeshBuilder:_createMaterial(shader, basetexture, bumpmap, options) local mat = material.create(shader) - self:_setTexture(mat, "$basetexture", basetexture) + self:_setTexture(mat, "$basetexture", basetexture, options.baseLayout) if bumpmap ~= "" then - self:_setTexture(mat, "$bumpmap", bumpmap) + self:_setTexture(mat, "$bumpmap", bumpmap, options.bumpLayout) end for k, v in pairs(options) do