Revision Difference
matproxy.Add#560351
<function name="Add" parent="matproxy" type="libraryfunc">
<description>Adds a material proxy.</description>
<description>Register a material proxy. See <page>matproxy</page> for more general explanation of what they are.</description>
<realm>Client</realm>
<file line="20-L45">lua/includes/modules/matproxy.lua</file>
<args>
<arg name="MatProxyData" type="table">The information about the proxy. See <page>Structures/MatProxyData</page></arg>
<arg name="matProxyData" type="table">The information about the proxy. See <page>Structures/MatProxyData</page></arg>
</args>
</function>
<example>
<description>Adds PlayerColor proxy. Example taken from lua/matproxy/player_color.lua.</description>
<description>Adds `PlayerColor` proxy. Example taken from `lua/matproxy/player_color.lua`.</description>
<code>
matproxy.Add({
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 the target ent has a function called GetPlayerColor then use that
-- The function SHOULD return a Vector with the chosen player's colour.
-- In sandbox this function is created as a network function,
-- in player_sandbox.lua in SetupDataTables
if ( ent.GetPlayerColor ) then
mat:SetVector( self.ResultTo, ent:GetPlayerColor() )
end
end
})
} )
</code>
<output>Adds PlayerColor proxy.</output>
</example>
<example>
<description>
Material proxy values are stored like this:
* In the .vmt:⤶
* In the `.vmt`:⤶
```
Proxies {
PlayerColor {
resultVar $color2
myVariable $color
}
}
```
* In Lua ( The **Init** function of <page>Structures/MatProxyData</page> )
</description>
<code>
values = {
resultvar = "$color2"
myvariable = "$color"
}
</code>
</example>