VERC: Rotating Lights Last edited 3 years ago2019-04-22 00:46:19 UTC


There were various places in Half-Life (and in the Half-Life Uplink demo, from which the picture below was taken) where there are various forms of what appear to be rotating lights. This effect is a combination of a few diffent entities- a func_rotating (the visible light "beams"), a light entity (for the actual light given off), and an env_render (which makes the rotating light beams visible when the effect is triggered).
User posted image


The first thing to do is... build the light, of course. Below is a closer look at the rotating light objects.
User posted image
In the picture above, the light fixture is a normal world brush (there is a 1 unit wide func_wall between it and the wall to prevent unnecessary brush splitting). The three objects labeled func_rotating all belong to one func_rotating entity.

The func_rotating entity

The setup of this entity is fairly straightforward. Below are the essential properties you'll need to set. Something that should be kept in mind is that an origin brush (the green and white part of the func_rotating in the picture above) needs to be a part of the rotating entity. The most complicated thing about this func_rotating entity will be texturing it correctly. As you can see from the picture above, it's a yellow texture that fades to black. There are two different textures you can use for this: FADE and FADE2. You will more than likely need to scale the texture down a bit (and give the textures for the upper beam a negative Y scale to flip it around the right way) using the texture application tool (Shift+A). Also, using the texture application tool, you'll neeed to apply the BLACK texture to the top and bottom of the beams.

The light entity

Next we'll add in the light entity. Ok, honest this time, this one really is straightforward. It should be placed just in front of the func_rotating object.

The ambient_generic entity

This is just an extra. A common use for these lights is to signal an emergency event, and typically an alarm sound would accompany them. Place the ambient_generic wherever you'd like the alarm sound to come from, and set it up with the following properties.


Ok, so now we have a light beam that's invisible, a light that is dark, and a sound that is silent. Useful. Sounds like some ancient riddle. :) To get the events rolling, we'll use a multi_manager to coordinate everything. First, we need to setup an env_render to make the light beams visible when everything gets triggered.

The env_render entity

This is pretty simple to setup. Now that we have the final piece of the puzzle, its time to coordinate everything. Place a multi_manager in your level and use the following properties. The rest of these key values have to be added manually, by turning off SmartEdit mode in the multi_manager properties, then clicking on the Add button. Now, all you need to do is activate the light1_mm multi_manager to turn on the rotating light.
User posted image
As shown in the picture above, there is a func_breakable which, when broken, triggers the multi_manager which starts the course of events. This can be alternately handled many different ways - a trigger the player walks through, a button a player or monster activates, a trigger_auto that activates it after a certain time, etc etc. If you need a map to disect, refer to the example map below.


For a more concrete illustration, check out the example map linked below.
This article was originally published on the Valve Editing Resource Collective (VERC).
TWHL only archives articles from defunct websites. For more information on TWHL's archiving efforts, please visit the TWHL Archiving Project page.


You must log in to post a comment. You can login or register a new account.