From b3410051a27c25e92ec94f482314a3bd63909252 Mon Sep 17 00:00:00 2001 From: Fernando-A-Rocha Date: Thu, 1 Aug 2024 17:30:23 +0100 Subject: [PATCH] add lodDistance property --- .../models/object/1337/big_box/40001.txt | 3 ++- newmodels_reborn/scripts/core/client_logic.lua | 5 +++++ newmodels_reborn/scripts/core/server_logic.lua | 15 ++++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/newmodels_reborn/models/object/1337/big_box/40001.txt b/newmodels_reborn/models/object/1337/big_box/40001.txt index ec6e287..b925110 100644 --- a/newmodels_reborn/models/object/1337/big_box/40001.txt +++ b/newmodels_reborn/models/object/1337/big_box/40001.txt @@ -1 +1,2 @@ -txd=object/1337/boxes.txd \ No newline at end of file +txd=object/1337/boxes.txd +lodDistance=300 \ No newline at end of file diff --git a/newmodels_reborn/scripts/core/client_logic.lua b/newmodels_reborn/scripts/core/client_logic.lua index 2a211a3..a312f19 100644 --- a/newmodels_reborn/scripts/core/client_logic.lua +++ b/newmodels_reborn/scripts/core/client_logic.lua @@ -118,6 +118,10 @@ local function loadCustomModel(customModel, elementToApply) end local disableAutoFree = customInfo.settings.disableAutoFree + local lodDistance = customInfo.settings.lodDistance + if lodDistance then + engineSetModelLODDistance(allocatedModel, lodDistance) + end -- Set loadedModel info loadedModels[customModel] = { @@ -154,6 +158,7 @@ local function freeAllocatedModelNow(customModel) if isTimer(loadedModel.freeAllocatedTimer) then killTimer(loadedModel.freeAllocatedTimer) end + engineResetModelLODDistance(loadedModel.id) engineFreeModel(loadedModel.id) -- Destroy model elements unless used by another loaded model diff --git a/newmodels_reborn/scripts/core/server_logic.lua b/newmodels_reborn/scripts/core/server_logic.lua index e7448ef..8872248 100644 --- a/newmodels_reborn/scripts/core/server_logic.lua +++ b/newmodels_reborn/scripts/core/server_logic.lua @@ -1,11 +1,15 @@ -- Apologies for the excess if statements, I'll clean this up later. +-- Model .txt settings: local CUSTOM_MODEL_SETTINGS = { ["disableAutoFree"] = true, ["disableTXDTextureFiltering"] = true, ["enableDFFAlphaTransparency"] = true, } --- Additionally, model settings .txt can contain path to txd, dff, and col files. +-- - txd=path +-- - dff=path +-- - col=path +-- - lodDistance=number local function stringStartswith(str, start) return str:sub(1, #start) == start @@ -69,10 +73,16 @@ local function loadModels() settingStr = settingStr:gsub("\r", "") if CUSTOM_MODEL_SETTINGS[settingStr] then customModelSettings[settingStr] = true + elseif stringStartswith(settingStr, "lodDistance=") then + local lodDistance = tonumber(settingStr:sub(13)) + if not lodDistance then + return false, "invalid lodDistance value: " .. settingStr + end + customModelSettings.lodDistance = lodDistance else for _, settingModelType in pairs({"txd", "dff", "col"}) do if stringStartswith(settingStr, settingModelType.."=") then - local settingModelPath = settingStr:sub(5) + local settingModelPath = settingStr:sub(#settingModelType + 2) local settingModelFullPath = "models/" .. settingModelPath if not fileExists(settingModelFullPath) then return false, "setting " .. settingModelType .. " file not found: " .. settingModelPath @@ -130,7 +140,6 @@ local function loadModels() name = info.name or "Unnamed", settings = info.settings or {}, } - if modelType == "object" then iprint(customModels[customModel]) end end end end