CityLite
The CityLite (also known as ShittyLite) is a programmable traffic signal system.
4-ways from bottom, horizontal signals, 3-way signal, 3-way and 4-way beacons
Contents
Setup
- Rez poles.
- Rez signals and set their signal IDs.
- For 1-Way signals, click each signal, select Config, and set a signal ID.
- X-Normal and Y-Normal are normal "ball" signals. X and Y are different roads; X is usually the main road, and Y is the crossroad. These are only shown for Normal signals.
- X-Left and Y-Left are protected left turn signals. These are only shown for LeftTurn signals, which are optional and require a change in the _config notecard.
- Custom allows you to set a custom signal ID. This is only used for custom-programmed controllers. Any alphanumeric string works (A-Z, 0-9) - do not use spaces or special characters.
- For 4-Way and 3-Way signals, look at the top of the signal (you should see little X and Y markers). Rotate the signal to your liking.
- All other signals can only be used with custom programming, or are standalone.
- For 1-Way signals, click each signal, select Config, and set a signal ID.
- If you want, rez pedestrian signals and set their signal IDs.
- X-Normal and Y-Normal are the two default options, they are the same as the traffic signals.
- If you don't want all signals in the region synchronized, or you have different intersection configurations (some have left turn signals, some don't, etc.) you will need to set each signal's intersection. Click it, select Config, select Intersection, and type an intersection ID in. More information on intersections is below. Any alphanumeric string works (A-Z, 0-9) - do not use spaces or special characters.
- Rez a controller for each intersection ID (if you didn't set any, just rez one controller - this will control all signals in the region). Do not rez multiple controllers if you haven't changed the intersection IDs!
- Edit the _config notecard in the controller. Each setting has a comment with instructions. If you don't know what to do, you can just leave it alone - the system will work automatically with just normal signals out of the box.
- The signals should start up once the notecard is finished loading.
Signal Types
You can set the signal ID to X-Left or Y-Left to change the signal to a protected left turn signal. Protected left turn signals are not enabled by default - they'll just remain red. If you have an X-Left signal, you'll need to set XLEFT to 1 in the controller's _config notecard - similarly, if you have a Y-Left signal, you'll need to set YLEFT to 1. This only works with the default sequence; these settings are ignored if you're using a custom programming sequence.
CityLite has many different types of signals.
- 1-Way Signal: normal 3-head, 1-way signal.
- 3-Way & 4-Way Signals: can be used like normal single signals, but work for all 3 or 4 directions - their X and Y directions are hard-coded; just look at the top of the signal to see which direction is which.
- 2-Head/3-Head Left Turn Signal: protected left turn arrow signal with a red arrow indication on the 3-head signal for preventing turns.
- 2-Head Red & Green Signal: normal 1-Way signal without a yellow indication. Sending the yellow color will indicate both red and green.
- Left/Right Pedestrian Signal: pedestrian crossing signals mounted either to the left or right of the pole.
The rest of the signals cannot be used with the default sequence - they can only be used with a custom programming sequence.
- 2-Head/3-Head Right Turn Signal: protected right turn arrow signal with a red arrow indication on the 3-head signal for preventing turns.
- 2-Head/3-Head Straight-Only Signal: protected straight-only arrow signal with a red arrow indication on the 3-head signal for preventing turns.
- Transit Signal: specialized signals for buses and trams.
- 1-Head Red/Yellow/Green/Multicolor Signal: a single light in any color for whatever you want - either a single color, or multicolor.
- 2-Head/3-Head Up/Down Left/Right Lane Control Signal: red X and green arrow indicators for lane control - 3-head signal has either a left or right yellow diagonal arrow.
- 1-Head Red/Green/Multicolor Up/Down Lane Control Signal: a lane control signal, but either red only, green only, or both.
- 2-Head/3-Head Emergency Signal: emergency signal for fire departments - comes with a separate emergency signal controller, but can be used through custom programming.
The CityLite pack also includes some flashing beacons:
- 1-Head Red/Yellow Beacons: standalone flashing beacon.
- 2-Head Red/Yellow Beacons: standalone alternating beacon.
- 3-Way/4-Way Red Beacon: standalone multi-directional red flashing beacon.
- 3-Way/4-Way Red & Yellow Beacon: standalone multi-directional flashing beacon with yellow X and red Y.
Signal Customization
You can change the housing colors on any signals by clicking them, selecting Config, then selecting HousingColor. You can then choose from the following color combinations:
- Black: black.
- Green: dark green.
- Yellow: yellow.
- YlwBlack: yellow housing with a black surround plate. Only useful if surround is shown.
- BlackWht: black housing with a white edge on the surround plate (European style). Only useful if surround is shown.
- BlackFlr: black housing with a fluorescent yellow edge on the surround plate for high visibility (only use this in poor-visibility areas). Only useful if surround is shown.
You can customize 1-Way signals by clicking them, selecting Config, and using Tgl Surround or Tgl Mount. These will toggle the surround plate and the hanging mount, respectively.
Access Settings & Manual/Override Controls
The access settings in the _config notecard (ACCESS, WHITELIST, and BLACKLIST) are used to access the controller's manual intersection controls AND the signals' override controls for the same intersection. However, signals must have a controller with their intersection (the same intersection ID) for access settings to work, otherwise only the owner will have access. For example, if you had one controller controlling multiple intersections through the use of a custom program sequence, only the intersection that has the same ID as the controller would use those access settings.
Anyone that has access can do the following:
- Controller Manual Controls (click the controller)
- Automatic: Returns control to the automatic sequence (if in manual mode).
- Manual: Disengages the automatic sequence and lets the user control lights manually. Also opens the Set Colors menu.
- Set Colors (NOTE: These controls, except for Sig Custom, only work for the default signal IDs - X-Straight, Y-Straight, X-Left, and Y-Left.)
- X Ylw/Y Red: X flashes yellow, Y flashes red.
- X Red/Y Ylw: X flashes red, Y flashes yellow.
- All Red: All signals flash red, including custom signals referenced in the custom program sequence (if used).
- All Yellow: All signals flash yellow, including custom signals referenced in the custom program sequence (if used).
- All Off: All signals turn off, including custom signals referenced in the custom program sequence (if used).
- Sig X-Normal, Sig Y-Normal, Sig X-Left, Sig Y-Left: Lets you change the color for all signals with that ID.
- Sig Custom: Lets you change the color for all signals with specified custom ID.
- Signal Override Controls (click an individual signal)
- Rtn Control: Returns control to the controller (if in override mode).
- Override: Ignores the controller and lets the user control the light manually. Also opens the Set Color menu.
- Set Color: Lets you change the color for that signal only.
NOTE: Setting the signal override color is generally not recommended if using manual controls is possible, as it will disengage the controller entirely until you use Rtn Control, which you might forget to do then complain to me that it doesn't work anymore. Additionally, using the manual colors in the controller is safer, since it will automatically and safely stop any green-signaled traffic before returning to the automatic sequence (e.g. it will go yellow, then red).
Intersections
CityLite works through the use of intersection IDs. Most users want to keep things simple, so in this case, just don't change intersection IDs anywhere (signals or controller) and everything will be synced together.
However, if you want to separately-controlled intersections, you'll have to set an intersection ID. Click each signal in the intersection and select Config, then select Intersection, then enter your ID. In a separate controller, edit the _config notecard and change the ID. Now, that controller will control only the signals with the same intersection ID. You can set multiple intersections to the same ID, and they'll be synced as well. Any alphanumeric string works (A-Z, 0-9) - do not use spaces or special characters.
Remember, intersection IDs are separate from signal IDs.
All intersections using the same ID should be configured the same way. This means, if you have one intersection with just normal signals, you shouldn't use the same ID for an intersection with normal and left turn signals.
Custom Programming Sequence
You can now program your signals to whatever sequence you want. Just type in the sequence you want in the _program notecard in the controller and set Custom in the _config notecard to Yes.
Programming is done using these commands:
[signalID] [color] [intersectionID] [signalID] [color] WAIT [time] INPUT [channel] [command] ANYINPUT [channel] [command]
And here's a list of what each of those variables is for:
- [signalID]: the signal ID of the signal you want to set.
- [intersectionID]: the intersection ID of the signal you want to set. This must be specified if the signal is in a different intersection from the intersection ID set in the _config notecard.
- [color]: the color of the signal. Acceptable values are RED, YELLOW, GREEN, REDYELLOW, REDFLASH, YELLOWFLASH, and OFF. These colors may do different things for specialized signals, so check the signal's color options by clicking the signal, clicking Override or Set Color, then playing with the color options. Remember to click it again and select Rtn Control when you're done.
- [time]: the time to wait in seconds. This can be an integer (1, 4, etc.) or a floating-point decimal (5.5, 0.84, etc.) although these times are approximate, and can vary due to lag.
- [channel]: the channel to listen on. Can be any channel, positive or negative, or zero if you really want.
- [command]: the command to listen for. Can be any string but cannot include spaces, so structure your commands around this limitation.
Each commands needs to be on a separate line. The _program notecard that comes with the controller has an example which simulates the default settings in the _config notecard. Let's decode it:
X-Normal GREEN WAIT 10
Set X-Normal to green and wait 10 seconds. All other signals will remain red.
X-Normal YELLOW WAIT 3
Set X-Normal to yellow and wait 3 seconds.
X-Normal RED WAIT 1
Set X-Normal to red and wait 1 second. (This is what the ALLRED config setting does for the default sequence.)
And so on, and so forth. Once the notecard reaches the end, it restarts from the beginning.
Here's an example of a program that would control an intersection ID with turn signals and an intersection ID without turn signals at the same time (IntTurn and IntNoTurn):
IntTurn X-Left GREEN IntNoTurn X-Normal GREEN WAIT 4 IntTurn X-Left YELLOW WAIT 3 IntTurn X-Left RED WAIT 1 IntTurn X-Normal GREEN WAIT 8 IntTurn X-Normal YELLOW IntNoTurn X-Normal YELLOW WAIT 3 IntTurn X-Normal RED IntNoTurn X-Normal RED WAIT 1 IntTurn Y-Left GREEN IntNoTurn Y-Normal GREEN WAIT 4 IntTurn Y-Left YELLOW WAIT 3 IntTurn Y-Left RED WAIT 1 IntTurn Y-Normal GREEN WAIT 8 IntTurn Y-Normal YELLOW IntNoTurn Y-Normal YELLOW WAIT 3 IntTurn Y-Normal RED IntNoTurn Y-Normal RED WAIT 1
In this case, IntNoTurn's normal signals are set to green while IntTurn's left turn sequence runs through. If you used the default sequence and just one intersection ID, the normal signals in intersections with no left turn signals would just remain red while the left turn sequence runs through. This program eliminates that extended red period, but you have to set two a different intersection ID for each type of intersection.
Alternatively, you can use the INPUT command to wait for external commands:
X-Normal RED INPUT 1 go X-Normal GREEN WAIT 4 X-Normal YELLOW WAIT 3
This program would wait for something owned by the owner of the signal controller to say "go" on channel 1, and then switch to green for a few seconds, then yellow, then back to red, and repeat.
Note that the ANYINPUT is the same as INPUT, but allows objects owned by anyone (or any avatar) to issue the commands, not just objects owned by the same person (or the owner themselves).
Here's one that demonstrates the use of multiple INPUT commands in the same program - a simple starting signal for a racetrack:
X-Normal OFF INPUT 500 ready X-Normal RED INPUT 500 go X-Normal YELLOW WAIT 1 X-Normal GREEN INPUT 500 reset
This sequence accepts input on channel 500. When you're ready to begin, send "ready" and the signals turn on as red. To go, send "go" and the signals turn from yellow to green. To reset the signals, send "reset" and they turn off.
Feel free to experiment with programming! We're excited to see what our customers come up with on this.