100 lines
2.5 KiB
Lua
100 lines
2.5 KiB
Lua
|
local CUR_MAP_DATA = {}
|
||
|
|
||
|
local function LoadOBBConfig()
|
||
|
local map = game.GetMap()
|
||
|
local GetData = "phe-config/obb/"..map..".txt"
|
||
|
|
||
|
if !file.Exists(GetData, "DATA") then
|
||
|
printVerbose("[PH: Enhanced] No OBB Configuration found for map: "..map)
|
||
|
return false
|
||
|
end
|
||
|
|
||
|
if file.Exists(GetData, "DATA") then
|
||
|
local data = file.Read(GetData,"DATA")
|
||
|
local ParsedData = util.JSONToTable(data)
|
||
|
|
||
|
return ParsedData
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function DoConfig()
|
||
|
local data = CUR_MAP_DATA
|
||
|
if !data then return end
|
||
|
|
||
|
--[[
|
||
|
JSON structure:
|
||
|
[
|
||
|
[
|
||
|
"model/path/b.mdl",
|
||
|
{
|
||
|
"min": [0, 0, 0],
|
||
|
"max": [16, 16, 72],
|
||
|
"dmin": [0, 0, 0],
|
||
|
"dmax": [16, 16, 28]
|
||
|
}
|
||
|
]
|
||
|
]
|
||
|
|
||
|
LUA structure:
|
||
|
1:
|
||
|
1: "model/path/b.mdl"
|
||
|
2:
|
||
|
min = {-0,-0,-0}
|
||
|
max = {16,16,72}
|
||
|
dmin = {-0,-0,-0}
|
||
|
dmax = {16,16,28}
|
||
|
]]
|
||
|
|
||
|
local function SetEntityData(ent, tab1, tab2)
|
||
|
ent:SetNWBool("hasCustomHull",true)
|
||
|
ent.m_Hull = tab1
|
||
|
ent.m_dHull = tab2
|
||
|
end
|
||
|
|
||
|
for i=1,#data do
|
||
|
local tent = ents.FindByModel(data[i][1])
|
||
|
local min = Vector(data[i][2]["min"][1],data[i][2]["min"][2],data[i][2]["min"][3])
|
||
|
local max = Vector(data[i][2]["max"][1],data[i][2]["max"][2],data[i][2]["max"][3])
|
||
|
local dmin = Vector(data[i][2]["dmin"][1],data[i][2]["dmin"][2],data[i][2]["dmin"][3])
|
||
|
local dmax = Vector(data[i][2]["dmax"][1],data[i][2]["dmax"][2],data[i][2]["dmax"][3])
|
||
|
|
||
|
for _,found in pairs(tent) do
|
||
|
if IsValid(found) then
|
||
|
printVerbose("[PH: Enhanced] OBB MODIFIER: Setting up Vector Value for Entity ["..found:EntIndex().."]["..found:GetModel().."] =\n >Hull-Vector: min "..tostring(min).." max "..tostring(max).."\n >Duck-Hull Vector: dmin "..tostring(dmin).." dmax "..tostring(dmax))
|
||
|
SetEntityData(found,{min,max},{dmin,dmax})
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
hook.Add("Initialize", "PHE.InitOBBModelData", function()
|
||
|
|
||
|
if !file.Exists("phe-config/obb","DATA") then
|
||
|
file.CreateDir("phe-config/obb")
|
||
|
end
|
||
|
|
||
|
timer.Simple(1.5, function()
|
||
|
printVerbose("[PH: Enhanced] Initializing OBB ModelData Config...")
|
||
|
|
||
|
CUR_MAP_DATA = LoadOBBConfig()
|
||
|
DoConfig()
|
||
|
end)
|
||
|
end)
|
||
|
|
||
|
hook.Add("PostCleanupMap", "PHE.PostOBBModelData", function()
|
||
|
if GetConVar("ph_reload_obb_setting_everyround"):GetBool() then
|
||
|
printVerbose("[PH: Enhanced] PostCleanup OBB ModelData Config...")
|
||
|
|
||
|
DoConfig()
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
concommand.Add("refresh_obb_map_setting", function(ply)
|
||
|
|
||
|
printVerbose("[PH: Enhanced] Refreshing OBB Model Data Modifier...")
|
||
|
CUR_MAP_DATA = LoadOBBConfig()
|
||
|
|
||
|
DoConfig()
|
||
|
|
||
|
end, nil, "Reload PH: Enhanced OBB/Collission Bound Model Data Modifier on this map.", FCVAR_SERVER_CAN_EXECUTE)
|