From f94e856301c1e8a578670cbf0bb11a85c6fa405f Mon Sep 17 00:00:00 2001 From: Nikita Kruglickiy Date: Mon, 8 Nov 2021 21:11:51 +0300 Subject: [PATCH] [MeshBuilder] Added layout options for URL textures; Hack for texture link --- koptilnya/libs/utils.txt | 4 +++- koptilnya/libs/workers.txt | 2 +- koptilnya/mesh_loader/cl_builder.txt | 16 ++++++++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) 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