@@ -9,7 +9,272 @@ For a full list of parameters, see :ref:`Developing OR Content - Parameters and
99Train Engine Lights
1010===================
1111
12- OR supports the whole set of lights accepted by MSTS.
12+ OR supports the whole set of lights accepted by MSTS, MSTS-bin, and adds many new
13+ options to enhance the variety and complexity of lighting systems that can be recreated.
14+
15+ Lights with multiple conditions
16+ -------------------------------
17+
18+ In the original MSTS light implementation, each light could only have one set of
19+ activation conditions. If the same light were to be activated in multiple situations,
20+ (for example, a light which should turn on for both the front and rear units)
21+ the entire light would need to be included twice, just with different conditions.
22+
23+ .. index ::
24+ single: Conditions
25+
26+ Open Rails now allows for a single light to have multiple ``Conditions () `` blocks.
27+ If *any * one set of conditions is fulfilled, the light will be enabled. If no conditions
28+ are specified, the light will be assumed to be on always. An example of how this can
29+ be used to simplify ``Lights `` implementation is included below::
30+
31+ Light (
32+ comment( Nose light bright )
33+ Conditions (
34+ Headlight ( 3 )
35+ Unit ( 2 )
36+ )
37+ FadeIn ( 0.5 )
38+ FadeOut ( 0.5 )
39+ States ( 1
40+ State (
41+ LightColour ( FFffffe6 )
42+ Radius ( 0.6 )
43+ Position ( 0.0 4.12 6.55 )
44+ )
45+ )
46+ )
47+ Light (
48+ comment( Nose light bright DPU )
49+ Conditions (
50+ Headlight ( 3 )
51+ Unit ( 4 )
52+ )
53+ FadeIn ( 0.5 )
54+ FadeOut ( 0.5 )
55+ States ( 1
56+ State (
57+ LightColour ( FFffffe6 )
58+ Radius ( 0.6 )
59+ Position ( 0.0 4.12 6.55 )
60+ )
61+ )
62+ )
63+
64+ This set of two lights can be simplified to one light like this::
65+
66+ Light (
67+ comment( Nose light bright )
68+ Conditions (
69+ Headlight ( 3 )
70+ Unit ( 2 )
71+ )
72+ Conditions (
73+ Headlight ( 3 )
74+ Unit ( 4 )
75+ )
76+ FadeIn ( 0.5 )
77+ FadeOut ( 0.5 )
78+ States ( 1
79+ State (
80+ LightColour ( FFffffe6 )
81+ Radius ( 0.6 )
82+ Position ( 0.0 4.12 6.55 )
83+ )
84+ )
85+ )
86+
87+ Both of these snippets produce the same result: a light that turns on when the
88+ headlights are bright and the unit is first, or the last unit reversed (ie:
89+ distributed power). However, by specifying multiple conditions, the second
90+ implementation takes up much less space and guarentees that both modes of the
91+ light have the exact same ``States ``. There is no hard limit on the number
92+ of conditions a light can have.
93+
94+ .. _features-light-conditions :
95+
96+ Open Rails specific lighting conditions
97+ ---------------------------------------
98+
99+ Open Rails also adds a set of new lighting conditions which offer additional
100+ flexibility in creating detailed light behaviors. Note that each of these
101+ must be inside the ``Conditions () `` block of a ``Light () `` in the .eng/.wag
102+ file to function. All conditions are optional and can be mixed and matched
103+ as needed, though only one of each condition can be included per conditions
104+ block!
105+
106+ .. index ::
107+ single: Conditions(ORTSBattery
108+
109+ Battery Switch
110+ ''''''''''''''
111+
112+ The light condition ``ORTSBattery `` allows a light to respond to the state of
113+ the :ref: `battery switch subsystem <physics-battery-switch >`. The valid settings
114+ and associated conditions for the light to turn *on * are as follows:
115+
116+ - ``ORTSBattery ( 0 ) `` Battery state is ignored (default)
117+ - ``ORTSBattery ( 1 ) `` Battery switch must be on
118+ - ``ORTSBattery ( 2 ) `` Battery switch must be off
119+
120+ .. index ::
121+ single: Conditions(Brake
122+
123+ Friction Brakes
124+ '''''''''''''''
125+
126+ The ``Brake `` condition can be used to create brake indicator lights
127+ which turn on or off when the friction brakes are applied. Dynamic brakes
128+ have no effect.
129+
130+ - ``Brake ( 0 ) `` Brake application/release is ignored (default)
131+ - ``Brake ( 1 ) `` Brakes must be released
132+ - ``Brake ( 2 ) `` Brakes must be applied
133+
134+ .. index ::
135+ single: Conditions(Reverser
136+
137+ Reverser
138+ ''''''''
139+
140+ ``Reverser `` is a very powerful condition that gives lights the ability
141+ to be enabled by the selected direction of travel. Note that a flipped
142+ locomotive or wagon will automatically flip the sensed reverser setting
143+ to ensure lights shine in the correct direction. Also, steam locomotive
144+ cutoff values between -10% and 10% will be detected as 'neutral'.
145+
146+ - ``Reverser ( 0 ) `` Reverser direction is ignored (default)
147+ - ``Reverser ( 1 ) `` Reverser direction must be forward
148+ - ``Reverser ( 2 ) `` Reverser direction must be reverse
149+ - ``Reverser ( 3 ) `` Reverser direction must be neutral
150+ - ``Reverser ( 4 ) `` Reverser direction must be forward or reverse
151+ - ``Reverser ( 5 ) `` Reverser direction must be forward or neutral
152+ - ``Reverser ( 6 ) `` Reverser direction must be reverse or neutral
153+
154+ .. index ::
155+ single: Conditions(Doors
156+
157+ Passenger Doors
158+ '''''''''''''''
159+
160+ Many pieces of passenger rolling stock have indicator lights to inform
161+ the crew :ref: `passenger doors <features-passenger-doors >` are open. The
162+ ``Doors `` condition is suited to this type of lighting.
163+
164+ - ``Doors ( 0 ) `` Passenger doors are ignored (default)
165+ - ``Doors ( 1 ) `` Passenger doors must all be closed
166+ - ``Doors ( 2 ) `` Passenger doors on the left must be open
167+ - ``Doors ( 3 ) `` Passenger doors on the right must be open
168+ - ``Doors ( 4 ) `` Passenger doors on both sides must be open
169+ - ``Doors ( 5 ) `` Passenger doors on either the left or right must be open
170+
171+ .. index ::
172+ single: Conditions(Horn
173+ single: ORTSHornLightsTimer
174+
175+ Horn (Automatic Flashing Ditch Lights)
176+ ''''''''''''''''''''''''''''''''''''''
177+
178+ Open Rails now supports the ability to configure flashing ditch lights
179+ (or any other type of horn activated auxiliary lighting)
180+ with the ``Horn `` light condition. When the horn is sounded, lights
181+ with the horn condition will (de)activate, and remain (de)activated
182+ for a time after the horn stops sounding. The standard timer is 30
183+ seconds, but can be changed by placing a ``ORTSHornLightsTimer ``
184+ token in the ``engine() `` section of the locomotive with flashing lights.
185+ If ``ORTSHornLightsTimer( 0s ) `` is set, the lights will only activate
186+ while the horn is sounding and immediately stop afterward.
187+
188+ - ``Horn ( 0 ) `` Horn state is ignored (default)
189+ - ``Horn ( 1 ) `` Horn must not have been sounded recently
190+ - ``Horn ( 2 ) `` Horn must have been sounded recently
191+
192+ Note that the solid ditch lights state should use ``Horn(1) `` to
193+ prevent these lights overlapping the flashing state. An example
194+ implementation of a flashing ditch light's conditions (many other
195+ details removed for clarity) is provided below::
196+
197+ Light (
198+ comment( Right ditch light )
199+ Conditions (
200+ Headlight ( 3 )
201+ Unit ( 2 )
202+ Horn ( 1 )
203+ )
204+ States ( 1
205+ State (
206+ LightColour ( FFFFFFFF )
207+ Radius ( r )
208+ Position ( x y z )
209+ )
210+ )
211+ )
212+ Light (
213+ comment( Right ditch light Flashing )
214+ Conditions (
215+ Headlight ( 3 )
216+ Unit ( 2 )
217+ Horn ( 2 )
218+ )
219+ States ( 2
220+ State (
221+ LightColour ( FFFFFFFF )
222+ Radius ( r )
223+ Transition ( 1 )
224+ Duration ( 0.5 )
225+ Position ( x y z )
226+ )
227+ State (
228+ LightColour ( FFFFFFFF )
229+ Radius ( r )
230+ Transition ( 1 )
231+ Duration ( 0.5 )
232+ Position ( x y z )
233+ )
234+ )
235+ )
236+
237+ .. index ::
238+ single: Conditions(Bell
239+ single: ORTSBellLightsTimer
240+
241+ Bell (Automatic Flashing Ditch Lights)
242+ ''''''''''''''''''''''''''''''''''''''
243+
244+ Similar to ``Horn ``, the ``Bell `` condition is useful for replicating
245+ systems with flashing lights activated by the bell, though this is
246+ less common than using the horn. Like with the horn, a timer can be
247+ set to keep the lights activated for a time after the bell starts ringing.
248+ Unlike with the horn, this timer is set to 0 seconds by default, meaning
249+ the lights will only remain (de)activated while the bell is currently ringing.
250+ If a timer is desired, ``engine(ORTSBellLightsTimer `` can be used in
251+ the locomotive's .eng file.
252+
253+ - ``Bell ( 0 ) `` Bell state is ignored (default)
254+ - ``Bell ( 1 ) `` Bell must not have been ringing recently
255+ - ``Bell ( 2 ) `` Bell must have been ringing recently or is ringing now
256+
257+ .. index ::
258+ single: Conditions(Brake
259+
260+ Multiple Unit Configuration (Locomotives Only)
261+ ''''''''''''''''''''''''''''''''''''''''''''''
262+
263+ Some MU systems send headlight signals through the wires connecting locomotives,
264+ but do not or cannot send these signals through wagons/coaches to remote
265+ locomotives (eg: distributed power, banking locomotives, etc.). The ``MU ``
266+ light condition allows for some flexibility in adjusting light behavior depending
267+ on a locomotive's physical connection to the lead locomotive (or lack thereof).
268+ While meant for locomotives only, wagons are always treated as remote locomotives
269+ for the purposes of calculation.
270+
271+ - ``MU ( 0 ) `` Locomotives's connection to the lead locomotive is ignored (default)
272+ - ``MU ( 1 ) `` Locomotive must be the lead locomotive itself
273+ - ``MU ( 2 ) `` Locomotive must be in the same group of locomotives as the lead locomotive
274+ - This condition will also be fulfilled for the lead locomotive itself.
275+ - ``MU ( 3 ) `` Locomotive must be in a different group to the lead locomotive
276+
277+
13278
14279Tilting trains
15280==============
@@ -588,7 +853,7 @@ the ``.load-or`` files in a consistent way: ``40HCtriton.load-or`` is suggested
588853container type and ``triton `` the brand painted on the container.
589854
590855Format of the .load-or file
591- '''''''''''''''''''''''
856+ '''''''''''''''''''''''''''
592857
593858Here below a sample of a ``.load-or `` file::
594859
@@ -1217,6 +1482,8 @@ shape movement, however for greater accuracy the modeler can add specific values
12171482``ORTSLengthAirHose ``. In addition the length values suggested in the Derailment Coefficient should
12181483also be added.
12191484
1485+ .. _features-passenger-doors :
1486+
12201487Passenger doors
12211488===============
12221489
0 commit comments