Indicator Lights (Portal 2)
Indicator Lights are lines of small lights that are present in test chambers to indicate the interaction between two or more entities in the map, typically between a button and another entity in the world. The typical usage of the lights are the lights being blue when inactive, and orange when active.
How to make Indicator Lights
This tutorial assumes basic knowledge of Hammer.
Create a Button, and a env_texturetoggle entity.
Select a texture for the lights in the texture browser, for this tutorial use "signage/indicator_lights/indicator_lights_floor" (Easily found by typing "indicator" in the filter bar).
Select the Overlay option in hammer, and place your light overlays as desired. Functionally it doesn't matter how they're placed, though a logical line between the entities interacting is desired. You can also use overlays with different textures if desired.
Select the overlays you just placed (and ONLY the overlays you want) and change their names to match each other. Use "indlights_1" for this tutorial. Then open up the env_texturetoggle you previously placed, and enter the same name into the Target Brush(es) field. Then name the env_texturetoggle "texturetoggle_lights_01"
Select the button entity, and go to the outputs menu. Add a new variable, set output name to "OnPressed", set Target entities to the name you gave the env_texturetoggle, set Via this input to "SetTextureIndex" and set the parameter overide to 1. This will change the texture to the appropriate orange texture. Then, make another entity with the same settings, except change the output named to "OnButtonReset" and change the parameter override to 0.
Done, your indicator lights should now be working!
1. Create a prop_static with the following properties:
Property Name Value World Model models/props/sign_frame01/sign_frame01.mdl
Align it so it will be at the end of your light path.
2. Create a 32Wx4Lx32H block brush textured with tools/toolsnodraw. Texture the front with signage/signage_doorstate. Align this brush so it fits inside the
prop_static sign frame.
3. Tie the brush to a func_brush entity and give it the same name as your