Env texturetoggle: Difference between revisions
Jump to navigation
Jump to search
Example: If we have a brush entity named
Note:If a brush has multiple textures with multiple frames, an output will affect all of these textures.
Code:An entity's texture frame can be set via code using the SetTextureFrameIndex() function.
(Cleanup) |
mNo edit summary |
||
(26 intermediate revisions by 14 users not shown) | |||
Line 1: | Line 1: | ||
{{ | __NOTOC__ | ||
{{LanguageBar}} | |||
[[File:env_texturetoggle.png|left|link=]] | [[File:env_texturetoggle.png|left|link=]] | ||
{{CD|CTextureToggle|file1=env_texturetoggle.cpp}} | |||
{{This is a|point entity|name=env_texturetoggle}} | |||
It allows you to change the textures on brush entities or overlays. | |||
{{clr}} | {{clr}} | ||
== Entity Description == | |||
<syntaxhighlight lang=php style="float:right; background:none"> | |||
LightmappedGeneric | |||
{ | |||
$basetexture "path/to/a/VTF/file/with/multiple/frames" | |||
Proxies | |||
{ | |||
ToggleTexture | |||
{ | |||
ToggleTextureVar $basetexture | |||
ToggleTextureFrameNumVar $frame | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
In order for <code>env_texturetoggle</code> to work properly, your [[info_overlay|overlay]] or at least one face of your [[brush]] must use a [[VMT]] material with the <code>[[List Of Material Proxies#Entity integration|ToggleTexture</code> proxy]] defined and pointing to an animated [[VTF]] file with at least two frames. | |||
Such a VMT file could look like the one on the right. | |||
{{Example| If we have a brush entity named <code>brush</code> and an env_texturetoggle named <code>toggle</code> whose target brush is <code>brush</code>, then we can use any of the following outputs on a [[func_button]] to toggle the texture for the <code>brush</code>. The second and third output have the same effect.}} | |||
:{| {{OutputsTable}} | |||
|+ '''Inputs to toggle textures''' | |||
| [[File:io11.png]] || OnPressed || toggle || IncrementTextureIndex || || 0 || No | |||
|- | |||
| [[File:io11.png]] || OnPressed || toggle || SetTextureIndex || <n> || 0 || No | |||
|} | |||
{{note|If a brush has multiple textures with multiple frames, an output will affect all of these textures.}} | |||
{{codenote|An entity's texture frame can be set via code using the {{codelink|SetTextureFrameIndex()}} function.}} | |||
{{bug|tested={{portal}}|Identical textures on visible unnamed overlays may also be impacted.}} | |||
== Keyvalues == | == Keyvalues == | ||
{{KV Targetname}} | {{KV Targetname}} | ||
{{KV|Target Brush(es)|intn=target|target_destination|Name of the [[brush entity|brush entities]] or [[overlay]]s. All <code>ToggleTexture</code> materials on all entities (including sprites) matching the targetname will be affected.}} | |||
== Inputs == | == Inputs == | ||
{{ | {{I|IncrementTextureIndex|param=void|Increments target brush's current texture frame by one. In other words: switches to the ''next'' texture.}} | ||
{{ | {{I|SetTextureIndex|param=integer|Sets target brush's texture frame to the specified index.}} | ||
{{ | :{{note|While this parameter takes an integer, it writes to an [[byte|unsigned char]] without any bounds checking. Values above 255 or below 0 will {{w|Integer overflow|overflow}}.}} | ||
== | == See also == | ||
{{ | * {{ent|material_modify_control}} | ||
[[Category:Source base entities]] |
Latest revision as of 05:26, 22 July 2025

![]() |
---|
CTextureToggle |
![]() |
env_texturetoggle
is a point entity available in all Source games.
It allows you to change the textures on brush entities or overlays.
Entity Description
LightmappedGeneric
{
$basetexture "path/to/a/VTF/file/with/multiple/frames"
Proxies
{
ToggleTexture
{
ToggleTextureVar $basetexture
ToggleTextureFrameNumVar $frame
}
}
}
In order for env_texturetoggle
to work properly, your overlay or at least one face of your brush must use a VMT material with the ToggleTexture
proxy defined and pointing to an animated VTF file with at least two frames.
Such a VMT file could look like the one on the right.

brush
and an env_texturetoggle named toggle
whose target brush is brush
, then we can use any of the following outputs on a func_button to toggle the texture for the brush
. The second and third output have the same effect.My Output Target Entity Target Input Parameter Delay Only Once Inputs to toggle textures OnPressed toggle IncrementTextureIndex 0 No OnPressed toggle SetTextureIndex <n> 0 No


Keyvalues
- Name (targetname) <string>[ Edit ]
- The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g.
parentname
ortarget
).
Also displayed in Hammer's 2D views and Entity Report.See also: Generic Keyvalues, Inputs and Outputs available to all entities
- Target Brush(es) (target) <targetname>
- Name of the brush entities or overlays. All
ToggleTexture
materials on all entities (including sprites) matching the targetname will be affected.
Inputs
- IncrementTextureIndex <void>
- Increments target brush's current texture frame by one. In other words: switches to the next texture.
- SetTextureIndex <integer >
- Sets target brush's texture frame to the specified index.
Note:While this parameter takes an integer, it writes to an unsigned char without any bounds checking. Values above 255 or below 0 will
overflow.