mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
122
lua/stormfox2/functions/sh_tonemapcontroller.lua
Normal file
122
lua/stormfox2/functions/sh_tonemapcontroller.lua
Normal file
@@ -0,0 +1,122 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
StormFox2.Setting.AddSV("edit_tonemap", false, nil, "Effects")
|
||||
|
||||
if CLIENT then return end
|
||||
StormFox2.ToneMap = {}
|
||||
--SetBloomScale
|
||||
-- On load data
|
||||
local function LoadSettings()
|
||||
-- Locate tonemap
|
||||
local t = StormFox2.Map.FindClass("env_tonemap_controller")
|
||||
if #t < 1 then return end -- Unable to locate tonemap within BSP
|
||||
local targetname = t[1].targetname
|
||||
if not targetname then return end -- This tonemap can't have any settings
|
||||
-- Search for logic_auto
|
||||
local tab = {}
|
||||
for k, v in ipairs( StormFox2.Map.FindClass("logic_auto") ) do
|
||||
if not v.onmapspawn then continue end -- No setting?
|
||||
if not string.match(v.onmapspawn, "^" .. targetname .. ",") then continue end -- This targets tonemap.
|
||||
for s in string.gmatch(v.raw, '"OnMapSpawn"%s?"' .. targetname .. ',(.-)"') do
|
||||
local t = string.Explode(",", s)
|
||||
tab[t[1]] = t[2]
|
||||
end
|
||||
end
|
||||
return tab
|
||||
end
|
||||
|
||||
local DefaultSettings = LoadSettings()
|
||||
local ent
|
||||
local changed = false
|
||||
hook.Add("StormFox2.PostEntityScan", "StormFox2.ToneMapFind", function()
|
||||
ent = StormFox2.Ent.env_tonemap_controller and StormFox2.Ent.env_tonemap_controller[1]
|
||||
end)
|
||||
|
||||
do
|
||||
local last = 1
|
||||
|
||||
---Sets the tonemaps bloomscale. Use at own rist ask it looks like Soure engine doesn't like it.
|
||||
---@param num number
|
||||
---@server
|
||||
function StormFox2.ToneMap.SetBloomScale( num )
|
||||
if not ent or not DefaultSettings or not DefaultSettings.SetBloomScale then return end
|
||||
if last == num then return end
|
||||
ent:Fire("SetBloomScale",DefaultSettings.SetBloomScale * num)
|
||||
changed = true
|
||||
last = num
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local last = 1
|
||||
|
||||
---Sets the tonemaps exposure scale. Use at own rist ask it looks like Soure engine doesn't like it.
|
||||
---@param num number
|
||||
---@server
|
||||
function StormFox2.ToneMap.SetExposureScale( num )
|
||||
if not ent or not DefaultSettings then return end
|
||||
if last == num then return end
|
||||
ent:Fire("SetAutoExposureMax",(DefaultSettings.SetAutoExposureMax or 1) * num)
|
||||
ent:Fire("SetAutoExposureMin",(DefaultSettings.SetAutoExposureMin or 0) * num)
|
||||
changed = true
|
||||
last = num
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local last = 1
|
||||
|
||||
---Sets the tonemaps rate-scale. Use at own rist ask it looks like Soure engine doesn't like it.
|
||||
---@param num number
|
||||
---@server
|
||||
function StormFox2.ToneMap.SetTonemapRateScale( num )
|
||||
if not ent or not DefaultSettings then return end
|
||||
if last == num then return end
|
||||
ent:Fire("SetTonemapRate",(DefaultSettings.SetTonemapRate or 0.1) * num)
|
||||
changed = true
|
||||
last = num
|
||||
end
|
||||
end
|
||||
|
||||
---Resets the tonemap settings applied.
|
||||
---@server
|
||||
function StormFox2.ToneMap.Reset()
|
||||
if not changed or not ent then return end
|
||||
changed = false
|
||||
StormFox2.ToneMap.SetBloomScale( 1 )
|
||||
StormFox2.ToneMap.SetExposureScale( 1 )
|
||||
StormFox2.ToneMap.SetTonemapRateScale( 1 )
|
||||
end
|
||||
|
||||
local function getMaxLight()
|
||||
local c = StormFox2.Weather.Get("Clear")
|
||||
return c:Get("mapDayLight",80)
|
||||
end
|
||||
|
||||
local function ToneMapUpdate( lightlvlraw )
|
||||
if not StormFox2.Setting.SFEnabled() or not StormFox2.Setting.GetCache("edit_tonemap", true) then
|
||||
StormFox2.ToneMap.Reset()
|
||||
else
|
||||
StormFox2.ToneMap.SetExposureScale( lightlvlraw / 100 )
|
||||
end
|
||||
end
|
||||
|
||||
local last_Raw = 100
|
||||
-- Toggle tonemap with setting
|
||||
StormFox2.Setting.Callback("edit_tonemap",function()
|
||||
ToneMapUpdate(last_Raw)
|
||||
end,"sf_edit_tonemap")
|
||||
-- Save the last raw-lightlvl and update the tonemap
|
||||
hook.Add("StormFox2.lightsystem.new", "StormFox2.ToneMap-Controller", function(lightlvl, lightlvl_raw)
|
||||
last_Raw = lightlvl_raw
|
||||
ToneMapUpdate(lightlvl_raw)
|
||||
end)
|
||||
Reference in New Issue
Block a user