Files
wnsrc/gamemodes/sandbox/entities/entities/edit_sky.lua
lifestorm 9c918c46e5 Upload
2024-08-04 23:12:27 +03:00

118 lines
2.6 KiB
Lua

--[[
| 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/
--]]
AddCSLuaFile()
DEFINE_BASECLASS( "base_edit" )
ENT.Spawnable = true
ENT.AdminOnly = true
ENT.PrintName = "Sky Editor"
ENT.Category = "Editors"
ENT.Information = "Right click on this entity via the context menu (hold C by default) and select 'Edit Properties' to edit the sky."
function ENT:Initialize()
BaseClass.Initialize( self )
self:SetMaterial( "gmod/edit_sky" )
--
-- Over-ride the sky controller with this.
--
if ( CLIENT ) then
g_SkyPaint = self
end
end
function ENT:Think()
--
-- Find an env_sun - if we don't already have one.
--
if ( SERVER and self.EnvSun == nil ) then
-- so this closure only gets called once - even if it fails
self.EnvSun = false
local list = ents.FindByClass( "env_sun" )
if ( #list > 0 ) then
self.EnvSun = list[ 1 ]
end
end
--
-- If we have a sun - force our sun normal to its value
--
if ( SERVER and IsValid( self.EnvSun ) ) then
local vec = self.EnvSun:GetInternalVariable( "m_vDirection" )
if ( isvector( vec ) ) then
self:SetSunNormal( vec )
end
end
end
--
-- This needs to be a 1:1 copy of env_skypaint
--
function ENT:SetupDataTables()
local SetupDataTables = scripted_ents.GetMember( "env_skypaint", "SetupDataTables" )
SetupDataTables( self )
end
--
-- This edits something global - so always network - even when not in PVS
--
function ENT:UpdateTransmitState()
return TRANSMIT_ALWAYS
end
-- Player just spawned this entity from the spawnmenu - not from a duplication.
-- Copy over the settings of the maps' skypaint
hook.Add( "PlayerSpawnedSENT", "CopyOverEditSkySettings", function( ply, ent )
if ( ent:GetClass() != "edit_sky" ) then return end
local skyPaint = ents.FindByClass( "env_skypaint" )[ 1 ];
if ( !IsValid( skyPaint ) ) then return end
ent:SetTopColor( skyPaint:GetTopColor() )
ent:SetBottomColor( skyPaint:GetBottomColor() )
ent:SetFadeBias( skyPaint:GetFadeBias() )
ent:SetHDRScale( skyPaint:GetHDRScale() )
ent:SetStarLayers( skyPaint:GetStarLayers() )
ent:SetDrawStars( skyPaint:GetDrawStars() )
ent:SetStarTexture( skyPaint:GetStarTexture() )
ent:SetStarSpeed( skyPaint:GetStarSpeed() )
ent:SetStarFade( skyPaint:GetStarFade() )
ent:SetStarFade( skyPaint:GetStarFade() )
ent:SetDuskIntensity( skyPaint:GetDuskIntensity() )
ent:SetDuskScale( skyPaint:GetDuskScale() )
ent:SetDuskColor( skyPaint:GetDuskColor() )
ent:SetSunSize( skyPaint:GetSunSize() )
ent:SetSunColor( skyPaint:GetSunColor() )
end )