Files
wnsrc/lua/matproxy/player_color.lua
lifestorm 9c918c46e5 Upload
2024-08-04 23:12:27 +03:00

50 lines
1.4 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/
--]]
--[[---------------------------------------------------------
PlayerColor Material Proxy
Sets the clothing colour of custom made models to
ent.GetPlayerColor, a normalized vector colour.
-----------------------------------------------------------]]
local clrFallback = Vector( 62 / 255, 88 / 255, 106 / 255 )
matproxy.Add( {
name = "PlayerColor",
init = function( self, mat, values )
-- Store the name of the variable we want to set
self.ResultTo = values.resultvar
end,
bind = function( self, mat, ent )
if ( !IsValid( ent ) ) then return end
-- If entity is a ragdoll try to convert it into the player
-- ( this applies to their corpses )
if ( ent:IsRagdoll() ) then
local owner = ent:GetRagdollOwner()
if ( IsValid( owner ) ) then ent = owner end
end
-- If the target ent has a function called GetPlayerColor then use that
-- The function SHOULD return a Vector with the chosen player's colour.
if ( ent.GetPlayerColor ) then
local col = ent:GetPlayerColor()
if ( isvector( col ) ) then
mat:SetVector( self.ResultTo, col )
end
else
mat:SetVector( self.ResultTo, clrFallback )
end
end
} )