<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.trainzsimulator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pencil42</id>
	<title>TrainzOnline - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.trainzsimulator.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pencil42"/>
	<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/wiki/Special:Contributions/Pencil42"/>
	<updated>2026-11-05T07:35:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=HowTo/Upgrade_obsolete_script_functions_-_simple_examples&amp;diff=33554</id>
		<title>HowTo/Upgrade obsolete script functions - simple examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=HowTo/Upgrade_obsolete_script_functions_-_simple_examples&amp;diff=33554"/>
		<updated>2022-08-27T15:32:27Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: added class HTMLWindow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are examples of solutions for common and simple obsolete Trainzscript functions.  This is not an exhaustive list.  Solutions for more complex obsolete functions can be found (TBD).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Under Development&#039;&#039;&#039;  The contents and the layout of this page is under development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
=class Crossing=&lt;br /&gt;
&lt;br /&gt;
==SetCrossingAutomatic()==&lt;br /&gt;
==SetCrossingState()==&lt;br /&gt;
&lt;br /&gt;
Error: VE197: Syntax error in script &#039;somescript.gs&#039; for asset &amp;lt;kuid:0000:0000&amp;gt; &amp;quot;Asset Name&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Error: VE267: somescript.gs(48) : function SetCrossingAutomatic is obsolete in object Crossing.&amp;lt;br&amp;gt;&lt;br /&gt;
Error: VE267: somescript.gs(48) : function SetCrossingState is obsolete in object Crossing.&lt;br /&gt;
&lt;br /&gt;
This method now requires a SecrityToken as a parameter to the function call&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Repair&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You need to initialize a SecurityToken, then add it as a parameter to your function calls.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In your header add&lt;br /&gt;
&lt;br /&gt;
 SecurityToken stoken;&lt;br /&gt;
&lt;br /&gt;
Then in your function calls add your token.&lt;br /&gt;
&lt;br /&gt;
 SetCrossingAutomatic(stoken, false);&lt;br /&gt;
 SetCrossingState(stoken, 1);&lt;br /&gt;
&lt;br /&gt;
More information on [[Class Crossing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=class HTMLWindow=&lt;br /&gt;
&lt;br /&gt;
==GetCompleteIndustryViewDetailsHTMLCode()==&lt;br /&gt;
&lt;br /&gt;
VE267: somescript.gs(linenumber) : function GetCompleteIndustryViewDetailsHTMLCode is obsolete in object HTMLWindow.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This error occurs when trying to use this method with an obsolete class.  In this case, class GenericIndustry has been obsoleted and replaced with BaseIndustry.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Repair&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Change all instances of &#039;GenericIndustry&#039; in the code to &#039;BaseIndustry&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Usage example:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 include &amp;quot;BaseIndustry.gs&amp;quot;&lt;br /&gt;
 class &amp;lt;myclass&amp;gt; isclass BaseIndustry&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=class Train=&lt;br /&gt;
&lt;br /&gt;
==GetVelocity()==&lt;br /&gt;
&lt;br /&gt;
GetVelocity obsolete error or warning: &amp;lt;kuid:0000:0000&amp;gt; : VE267: somescript.gs(299) : function GetVelocity is obsolete in object Train.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Repair&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You have two replacement options in the Train class (train.gs):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;float GetSmoothedVelocity(void);&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This function return the train&#039;s velocity in metres per second and is suitable for human viewing such as a cab display.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&#039;&#039;float GetTrainVelocity(void);&#039;&#039; &lt;br /&gt;
  &lt;br /&gt;
This function provides the instantaneous velocity for vehicles in this train, which is good for physics calculations but not good for human-readable display.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Usage example:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 float mySpeed;&lt;br /&gt;
 mySpeed = GetSmoothedVelocity();  // this is the more likely option but depends on what the overall script is trying to do.&lt;br /&gt;
 &lt;br /&gt;
 // or the more accurate version&lt;br /&gt;
 mySpeed = GetTrainVelocity();&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=class Vehicle=&lt;br /&gt;
&lt;br /&gt;
==GetFacingRelativeToTrain()==&lt;br /&gt;
&lt;br /&gt;
???GetFacingRelativeToTrain obsolete error or warning: &amp;lt;kuid:0000:0000&amp;gt; : VE267: somescript.gs(450) : function GetFacingRelativeToTrain is obsolete in object Vehicle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Repair&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You have one replacement option in the Vehicle class (vehicle.gs):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;bool GetDirectionRelativeToTrain(void);&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This function returns true if the vehicle faces the same way as the Train, false otherwise.  This function is a bit tricky to understand and especially when a vehicle, such as a coach/carriage, is involved.&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Usage example1:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 Vehicle myVehicle;&lt;br /&gt;
 bool sameDirectionAsTrain;&lt;br /&gt;
 &lt;br /&gt;
 sameDirectionAsTrain = GetDirectionRelativeToTrain();  &lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Usage example2:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 Vehicle[] trainVehicles;&lt;br /&gt;
 Vehicle myVehicle;&lt;br /&gt;
 bool sameDirectionAsTrain;&lt;br /&gt;
 int i;&lt;br /&gt;
 &lt;br /&gt;
 trainVehicles = GetMyTrain().GetVehicles();&lt;br /&gt;
 &lt;br /&gt;
 if (trainVehicles) {  //unlikely to be null but ...&lt;br /&gt;
 &lt;br /&gt;
   for (i = 0; i &amp;lt; trainVehicles.size(); ++i) {&lt;br /&gt;
     //get direction of this vehicle in the train&lt;br /&gt;
     sameDirectionAsTrain = trainVehicles[i].GetDirectionRelativeToTrain();&lt;br /&gt;
     if (sameDirectionAsTrain) {&lt;br /&gt;
       // do what is necessary here&lt;br /&gt;
       Interface.Print(&amp;quot;Vehicle &amp;quot;+ (i+1) + &amp;quot; is facing forward&amp;quot;);  // add 1 so that the first vehicle is number 1 and not 0 (zero)&lt;br /&gt;
     } else {&lt;br /&gt;
       Interface.Print(&amp;quot;Vehicle &amp;quot;+ (i+1) + &amp;quot; is facing backwards&amp;quot;); &lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 &lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:Surveyor_Topology_Tools&amp;diff=20959</id>
		<title>Help:Surveyor Topology Tools</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:Surveyor_Topology_Tools&amp;diff=20959"/>
		<updated>2019-08-26T22:51:36Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Topology Menu provides&lt;br /&gt;
the tools for creating various&lt;br /&gt;
types of terrain. In this section&lt;br /&gt;
you will learn how to make&lt;br /&gt;
hills, valleys, mountains, lakes&lt;br /&gt;
and rivers.&lt;br /&gt;
&lt;br /&gt;
Click on the Topology Tab (or&lt;br /&gt;
press the F1 key) to open the&lt;br /&gt;
Topology Menu. Here you&lt;br /&gt;
will see a number of different&lt;br /&gt;
tools that can be used to shape&lt;br /&gt;
the terrain. Hold your mouse&lt;br /&gt;
cursor over each one to see a&lt;br /&gt;
short description as well as the&lt;br /&gt;
appropriate Hotkey to press. To&lt;br /&gt;
see the whole menu as in the&lt;br /&gt;
iamge below, click on the&lt;br /&gt;
“Advanced” button to expand&lt;br /&gt;
the menu.&lt;br /&gt;
&lt;br /&gt;
[[File:Topology.jpeg]]&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
* The three top buttons allow you to activate the basic tools to raise and lower terrain.&lt;br /&gt;
* The knobs below that alter the area the tool will affect and the sensitivity of the tool.&lt;br /&gt;
&lt;br /&gt;
For an overview of how the topology tools work [[Help:Topology_editing|click here]]&lt;br /&gt;
&lt;br /&gt;
=TANE=&lt;br /&gt;
== Main menu ==&lt;br /&gt;
=== [[File:Height up.jpg]]  Height up (U) ===&lt;br /&gt;
Use this tool to create mounds, hills and mountains. &lt;br /&gt;
Click on the Height Up tool icon to change to Height Up mode. Move your cursor from the tool tab onto the 3D world and you will see a &amp;quot;circle of influence&amp;quot;. Left click and drag your mouse around the 3D world to raise the terrain.&lt;br /&gt;
Use Radius and Sensitivity to adjust the size and sensitivity of this tool. To adjust your view of the world as you mould the terrain, right-click on the terrain to move your camera focal point and use your cursor arrow keys to move the camera. Use Undo if you don&#039;t like the results you see. &lt;br /&gt;
&lt;br /&gt;
=== [[File:Height down.jpg]] Height down (D) ===&lt;br /&gt;
Use this tool to modify the terrain height. Make hollows, valleys, rivers, lakes and oceans.&lt;br /&gt;
&lt;br /&gt;
Click on the Height Down tool icon to change to Height Down mode. Move your cursor from the tool tab onto the 3D world and you will see a &amp;quot;circle of influence&amp;quot;. Left click and drag your mouse around the 3D world to lower the terrain.&lt;br /&gt;
&lt;br /&gt;
Use Radius and Sensitivity to adjust the size and sensitivity of this tool. To adjust your view of the world as you mould the terrain, right-click on the terrain to move your camera focal point and use your cursor arrow keys to move the camera. Use Undo if you don&#039;t like the results you see.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Height adjust.jpg]] Adjust height (A) ===&lt;br /&gt;
Adjust Height allows finer control of the up and down movement. Click LMB and hold then push your mouse away from you to raise the terrain. Click LMB and hold then pull the mouse towards you to lower the terrain.&lt;br /&gt;
Generally used for finer adjustments.&lt;br /&gt;
Use in conjunction with the Radius and Sensitivity tools.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Radius.jpg]] Radius ===&lt;br /&gt;
Click LMB on the Radius Tool and move to either side to change the circle of influence. Move the dial right to enlarge the circle (HOTKEY “+”), left to minimize (HOTKEY “-”).&lt;br /&gt;
The size of the circle determines the outer limit of influence of the tool.&lt;br /&gt;
Whichever tool you have selected (highlighted) will be applied within the area defined by the circle.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Sensitivity.jpg]] Sensitivity ===&lt;br /&gt;
Click LMB on the Sensitivity Tool and move to either side to change the amount of height changed each time the circle of influence is affected. Move the dial right to make more sensitive (HOTKEY “+”), left to reduce the sensitivity (HOTKEY “-”).&lt;br /&gt;
&lt;br /&gt;
=== [[File:Height get.jpg]] Get height (G) ===&lt;br /&gt;
Select Get Height (G), then Click RMB on the side of a hill. Notice that the number in the Height Value field changes. You have captured the height of the terrain at the point your compass appears.&lt;br /&gt;
Use in conjunction with the plateau tool to flatten an area to a certain height.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Height use.jpg]] Use height (H) ===&lt;br /&gt;
Click on Use Height (H) then Click LMB to apply the selected Height Value to the terrain. The Use Height tool creates a plateau at your selected height and the radius of your cursor circle determines the amount of land that is leveled at one time.&lt;br /&gt;
Click and hold LMB then move your mouse around the terrain to level out a broader section.&lt;br /&gt;
This tool is not affected by the sensitivity dial.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Plateu.jpg]] Plateau (P) ===&lt;br /&gt;
Plateau (P) creates a plateau at the current height of the&lt;br /&gt;
compass. Click LMB on the side of a hill to create&lt;br /&gt;
a plateau at that level by raising or lowering the&lt;br /&gt;
terrain.&lt;br /&gt;
&lt;br /&gt;
This tool is affected by the sensitivty dial. Moving your cursor around over pre-existing hills will create a smoothing effect. Adjust the sensitivity to flatten/smooth areas quicker or slower.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Height value field.jpg]] Height value field ===&lt;br /&gt;
You can manually enter in the height to apply. Click on the number showing between Get Height and Use Height and manually type in a value.&lt;br /&gt;
To apply the selected Height Value to the terrain, click on the Use Height tool then LMB on the terrain.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Water add.jpg]] Add water (W) ===&lt;br /&gt;
Click LMB on Add Water (W)&lt;br /&gt;
and paint the water texture along the&lt;br /&gt;
desired area by moving&lt;br /&gt;
your mouse around. The radius of the&lt;br /&gt;
cursor circle determines the texture panel size. &lt;br /&gt;
&lt;br /&gt;
=== [[File:Water remove.jpg]] Remove water (Q) ===&lt;br /&gt;
Click LMB on Remove Water (Q) and you then delete&lt;br /&gt;
the water texture one panel at a time by Clicking&lt;br /&gt;
LMB on each water panel.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Water adjust height.jpg]] Adjust Water Height (E) ===&lt;br /&gt;
Select the Adjust Water Height&lt;br /&gt;
tool and Click LMB and hold (on the water texture) then drag&lt;br /&gt;
your mouse forward and back, adjusting the water texture&lt;br /&gt;
height until it is the appropriate&lt;br /&gt;
height.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Height value field.jpg]] Water Height Field ===&lt;br /&gt;
Enter the height at which you wish to apply the water, then click on Use Water Height. LMB and move your cursor around the terrain to paint the water texture at the height entered. &lt;br /&gt;
&lt;br /&gt;
=== [[File:Ground add.jpg]] Add ground (X) ===&lt;br /&gt;
Select the Add Ground&lt;br /&gt;
(X) tool. Click LMB in the void just off the edge of&lt;br /&gt;
the baseboard to add another baseboard in that direction.&lt;br /&gt;
&lt;br /&gt;
By default ground sections use a 10m grid, where each adjustable terrain &#039;point&#039; is 10m apart. If your route requires finer detail you can create sections which use a 5m grid. These ground sections will use four times more memory than the standard 10m grid and should be reserved for when fine detail is absolutely required. &lt;br /&gt;
&lt;br /&gt;
To create a section with a 5m grid, click on the drop down list to the right of the Add Ground button, and select the 5m option. Now add the terrain as normal. You can also update existing sections by clicking on them whilst the 5m grid option is selected.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Ground remove.jpg]] Delete ground ===&lt;br /&gt;
Click LMB on the Delete Section button, then Click&lt;br /&gt;
LMB on any baseboard section to delete it. This action cannot be undone, and should be used with care. Deleting a section may also delete splines that cross section boundaries. If the zoom is too far from the surface, this option might me disabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
The Advanced features menu can be opened and closed by&lt;br /&gt;
using Shift-F1 or clicking on the Advanced Tab.&lt;br /&gt;
=== [[File:Displacement map.jpg]] Displacement map ===&lt;br /&gt;
A displacement map is a grayscale image&lt;br /&gt;
used to create an instant height map.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Direction.jpg]] Direction ===&lt;br /&gt;
Move the direction dial in the directon you wish the grayscale map to be put down on the baseboard.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Threshold.jpg]] Threshold ===&lt;br /&gt;
Move the Threshold dial to increase the size of the height change set on the displacement map.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Area select.jpg]] Select area (B) ===&lt;br /&gt;
Click on Select Area (B). Click LMB and drag the&lt;br /&gt;
mouse to make a large square as shown below.&lt;br /&gt;
The size of the square (or rectangle)&lt;br /&gt;
determines the area that will be affected by the next&lt;br /&gt;
operation.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Area fill.jpg]] Fill area (F) ===&lt;br /&gt;
Scroll through the Displacement Maps, then click on Fill Area (F). The&lt;br /&gt;
terrain is instantly transformed into the shape determined by&lt;br /&gt;
the grayscale images of the displacement map chosen.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Area cancel.jpg]] Cancel selection (D) ===&lt;br /&gt;
Click LMB on Cancel Selection (D) to cancel the&lt;br /&gt;
selection.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Area grab.jpg]] Get displacement (B) ===&lt;br /&gt;
Click on Select Area (B). Click LMB on the baseboard&lt;br /&gt;
and drag the mouse to make a large square that&lt;br /&gt;
covers an existing area of modified terrain. Now&lt;br /&gt;
click the “Get Displacement” button and you’ll notice that a&lt;br /&gt;
displacement map has been derived from the shape of the&lt;br /&gt;
terrain. This can now be used to apply the same terrain effect&lt;br /&gt;
in another area.&lt;br /&gt;
&lt;br /&gt;
=TRS2019=&lt;br /&gt;
&lt;br /&gt;
For a basic overview on the Topology Tools in TRS19 you can view the tutorial video [[https://youtu.be/O8n0Z5jQ9q8 HERE]].&lt;br /&gt;
&lt;br /&gt;
TRS2019 introduces several new features in the Topology tools, mostly relating to the new Clutter and TurfFX effects.&lt;br /&gt;
&lt;br /&gt;
[[File:Trs2019-topology-tab.JPG]]&lt;br /&gt;
&lt;br /&gt;
== Main menu (Terrain Mode) ==&lt;br /&gt;
=== [[File:Trs2019-topology-tab-height-up.jpg]]  Height up (U) ===&lt;br /&gt;
Use this tool to create mounds, hills and mountains. &lt;br /&gt;
Click on the Height Up tool icon to change to Height Up mode. Move your cursor from the tool tab onto the 3D world and you will see a &amp;quot;circle of influence&amp;quot;. Left click and drag your mouse around the 3D world to raise the terrain.&lt;br /&gt;
Use Radius and Sensitivity to adjust the size and sensitivity of this tool. To adjust your view of the world as you mould the terrain, right-click on the terrain to move your camera focal point and use your cursor arrow keys to move the camera. Use Undo if you don&#039;t like the results you see.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-height-down.jpg]] Height down (D) ===&lt;br /&gt;
Use this tool to modify the terrain height. Make hollows, valleys, rivers, lakes and oceans.&lt;br /&gt;
&lt;br /&gt;
Click on the Height Down tool icon to change to Height Down mode. Move your cursor from the tool tab onto the 3D world and you will see a &amp;quot;circle of influence&amp;quot;. Left click and drag your mouse around the 3D world to lower the terrain.&lt;br /&gt;
&lt;br /&gt;
Use Radius and Sensitivity to adjust the size and sensitivity of this tool. To adjust your view of the world as you mould the terrain, right-click on the terrain to move your camera focal point and use your cursor arrow keys to move the camera. Use Undo if you don&#039;t like the results you see.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-height-adjust.jpg]] Adjust height (A) ===&lt;br /&gt;
Adjust Height allows finer control of the up and down movement. Click LMB and hold then push your mouse away from you to raise the terrain. Click LMB and hold then pull the mouse towards you to lower the terrain.&lt;br /&gt;
Generally used for finer adjustments.&lt;br /&gt;
Use in conjunction with the Radius and Sensitivity tools.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-radius.jpg]] Radius ===&lt;br /&gt;
Click LMB on the Radius Tool and move to either side to change the circle of influence. Move the dial right to enlarge the circle (HOTKEY “+”), left to minimize (HOTKEY “-”).&lt;br /&gt;
The size of the circle determines the outer limit of influence of the tool.&lt;br /&gt;
Whichever tool you have selected (highlighted) will be applied within the area defined by the circle.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-sensitivity.jpg]] Sensitivity ===&lt;br /&gt;
Click LMB on the Sensitivity Tool and move to either side to change the amount of height changed each time the circle of influence is affected. Move the dial right to make more sensitive (HOTKEY “+”), left to reduce the sensitivity (HOTKEY “-”).&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-get-height.jpg|48px]] Get height (G) ===&lt;br /&gt;
Select Get Height (G), then Click RMB on the side of a hill. Notice that the number in the Height Value field changes. You have captured the height of the terrain at the point your compass appears.&lt;br /&gt;
Use in conjunction with the plateau tool to flatten an area to a certain height.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-use-height.jpg|48px]] Use height (H) ===&lt;br /&gt;
Click on Use Height (H) then Click LMB to apply the selected Height Value to the terrain. The Use Height tool creates a plateau at your selected height and the radius of your cursor circle determines the amount of land that is leveled at one time.&lt;br /&gt;
Click and hold LMB then move your mouse around the terrain to level out a broader section.&lt;br /&gt;
This tool is not affected by the sensitivity dial.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-plateau.jpg|48px]] Plateau (P) ===&lt;br /&gt;
Plateau (P) creates a plateau at the current height of the&lt;br /&gt;
compass. Click LMB on the side of a hill to create&lt;br /&gt;
a plateau at that level by raising or lowering the&lt;br /&gt;
terrain.&lt;br /&gt;
&lt;br /&gt;
This tool is affected by the sensitivty dial. Moving your cursor around over pre-existing hills will create a smoothing effect. Adjust the sensitivity to flatten/smooth areas quicker or slower.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-height-entry.jpg|48px]] Height value field ===&lt;br /&gt;
You can manually enter in the height to apply. Click on the number showing between Get Height and Use Height and manually type in a value.&lt;br /&gt;
To apply the selected Height Value to the terrain, click on the Use Height tool then LMB on the terrain.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-add-water.jpg|48px]] Add water (W) ===&lt;br /&gt;
Click LMB on Add Water (W)&lt;br /&gt;
and paint the water texture along the&lt;br /&gt;
desired area by moving&lt;br /&gt;
your mouse around. The radius of the&lt;br /&gt;
cursor circle determines the texture panel size.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-delete-water.jpg|48px]] Remove water (Q) ===&lt;br /&gt;
Click LMB on Remove Water (Q) and you then delete&lt;br /&gt;
the water texture one panel at a time by Clicking&lt;br /&gt;
LMB on each water panel.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-water-height.jpg|48px]] Adjust Water Height (E) ===&lt;br /&gt;
Select the Adjust Water Height&lt;br /&gt;
tool and Click LMB and hold (on the water texture) then drag&lt;br /&gt;
your mouse forward and back, adjusting the water texture&lt;br /&gt;
height until it is the appropriate&lt;br /&gt;
height.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-water-height-value.jpg|48px]] Water Height Field ===&lt;br /&gt;
Enter the height at which you wish to apply the water, then click on Use Water Height. LMB and move your cursor around the terrain to paint the water texture at the height entered.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-add-ground.jpg|48px]] Add ground (X) ===&lt;br /&gt;
Select the Add Ground (X) tool. Click LMB in the void just off the edge of the baseboard to add another baseboard in that direction.&lt;br /&gt;
&lt;br /&gt;
By default ground sections use a 10m grid, where each adjustable terrain &#039;point&#039; is 10m apart. If your route requires finer detail you can create sections which use a 5m grid. These ground sections will use four times more memory than the standard 10m grid and should be reserved for when fine detail is absolutely required.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-select-grid-size.jpg|48px]] Change Grid Size ===&lt;br /&gt;
To create a section with a 5m grid, click on the drop down list to the right of the Add Ground button, and select the 5m option. Now add the terrain as normal. You can also update existing sections by clicking on them whilst the 5m grid option is selected.&lt;br /&gt;
&lt;br /&gt;
=== [[File:Trs2019-topology-tab-delete-ground.jpg|48px]] Delete ground ===&lt;br /&gt;
Click LMB on the Delete Section button, then Click&lt;br /&gt;
LMB on any baseboard section to delete it. This action cannot be undone, and should be used with care. Deleting a section may also delete splines that cross section boundaries. If the zoom is too far from the surface, this option might be disabled.&lt;br /&gt;
&lt;br /&gt;
== Advanced ==&lt;br /&gt;
The Advanced features menu can be opened and closed by&lt;br /&gt;
using Shift-F1 or clicking on the Advanced Tab.&lt;br /&gt;
&lt;br /&gt;
The Advanced tab provides access to the Displacement Map tools, and the new Clutter Effects/TurfFX tools.&lt;br /&gt;
&lt;br /&gt;
===Effect Layers===&lt;br /&gt;
====[[File:Trs2019-topology-tab-effect-layer.jpg]] Effects Layers ====&lt;br /&gt;
Use this drop down menu to select between Displacement Map mode, and Effects Layers mode.&lt;br /&gt;
&lt;br /&gt;
Effect Layers will only be shown if there are Effect Layers configured for the route.&lt;br /&gt;
&lt;br /&gt;
When an Effect Layer is selected, the following tools are used to apply, adjust, or remove the effect layer on the route:&lt;br /&gt;
&lt;br /&gt;
* [[#Height_up_(U)_2|Height Up (U)]] tool will paint the effect onto the terrain; with density growing the more it is &#039;painted&#039; on.&lt;br /&gt;
* [[#Height_down_(D)_2|Height Down (D)]] tool will erase the effect from the terrain, with density reducing the more it is &#039;erased&#039;.&lt;br /&gt;
* [[#Adjust_height_(A)_2|Adjust Height (A)]] tool will adjust the density of the effect on the terrain.&lt;br /&gt;
* [[#Radius_2|Radius]] sets the radius for the brush to paint the effect onto the terrain.&lt;br /&gt;
* [[#Sensitivity_2|Sensitivity]] sets the density/rate of the brush (the higher the sensitivity, the quicker it will paint the effect up to full density)&lt;br /&gt;
* [[#Get_height_(G)_2|Get Height (G)]] gets the current density at the location of the compass.&lt;br /&gt;
* [[#Use_height_(H)_2|Use Height (H)]] applies the selected effect density shown in the &#039;height value field&#039;&lt;br /&gt;
* [[#Plateau_(P)_2|Plateau (P)]] applies the effect density from one location to another. To use, left click and hold in one location and then drag to other locations to apply that effect density.&lt;br /&gt;
* [[#Height_value_field_2|Height Value Field]] allows you to set a effect density value between 0 and 1, and then use the [[#Use_height_(H)_2|Use Height (H)]] tool to apply that effect density.&lt;br /&gt;
* [[#Select_area_(B)_2|Select Area (B)]] allows you to select an area, to then use the [[#Fill_area_(F)_2|Fill Area (F)]] tool to &#039;fill&#039; that area with the selected effect.&lt;br /&gt;
* [[#Fill_area_(F)_2|Fill Area (F)]] allow you to fill the selected area with the selected effect.&lt;br /&gt;
* [[#Cancel_selection_(D)_2|Cancel Selection (D)]] allows you to cancel the selection.&lt;br /&gt;
&lt;br /&gt;
See [[Effect_Layer|Effect Layers]] for further information on creating, using, and editing Effect Layers.&lt;br /&gt;
&lt;br /&gt;
====[[File:Trs2019-topology-tab-edit-add-effect-layer.jpg|48px]] Edit/Add Effect Layers====&lt;br /&gt;
Opens the Edit/Add Effects Layers tool.&lt;br /&gt;
&lt;br /&gt;
===Displacement Maps===&lt;br /&gt;
==== [[File:Trs2019-topology-tab-displacement-map.jpg]] Displacement map ====&lt;br /&gt;
Select &#039;Ground&#039; in the drop down menu to access the displacement map tools. A displacement map is a Trainz [[KIND Groundbrush]] asset that is used to create terrain features quickly and easily. When the displacement map tools are selected there is a second drop down menu that lists the displacement maps that are available.  The default is None which is a null displacement. Select an item from the menu to make it the current displacement map: the map will appear in the preview pane. Click the &#039;x&#039; in the preview pane to reset the map to None.&lt;br /&gt;
&lt;br /&gt;
==== Direction ====&lt;br /&gt;
Click the direction arrows at the bottom of the Displacement Map preview to change in the direction you wish the grayscale map to be put down on the baseboard.&lt;br /&gt;
&lt;br /&gt;
==== Displacement Scale====&lt;br /&gt;
Move the Displacement Scale slider, below the Displacement Map view, to change the height scale for the displacement map.&lt;br /&gt;
&lt;br /&gt;
==== [[File:Trs2019-topology-tab-select-area.jpg|48px]] Select area (B) ====&lt;br /&gt;
Click on Select Area (B). Click LMB and drag the mouse to select the rectangular area to which the displacement will be applied.&lt;br /&gt;
&lt;br /&gt;
==== [[File:Trs2019-topology-tab-fill-area.jpg|48px]] Fill area (F) ====&lt;br /&gt;
Scroll through the Displacement Maps, then click on Fill Area (F). The&lt;br /&gt;
terrain is instantly transformed into the shape determined by&lt;br /&gt;
the grayscale images of the displacement map chosen.&lt;br /&gt;
&lt;br /&gt;
==== [[File:Trs2019-topology-tab-cancel-selection.jpg|48px]] Cancel selection (D) ====&lt;br /&gt;
Click LMB on Cancel Selection (D) to cancel the&lt;br /&gt;
selection.&lt;br /&gt;
&lt;br /&gt;
==== [[File:Trs2019-topology-tab-get-displacement.jpg|48px]] Get displacement (B) ====&lt;br /&gt;
Click LMB on Select Area (B). Click LMBH-d on the baseboard and drag the mouse to select a rectangular area of the terrain. Now click LMB on the “Get Displacement” button and a custom displacement map will be created using the height profile of the selected area, and will show in the preview window. This displacement map can now be used to apply the same terrain effect in another area, using rotation and scaling as required. Click LMB on the tick mark in the preview window and supply a name for the new displacement map - it will be saved with the supplied name and will be available for use in any route.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;big&amp;gt; See Also &amp;lt;/big&amp;gt;&lt;br /&gt;
* [[Help:Surveyor_Tools|Surveyor Tools]]&lt;br /&gt;
* [[Help:Surveyor|Surveyor]]&lt;br /&gt;
* [[Effect_Layer|Effect Layer]]&lt;br /&gt;
&lt;br /&gt;
Return to [[Help:TRS19|TRS19 Help Page]]&lt;br /&gt;
[[Category:TRS19]]&lt;br /&gt;
[[Category: Help]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Art_Recommendations&amp;diff=10857</id>
		<title>Art Recommendations</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Art_Recommendations&amp;diff=10857"/>
		<updated>2017-11-27T23:48:35Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* Modeling Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document seeks to provide guidance for content creators working at the [[TRS18]] modeling standard. This is a living document and will be updated based on our real-world experiences. That said, content creators should avoid the temptation to ignore the recommendations put forward in this document &amp;quot;for this model only&amp;quot; as that type of thinking quickly leads to an inefficient content set and poor overall performance. Performance is a holistic subject which requires an ongoing commitment.&lt;br /&gt;
&lt;br /&gt;
It is also important to understand the intent of each recommendation, rather than to blindly follow each. There are frequently conflicting demands which only the individual creator can balance. Religiously following the rules without understand why is suitable for beginner creators who are building simple variations on a fixed template, but more advanced creators will need to understand the benefits and tradeoffs of each decision that they make.&lt;br /&gt;
&lt;br /&gt;
=Who is this Document for?=&lt;br /&gt;
This document is aimed at all Trainz content creators- whether that be a prolific creator of high-quality scenery, an esteemed creator of train models, a route builder on a long-running and large-scale route project, or just somebody who likes to tinker at home (in some cases all of these are one person!)&lt;br /&gt;
&lt;br /&gt;
Trainz lives or dies by the quality of the third-party content. We expect content creators creating payware or engaging in large-scale freeware content release to take this document to heart, as it is the only way that Trainz can continue to evolve as a product. We understand completely that there are many members of our community to whom much of this document is largely theoretical, because they work in isolation on small home projects, however we hope that the guidelines here will also help these users gain the most from their Trainz experience.&lt;br /&gt;
&lt;br /&gt;
This document provides guidelines on how to use well-known techniques; it does not attempt to teach those techniques. Information on the various techniques described in this document can be found elsewhere on this wiki. Information on general modeling techniques can be found all over the internet.&lt;br /&gt;
&lt;br /&gt;
=Terminology=&lt;br /&gt;
This document subdivides Trainz assets into various categories, such as &amp;quot;Major Scenery&amp;quot;. These are not necessarily terms found outside this document, but are simply the way that this document describes the category. Do not expect to find these terms used in other documents, within the content config files, or within the game.&lt;br /&gt;
&lt;br /&gt;
=Scene Budget=&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
=Modeling Overview=&lt;br /&gt;
All TRS18 art should be built with the following principles in mind:&lt;br /&gt;
* There are very few items close to the camera at any time, yet paradoxically these items are typically the most important in the scene. It is very important to ensure that every item looks excellent at extreme close range. The highest [[Level of Detail|LODs]] can afford to be fairly excessive, as long as the extra detail is removed quickly in lower LODs.&lt;br /&gt;
* &amp;quot;Background-only&amp;quot; low quality scenery should not exist. Trainz is an open-ended game where users can use any scenery for any purpose, so the original intentions of the content creator cannot be enforced. Trainz offers efficient LOD and stitching systems, so there are no performance gains from creating &amp;quot;low LOD only&amp;quot; models. This is simply lazy modeling. Similarly, we discourage serious route creators from using such models - even if the models are used appropriately in their route - because this causes the scenery to be installed on the end-user&#039;s computer when we&#039;d prefer to discourage the use of these items.&lt;br /&gt;
* All scenery must have LOD. There are exceedingly few exceptions to this requirement. If your scenery is less than a few hundred polygons, please consider whether the above principle applies to you. For everybody else- you need to be using LOD. Well-built LOD does not make individual content look substantially worse, and allows the overall scene to look much better by significantly increasing the number of items which may be displayed simultaneously.&lt;br /&gt;
* You should use [[Physically Based Rendering|PBR materials]] at all times. Our older materials are emulated using the PBR code, so there is no benefit at all in using the older materials, and there are significant gains to be had through the PBR materials.&lt;br /&gt;
* Use [[parallax mapping]] wherever it makes sense. There is a performance cost, however it is expected that users will switch it on or off as appropriate for their machine. Parallax is not a miracle-cure for low-polygon modeling, but it can substantially improve the visual quality of an already-decent model.&lt;br /&gt;
&lt;br /&gt;
When modeling:&lt;br /&gt;
* Don&#039;t create polygons which are not visible. This is pure wastage. An example of this is a cube attached to a wall. A normal cube requires 6 faces (12 polygons). A cube attached to a wall requires 5 faces (10 polygons). This can be a substantial source of wasted performance- not just because of the extra polygons (maybe only a 20% cost), but because of [[overdraw]] (up to 100% cost).&lt;br /&gt;
* Avoid creating large polygons where substantial parts of the polygon are not visible. This can introduce expensive overdraw. There is often a tradeoff between overdraw and polygon count which you will need to balance. Adding a small number of extra polygons to halve the overdraw is very worthwhile. Adding thousands of polygons for a small gain in overdraw is probably not.&lt;br /&gt;
* Remember that overdraw is paid each time a [[fragment]] is hit. If a given fragment is overlapped by 50 polygons, you are paying up to 5000% cost for that fragment.&lt;br /&gt;
* [[Vertex Buffer|Vertices]] are more expensive than fragments, but there is a balance point at which the cost of adding more fragments outweighs the cost of adding more vertices. For example, if you have 100 vertices drawing 100000 fragments, it is substantially cheaper to add 10% more vertices than 10% more fragments.&lt;br /&gt;
* Fragments are not [[texel]]s. Both should be optimised, but optimising one does not directly affect the other.&lt;br /&gt;
* All polygons are triangles. If your modeling program is working in higher-order polygons, be aware that this is being converted to triangles before it reaches the GPU. Trainz always works in triangles, so there is no separation of these terms in Trainz.&lt;br /&gt;
* Vertices are not polygons. A contiguous [[mesh]] gives close to a 1:1 relationship between polygons and vertices. In cases where the meshes are not contiguous (including open edges, or unsmoothed edges) this can move closer to 3 vertices to 1 polygon. There are costs to both vertices and polygons.&lt;br /&gt;
&lt;br /&gt;
When texturing:&lt;br /&gt;
* Reduce the number of [[material]]s in your asset. This is true at any detail level, but especially true at lower LOD levels.&lt;br /&gt;
* Each separate color [[texture]] usage forces a new material, so the more textures you have, the more materials you have. Reduce the number of textures.&lt;br /&gt;
* If you have a large amount of fully-opaque geometry, and a small amount of transparent or masked geometry, this may be a worthwhile reason to split into two separate materials for the higher LODs. In the lower LODs, remember that you&#039;re unlikely to have much of either on screen (since the overall screen size is tiny) so it&#039;s no longer worth the extra material and you should just go with the transparency-capable one for everything.&lt;br /&gt;
* Texture space is reasonably expensive. Don&#039;t repeat the same large feature ten times over when you can just texture it once and map the same texture onto several different polygons.&lt;br /&gt;
* On the flipside, there is a point at which geometry becomes more expensive. Don&#039;t spend thousands of polygons on something that you could implement cheaply in the texture.&lt;br /&gt;
* [[Texture tiling]] is a great way to cheaply fill a large polygon with detail, however it has a number of downsides. For starters, it can make it harder (one-way tiling) or impossible (two-way tiling) to share the texture with other geometry. Secondly, each repeat is identical (unless you&#039;re using a detail texture) and so the overall result can feel quite unnatural. Be careful about what you choose to tile, to ensure that the gains outweigh the downsides.&lt;br /&gt;
* Avoid texture tiling at the lowest LODs. It&#039;s typically not a major saving (because even a uniquely-mapped object will only be a handful of texels) and it prevents atlasing (whether by hand, or automated). It is likely to be flagged as an error condition in the future.&lt;br /&gt;
* [[Texture Atlas|Atlas]] where it makes sense. All else being equal, if you&#039;re going to have three meshes on the screen at the same time, it&#039;s better to share a single texture between them rather than use three separate textures.&lt;br /&gt;
* Don&#039;t atlas where it makes no sense. If you build a [[Mesh Libraries|library]] of assets which share an [[Texture Atlas|atlas texture]], the entire atlas must be loaded at full resolution even if only a single of the assets is loaded. If you know that assets are unlikely to be used together in the same scene, don&#039;t atlas them.&lt;br /&gt;
* Keep the [[texels-to-meters ratio]] roughly constant across your mesh for best visual results. This is especially important within any given material, as the texture LOD algorithms work with a single pre-calculated ratio per [[render chunk]].&lt;br /&gt;
* If your model has painted lines, as often happens with train liveries, consider aligning your texture map such that the lines flow vertically or horizontally along the texture. This may help reduce aliasing, causing your texture to look crisper. Where the lines are lightly curved, you may be able to get away with &amp;quot;cutting out&amp;quot; the line in a small number of rectangular segments, each of which holds a nearly straight line. By aligning each to the texture, you not only straighten the line along the grain of the texture but also reduce the area of texture required to map the line. Remember that you can arbitrarily cut the line at the texture edges, in a similar manner to the lines of text on this page. Straighter lines are likely to give far superior visual results when texture compression is in use.&lt;br /&gt;
&lt;br /&gt;
Texture Compression&lt;br /&gt;
* By default, Trainz compresses all textures. You can adjust the texture compression algorithm or turn it off entirely.&lt;br /&gt;
* Texture compression saves space (boosting performance and load times and reducing VRAM usage) but reduces quality, sometimes substantially. Natural images tend to fare well, whereas two patches of contrasting colours meeting at a sharp edge can distort noticeably.&lt;br /&gt;
* One way to look at texture compression is not that it gains you performance, but rather than it lets you raise the texture resolution while maintaining performance. Seen in this light, texture quality improves while space (performance/etc) stays unchanged.&lt;br /&gt;
* Regardless of which way you look at it, texture compression is something that needs to be understood and tuned.&lt;br /&gt;
* If you can tune the texture compression settings to improve your result, or adjust how your texture is laid out to avoid the worst artifacts, your visual outcomes can be substantially improved.&lt;br /&gt;
* For many textures the default is good enough, but if you&#039;re struggling with texture quality, then a reasonable place to start is to turn off texture compression and see what happens. If you&#039;re suddenly happy with the result, then try turning it back on and tweaking things.&lt;br /&gt;
* While one outcome is that texture compression should be switched off for a given texture, this should only be used once all other avenues have been unsuccessfully exhausted:&lt;br /&gt;
** Have you tried raising the texture resolution?&lt;br /&gt;
** Have you tried applying the texture map differently; for example changing the angle of the texture features with respect to the texture axes?&lt;br /&gt;
** Have you tried different texture compression options in your [[texture.txt file]]?&lt;br /&gt;
** If you are only having trouble with particular areas on your model, have you considered changing your mapping to dedicate more texels to these areas?&lt;br /&gt;
** Finally, if you really must turn off texture compression, are you able to split the texture into two smaller ones- one which avoids compression for those areas which need maximum quality, and one which is compressed and contains the details where compression doesn&#039;t hurt.&lt;br /&gt;
*** But be careful of [[draw call]] count. Don&#039;t add more textures if you&#039;re trying to reduce draw call count.&lt;br /&gt;
&lt;br /&gt;
When it comes to building LODs, the following should be kept in mind:&lt;br /&gt;
* LOD transitions take CPU time, GPU time, and may distract the user. Avoid unnecessary transitions. Try to time the transitions so that they can occur at reasonable spacing and shave off a significant number of polygons (etc) with each step. Maximise the gain from each amount of pain.&lt;br /&gt;
* Texture LOD is automatic. Do not manually introduce lower-detail textures as this will simply lower performance.&lt;br /&gt;
* [[Mesh stitching]] can bring massive performance gains when large numbers of low-polygon meshes with identical materials are used in the scene.&lt;br /&gt;
** Mesh stitching does not work on LM meshes.&lt;br /&gt;
** Mesh stitching does not work on animated meshes.&lt;br /&gt;
** Mesh stitching does not operate on regularly-moving objects such as train vehicles.&lt;br /&gt;
** Mesh stitching may not work where modifications have been made to the meshes, such as texture replacement or scripted emissive.&lt;br /&gt;
** Mesh stitching requires [[material sharing|shared materials]], but does not require identical meshes.&lt;br /&gt;
** [[Texture atlas|Low-LOD atlases]] can benefit mesh stitching because they introduce sharing between meshes which are otherwise not using shared materials.&lt;br /&gt;
* [[Hardware instancing]] can bring modest performance gains where many identical meshes exist in the scene which are not otherwise eligible for mesh stitching.&lt;br /&gt;
** Hardware instancing does not work on animated meshes.&lt;br /&gt;
** Hardware instancing does not work where modifications have been made to the meshes, such as texture replacement or scripted emissive.&lt;br /&gt;
** Hardware instancing requires identical meshes, not just shared materials.&lt;br /&gt;
* Do not use &amp;quot;lower quality&amp;quot; materials at lowest LOD.&lt;br /&gt;
** Material cost is in proportion with the number of fragments, meaning that it is typically negligible for low LOD objects.&lt;br /&gt;
*** Unless you&#039;re talking about an entire city of buildings, or a forest of trees perhaps.&lt;br /&gt;
** The heaviest materials often LOD internally with distance, meaning that they are not as expensive on low LOD (distant) objects anyway.&lt;br /&gt;
** You can often use the better materials to maintain graphical quality while the polygon count drops. Dropping polygon count at low LOD is much more important than using cheaper materials.&lt;br /&gt;
* Do not test your LOD models at close range and then say &amp;quot;well, it doesn&#039;t look any good, this isn&#039;t working&amp;quot;. Use [[Preview Asset]] on &amp;quot;auto&amp;quot; mode, then zoom in and out to see what the various transitions look like, when they occur, and how many polygons, draw calls, and animations are saved. Or just test the asset in-game. The end-user will never see your low-LOD model up close, so being concerned over its look at close range is entirely missing the point.&lt;br /&gt;
* Do zoom in to the low-LOD models using [[preview asset]] manual LOD distance control in order to take a close look at how your LOD models are put together. The end-user will never see this, so it&#039;s not what you&#039;re actually tuning for, but seeing the model zoomed in like this can help identify problems which are present-but-hard-to-identify at the actual view range.&lt;br /&gt;
* TBD: polys vs normals.&lt;br /&gt;
&lt;br /&gt;
Normal Maps:&lt;br /&gt;
* Providing a correct [[normal map]] is nearly as important as providing the correct [[albedo]] (surface color) texture and is often more important the providing quality geometry. If your normal map is not suitable, you will end up with incorrect lighting conditions, with dark areas where you expect light or vice versa.&lt;br /&gt;
* Normal maps and geometry are traditionally created simultaneously by:&lt;br /&gt;
** Building an ultra-high-detail source model.&lt;br /&gt;
** Creating a LOD0 game model with a suitably reduce polygon count; this process is often partly automated by the modelling tool, but also typically requires hand adjustment to get optimum efficiency.&lt;br /&gt;
** Baking the mesh normals from the high-detail source model into a normal map for the LOD0 game model.&lt;br /&gt;
** Rinse and repeat for the other LODs, with the process likely getting more manual as the polygon count gets lower.&lt;br /&gt;
* Normal maps are NOT simply color textures. Editing them in photoshop or a similar tool is likely to give poor (and often unexpected) results. If you must edit them per-pixel, be sure to use a linear color space. Photoshop color space is NOT linear by default, and working in a linear color space is non-trivial for beginners. [http://therenderblog.com/how-to-linearize-textures-in-photoshop/ Read this page] for more details. If you get this wrong, your normals will be distorted and probably lean to one side. This may or may not be enough to be noticed immediately in-game, but it will be enough to reduce the visual quality of the overall scene. Additionally, normal maps should contain normalised color values only (ie. the RGB channels must add up to 1.0). Trainz will renormalise your normal maps when they are submitted, however if you are supplying non-normalised values then the end result may not match what you are expecting.&lt;br /&gt;
* Normal maps cause the lighting model to act as if additional geometry is present. They do not cause self-shadowing, but do affect the intensity of directional light, they do affect the position of specular reflection, they do affect the direction of cube-mapped reflections, and so on. They are essential when performing LOD because each LOD step replaces a number of polygons with a singular polygon, distorting the remaining normals to an average of those removed. This means that lighting becomes &amp;quot;averaged&amp;quot; over the model, rather than having light and dark in the appropriate areas. The normal map serves to exactly reverse this effect- it distorts the normal data to match the original model on a per-texel basis, thus preserving the play of light across your model as if the original shape was still present.&lt;br /&gt;
* Normal maps cannot help your model retain its silhouette. It is important when creating LOD that you preserve the silhouette in your geometry (or perhaps consider alpha masking). The normal map can help with everything else.&lt;br /&gt;
* Normal maps are stored in [[tangent space]] and are dependent on the actual geometry present in the LOD as well as the simulated geometry that is represented by the map. This means that it is not appropriate to take a normal map created for one LOD and use it for another substantially different LOD, even if the simulated geometry is identical. &amp;quot;Substantially different&amp;quot; in this case is one in which the [[vertex normals]] or [[UV mapping]] are noticeably different.&lt;br /&gt;
&lt;br /&gt;
Animation:&lt;br /&gt;
* Care should be taken when exporting animated meshes to ensure that low-LOD variants or non-animated variants do not still contain bones or other animation data. Even if an animation is not actively being played, costs are incurred by the presence of bones.&lt;br /&gt;
* [[LM.txt file]]s allow you to switch off playback of animation past a certain distance. This is a separate decision to whether each submesh of the LM contains bones. An animation can be playing even though no bones are present to visualise it. Separately, an animation can be paused even though bones are present and displaying it. You should take care to both pause the animation at an appropriate distance and also to remove bones from the lowest LOD meshes.&lt;br /&gt;
* [[Mesh-table]]s apply animation per submesh. Unlike LM files, they do not share animations between submeshes. If the same animation file is applied to multiple submeshes, this will load several animation instances which will then play independently. This means that mesh-table animations are typically only appropriate where the highest LOD is animated but all lower LODs are not animated. This might be useful where the animation is very subtle (so that the user can notice it when extremely close to the object, but doesn&#039;t notice it vanish and doesn&#039;t miss it while it&#039;s some distance away) but should not be used where the animation makes obvious changes to the mesh- for example on a crane. Subtle foliage wind animations, human/animal idle animations, and fan rotation might be reasonable under these limitations.&lt;br /&gt;
&lt;br /&gt;
General guidelines:&lt;br /&gt;
* Don&#039;t rely on assumptions that you are doing the right things. There are many ways to make mistakes, and many optimisations are affected by the exact construction of your asset, so it&#039;s possible to &amp;quot;tick all the right boxes&amp;quot; and still end up with a poor-performing asset because you aren&#039;t using the optimisations you were aiming at.&lt;br /&gt;
* Do use the [[preview asset]] in-game. If you are seeing &amp;quot;wrong&amp;quot; results from [[preview asset]] then it is very, very likely that the results are correct and that you are making incorrect assumptions. Do not simply assume that [[preview asset]] is feeding you incorrect information and ignore it: it works by measuring the actual results, not by estimating what should happen.&lt;br /&gt;
* Do test your asset in a variety of scenarios, to find any weaknesses: unexpectedly high polygon counts or draw calls, animations active past the point where you can actually see them, overly-visible LOD transitions, etc.&lt;br /&gt;
* If you&#039;re in doubt about using a texture atlas, err in favor of not using it. Future optimisations may be incompatible with manual atlasing. If you have a clear case where the atlas is a significant benefit, use it- you will win now, and the manual atlas can be removed in the future if it becomes unnecessary.&lt;br /&gt;
* The guidelines given in this document are intended to allow you to produce excellent visual results while still maintaining solid performance. If you focus on the maximum polygon count guidelines but ignore the efficiency guidelines, it is of course possible to make terrible-looking content that is still quite expensive for what you get. Don&#039;t do this. Before, during, and after creating each asset you should be spending some time to review the performance concerns and ensure that you have built the best model that you can reasonably make.&lt;br /&gt;
* A good-looking asset which performs poorly is no more useful than a poor-looking asset that performs well. Don&#039;t fall into the trap of making a good-looking mesh and thinking your work is done.&lt;br /&gt;
&lt;br /&gt;
=Route-Building Overview=&lt;br /&gt;
* Avoid having the route baseboards end suddenly within line-of-sight of the track. Even if you choose not to fully detail the outer baseboards, at least provide basic geometric detail out to the maximum draw distance. Especially avoid any situation where the baseboard wall is visible.&lt;br /&gt;
* Build a palette of scenery and ground textures that is appropriate for your route, and work from that. Don&#039;t simply select new scenery from the DLS each time you need to place something. Using a restricted set of content has multiple benefits:&lt;br /&gt;
** You can ensure that each selection is visually and functionally appropriate for your route.&lt;br /&gt;
** You can test the performance and visuals of your selected content and avoid any poor-performing scenery without having to re-test each placement.&lt;br /&gt;
** If it later turns out that some of your scenery needs updating, it is much easier to update a small selection of content which is reused than hundreds of items that are used only once each.&lt;br /&gt;
** Performance improves when scenery is used multiple times and reduces when each scenery item is different.&lt;br /&gt;
** If you wish to redistribute your route, it is easier to secure the necessary rights and the overall download size is smaller.&lt;br /&gt;
* Avoid heavily blending ground textures. It performs poorly and doesn&#039;t look good. If the textures that you are using don&#039;t look appropriate individually, consider selecting better textures instead.&lt;br /&gt;
* Avoid using too many ground textures in a small area. Try to keep to 3-4 textures within any given ~240m x 240m area.&lt;br /&gt;
* Use PBR ground textures with parallax. While mixing PBR ground textures with legacy ground texture is possible, it doesn&#039;t look as good.&lt;br /&gt;
* Carefully read the per-asset guidelines, and select assets which follow the guidelines over those which don&#039;t.&lt;br /&gt;
* Test your route&#039;s performance as you go. Achieving a good selection of assets, good object density, and so on up front is far easier than retrofitting performance once you&#039;re done.&lt;br /&gt;
&lt;br /&gt;
=Trains=&lt;br /&gt;
==LOD Recommendations==&lt;br /&gt;
LM is the appropriate technique for all train vehicles. Mesh stitching is never used, so mesh-table LOD does not provide major benefits, and LM offers more control.&lt;br /&gt;
===Locomotives===&lt;br /&gt;
The following ranges are appropriate for primary locomotives. All numbers here are as per [[preview asset]]- they include any bogeys, effects, and other attachments. Distances indicate the approximate range in which the LOD will be visible. The exact distances will vary per model- if pushing LOD3 back to start at 350m allows you to bake in the bogeys, for example, the tradeoff is likely worthwhile.&lt;br /&gt;
&lt;br /&gt;
* LOD0: Used at extreme close range (0m-20m). Typically there will only be 1-2 vehicles on screen at this range. Primarily used for inspecting the vehicle and fussing over how pretty it looks. Performance is (within reason) a lesser concern here.&lt;br /&gt;
** 100k-150k polygons total.&lt;br /&gt;
** Consider using attachments for small heavily-repeated features such as lamps, boxes, fans, etc. This is appropriate for 10-20 features, not for thousands of features. The advantages include the ability to individually LOD the attachments (reducing the overall polygon count active in the scene), the reduction in polygon count on disk (reduced file size) and the possibility of hardware instancing accelerating the rendering (not applicable if animated). There is an associated increase in CPU cost and in draw call count, so this technique should not be used for very-low-poly-count meshes.&lt;br /&gt;
** The object will be large on the screen, so reducing overdraw is quite important.&lt;br /&gt;
** No more than 50 draw calls total.&lt;br /&gt;
** Corona attachment, Particle Effects, etc.&lt;br /&gt;
** Animated small details (moving fans, swinging hoses or chains, etc.)&lt;br /&gt;
** Modelled interior should be present where there are windows. The interior should have reasonable geometric detail (chairs, etc) but is obviously not seen from inside so should be more representative than precise. Texture detail should be low, as the window should hide most details. The interior will typically be darker than the outside world during daylight conditions, and overbright in nighttime conditions.&lt;br /&gt;
** Effects such as font replacement for running numbers and emissive strength adjustment for the interior material may be appropriate.&lt;br /&gt;
** Scripted control of the various effects may be appropriate.&lt;br /&gt;
* LOD1: Used at close range (20m-50m). There will be several vehicles on the screen in this range but the detail must remain high, so performance is a significant concern. Primarily used when the player is actively working with or around the vehicle.&lt;br /&gt;
** 50k-100k polygons total. You can typically knock 30-50% of your LOD0 polygons away.&lt;br /&gt;
** Consider reducing or removing your attachments, animations, and effects.&lt;br /&gt;
** No more than 20 draw calls total.&lt;br /&gt;
** Fully modelled interiors are no longer necessary, but the silhouette seen through the window should be maintained (ie. the opposite wall of the interior should still be visible; if a chair was blocking the view then a low-poly version may still be present, etc. Interior floors and roofs are probably unnecessary.&lt;br /&gt;
* LOD2: Used at medium range (50m-250m). There will be a lot of vehicles on the screen, and detail is no longer a major concern.&lt;br /&gt;
** 10k-30k polygons.&lt;br /&gt;
** 3-8 draw calls.&lt;br /&gt;
** If you are finding it hard to reduce detail from LOD1 without a visible change, break this into two transitions (eg. a 30k and a 10k).&lt;br /&gt;
** Remove all attachments.&lt;br /&gt;
** Remove all non-essential animations. This may mean keeping the bogey wheels (or not) but losing all fans etc.&lt;br /&gt;
** Switch off most particle effects, coronas, texture replacement, running numbers, names, etc.&lt;br /&gt;
* LOD3: Used at long range (250m-1km).&lt;br /&gt;
** 1k-5k polygons.&lt;br /&gt;
** 1-3 draw calls.&lt;br /&gt;
** Remove all attachments, animations, and effects.&lt;br /&gt;
** Optionally bake the bogeys into the mesh.&lt;br /&gt;
** This LOD still has the basic shape and texture of the full vehicle, but lacks finesse. Fine details that consume significant polygon counts (eg. pipes, tubes, rails) may be removed entirely and/or burned into the texture. Detail which is still visible but no longer clear can be simplified or converted from geometry to an alpha mask.&lt;br /&gt;
** At this level, you&#039;re aiming at numbers low enough that things which were noise before are now starting to be problematic. Attachments such as bogeys require at least one draw call, even if their polygon count is tiny at this point, so it&#039;s time to consider baking them in.&lt;br /&gt;
* LOD4: Extreme range (1km-15km).&lt;br /&gt;
** 50-200 polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** No effects.&lt;br /&gt;
** Fully baked.&lt;br /&gt;
** This LOD is very literally a box. The silhouette needs to be accurate enough to represent the vehicle while occupying only a handful of pixels, so details smaller than about 50cm are entirely invisible.&lt;br /&gt;
===Rolling Stock===&lt;br /&gt;
The process of modeling rolling stock is fundamentally similar to that of locomotives. Polygon counts &amp;quot;per detail&amp;quot; are expected to be similar. Most rolling stock is considerably simpler than most locomotives however, so as a result the typical rolling stock models will be substantially lower polygon at the same distance when compared to a locomotive. When modelling rolling stock which is as heavily detailed as a typical locomotive, it is acceptable to approach the locomotive detail recommendations instead of staying at the typical rolling stock limits.&lt;br /&gt;
&lt;br /&gt;
As always, avoid the temptation to claim that your asset is special and deserves special attention. Most rolling stock does not require super-high detail, and these numbers are generous:&lt;br /&gt;
&lt;br /&gt;
* LOD0: 30k-60k, 5-20 draw calls.&lt;br /&gt;
* LOD1: 10k-30k, 5-15 draw calls.&lt;br /&gt;
* LOD2: 5k-10k, 3-8 draw calls.&lt;br /&gt;
* LOD3: 1k-3k, 1-3 draw calls, no animation.&lt;br /&gt;
* LOD4: 50-200, 1 draw call, no animation, fully baked.&lt;br /&gt;
&lt;br /&gt;
==Scripting==&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
=Flagship Scenery=&lt;br /&gt;
A flagship scenery item fits the following criteria:&lt;br /&gt;
* Highly detailed.&lt;br /&gt;
* Visible over a reasonable range.&lt;br /&gt;
** A small statue or plaque, no matter how interesting, is not a flagship.&lt;br /&gt;
** The Statue of Liberty is a flagship.&lt;br /&gt;
* Only one present in the scene at a time.&lt;br /&gt;
** This is obviously under the control of the route creator, not the original modeller, however intentions are telling.&lt;br /&gt;
** A business or house that can&#039;t easily be identified as different from others is not a flagship.&lt;br /&gt;
** An overpass is not a flagship.&lt;br /&gt;
** A train station may be a flagship. (But an individual platform is not.)&lt;br /&gt;
&lt;br /&gt;
Flagship scenery items are considered a separate class of object simply because there are times when you might want to build at a detail level which exceeds the guidelines for regular scenery objects. This is obviously something that can be considered, but only in the context of &amp;quot;we will only do this once in the scene&amp;quot;. If you were to place several flagship objects together in the scene, performance will obviously suffer.&lt;br /&gt;
&lt;br /&gt;
At the end of the day, we can&#039;t stop people making poor-performing content. But having guidelines helps conscientious creators to make decisions about when they should play strictly by the rules, and when they have a little leeway. We consider &amp;quot;Flagship Scenery Items&amp;quot; to be that leeway. It&#039;s reasonable to build a truly iconic building (one of the seven wonders, for example, or even something that is iconic only in the local sense) at a higher detail than the average apartment building. But if you find yourself building (or using) run-of-the-mill items without sticking to the scenery budgets below, you&#039;re just being lazy.&lt;br /&gt;
&lt;br /&gt;
=Large Scenery=&lt;br /&gt;
Large Scenery is anything from roughly the size of a house upward. It&#039;s going to be visible from quite some distance away. It&#039;s large enough that if you&#039;re standing right next to it, it&#039;s going to tower above you, or stretch out in each direction. It&#039;s something that you&#039;re going to want at moderate detail.&lt;br /&gt;
&lt;br /&gt;
Scenery should never be unnecessarily large. There are a number of negatives to creating large scenery. Performance can suffer. Usability can suffer. LOD is less effective since you&#039;re &amp;quot;close to the object&amp;quot; for a much larger distance.&lt;br /&gt;
&lt;br /&gt;
In normal usage, it is reasonable to model any singular object as one scenery object, but you should not typically bake several unrelated or semi-related objects into one scenery object. If you have performance concerns with using multiple smaller objects, consider material sharing and/or atlasing, however keep in mind that this is pointless for multi-thousand-polygon meshes (it may still be useful at lower LODs).&lt;br /&gt;
&lt;br /&gt;
In the past, creators (including [[Auran]]) have modelled large composites (eg. an airport, including the terminal building, runway, ancillary buildings, planes, and land vehicles) as a single scenery object. This may have been appropriate at the time but is strongly discouraged in recent versions of Trainz.&lt;br /&gt;
&lt;br /&gt;
Some creators have also attempted to &amp;quot;optimise&amp;quot; their scenery by creating &amp;quot;configurable&amp;quot; scenery objects, such as a house which is scripted so that you can configure the number of windows, floors, roof color, etc. This approach is strongly discouraged as it restricts the game&#039;s ability to optimise the content. As time goes on, new methods of optimisation are introduced which are inevitably incompatible with these &amp;quot;optimisation tricks&amp;quot;, so they fall rapidly behind in terms of both performance and usability.&lt;br /&gt;
&lt;br /&gt;
Mesh-table LOD gives substantially better performance on scenery objects than LM.&lt;br /&gt;
&lt;br /&gt;
* LOD0: Large scenery is expected to be of substantially lower complexity than a train vehicle, and also of somewhat lower importance to the game environment. As such, despite being physically larger than a train vehicle, it will have less polygons, less draw calls, and less effects.&lt;br /&gt;
** 10k-30k polygons.&lt;br /&gt;
** 1-5 draw calls.&lt;br /&gt;
** No animation.&lt;br /&gt;
* LOD1:&lt;br /&gt;
** 1k-5k polygons.&lt;br /&gt;
** 1-3 draw calls&lt;br /&gt;
** No animation.&lt;br /&gt;
* LOD2:&lt;br /&gt;
** 300-1k polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** No animation.&lt;br /&gt;
* LOD3:&lt;br /&gt;
** 10-300 polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** No animation.&lt;br /&gt;
&lt;br /&gt;
Large scenery should generally not be animated. Where an animation is required, it should be provided by the use of minor scenery items (that users may then use in conjunction with the large scenery or separately as they wish).&lt;br /&gt;
&lt;br /&gt;
In some cases, large scenery simply must be animated. An example of this is a large (building-sized) crane. In this case, a decision must be made as to how much of the scenery object to animate. If the object is high-poly, and only a small amount of the object is to be animated, it may be worth splitting it into two meshes- one static and one animated. Both meshes may be components of the single Large Scenery asset, but reducing the animated footprint in this fashion can help improve performance and robustness. LM may be used for the animated meshes.&lt;br /&gt;
&lt;br /&gt;
You may consider using similar techniques to those describe under the Locomotive LOD recommendations, such as using attached meshes at higher LODs.&lt;br /&gt;
&lt;br /&gt;
==Scripting==&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
=Trees=&lt;br /&gt;
Trees are typically handled different from other scenery, so they&#039;re given their own category in this document.&lt;br /&gt;
==SpeedTree==&lt;br /&gt;
Trainz typically uses [[SpeedTree]] for tree rendering. This is not mandatory, however it is currently the simplest way to build an efficient-but-attractive tree. The SpeedTree tools take care of wind animation, LOD (using an attractive fade transition), atlased billboarding (a technique not currently available to other Trainz assets) and a custom form of mesh stitching.&lt;br /&gt;
&lt;br /&gt;
SpeedTree assets may be constructed with an appropriately licensed copy of the SpeedTree Modeler software from IDV. The SRT file format is version-specific and so the appropriate software versions must be used. [[N3V Games]] is typically unable to assist with acquiring the necessary licenses, however if you are a well-established content creator with specific needs, feel free to contact us on this topic.&lt;br /&gt;
&lt;br /&gt;
SpeedTree assets are relatively performant although it is still possible to overload a scene by adding too many trees. The worst-case scenario tends to be when a large number of trees are placed in very close proximity to the camera, as a distance-based LOD is used and leaf overdraw can be expensive. A SpeedTree-specific performance slider is available in the in-game video settings which allows adjusting the LOD distance separately from other scenery.&lt;br /&gt;
&lt;br /&gt;
Other performance gotchas include using too many different types of tree within one scene, and using too many trees in the scene total (ie. stretching a &amp;quot;horizon to horizon&amp;quot; forest at high density).&lt;br /&gt;
==Mesh Trees==&lt;br /&gt;
It is also possible to create a tree as a regular scenery asset. In this scenario, it will be your responsibility to create the necessary animations, LOD, etc.&lt;br /&gt;
&lt;br /&gt;
* LOD0: The tree should look as attractive as possible up close. It should minimise the use of tricks and billboards, while staying within the overall polygon budget.&lt;br /&gt;
** 1k-4k polygons.&lt;br /&gt;
** 1-2 draw calls.&lt;br /&gt;
** Optionally animated.&lt;br /&gt;
* LOD1: The main difficulty with manual tree scenery creation is maintaining the look of the tree over several LODs while shedding polygons. This tends to be much harder than with manmade objects. You will need to combine smaller leaf cards into larger leaf cards without substantially changing the overall look of the tree. Pay special attention to the silhouette of the tree and the normal map.&lt;br /&gt;
** 250-500 polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** Not animated.&lt;br /&gt;
* LOD2: The lowest LOD needs to be hugely efficient.&lt;br /&gt;
** 1-20 polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** Not animated.&lt;br /&gt;
&lt;br /&gt;
You may find that you need to introduce additional LODs between these steps in order to soften the transitions.&lt;br /&gt;
&lt;br /&gt;
For performance reasons, mesh-table LOD should be used, at least for the lowest LOD.&lt;br /&gt;
==Scripting==&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
=Minor Scenery=&lt;br /&gt;
Minor Scenery is anything larger than a rock or pot-plant or garbage can, but smaller than a house. This includes cars, camper trailers, commercial garbage bins, boulders, large statues, utility poles, street signs, animals and people, etc.&lt;br /&gt;
&lt;br /&gt;
* LOD0:&lt;br /&gt;
** 500-4k polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** Optionally animated.&lt;br /&gt;
* LOD1:&lt;br /&gt;
** 250-500 polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** Not animated.&lt;br /&gt;
* LOD2:&lt;br /&gt;
** 1-20 polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** Not animated.&lt;br /&gt;
&lt;br /&gt;
You may find that you need to introduce additional LODs between these steps in order to soften the transitions.&lt;br /&gt;
&lt;br /&gt;
For performance reasons, mesh-table LOD should be used.&lt;br /&gt;
&lt;br /&gt;
Scenery objects in Trainz are not expected to move (animate) over large distances. Any animation should typically stay within a few meters of the object origin.&lt;br /&gt;
==Scripting==&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
=Detail Scenery=&lt;br /&gt;
Detail Scenery is the smallest class of standalone scenery object in Trainz. This includes small rocks, ferns, small plants and tufts of grass, litter and refuse, toolboxes, etc. Where multiple objects are going to be placed over a wide area, clutter should be used rather than Detail Scenery, however there are many cases where individual placement is desired.&lt;br /&gt;
&lt;br /&gt;
* LOD0:&lt;br /&gt;
** 20-2k polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** Optionally animated.&lt;br /&gt;
* LOD1:&lt;br /&gt;
** 20-200 polygons.&lt;br /&gt;
** 1 draw call.&lt;br /&gt;
** Not animated.&lt;br /&gt;
* Abbreviated draw distance.&lt;br /&gt;
==Scripting==&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
=Ground Textures=&lt;br /&gt;
Ground Textures are an efficient way to provide a base coverage for the Trainz environment, whether that coverage is grass, sand, rock, gravel, shrubs.. the list goes on. Ground textures come with many benefits but also many tradeoffs.&lt;br /&gt;
&lt;br /&gt;
Ground Textures are a fundamental aspect of Trainz rendering; it is not possible to switch them off entirely. There are however various ways that you can influence the performance and quality of the ground rendering.&lt;br /&gt;
&lt;br /&gt;
TRS18 introduces [[KIND Groundtexture|PBR ground textures]]. These are much higher quality than traditional Trainz ground textures and (if properly constructed) don&#039;t suffer from regular tiling in the same way that older textures could. This means that you don&#039;t need to continuously change texture and cross-blend textures in order to avoid tiling. In fact, it is very strongly recommended that you do not do this as it may severely impact both visual quality and performance.&lt;br /&gt;
&lt;br /&gt;
PBR ground textures support Parallax rendering. This is an expensive but effective technique which introduces a per-texel heightmap and uses it to deform the ground texture. From most perspectives, this is indistinguishable from actual geometry. The heightmap is self-shadowing and self-occluding. The heightmap will intersect correctly with surrounding geometry.&lt;br /&gt;
&lt;br /&gt;
There are a few flaws in the effect, however:&lt;br /&gt;
* Shadowcasting (other than self-shadowing) does not use the heightmap. This is typically not a big concern with ground textures, although if you have the sun shining over a rocky ledge, you may see a hard edged shadow where you expected to see a slightly bumpy shadow.&lt;br /&gt;
* As with any fragment shading effect, the geometry is not truly deformed. While you can&#039;t tell it at all when looking near 90° to the ground, if you manage to get side-on with a parallax polygon you will see that it is completely flat. What&#039;s worse, as you approach close to that state, the geometry (which up to that point seemed solid 3D) will start to deform towards the flat state. Again, this isn&#039;t typically a massive concern with ground textures, but it can be visible with certain sharp edges, or on hills some distance away.&lt;br /&gt;
* Heightmaps don&#039;t allow overlapped geometry, only an upper surface like a shrinkwrap. While some shapes (pebbles, for example) lend themselves to heightmap techniques, other shapes are not possible to accurately represent. This doesn&#039;t mean that heightmaps can&#039;t be used to give the impression of that shape, but the end result will be representative rather than an exact match.&lt;br /&gt;
* Subtlety is the name of the game. This technique is a simulation of depth, and the more that you try to pronounce this, the more the user will notice any flaws. Parallax is best used to give an extra hint of depth rather than trying to replace geometry altogether. Small sticks, roughness, pebbles and flat grass are fine. Large rocks and upright tufts of grass won&#039;t work well.&lt;br /&gt;
&lt;br /&gt;
One of the techniques that PBR Ground Textures use to avoid tiling is a &amp;quot;detail map&amp;quot;. Instead of applying a single color map repeatedly, the ground textures use two different color maps at different scales. The primary map can also control (per texel) how much it is affected by the detail map. This allows a number of different effects:&lt;br /&gt;
&lt;br /&gt;
* The primary map can be used as a normal ground (eg. grass) texture, repeating every 10m, while the detail map can provide very low resolution noise over 111.1m. The end result tiles once every 11km meters.&lt;br /&gt;
* The primary map can be used to display a tiled path. The detail texture can provide a very high resolution cracking and roughness texture. The primary map masks this to apply to the tile areas only, not the gaps or grout. The end result appears to have nearly infinite resolution- even fully zoomed in, the texture still has plenty of detail.&lt;br /&gt;
&lt;br /&gt;
Users may switch off the parallax effect in order to save performance, in which case the PBR ground texture will still look similar but without the effect of the height map. The ground height collapses to a &amp;quot;mid level&amp;quot; without any raising or lowering. The detail map still operates.&lt;br /&gt;
==Ground Texture Blending==&lt;br /&gt;
Trainz allows multiple textures to be applied to each ground vertex. Since rendering is triangle-based, three vertices worth of textures must be applied to each triangle that is rendered. If we assume that Trainz allows three textures per vertex, then this means that there are up to 9 possible textures applied to any ground triangle simultaneously. Each texture is drawn in a separate pass, so this has the potential to cause a massive amount of [[overdraw]]. Even in older versions of Trainz the performance of ground rendering could vary substantially depending on the route creator&#039;s choices. With PBR Ground Textures, this problem would become substantially worse as the materials are much heavier to start with. This is one reason to avoid blending multiple textures. Trainz performance will be substantially improved if single textures are used over wide areas, with blending only occurring at the changeover point (and only between two textures rather than 9 or so).&lt;br /&gt;
&lt;br /&gt;
Because Trainz ground uses a multipass rendering technique, it&#039;s not possible to simply take heightmap data from each texture and add them up to determine an overall height. Instead, each parallax texture is processed separately, and only the final color values are added. This can lead to blends between parallax textures having &amp;quot;floating&amp;quot; elements, or ghostly transparencies. The effect isn&#039;t a dealbreaker, but nor is it something that we want to have occur too frequently. So this is another reason to avoid blending.&lt;br /&gt;
&lt;br /&gt;
Finally, because of [[z-fighting]] concerns, and also to benefit performance, we only apply parallax on a single texture pass on any given ground triangle. Any secondary texture passes used for blending will revert to a flat surface. Another reason to avoid blending.&lt;br /&gt;
=Splines=&lt;br /&gt;
Spline assets provide a flexible mechanism for procedurally placing geometry to fit a curved line. Spline assets are typically more expensive to load into the scene than scenery objects, but have various benefits in usability and may have performance benefits.&lt;br /&gt;
&lt;br /&gt;
When used over large areas, Splines offer the ability to define how much distance is covered by each LOD submesh (as opposed to scenery objects, which have a fixed size regardless of LOD). In theory this ability gives a spline the ability to drop to very low polygons-per-meter counts at lower LODs. In practice, this is heavily dependant on the spline creator doing a good job of the LOD, so while it is certainly possible for a spline to be more efficient than equivalent scenery objects, this does not necessarily translate into reality for any given spline asset.&lt;br /&gt;
&lt;br /&gt;
Some key points when creating spline assets include:&lt;br /&gt;
* Remember that by far the majority of your most of your spline will be in the far distance. While it&#039;s important to keep the high-LOD polygon count under control, it&#039;s equally important to ensure that the super-low-LOD has an extremely low polygons-per-meter count. This is typically achieved by using long mesh lengths and subdividing at high LOD.&lt;br /&gt;
* Avoid using multiple materials. A single draw call per spline is ideal.&lt;br /&gt;
* Avoid using unnecessary child splines. There&#039;s no harm in this if you need it, but in many cases it&#039;s feasible to build all the geometry into a single spline. If you do use child splines, use a [[texture atlas]] if possible to enable [[mesh stitching]] between the splines.&lt;br /&gt;
* Use a good-quality texture with parallax in preference to excessive numbers of polygons. Have enough polygons to provide the basic silhouette, but don&#039;t try to model every nook and cranny with geometry.&lt;br /&gt;
* Use [[preview asset]] performance analysis mode to test your spline&#039;s performance.&lt;br /&gt;
==Bridge Splines==&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
==Track Splines==&lt;br /&gt;
TBD.&lt;br /&gt;
&lt;br /&gt;
==Road Splines==&lt;br /&gt;
Road splines can come in many variations. This section specifically refers to road splines with negligible depth, as opposed to elevated highways or similar (which could probably be considered &#039;large splines&#039;).&lt;br /&gt;
&lt;br /&gt;
* TBD: z-fighting and ground penetration&lt;br /&gt;
&lt;br /&gt;
* LOD0 - polygons, meters?&lt;br /&gt;
* LOD1 - polygons, meters?&lt;br /&gt;
* LOD2 - polygons, meters?&lt;br /&gt;
&lt;br /&gt;
* TBD: crossroads&lt;br /&gt;
* TBD: train crossings&lt;br /&gt;
==Large Splines==&lt;br /&gt;
This includes splines such as high-voltage transmission towers, large dam walls, etc. These are items which will be visible from a substantial distance, but of which there are unlikely to be a large number in the scene. These are items which are naturally splines- not things like a line of discrete trees which could equally be built as a non-spline object.&lt;br /&gt;
&lt;br /&gt;
* LOD0 - polygons, meters?&lt;br /&gt;
* LOD1 - polygons, meters?&lt;br /&gt;
* LOD2 - polygons, meters?&lt;br /&gt;
==Minor Splines==&lt;br /&gt;
This includes splines such as fences, residential power-lines, hedges, small cliffs, etc. These are items which may be visible from a moderate distance, but aren&#039;t overly prominent. These are items which are naturally splines- not things like a line of discrete trees which could equally be built as a non-spline object.&lt;br /&gt;
&lt;br /&gt;
* LOD0 - polygons, meters?&lt;br /&gt;
* LOD1 - polygons, meters?&lt;br /&gt;
* LOD2 - polygons, meters?&lt;br /&gt;
==Detail Splines==&lt;br /&gt;
A &amp;quot;Detail Spline&amp;quot; is a scenery-only spline which is used to represent a line of some repeating mesh such as shrubs, flowers, cars, etc. It is typically either used to simplify placement (two clicks rather than one click per mesh) or in an attempt (often misguided) to improve performance by rendering large sections of geometry with a single object.&lt;br /&gt;
&lt;br /&gt;
Using splines to represent fine details is not recommended. This approach tends to be slow to load and is often expensive to render. That&#039;s not to say that it&#039;s impossible, but any such splines should be used with caution as they can severely impact performance if misused, overused, or simply if poorly created.&lt;br /&gt;
&lt;br /&gt;
Where detail splines are used, care must be taken to:&lt;br /&gt;
&lt;br /&gt;
* Minimise the number of spline instances placed in a given scene.&lt;br /&gt;
* Minimise the number of detail spline assets used in the route.&lt;br /&gt;
* Minimise the polygon count per meter of the spline through efficient use of LOD.&lt;br /&gt;
* Use only a single draw call per spline asset. (ie. Only one material.)&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=KIND_Texture-group&amp;diff=8402</id>
		<title>KIND Texture-group</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=KIND_Texture-group&amp;diff=8402"/>
		<updated>2015-06-22T15:19:32Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Updated to reference .texture files instead of image files directly&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[KIND Texture-group]] defines a group of textures as an asset that can be referenced from another asset or via scripting.&lt;br /&gt;
&lt;br /&gt;
[[Image:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
==KIND Hierarchy==&lt;br /&gt;
===Parent Classes===&lt;br /&gt;
* [[KIND TrainzBaseSpec]]&lt;br /&gt;
===Child Classes===&lt;br /&gt;
* &#039;&#039;none.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Supported Tags==&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Example Config.txt==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 kuid &amp;lt;kuid:171456:100034&amp;gt;&lt;br /&gt;
 trainz-build 3.5&lt;br /&gt;
 category-class &amp;quot;JO&amp;quot;&lt;br /&gt;
 category-region &amp;quot;AU&amp;quot;&lt;br /&gt;
 category-era &amp;quot;1810s&amp;quot;&lt;br /&gt;
 username &amp;quot;testTextureGroup&amp;quot;&lt;br /&gt;
 kind &amp;quot;texture-group&amp;quot;&lt;br /&gt;
 description &amp;quot;Test texture group.&amp;quot;&lt;br /&gt;
 textures&lt;br /&gt;
 {&lt;br /&gt;
   0 &amp;quot;1.texture&amp;quot;&lt;br /&gt;
   1 &amp;quot;2.texture&amp;quot;&lt;br /&gt;
   2 &amp;quot;3.texture&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 thumbnails&lt;br /&gt;
 {&lt;br /&gt;
   0&lt;br /&gt;
   {&lt;br /&gt;
     image &amp;quot;thumb.jpg&amp;quot;&lt;br /&gt;
     width 240&lt;br /&gt;
     height 180&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
An example for the use of &amp;quot;texture-group&amp;quot; is a destination  board system. See [[HowTo/Implement_a_Destination_Sign_System|How to Implement a Destination Sign System]].&lt;br /&gt;
&lt;br /&gt;
Note that as of TANE, all textures must be referenced as .texture files, not the image file (.bmp, .tga, etc) itself.&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Asset KIND|T]]&lt;br /&gt;
[[Category:TBD]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_World&amp;diff=1838</id>
		<title>Class World</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_World&amp;diff=1838"/>
		<updated>2011-04-18T20:54:12Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* PlaySound */ changed return value as per TS12&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Language Reference|API Hierarchy]]&lt;br /&gt;
**World&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
*World is a static class used to access various aspects of the Trainz environment.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
*These constants are used to define various values and can be used as mnenomics.&lt;br /&gt;
*If accessed from scripts the values must be prefixed &#039;&#039;World.&#039;&#039;, for example:&lt;br /&gt;
 World.SetWeather(World.WEATHER_TYPE_LIGHT_SNOW,World.WEATHER_CHANGEABILITY_PERIODIC);&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Camera View Modes===&lt;br /&gt;
----&lt;br /&gt;
*These values can be used either to choose the current camera viewing mode through World.SetCameraMode(), or to restrict certain camera modes from being accessed through methods such as World.SetCamera().&lt;br /&gt;
&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int CAMERA_INTERNAL = 1||Internal cabin camera view.&lt;br /&gt;
|-&lt;br /&gt;
|public define int CAMERA_EXTERNAL = 2||External train camera view&lt;br /&gt;
|-&lt;br /&gt;
|public define int CAMERA_TRACKING = 4||External tracking camera view.&lt;br /&gt;
|-&lt;br /&gt;
|public define int CAMERA_ROAMING = 128||Roaming camera view.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Camera Flags===&lt;br /&gt;
----&lt;br /&gt;
*These flags are used in addition to the Camera Mode Flags to allow or disallow specific camera actions. &lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int CAMERA_SWITCH_VIEWS = 8||User permitted to swap between the camera views.&lt;br /&gt;
|-&lt;br /&gt;
|public define int CAMERA_SWITCH_VEHICLES = 16||User permitted to swap vehicles within the current train.&lt;br /&gt;
|-&lt;br /&gt;
|public define int CAMERA_SWITCH_TRAINS = 32||User permitted to swap to other trains which are in the consist menu.&lt;br /&gt;
|-&lt;br /&gt;
|public define int CAMERA_LOCKED = 64||User is NOT permitted to adjust camera (i.e. zoom, pan etc.).&lt;br /&gt;
|-&lt;br /&gt;
|public define int CAMERA_NORMAL = * ||Normal camera mode where everything is permitted.&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|&amp;lt;sup&amp;gt;* NOTE: CAMERA_NORMAL = CAMERA_INTERNAL | CAMERA_EXTERNAL | CAMERA_TRACKING | CAMERA_SWITCH_VIEWS | CAMERA_SWITCH_VEHICLES | CAMERA_SWITCH_TRAINS&amp;lt;/sup&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weather Type Constants===&lt;br /&gt;
----&lt;br /&gt;
*Define the current state of the weather in Trainz. &lt;br /&gt;
*A variety of weather conditions are supported and can be changed by using one of these values with the World.SetWeather() method. &lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int WEATHER_TYPE_CLEAR = 0||Clear weather, no clouds, rain or snow.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_TYPE_CLOUDY = 1||Cloudy weather, no rain.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_TYPE_DRIZZLE = 2||Drizzle, light rain.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_TYPE_RAIN = 3||Rainy weather.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_TYPE_STORMY = 4||Stormy weather that includes lightning and thunder.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_TYPE_LIGHT_SNOW = 5||Snowing lightly.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_TYPE_MEDIUM_SNOW = 6||Medium level snow fall.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_TYPE_HEAVY_SNOW = 7||Heavy snow fall.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Weather Changeability Constants===&lt;br /&gt;
----&lt;br /&gt;
*Define the changeability settings for the weather. &lt;br /&gt;
*Weather changeability refers to variability of weather conditions rather than to a specific weather type.&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int WEATHER_CHANGEABILITY_NONE = 0||Weather remains static.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_CHANGEABILITY_PERIODIC = 1||Periodic changes in weather.&lt;br /&gt;
|-&lt;br /&gt;
|public define int WEATHER_CHANGEABILITY_EXTREME = 2||Extreme and frequent changes in weather. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Time Values===&lt;br /&gt;
----&lt;br /&gt;
*Time constants defined in seconds.&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define float TIME_SECOND = 1.0f||One second.&lt;br /&gt;
|-&lt;br /&gt;
|public define float TIME_MINUTE = TIME_SECOND * 60.0f||One minute, 60.0 seconds.&lt;br /&gt;
|-&lt;br /&gt;
|public define float TIME_HOUR = TIME_MINUTE * 60.0f||One hour, 60.0 minutes, 3600.0 seconds.&lt;br /&gt;
|-&lt;br /&gt;
|public define float TIME_DAY = TIME_HOUR * 24.0f||One day, 24 hours, 1440.0 minutes, 86400.0 seconds.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Time Rate Constants===&lt;br /&gt;
----&lt;br /&gt;
*Values that define the time rates relative to normal time. &lt;br /&gt;
*These constants can be used to set the time rate that Trainz runs out through the World.SetGameTimeRate() method. &lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  TIME_RATE_1X = 0||Real time (i.e. time in Trainz passes at the same rate as in the real world)&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_2X = 1||Time passes at twice normal speed.&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_4X = 2||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_8X = 3||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_16X = 4||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_32X = 5||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_60X = 6||&lt;br /&gt;
|-&lt;br /&gt;
| public define int TIME_RATE_120X = 7||&lt;br /&gt;
|-&lt;br /&gt;
| public define int TIME_RATE_240X = 8||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_360X = 9||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_480X = 10||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_720X = 11||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_960X = 12||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_1200X = 13||&lt;br /&gt;
|-&lt;br /&gt;
|public define int TIME_RATE_1440X = 14||&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Trainz Modules===&lt;br /&gt;
----&lt;br /&gt;
*Trainz module mode constants. &lt;br /&gt;
*These values define the various module environments that Trainz can be in. &lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=375|public define int  NO_MODULE = 0||Trainz not running in a module.&lt;br /&gt;
|-&lt;br /&gt;
|public define int SURVEYOR_MODULE = 1||Trainz is currently running in Surveyor.&lt;br /&gt;
|-&lt;br /&gt;
|public define int DRIVER_MODULE = 2||Trainz is currently running in Driver.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
* [[TrainzScript Message Reference]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[Camera Messages]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[Interface Messages]]&amp;lt;br&amp;gt;&lt;br /&gt;
* [[ModuleInit Message]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==AddDriverCharacter==&lt;br /&gt;
{{MethodHeader|public native DriverCharacter AddDriverCharacter(Asset driverCharacterAsset)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;driverCharacterAsset&#039;&#039;&#039; = Asset containing character to be added.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Reference to the DriverCharacter if successful, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 DriverCharacter Casey = World.AddDriverCharacter(CaseyJones);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==AddDriverCommand==&lt;br /&gt;
{{MethodHeader|public native DriverCommand AddDriverCommand(Asset driverCommandAsset)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;driverCommandAsset&#039;&#039;&#039; = Asset containing command to be added.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Reference to the DriverCommand if successful, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 DriverCommand GoFaster = World.AddDriverCommand(accelerate);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CreateBehavior==&lt;br /&gt;
{{MethodHeader|public native ScenarioBehavior CreateBehavior(KUID kuid, Soup initialProperties)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;kuid&#039;&#039;&#039; = KUID of scenario.&lt;br /&gt;
&#039;&#039;&#039;initialProperties&#039;&#039;&#039; = Soup object containing initial properties for scenario.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Reference to the ScenarioBehavior created if successful, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 ScenarioBehavior scenario = World.CreateBehavior(scenarioAsset, scenarioSoup);&lt;br /&gt;
;Notes&lt;br /&gt;
*The returned ScenarioBehavior object may be ended by releasing all references to it (resetting all references to null).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CreateTrain==&lt;br /&gt;
{{MethodHeader|public native Train CreateTrain(KUID[ ] consist, string trackmarkName, bool direction)&amp;lt;br&amp;gt;public native Train CreateTrain(KUID[ ] consist, TrackMark trackmark, bool direction)&amp;lt;br&amp;gt;public native Train CreateTrain(KUID[ ] consist, Buildable buildable, string trackName, float position, bool direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;consist&#039;&#039;&#039; = An array of vehicle KUIDs used to describe the required Train object.&lt;br /&gt;
*&#039;&#039;&#039;trackmarkName&#039;&#039;&#039; = Name of Trackmark at which the consist is to be formed.&lt;br /&gt;
*&#039;&#039;&#039;buildable&#039;&#039;&#039; = Buildable on which the consist is to be formed.&lt;br /&gt;
*&#039;&#039;&#039;trackName&#039;&#039;&#039; = Name of track within Buildable object.&lt;br /&gt;
*&#039;&#039;&#039;position&#039;&#039;&#039; = Distance at which the Train is to be placed relative to the start of the track.&lt;br /&gt;
*&#039;&#039;&#039;trackmark&#039;&#039;&#039; = Reference to Trackmark at which the consist is to be formed.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = Orientation of Train relative to direction of track or trackmark.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Reference to the Train created if successful, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Train train = World.CreateTrain(consist, buildable, &amp;quot;Track 1&amp;quot;, 10.0, true);&lt;br /&gt;
;Notes&lt;br /&gt;
*These methods create a train from a list of vehicles in a consist array.&lt;br /&gt;
*Depending on the variant of the method used, the train can be created at a Trackmark, specified by name or reference, or at a Buildable or Industry object.&lt;br /&gt;
*It is the responsibility of the script programmer to ensure that sufficient track exists at the given location to allow the train to be created.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DeleteTrain==&lt;br /&gt;
{{MethodHeader|public native void DeleteTrain(Train train)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = train to be deleted from map.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.DeleteTrain(flyingScotsman);&lt;br /&gt;
;Notes&lt;br /&gt;
*Once a train has been deleted, care should be taken to avoid using its reference.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DeleteVehicle==&lt;br /&gt;
{{MethodHeader|public native void DeleteVehicle(Vehicle vehicle)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;vehicle&#039;&#039;&#039; = vehicle to be deleted from its train.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.DeleteVehicle(vehicles[vehicles.size()-1]);&lt;br /&gt;
;Notes&lt;br /&gt;
*Use Train.GetVehicles() to obtain an array of vehicles for a given train.&lt;br /&gt;
*Use Vehicle.GetMyTrain() to obtain a train reference for a given vehicle.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FindAsset==&lt;br /&gt;
{{MethodHeader|public native Asset FindAsset(KUID kuid)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;kuid&#039;&#039;&#039; = KUID of Asset to return.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Given a valid KUID parameter, this method return an Asset reference if successful, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Asset asset = World.FindAsset(kuid);&lt;br /&gt;
;Notes&lt;br /&gt;
*See also Asset.FindAsset()&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==FindDriverCommand==&lt;br /&gt;
{{MethodHeader|public native DriverCommand FindDriverCommand(Asset driverCommandAsset)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;driverCommandAsset&#039;&#039;&#039; = Asset containing command to be added.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Reference to the DriverCommand if successful, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 DriverCommand GoFaster = World.FindDriverCommand(accelerate);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetAssetList==&lt;br /&gt;
{{MethodHeader|public native Asset[ ] GetAssetList(string kind)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;kind&#039;&#039;&#039; = String representing the Kind of asset to return.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A list of all assets of the given &#039;&#039;kind&#039;&#039;&lt;br /&gt;
;Syntax&lt;br /&gt;
 Asset[] Libraries = World.GetAssetList(&amp;quot;Library&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*All installed assets of the given &#039;&#039;kind&#039;&#039; are returned, irrespective of whether or not they are in use on the current map.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetBadWeatherFog==&lt;br /&gt;
{{MethodHeader|public native float GetBadWeatherFog(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Bad weather fog distance as a float in the range 0.0..1.0.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float dist = World.GetBadWeatherFog();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetBehaviors==&lt;br /&gt;
{{MethodHeader|public native ScenarioBehavior[ ] GetBehaviors(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A list of top-level behaviors or rules on the currently loaded route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 ScenarioBehavior[] rules = World.GetBehaviors();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetCameraPositionX==&lt;br /&gt;
{{MethodHeader|public native float GetCameraPositionX(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*X Coordinate of the current camera position.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float X = World.GetCameraPositionX();&lt;br /&gt;
*Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetCameraPositionY==&lt;br /&gt;
{{MethodHeader|public native float GetCameraPositionY(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Y Coordinate of the current camera position.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float Y = World.GetCameraPositionY();&lt;br /&gt;
*Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetCameraPositionZ==&lt;br /&gt;
{{MethodHeader|public native float GetCameraPositionZ(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Z Coordinate of the current camera position.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float Z = World.GetCameraPositionZ();&lt;br /&gt;
*Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetCurrentModule==&lt;br /&gt;
{{MethodHeader|public native int GetCurrentModule(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An integer representing the current Trainz module.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int module = World,GetCurrentModule();&lt;br /&gt;
;Notes&lt;br /&gt;
* See [[#Trainz Modules|Trainz Modules]] for details of the constants associated with this method. &lt;br /&gt;
* See [[ModuleInit Message]] for further details.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetDriverCharacterList==&lt;br /&gt;
{{MethodHeader|public native DriverCharacter[ ] GetDriverCharacterList(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of DriverCharacter objects installed in the current world.&lt;br /&gt;
;Syntax&lt;br /&gt;
 DriverCharacter[] drivers = World.GetDriverCharacterList();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetDriverCommandList==&lt;br /&gt;
{{MethodHeader|public native DriverCommand[ ] GetDriverCommandList(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of DriverCommand objects installed in the current world.&lt;br /&gt;
;Syntax&lt;br /&gt;
 DriverCommand[] commands = World.GetDriverCommandList();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGameTime==&lt;br /&gt;
{{MethodHeader|public native float GetGameTime(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned value&lt;br /&gt;
*Current game time.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float Now = World.GetGameTime();&lt;br /&gt;
;Notes&lt;br /&gt;
*The returned time is normalised to a value between 0.0 and 1.0&lt;br /&gt;
*0.0 = midday.&lt;br /&gt;
*0.5 = midnight&lt;br /&gt;
*Use the [[#Time_Values|Time Value]] constants to convert the normalised values to human readable times.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGoodWeatherFog==&lt;br /&gt;
{{MethodHeader|public native float GetGoodWeatherFog(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Good weather fog distance as a float in the range 0.0..1.0.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float dist = World.GetGoodWeatherFog();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetGroundDrawDistance==&lt;br /&gt;
{{MethodHeader|public native float GetGroundDrawDistance(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Ground draw distance in metres.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float dist = World.GetGroundDrawDistance();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetIndustryList==&lt;br /&gt;
{{MethodHeader|public native GameObject[ ] GetIndustryList(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of references to all of the Industry objects for the current route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 GameObject[] Industries = World.GetIndustryList();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetJunctionList==&lt;br /&gt;
{{MethodHeader|public native Junction[ ] GetJunctionList(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of references to all of the trackside junction objects for the current route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Junction[] junctions = World.GetJunctionList();&lt;br /&gt;
;Notes&lt;br /&gt;
*Junction objects attached to fixed track junctions are not currently returned by this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetLibrary==&lt;br /&gt;
{{MethodHeader|public native Library GetLibrary(KUID kuid)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;kuid&#039;&#039;&#039; = KUID of script library asset to load.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the script library asset if successful, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Library codelib = World.GetLibrary(LibraryKUID);&lt;br /&gt;
;Notes&lt;br /&gt;
*The [[Class Library|Library]] asset is initialised when this method is first called in a session.&lt;br /&gt;
*Since only one instance can exist, subsequent calls return a reference to the existing Library object.&lt;br /&gt;
*See [[Class Library|Library]] for notes on how to use this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetSceneryDrawDistance==&lt;br /&gt;
{{MethodHeader|public native float GetSceneryDrawDistance(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Scenery draw distance in metres.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float dist = World.GetSceneryDrawDistance();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetSeconds==&lt;br /&gt;
{{MethodHeader|public native float GetSeconds(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current value of a floating point number incrementing once per second in real time.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float start = World.GetSeconds();&lt;br /&gt;
 // do stuff&lt;br /&gt;
 float finish = World.GetSeconds();&lt;br /&gt;
 float period = finish - start;&lt;br /&gt;
;Notes&lt;br /&gt;
*Each call will return a float value containing the current value of an internal counter.&lt;br /&gt;
*Subtracting a later value from a value saved at an earlier call will enable the delay between the two calls to be established.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetSignalList==&lt;br /&gt;
{{MethodHeader|public native Signal[ ] GetSignalList(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of references to all of the signal objects for the current route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Signal[] signals = World.GetSignalList();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetStringTable==&lt;br /&gt;
{{MethodHeader|public native StringTable GetStringTable(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The StringTable for the current session.&lt;br /&gt;
;Syntax&lt;br /&gt;
 StringTable data = World.GetStringTable();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetSurveyorSavedConsist==&lt;br /&gt;
{{MethodHeader|public native Soup GetSurveyorSavedConsistList(string name)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*&#039;&#039;&#039;name&#039;&#039;&#039; = Name of the consist to retireiev.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Returns a Soup definition of the named consist if it exists, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Soup consist = World.GetSurveyorSavedConsist(&amp;quot;Brighton Belle&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Remember that the returned data is in a Soup format, which is not the same thing as a Train. &lt;br /&gt;
*TrainUtil.CreateTrainFormSoup() can be used to create a train from the returned Soup.&lt;br /&gt;
*This method only works in Surveyor.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetSurveyorSavedConsistList==&lt;br /&gt;
{{MethodHeader|public native string[ ] GetSurveyorSavedConsistList()}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of names of all the saved consist objects in Surveyor.&lt;br /&gt;
;Syntax&lt;br /&gt;
 string[] consists = World.GetSurveyorSavedConsistList();&lt;br /&gt;
;Notes&lt;br /&gt;
*This method only works in Surveyor.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetTrackmarkList==&lt;br /&gt;
{{MethodHeader|public native TrackMark[ ] GetTrackmarkList(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of references to all of the trackmark objects for the current route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Trackmark[] trackmarks = World.GetTrackmarkList();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetTrainList==&lt;br /&gt;
{{MethodHeader|public native Train[ ] GetTrainList(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of references to all of the trains for the current route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Train[] trains = World.GetTrainList();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetTrainzBuild==&lt;br /&gt;
{{MethodHeader|public native int GetTrainzBuild(void)}}&lt;br /&gt;
;Parameters;&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*Gets the current build number of Trainz. &lt;br /&gt;
;Syntax&lt;br /&gt;
 int build = World.GetTrainzBuild();&lt;br /&gt;
;Notes&lt;br /&gt;
*The value returned corresponds to the build number you can see in the bottom-right side of the main Trainz menu screen.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetTrainzVersion==&lt;br /&gt;
{{MethodHeader|public native float GetTrainzVersion(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The TRS version number.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float version = World.GetTrainzVersion();&lt;br /&gt;
;Notes&lt;br /&gt;
*The value returned corresponds to the version number you can see in the bottom-right side of the main Trainz menu screen. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetTriggerList==&lt;br /&gt;
{{MethodHeader|public native Trigger[ ] GetTriggerList(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of references to all of the trigger objects for the current route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Trigger[] triggers = World.GetTriggerList();&lt;br /&gt;
;Notes&lt;br /&gt;
*This method does not return scenery triggers, ie those attached to SceneryWithTrack objects and their descendants.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetVehicleList==&lt;br /&gt;
{{MethodHeader|public native Vehicle[ ] GetVehicleList(void)}}&lt;br /&gt;
;Parameters &lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array of references to all of the vehicles in the current route.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Vehicle[] vehicles = World.GetVehicleList();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetWeatherChangeability==&lt;br /&gt;
{{MethodHeader|public native int GetWeatherChangeability(void)}}&lt;br /&gt;
;Parameter&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Weather_Changeability_Constants|Weather Changeability Constants]] denoting the variability of weather conditions.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int variability = World.GetWeatherChangeability();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GetWeatherType==&lt;br /&gt;
{{MethodHeader|public native int GetWeatherType(void)}}&lt;br /&gt;
;Parameter&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Weather_Type_Constants|Weather Type Constants]] denoting the current weather conditions.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int weather = World.GetWeatherType();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==LoadMap==&lt;br /&gt;
{{MethodHeader|public native bool LoadMap(KUID kuid)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;kuid&#039;&#039;&#039; = KUID of map to load.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if successful, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 if (World.LoadMap(mapKUID) Interface.Print(&amp;quot;Map loaded OK&amp;quot;);&lt;br /&gt;
 else Interface.Print(&amp;quot;Map load failed&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Play2DSound==&lt;br /&gt;
{{MethodHeader|public float Play2DSound(Asset asset, string wave)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;asset&#039;&#039;&#039; = Asset where the sound file is located.&lt;br /&gt;
*&#039;&#039;&#039;wave&#039;&#039;&#039; = Name of the &#039;&#039;*.wav&#039;&#039; file to be played, a relative path can be included.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The length of the sound file in seconds.&lt;br /&gt;
;Syntax&lt;br /&gt;
 // Play the sound and continues script execution.&lt;br /&gt;
    World.Play2DSound(soundAsset,&amp;quot;sounds/allaboard.wav&amp;quot;);        &lt;br /&gt;
 // Wait until sound has completed before continuing.&lt;br /&gt;
    Sleep(World.Play2DSound(soundAsset,&amp;quot;sounds/allaboard.wav&amp;quot;)); &lt;br /&gt;
;Notes&lt;br /&gt;
*Plays a &#039;&#039;.wav&amp;quot; sound file from the given asset&#039;s folder.&lt;br /&gt;
*The sound is non directional and can be mono or stereo. &lt;br /&gt;
*This method does not return after the sound has finished playing, it returns with the length of the sound as soon as it is called. &lt;br /&gt;
*This means your code will keep on executing while Trainz is playing the sound.&lt;br /&gt;
*If you want to wait for the sound to complete playing before moving on, wrap the Play2DSound() call up in a Sleep() call.&lt;br /&gt;
*Remember that Sleep() can&#039;t always be used.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==PlaySound==&lt;br /&gt;
{{MethodHeader|public native float PlaySound&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(Asset asset, string wave, float vol, float near, float far, GameObject target, string pt)&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;(Asset asset, string wave, float vol, float near, float far, GameObject target, string pt, bool loop)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;asset&#039;&#039;&#039; = Asset where the sound file is located.&lt;br /&gt;
*&#039;&#039;&#039;wave&#039;&#039;&#039; = Name of the &#039;&#039;*.wav&#039;&#039; file to be played, a relative path can be included.&lt;br /&gt;
*&#039;&#039;&#039;vol&#039;&#039;&#039; = Volume level to play the sound at&lt;br /&gt;
*&#039;&#039;&#039;near&#039;&#039;&#039; = Distance from the target asset at which the sound will be played at maximum volume.&lt;br /&gt;
*&#039;&#039;&#039;far&#039;&#039;&#039; = Distance from the target asset at which the sound will become inaudible.&lt;br /&gt;
*&#039;&#039;&#039;target&#039;&#039;&#039; = GameObject to which the sound will be attached if a 3d sound is required, null for 2D.&lt;br /&gt;
*&#039;&#039;&#039;pt&#039;&#039;&#039; = Name of attachment point in the target object if a 3d sound is required, null for 2D.&lt;br /&gt;
*&#039;&#039;&#039;loop&#039;&#039;&#039; = (Optional) If true the sound will loop continuously.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*&amp;lt;strike&amp;gt;The length of the sound file in seconds.&amp;lt;/strike&amp;gt;&lt;br /&gt;
*NOTE:  In TS12, the returned value is now undefined, and currently always returns &#039;10&#039;.  This is to remove the performance cost of having to read the file from disk immediately to determine the sound length before the function can complete.&lt;br /&gt;
;Syntax&lt;br /&gt;
 // Play the sound and continues script execution.&lt;br /&gt;
    World.PlaySound(soundAsset,&amp;quot;sounds/allaboard.wav&amp;quot;,1000.0,10.0,100.0,Station,&amp;quot;a.loudspeaker&amp;quot;);        &lt;br /&gt;
 // Wait until sound has completed before continuing.&lt;br /&gt;
    Sleep(World.PlaySound(soundAsset,&amp;quot;sounds/allaboard.wav&amp;quot;,1000.0,10.0,100.0,Station,&amp;quot;a.loudspeaker&amp;quot;)); &lt;br /&gt;
;Notes&lt;br /&gt;
*Plays a &#039;&#039;.wav&#039;&#039; sound file from the given asset&#039;s folder.&lt;br /&gt;
*If the sound is to be directional a mono sound file is required. &lt;br /&gt;
*This method does not return after the sound has finished playing, it returns with the length of the sound as soon as it is called. &lt;br /&gt;
*This means your code will keep on executing while Trainz is playing the sound.&lt;br /&gt;
*If you want to wait for the sound to complete playing before moving on, wrap the PlaySound() call up in a Sleep() call.&lt;br /&gt;
*Remember that Sleep() can&#039;t always be used.&lt;br /&gt;
*The sound volume will be at a maximum for a camera position at or less than the value of the &#039;&#039;near&#039;&#039; parameter and will reduce with distance until the hearing position reaches &#039;&#039;far&#039;&#039;, when the sound will be inaudible.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RemoveDriverCharacter==&lt;br /&gt;
{{MethodHeader|public native void RemoveDriverCharacter(DriverCharacter driver)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;driver&#039;&#039;&#039; = DriverCharacter to remove.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.RemoveDriverCharacter(dave);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==RemoveDriverCommand==&lt;br /&gt;
{{MethodHeader|public native void RemoveDriverCommand(DriverCommand command)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;command&#039;&#039;&#039; = DriverCommand to remove.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.RemoveDriverCommand(driverCommand);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetBadWeatherFog==&lt;br /&gt;
{{MethodHeader|public native void SetBadWeatherFog(float distance)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;distance&#039;&#039;&#039; = Bad weather fog distance to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetBadWeatherFog(0.5);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetCamera==&lt;br /&gt;
{{MethodHeader|public native bool SetCamera(MapObject focus)&amp;lt;br&amp;gt;public native void SetCamera(Junction focus)&amp;lt;br&amp;gt;public native void SetCamera(Vehicle focus, int cameraMode)&amp;lt;br&amp;gt;public native void SetCamera(Train focus, int cameraMode)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;focus&#039;&#039;&#039; = Object on which the camera is to be focused.&lt;br /&gt;
*&#039;&#039;cameraMode&#039;&#039;&#039; = One of the [[#Camera_View_Modes|Camera View Mode]] constants defining the view which should be assigned to the camera.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The first variant returns a boolean to indicate success or failure.&lt;br /&gt;
*Remaining variants do not return a value&lt;br /&gt;
&#039;Syntax&lt;br /&gt;
 World.SetCamera(train.GetVehicles[0],World.CAMERA_TRACKING); // sets the camera to track the first vehicle in the train.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetCameraAngle==&lt;br /&gt;
{{MethodHeader|public void SetCameraAngle(int yaw, int pitch, float radius)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;yaw&#039;&#039;&#039; = Camera rotation in degrees, 90 is a direct front view.&lt;br /&gt;
*&#039;&#039;&#039;pitch&#039;&#039;&#039; = Camera angle relative to the horizon, 0 is horizontal, 90 points vertically upwards.&lt;br /&gt;
*&#039;&#039;&#039;radius&#039;&#039;&#039; = Distance in metres to the object in focus.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetCameraAngle(90,0,25); // Sets the camera to a direct frontal view at 25 metres from the currently focused object.&lt;br /&gt;
;Notes&lt;br /&gt;
*&#039;&#039;Radius&#039;&#039; is measured from the object origin point (0,0,0).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetCameraFlags==&lt;br /&gt;
{{MethodHeader|public native void SetCameraFlags(int flags)}}&lt;br /&gt;
;Parameter&lt;br /&gt;
*&#039;&#039;&#039;flags&#039;&#039;&#039;  integer value defining what the user is permitted to do with the game camera.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 // User is permitted to select External or Tracking views only.&lt;br /&gt;
    World.SetCameraFlags(World.CAMERA_EXTERNAL | World.CAMERA_TRACKING);&lt;br /&gt;
;Notes&lt;br /&gt;
*Use any combination of [[#Camera_Flags|Camera Flags]] and [[#Camera_View_Modes|Camera View Modes]] to set the parameter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetCameraMode==&lt;br /&gt;
{{MethodHeader|public void SetCameraMode(int mode)}}&lt;br /&gt;
;Parameter&lt;br /&gt;
*&#039;&#039;&#039;mode&#039;&#039;&#039; = Camera mode to select.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetCameraMode(World.CAMERA_TRACKING);&lt;br /&gt;
;Notes&lt;br /&gt;
*Use one of the [[#Camera_View_Modes|Camera View Modes]] to set the parameter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetGameTime==&lt;br /&gt;
{{MethodHeader|public void SetGameTime(float time)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;time&#039;&#039;&#039; = new gane time to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetGameTime(0.5);  // sets time to midnight&lt;br /&gt;
;Notes&lt;br /&gt;
*Game time is normalised to a value between 0.0 and 1.0&lt;br /&gt;
*0.0 = midday.&lt;br /&gt;
*0.5 = midnight&lt;br /&gt;
*Use the [[#Time_Values|Time Value]] constants to convert human readable times to normalised values. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetGameTimeRate==&lt;br /&gt;
{{MethodHeader|public native void SetGameTimeRate(float rate)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;rate&#039;&#039;&#039; = New time rate to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetGameTimeRate(World.TIME_RATE_8X); // sets game time to advance by 8 minutes per minute of real world time.&lt;br /&gt;
;Notes&lt;br /&gt;
*Use one of the [[#Time_Rate_Constants|Time Rate Constants]] to define the parameter.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetGoodWeatherFog==&lt;br /&gt;
{{MethodHeader|public native void SetGoodWeatherFog(float distance)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;distance&#039;&#039;&#039; = Good weather fog distance to set.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetGoodWeatherFog(0.5);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetGroundDrawDistance==&lt;br /&gt;
{{MethodHeader|public native void SetGroundDrawDistance(float distance)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;distance&#039;&#039;&#039; = Ground draw distance in metres.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetGroundDrawDistance(1000.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Compatibility warning: Use of this function is not recommended, it may become non-functional in future Trainz versions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetSceneryDrawDistance==&lt;br /&gt;
{{MethodHeader|public native void SetSceneryDrawDistance(float distance)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;distance&#039;&#039;&#039; = Scenery draw distance in metres.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetSceneryDrawDistance(1000.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Compatibility warning: Use of this function is not recommended, it may become non-functional in future Trainz versions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetTargetObserver==&lt;br /&gt;
{{MethodHeader|public void SetTargetObserver(GameObject observer)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;observer&#039;&#039;&#039; = ?&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 ?&lt;br /&gt;
;Notes&lt;br /&gt;
*&amp;lt;font color=red&amp;gt;One of the great unsolved mysteries of Trainz&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==SetWeather==&lt;br /&gt;
{{MethodHeader|public native void SetWeather(int type, int changeability)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;type&#039;&#039;&#039; = Weather conditions as defined by one of the [[#Weather_Type_Constants|Weather Type Constants]].&lt;br /&gt;
*&#039;&#039;&#039;change&#039;&#039;&#039; = Weather variation as defined by one of the [[#Weather_Changeability_Constants|Weather Changeability Constants]].&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.SetWeather(World.WEATHER_TYPE_HEAVY_SNOW,World.WEATHER_CHANGEABILITY_EXTREME); // April in Paris.&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UserSetCamera==&lt;br /&gt;
{{MethodHeader|public native bool UserSetCamera(GameObject target)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;target&#039;&#039;&#039; = GameObject to set focus to.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if successful, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.UserSetCamera(Router,GetGameObject(&amp;quot;Junction 5&amp;quot;));&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==UserSetCameraMode==&lt;br /&gt;
{{MethodHeader|public native void UserSetCameraMode(int mode)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;mode&#039;&#039;&#039; = One of the [[#Camera_View_Modes|Camera View Modes]]&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 World.UserSetCameraMode(World.CAMERA_ROAMING);  // switches to roaming view if permitted.&lt;br /&gt;
;Notes&lt;br /&gt;
*This method respects the current [[#Camera_Flags|Camera Flag]] settings, disallowing any change which the flags do not permit.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Smoke%22_container&amp;diff=1723</id>
		<title>&quot;Smoke&quot; container</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Smoke%22_container&amp;diff=1723"/>
		<updated>2010-11-23T04:17:01Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* Supported Tags */ Changed inheritVelocity to inherit-Velocity as per NarrowGauge&amp;#039;s post at http://forums.auran.com/trainz/showpost.php?p=696047&amp;amp;postcount=21&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A smoke container is effectively a PFX (particle effects) emitter that defines smoke and similar effects produced by assets. Smoke tags take the form smokeX where X is a number. There is no maximum number of smoke tags but they must be numbered sequentially (i.e. smoke0,smoke1,smoke2,etc). Smoke blocks have two sections: main and sequence properties. Main properties describe the attributes that stay the same for the life of the emitter. Sequence properties describe a set of one or more phases/periods in the smoke emission sequence.&lt;br /&gt;
&lt;br /&gt;
==Supported Tags==&lt;br /&gt;
Each smoke container supports the following tags. Each tag is shown here with its default value. &lt;br /&gt;
&lt;br /&gt;
  texture               KUID&amp;lt;-1:6329&amp;gt;&lt;br /&gt;
  file                  &amp;quot;&amp;quot;&lt;br /&gt;
  attachment            &amp;quot;&amp;quot;&lt;br /&gt;
  mode                  &amp;quot;time&amp;quot;&lt;br /&gt;
  accel                 0,0,0&lt;br /&gt;
  conesize              0.2,0.2,1&lt;br /&gt;
  direction             0,0,1&lt;br /&gt;
  enable-steam-physics  0&lt;br /&gt;
  enabled               1&lt;br /&gt;
  faces                 &amp;quot;camera&amp;quot;&lt;br /&gt;
  inherit-Velocity       0&lt;br /&gt;
  loop                  -1&lt;br /&gt;
  loopdelay             0&lt;br /&gt;
  loop-amount           0&lt;br /&gt;
  minrate               0&lt;br /&gt;
  maxrate               20&lt;br /&gt;
  maxspeedkph           0&lt;br /&gt;
  start                 0&lt;br /&gt;
  period                -1&lt;br /&gt;
  color                 255,255,255,255&lt;br /&gt;
  endcolor              255,255,255,255&lt;br /&gt;
  rate                  4&lt;br /&gt;
  velocity              1&lt;br /&gt;
  lifetime              3&lt;br /&gt;
  minsize               0&lt;br /&gt;
  maxsize               3&lt;br /&gt;
  mass                  1&lt;br /&gt;
  mass-scale            .5&lt;br /&gt;
  drag                  .36&lt;br /&gt;
  spring                .17&lt;br /&gt;
  dampening             .02&lt;br /&gt;
  physics-delay         0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Main Properties====&lt;br /&gt;
====texture====&lt;br /&gt;
:Type: KUID&lt;br /&gt;
:Desc: Sets the kuid of the texture to use for the particles, defaults to KUID&amp;lt;-1:6329&amp;gt; (Steam).&lt;br /&gt;
====file====&lt;br /&gt;
:Type: String (filename)&lt;br /&gt;
:Desc: Specifies that the particle emitter settings should be read in from a file generated by the Twinkles PFX tool.&lt;br /&gt;
====attachment====&lt;br /&gt;
:Type: String&lt;br /&gt;
:Desc: The name of the attachment point at which to generate the PFX. Attachment points are specified in the mesh file during creation.&lt;br /&gt;
====mode====&lt;br /&gt;
:Type: String&lt;br /&gt;
:Desc: The PFX emitter mode. Smoke effects can contain a number of cycled &#039;phases&#039;, the mode defines how the &#039;start&#039; and &#039;period&#039; tags are interpreted to control the progression between each smoke phase. Mode must be one of the following values (defaults to &amp;quot;time&amp;quot; if not specified).&lt;br /&gt;
:*&#039;&#039;&#039;time&#039;&#039;&#039; - &#039;start&#039; is a list of time values (in seconds) after the creation of the parent object when the next phase of the effect will start, &#039;period&#039; is the duration of time the phase will remain active.&lt;br /&gt;
:*&#039;&#039;&#039;timeofday&#039;&#039;&#039; - &#039;start&#039; is the time of day to start the next phase. The time of day is specified as a decimal from 0 to 1, where 0 is 0:00.00 AM and 1 is 12:59.59 PM.&lt;br /&gt;
:*&#039;&#039;&#039;anim&#039;&#039;&#039; - &#039;start&#039; specifies a time in the assets animation cycle to start the next phase. &#039;period&#039; is the time over which the phase is active. The time in the anim cycle is specified as a decimal between 0 and 1. &#039;start&#039; + &#039;period&#039; must not exceed 1.&lt;br /&gt;
:*&#039;&#039;&#039;anim2&#039;&#039;&#039; - Same as &#039;anim&#039; with some additional tags (interpolate, loop, loopdelay)&lt;br /&gt;
:*&#039;&#039;&#039;speed&#039;&#039;&#039; - &#039;start&#039; is a speed, in meters per second, to start the next phase. &#039;period&#039; is not used.&lt;br /&gt;
:Only the &#039;time&#039; and &#039;timeofday&#039; modes are valid for scenery objects, other modes are intended for use with assets such as locomotives.&lt;br /&gt;
====accel====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Sets the acceleration conditions for the smoke particles. First value is gravity, second is (optional) wind effect. Default is 0,0. A third (deprecated) form exists with three parameters - this uses the first two values to calculate the wind effect and the third as gravity.&lt;br /&gt;
&lt;br /&gt;
====conesize====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Specifies the cone in which the particles are emitted. When a particle is created it will be given an initial velocity vector with its direction being a random vector in this cone and its speed being taken from the &#039;velocity&#039; tag. The cone tag is a decimal list of 1, 2 or 3 values (in meters). The first two values specify the width and depth (x and y) of the cone, and the third value specifies it&#039;s height. If the height isn&#039;t provided a value of 1 will be used, if only one value is provided it will be used for both the width and height. The default value if the tag isn&#039;t provided at all is (0.2,0.2,1.0).&lt;br /&gt;
====direction====&lt;br /&gt;
:Type: 3D Vector (x,y,z)&lt;br /&gt;
:Desc: Sets the direction the particle emitter is facing. The direction will default to (0,0,1) if not supplied (straight up).&lt;br /&gt;
====enable-steam-physics====&lt;br /&gt;
:Type: Boolean&lt;br /&gt;
:Desc: Enables some of the more advanced smoke/steam related particle physics (drag, spring &amp;amp; dampening).&lt;br /&gt;
====enabled====&lt;br /&gt;
:Type: Boolean&lt;br /&gt;
:Desc: Sets whether the particle emitter is enabled.&lt;br /&gt;
====faces====&lt;br /&gt;
:Type: String&lt;br /&gt;
:Desc: Sets the direction the particle faces. Can be one of the following values:&lt;br /&gt;
:*&#039;&#039;&#039;camera&#039;&#039;&#039; - The particles are drawn so that they always face the camera (Default)&lt;br /&gt;
:*&#039;&#039;&#039;motion&#039;&#039;&#039; - The particles are drawn so that they face the direction they are travelling.&lt;br /&gt;
:*&#039;&#039;&#039;down&#039;&#039;&#039; - The particles are drawn facing down.&lt;br /&gt;
====inherit-Velocity====&lt;br /&gt;
:Type: Boolean&lt;br /&gt;
:Desc: Causes particles to inherit the velocity of the emitter, default is off.&lt;br /&gt;
====loop====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Sets the time, in seconds, after which to loop the smoke sequence. Valid only for modes &#039;time&#039; and &#039;anim2&#039;. Can be set to -1 to imply that it loops after the length of the sequence, this is the default behaviour.&lt;br /&gt;
====loopdelay====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Specifies the delay, in seconds, until the sequence loops again.&lt;br /&gt;
====loop-amount====&lt;br /&gt;
:Type: Integer&lt;br /&gt;
:Desc: Sets the number of times the sequence should loop.&lt;br /&gt;
====minrate====&lt;br /&gt;
:Type: Integer&lt;br /&gt;
:Desc: Sets the minimum particle emission rate for the entire sequence. Defaults to 0.&lt;br /&gt;
====maxrate====&lt;br /&gt;
:Type: Integer&lt;br /&gt;
:Desc: Sets the maximum particle emission rate for the entire sequence. Defaults to 20.&lt;br /&gt;
====maxspeedkph====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: For cone emitters, this will set the maximum speed of the particles, in kph.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Sequence Properties====&lt;br /&gt;
Per-phase tags are specified as value lists. If a list is added it should specify a value for each phase.&lt;br /&gt;
====start====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Specifies when to start this phase, &#039;start&#039; behaves differently depending on &#039;mode&#039; (see mode for details). Start will default to 0.&lt;br /&gt;
====period====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Specifies the duration of this phase, &#039;period&#039; behaves differently depending on &#039;mode&#039; and is not always used (see mode for details). Period can be set to -1 to imply that the phase is active until the next phase begins, this is the default behaviour.&lt;br /&gt;
====color====&lt;br /&gt;
:Type: Color List (RGBA, 0 to 255)&lt;br /&gt;
:Desc: Specifies the initial color of the PFX texture for each phase. Color will default to white (255,255,255,255).&lt;br /&gt;
====endcolor====&lt;br /&gt;
:Type: Color List (RGBA, 0 to 255)&lt;br /&gt;
:Desc: Specifies the ending color of the PFX texture for each phase. Color will default to white (255,255,255,255).&lt;br /&gt;
====rate====&lt;br /&gt;
:Type: Integer List&lt;br /&gt;
:Desc: Specifies the rate of particle emission in each phase. For most modes this is set to the number of particles to emit per second, for &#039;anim&#039; and &#039;anim2&#039; however this is the number of particles to emit over the animation period. The default rate is 4. See also &#039;minrate&#039; and &#039;maxrate&#039;.&lt;br /&gt;
====velocity====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Specifies the initial speed of the emitted particles for this phase. Speed is specified in meters per second, the default value is 1m/s.&lt;br /&gt;
====lifetime====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Specifies the time, in seconds, that the particles exist for in this phase (defaults to 3).&lt;br /&gt;
====minsize====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Specifies the starting size of the particles created in this phase (scaling value where 1 is 100%, default is 0).&lt;br /&gt;
====maxsize====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Specifies the ending size of the particles created in this phase (scaling value where 1 is 100%, default is 3).&lt;br /&gt;
====mass====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: The initial mass, in kilograms, of the particles created in this phase. Defaults to 1.&lt;br /&gt;
====mass-scale====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: The percentage of mass lost over the particles life time for this phase. This allows particles to become lighter as they disipate into the air. The value is specified as a percentage where 1 is 100% and will default to 0.5 (50%).&lt;br /&gt;
====drag====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: The drag constant for the particle created in this phase. This specifes the resistance against the particles ability to move freely through the air. If not specified the drag constant will default to 0.36, increasing the value will cause particles to be more strongly affected by wind. Requires the &#039;enable-steam-physics&#039; tag.&lt;br /&gt;
====spring====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: The spring constant for particles created in this phase. The spring constant specifies how the strong the link is between individual particles. By default the spring constant is 0.17 if not specified, increasing the value will cause the particles to be more rigidly linked to each others movement. Requires the &#039;enable-steam-physics&#039; tag.&lt;br /&gt;
====dampening====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: The spring damping constant for particles created in this phase. The spring damping constant affects the &#039;stability&#039; of the link between individual particles (see &#039;spring&#039;). Requires the &#039;enable-steam-physics&#039; tag. Defaults to 0.02.&lt;br /&gt;
====physics-delay====&lt;br /&gt;
:Type: Decimal List&lt;br /&gt;
:Desc: Delay, in seconds, before particles are affected by world physics. 0 by default.&lt;br /&gt;
&lt;br /&gt;
==Example Config.txt==&lt;br /&gt;
Sample [[config.txt file]] for a scenery asset that produces smoke:&lt;br /&gt;
&lt;br /&gt;
  region Britain&lt;br /&gt;
  kind scenery&lt;br /&gt;
  type Industrial&lt;br /&gt;
  light 1&lt;br /&gt;
  smoke0&lt;br /&gt;
  {&lt;br /&gt;
    attachment a.smoke&lt;br /&gt;
    mode timeofday&lt;br /&gt;
    color 150,150,150,250&lt;br /&gt;
    accel 1,0.3,0&lt;br /&gt;
    start 0.25, 0.5&lt;br /&gt;
    period 0.25, 0.125&lt;br /&gt;
    rate 8&lt;br /&gt;
    velocity 3&lt;br /&gt;
    lifetime 5&lt;br /&gt;
    minsize 0.5&lt;br /&gt;
    maxsize 2&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Sample [[config.txt file]] for a steam train with four smoke emitters.&lt;br /&gt;
*Dark smoke from the main chimney stack that is dependent on the trains velocity (a.smoke, Y axis pointing up),&lt;br /&gt;
*A constant steam trail from a small safety pipe on top (a.steam.safety, Y axis pointing up),&lt;br /&gt;
*2 steam trails on each side of the train that alternately expel steam keyed to the animation of the trains wheels (a.steam.l, a.steam.r, Y axis pointing outwards).&lt;br /&gt;
&lt;br /&gt;
  kind traincar&lt;br /&gt;
  bogey 0&lt;br /&gt;
  engine 1&lt;br /&gt;
  name Steam Train&lt;br /&gt;
  mass 100000&lt;br /&gt;
  enginespec &amp;lt;KUID:0:0&amp;gt;&lt;br /&gt;
  enginesound &amp;lt;KUID:0:0&amp;gt;&lt;br /&gt;
  hornsound &amp;lt;KUID:0:0&amp;gt;&lt;br /&gt;
  interior &amp;lt;KUID:0:0&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  smoke0&lt;br /&gt;
  {&lt;br /&gt;
    attachment a.steam.l&lt;br /&gt;
    mode anim&lt;br /&gt;
    color 255,255,255,150&lt;br /&gt;
    start 0&lt;br /&gt;
    period 0.4&lt;br /&gt;
    rate 2&lt;br /&gt;
    velocity 1&lt;br /&gt;
    lifetime 2&lt;br /&gt;
    minsize 0.05&lt;br /&gt;
    maxsize 1&lt;br /&gt;
  }&lt;br /&gt;
  smoke1&lt;br /&gt;
  {&lt;br /&gt;
    attachment a.steam.r&lt;br /&gt;
    mode anim&lt;br /&gt;
    color 255,255,255,150&lt;br /&gt;
    start 0.5&lt;br /&gt;
    period 0.4&lt;br /&gt;
    rate 2&lt;br /&gt;
    velocity 1&lt;br /&gt;
    lifetime 2&lt;br /&gt;
    minsize 0.05&lt;br /&gt;
    maxsize 1&lt;br /&gt;
  }&lt;br /&gt;
  smoke2&lt;br /&gt;
  {&lt;br /&gt;
    attachment a.steam.safety&lt;br /&gt;
    mode time&lt;br /&gt;
    color 255,255,255,150&lt;br /&gt;
    rate 2&lt;br /&gt;
    velocity 1&lt;br /&gt;
    lifetime 2&lt;br /&gt;
    minsize 0.05&lt;br /&gt;
    maxsize 1&lt;br /&gt;
  }&lt;br /&gt;
  smoke3&lt;br /&gt;
  {&lt;br /&gt;
    attachment a.smoke0&lt;br /&gt;
    mode speed&lt;br /&gt;
    color 100,100,100,200&lt;br /&gt;
    start 0,10,20,30&lt;br /&gt;
    rate 3,5,7,9&lt;br /&gt;
    velocity 3,4,5,5&lt;br /&gt;
    lifetime 4,3,2.5,2&lt;br /&gt;
    minsize 0.3&lt;br /&gt;
    maxsize 2&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Config Container]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=User:Pencil42&amp;diff=1540</id>
		<title>User:Pencil42</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=User:Pencil42&amp;diff=1540"/>
		<updated>2010-10-17T13:51:50Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: Proprietor of Carson Car Shops[http://carsoncarshops.com]; specializing in creating Old West content in general, and content for the Virginia &amp;amp; Truckee Railroad in specific.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Proprietor of Carson Car Shops[http://carsoncarshops.com]; specializing in creating Old West content in general, and content for the Virginia &amp;amp; Truckee Railroad in specific.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Index_of_Tags_%26_Containers&amp;diff=1488</id>
		<title>Index of Tags &amp; Containers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Index_of_Tags_%26_Containers&amp;diff=1488"/>
		<updated>2010-09-24T15:58:37Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background-color:#ffffcc;&amp;quot;&lt;br /&gt;
|width=15%|Tag or Container&lt;br /&gt;
|width=15%|Data Type&lt;br /&gt;
|width=15%|Parent&lt;br /&gt;
|width=15%|Applies to&lt;br /&gt;
|width=40%|Description&lt;br /&gt;
|-&lt;br /&gt;
|accel&lt;br /&gt;
|float,float&lt;br /&gt;
|smoke {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Acceleration. First number is Gravity effect, second is wind effect. Default is 0,0.&lt;br /&gt;
|-&lt;br /&gt;
|adhesion&lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|air-drag-coefficient &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|alias&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Kuid of the asset to be referenced as a basis for the new asset. For example TRS Traincars can reference archived locomotive mesh assets for use with custom textures. This process is done by aliasing the KUID of the archived traincars.&lt;br /&gt;
|-&lt;br /&gt;
|alias&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|the kuid of the paintshed template the paintshed reskin is based on&lt;br /&gt;
|-&lt;br /&gt;
|allowed-categories {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The allowed product categories in this queue.&lt;br /&gt;
|-&lt;br /&gt;
|allowed-products {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The allowed products in this queue.&lt;br /&gt;
|-&lt;br /&gt;
|allows-mixing&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|Products with this tag may be combined in a single queue along with other products of the same category. Eg. Lumber and 20ft Container on a flatcar. By default, allows-mixing is set to 0. Therefore by default, a queue will only allow one product-category at a time. To look at allows-mixing from another angle, liquid products should never have allows-mixing enabled. Otherwise you have the potential to mix petrol with oil within the same tanker.&lt;br /&gt;
|-&lt;br /&gt;
|altitude&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|altitude of this region&lt;br /&gt;
|-&lt;br /&gt;
|ambient&lt;br /&gt;
|boolean&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|0 or 1, default 0 is off. Ambient sounds have no 3D “position” and may be stereo. Non-ambient (positional) sounds are positioned on the object and must be mono - see attachment above&lt;br /&gt;
|-&lt;br /&gt;
|amount&lt;br /&gt;
|float&lt;br /&gt;
|inputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Amount required as input.&lt;br /&gt;
|-&lt;br /&gt;
|amount&lt;br /&gt;
|float&lt;br /&gt;
|outputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Amount to output.&lt;br /&gt;
|-&lt;br /&gt;
|angle&lt;br /&gt;
|float list degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|Specifies the angles at which the turntable stops. Not used if the turntable is set up as animation.&lt;br /&gt;
|-&lt;br /&gt;
|angles&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Rotational boundaries in radians relative to its attachment point.&lt;br /&gt;
|-&lt;br /&gt;
|anim&lt;br /&gt;
|[path/]filename.kin&lt;br /&gt;
|config.txt&lt;br /&gt;
|pantograph&lt;br /&gt;
|The “anim.kin” animation file for the pantograph&lt;br /&gt;
|-&lt;br /&gt;
|anim&lt;br /&gt;
|[path/]filename.kin&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|animation effect&lt;br /&gt;
|Reference to the animation file (.kin)&lt;br /&gt;
|-&lt;br /&gt;
|anim&lt;br /&gt;
|[path/]filename.kin&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The animation file (.kin) exported from 3dsmax.&lt;br /&gt;
|-&lt;br /&gt;
|animated-mesh&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Animated mesh which changes as the queue becomes full.&lt;br /&gt;
|-&lt;br /&gt;
|animation-loop-speed&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|This tag must be here if the asset is to animate when placed. If this tag is not here when placed the animation will not play by default, but may play if controlled by script. A different value (e.g. 0.5, 2.0) may be used in the tag to play the animation at a different speed from that created in 3dsmax.&lt;br /&gt;
|-&lt;br /&gt;
|animdist&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|bogey&lt;br /&gt;
|Leave this tag out if the bogey is not animated. The distance traveled in meters by the bogeys in 1 second (30 frames) of animation. Bogey animations (exported from 3ds Max) are called “anim.kin”.&lt;br /&gt;
|-&lt;br /&gt;
|asset-filename&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Obsolete&lt;br /&gt;
|-&lt;br /&gt;
|att&lt;br /&gt;
|helper&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Attachment point (stored in the mesh file)&lt;br /&gt;
|-&lt;br /&gt;
|att&lt;br /&gt;
|helper&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|The effect insertion point. The attachment point must be orientated correctly in 3dsmax.&lt;br /&gt;
|-&lt;br /&gt;
|att&lt;br /&gt;
|helper&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh (and animation if present) is inserted at a mesh attachment point rather than the origin (without this line the mesh is placed relative to the origin of the parent model).&lt;br /&gt;
|-&lt;br /&gt;
|attached-track {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Auto-generated spline track. Generated through attachment points located within the default mesh. Attached-tracks update automatically to the spline track connected to it. You may over-ride this auto-update feature by adding useadjoiningtracktype 0 Note. Correct track end attachment orientation is essential. The Y axis must point ‘out’ at the correct angle. The Z axis must point ‘up’.&lt;br /&gt;
|-&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|attached-track {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|attached-trigger {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|A Trigger is a point along an attached track with a specified radius. When a compatible rollingstock item enters this radius it triggers a set of commands,controlled through its script.&lt;br /&gt;
|-&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|attached-trigger {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|attachment&lt;br /&gt;
|helper&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The attachment point (stored in the mesh file) to place the smoke effect.&lt;br /&gt;
|-&lt;br /&gt;
|attachment&lt;br /&gt;
|helper&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Attachment point on the object to which the sound is attached. Default: The sound will attach to the origin of parent object (not used for ambient sound)&lt;br /&gt;
|-&lt;br /&gt;
|attachment-points {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|List of attachment points for this queue on which products are visualised. (Use this, OR animated-mesh)&lt;br /&gt;
|-&lt;br /&gt;
|att-parent&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The tag tells Trainz in which mesh the attachment point is located. The insertion attachment point is located within the mesh ‘name’ , as listed in the config.txt.&lt;br /&gt;
|-&lt;br /&gt;
|author&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Author, contact-email and contact-website are useful information, particularly if a user has a question on your models or would like to offer help or suggestions.&lt;br /&gt;
|-&lt;br /&gt;
|autobrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|autobrakecylinder_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|autobrakecylindervent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auto-create&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The model is generated automatically when placed, or when you load a map which includes the model. In some instances you don’t want the mesh visible (as this may be controlled through script). If auto-create is 0 the mesh will not be visible when placed.&lt;br /&gt;
|-&lt;br /&gt;
|autoname&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|When enabled, automatically assigns a unique name to this object as it is placed.&lt;br /&gt;
|-&lt;br /&gt;
|autopilotmode&lt;br /&gt;
|boolean&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|AI driver setting. (off, on)&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_autobrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_no3&lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoir_trainbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|auxreservoirvent&lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|axle-count &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|backdrop&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Specifies whether the object is treated as a backdrop or not. (stays visible even when far from the camera)&lt;br /&gt;
|-&lt;br /&gt;
|bendy&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Switches how track is bent on corners, set as 1 allows the mesh to be deformed as the spline is bend around corners.&lt;br /&gt;
|-&lt;br /&gt;
|bogey&lt;br /&gt;
|kuid&lt;br /&gt;
|bogeys-ID {&lt;br /&gt;
|traincar&lt;br /&gt;
|Kuid of bogey asset.&lt;br /&gt;
|-&lt;br /&gt;
|bogey&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The bogey KUID number (default for a.bog0 and a.bog1)&lt;br /&gt;
|-&lt;br /&gt;
|bogey&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The bogey to which this sound will apply.&lt;br /&gt;
|-&lt;br /&gt;
|bogey-#&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The bogey KUID number for a.bog# (Used only if different to a.bog0)&lt;br /&gt;
|-&lt;br /&gt;
|bogey-#-r&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Used instead of ‘bogey’ and bogey-1. The bogey will have reversed orientation. Note: This will cause bogey animation to play in reverse unless the attachment point for the bogey is also rotated 180 degrees in 3dmax.&lt;br /&gt;
|-&lt;br /&gt;
|bogey-r&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Used instead of ‘bogey’ and bogey-1. The bogey will have reversed orientation. Note: This will cause bogey animation to play in reverse unless the attachment point for the bogey is also rotated 180 degrees in 3dmax.&lt;br /&gt;
|-&lt;br /&gt;
|bogeys {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The bogey container stores the bogeys used for the loco\rollingstock item.&lt;br /&gt;
|-&lt;br /&gt;
|bogeys-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|bogeys {&lt;br /&gt;
|traincar&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|boiler-to-piston-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|boiler-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|brakefull &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|brakeinitial &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|brakepipe &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|brakeratio &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|bridgetrack&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Kuid of the track type to be used.&lt;br /&gt;
|-&lt;br /&gt;
|buffer-speed&lt;br /&gt;
|float metres/second&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Used for buffers; specifies the maximum speed up to which the buffer will stop a train.&lt;br /&gt;
|-&lt;br /&gt;
|burn-rate&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|burn-rate-idle&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|cabinsway&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Cabin sway multiplier. Eg -2.&lt;br /&gt;
|-&lt;br /&gt;
|camera#&lt;br /&gt;
|float list&lt;br /&gt;
|cameralist {&lt;br /&gt;
|interior&lt;br /&gt;
|A camera contains 5 numeric coordinates that determine the placement and orientation of the camera. These are: 0,0,0,0,0 =left/right, front/back, up/down, yaw, pitch To determine these variables add -freeintcam to the trainzoptions.txt. Pan around the interior using arrow keys and mouse. Co-ordinates are displayed at bottom-left of screen. industry asset’s script file.&lt;br /&gt;
|-&lt;br /&gt;
|cameradefault&lt;br /&gt;
|integer&lt;br /&gt;
|config.txt&lt;br /&gt;
|interior&lt;br /&gt;
|The in-cab camera view Trainz defaults to when entering the cab.&lt;br /&gt;
|-&lt;br /&gt;
|cameralist {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|interior&lt;br /&gt;
|List of camera viewpoints&lt;br /&gt;
|-&lt;br /&gt;
|car#&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Each of these tags stores the kuid of a car to be used on the roads.&lt;br /&gt;
|-&lt;br /&gt;
|car#&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|Each of these tags stores the kuid of a car to be used on the roads.&lt;br /&gt;
|-&lt;br /&gt;
|carrate&lt;br /&gt;
|float seconds&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Defines traffic density on road (minimum seconds between each car generated). 0 = No traffic. Number must be greater than 3.&lt;br /&gt;
|-&lt;br /&gt;
|casts_shadows&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Toggles whether the shadow model is displayed.&lt;br /&gt;
|-&lt;br /&gt;
|category-class&lt;br /&gt;
|class code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The class code for this asset.&lt;br /&gt;
|-&lt;br /&gt;
|category-era&lt;br /&gt;
|era code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Era code list.&lt;br /&gt;
|-&lt;br /&gt;
|category-era-#&lt;br /&gt;
|era list&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Era code.&lt;br /&gt;
|-&lt;br /&gt;
|category-keywords&lt;br /&gt;
|keyword list&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Keyword list&lt;br /&gt;
|-&lt;br /&gt;
|category-region&lt;br /&gt;
|region list&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|A list of REGION codes or REGION GROUP codes,&lt;br /&gt;
|-&lt;br /&gt;
|category-region-#&lt;br /&gt;
|region code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|A REGION codes or REGION GROUP code.&lt;br /&gt;
|-&lt;br /&gt;
|changeability&lt;br /&gt;
|0/1/2&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Propensity for weather to change. (none, periodic, extreme)&lt;br /&gt;
|-&lt;br /&gt;
|chunky_info&lt;br /&gt;
|float list&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|These values (in metres) define the shape of the mesh created for the track.&lt;br /&gt;
|-&lt;br /&gt;
|chunky_mesh&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of texture to apply to rail. The texture must be within a directory of the same name (ie. “textureName\textureName.texture.txt”). The chunky_mesh value will simply be the name of this directory (ie. “textureName”).&lt;br /&gt;
|-&lt;br /&gt;
|class&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|This refers to the class of asset within the script file (the class must match that stated in the script).&lt;br /&gt;
|-&lt;br /&gt;
|clutter-mesh&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|groundtexture&lt;br /&gt;
|Ground textures can now reference a mesh and insert the mesh automatically as the ground is painted. Painting over a clutter-mesh ground texture effectively deletes clutter meshes and texture. The mesh it refers to is can be standard scenery object kind mesh. Clutter-meshes must have only one Max material assigned to it only. Polycounts must be very low.&lt;br /&gt;
|-&lt;br /&gt;
|collate-meshes&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Enables clutter-mesh support (eg. fast trees)&lt;br /&gt;
|-&lt;br /&gt;
|collision-parent&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|For collision-proxy meshes in an interior mesh-table, this specifies the parent object to be proxied. is 3.&lt;br /&gt;
|-&lt;br /&gt;
|color&lt;br /&gt;
|rgb value&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The R,G,B colour value of the effect.&lt;br /&gt;
|-&lt;br /&gt;
|company&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The Locomotive or car owner&lt;br /&gt;
|-&lt;br /&gt;
|compressor &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|compressor &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|conesize&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|conflicts-with queues {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|This queue and the conflicting queue(s) cannot be used simultaneously.&lt;br /&gt;
|-&lt;br /&gt;
|consists {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|The consists tag stores information on consists that can be generated by the industry.&lt;br /&gt;
|-&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|consists {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|contact-email&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Author, contact-email and contact-website are useful information, particularly if a user has a question on your models or would like to offer help or suggestions.&lt;br /&gt;
|-&lt;br /&gt;
|contact-website&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Author, contact-email and contact-website are useful information, particularly if a user has a question on your models or would like to offer help or suggestions.&lt;br /&gt;
|-&lt;br /&gt;
|controlmethod&lt;br /&gt;
|0/1&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Driver control setting. (dcc, cabin)&lt;br /&gt;
|-&lt;br /&gt;
|coupling-mask&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Coupling mask that applies to the consist. 0 will block off all coupling activity while “1” will mean you can couple with a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|critical-animation&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|When enabled, this forces the animation to continue playing when off screen. Impacts performance when enabled.&lt;br /&gt;
|-&lt;br /&gt;
|custom-attachments&lt;br /&gt;
|?&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Not used.&lt;br /&gt;
|-&lt;br /&gt;
|decoupling-mask&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Coupling mask that applies to the consist. 0 will mean you can’t decouple vehicles in the train while 1 means you can decouple vehicles.&lt;br /&gt;
|-&lt;br /&gt;
|default {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Main mesh of the asset&lt;br /&gt;
|-&lt;br /&gt;
|defaultjunction&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|Default type of junction in this region.&lt;br /&gt;
|-&lt;br /&gt;
|default-mesh&lt;br /&gt;
|kuid&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|attachment effect&lt;br /&gt;
|The KUID of the attached mesh.&lt;br /&gt;
|-&lt;br /&gt;
|default-night {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|‘Main’ night window mesh on scenery and industry and traincar assets. Modeled to the same 3d space as the default mesh and is inserted at the default mesh origin. &lt;br /&gt;
|-&lt;br /&gt;
|default-night-forward {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The name for a submesh attached to a locomotive, to show a beam of light for example, in the direction of movement of the locomotive. Trainz recognises the name and turns on the correct mesh depending on the running direction.&lt;br /&gt;
|-&lt;br /&gt;
|default-night-reverse {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The name for a submesh attached to a locomotive, to show a beam of light for example, in the direction of movement of the locomotive. Trainz recognises the name and turns on the correct mesh depending on the running direction.&lt;br /&gt;
|-&lt;br /&gt;
|deraillevel&lt;br /&gt;
|0/1/2&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Derail setting. (none, arcade, realistic)&lt;br /&gt;
|-&lt;br /&gt;
|description&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Description of the asset.&lt;br /&gt;
|-&lt;br /&gt;
|description-##&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Translated description of the asset.&lt;br /&gt;
|-&lt;br /&gt;
|dighole&lt;br /&gt;
|float length, width&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Specifies the number of grid segments (length, width) to be removed from the surveyor grid to accommodate the turntable pit.&lt;br /&gt;
|-&lt;br /&gt;
|direct-drive&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|bogey&lt;br /&gt;
|When direct-drive is present, the bogey animation is linked to the steam piston and physics system. If this tag is not included the piston and steam sounds will not work!&lt;br /&gt;
|-&lt;br /&gt;
|direction&lt;br /&gt;
|vector&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The vector at which the smoke travels.&lt;br /&gt;
|-&lt;br /&gt;
|directional&lt;br /&gt;
|boolean&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|The default for coronas is to be aligned to the attachment point to face the NEGATIVE Z direction. This is especially useful for Traincars.&lt;br /&gt;
|-&lt;br /&gt;
|disable-extra-track-sounds&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Disables the “click-clack” tracksounds. (0, 1)&lt;br /&gt;
|-&lt;br /&gt;
|distance&lt;br /&gt;
|min, max metres&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|2 numbers (meters) 1st number is the distance at which the sound is played 100% 2nd number is the cut-off distance. Doesn’t affect the volume of the sound (Default: 50m, 150m)&lt;br /&gt;
|-&lt;br /&gt;
|ditch_color&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|RGB ditch light colour. Eg. 255,255,255.&lt;br /&gt;
|-&lt;br /&gt;
|divider&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of the model to use as the middle bridge section. Placed in subfolder with same name.&lt;br /&gt;
|-&lt;br /&gt;
|don’t-flip-terminator&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Terminator model isn’t mirrored on one side.&lt;br /&gt;
|-&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|activity&lt;br /&gt;
|Specify the settings of this scenario, similar to Driver’s settings screen&lt;br /&gt;
|-&lt;br /&gt;
|duration&lt;br /&gt;
|float&lt;br /&gt;
|process-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Length of time (in seconds) that the process runs for.&lt;br /&gt;
|-&lt;br /&gt;
|dynamic-brake {&lt;br /&gt;
|container&lt;br /&gt;
|?&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|effects {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|Optional mesh-table variations&lt;br /&gt;
|-&lt;br /&gt;
|effects {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Optional mesh-table variations&lt;br /&gt;
|-&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|effects {&lt;br /&gt;
|effects {&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|enabled&lt;br /&gt;
|boolean&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Specifies whether the effect is enabled.&lt;br /&gt;
|-&lt;br /&gt;
|endcolor&lt;br /&gt;
|rgb value&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The final colour the smoke effect shifts to.&lt;br /&gt;
|-&lt;br /&gt;
|endlength&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Length in meters of the initiator and terminator models.&lt;br /&gt;
|-&lt;br /&gt;
|engine&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|States type of traincar. 0 for Rolling stock, 1 for Locomotive.&lt;br /&gt;
|-&lt;br /&gt;
|enginesound&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the KUID number for the traincar’s sound.&lt;br /&gt;
|-&lt;br /&gt;
|enginespec&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the engine KUID number. This specifies the driver physics boundaries for the traincar.&lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe_autobrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|epreservoirpipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|equaliser &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|equaliser_mainreservoir &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|equaliser_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|equaliservent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|equaliserventemergency &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|equaliserventhandleoff &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|extensions {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|Asset specific data.&lt;br /&gt;
|-&lt;br /&gt;
|faces&lt;br /&gt;
|camera/motion/down&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The direction the smoke effect faces.&lt;br /&gt;
|-&lt;br /&gt;
|face-texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|drivercharacter&lt;br /&gt;
|This is the driver icon used in TRS. Must be 64x64 pixels&lt;br /&gt;
|-&lt;br /&gt;
|facing&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Indicates the direction of the vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|file&lt;br /&gt;
|[path/]filename.tfx&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The twinkle file to be used (optional).&lt;br /&gt;
|-&lt;br /&gt;
|firebox-efficiency&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|firebox-to-boiler-heat-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|firebox-to-boiler-heat-flow-idle&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|firebox-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|flowsize {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|fontcolor&lt;br /&gt;
|rgb value&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|The colour of the sign text in r.g.b.&lt;br /&gt;
|-&lt;br /&gt;
|fonts&lt;br /&gt;
|integer&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Indicates how many types of numbering fonts used.&lt;br /&gt;
|-&lt;br /&gt;
|fontsize&lt;br /&gt;
|float metres&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|The size of the sign text&lt;br /&gt;
|-&lt;br /&gt;
|fonts-path&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Replaces asset-filename usage for ‘fonts’.&lt;br /&gt;
|-&lt;br /&gt;
|frame-rate&lt;br /&gt;
|float frames/second&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|Generally make this 30 (frames per second)&lt;br /&gt;
|-&lt;br /&gt;
|frequency&lt;br /&gt;
|float per second&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|This variable specifies the frequency in Hz (or ‘flashes’ per second). e.g. 1 for once per second, 0.5 for once every 2 seconds, 2 for twice per second.&lt;br /&gt;
|-&lt;br /&gt;
|fuel&lt;br /&gt;
|?&lt;br /&gt;
|mass {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|fuel-energy&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|function&lt;br /&gt;
|&#039;TrackSignal&#039;&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Must be set to &#039;TrackSignal&#039;&lt;br /&gt;
|-&lt;br /&gt;
|grounded&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Height in meters for the road to be offset from terrain.&lt;br /&gt;
|-&lt;br /&gt;
|height&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Height from the track level to the base. Must be a negative value in order to raise the bridge above the ground.&lt;br /&gt;
|-&lt;br /&gt;
|height&lt;br /&gt;
|integer&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|all&lt;br /&gt;
|Image height&lt;br /&gt;
|-&lt;br /&gt;
|height&lt;br /&gt;
|negative metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Height from the track level to the base. Should be negative.&lt;br /&gt;
|-&lt;br /&gt;
|height-range&lt;br /&gt;
|min,max metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|height-range min, max eg: height-range –10, 100. Where min and max are values in meters.&lt;br /&gt;
|-&lt;br /&gt;
|hidden&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Prevents the spline from being rendered.&lt;br /&gt;
|-&lt;br /&gt;
|highspeedexhauster &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|highspeedexhauster_vacuumbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|hornsound&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the KUID number for the traincar horn sound.&lt;br /&gt;
|-&lt;br /&gt;
|icon0&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Window preview icon - see information box&lt;br /&gt;
|-&lt;br /&gt;
|icon1&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Window preview icon - see information box&lt;br /&gt;
|-&lt;br /&gt;
|icon2&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Window preview icon - see information box&lt;br /&gt;
|-&lt;br /&gt;
|icon3&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Window preview icon - see information box&lt;br /&gt;
|-&lt;br /&gt;
|icon-texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|The in-game representation of the product when specifying the load type for a compatible rollingstock item (driver) Should be a 64x64 TGA.&lt;br /&gt;
|-&lt;br /&gt;
|image&lt;br /&gt;
|[path/]filename&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|all&lt;br /&gt;
|Image filename&lt;br /&gt;
|-&lt;br /&gt;
|indbrakefull &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|independantbrakecylinder&lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|independantbrakecylinder_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|info-page&lt;br /&gt;
|[path/]filename.html&lt;br /&gt;
|config.txt&lt;br /&gt;
|profile&lt;br /&gt;
|Filename of the HTML information page for the session.&lt;br /&gt;
|-&lt;br /&gt;
|inherit-velocity&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|initial-boiler-temperature&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|initial-count&lt;br /&gt;
|integer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The initial number of items in the queue.&lt;br /&gt;
|-&lt;br /&gt;
|initiator&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of model to use at start of bridge, placed in subfolder with same name.&lt;br /&gt;
|-&lt;br /&gt;
|inputs {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|processID {&lt;br /&gt;
|industry&lt;br /&gt;
|Input process list&lt;br /&gt;
|-&lt;br /&gt;
|inputs-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|inputs {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|instance-type&lt;br /&gt;
|&#039;instance&#039;/&#039;resource&#039;&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|Instance-type: &#039;resource&#039; is used when there is no mesh, or one only mesh is referenced in the mesh table (Ie Liquids, Bulk loads etc). &#039;instance&#039; is used when more than one mesh is in the mesh table Ie: Passengers, General Goods. 200 max.‘size’ per Asset.&lt;br /&gt;
|-&lt;br /&gt;
|interior&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|References the KUID number for the traincar interior cab view.&lt;br /&gt;
|-&lt;br /&gt;
|interpolate&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|invisible&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Specifies whether the object is invisible.&lt;br /&gt;
|-&lt;br /&gt;
|isroad&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Isroad/Istrack. Two boolean tags detailing the behavior of the bridge. If the isroad is set to true, then cars are placed on the bridge. Both values should not be set to true.&lt;br /&gt;
|-&lt;br /&gt;
|istrack&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Isroad/Istrack. Two boolean tags detailing the behavior of the bridge. If the isroad is set to true, then cars are placed on the bridge. Both values should not be set to true.&lt;br /&gt;
|-&lt;br /&gt;
|istunnel&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Disables smoke effects for trains on track with this tag set.  Useful for tunnels, engine houses, snow sheds - anywhere you don&#039;t want smoke going through the roof of a structure.&lt;br /&gt;
|-&lt;br /&gt;
|junction-lever-mesh&lt;br /&gt;
|subcontainer&lt;br /&gt;
|junction-vertices-ID {&lt;br /&gt;
|fixed track&lt;br /&gt;
|The mesh (selected from the mesh table) to be used as a junction lever.&lt;br /&gt;
|-&lt;br /&gt;
|junction-vertex&lt;br /&gt;
|helper&lt;br /&gt;
|junction-vertices-ID {&lt;br /&gt;
|fixed track&lt;br /&gt;
|The attachment point (located in mesh file) at which to place the lever.&lt;br /&gt;
|-&lt;br /&gt;
|junction-vertices {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|fixed track&lt;br /&gt;
|The Junction-Vertices Container contains the tags needed to handle the lever portions of a fixed track.&lt;br /&gt;
|-&lt;br /&gt;
|junction-vertices-ID {&lt;br /&gt;
|container&lt;br /&gt;
|junction-vertices {&lt;br /&gt;
|fixed track&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|keyframes&lt;br /&gt;
|integer list&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|Specifies where on the animation the turntable is to stop.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;animation&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|This effect is used when a mesh has a variety of animations. Usually the animations will be controlled by a script related to the asset.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;attachment&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|In TRS we now have the ability to attach a mesh into another mesh by referencing it’s KUID through a meshtable.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;corona&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|A corona is a ‘glow’ light effect. It is a simple texture that is inserted at an attachment point within the mesh. Coronas can be added to any asset that uses a meshtable.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|interior object kind&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The type of interior object the particular mesh is. Affects the behavior of the mesh in game. Kinds: lever (Levers, switches, dials etc), animated-lever (Animated Levers etc Eg. in steam cabs), collision-proxy (Mouse collisions for animated levers), needle (Gauge needles, Speedo, brake pres.), pullrope (Pull rope horn as in the F7), light (Wheelslip light)&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|kind&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Asset kind.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;name&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|Some assets may have editable signs. When you set an asset’s name in surveyor through the Edit Properties icon (‘?’ icon) the signage can be set-up to automatically update. The variables can be set for each sign.&lt;br /&gt;
|-&lt;br /&gt;
|kind&lt;br /&gt;
|&#039;texture-replacement&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|This effect was created for rolling stock items to swap the visible texture of bulk loads (such as coal or woodchips).&lt;br /&gt;
|-&lt;br /&gt;
|kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Asset kuid&lt;br /&gt;
|-&lt;br /&gt;
|kuid-table {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|List of all required dependencies.&lt;br /&gt;
|-&lt;br /&gt;
|kuid-table-ID {&lt;br /&gt;
|kuid&lt;br /&gt;
|kuid-table {&lt;br /&gt;
|all&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|latitude&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|latitude of this region&lt;br /&gt;
|-&lt;br /&gt;
|left-passenger-door {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Left side passenger doors.&lt;br /&gt;
|-&lt;br /&gt;
|length&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Length of track segment in meters&lt;br /&gt;
|-&lt;br /&gt;
|levels {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|Relative sound levels. The sound is silent until 0.1 m/s, ramping up in volume until 10.0 m/s, constant maximum after that. Note, a value below 0.1 will not play a sound.&lt;br /&gt;
|-&lt;br /&gt;
|licence&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|User licence details&lt;br /&gt;
|-&lt;br /&gt;
|lifetime&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Time in seconds that smoke particles exist for. Default is 3.&lt;br /&gt;
|-&lt;br /&gt;
|light&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Sets lighting to be used for object to be ambient or directional. 0 sets ambient lighting and object is light by general light value, 1 sets directional light which is affected by the position of the sun.&lt;br /&gt;
|-&lt;br /&gt;
|light&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Sets lighting to be used for object to be ambient or directional. 0 sets ambient lighting and object is light by general light value, 1 sets directional light which is affected by the position of the sun.&lt;br /&gt;
|-&lt;br /&gt;
|light_color&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|RGB headlight colour. Eg. 255,255,255.&lt;br /&gt;
|-&lt;br /&gt;
|lights {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mosignal&lt;br /&gt;
|Signal lighting container.  A list of coronas attached to each light point. Coronas are stored in each signal object’s directory alongside it’s textures.&lt;br /&gt;
|-&lt;br /&gt;
|lights-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|lights {&lt;br /&gt;
|mosignal&lt;br /&gt;
|Light point identifier.&lt;br /&gt;
|-&lt;br /&gt;
|limits&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Mathematical boundaries Trainz uses determine the objects function. These values vary as different objects use different mathematical units.&lt;br /&gt;
|-&lt;br /&gt;
|longitude&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|longitude of this region&lt;br /&gt;
|-&lt;br /&gt;
|loop&lt;br /&gt;
|float seconds&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Time in seconds to loop the smoke sequence. Only valid if mode is set to time.&lt;br /&gt;
|-&lt;br /&gt;
|loopdelay&lt;br /&gt;
|float seconds&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Delay (in seconds) before the effect is played again.&lt;br /&gt;
|-&lt;br /&gt;
|looped&lt;br /&gt;
|boolean&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|animation effect&lt;br /&gt;
|Looped 1 (optional) Use only if the animation is looping (repeating). Default 0 (i.e. not looped).&lt;br /&gt;
|-&lt;br /&gt;
|looping&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|turntable&lt;br /&gt;
|specifies that the turntable can go all the way around, rather than stopping at a certain point.&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir_ep &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mainreservoir_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|main-reservoir-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|map-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|profile&lt;br /&gt;
|Kuid of the map attached to this session.&lt;br /&gt;
|-&lt;br /&gt;
|mass&lt;br /&gt;
|float kg&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|The physical mass of the product. For Containers and Passengers this is calculated in kilograms/unit, while for Liquid and Bulk loads this is calculated in kilograms/litre.&lt;br /&gt;
|-&lt;br /&gt;
|mass&lt;br /&gt;
|integer kg&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Mass in kilograms&lt;br /&gt;
|-&lt;br /&gt;
|mass {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-accel &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-coupler-gap&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|maximum gap expected between couplers of this type&lt;br /&gt;
|-&lt;br /&gt;
|max-decel &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-distance&lt;br /&gt;
|float&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|Maximum distance at which the sound is played. Eg 1000&lt;br /&gt;
|-&lt;br /&gt;
|max-fire-coal-mass&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|max-fire-temperature&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maximum-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxrate&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The maximum rate at which particles are emitted.&lt;br /&gt;
|-&lt;br /&gt;
|maxsize&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxspeed &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxspeedkph&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|maxvoltage &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|[path/]filename.im&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh name. This may include a sub-path. ie: mesh nightwindows/nightwindows.im, where the file nightwindows.im has been placed in the subdirectory nightwindows.&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|[path/]filename.lm&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh name. This may include a sub-path. ie: mesh nightwindows/nightwindows.im, where the file nightwindows.im has been placed in the subdirectory nightwindows.&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|[path/]filename.pm&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh name. This may include a sub-path. ie: mesh nightwindows/nightwindows.im, where the file nightwindows.im has been placed in the subdirectory nightwindows.&lt;br /&gt;
|-&lt;br /&gt;
|mesh&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|drivercharacter&lt;br /&gt;
|This refers to the kuid of the mesh asset inserted in to the locomotive mesh at a.driver0 (when in the Driver Module).&lt;br /&gt;
|-&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mesh object&lt;br /&gt;
|This is the new and preferred method of asset mesh placement for most mesh asset types. It gives huge control over mesh placement and animations. There are some asset types that cannot use a meshtable. These include all Bridges, Tunnels, Rails, Pantographs and other Spline Objects (eg. Fences or Catenaries).&lt;br /&gt;
|-&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|interior&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|min-distance&lt;br /&gt;
|float&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|Minimum distance at which the sound is played. Eg 0.&lt;br /&gt;
|-&lt;br /&gt;
|minimum-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|minrate&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The minimum rate at which particles are emitted.&lt;br /&gt;
|-&lt;br /&gt;
|minsize&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mode&lt;br /&gt;
|speed/anim/timeofday/time&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Describes the mode or type of this smoke effect. This affects how start and period are interpreted. (time | speed | anim | timeofday). &lt;br /&gt;
|-&lt;br /&gt;
|mode0 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|trackside&lt;br /&gt;
|Mesh showing lever in first position&lt;br /&gt;
|-&lt;br /&gt;
|mode0 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Mesh showing lever in first position&lt;br /&gt;
|-&lt;br /&gt;
|mode1 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|trackside&lt;br /&gt;
|Mesh showing lever in second position&lt;br /&gt;
|-&lt;br /&gt;
|mode1 {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Mesh showing lever in second position&lt;br /&gt;
|-&lt;br /&gt;
|motor {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|mousespeed&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|This controls the use of the mouse on screen. Use this to control the mouse speed and push/pull direction for levers and dials. • mousespeed -1 Inverts mouse direction. • mousespeed 2 Doubles mouse speed in default direction. • mousespeed -0.5 Inverts mouse direction and halves the speed.&lt;br /&gt;
|-&lt;br /&gt;
|moving-friction-coefficient &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|&amp;lt;blank&amp;gt;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|name effect&lt;br /&gt;
|Leave blank to allow the name to be inserted by script without an initial default.&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|&#039;name&#039;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|name effect&lt;br /&gt;
|When name name is specified, it uses the asset’s changeable name. Changed through the Edit Properties icon (the ‘?’ icon) in Surveyor.&lt;br /&gt;
|-&lt;br /&gt;
|name&lt;br /&gt;
|string&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|name effect&lt;br /&gt;
|The default text when placed.  If name Graceland (for example) was used, the sign would never be able to be changed even though the user may have changed the asset’s name in Surveyor.&lt;br /&gt;
|-&lt;br /&gt;
|night&lt;br /&gt;
|[path/]filename.tga&lt;br /&gt;
|config.txt&lt;br /&gt;
|environment&lt;br /&gt;
|Name of image file for night sky. File should be 256 x 256 pixel 24bit tga. The file extension should be excluded here, ie “QLD_Sky” rather than  &amp;quot;qLD_Sky.texture.txt”.&lt;br /&gt;
|-&lt;br /&gt;
|night-mesh-base&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh to which &#039;default-night&#039; is linked.  If the &#039;night-mesh-base&#039; is hidden then &#039;default-night&#039; will not be displayed.&lt;br /&gt;
|-&lt;br /&gt;
|nightmode&lt;br /&gt;
|home/lamp/constant&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Only add this tag if you reference a default-night mesh in the mesh-table. Values: home, lamp or constant.&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe_autobrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe_mainreservoir &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no3pipevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no4pipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no4pipe &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|no4pipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|normal&lt;br /&gt;
|[path/]filename.tga&lt;br /&gt;
|config.txt&lt;br /&gt;
|environment&lt;br /&gt;
|Name of image file for normal sky. File should be 256 x 256 pixel 24bit tga. The file extension should be excluded here, ie “QLD_Sky” rather than  &amp;quot;qLD_Sky.texture.txt”.&lt;br /&gt;
|-&lt;br /&gt;
|nostartdelay&lt;br /&gt;
|boolean&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|0 or 1, default 0 If not set, the sound will have a short delay before playing, this stops flanging (flanging is a really nasty sound caused when several copies of the same sound are played at once).&lt;br /&gt;
|-&lt;br /&gt;
|notches&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The position of notches within the angle boundaries. These are represented as decimal points between and including 0 and 1.&lt;br /&gt;
|-&lt;br /&gt;
|notchheight&lt;br /&gt;
|float list&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The size of the notches specified.&lt;br /&gt;
|-&lt;br /&gt;
|object-size&lt;br /&gt;
|float metres&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|Size of the corona on the object when viewed up close Defaults to 0.15 (i.e. 0.15m)&lt;br /&gt;
|-&lt;br /&gt;
|obsolete-table { &lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|The obsolete-table describes the asset’s revision history.&lt;br /&gt;
|-&lt;br /&gt;
|ontheright&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|Cars drive on the right side of the road.&lt;br /&gt;
|-&lt;br /&gt;
|opacity&lt;br /&gt;
|0..1&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Controls the opacity of the mesh. Zero (invisible, not recommended) or one (solid).&lt;br /&gt;
|-&lt;br /&gt;
|opacity&lt;br /&gt;
|0..1&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Usually used for the window mesh to give transparency (and the impression of reflection).&lt;br /&gt;
|-&lt;br /&gt;
|organisation&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Organisation name will show in Trainz in Railyard as the organisation for the model, for instance if you use Joe’s Trainz or Cripple Creek Logging Company.&lt;br /&gt;
|-&lt;br /&gt;
|origin&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The Country Abbreviation.&lt;br /&gt;
|-&lt;br /&gt;
|outputs {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|process-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Output process list&lt;br /&gt;
|-&lt;br /&gt;
|outputs-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|outputs {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|paintshed-skin-used&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|Kuid of the paintshed skin used. (if applicable)&lt;br /&gt;
|-&lt;br /&gt;
|paintshed-skin-used&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-template&lt;br /&gt;
|Kuid of the paintshed skin to be used for this template.&lt;br /&gt;
|-&lt;br /&gt;
|paintshed-template-used&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|Kuid of the paintshed template used. (if applicable)&lt;br /&gt;
|-&lt;br /&gt;
|pantograph&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|The pantograph kuid number inserted at a.pant0, a.pant1, etc. Use this tag only when needed.&lt;br /&gt;
|-&lt;br /&gt;
|passenger-height&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|This value sets the height of the passenger asset in metres, to suit the platform model height. (Doesn&#039;t work)&lt;br /&gt;
|-&lt;br /&gt;
|passenger-queue&lt;br /&gt;
|boolean&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Defines this as a passenger station queue.&lt;br /&gt;
|-&lt;br /&gt;
|period&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The usage of period depends on the value of the mode tag. If the mode is set to time, period is the duration of time this effect will remain active.&lt;br /&gt;
|-&lt;br /&gt;
|permit-commit&lt;br /&gt;
|boolean&lt;br /&gt;
|privileges {&lt;br /&gt;
|all&lt;br /&gt;
|Allows the end-user to commit changes to this asset.&lt;br /&gt;
|-&lt;br /&gt;
|permit-edit&lt;br /&gt;
|boolean&lt;br /&gt;
|privileges {&lt;br /&gt;
|all&lt;br /&gt;
|Allows the end-user to open this asset for editing&lt;br /&gt;
|-&lt;br /&gt;
|permit-listing&lt;br /&gt;
|boolean&lt;br /&gt;
|privileges {&lt;br /&gt;
|all&lt;br /&gt;
|Allows the end-user to view this object in the surveyor pickers (if it is of an appropriate kind.) Does not affect the visibility of the asset within the CMP asset list.&lt;br /&gt;
|-&lt;br /&gt;
|piston-angular-offsets&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-area&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-to-atmosphere-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-volume-max&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|piston-volume-min&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|pressure {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|preview-mesh-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|The mesh to be used in the surveyor preview area. This is useful when an asset has a large bounding box. Ie the &amp;quot;Airport” with it’s jet animation.&lt;br /&gt;
|-&lt;br /&gt;
|preview-scale&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Scale of the preview mesh.&lt;br /&gt;
|-&lt;br /&gt;
|priority&lt;br /&gt;
|float, 0 = highest&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The priority of the sound versus other sounds to be played. Lower values indicate a higher priority.&lt;br /&gt;
|-&lt;br /&gt;
|privileges {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|Limited content protection applies only to built-in (JArchived) assets.&lt;br /&gt;
|-&lt;br /&gt;
|processes {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|Processes (required) The input and output settings of the industry. You can specify the amount of input and output for each queue referenced product as well as the duration (or rate) in seconds for that process to take place. All queues and processes are linked through the industry asset’s script file.&lt;br /&gt;
|-&lt;br /&gt;
|process-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|processes {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|product-category&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|Kuid of applicable category for this product&lt;br /&gt;
|-&lt;br /&gt;
|product-id&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|For paintshed support.&lt;br /&gt;
|-&lt;br /&gt;
|product-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The product type used to fill ‘initial-count’&lt;br /&gt;
|-&lt;br /&gt;
|product-texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|product&lt;br /&gt;
|The texture to be used with load ‘texture-replacement’. Ie When a hopper loads woodchips instead of it’s default load of coal.&lt;br /&gt;
|-&lt;br /&gt;
|product-type&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|For paintshed support.&lt;br /&gt;
|-&lt;br /&gt;
|product-version&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|paintshed-skin&lt;br /&gt;
|For paintshed support.&lt;br /&gt;
|-&lt;br /&gt;
|queue&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|inputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|queue from which to take input.&lt;br /&gt;
|-&lt;br /&gt;
|queue&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|outputs-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|queue in which to place output.&lt;br /&gt;
|-&lt;br /&gt;
|queues {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|industry&lt;br /&gt;
|The queues container states which product or products the industry can use. It contains the size of each product, the initial count when placed, and can refer to it’s visual load state whether through a load animation or attachment.&lt;br /&gt;
|-&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|queues {&lt;br /&gt;
|industry&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|radius&lt;br /&gt;
|float&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Radius (in meters) of the trigger.&lt;br /&gt;
|-&lt;br /&gt;
|radius&lt;br /&gt;
|float&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|The notch position relative to the attachment point.&lt;br /&gt;
|-&lt;br /&gt;
|random-color-high-hsb&lt;br /&gt;
|hsb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|For clutter-mesh objects, specifies a color range for tinting purposes. HSB color space.&lt;br /&gt;
|-&lt;br /&gt;
|random-color-low-hsb&lt;br /&gt;
|hsb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|For clutter-mesh objects, specifies a color range for tinting purposes. HSB color space.&lt;br /&gt;
|-&lt;br /&gt;
|rate&lt;br /&gt;
|float particles/second&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The rate of emission in particles per second for modes time, speed, and timeofday, or the number of particles to emit over the animation period for  anim mode. Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
|region&lt;br /&gt;
|region code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The country region to which this asset belongs. This should be one of the Auran-supplied region names&lt;br /&gt;
|-&lt;br /&gt;
|repeat-delay&lt;br /&gt;
|random [min,max] seconds&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|1 or 2 numbers (min, max, in sec) time to delay between the end of the sound playing, and playing it again randomised between(min .. max) default min is 0, default max is equal to min  Notes: Repeat-delay now has two values rather than one. When upgrading old assets, make sure there is a repeat delay for both values or the sound will loop endlessly when triggered.&lt;br /&gt;
|-&lt;br /&gt;
|repeats&lt;br /&gt;
|integer&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|The number of times the mesh is placed between spline points&lt;br /&gt;
|-&lt;br /&gt;
|resistance &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|reversed&lt;br /&gt;
|boolean&lt;br /&gt;
|bogeys-ID {&lt;br /&gt;
|traincar&lt;br /&gt;
|Affects the direction of the bogey.&lt;br /&gt;
|-&lt;br /&gt;
|rgb&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|This value should be left as default.&lt;br /&gt;
|-&lt;br /&gt;
|right-passenger-door {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Right side passenger doors.&lt;br /&gt;
|-&lt;br /&gt;
|rollstep&lt;br /&gt;
|float degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is a value in degrees. Used in conjunction with rotate-yz-range, rollstep lets you specify the step size of roll angles for this object. Other example values are 1, 5, 20 etc. The default rollstep is 1.0.&lt;br /&gt;
|-&lt;br /&gt;
|rotate&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is 0 or 1 (default). This lets you disable rotation on a scenery object. 0 to disable, 1 to enable (default).&lt;br /&gt;
|-&lt;br /&gt;
|rotate-yz-range&lt;br /&gt;
|min,max degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where min and max are values in degrees. This tag lets you set the roll / yz rotation range (normal object rotation is an xy rotation). If you want your scenery object to support rolling then use this tag to set the minimum and maximum roll range. By default, objects have a min/max roll range of 0 to 0.&lt;br /&gt;
|-&lt;br /&gt;
|rotstep&lt;br /&gt;
|float degrees&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Where n is a value in degrees. This lets you specify the step size of rotation angles for this object. Other example values are 1, 10, 20, 90, 180 etc. The default rotstep is 1.0&lt;br /&gt;
|-&lt;br /&gt;
|running-number&lt;br /&gt;
|string&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Running number of the vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-high-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-high-pressure&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-low-flow&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|safety-valve-low-pressure&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale &lt;br /&gt;
|?&lt;br /&gt;
|mass {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|scale &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|script&lt;br /&gt;
|[path/]filename.gs&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|This refers to the name of the script file.&lt;br /&gt;
|-&lt;br /&gt;
|search-limit&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Not required. For internal use only.&lt;br /&gt;
|-&lt;br /&gt;
|shadow {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. Shadow mesh.&lt;br /&gt;
|-&lt;br /&gt;
|shadows&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|shift&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|shovel-coal-mass&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|showhelp&lt;br /&gt;
|boolean&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Show Driver Help. (off, on)&lt;br /&gt;
|-&lt;br /&gt;
|show-in-consist-menu&lt;br /&gt;
|boolean&lt;br /&gt;
|consists-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Boolean flag that dictates whether this train appears in the consist menu (0 - false, 1 - true). The consist menu was along the bottom of the screen in the original Trainz and UTC but is no longer present. It effectively stopped a user from getting access to an AI train. Redundant for most uses except for legacy/scenario usage.&lt;br /&gt;
|-&lt;br /&gt;
|signals {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mosignal&lt;br /&gt;
|Sets out which aspects the signal is capable of displaying, and also which light points are activated when each state is displayed.&lt;br /&gt;
|-&lt;br /&gt;
|signals-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|lights {&lt;br /&gt;
|mosignal&lt;br /&gt;
|Signal point identifier.&lt;br /&gt;
|-&lt;br /&gt;
|size&lt;br /&gt;
|integer&lt;br /&gt;
|queues-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Size of queue.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_fastlife&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Longevity of smoke particles at normal speed.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_fastspeed&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|smoke_height&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|How hard particles are pushed out of the stack.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_random&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Level of particle excitation.&lt;br /&gt;
|-&lt;br /&gt;
|smoke_shade&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Smoke opacity. (0 - 1)&lt;br /&gt;
|-&lt;br /&gt;
|smoke_slowlife&lt;br /&gt;
|float&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Longevity of smoke particles at low speed.&lt;br /&gt;
|-&lt;br /&gt;
|smoken {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|smoke block&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|snapgrid&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is a value in meters. This lets you specify the size of the grid the object snaps to. We recommend factors/fractions of 720 as this is the size of a base board and the positioning may do funny things across section borders. e.g. 1, 2, 5, 10, 20, 30, 40, 45, 60, 80, 90, 120, 180, 240, 360, 720. The default snapgrid is 10.&lt;br /&gt;
|-&lt;br /&gt;
|snapmode&lt;br /&gt;
|0/1/2&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Where n is either 0 (default) , 1 or 2. Use snapmode to enable snapping of a scenery object to the snap grid. 0 will disable grid snapping (default), 1 will enable grid snapping, 2 will enable an offset grid snapping. Offset grid snapping will cause objects to be snapped to the grid but will also offset the object’s position by ½ the grid size – essentially positioning the object in between the normal grid lines.&lt;br /&gt;
|-&lt;br /&gt;
|sound { &lt;br /&gt;
|subcontainer&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|List of .wav files to play (randomly picked)&lt;br /&gt;
|-&lt;br /&gt;
|soundscript {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|mesh object&lt;br /&gt;
|Controls the looping sound made by the object.&lt;br /&gt;
|-&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|soundscript {&lt;br /&gt;
|mesh object&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|speed&lt;br /&gt;
|float&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|animation effect&lt;br /&gt;
|Speed factor of the animation. Default 1, 2 for double speed, 0.5 for half speed&lt;br /&gt;
|-&lt;br /&gt;
|speedlimit&lt;br /&gt;
|float metres/second&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|This value is the maximum speed allowed in meters per second&lt;br /&gt;
|-&lt;br /&gt;
|start&lt;br /&gt;
|?&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The usage of stard depends on the value of the mode tag. If the mode is set to time, start is a set of time values in seconds after the creation of this effect’s parent object when this phase of the effect will start. If the mode is set to speed, start is a speed in meters per second (m/s) and period is not used. (Note: 1 m/s = 3.6 km/hr.) All other sequence attributes (rate, velocity, lifetime, minsize, maxsize) are interpolated so there are smooth transitions between phases. If the mode is set to anim, start is a value from 0.0 to 1.0 which describes the start time into the object’s animation cycle. If the mode is set to timeofday, start is a value from 0.0 to 1.0 which describes the time of day when this effect will start. Values range as follow: 0 - midnight, 0.25 - 6am, 0.5 - midday, 0.75 6pm, 1.0 - midnight.&lt;br /&gt;
|-&lt;br /&gt;
|start-enabled&lt;br /&gt;
|boolean&lt;br /&gt;
|process-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|Specifies whether the process starts enabled.&lt;br /&gt;
|-&lt;br /&gt;
|startingtime&lt;br /&gt;
|0..1&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Time of day. Range is from 0 to 1 (0.5 - midday).&lt;br /&gt;
|-&lt;br /&gt;
|steam {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|storm&lt;br /&gt;
|[path/]filename.tga&lt;br /&gt;
|config.txt&lt;br /&gt;
|environment&lt;br /&gt;
|Name of image file for stormy sky. File should be 256 x 256 pixel 24bit tga. The file extension should be excluded here, ie “QLD_Sky” rather than  &amp;quot;qLD_Sky.texture.txt”.&lt;br /&gt;
|-&lt;br /&gt;
|string-table {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|The string table stores a list of text strings to be used by the industry script.&lt;br /&gt;
|-&lt;br /&gt;
|string-table-## {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|These alternative string tables store translated strings&lt;br /&gt;
|-&lt;br /&gt;
|supports-null-driver-character&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|drivercommand&lt;br /&gt;
|Command can be executed without a driver present in the selected loco.&lt;br /&gt;
|-&lt;br /&gt;
|surface-area &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|surveyor-name-label&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Specifies whether this item has floating name label text.&lt;br /&gt;
|-&lt;br /&gt;
|surveyor-only&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|Adding this means the attached mesh will only be visible in Surveyor and not Driver.&lt;br /&gt;
|-&lt;br /&gt;
|surveyor-only&lt;br /&gt;
|boolean&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|attachment effect&lt;br /&gt;
|Adding this means the attached mesh will only be visible in Surveyor and not Driver.&lt;br /&gt;
|-&lt;br /&gt;
|tender&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|traincar&lt;br /&gt;
|Specifies that the traincar is a tender.&lt;br /&gt;
|-&lt;br /&gt;
|terminator&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Name of model to use at end of bridge, placed in subfolder with same name.&lt;br /&gt;
|-&lt;br /&gt;
|test-collisions&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|interior&lt;br /&gt;
|Mouse cannot be used for this mesh. Collision mesh used instead. Ie animated-levers.&lt;br /&gt;
|-&lt;br /&gt;
|texture&lt;br /&gt;
|[path/]filename.texture&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|An image texture file.&lt;br /&gt;
|-&lt;br /&gt;
|texture&lt;br /&gt;
|[path]/filename.texture&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|texture-replacement effect&lt;br /&gt;
|Texture reference denoting the texture file to be swapped by this effect.&lt;br /&gt;
|-&lt;br /&gt;
|texture&lt;br /&gt;
|kuid&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|Kuid of the texture to be used for the effect.&lt;br /&gt;
|-&lt;br /&gt;
|texture-kuid&lt;br /&gt;
|&amp;lt;blank&amp;gt;&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|If the texture-kuid tag is not present the corona will use the default yellow/orange texture in TRS.&lt;br /&gt;
|-&lt;br /&gt;
|texture-kuid&lt;br /&gt;
|kuid&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|Add this tag only when you want to specify your own texture for the corona. It specifies the KUID of a kind texture asset. See KIND TEXTURE.&lt;br /&gt;
|-&lt;br /&gt;
|textures {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|texturegroup&lt;br /&gt;
|The textures container stores a list of additional textures to be used in the texture group.&lt;br /&gt;
|-&lt;br /&gt;
|three-part&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|hornsound&lt;br /&gt;
|Specifies that the hornsound has a beginning, middle and ending sound.&lt;br /&gt;
|-&lt;br /&gt;
|throttle-notches &lt;br /&gt;
|?&lt;br /&gt;
|motor {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|throttle-power {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|thumbnails {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|all&lt;br /&gt;
|Any asset may specify a thumbnail or preview image.&lt;br /&gt;
|-&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|thumbnails {&lt;br /&gt;
|all&lt;br /&gt;
|User supplied identifier&lt;br /&gt;
|-&lt;br /&gt;
|timerate&lt;br /&gt;
|float&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Time progression. (1 - real-time, 2 - double speed etc.)&lt;br /&gt;
|-&lt;br /&gt;
|track&lt;br /&gt;
|kuid&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Kuid of the track to be used.&lt;br /&gt;
|-&lt;br /&gt;
|track&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The track type to which this sound will apply&lt;br /&gt;
|-&lt;br /&gt;
|track&lt;br /&gt;
|trackID&lt;br /&gt;
|attached-trigger-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The track name which the train must be on to trigger.&lt;br /&gt;
|-&lt;br /&gt;
|trackmark&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Specifies that the object is a trackmark.&lt;br /&gt;
|-&lt;br /&gt;
|trackoffsets&lt;br /&gt;
|float list, metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Distance in meters the rail/s are attached to the center of the spline. Any number of tracks can be attached to the spline, only splines with the same track offsets can be connected together.&lt;br /&gt;
|-&lt;br /&gt;
|track-parent&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The parent (eg. bridge/industry/tunnel) of the track to which this sound will apply.&lt;br /&gt;
|-&lt;br /&gt;
|trackside&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|This is a value that is the distance in meters the object is placed relative to the center of the track. Negative values will put the object on the left side of the track, and positive values will appear on the right.&lt;br /&gt;
|-&lt;br /&gt;
|track-sound&lt;br /&gt;
|kuid&lt;br /&gt;
|tracksound {&lt;br /&gt;
|Tracksound&lt;br /&gt;
|The kuid of the tracksound object to be used.&lt;br /&gt;
|-&lt;br /&gt;
|tracksound {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|Tracksound&lt;br /&gt;
|A sound asset that is referenced by track or bogeys to play a different sound from the default track/train sound (for example when a train travels over a bridge or through a tunnel).&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe_reservoir &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainbrakepipevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|trainz-build&lt;br /&gt;
|build code&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The Trainz build is the version number for which this asset was created.&lt;br /&gt;
|-&lt;br /&gt;
|trigger&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|trackside&lt;br /&gt;
|Specifies that the object is a trigger.&lt;br /&gt;
|-&lt;br /&gt;
|trigger&lt;br /&gt;
|string&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|A trigger may be used in an event file (.evt) associated with an animation. It plays at selected key frames of animation as defined in the event file. Sound files may triggered in this manner, and from scripting. Used in the mojunction example (switch lever) the “toggle” action is automatically triggered when the lever is operated and the sound plays.&lt;br /&gt;
|-&lt;br /&gt;
|turntable {&lt;br /&gt;
|mesh-table-ID {&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|turntable&lt;br /&gt;
|Predefined submesh identifier&lt;br /&gt;
|-&lt;br /&gt;
|turntable {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Predefined submesh identifier. &lt;br /&gt;
|-&lt;br /&gt;
|two-part&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|hornsound&lt;br /&gt;
|Indicates that the Railyard and Driver hornsounds are different. The Driver hornsound is looping. If this tag is not present, the hornsound defauts to UTC equivalent non-looping format.&lt;br /&gt;
|-&lt;br /&gt;
|type&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|Specify a type for the model that will be used in the Surveyor menu drop down menu for Track or Object type.&lt;br /&gt;
|-&lt;br /&gt;
|uncached_alphas&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|This is used in certain situations to improve alpha sorting. This should only be set to 1 for tracks that use an alpha texture and are always placed flat &lt;br /&gt;
|-&lt;br /&gt;
|unit_mesh&lt;br /&gt;
|folder&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|For mesh-reducing track, the filename of the long mesh, which must be placed in a subdirectory of the same name as the mesh. Only the file name is entered, not the directory name nor the file extension. For example, the full pathname and extension is “rockwall/rockwall.im”. Enter only “rockwall” in the text input box.&lt;br /&gt;
|-&lt;br /&gt;
|upright&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Specifies whether the bridge “legs” point vertically, or perpendicular to the spline.&lt;br /&gt;
|-&lt;br /&gt;
|useadjoiningtracktype&lt;br /&gt;
|boolean&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Indicates whether the track type should change to match that of the first track joined to the object.&lt;br /&gt;
|-&lt;br /&gt;
|use-gradient-track&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|scenery&lt;br /&gt;
|This means to use the spline gradient rather than following the ground height.&lt;br /&gt;
|-&lt;br /&gt;
|use-parent-bounds&lt;br /&gt;
|boolean&lt;br /&gt;
|mesh-table {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Specifies that the mesh should use the bounds of the parent object for visibility culling. Use with caution.&lt;br /&gt;
|-&lt;br /&gt;
|username&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The human-readable English name of this asset.&lt;br /&gt;
|-&lt;br /&gt;
|username-##&lt;br /&gt;
|string&lt;br /&gt;
|config.txt&lt;br /&gt;
|general&lt;br /&gt;
|The human-readable translated name of this asset.&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakecylinder &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakecylinder_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakecylinder_vacuumbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipe&lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipe_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipereleasevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakepipevent &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakereservoir &lt;br /&gt;
|?&lt;br /&gt;
|volume {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakereservoir_start &lt;br /&gt;
|?&lt;br /&gt;
|pressure {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|vacuumbrakereservoir_vacuumbrakepipe &lt;br /&gt;
|?&lt;br /&gt;
|flowsize {&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|value-range&lt;br /&gt;
|min,max time of day&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|2 numbers, currently used only for day/night sound effects. Midnight is 0.5, midday = 0.0 or 1.0 Where the numbers are not the same, this sets the start and end times for the sound to play.  Default 0,0 (off)&lt;br /&gt;
|-&lt;br /&gt;
|vehicle&lt;br /&gt;
|kuid&lt;br /&gt;
|consists-vehicle-ID {&lt;br /&gt;
|industry&lt;br /&gt;
|The kuid of the vehicle to be used.&lt;br /&gt;
|-&lt;br /&gt;
|velocity&lt;br /&gt;
|float&lt;br /&gt;
|smoke# {&lt;br /&gt;
|smoke block&lt;br /&gt;
|The initial speed of emitted smoke particles. Default is 1.&lt;br /&gt;
|-&lt;br /&gt;
|vertices {&lt;br /&gt;
|subcontainer&lt;br /&gt;
|attached-track-ID {&lt;br /&gt;
|scenery with track&lt;br /&gt;
|Attachment points at which to place track.&lt;br /&gt;
|-&lt;br /&gt;
|visible-on-minimap&lt;br /&gt;
|boolean&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Specifies whether the object\track is displayed on the minimap.&lt;br /&gt;
|-&lt;br /&gt;
|volume&lt;br /&gt;
|0..1&lt;br /&gt;
|soundscript-ID {&lt;br /&gt;
|mesh object&lt;br /&gt;
|Gain of the sound Default 1.0 = 100%&lt;br /&gt;
|-&lt;br /&gt;
|volume {&lt;br /&gt;
|container&lt;br /&gt;
|config.txt&lt;br /&gt;
|engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|water&lt;br /&gt;
|kuid&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|watercolor&lt;br /&gt;
|rgb value&lt;br /&gt;
|config.txt&lt;br /&gt;
|region&lt;br /&gt;
|RGB colour value of the water for the region.&lt;br /&gt;
|-&lt;br /&gt;
|water-injector-rate&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|wave-shift&lt;br /&gt;
|?&lt;br /&gt;
|effects-ID {&lt;br /&gt;
|corona effect&lt;br /&gt;
|Affects the flashing intensity pattren on the corona.&lt;br /&gt;
|-&lt;br /&gt;
|weather&lt;br /&gt;
|0..7&lt;br /&gt;
|driver-settings {&lt;br /&gt;
|activity&lt;br /&gt;
|Weather setting. (clear, cloudy, drizzle, rain, stormy, light snow, medium snow, heavy snow)&lt;br /&gt;
|-&lt;br /&gt;
|westinghouse-volume&lt;br /&gt;
|?&lt;br /&gt;
|steam {&lt;br /&gt;
|steam-engine&lt;br /&gt;
|?&lt;br /&gt;
|-&lt;br /&gt;
|width&lt;br /&gt;
|float metres&lt;br /&gt;
|config.txt&lt;br /&gt;
|splines&lt;br /&gt;
|Width of track mesh in meters.&lt;br /&gt;
|-&lt;br /&gt;
|width&lt;br /&gt;
|integer&lt;br /&gt;
|thumbnails-ID {&lt;br /&gt;
|all&lt;br /&gt;
|Image width&lt;br /&gt;
|-&lt;br /&gt;
|workingscale&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|workingunits&lt;br /&gt;
|?&lt;br /&gt;
|config.txt&lt;br /&gt;
|map&lt;br /&gt;
|Undocumented&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Build_Numbers&amp;diff=1481</id>
		<title>Build Numbers</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Build_Numbers&amp;diff=1481"/>
		<updated>2010-09-10T18:09:22Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* TS2010 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==TS2009==&lt;br /&gt;
&lt;br /&gt;
The following builds exist for [[TS2009]]. Where patches are available, these are noted beside the build number.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2 cellspacing=0&lt;br /&gt;
|&#039;&#039;&#039;Build Number&#039;&#039;&#039;||&#039;&#039;&#039;Patches available&#039;&#039;&#039;||&#039;&#039;&#039;Build description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Build 37625||auto-patch to 40040||English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 38017||auto-patch to 40040||[[TS2009 SP1]]&lt;br /&gt;
|-&lt;br /&gt;
|Build 38411||auto-patch to 40040||English Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 38599||auto-patch to 40040||[[TS2009 SP1]] hotfix&lt;br /&gt;
|-&lt;br /&gt;
|Build 38610||PROTECTED||Steam English Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 38808||auto-patch to 41590||French Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 38824||-||Dutch Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 38869||PROTECTED||UK Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 39176||-||German Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 39413||auto-patch to 40040||Czech, Polish, Hungarian Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 39561||-||Spanish Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 39979||auto-patch to 40040||[[TS2009 SP2]]&lt;br /&gt;
|-&lt;br /&gt;
|Build 40040||-||[[TS2009 SP2]] hotfix&lt;br /&gt;
|-&lt;br /&gt;
|Build 40357||-||Cabon City English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 40542||-||Russian Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 40702||-||Cabon City English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 40702||-||Treez English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 40762||-||Murchison English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 40837||-||S&amp;amp;C English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 40895||-||Spanish pre-SP3&lt;br /&gt;
|-&lt;br /&gt;
|Build 41497||-||Dutch, German pre-SP3&lt;br /&gt;
|-&lt;br /&gt;
|Build 41546||-||Italian Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 41590||-||French pre-SP3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TS2010==&lt;br /&gt;
&lt;br /&gt;
The following builds exist for [[TS2010]]. Where patches are available, these are noted beside the build number.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2 cellspacing=0&lt;br /&gt;
|&#039;&#039;&#039;Build Number&#039;&#039;&#039;||&#039;&#039;&#039;Patches available&#039;&#039;&#039;||&#039;&#039;&#039;Build description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Build 41491||manual patch to 41615||English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 41615||manual patch to 43434||[[TS2010 SP1]]&lt;br /&gt;
|-&lt;br /&gt;
|Build 41622||manual patch to 43434||English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 42203||manual patch to 43434||[[TS2010 SP2]] English, Swedish Retail Release&lt;br /&gt;
|-&lt;br /&gt;
|Build 42534||-||French Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 42763||-||German Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 42831||-||Dutch Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 42953||-||Russian Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 43030||-||Czech, Polish Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 43233||-||Spanish Retail&lt;br /&gt;
|-&lt;br /&gt;
|Build 43434||-||[[TS2010 SP3]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Content Builds ==&lt;br /&gt;
&lt;br /&gt;
Auran&#039;s patch technology has the capability of updating the base Trainz version and installed addon content independently. The following is a list of released content build versions for addon content.&lt;br /&gt;
&lt;br /&gt;
{| border=1 cellpadding=2 cellspacing=0&lt;br /&gt;
|&#039;&#039;&#039;Content Build Number&#039;&#039;&#039;||&#039;&#039;&#039;Content Patches available&#039;&#039;&#039;||&#039;&#039;&#039;Build description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Content Build 40355||-||Cabon City English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Content Build 40400||-||Cabon City English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Content Build 40563||-||Treez English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Content Build 40761||-||Murchison English Online Release&lt;br /&gt;
|-&lt;br /&gt;
|Content Build 40836||-||S&amp;amp;C English Online Release&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Steam%22_container&amp;diff=1475</id>
		<title>&quot;Steam&quot; container</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Steam%22_container&amp;diff=1475"/>
		<updated>2010-08-31T23:16:36Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Updated with additional information from http://forums.auran.com/trainz/showthread.php?p=308677&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The steam container is a top-level [[config.txt file]] entry used by [[KIND Steam-engine|Steam Enginespec]] assets.&lt;br /&gt;
&lt;br /&gt;
==Supported Tags==&lt;br /&gt;
&lt;br /&gt;
The Steam container supports the following tags. Each tag is show here with its default value.&lt;br /&gt;
&lt;br /&gt;
 steam&lt;br /&gt;
 {&lt;br /&gt;
 	boiler-volume 10.0&lt;br /&gt;
 	burn-rate 0.5&lt;br /&gt;
 	burn-rate-idle 0.01&lt;br /&gt;
 	firebox-heating-surface-area 20&lt;br /&gt;
 	firebox-efficiency 0.75&lt;br /&gt;
 	firebox-thermal-conductivity 10&lt;br /&gt;
 	firebox-plate-thickness 0.016&lt;br /&gt;
 	fuel-energy 27912000&lt;br /&gt;
 	fuel-specific-heat-capacity 1260&lt;br /&gt;
 	initial-boiler-temperature 373&lt;br /&gt;
 	max-coal-mass 1000&lt;br /&gt;
 	ideal-coal-mass 500&lt;br /&gt;
 	min-fire-temperature 500&lt;br /&gt;
 	max-fire-temperature 1300&lt;br /&gt;
 	minimum-volume 8.0&lt;br /&gt;
 	maximum-volume 9.0&lt;br /&gt;
 	fusible-plug-volume 7.5&lt;br /&gt;
 	boiler-heat-loss 2.0&lt;br /&gt;
 	piston-angular-offsets 0.0174,1.5254,3.0333,4.5413&lt;br /&gt;
 	piston-volume-min 0.0272&lt;br /&gt;
 	piston-volume-max 0.1505&lt;br /&gt;
 	piston-area 0.1734&lt;br /&gt;
 	safety-valve-low-pressure 1653&lt;br /&gt;
 	safety-valve-low-flow 0.05&lt;br /&gt;
 	safety-valve-high-pressure 1684&lt;br /&gt;
 	safety-valve-high-flow 0.1&lt;br /&gt;
 	shovel-coal-mass 5.0&lt;br /&gt;
 	water-injector-rate 3.0&lt;br /&gt;
 	water-injector-rate2 3.0&lt;br /&gt;
 	boiler-efficency-idle 0.75&lt;br /&gt;
 	boiler-efficency 0.4&lt;br /&gt;
 	boiler-efficency-min 0.25&lt;br /&gt;
 	speed 15.0&lt;br /&gt;
 	cutoff 0.4&lt;br /&gt;
 	blower-effect 0.5&lt;br /&gt;
 	blower-max-flow 2.5&lt;br /&gt;
 	starting-coal 500&lt;br /&gt;
 	starting-water 7500.0&lt;br /&gt;
 	starting-boiler-steam 10.0&lt;br /&gt;
 	steam-chest-volume 0.1233&lt;br /&gt;
 	steam-chest-max-flow 25.0&lt;br /&gt;
 	valve-lap-percent 0.05&lt;br /&gt;
 	hand-brake-max-force 1000&lt;br /&gt;
 	super-heating-constant 100&lt;br /&gt;
 	tractive-effort-constant 0.8&lt;br /&gt;
 	number-cylinders 2&lt;br /&gt;
 	number-power-strokes 2&lt;br /&gt;
 	legacy-piston-count 4&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
====boiler-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Metres cubed. This is the total capacity of the boiler.&lt;br /&gt;
&lt;br /&gt;
====burn-rate====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: How much coal (kg) is consumed per second when the loco is operating at the test parameters?&lt;br /&gt;
&lt;br /&gt;
====burn-rate-idle====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: How much coal (kg) is consumed per second when the loco is idle, purely to keep the fire burning?&lt;br /&gt;
&lt;br /&gt;
====firebox-heating-surface-area====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Surface area of the firebox used for heating water. In practice, most of the water heating is done through the firebox, not through the tubes. For this reason, the surface area quoted should be that of all used sides of the firebox - normally front, back, top, left, right. Larger areas result in more firebox to boiler heat transfer - both cooling the fire and heating the water.&lt;br /&gt;
&lt;br /&gt;
====firebox-efficiency====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). How efficient is the firebox - how much of the fire output is captured and used, and how much is lost? Higher numbers here mean the fire heats up faster, and stays hotter longer when you are trying to cool it down after a run. Lower numbers result in a more lethargic fire which takes longer to heat up, and will cool more quickly.&lt;br /&gt;
&lt;br /&gt;
====firebox-thermal-conductivity====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Technically watts per metre kelvin, but real numbers are no good here - many factors mean a steam loco is far from an ideal heat conductor that the equations are based around. 10 seems to be a good number, found by experimentation. A higher number here will mean more heat transfer from the fire to the boiler - resulting in higher pressure but also less fire temperature. Lower numbers will result in more fire temperature, but less heating.&lt;br /&gt;
&lt;br /&gt;
====firebox-plate-thickness====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Thickness of firebox plate in metres. 0.016 == 5/8&amp;quot; plate.&lt;br /&gt;
&lt;br /&gt;
====fuel-energy====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Joules per kilogram. Amount of energy (joules) that can be released by burning 1 kg of the fuel.&lt;br /&gt;
&lt;br /&gt;
====fuel-specific-heat-capacity====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Joules per kilogram kelvin. Amount of energy (joules) needed to raise the temperature of 1 kg of the fuel substance by one degree kelvin.&lt;br /&gt;
&lt;br /&gt;
====initial-boiler-temperature====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees kelvin. This value will determine whether the engine is &#039;ready to go&#039; or needs &#039;warming up&#039; prior to a run when first placed.&lt;br /&gt;
&lt;br /&gt;
====max-coal-mass====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Maximum amount (kg) of fuel it&#039;s possible to cram in the firebox, before it starts falling out.&lt;br /&gt;
&lt;br /&gt;
====ideal-coal-mass====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ideal amount (kg) of fuel to have in the firebox for optimal burning. This value will appear as &amp;quot;100%&amp;quot; on the interface, and will burn the best.&lt;br /&gt;
&lt;br /&gt;
====min-fire-temperature====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees K. A higher value here makes the loco &#039;wake up&#039; quicker, but too high a value will make it build pressure even when left idle.&lt;br /&gt;
&lt;br /&gt;
====max-fire-temperature====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees K. Lowering top end fire temperature will have the effect of limiting both top end boiler pressure and maximum water heating ability when working hard.&lt;br /&gt;
&lt;br /&gt;
====minimum-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Litres. This is the amount of water in the boiler that corresponds to the bottom of the sight glass - 0% on the interface. Defaults to 80% boiler-volume.&lt;br /&gt;
&lt;br /&gt;
====maximum-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Litres. This is the amount of water in the boiler that corresponds to the top of the sight glass - 100% on the interface. It should be above the &#039;minimum volume&#039;. Defaults to 90% boiler-volume.&lt;br /&gt;
&lt;br /&gt;
====fusible-plug-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Litres. This is the amount of water in the boiler at which point the fusible plugs will kick in. It should be below the &#039;minimum volume&#039;. Defaults to 75% boiler-volume.&lt;br /&gt;
&lt;br /&gt;
====boiler-heat-loss====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: factor used to cool boiler water over time. Bigger number == more cooling. Magic number (unknown units). Sample: 2.2&lt;br /&gt;
&lt;br /&gt;
====piston-angular-offsets====&lt;br /&gt;
:Type: Decimal Array&lt;br /&gt;
:Desc: Values are specified in radians. Amount of wheel rotation required to rotate each piston to maximum travel from starting position. Will depend on how the valve gear has been animated in max. One value per piston.&lt;br /&gt;
&lt;br /&gt;
====piston-volume-min====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: clearance volume of a piston - i.e. the volume at minimum travel. This value greatly affects the level of front-end power available to a specific loco.&lt;br /&gt;
&lt;br /&gt;
====piston-volume-max====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Total volume of a piston at maximum travel - i.e. the swept volume (stroke*area) plus the clearance volume.&lt;br /&gt;
&lt;br /&gt;
====piston-area====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Surface area of the piston (metres squared).&lt;br /&gt;
&lt;br /&gt;
====safety-valve-low-pressure====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Pressure (absolute, and in kPa) at which the low pressure safety valve will blow.&lt;br /&gt;
&lt;br /&gt;
====safety-valve-low-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms per second of steam that escape through the low pressure safety valve. Note: Too high a value will result in a &#039;sawtooth&#039; boiler pressure, and repeated short hisses from the safety valve.&lt;br /&gt;
&lt;br /&gt;
====safety-valve-high-pressure====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Pressure (absolute, and in kPa) at which the high pressure safety valve will blow.&lt;br /&gt;
&lt;br /&gt;
====safety-valve-high-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms per second of steam that escape through the high pressure safety valve. Remember that both valves will be open at this point.&lt;br /&gt;
&lt;br /&gt;
====shovel-coal-mass====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: How many kg of fuel does the fireman move each time he shovels?&lt;br /&gt;
&lt;br /&gt;
====water-injector-rate====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: litres of water moved into the boiler per second through the first injector when fully on.&lt;br /&gt;
&lt;br /&gt;
====water-injector-rate2====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: litres of water moved into the boiler per second through the second injector when fully on.&lt;br /&gt;
&lt;br /&gt;
====boiler-efficency-idle====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). Maximum efficiency of boiler - e.g. when loco idle.&lt;br /&gt;
&lt;br /&gt;
====boiler-efficency====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). Efficiency of boiler when working at test parameters.&lt;br /&gt;
&lt;br /&gt;
====boiler-efficency-min====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Minimum boiler efficiency. Calculated efficiency will not fall below this value.&lt;br /&gt;
&lt;br /&gt;
====speed====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Speed of test run on which test parameters are based.&lt;br /&gt;
&lt;br /&gt;
====cutoff====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). Position of cutoff control for test run.&lt;br /&gt;
&lt;br /&gt;
====blower-effect====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Multiplier. Sets the effectiveness of the blower. Value is the draft effect of working the loco at the test parameters compared with running the blower at maximum boiler pressure but the loco otherwise idle.&lt;br /&gt;
&lt;br /&gt;
====blower-max-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms per second of steam used by blower at max boiler pressure and max setting.&lt;br /&gt;
&lt;br /&gt;
====starting-coal====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms of coal to start with in the firebox. Ideal-coal-mass value will be used if this is not present.  &lt;br /&gt;
&lt;br /&gt;
====starting-water====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume of water (in Litres) to start with in the boiler. Will default to 85% boiler-volume (equivalent to halfway between &#039;max&#039; and &#039;min&#039; on the sight glass.)&lt;br /&gt;
&lt;br /&gt;
====starting-boiler-steam====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Amount of steam to start with in the boiler. If this is too high, a false &#039;high pressure&#039; will be reported at initial startup (but working the loco will reduce it). If it is too low, the boiler will boil water to build pressure, so using a low value (maybe even zero?) is suggested.&lt;br /&gt;
&lt;br /&gt;
====steam-chest-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume (metres cubed) of the steam chest. A good estimate if unknown is piston-volume-max * number of cylinders (source 5AT website).&lt;br /&gt;
&lt;br /&gt;
====steam-chest-max-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Max flow (kilograms per second) of steam from boiler to steam chest with regulator fully open.&lt;br /&gt;
&lt;br /&gt;
====valve-lap-percent====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0)&lt;br /&gt;
&lt;br /&gt;
====hand-brake-max-force====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Maximum force exerted by handbrake.&lt;br /&gt;
&lt;br /&gt;
====super-heating-constant====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees (kelvin) to increase temperature of steam between boiler and steam chest. High superheat results in more power at the front end.&lt;br /&gt;
&lt;br /&gt;
====tractive-effort-constant====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Used to calculate theoretical performance along with cylinder dimensions for the AI to use.  Defaults to 0.4 * number_of_cylinders. &lt;br /&gt;
&lt;br /&gt;
====number-cylinders====&lt;br /&gt;
:Type: Integer&lt;br /&gt;
:Desc: Number of cylinders.&lt;br /&gt;
&lt;br /&gt;
====number-power-strokes====&lt;br /&gt;
:Type: Integer&lt;br /&gt;
:Desc: Number of power strokes per revolution. Two is by far the most common number, but this can be other numbers in extreme cases.&lt;br /&gt;
&lt;br /&gt;
====legacy-piston-count====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Used for loading old (TRS2006) saved sessions. An omission in the TRS2006 save format causes a loco with a different number of pistons not to load properly. The number of pistons often needs to be changed when updating old enginespecs, as previously engines had to have twice as many single acting pistons, rather than the correct number of double acting pistons as they do now. This value is to record the old number of pistons so that old sessions can still be loaded.&lt;br /&gt;
&lt;br /&gt;
==Example steam container==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Config Container]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=KIND_Groundtexture&amp;diff=481</id>
		<title>KIND Groundtexture</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=KIND_Groundtexture&amp;diff=481"/>
		<updated>2009-08-21T17:30:44Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: added scale information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[KIND Groundtexture]] is an extension of [[KIND Texture]]. A ground texture is tiled in Surveyor to color and cover the base grid.&lt;br /&gt;
&lt;br /&gt;
==Texture==&lt;br /&gt;
The ground uses a material with three texture inputs. The first two are supplied by the Ground Texture asset, the third is supplied by Trainz at runtime.&lt;br /&gt;
&lt;br /&gt;
===Scale===&lt;br /&gt;
When choosing your image, make sure it is the proper scale so details don&#039;t look too large or too small in game.  The smallest scale setting in surveyor corresponds to an image 10 meters across, while the largest scale setting corresponds to 24 meters across.&lt;br /&gt;
&lt;br /&gt;
===Diffuse Texture===&lt;br /&gt;
The diffuse texture provides a [[diffuse map]], containing color information for the material.&lt;br /&gt;
&lt;br /&gt;
The alpha channel is not used for transparency, but instead controls the strength of the Reflective Texture on a per-pixel basis. White alpha shows diffuse only. Black alpha shows reflection only. Grays are a blend between the diffuse and the reflection. In most cases, a white or light gray value is appropriate.&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
 texture &amp;quot;demo-diffuse.tga&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 [[image:demo-diffuse.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Normal Texture===&lt;br /&gt;
The normal texture provides a [[normal map]].&lt;br /&gt;
&lt;br /&gt;
The alpha channel provides per-pixel control of the [[specular highlight]]. White gives a strong specular, suitable for metals and water. Black gives no specular, more suitable for dark earth. Grays are a mid-strength specular.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When creating the .texture.txt file for the normal map, remember to include the following line, otherwise you will end up with odd effects such as shadowing when you rotate the texture.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NormalMapHint=normalmap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sample:&lt;br /&gt;
 normal-texture &amp;quot;demo-normal.tga&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 [[image:demo-normal.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Reflective Texture===&lt;br /&gt;
The reflective texture is a cubemap supplied by Trainz which provides an approximate reflection of the surrounding environment. The ground texture has no direct control over this texture, however the use of this texture can be switched on or off per ground texture and the strength of the reflection is controlled per pixel via the diffuse texture&#039;s alpha channel.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
Sample [[config.txt file]] for a ground texture, with the Standard Tags excluded for brevity:&lt;br /&gt;
&lt;br /&gt;
 [[TagName_Kind|kind]] &amp;quot;groundtexture&amp;quot;&lt;br /&gt;
 [[TagName_Texture|texture]] &amp;quot;demo-diffuse.texture&amp;quot;&lt;br /&gt;
 [[TagName_Normal-texture|normal-texture]] &amp;quot;demo-normal.texture&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;texture&amp;quot; and &amp;quot;normal&amp;quot; tags specify [[Texture file]]s located within the asset folder.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ground Clutter==&lt;br /&gt;
A ground texture can optionally reference a low polygon mesh (a &amp;quot;clutter mesh&amp;quot;) and insert the mesh automatically as the ground is painted.&lt;br /&gt;
&lt;br /&gt;
Sample [[config.txt file]] for a ground texture with a clutter mesh, with the Standard Tags excluded for brevity:&lt;br /&gt;
&lt;br /&gt;
 [[TagName_Kind|kind]] &amp;quot;groundtexture&amp;quot;&lt;br /&gt;
 [[TagName_Texture|texture]] &amp;quot;demo-diffuse.texture&amp;quot;&lt;br /&gt;
 [[TagName_Normal-texture|normal-texture]] &amp;quot;demo-normal.texture&amp;quot;&lt;br /&gt;
 [[TagName_Clutter-Mesh|clutter-mesh]] &amp;lt;kuid:-3:10128&amp;gt;&lt;br /&gt;
 [[TagName_Description|description]] &amp;quot;A very ugly Ground Texture with a whole bunch of Alaistair’s running around as the clutter mesh.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Downloads==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Attach sample files here?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Asset KIND]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Trainz-build%22_tag&amp;diff=799</id>
		<title>&quot;Trainz-build&quot; tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Trainz-build%22_tag&amp;diff=799"/>
		<updated>2009-07-21T03:40:19Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Trainz build is the numbering system allocated to each released version of Trainz. Content may be created for different versions, making use of the newer functions in a more recent release. Consequently, some models will not&lt;br /&gt;
function in earlier versions of the simulator.&lt;br /&gt;
&lt;br /&gt;
It is important for models to list the version of Trainz for which they are compatible. For older Trainz builds, this is done by entering a Trainz-Build number in the model config.txt file. The Content Creator Plus module will automatically add the correct trainz-build to the config.txt file.&lt;br /&gt;
&lt;br /&gt;
A model constructed for an older version may function in a newer version, but this is not guaranteed, as there have been amendments made to subsequent versions. Likewise, a model using the latest functions will not work in an earlier version.&lt;br /&gt;
The Download Station identifies which version of Trainz you have installed and when you use the Download Helper option, it will not allow the download of a more recent model that is incompatible with your version.&lt;br /&gt;
&lt;br /&gt;
The approved Trainz-Build version numbers are;&lt;br /&gt;
&lt;br /&gt;
 trainz-build 1.3 for Trainz SP3&lt;br /&gt;
 trainz-build 1.5 for Ultimate Trainz Collection&lt;br /&gt;
 trainz-build 1.6 for Ultimate Trainz Collection SP1&lt;br /&gt;
 trainz-build 2.0 for Trainz Railroad Simulator 2004&lt;br /&gt;
 trainz-build 2.1 for Trainz Railroad Simulator 2004 SP1&lt;br /&gt;
 trainz-build 2.2 for Trainz Railroad Simulator 2004 SP2 - Passenger Pack&lt;br /&gt;
 trainz-build 2.3 for Trainz Railroad Simulator 2004 SP3&lt;br /&gt;
 trainz-build 2.4 for Trainz Railroad Simulator 2004 SP4&lt;br /&gt;
 trainz-build 2.5 for Trainz Railroad Simulator 2006&lt;br /&gt;
 trainz-build 2.6 for Trainz Railroad Simulator 2006 SP1&lt;br /&gt;
 trainz-build 2.7 for Trainz Classics 1&amp;amp;2&lt;br /&gt;
 trainz-build 2.8 for Trainz Classics 3&lt;br /&gt;
 trainz-build 2.9 for Trainz Railroad Simulator 2009&lt;br /&gt;
 trainz-build 3.0 for Trainz Railroad Simulator 2009 SP1&lt;br /&gt;
 trainz-build 3.1 for Trainz Railroad Simulator 2009 SP2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Config Tag]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Runtime_Performance_Statistics&amp;diff=683</id>
		<title>Runtime Performance Statistics</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Runtime_Performance_Statistics&amp;diff=683"/>
		<updated>2009-07-15T14:56:48Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* Test Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TS2009sp2 provides a simple tool for monitoring asset performance in Surveyor. Poor-performing assets can negatively affect both the frame rate and the available draw distance. In extreme cases, TS2009 will reduce the draw distance below the user&#039;s setting to reduce the risk of crashing due to excess resource consumption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Displaying Performance Statistics=&lt;br /&gt;
As of [[TS2009 SP2]], any user may activate a performance statistics display in Surveyor. This display is accurate on a per-frame basis. While the display is active, the user may notice a small overall decrease in frame rate.&lt;br /&gt;
&lt;br /&gt;
To active or deactivate the display, follow these steps:&lt;br /&gt;
* Go to the Trainz game menu button in the top left of the screen;&lt;br /&gt;
* Select the &amp;quot;Options&amp;quot; menu;&lt;br /&gt;
* Change to the &amp;quot;Surveyor Settings&amp;quot; screen;&lt;br /&gt;
* Toggle the &amp;quot;Display performance stats&amp;quot; setting as appropriate.&lt;br /&gt;
&lt;br /&gt;
=Statistics=&lt;br /&gt;
In the current version of the tool, the following information is displayed:&lt;br /&gt;
&lt;br /&gt;
== Stitched Mesh Statistics==&lt;br /&gt;
These statistics represent the inputs and outputs of the [[mesh stitching]] system, which prepares efficient geometry for submission to the GPU. These numbers relate to the mesh stitching resources only, and do not account for similar types of resource usage in other systems. Larger numbers typically indicate increased system load.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;total buffers&#039;&#039; - The number of hardware buffers currently in use for the stitched mesh system. There will always be a minimum of one hardware buffer allocated per material. If a material is assigned to a large number of triangles, additional hardware buffers may be allocated to share the load. In &amp;quot;compatibility mode&amp;quot;, some asset types may require one buffer per request, rather than stitching multiple requests into a single buffer.&lt;br /&gt;
* &#039;&#039;unprocessed buffers&#039;&#039; - The number of buffers which require CPU stitching. This number should be zero when idle, and increases while objects are being loaded, unloaded, or are changing LOD.&lt;br /&gt;
* &#039;&#039;vertices&#039;&#039; - The total number of hardware vertices present in the stitched mesh system.&lt;br /&gt;
* &#039;&#039;indices&#039;&#039; - The total number of hardware indices present in the stitched mesh system. This number correlates with the number of triangles being rendered (typically three indices per triangle.)&lt;br /&gt;
* &#039;&#039;materials&#039;&#039; - The number of distinct materials present in the stitched mesh system.&lt;br /&gt;
* &#039;&#039;total requests&#039;&#039; - The total number of input requests to the stitched mesh system. This is a general indicator of route density.&lt;br /&gt;
* &#039;&#039;unprocessed requests&#039;&#039; - The total number of input requests which require CPU stitching. This number should be zero when idle, and increases while objects are being loaded, unloaded, or are changing LOD.&lt;br /&gt;
* &#039;&#039;worst buffer count&#039;&#039; - The KUID and total buffer count of the single asset which is consuming the largest number of hardware buffers. This does not necessarily indicate a poor performer - it may be that the asset is simply used far more heavily than other assets in the current scene. This is, however, a great place to start looking if performance is suffering.&lt;br /&gt;
* &#039;&#039;worst index count&#039;&#039; - The KUID and total index count of the single asset which is consuming the largest number of hardware indices. This does not necessarily indicate a poor performer - it may be that the asset is simply used far more heavily than other assets in the current scene. This is, however, a great place to start looking if performance is suffering.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Performance Fixing for End-Users=&lt;br /&gt;
End Users can do little to resolve the types of performance issue discussed here. Running in &amp;quot;Native Mode&amp;quot; instead of using &amp;quot;Compatibility Mode&amp;quot; can provide a very significant performance boost at the expense of some visual compatibility with older content. Keeping up-to-date with the latest Trainz and content updates can also help make sure that you have the latest performance optimisations. &lt;br /&gt;
&lt;br /&gt;
=Performance Fixing for Route Builders=&lt;br /&gt;
There are hard caps to the &#039;total buffers&#039;, &#039;vertices&#039; and &#039;indices&#039; figures above to prevent the system from exhausting all resource space which leads to a game crash. These caps are typically quite generous, however it is possible for specific assets to be constructed in such a way that they rapidly exhaust available resources.&lt;br /&gt;
&lt;br /&gt;
When the usage starts to approach the hard caps, Trainz will attempt to reduce the draw distance in an effort to prevent hitting a hard cap. Hitting the hard cap is considered bad because any further items will not be rendered - this can include large items near the viewer. It is better to reduce the draw distance such that nearby items can be seen and distant items will be culled.&lt;br /&gt;
&lt;br /&gt;
If overall performance is poor, or the if the draw distance is being visibly reduced, the route builder should pay close attention to the &#039;worst buffer count&#039; and &#039;worst index count&#039; statistics. In the majority of cases, one of these statistics will directly indicate the cause of the problem. It is worth noting that several assets can contribute to poor performance in a given scene - after identifying and removing the worst performer, the next-worst performer will be revealed. Route builders should remove or reduce the usage of the worst performers from the route, or substitute them for alternative better-performing assets.&lt;br /&gt;
&lt;br /&gt;
Note that the performance statistics relate to the objects currently in view. Moving to another location on the route, changing the viewing angle, or adjusting the draw distance may affect the results provided by this tool.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Performance Fixing for Asset Builders=&lt;br /&gt;
When creating content, the Surveyor performance statistics display can be useful for testing the efficiency of your model.&lt;br /&gt;
&lt;br /&gt;
==Test Methodology==&lt;br /&gt;
Simply load up a blank baseboard, place a large number of copies of one item of your content scattered around the baseboard, and watch the performance numbers. The Surveyor &amp;quot;Replace Assets&amp;quot; command can be useful to perform like-for-like comparisons of your content against similar existing items.&lt;br /&gt;
&lt;br /&gt;
When testing performance, you should generally not place a large number of objects at a single location, as this is an unrealistic test and skews the results. Distribute your objects around the scene.&lt;br /&gt;
&lt;br /&gt;
It is best to test your object in relatively large numbers, with no other changes to the blank baseboard - no terrain editing; no terrain painting; no other scenery or splines.&lt;br /&gt;
&lt;br /&gt;
A blank baseboard has some performance costs for terrain rendering. Be sure to note those numbers as a baseline before you start adding your own test objects.&lt;br /&gt;
&lt;br /&gt;
==Test Results==&lt;br /&gt;
If your test object does not show up in the statistics, it is not being handled by the [[mesh stitching]] system. For high-detail or animated object, this is expected behavior. For medium-to-low detail static objects, this suggests a performance problem that should be resolved. It is worth noting that the low LOD of an object may be stitched while the higher-detailed LODs are not stitched. This will be accurately reflected in the statistics.&lt;br /&gt;
&lt;br /&gt;
The material count for your object (whether singularly, or in large quantities) should be low, preferably 1-2 total. If the material count is overly large, consider revising your material setup in your modeling tool.&lt;br /&gt;
&lt;br /&gt;
For efficient low-polygon objects, all numbers should stay relatively low even when large amounts of the content are placed on the baseboard.&lt;br /&gt;
&lt;br /&gt;
For efficient high-polygon objects with LOD, you should see a relatively low material and buffer count, and higher vertex and index counts. As you approach your content, the vertex and index counts will rise rapidly - moving away from your content, the vertex and index counts should drop substantially. A single object at highest LOD may have the same impact on the numbers as hundreds or thousands of objects at the lowest LOD.&lt;br /&gt;
&lt;br /&gt;
It is worth noting that the hardware vertex count may be significantly higher than what you might expect from looking at the vertex count inside of your modeling tool. This is due to the modeling tools representing any single point in 3D space as a single vertex, whereas the hardware may need to separate different smoothing groups and materials into separate vertices.&lt;br /&gt;
&lt;br /&gt;
In all cases, the number of hardware buffers should stay low - roughly one buffer per ten thousand vertices. It is best to measure this after you have placed a medium-to-large number of your test object onto the route. If you are seeing significantly higher buffer numbers than this, your object is likely to cause performance problems when used in quantity.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Address&amp;diff=56</id>
		<title>Help:WebBrowser Address</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Address&amp;diff=56"/>
		<updated>2009-07-05T21:07:25Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: This field shows the current page to which the user has navigated.  An address can also be typed here, although only addresses in the Trainz domain can be reached through the ingame browse...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This field shows the current page to which the user has navigated.  An address can also be typed here, although only addresses in the Trainz domain can be reached through the ingame browser.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Forward&amp;diff=55</id>
		<title>Help:WebBrowser Forward</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Forward&amp;diff=55"/>
		<updated>2009-07-05T21:05:12Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: When browsing through your history of web pages by using the back button, this button will move you one page &amp;#039;forward&amp;#039;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;When browsing through your history of web pages by using the back button, this button will move you one page &#039;forward&#039;.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Stop&amp;diff=54</id>
		<title>Help:WebBrowser Stop</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Stop&amp;diff=54"/>
		<updated>2009-07-05T21:03:36Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: This button will stop the current page from loading any more of itself in the web browser.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This button will stop the current page from loading any more of itself in the web browser.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Back&amp;diff=53</id>
		<title>Help:WebBrowser Back</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Back&amp;diff=53"/>
		<updated>2009-07-05T21:01:43Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: This button will take the user to the previous page visited.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This button will take the user to the previous page visited.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Refresh&amp;diff=52</id>
		<title>Help:WebBrowser Refresh</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Refresh&amp;diff=52"/>
		<updated>2009-07-05T21:00:31Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: This button will refresh, or reload, the current page in the web browser.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This button will refresh, or reload, the current page in the web browser.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Home&amp;diff=51</id>
		<title>Help:WebBrowser Home</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Home&amp;diff=51"/>
		<updated>2009-07-05T20:58:09Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: This button on the ingame web browser will take the user to the TS 2009 home page, where the latest news is displayed.  The home page also has links to the user&amp;#039;s profile, a gallery of Tra...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This button on the ingame web browser will take the user to the TS 2009 home page, where the latest news is displayed.  The home page also has links to the user&#039;s profile, a gallery of Trainz pictures, a community page, and a page describing the Download Station.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Go&amp;diff=50</id>
		<title>Help:WebBrowser Go</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:WebBrowser_Go&amp;diff=50"/>
		<updated>2009-07-05T20:54:52Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: This button on the web interface sends the user to the address that was entered in the address bar to the left.  Only pages within the Trainz domain can be visited using this in-game brows...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This button on the web interface sends the user to the address that was entered in the address bar to the left.  Only pages within the Trainz domain can be visited using this in-game browser.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Driver&amp;diff=49</id>
		<title>Help:Menu Driver</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Driver&amp;diff=49"/>
		<updated>2009-07-05T20:51:42Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Allows you to select a route to drive.&lt;br /&gt;
&lt;br /&gt;
The driver module provides more than just a train driving simulation.  Trainz provides you with a number of different ways of controlling the trains on your railroad.&lt;br /&gt;
&lt;br /&gt;
Firstly you can hop into the cab and explore the tracks from behind the throttle.  You can choose either the simple DCC speed control system or the realistic Cab controlls using each of the levers and switches in the cab.  You can watch the trains from trackside as they come thundering past, or from a birds-eye view tracking along with the train.&lt;br /&gt;
&lt;br /&gt;
You can even switch to a Map View and control the junctions, monitor signals, and control traffic flows from a 2D perspective.&lt;br /&gt;
&lt;br /&gt;
While running miltiple consists, you can choose to control each train yourself, or let the computer AI system control the trains as you control the switches.&lt;br /&gt;
&lt;br /&gt;
Finally, you can even issue specific orders to Drivers that you allocate to each train.&lt;br /&gt;
&lt;br /&gt;
In addition to the various systems of control, there is also a fully interactive industry model that automatically generates waybills for goods that need to be delivered to the various industrial sites.  Your task under this mode is to maintain the operation of these industries by controlling movement of goods and resources along your railroad.  You can watch as your train or the trains under the control of your drivers are each loaded and unloaded at the various industries.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:ITrainz_Chat&amp;diff=48</id>
		<title>Help:ITrainz Chat</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:ITrainz_Chat&amp;diff=48"/>
		<updated>2009-07-05T20:47:23Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;iTrainz Chat is a module that allows you to exchange instant messages with other online Trainz users.  You can also manage your contacts and see when your contacts are online.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:Main_Menu_Button&amp;diff=44</id>
		<title>Help:Main Menu Button</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:Main_Menu_Button&amp;diff=44"/>
		<updated>2009-05-29T15:36:08Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Will display a list of Options, Credits, Exit Game or Help&lt;br /&gt;
&lt;br /&gt;
In the Trainz Main Menu, there are 3 game modules to choose from:  Surveyor, Driver, and Railyard, as well as the Quit option.&lt;br /&gt;
&lt;br /&gt;
There are also links to the latest news, My Trainz, a Gallery, the Trainz Community, and the Download Station.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Driver&amp;diff=43</id>
		<title>Help:Menu Driver</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Driver&amp;diff=43"/>
		<updated>2009-05-29T15:30:31Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: added text from Trainz Railwayz manual&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Allows you to select a route to drive.&lt;br /&gt;
&lt;br /&gt;
The driver module provides more than just a train driving simulation.  Trainz provides you with a number of different ways of controlling the trains on your railroad.&lt;br /&gt;
&lt;br /&gt;
Firstly you can hop into the cab and explore the tracks from behind the throttle.  You can choose either the simple DCC speed control system or the realistic Cab controlls using each of the levers and switches in the cab.  You can watch the trains from trackside as they come thundering past, or from a birds-eye view tracking along with the train.&lt;br /&gt;
&lt;br /&gt;
You can even switch to a Map View and control the junctions, monitor signals, and control traffic flows from a 2D perspective.&lt;br /&gt;
&lt;br /&gt;
While running miltiple consists, you can choose to control each train yourself, or let the computer AI system control the trains as you control the switches.&lt;br /&gt;
&lt;br /&gt;
Finally, you can even issue specific orders to Drivers that you allocate to each train.&lt;br /&gt;
&lt;br /&gt;
In addition to the various systems of controll, tyhere is also a fully interactive industry model that automatically generates waybills for goods that need to be delivered to the various industrial sites.  Your task under this mode is to maintain the operation of these industries by controlling movement of goods and resources along your railroad.  You can watch as your train or the trains under the control of your drivers are each loaded and unloaded at the various industries.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Quit&amp;diff=32</id>
		<title>Help:Menu Quit</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Help:Menu_Quit&amp;diff=32"/>
		<updated>2009-05-28T01:29:21Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: New page: This button will exit TS 2009&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This button will exit TS 2009&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Steam%22_container&amp;diff=717</id>
		<title>&quot;Steam&quot; container</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Steam%22_container&amp;diff=717"/>
		<updated>2009-03-23T01:28:19Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* starting-water */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The steam container is a top-level [[config.txt file]] entry used by [[KIND Steam-engine|Steam Enginespec]] assets.&lt;br /&gt;
&lt;br /&gt;
==Supported Tags==&lt;br /&gt;
&lt;br /&gt;
The Steam container supports the following tags. Each tag is show here with its default value.&lt;br /&gt;
&lt;br /&gt;
 steam&lt;br /&gt;
 {&lt;br /&gt;
 	boiler-volume 10.0&lt;br /&gt;
 	burn-rate 0.5&lt;br /&gt;
 	burn-rate-idle 0.01&lt;br /&gt;
 	firebox-heating-surface-area 20&lt;br /&gt;
 	firebox-efficiency 0.75&lt;br /&gt;
 	firebox-thermal-conductivity 10&lt;br /&gt;
 	firebox-plate-thickness 0.016&lt;br /&gt;
 	fuel-energy 27912000&lt;br /&gt;
 	fuel-specific-heat-capacity 1260&lt;br /&gt;
 	initial-boiler-temperature 373&lt;br /&gt;
 	max-coal-mass 1000&lt;br /&gt;
 	ideal-coal-mass 500&lt;br /&gt;
 	min-fire-temperature 500&lt;br /&gt;
 	max-fire-temperature 1300&lt;br /&gt;
 	minimum-volume 8.0&lt;br /&gt;
 	maximum-volume 9.0&lt;br /&gt;
 	fusible-plug-volume 7.5&lt;br /&gt;
 	boiler-heat-loss 2.0&lt;br /&gt;
 	piston-angular-offsets 0.0174,1.5254,3.0333,4.5413&lt;br /&gt;
 	piston-volume-min 0.0272&lt;br /&gt;
 	piston-volume-max 0.1505&lt;br /&gt;
 	piston-area 0.1734&lt;br /&gt;
 	safety-valve-low-pressure 1653&lt;br /&gt;
 	safety-valve-low-flow 0.05&lt;br /&gt;
 	safety-valve-high-pressure 1684&lt;br /&gt;
 	safety-valve-high-flow 0.1&lt;br /&gt;
 	shovel-coal-mass 5.0&lt;br /&gt;
 	water-injector-rate 3.0&lt;br /&gt;
 	water-injector-rate2 3.0&lt;br /&gt;
 	boiler-efficency-idle 0.75&lt;br /&gt;
 	boiler-efficency 0.4&lt;br /&gt;
 	boiler-efficency-min 0.25&lt;br /&gt;
 	speed 15.0&lt;br /&gt;
 	cutoff 0.4&lt;br /&gt;
 	blower-effect 0.5&lt;br /&gt;
 	blower-max-flow 2.5&lt;br /&gt;
 	starting-coal 500&lt;br /&gt;
 	starting-water 7500.0&lt;br /&gt;
 	starting-boiler-steam 10.0&lt;br /&gt;
 	steam-chest-volume 0.1233&lt;br /&gt;
 	steam-chest-max-flow 25.0&lt;br /&gt;
 	valve-lap-percent 0.05&lt;br /&gt;
 	hand-brake-max-force 1000&lt;br /&gt;
 	super-heating-constant 100&lt;br /&gt;
 	tractive-effort-constant 0.8&lt;br /&gt;
 	number-cylinders 2&lt;br /&gt;
 	number-power-strokes 2&lt;br /&gt;
 	legacy-piston-count 4&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
====boiler-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Metres cubed. This is the total capacity of the boiler.&lt;br /&gt;
&lt;br /&gt;
====burn-rate====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: How much coal (kg) is consumed per second when the loco is operating at the test parameters?&lt;br /&gt;
&lt;br /&gt;
====burn-rate-idle====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: How much coal (kg) is consumed per second when the loco is idle, purely to keep the fire burning?&lt;br /&gt;
&lt;br /&gt;
====firebox-heating-surface-area====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Surface area of the firebox used for heating water. In practice, most of the water heating is done through the firebox, not through the tubes. For this reason, the surface area quoted should be that of all used sides of the firebox - normally front, back, top, left, right. Larger areas result in more firebox to boiler heat transfer - both cooling the fire and heating the water.&lt;br /&gt;
&lt;br /&gt;
====firebox-efficiency====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). How efficient is the firebox - how much of the fire output is captured and used, and how much is lost? Higher numbers here mean the fire heats up faster, and stays hotter longer when you are trying to cool it down after a run. Lower numbers result in a more lethargic fire which takes longer to heat up, and will cool more quickly.&lt;br /&gt;
&lt;br /&gt;
====firebox-thermal-conductivity====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Technically watts per metre kelvin, but real numbers are no good here - many factors mean a steam loco is far from an ideal heat conductor that the equations are based around. 10 seems to be a good number, found by experimentation. A higher number here will mean more heat transfer from the fire to the boiler - resulting in higher pressure but also less fire temperature. Lower numbers will result in more fire temperature, but less heating.&lt;br /&gt;
&lt;br /&gt;
====firebox-plate-thickness====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Thickness of firebox plate in metres.&lt;br /&gt;
&lt;br /&gt;
====fuel-energy====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Joules per kilogram. Amount of energy (joules) that can be released by burning 1 kg of the fuel.&lt;br /&gt;
&lt;br /&gt;
====fuel-specific-heat-capacity====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Joules per kilogram kelvin. Amount of energy (joules) needed to raise the temperature of 1 kg of the fuel substance by one degree kelvin.&lt;br /&gt;
&lt;br /&gt;
====initial-boiler-temperature====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees kelvin. This value will determine whether the engine is &#039;ready to go&#039; or needs &#039;warming up&#039; prior to a run when first placed.&lt;br /&gt;
&lt;br /&gt;
====max-coal-mass====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Maximum amount (kg) of coal it&#039;s possible to cram in the firebox, before it starts falling out.&lt;br /&gt;
&lt;br /&gt;
====ideal-coal-mass====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ideal amount (kg) of coal to have in the firebox for optimal burning. This value will appear as &amp;quot;100%&amp;quot; on the interface, and will burn the best.&lt;br /&gt;
&lt;br /&gt;
====min-fire-temperature====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees K. A higher value here makes the loco &#039;wake up&#039; quicker, but too high a value will make it build pressure even when left idle.&lt;br /&gt;
&lt;br /&gt;
====max-fire-temperature====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees K. Lowering top end fire temperature will have the effect of limiting both top end boiler pressure and maximum water heating ability when working hard.&lt;br /&gt;
&lt;br /&gt;
====minimum-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Litres. This is the amount of water in the boiler that corresponds to the bottom of the sight glass - 0% on the interface.&lt;br /&gt;
&lt;br /&gt;
====maximum-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Litres. This is the amount of water in the boiler that corresponds to the top of the sight glass - 100% on the interface. It should be above the &#039;minimum volume&#039;.&lt;br /&gt;
&lt;br /&gt;
====fusible-plug-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume in Litres. This is the amount of water in the boiler at which point the fusible plugs will kick in. It should be below the &#039;minimum volume&#039;.&lt;br /&gt;
&lt;br /&gt;
====boiler-heat-loss====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: TBD&lt;br /&gt;
&lt;br /&gt;
====piston-angular-offsets====&lt;br /&gt;
:Type: Decimal Array&lt;br /&gt;
:Desc: Values are specified in radians. Amount of wheel rotation required to rotate each piston to maximum travel from starting position. Will depend on how the valve gear has been animated in max. One value per piston.&lt;br /&gt;
&lt;br /&gt;
====piston-volume-min====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: clearance volume of a piston - i.e. the volume at minimum travel. This value greatly affects the level of front-end power available to a specific loco.&lt;br /&gt;
&lt;br /&gt;
====piston-volume-max====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Total volume of a piston at maximum travel - i.e. the swept volume (stroke*area) plus the clearance volume.&lt;br /&gt;
&lt;br /&gt;
====piston-area====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Surface area of the piston (metres squared).&lt;br /&gt;
&lt;br /&gt;
====safety-valve-low-pressure====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Pressure (absolute, and in kPa) at which the low pressure safety valve will blow.&lt;br /&gt;
&lt;br /&gt;
====safety-valve-low-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms per second of steam that escape through the low pressure safety valve. Note: Too high a value will result in a &#039;sawtooth&#039; boiler pressure, and repeated short hisses from the safety valve.&lt;br /&gt;
&lt;br /&gt;
====safety-valve-high-pressure====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Pressure (absolute, and in kPa) at which the high pressure safety valve will blow.&lt;br /&gt;
&lt;br /&gt;
====safety-valve-high-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms per second of steam that escape through the high pressure safety valve. Remember that both valves will be open at this point.&lt;br /&gt;
&lt;br /&gt;
====shovel-coal-mass====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: How much coal does the fireman move each time he shovels?&lt;br /&gt;
&lt;br /&gt;
====water-injector-rate====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: litres of water moved into the boiler per second through the first injector when fully on.&lt;br /&gt;
&lt;br /&gt;
====water-injector-rate2====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: litres of water moved into the boiler per second through the second injector when fully on.&lt;br /&gt;
&lt;br /&gt;
====boiler-efficency-idle====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). Maximum efficiency of boiler - e.g. when loco idle.&lt;br /&gt;
&lt;br /&gt;
====boiler-efficency====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). Efficiency of boiler when working at test parameters.&lt;br /&gt;
&lt;br /&gt;
====boiler-efficency-min====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Minimum boiler efficiency. Calculated efficiency will not fall below this value.&lt;br /&gt;
&lt;br /&gt;
====speed====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Speed of test run on which test parameters are based.&lt;br /&gt;
&lt;br /&gt;
====cutoff====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0). Position of cutoff control for test run.&lt;br /&gt;
&lt;br /&gt;
====blower-effect====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Multiplier. Sets the effectiveness of the blower. Value is the draft effect of working the loco at the test parameters compared with running the blower at maximum boiler pressure but the loco otherwise idle.&lt;br /&gt;
&lt;br /&gt;
====blower-max-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms per second of steam used by blower at max boiler pressure and max setting.&lt;br /&gt;
&lt;br /&gt;
====starting-coal====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Kilograms of coal to start with in the firebox. Ideal value will be used if this is not present.&lt;br /&gt;
&lt;br /&gt;
====starting-water====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume of water (in Litres) to start with in the boiler. 50% level (halfway between &#039;max&#039; and &#039;min&#039; on the sight glass) will be used if this is not present.&lt;br /&gt;
&lt;br /&gt;
====starting-boiler-steam====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Amount of steam to start with in the boiler. If this is too high, a false &#039;high pressure&#039; will be reported at initial startup (but working the loco will reduce it). If it is too low, the boiler will boil water to build pressure, so using a low value (maybe even zero?) is suggested.&lt;br /&gt;
&lt;br /&gt;
====steam-chest-volume====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Volume (metres cubed) of the steam chest.&lt;br /&gt;
&lt;br /&gt;
====steam-chest-max-flow====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Max flow (kilograms per second) of steam from boiler to steam chest with regulator fully open.&lt;br /&gt;
&lt;br /&gt;
====valve-lap-percent====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Ratio (0.0 -&amp;gt; 1.0)&lt;br /&gt;
&lt;br /&gt;
====hand-brake-max-force====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Maximum force exerted by handbrake.&lt;br /&gt;
&lt;br /&gt;
====super-heating-constant====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Degrees (kelvin) to increase temperature of steam between boiler and steam chest. High superheat results in more power at the front end.&lt;br /&gt;
&lt;br /&gt;
====tractive-effort-constant====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: &#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====number-cylinders====&lt;br /&gt;
:Type: Integer&lt;br /&gt;
:Desc: Number of cylinders.&lt;br /&gt;
&lt;br /&gt;
====number-power-strokes====&lt;br /&gt;
:Type: Integer&lt;br /&gt;
:Desc: Number of power strokes per revolution. Two is by far the most common number, but this can be other numbers in extreme cases.&lt;br /&gt;
&lt;br /&gt;
====legacy-piston-count====&lt;br /&gt;
:Type: Decimal&lt;br /&gt;
:Desc: Used for loading old (TRS2006) saved sessions. An omission in the TRS2006 save format causes a loco with a different number of pistons not to load properly. The number of pistons often needs to be changed when updating old enginespecs, as previously engines had to have twice as many single acting pistons, rather than the correct number of double acting pistons as they do now. This value is to record the old number of pistons so that old sessions can still be loaded.&lt;br /&gt;
&lt;br /&gt;
==Example steam container==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TBD&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Category:Config Container]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Surveyor_Tools_Feature_Requests&amp;diff=725</id>
		<title>Surveyor Tools Feature Requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Surveyor_Tools_Feature_Requests&amp;diff=725"/>
		<updated>2009-02-23T16:18:55Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* Requests */ request removed - already configurable in config.txt by using rollstep parameter.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is where the route-creation community gets to post all their surveyor tool feature requests. Request any surveyor tool additions or options that you think will enhance the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Requests==&lt;br /&gt;
&lt;br /&gt;
Requests are placed in this section by the community, for discussion and possible inclusion. Requests here may or may not make it into TS2009.&lt;br /&gt;
&lt;br /&gt;
* Could an API dll be created to interface with the assets database? Like something that can be used in writing a C# application to interface with Trainz? - Roman&lt;br /&gt;
: Maybe [[TrainzNativeInterface]] is what you needed? -Mike&lt;br /&gt;
&lt;br /&gt;
* It would be nice to have a DEM creation tool included with TRS2009, integrated into the game. Like TransDEM, but simpler to use, but with all the editing features of TransDEM (or at least some!)vector line creation, map textures, separate map-tile-objects for fine detail work etc. - Wayne&lt;br /&gt;
&lt;br /&gt;
* Direct vertex manipulation - the ability to adjust the height of one terrain vertex without affecting the adjoining vertices.  Would be very useful for fine-tuning terrain after getting the rough shape with the existing tools. - Curtis&lt;br /&gt;
&lt;br /&gt;
* Ability to lock the x-y movement of an item (but leave z able to move) - would help for basemap templates - it&#039;s easy to move them out of the way accidentally if they are hidden underground and you miss clicking on something else and click on them instead (they then snap to the cursor and move, but since they are hidden underground, the user doesn&#039;t realize they have moved until sometime later). - Curtis&lt;br /&gt;
: Add snapgrid 720 and snapmode 1 to the template config. You will then only be able to move it by a whole base board ~Andi&lt;br /&gt;
:: Nice tip - thanks, Andi! -Curtis&lt;br /&gt;
&lt;br /&gt;
* Ability to load a scaled, possibly georeferenced map template (.jpg, perhaps) to help guide track, terrain, and object placement. - Curtis&lt;br /&gt;
&lt;br /&gt;
* A window that shows all textures loaded on a route, with the ability to click on the texture and be taken to when each texture is used.  Would be nice if textures could be removed from the map here, as well as being selected to be painted on the map.  Bonus for being able to replace a given texture with something else. - Curtis&lt;br /&gt;
&lt;br /&gt;
* In the texture picker window, always show the name of the texture to better help when searching for a particular one. - Curtis&lt;br /&gt;
&lt;br /&gt;
* A window that shows all items used in a map (maybe broken out by surveyor categories?) that allows deletion and replacement with other objects.  Would be especially useful for replacing track.  Bonus for being able to click on the item and be cycled through all the positions on the map that the object has been placed. - Curtis&lt;br /&gt;
&lt;br /&gt;
* Auto terrain generation, based on several user parameter inputs (desert &amp;lt;-&amp;gt; jungle); (flat &amp;lt;-&amp;gt; mountainous); (water level) etc. - Curtis&lt;br /&gt;
&lt;br /&gt;
* Or just a nice gui frontend to &amp;quot;Make Me a Map Aiden&amp;quot; - Curtis&lt;br /&gt;
&lt;br /&gt;
* Complete overhaul of session creation tools including a much larger editing window, copy/paste commands, smaller rule icons (so you can see more) and the ability to edit a session outside surveyor (i.e. text editor). - Natvander&lt;br /&gt;
&lt;br /&gt;
* Layers! Doesn&#039;t need to be too sophisticated to start with, just the facility to turn off the track or to turn off ground texturing would be a big gain. ~Andi&lt;br /&gt;
&lt;br /&gt;
* Allow the builder to designate what streets have traffic and which don&#039;t, or what type of traffic.  An example being one road might have heavy traffic, the other would have light. All done in surveyor. As opposed to using three or four types of the same road. - Chad&lt;br /&gt;
&lt;br /&gt;
* Ability to rotate assets on all 3 axis (x,y,z) - as an example, to be able to rotate a parked vehicle so it conforms to a slope. - Natvander&lt;br /&gt;
&lt;br /&gt;
* A keyboard shortcut to change texture direction in the Paint menu by 180 degrees. - Wreeder&lt;br /&gt;
&lt;br /&gt;
* A keyboard shortcut to cycle through the textures added to the Advance panel of the Paint menu. This would allow the user to add a group of textures with a common look to the Advance panel and quickly choose from that group while painting an area to create a large area without repeating patterns. For example, Dave Drake has created several sets of textures that blend together very well. But to use them together requires moving the mouse from the baseboard to the Paint panel over and over again. -Wreeder&lt;br /&gt;
&lt;br /&gt;
* Could the copy feature be made to recognize splines also?  Currently all it seems to pick up is ground textures and objects. It&#039;d be helpful, especially when making huge fields of rice (in my case) to just copy and paste the spline. - Chad&lt;br /&gt;
&lt;br /&gt;
* Might take too much work to do it, but I&#039;d love to see an &amp;quot;era&amp;quot; selector on the stations. This selection would define what years the passengers come from and change their clothing accordingly. There&#039;s a number of third party stations that do this, though I think most require editing the config file.  Maybe an extension of the &amp;quot;chameleon&amp;quot; texture trick you see on rolling stock. - Chad&lt;br /&gt;
&lt;br /&gt;
* Full spline handle control. While track and other splines seem to be based on cubic splines, a user does not have full control via handles, like it is possible in most vector programs (e.g. Adobe Illustrator, Corel Draw!, Inkscape). Instead, the control points are &amp;quot;auto-magically&amp;quot; calculated from the successor or predecessor nodes. Trainz should support such handles, with both smooth and symmetric modes for the nodes (same tangent and same tangent/length, resp.) for tracks. The current automatic way could be retained as a third, default mode. For other splines, a corner mode should be available as well. Handles should be three-dimensional, i.e. may have a different height than the related node. While this extension would not allow the user to create mathematical exact fixed-radius arcs and clothoids, these could be approximated much better than today. ~KlausM&lt;br /&gt;
&lt;br /&gt;
* superelevation. Each node would receive an angle that represents the superelevation. Beween two nodes, the angle is interpolated in the same way as coordinates are (i.e. via cubic spline interpolation) ~KlausM&lt;br /&gt;
&lt;br /&gt;
* Track Connection Toggle.  Currently, in order to prevent track from linking to another existing section, the user must hold down the shift key and then click in the area they wish.  Problem is, that doesn&#039;t always seem to work. Nine times out of ten it does, but there&#039;s always that one time when the thing connects and while that doesn&#039;t damage the route, it is a bit annoying.  Could we have a setting in the options where we could toggle whether or not the track will automatically connect to form a spline junction? This could be a setting for splines themselves also. - Chad&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;user defined functions&#039;&#039; button which allows CC to write functions which enables track laying, spline laying, object placing etc. via coordinate input instead of using the imprecise mouse. Like in any 2D-CAD program. I already propose some ideas about this in the forum in the thread &#039;&#039;coordinate input&#039;&#039;. ~Michael Vogt&lt;br /&gt;
&lt;br /&gt;
* Add to the function already in TRS2004 &amp;amp; TRS2006 where one can use the move button in the Scenery Tab to actually move the cameras (both the tracking and the fixed one) around. As in, let the user be able to also raise and lower the camera with the height adjustment tool. Before TS2009 I could do it indirectly by moving the camera by the move button (in the Scenery tab) on top of a grid point, go into Landscape Tab, read out the height on that point, add to it about 2m and then move camera slightly and then lower the ground point back to the height it was before I raised it. This makes it possible to set great camera views from the ground in very tight places, even underground - while the camera move button refuses to put the camera down into the ground as soon as the ground is very uneven. It is often lot of work, but worth it. By having the move function in TS2009 back, and even add to it by letting the height button tool work with the camera would save lot of work. As of all SP1 TS2009, I no longer can use the move scenery button to tweak the camera location, making it impossible for me to any longer set the ground cameras other places then high up in air when ground is very uneven. - Linda&lt;br /&gt;
&lt;br /&gt;
* To be able to ajust the length of day, ie Long summer days getting dark around 9pm getting daylight around 5am,  shorter winter days get dark around 5pm. Lots_Trains&lt;br /&gt;
&lt;br /&gt;
* Fine adjustment of building placement.  Could it be added that by holding &amp;quot;shift&amp;quot; or something, that the position of a building could be tweaked a bit finer than the current degree turning or movement?  It would aid in placing structures that are very close to or touching each other. -chad&lt;br /&gt;
&lt;br /&gt;
* Lockable orientation.  Ability to define what orientation buildings will have when placed on the map.  Allow people to choose N-S, E-W, and then &amp;quot;random.&amp;quot; That way, if you have a street running E-W, you could select that orientation and place buildings without having to monkey with turning them around to face like they need to. -Chad&lt;br /&gt;
: I&#039;d like to see this option, too. However, I would like to select the angle manually. This would be useful, if we have a street running 60 degrees and we want to add some street lights. Rotating every single object is very annoying. -Zyxist&lt;br /&gt;
&lt;br /&gt;
* Duplicating object properties. We choose an existing object, for example a house, and we can use its height and angle to place new houses. -Zyxist&lt;br /&gt;
&lt;br /&gt;
* Multiple water levels: Allow water to be placed on several different levels, but don&#039;t force it to &amp;quot;link&amp;quot; when moved.  Maybe a shift command like tracks to prevent the linking. - Chad&lt;br /&gt;
&lt;br /&gt;
* Make Catenary snap to the track.  I think it did this at one time, but now it&#039;s a matter of trying to line everything up and hoping it works. Letting it snap to the track would make route building much easier. - Chad&lt;br /&gt;
&lt;br /&gt;
* Allow infinite elevation to be set in world origin.  At the moment world origin can only be set to 100m above sea level, but I am building a route which has all features between 500m and 800m above sea level.  -  Bill69&lt;br /&gt;
&lt;br /&gt;
* Duplicate &#039;straighten track&#039; button onto the Scenery/Splines panel (assuming that it will still work there of course) ~Andi&lt;br /&gt;
&lt;br /&gt;
* Catenary: An option for the height of the wire above the rails with ramping between different heights. Height settings force pantographs following the wire height level. - fatuli&lt;br /&gt;
&lt;br /&gt;
==Short List==&lt;br /&gt;
Requests are placed into this section by Auran if they are somewhat likely to make it into the TS2009 product. Requests from this list will be serviced by Auran as time permits.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Ability to see an item&#039;s description field in surveyor - often, the description has hints on how to use the object. - Curtis&lt;br /&gt;
&lt;br /&gt;
* Can we have a little more control over height increments (we already have rotstep, we just need heightstep to go with it) ~Andi&lt;br /&gt;
&lt;br /&gt;
* Can we organize things so that the Track/DefaultDirection button will work on suitably scripted fixed track junctions. We can use object properties to do this but it would be a lot more intuitive to have the same tool for fixed track and for spline junctions. ~Andi&lt;br /&gt;
&lt;br /&gt;
* Allow the camera to be panned out further.  For routes with lots of mountains, it would help to be able to pull further away from the route to see what work you&#039;ve done. - Chad&lt;br /&gt;
&lt;br /&gt;
* Altering the &amp;quot;Ordered List&amp;quot; and/or &amp;quot;Reset list&amp;quot; so the repeated child rules can be stopped by an event (e.g. trigger).  I&#039;m not sure if this belongs in surveyor (as it&#039;s a session issue) or scripting. - Natvander&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==TS2009 Complete==&lt;br /&gt;
&lt;br /&gt;
* Let me pinpoint paint in small areas like an air brush. -BG&lt;br /&gt;
: &#039;&#039;Surveyor includes a new [[Ground Types|5m ground grid]] which improves the ability to paint small areas.&lt;br /&gt;
&lt;br /&gt;
* Filters! CMP filtering is generally quite good but can we be just a little more comprehensive, allowing a search by asset kind and adding a &#039;Not&#039; button for every field for instance.  Now having achieved that can we move exactly the same search and filtering facilities into Surveyor rather than having that funny little icon hidden away at the top. ~Andi&lt;br /&gt;
: [[TS2009]] includes comprehensive surveyor filters.&lt;br /&gt;
&lt;br /&gt;
* Kuid (asset) replacement tool - for all assets including textures.  This may prove essential when we are required to bring our pre 09 routes up to 09 standard. - Natvander&lt;br /&gt;
: &#039;&#039;We won&#039;t have a way to replace anything with anything - but hopefully the common types can be replaced in a simple fashion.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* Let me paint shade shadows on tracks or buildings or under trees. -BG&lt;br /&gt;
: &#039;&#039;Use TS2009 decals for this.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Rejected==&lt;br /&gt;
If there&#039;s a request that we&#039;re clearly not going to entertain at the current time, we&#039;ll move it to here. This includes both flat rejections and also requests which sound good but won&#039;t be done for the next version of Trainz.&lt;br /&gt;
&lt;br /&gt;
* Track should not dip down below the surface when a climbing grade is added to it. -BG&lt;br /&gt;
: &#039;&#039;You can either let the track follow the ground, or you can specify a grade. If you do the first, then Trainz is responisble for ensuring that it stays above the ground. If you do the second, then you are. ~chris&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Possibility to create a real vertical rock terrain or better some over hanging rock terrain. - Sister&lt;br /&gt;
: &#039;&#039;I hear you! I&#039;m also a big fan of this concept. Unfortunately, this won&#039;t be possible in the TS2009 timeframe. ~chris&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* More a feature than a tool - change LOD from % of screen to distance from.  This will fix LOD issues with assets that have varied profiles (e.g. long but narrow stations), and will make creating the LOD file alot easier and more consistent than what is currently is. - Natvander&lt;br /&gt;
: &#039;&#039;I think you&#039;ll find that the example you gave doesn&#039;t actually change LODs as you spin it, as the bounding sphere is used for the screen-space calculation. But you&#039;re right, this request doesn&#039;t belong here. ~chris&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Have 20m 40m and 80m Square boards for use at greater viewing distances allowing Trainz to have a greater viewing distance for minimal resource use. perhaps even have these boards have no objects and simpler textures added to them.  Surley you have the tech developed for joining the 5m to 10m boards surley its a simple jump of the same tech to allow greater board sizes. - Lots Trains&lt;br /&gt;
: &#039;&#039;View distance has nothing to do with resource usage. Also, please do not put requests directly into the shortlist. ~chris&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* This time around when you change the interface skin colours from Maroon to purple polka dots can you have somebody check that both black and white text are actually legible in the default browsers? ~Andi&lt;br /&gt;
: &#039;&#039;We can&#039;t guarantee you any particular default color, so if you&#039;re going to use a defined RGB value, you should always provide a defined background color as well. We will be making sure that the default text color is legible, and also that color schemes used by built-in rules are legible. ~chris&#039;&#039; &lt;br /&gt;
: -&#039;&#039;Historically authors have used black or white without setting a background since the background in TRS was always a mid grey. The problem in TC is that &#039;&#039;legacy&#039;&#039; content with black text built on this assumption and which is never going to get updated is illegible, that&#039;s the issue I&#039;m raising. Assuming you stay with almost black, how easy would it be to check for this and change their text colour to something else?&#039;&#039;&lt;br /&gt;
:: &#039;&#039;We can&#039;t really do much for the existing non-Auran assets, however the TS2009 color scheme is unlikely to conflict.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* Could you make it so when an object is missing and the system asks if we wish to delete it, it lists the KUID of the item?  Maybe records it somewhere like an error log so we could track them down if we need to? - Chad&lt;br /&gt;
: &#039;&#039;Why is this necessary? Doesn&#039;t CMP give you all this info already? ~chris&#039;&#039;&lt;br /&gt;
:: Not exactly. I mean something in place of the &amp;quot;delete missing assets&amp;quot; pop up.  Something that would tell what type of asset it is, Eg: Structure, Road, Spline, Etc. As well as the country of origin of it.&lt;br /&gt;
:: &#039;&#039;We don&#039;t necessarily have that information if the asset is missing. If you want the full details of any (known) missing assets, CMP provides all the functionality you should need.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* When a section of track has been &amp;quot;straightened&amp;quot;, it should not flex when a curve or turnout is added to it. -BG&lt;br /&gt;
: &#039;&#039;Track needs to smoothly transition - you can&#039;t connect two straight tracks at an angle. That said, I&#039;m not really sure what situation you&#039;re referring to here. Could you provide an example?&#039;&#039; ~chris&lt;br /&gt;
: &#039;&#039;Rejected due to lack of updates.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* More diversive traffic.  Currently street traffic only contains simple cars and vans.  Why not extend that to have higher detail trucks, busses, motorcycles, and tractor-trailers. (The latter could, and would probably need to be, two part to allow it to track properly around curves.) - Chad&lt;br /&gt;
: &#039;&#039;This isn&#039;t a tool requirement.  You can simply download/create more road traffic and add them to the map/region&#039;s traffic list.  My route has plenty of era/location specific cars and trucks (the articulation of semis would be a nice feature). - Natvander&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Could road traffic turn not only to the left? I think will be good to make it proportional to roads&#039; carrates -Mike&lt;br /&gt;
: &#039;&#039;This isn&#039;t a surveyor tools request.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* I really don&#039;t expect this to happen.  It has been a problem since the first issue of Trainz.  I would like to see the rain and the snow stop falling when a train enters a tunnel.  Having it rain or snow inside a tunnel, is, at best, silly.&lt;br /&gt;
Hoping -sjacks&lt;br /&gt;
: &#039;&#039;This isn&#039;t a surveyor tools request.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* Not sure if this is scripting or not, but could automobiles (traffic) be made to obey stop signals at intersections?  Maybe include this in the object so a car stops, waits, and then drives on.  Possibly include them turning off onto side streets, etc.  (I know the latter has been done to some degree by third party users.) - Chad&lt;br /&gt;
: &#039;&#039;This isn&#039;t a surveyor tools request.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* Make Junction Controllers work again.  Back in 2004 (and UTC I think) someone came out with this neat little tool that when placed in surveyor, would allow one switch to control another.  Usually used in a crossover, it meant that when you opened one switch, it would open the opposing one, and when you closed one, they both closed.  The object was obsoleted by a junction control rule.  Problem is not all users know how to, or are willing to do those.  This little object did it for them though.  The Kuid was kuid2_31293_23003_1.  - Chad&lt;br /&gt;
: &#039;&#039;This isn&#039;t a surveyor tools request. A content creator would need to take this task on, and liaise with Auran if they find any game bugs or problem.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
* Pedestrian traffic.  Similar to roads, perhaps include a series of sidewalk splines and genraters that produce pedestrians at regular intervals. Major help for those urban streetcar lines. - Chad&lt;br /&gt;
: &#039;&#039;This isn&#039;t a surveyor tools request.&#039;&#039; ~chris&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Feature Request]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Class_Vehicle&amp;diff=287</id>
		<title>Class Vehicle</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Class_Vehicle&amp;diff=287"/>
		<updated>2008-12-30T00:05:16Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* SetRunningNumber */ fixed typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*[[TrainzScript Langage Reference|API Hierarchy]]&lt;br /&gt;
**[[Class GSObject|GSObject]] *&lt;br /&gt;
***[[Class GameObject|GameObject]]&lt;br /&gt;
****[[Class TrainzGameObject|TrainzGameObject]]&lt;br /&gt;
****[[Class PropertyObject|PropertyObject]] *&lt;br /&gt;
*****[[Class MeshObject|MeshObject]]&lt;br /&gt;
******[[Class MapObject|MapObject]]&lt;br /&gt;
*******[[Class Trackside|Trackside]]&lt;br /&gt;
********Vehicle&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*A vehicle is a single piece of rolling stock including locomotives and tenders.&lt;br /&gt;
*A vehicle is always part of a train, if a vehicle is decoupled and left alone TRS will create a new consist to include it.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Messages==&lt;br /&gt;
*Messages sent to and from Vehicle objects are listed below:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=75%|margin=15px}}&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Major&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Minor&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot;|&#039;&#039;&#039;Source&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&#039;&#039;&#039;Destination&#039;&#039;&#039;||bgcolor=&amp;quot;#EEEEEE&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
|[[Vehicle Messages|Vehicle]]||Derailed||Vehicle||Broadcast||Vehicle has derailed and can no longer be used. &lt;br /&gt;
|-&lt;br /&gt;
|[[Vehicle Messages|Vehicle]]||Coupled||Vehicle||Broadcast||Vehicle has coupled up with another vehicle. &lt;br /&gt;
|-&lt;br /&gt;
|[[Vehicle Messages|Vehicle]]||Decoupled||Vehicle||Broadcast||Vehicle has decoupled from another vehicle. &lt;br /&gt;
|-&lt;br /&gt;
|[[Vehicle Messages|Vehicle]]||Bad Couple||Vehicle||Broadcast||Vehicle has coupled with another vehicle at too high a velocity. &lt;br /&gt;
|-&lt;br /&gt;
|[[Vehicle Messages|Vehicle]]||Collided||Vehicle||Broadcast||Vehicle has collided with another vehicle.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Constants==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Coupler Flags===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=425|public define int  COUPLE_NONE = 0||Neither coupler.&lt;br /&gt;
|-&lt;br /&gt;
|public define int COUPLE_FRONT = 1||Front coupler.&lt;br /&gt;
|-&lt;br /&gt;
|public define int COUPLE_BACK = 2||Back coupler.&lt;br /&gt;
|-&lt;br /&gt;
|public define int COUPLE_BOTH = COUPLE_FRONT &amp;amp;#166; COUPLE_BACK||Both couplers.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Direction Relationships===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=425|public define int  DIRECTION_NONE = 0||No known relationship.&lt;br /&gt;
|-&lt;br /&gt;
|public define int DIRECTION_FORWARD = 1||Forward, facing in the same direction.&lt;br /&gt;
|-&lt;br /&gt;
|public define int DIRECTION_BACKWARD = -1||Backward, facing in opposite directions.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Engine Types===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=425|public define int ENGINE_NONE = 0||Not a powered vehicle.&lt;br /&gt;
|-&lt;br /&gt;
|public define int ENGINE_STANDARD = 1||Diesel, Diesel-Electric, Electric.&lt;br /&gt;
|-&lt;br /&gt;
|public define int ENGINE_STEAM = 2||Steam powered.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Vehicle Type Flags===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=425|public define int TYPE_LOCOMOTIVE = 1||Vehicle is a powered locomotive.&lt;br /&gt;
|-&lt;br /&gt;
|public define int TYPE_TENDER = 2||Vehicle carries fuel for a locomotive.&lt;br /&gt;
|-&lt;br /&gt;
|public define int TYPE_HAS_INTERIOR = 4||Vehicle has an interior. This does not necessarily mean that it is a lcomotive.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Members==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableHeader|width=95%|margin=15px}}&lt;br /&gt;
|width=425|&amp;lt;b&amp;gt;public IndustryProductInfoCollection  vehicleProductInfoCollection&amp;lt;/b&amp;gt;||A data object that allows tracking of products and associated assets &amp;amp; queues.&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Methods==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BeginLoad===&lt;br /&gt;
{{MethodHeader|float BeginLoad(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The time required, in seconds, for the activity to complete.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float BeginLoad(LoadingReport report) {&lt;br /&gt;
    DoStuff(report);&lt;br /&gt;
    return 10.0;&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
*This is a callback method which should be overridden by the script writer to perform customised activities before loading at an industry.&lt;br /&gt;
*These include such operations as particle effects and animations.&lt;br /&gt;
*The report parameter provides details of the industries and vehicles involved and of their spatial relationship. &lt;br /&gt;
*It is the responsibility of the script writer to determine the time required for these activities and to return this in the method result.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BeginUnload===&lt;br /&gt;
{{MethodHeader|float BeginUnload(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The time required, in seconds, for the activity to complete.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float BeginLoad(LoadingReport report) {&lt;br /&gt;
    DoStuff(report);&lt;br /&gt;
    return 10.0;&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
*This is a callback method which should be overridden by the script writer to perform customised activities before loading at an industry.&lt;br /&gt;
*These include such operations as particle effects and animations.&lt;br /&gt;
*The report parameter provides details of the industries and vehicles involved and of their spatial relationship. &lt;br /&gt;
*It is the responsibility of the script writer to determine the time required for these activities and to return this in the method result.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CanLoadProductFromQueue===&lt;br /&gt;
{{MethodHeader|public bool CanLoadProductFromQueue(ProductQueue queue)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;queue&#039;&#039;&#039; = The queue to be queried.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the vehicle and queue are compatible and the queue can be used to load the vehicle, false otherwise.&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 if (CanLoadProductFromQueue(industryOutQueue)) {&lt;br /&gt;
    DoTheProcess();&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===CanUnloadProductToQueue===&lt;br /&gt;
{{MethodHeader|public bool CanUnloadProductToQueue(ProductQueue queue)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;queue&#039;&#039;&#039; = The queue to be queried.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the vehicle and queue are compatible and the queue can be used to unload the vehicle, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 if (CanUnloadProductToQueue(industryOutQueue)) {&lt;br /&gt;
    DoTheProcess();&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Couple===&lt;br /&gt;
{{MethodHeader|public native bool Couple(Vehicle other)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;other&#039;&#039;&#039; = Adjacent vehicle to couple to.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the operation was successfully completed, fale otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 if (Couple(vehicle2)) Interface.Print(&amp;quot;Success!&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Couples this vehicle to the given vehicle which must already be adjacent. &lt;br /&gt;
*When a vehicle is decoupled from another, the couplers are left in an unlocked state, even though the vehicles are flush against each other.&lt;br /&gt;
*This state will remain until the vehicles move a small distance apart. &lt;br /&gt;
*Sometimes you may wish to cause them to couple again and that is the intended use of this method. &lt;br /&gt;
*If the two vehicles involved are not adjacent then this method will have no effect.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===EndLoad===&lt;br /&gt;
{{MethodHeader|float EndLoad(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The time required, in seconds, for the activity to complete.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float EndLoad(LoadingReport report) {&lt;br /&gt;
    DoStuff(report);&lt;br /&gt;
    return 10.0;&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
*This is a callback method which should be overridden by the script writer to perform customised activities after loading at an industry.&lt;br /&gt;
*These include such operations as particle effects and animations.&lt;br /&gt;
*The report parameter provides details of the industries and vehicles involved and of their spatial relationship. &lt;br /&gt;
*It is the responsibility of the script writer to determine the time required for these activities and to return this in the method result.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===EndUnload===&lt;br /&gt;
{{MethodHeader|float EndUnload(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The time required, in seconds, for the activity to complete.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float EndUnload(LoadingReport report) {&lt;br /&gt;
    DoStuff(report);&lt;br /&gt;
    return 10.0;&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
*This is a callback method which should be overridden by the script writer to perform customised activities after unloading at an industry.&lt;br /&gt;
*These include such operations as particle effects and animations.&lt;br /&gt;
*The report parameter provides details of the industries and vehicles involved and of their spatial relationship. &lt;br /&gt;
*It is the responsibility of the script writer to determine the time required for these activities and to return this in the method result.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetAuxReservoirPressure===&lt;br /&gt;
{{MethodHeader|public native float GetAuxReservoirPressure(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current auxiliary reservoir pressure of this vehicle.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float ARP = GetAuxReservoirPressure();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetBogeyList===&lt;br /&gt;
{{MethodHeader|public native Bogey[ ] GetBogeyList(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*An array containing references to all the Bogey objects attached to this vehicle.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Bogey[] bogies = GetBogeyList();&lt;br /&gt;
;Notes&lt;br /&gt;
*Bogies are indexed in the same numerical order as they are listed in &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
*Invisible bogies etc. are included.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetBrakeCylinderPressure===&lt;br /&gt;
{{MethodHeader|public native float GetBrakeCylinderPressure(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current brake cylinder pressure of this vehicle. &lt;br /&gt;
;Syntax&lt;br /&gt;
 float BCP = GetBrakeCylinderPressure();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetBrakePipePressure===&lt;br /&gt;
{{MethodHeader|public native float GetBrakePipePressure(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current brake pipe pressure of this vehicle.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float BPP = GetBrakePipePressure();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetCabinSwayAmount===&lt;br /&gt;
{{MethodHeader|public native float GetCabinSwayAmount(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The cabin sway amount for this vehicle.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float CSA = GetCabinSwayAmount();&lt;br /&gt;
;Notes&lt;br /&gt;
*Higher positive values indicate higher levels of cabin sway while a 0.0 indicates no cabin sway.&lt;br /&gt;
*See also [[#SetCabinSwayAmount|SetCabinSwayAmount()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetCouplerBreakageEnabled===&lt;br /&gt;
{{MethodHeader|public native bool GetCouplerBreakageEnabled(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if coupler breakages are enabled on this vehicle, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 if (GetCouplerBreakageEnabled()) Interface.Print(&amp;quot;Drive carefully to avoid breaking the couplers&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetCouplingDirection===&lt;br /&gt;
{{MethodHeader|public native int GetCouplingDirection(Vehicle other)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;other&#039;&#039;&#039; = Adjacent vehicle to couple to.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Direction Relationships|Direction Relationship]] constants indicating the direction of a neighbouring vehicle, relative to the direction of the caller.&lt;br /&gt;
;Syntax&lt;br /&gt;
 bool direction = GetCouplingDirection(vehicle2);&lt;br /&gt;
;Notes&lt;br /&gt;
*If the result is DIRECTION_FORWARD then both vehicles have the same orientation.&lt;br /&gt;
*If the result is DIRECTION_BACKWARD then the two vehicles face in opposite directions.&lt;br /&gt;
*The fact that this method returns a value does not mean that it is possible for the two vehicles to couple.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetCouplingStress===&lt;br /&gt;
{{MethodHeader|public native float GetCouplingStress(Vehicle other)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;other&#039;&#039;&#039; = Other vehicle in the same consist to query.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The calculated coupling stress between the two vehicles in kilonewtons (kN);&lt;br /&gt;
;Syntax&lt;br /&gt;
 float kn = GetCouplingStress(vehicle2);&lt;br /&gt;
;Notes&lt;br /&gt;
*&amp;lt;float color=red&amp;gt;Must the two vehicles be adjacent?&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDefaultCabinSwayAmount===&lt;br /&gt;
{{MethodHeader|public native float GetDefaultCabinSwayAmount(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The default cabin sway amount for this vehicle as defined in &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float CSA = GetCabinSwayAmount();&lt;br /&gt;
;Notes&lt;br /&gt;
*Higher positive values indicate higher levels of cabin sway while a 0.0 indicates no cabin sway.&lt;br /&gt;
*See also [[#SetCabinSwayAmount|SetCabinSwayAmount()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDefaultMaximumCouplerCompressionStress===&lt;br /&gt;
{{MethodHeader|publc native float GetDefaultMaximumCouplerCompressionStress(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The default maximum coupler expansion stress value for this vehicle in kilonewtons (kN), as defined in &#039;&#039;config.txt&#039;&#039;. &lt;br /&gt;
;Syntax&lt;br /&gt;
 float DMCS = GetDefaultMaximumCouplerCompressionStress();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumCouplerCompressionStress|SetMaximumCouplerCompressionStress()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDefaultMaximumCouplerExpansionStress===&lt;br /&gt;
{{MethodHeader|public native float GetDefaultMaximumCouplerExpansionStress(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The default maximum coupler expansion stress value for this vehicle in kilonewtons (kN), as defined in &#039;&#039;config.txt&#039;&#039;. &lt;br /&gt;
;Syntax&lt;br /&gt;
 float DMCE = GetDefaultMaximumCouplerExpansionStress();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumCouplerExpansionStress|SetMaximumCouplerExpansionStress()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDefaultMaximumCoupleVelocity===&lt;br /&gt;
{{MethodHeader|public native float GetDefaultMaximumCoupleVelocity(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The default maximum speed at which this vehicle can be coupled to without breaking the coupler, as defined in &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float DMCV = GetDefaultMaximumCoupleVelocity();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumCoupleVelocity|SetMaximumCoupleVelocity()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDefaultMaximumTractiveEffort===&lt;br /&gt;
{{MethodHeader|GetDefaultMaximumTractiveEffort()}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The default maximum tractive effort of this vehicle from its configuration in kilonewtons (kN), as defined in &#039;&#039;config.txt&#039;&#039;. &lt;br /&gt;
;Syntax&lt;br /&gt;
 float DMTE = GetDefaultMaximumTractiveEffort();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumTractiveEffort|SetMaximumTractiveEffort()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetDirectionRelativeToTrain===&lt;br /&gt;
{{MethodHeader|public native bool GetDirectionRelativeToTrain(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if this vehicle faces in the same direction as the train&#039;s current heading, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 bool vehicleToTrain = GetDirectionRelativeToTrain();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetEngineParam===&lt;br /&gt;
{{MethodHeader|public native float GetEngineParam(string param)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;param&#039;&#039;&#039; = One of the engine parameter strings listed below.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current value of the given engine parameter.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float pressure = GetEngineParam(&amp;quot;steam-boiler-pressure&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*Engine parameter strings you can use with this method are:&lt;br /&gt;
**&amp;quot;brake-cylinder-pressure&amp;quot;&lt;br /&gt;
**&amp;quot;brake-pipe-pressure&amp;quot;&lt;br /&gt;
**&amp;quot;coal-mass&amp;quot;&lt;br /&gt;
**&amp;quot;current-drawn&amp;quot;&lt;br /&gt;
**&amp;quot;equaliser-pressure&amp;quot;&lt;br /&gt;
**&amp;quot;fire-temperature&amp;quot;&lt;br /&gt;
**&amp;quot;flow&amp;quot;&lt;br /&gt;
**&amp;quot;horn&amp;quot;&lt;br /&gt;
**&amp;quot;main-reservoir-pressure&amp;quot;&lt;br /&gt;
**&amp;quot;max-coal-mass&amp;quot;&lt;br /&gt;
**&amp;quot;max-fire-temperature&amp;quot;&lt;br /&gt;
**&amp;quot;no3-pipe-pressure&amp;quot;&lt;br /&gt;
**&amp;quot;steam-boiler-liquid-percent&amp;quot;&lt;br /&gt;
**&amp;quot;steam-boiler-pressure&amp;quot;&lt;br /&gt;
**&amp;quot;steam-piston-cycle&amp;quot;&lt;br /&gt;
**&amp;quot;wheelslip&amp;quot;&lt;br /&gt;
**&amp;quot;engine-force&amp;quot;&lt;br /&gt;
**&amp;quot;applied-force&amp;quot;&lt;br /&gt;
**&amp;quot;max-te&amp;quot;&lt;br /&gt;
*The format and meaning of each of these parameters is detailed in the Content Creation Guide.&lt;br /&gt;
*Some of the values refer only to steam engines.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetEngineType===&lt;br /&gt;
{{MethodHeader|public native int GetEngineType(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Engine Types|Engine Type]] constants describing the engine type of this vehicle.&lt;br /&gt;
;Syntax&lt;br /&gt;
 int eType = GetEngineType();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetLength===&lt;br /&gt;
{{MethodHeader|public native float GetLength(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The length of this vehicle in metres.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float length = GetLength();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetLoadTime===&lt;br /&gt;
{{MethodHeader|float GetLoadTime(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The time required, in seconds, for the activity to complete.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float GetLoadTime(LoadingReport report) {&lt;br /&gt;
    DoStuff(report);&lt;br /&gt;
    return 10.0;&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
*This is a callback method which informs the game engine of the time needed to load this vehicle.&lt;br /&gt;
*The method may be use to perform customised activities during the loading operation.&lt;br /&gt;
*These include such operations as particle effects and animations.&lt;br /&gt;
*The report parameter provides details of the industries and vehicles involved and of their spatial relationship. &lt;br /&gt;
*It is the responsibility of the script writer to determine the time required for these activities and to return this in the method result.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMass===&lt;br /&gt;
{{MethodHeader|public native float GetMass(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The mass of the vehicle in kilograms.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float mass = GetMass();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMaximumCouplerCompressionStress===&lt;br /&gt;
{{MethodHeader|publc native float GetMaximumCouplerCompressionStress(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The maximum coupler expansion stress value for this vehicle in kilonewtons (kN).&lt;br /&gt;
;Syntax&lt;br /&gt;
 float MCS = GetMaximumCouplerCompressionStress();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumCouplerCompressionStress|SetMaximumCouplerCompressionStress()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMaximumCouplerExpansionStress===&lt;br /&gt;
{{MethodHeader|public native float GetMaximumCouplerExpansionStress(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The maximum coupler expansion stress value for this vehicle in kilonewtons (kN).&lt;br /&gt;
;Syntax&lt;br /&gt;
 float DMCE = GetMaximumCouplerExpansionStress();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumCouplerExpansionStress|SetMaximumCouplerExpansionStress()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMaximumCoupleVelocity===&lt;br /&gt;
{{MethodHeader|public native float GetMaximumCoupleVelocity(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The  maximum speed at which this vehicle can be coupled to without breaking the coupler.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float MCV = GetMaximumCoupleVelocity();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumCoupleVelocity|SetMaximumCoupleVelocity()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMaximumTractiveEffort===&lt;br /&gt;
{{MethodHeader|GetMaximumTractiveEffort()}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The maximum tractive effort of this vehicle from its configuration in kilonewtons (kN). &lt;br /&gt;
;Syntax&lt;br /&gt;
 float MTE = GetMaximumTractiveEffort();&lt;br /&gt;
;Notes&lt;br /&gt;
*See [[#SetMaximumTractiveEffort|SetMaximumTractiveEffort()]].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetMyTrain===&lt;br /&gt;
{{MethodHeader|public native Train GetMyTrain(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A reference to the train of which this vehicle is part.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Train train = GetMyTrain();&lt;br /&gt;
;Notes&lt;br /&gt;
*All vehicles belong to a Train consist, even if a vehicle is not coupled to any other vehicle.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetProductRestriction===&lt;br /&gt;
{{MethodHeader|public ProductFilter GetProductRestriction(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current product restriction filter if any, null otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 ProductFilter filter = GetProductRestriction();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetRelationToTrack===&lt;br /&gt;
{{MethodHeader|public native int GetRelationToTrack(Buildable obj, string trackName)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;obj&#039;&#039;&#039; = Reference to a Buildable object.&lt;br /&gt;
*&#039;&#039;&#039;trackName&#039;&#039;&#039; = String representing the name of a track as defined in the Buildable&#039;s &#039;&#039;config.txt&#039;&#039;.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Direction Relationships|Direction Relationship]] constants indicating the direction of the vehicle, relative to the Buildable&#039;s attached track.&lt;br /&gt;
;Syntax&lt;br /&gt;
*This method will return either DIRECTION_FORWARD or DIRECTION_BACKWARD if the vehicle is on the track as specified by the arguments or on a directly neighboring track, otherwise DIRECTION_NONE will be returned.&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetRunningNumber===&lt;br /&gt;
{{MethodHeader|public native string GetRunningNumber(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The running (fleet identification) number of the vehicle.&lt;br /&gt;
;Syntax&lt;br /&gt;
 string fleetId = GetRunningNumber();&lt;br /&gt;
;Notes&lt;br /&gt;
*This value is set using [[#SetRunningNumber|SetRunningNumber()]] and should be restricted to alphanumeric characters and paces.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetSandingTractionMultiplier===&lt;br /&gt;
{{MethodHeader|public native float GetSandingTractionMultiplier(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*A wheelslip traction multiplier to apply when sand is in use.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float slipFactor = GetSandingTractionMultiplier();&lt;br /&gt;
;Notes&lt;br /&gt;
*The returned value will be greater than or equal to 1.0.&lt;br /&gt;
*See [[#SetSandingTractionMultiplier|SetSandingTractionMultiplier()]];&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetTrackGradient===&lt;br /&gt;
{{MethodHeader|public native float GetTrackGradient(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current track gradient as a percentage.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float gradient = GetTrackGradient();&lt;br /&gt;
;Notes&lt;br /&gt;
*The sign of the gradient is determined by the direction of this vehicle relative to the gradient.&lt;br /&gt;
*A negative sign indicates that the vehicle is facing down a gradient while a positive sign indicates the vehicle is facing up a gradient. &lt;br /&gt;
*The vehicle&#039;s direction may not match that of the train so the value returned here may not be what you expect.&lt;br /&gt;
*Use [[#GetDirectionRelativeToTrain|GetDirectionRelativeToTrain()]] to check this.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetUnloadTime===&lt;br /&gt;
{{MethodHeader|float GetUnloadTime(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The time required, in seconds, for the activity to complete.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float GetUnloadTime(LoadingReport report) {&lt;br /&gt;
    DoStuff(report);&lt;br /&gt;
    return 10.0;&lt;br /&gt;
 }&lt;br /&gt;
;Notes&lt;br /&gt;
*This is a callback method which informs the game engine of the time needed to unload this vehicle.&lt;br /&gt;
*The method may be use to perform customised activities during the unloading operation.&lt;br /&gt;
*These include such operations as particle effects and animations.&lt;br /&gt;
*The report parameter provides details of the industries and vehicles involved and of their spatial relationship. &lt;br /&gt;
*It is the responsibility of the script writer to determine the time required for these activities and to return this in the method result.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetVehicleTypeFlags===&lt;br /&gt;
{{MethodHeader|public native int GetVehicleTypeFlags(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*One of the [[#Vehicle Type Flags|Vehicle Type Flags]] representing what kind of vehicle the current object is. &lt;br /&gt;
;Syntax&lt;br /&gt;
 int flags = GetVehicleTypeFlags();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetVelocity===&lt;br /&gt;
{{MethodHeader|public native float GetVelocity(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current instantaneous velocity of the train in metres per second.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float speed = GetVelocity();&lt;br /&gt;
;Notes&lt;br /&gt;
*Use the [[Class Train#Measurement Conversion Multipliers|Measurement Conversion Multiplier]] constants for conversion to other units.&lt;br /&gt;
*For human consumption [[Class Train#GetSmoothedVelocity|Train.GetSmoothedVelocity()]] may be preferable.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GetWheelslipTractionMultiplier===&lt;br /&gt;
{{MethodHeader|public native float GetWheelslipTractionMultiplier(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*The current wheelslip traction multiplier value.&lt;br /&gt;
;Syntax&lt;br /&gt;
 float slip = GetWheelslipTractionMultiplier();&lt;br /&gt;
;Notes&lt;br /&gt;
*The returned value will be greater than or equal to 1.0.&lt;br /&gt;
*See [[#SetWheelslipTractionMultiplier|SetWheelslipTractionMultiplier()]];&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===IsInTunnel===&lt;br /&gt;
{{MethodHeader|public native bool IsInTunnel(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if this vehicle is in a tunnel, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 bool underground = IsInTunnel();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===IsOnBridge===&lt;br /&gt;
{{MethodHeader|public native void IsOnBridge(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if this vehicle is on a bridge, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 bool onBridge = IsOnBridge();&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LoadProduct===&lt;br /&gt;
{{MethodHeader|public bool LoadProduct(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the loading operation was successful, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 LoadProduct(report);&lt;br /&gt;
;Notes&lt;br /&gt;
*Loads products into this vehicle as defined by the given report. &lt;br /&gt;
*This method works by attempting to transfer products to this vehicle&#039;s queues if possible from the industry queue specified in report. &lt;br /&gt;
*The sequence of events for a loading operation as performed by this method is:&lt;br /&gt;
**Verify that an loading operation is possible with this vehicle by calling [[#CanLoadProductFromQueue|CanLoadProductFromQueue()]].&lt;br /&gt;
**[[#BeginLoad|BeginLoad()]] on this vehicle and [[Class Industry#BeginLoad|Industry.BeginLoad()]] on the industry specified in the report are called to perform any pre-loading events like animation or particle effects on the vehicle and industry respectively. &lt;br /&gt;
**Both of these methods return the amount of time required for a load operation and the LoadProduct() method sleeps for which ever of these times is the longer.&lt;br /&gt;
**The actual product transfer from the industry to the vehicle is performed by calling ProductQueue.TransferProductFrom() on this vehicle&#039;s queue(s).&lt;br /&gt;
**[[#GetLoadTime|GetLoadTime()]] on this vehicle and [[Class Industry#GetLoadTime|Industry.GetLoadTime()]] are called. Again, LoadProduct() sleeps for which ever is the longer of the times returned.&lt;br /&gt;
**[[#EndLoad|EndLoad()]] and [[Class Industry#EndLoad|Industry.EndLoad()]] are called to perform any post-loading events. As before LoadProduct() sleeps for the longer time.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Reposition===&lt;br /&gt;
{{MethodHeader|public native bool Reposition(Train train, int myCoupleDir, int otherCoupleDir)&amp;lt;br&amp;gt;public native bool Reposition(Vehicle vehicle, int myCoupleDir, int otherCoupleDir)&amp;lt;br&amp;gt;public native bool Reposition(TrackMark mark, bool direction)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;train&#039;&#039;&#039; = Train to attach the vehicle to.&lt;br /&gt;
*&#039;&#039;&#039;vehicle&#039;&#039;&#039; = Vehicle to attach the vehicle to.&lt;br /&gt;
*&#039;&#039;&#039;myCoupleDir&#039;&#039;&#039; = The end of the current vehicle that will be coupled, use either COUPLE_FRONT or COUPLE_BACK.&lt;br /&gt;
*&#039;&#039;&#039;otherCoupleDir&#039;&#039;&#039; = The end of the target vehicle that will be coupled to, use either COUPLE_FRONT or COUPLE_BACK. &lt;br /&gt;
*&#039;&#039;&#039;mark&#039;&#039;&#039; = Trackmark to move this vehicle to.&lt;br /&gt;
*&#039;&#039;&#039;direction&#039;&#039;&#039; = Direction for the vehicle, relative to the TrackMark.&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the operation was successfully completed, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 Reposition(Train3,COUPLE_FRONT,COUPLE_BACK);&lt;br /&gt;
 Reposition(Vehicle5,COUPLE_FRONT,COUPLE_BACK);&lt;br /&gt;
 Reposition(Mark9,true);&lt;br /&gt;
;Notes&lt;br /&gt;
*Variant 1 moves the current vehicle and couples it to the specified train using the specified vehicle ends.&lt;br /&gt;
*Variant 2 moves the current vehicle and couples it to the specified vehicle using the specified vehicle ends.&lt;br /&gt;
*Variant 3 moves the current vehicle from its train to the specified trackmark, normally creating a new consist.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Reverse===&lt;br /&gt;
{{MethodHeader|public native bool Reverse(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the operation was successfully completed, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 if (Reverse()) Interface.Print(&amp;quot;Direction of &amp;quot; + GetName() + &amp;quot; reversed&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This method reverses the direction of the current vehicle in relation to its consist. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetBrakePipeEfficiency===&lt;br /&gt;
{{MethodHeader|public native void SetBrakePipeEfficiency(float efficiency)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;efficiency&#039;&#039;&#039; = A Normalised value in the range 0.0 .. 1.0 representing the efficiency of the brake pipe.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetBrakePipeEfficiency(0.5);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetBrokenBrakes===&lt;br /&gt;
{{MethodHeader|public native void SetBrokenBrakes(bool broken)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;broken&#039;&#039;&#039; = True to render the brakes non operational, false to repair them.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetBrokenBrakes(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetCabinSwayAmount===&lt;br /&gt;
{{MethodHeader|public native void SetCabinSwayAmount(float amount)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;amount&#039;&#039;&#039; = Cabin sway value greater than or equal to zero.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetCabinSwayAmount(2.5);&lt;br /&gt;
;Notes&lt;br /&gt;
*A value of zero removes all sway.&lt;br /&gt;
*Higher positive values increase the effect.&lt;br /&gt;
*The method is only of relevance to vehicles with interior views.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetCouplerBreakageEnabled===&lt;br /&gt;
{{MethodHeader|public native void SetCouplerBreakageEnabled(bool enabled)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;enabled&#039;&#039;&#039; = True enables simulation of coupler breakage.&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetCouplerBreakageEnabled(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetCouplingMask===&lt;br /&gt;
{{MethodHeader|public native void SetCouplingMask(int mask)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;mask&#039;&#039;&#039; = A mask specifying which of the vehilce&#039;s couplers are allowed to couple. &lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetCouplingMask(COUPLE_NONE); // prevents this vehicle from coupling to another in Driver mode.&lt;br /&gt;
;Notes&lt;br /&gt;
*The mask can be built using the [[#Coupler Flags|Coupler Flag]] constants.&lt;br /&gt;
*This method will not prevent vehicles from coupling in Surveyor, but takes effect in Driver mode. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetDecouplingMask===&lt;br /&gt;
{{MethodHeader|public native void SetDecouplingMask(int mask)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;mask&#039;&#039;&#039; = A mask specifying which of the vehilce&#039;s couplers are allowed to couple. &lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetDecouplingMask(COUPLE_NONE); // prevents this vehicle from uncoupling in Driver mode.&lt;br /&gt;
;Notes&lt;br /&gt;
*The mask can be built using the [[#Coupler Flags|Coupler Flag]] constants.&lt;br /&gt;
*This method will not prevent vehicles from uncoupling in Surveyor, but takes effect in Driver mode. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetHandbrake===&lt;br /&gt;
{{MethodHeader|public native void SetHandBrake(bool applied)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;applied&#039;&#039;&#039; = If true the handbrake is applied, if false the handbrake is released.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetHandBrake(true);&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetHeadlightColor===&lt;br /&gt;
{{MethodHeader|SetHeadlightColor(float red, float blue, float green)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;red, blue, green&#039;&#039;&#039; = RGB components of selected colour, expressed as normalised values.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetHeadlightColour(0.5,1.0,0.5); // sets colour to RGB:128,255,128&lt;br /&gt;
;Notes&lt;br /&gt;
*This method controls the color of the illumination produced by the headlights.&lt;br /&gt;
*It does not affect the color of the headlight coronas.&lt;br /&gt;
*This should method not be used to &amp;quot;turn off&amp;quot; the headlights, as even a black light will consume CPU time with lighting calculations.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetMaximumCouplerCompressionStress===&lt;br /&gt;
{{MethodHeader|public native void SetMaximumCouplerCompressionStress(float stress)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;stress&#039;&#039;&#039; = Maximum compressive stress in kilonewtons (kN), Use 0.0 to turn off this simulation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetMaximumCouplerCompressionStress(1500.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Sets the maximum coupler compressive stress value for this vehicle. &lt;br /&gt;
*This value refers to the maximum compressive stress which this vehicle&#039;s couplers need to experience before they break.&lt;br /&gt;
*This is effectively the stress that a coupler can withstand before it breaks.&lt;br /&gt;
*As a point of reference, a typical modern knuckle-type coupler can handle approximately 2500 kN of force before breaking.&lt;br /&gt;
*This is roughly equivalent to the weight of 2.5 million apples.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetMaximumCouplerExpansionStress===&lt;br /&gt;
{{MethodHeader|public native void SetMaximumCouplerExpansionStress(float stress)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;stress&#039;&#039;&#039; = Maximum tensile stress in kilonewtons (kN), Use 0.0 to turn off this simulation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetMaximumCouplerExpansionStress(1000.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Sets the maximum coupler tensile stress value for this vehicle. &lt;br /&gt;
*This value refers to the maximum tesnile stress which this vehicle&#039;s couplers need to experience before they break.&lt;br /&gt;
*This is effectively the stress that a coupler can withstand before it breaks.&lt;br /&gt;
*As a point of reference, a typical modern knuckle-type coupler can handle approximately 2500 kN of force before breaking.&lt;br /&gt;
*This is roughly equivalent to the weight of 2.5 million apples.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetMaximumCoupleVelocity===&lt;br /&gt;
{{MethodHeader|public native void SetMaximumCoupleVelocity(float velocity)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;velocity&#039;&#039;&#039; = The maximum speed in metres per second at which this vehicle can be coupled to without breaking a coupler. &lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetMaximumCoupleVelocity(10);&lt;br /&gt;
;Notes&lt;br /&gt;
*&amp;quot;Vehicle&amp;quot;,&amp;quot;BadCouple&amp;quot; are broadcast if this speed is exceeded.&lt;br /&gt;
*If a value of zero is used &amp;quot;Vehicle&amp;quot;,&amp;quot;BadCouple&amp;quot; messages will not be issued.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetMaximumTractiveEffort===&lt;br /&gt;
{{MethodHeader|public native void SetMaximumTractiveEffort(float maxTE)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;maxTE&#039;&#039;&#039; = The maximum tractive effort of this vehicle in kilonewtons (kN). &lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetMaximumTractiveEffort(1850.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*The maximum tractive effort of a vehicle refers to its maximum traction or pulling power measured in kilonewtons.&lt;br /&gt;
*This value is initially defined in the configuration of a vehicle asset but can be altered with this method. &lt;br /&gt;
*Generally, only locomotives will have tractive effort.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetPitchBasedOnSpeed===&lt;br /&gt;
{{MethodHeader|public native void SetPitchBasedOnSpeed(float factor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;factor&#039;&#039;&#039; = An arbitrary value used to vary the pitch of the train with its velocity.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetPitchBasedOnSpeed(2.5);&lt;br /&gt;
;Notes&lt;br /&gt;
*Pitch is rotation about an axis at right angles to the track direction.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetPitchBasedOnTrack===&lt;br /&gt;
{{MethodHeader|public native void SetPitchBasedOnTrack(bool pitch)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;pitch&#039;&#039;&#039; = True to enable the effect, false to disable.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetPitchBasedOnTrack(true);&lt;br /&gt;
;Notes&lt;br /&gt;
*Pitch is rotation about an axis at right angles to the track direction.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetProductDisabled===&lt;br /&gt;
{{MethodHeader|public native void SetProductDisabled(void)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*None&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetProductDisabled();&lt;br /&gt;
;Notes&lt;br /&gt;
*Disables the loading or unloading of any product, overriding any previous calls to SetProductRestriction().&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetProductRestriction===&lt;br /&gt;
{{MethodHeader|public native bool SetProductRestriction(Asset product)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;product&#039;&#039;&#039; = Asset to to which this vehicle&#039;s load is to be restricted.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if successful, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetProductRestriction(coal);&lt;br /&gt;
;Notes&lt;br /&gt;
*Restricts this vehicle to only allow the given product. &lt;br /&gt;
*When a product restriction is in effect, only that product may be either loaded or unloaded. &lt;br /&gt;
*This method overrides any previous call to SetProductDisabled().&lt;br /&gt;
*If the product parameter is null, any product compatible with this vehicle can be loaded/unloaded. &lt;br /&gt;
*If it is a product that is not compatible with this vehicle, no restriction is set and false will be returned. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetQueueInitialCount===&lt;br /&gt;
{{MethodHeader|public void SetQueueInitialCount(ProductQueue queue, Asset product, int amount)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;queue&#039;&#039;&#039; = Queue to use, any existing products in this queue will be destroyed.&lt;br /&gt;
*&#039;&#039;&#039;product&#039;&#039;&#039; = Asset of product to use.&lt;br /&gt;
*&#039;&#039;&#039;amount&#039;&#039;&#039; = Amount of product to use.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetQueueInitialCount(passengerQueue,passengers,20);&lt;br /&gt;
;Notes&lt;br /&gt;
*Fills the given queue with the specified quantity of product.&lt;br /&gt;
*This method sets the amount of products in the given queue.&lt;br /&gt;
*It is a utility method that works on the given queue which need not be a queue from this vehicle.&lt;br /&gt;
*The product filter provided with queue will be used to check if the queue can take products of type asset.&lt;br /&gt;
*If it can&#039;t, the filter will be modified to suit as this method is forceful in that regard. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetRollBasedOnTrack===&lt;br /&gt;
{{MethodHeader|public native void SetRollBasedOnTrack(float factor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;factor&#039;&#039;&#039; = Arbitrary value used to control the amount of roll.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetRollBasedOnTrack(2.0);&lt;br /&gt;
;Notes&lt;br /&gt;
*Roll is a rotation about an axis parallel to the track direction.&lt;br /&gt;
*Use a positive value to lean &#039;into&#039; the curve, a negative value to lean out.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetRunningNumber===&lt;br /&gt;
{{MethodHeader|public native void SetRunningNumber(string number)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;number&#039;&#039;&#039; = The running (fleet identification) number of the vehicle.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetRunningNumber(&amp;quot;21C1&amp;quot;);&lt;br /&gt;
 SetRunningNumber(&amp;quot;4472&amp;quot;);&lt;br /&gt;
;Notes&lt;br /&gt;
*This value is retrieved using [[#GetRunningNumber|GetRunningNumber()]] and should be restricted to alphanumeric characters and spaces.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetSandingTractionMultiplier===&lt;br /&gt;
{{MethodHeader|public native void SetSandingTractionMultiplier(float factor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;factor&#039;&#039;&#039; = A multiplier value of 1.0 or more defining the increase in this vehicle&#039;s tractive effort when sand is in use.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetSandingTractionMultiplier(1.5); // allow sanding to increase tractive effort by 50%&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===SetWheelslipTractionMultiplier===&lt;br /&gt;
{{MethodHeader|public native void SetWheelslipTractionMultiplier(float factor)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;factor&#039;&#039;&#039; = A multiplier value of 1.0 or less to apply to decrease this vehicle&#039;s traction when wheelslip occurs.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 SetWheelslipTractionMultiplier(0.25); // wheelslip reduces tractive effort to 25% of normal.&lt;br /&gt;
;Notes&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Uncouple===&lt;br /&gt;
{{MethodHeader|public native void Uncouple(int end)&amp;lt;br&amp;gt;public native void Uncouple(Vehicle other)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;end&#039;&#039;&#039; = One of the [[#Direction Relationships|Direction Relationship]] constants indicating at which end of the current vehicle the uncoupling is to occur.&lt;br /&gt;
*&#039;&#039;&#039;other&#039;&#039;&#039; = A reference to the other vehicle form which the caller is to be uncoupled.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Syntax&lt;br /&gt;
 Uncouple(DIRECTION_FORWARD);  // uncouple at the current vehicle&#039;s front end&lt;br /&gt;
 Uncouple(vehicle1);           // uncouple from the specified vehicle&lt;br /&gt;
;Notes&lt;br /&gt;
*This method will always cause another Train object to be created.&lt;br /&gt;
*The current Train reference will remain on the section of the previous train with the most drivers declared.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UnloadProduct===&lt;br /&gt;
{{MethodHeader|public bool UnloadProduct(LoadingReport report)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;report&#039;&#039;&#039; = Report on the current state of the loading operation.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*True if the unloading operation was successful, false otherwise.&lt;br /&gt;
;Syntax&lt;br /&gt;
 UnloadProduct(report);&lt;br /&gt;
;Notes&lt;br /&gt;
*Unloads products into this vehicle as defined by the given report. &lt;br /&gt;
*This method works by attempting to transfer products from this vehicle&#039;s queues to the industry queue specified in report. &lt;br /&gt;
*The sequence of events for an unloading operation as performed by this method is:&lt;br /&gt;
**Verify that an unloading operation is possible with this vehicle by calling [[#CanUnloadProductToQueue|CanUnloadProductToQueue()]].&lt;br /&gt;
**[[#BeginUnload|BeginUnload()]] on this vehicle and [[Class Industry#BeginUnload|Industry.BeginUnload()]] on the industry specified in the report are called to perform any pre-unloading events like animation or particle effects on the vehicle and industry respectively. &lt;br /&gt;
**Both of these methods return the amount of time required for an unloading operation and the UnloadProduct() method sleeps for which ever of these times is the longer.&lt;br /&gt;
**The actual product transfer to the industry from the vehicle is performed by calling ProductQueue.TransferProductFrom() on the industry queue(s).&lt;br /&gt;
**[[#GetUnloadTime|GetUnloadTime()]] on this vehicle and [[Class Industry#GetUnloadTime|Industry.GetUnloadTime()]] are called. Again, UnloadProduct() sleeps for which ever is the longer of the times returned.&lt;br /&gt;
**[[#EndUnload|EndUnload()]] and [[Class Industry#EndUnload|Industry.EndUnload()]] are called to perform any post-loading events. As before UnloadProduct() sleeps for the longer time.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===UpdateViewDetails===&lt;br /&gt;
{{MethodHeader|void UpdateViewDetails(Message msg)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;msg&#039;&#039;&#039; = Message object which triggers this handler.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Notes&lt;br /&gt;
*Update the view details window for this vehicle (from the train). &lt;br /&gt;
*This method is setup by Init() as a handler method for a message of type &amp;quot;Vehicle&amp;quot;,&amp;quot;LoadComplete&amp;quot;.&lt;br /&gt;
*Such a message indicates that the load or queue of the vehicle have changed and the view details window of the train will need to be updated. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ViewDetails===&lt;br /&gt;
{{MethodHeader|void ViewDetails(Message msg)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;msg&#039;&#039;&#039; = Message object which triggers this handler.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Notes&lt;br /&gt;
*View details window for this vehicle using the Train&#039;s output.&lt;br /&gt;
*This method is setup by Init() as a handler method for a message of type &amp;quot;MapObject&amp;quot;,&amp;quot;ViewDetails&amp;quot;.object. &lt;br /&gt;
*Such a message indicates that the user has opened the right-click menu of the vehicle and selected the &amp;quot;View Details&amp;quot; menu item. &lt;br /&gt;
*This method will call the ViewDetails() method of this vehicle&#039;s train so that a Browser window describing the entire train can be displayed to the user. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ViewSchedule===&lt;br /&gt;
{{MethodHeader|void ViewSchedule(Message msg)}}&lt;br /&gt;
;Parameters&lt;br /&gt;
*&#039;&#039;&#039;msg&#039;&#039;&#039; = Message object which triggers this handler.&lt;br /&gt;
;Returned Value&lt;br /&gt;
*None&lt;br /&gt;
;Notes&lt;br /&gt;
*View the schedule window for this vehicle from the train.&lt;br /&gt;
*This method is setup by Init() as a handler method for a message of type &amp;quot;MapObject&amp;quot;,&amp;quot;View-Schedule&amp;quot;. &lt;br /&gt;
*Such a message indicates that the schedule of the vehicle or train is to be displayed for the user.&lt;br /&gt;
*This method calls through to Train.UpdateScheduleWindow(). &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Code Examples==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Related Methods==&lt;br /&gt;
[[Class Train#GetVehicles|Train.GetVehicles()]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Class World#GetVehicleList|World.GetVehicleList()]]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Categories==&lt;br /&gt;
[[Category:Script Class]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Clutter-mesh&amp;diff=293</id>
		<title>Clutter-mesh</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Clutter-mesh&amp;diff=293"/>
		<updated>2008-08-07T20:15:10Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Clutter-mesh moved to TagName Clutter-Mesh&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[TagName Clutter-Mesh]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Texture%22_tag&amp;diff=795</id>
		<title>&quot;Texture&quot; tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Texture%22_tag&amp;diff=795"/>
		<updated>2008-08-07T19:54:47Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The texture file to be used in [[KIND_Texture|kind texture]] and [[KIND Groundtexture|kind groundtexture]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Config Tag]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Description%22_tag&amp;diff=763</id>
		<title>&quot;Description&quot; tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Description%22_tag&amp;diff=763"/>
		<updated>2008-08-07T19:42:24Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The human-readable multi-line English description of this asset. It displays on the Download Station with your model, so please make it useful and informative so others may understand your model, for instance, entering what the model is called and under which name and category it may be found in Surveyor. It is very useful in finding an installed model. &lt;br /&gt;
&lt;br /&gt;
To compliment the English description, a variety of additional tags allow for equivalent descriptions to be supported across other languages. These are as follows:&lt;br /&gt;
* description-cn - Chinese&lt;br /&gt;
* description-cz - Czech&lt;br /&gt;
* description-de - German&lt;br /&gt;
* description-es - Spanish&lt;br /&gt;
* description-fr - French&lt;br /&gt;
* description-it - Italian&lt;br /&gt;
* description-pl - Polish&lt;br /&gt;
* description-ru - Russian&lt;br /&gt;
&lt;br /&gt;
[[Category:Config Tag]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Username%22_tag&amp;diff=801</id>
		<title>&quot;Username&quot; tag</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Username%22_tag&amp;diff=801"/>
		<updated>2008-08-07T19:41:16Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The human-readable English name of this asset. This is the name that will be visible in CMP, the DLS, or in Surveyor. The username tag is mandatory.&lt;br /&gt;
For ground textures, this will be the name that appears as a mouseover hint in the surveyor menu. Textures are also sorted alphabetically by username. &lt;br /&gt;
&lt;br /&gt;
To compliment the English username, a variety of additional optional tags allow for equivalent usernames to be supported across other languages. These are as follows:&lt;br /&gt;
* username-cn - Chinese&lt;br /&gt;
* username-cz - Czech&lt;br /&gt;
* username-de - German&lt;br /&gt;
* username-es - Spanish&lt;br /&gt;
* username-fr - French&lt;br /&gt;
* username-it - Italian&lt;br /&gt;
* username-nl - Dutch&lt;br /&gt;
* username-pl - Polish&lt;br /&gt;
* username-ru - Russian&lt;br /&gt;
&lt;br /&gt;
[[Category:Config Tag]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Texture&amp;diff=809</id>
		<title>Texture</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Texture&amp;diff=809"/>
		<updated>2008-07-25T20:07:16Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Texture moved to TagName Texture&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[TagName Texture]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Trackside&amp;diff=835</id>
		<title>Trackside</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Trackside&amp;diff=835"/>
		<updated>2008-07-25T20:01:48Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Trackside moved to TagName Trackside&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[TagName Trackside]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Thumbnails&amp;diff=823</id>
		<title>Thumbnails</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Thumbnails&amp;diff=823"/>
		<updated>2008-07-25T19:53:12Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Thumbnails moved to Thumbnails container&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Thumbnails container]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Kuid-table&amp;diff=553</id>
		<title>Kuid-table</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Kuid-table&amp;diff=553"/>
		<updated>2008-07-25T19:50:12Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Kuid-table moved to Kuid-table container&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Kuid-table container]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Attached-track&amp;diff=149</id>
		<title>Attached-track</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Attached-track&amp;diff=149"/>
		<updated>2008-07-25T19:40:57Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Attached-track moved to Attached-track container&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[Attached-track container]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Description&amp;diff=335</id>
		<title>Description</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Description&amp;diff=335"/>
		<updated>2008-07-25T19:35:08Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Description moved to TagName Description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[TagName Description]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Username&amp;diff=893</id>
		<title>Username</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Username&amp;diff=893"/>
		<updated>2008-07-25T19:27:57Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Username moved to TagName Username&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[TagName Username]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Trainz-build&amp;diff=839</id>
		<title>Trainz-build</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Trainz-build&amp;diff=839"/>
		<updated>2008-07-25T15:31:33Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: Trainz-build moved to TagName Trainz-build: renaming to match convention&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[TagName Trainz-build]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=KIND_MoCrossing&amp;diff=501</id>
		<title>KIND MoCrossing</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=KIND_MoCrossing&amp;diff=501"/>
		<updated>2008-07-11T04:29:14Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: KIND MoCrossing moved to KIND MOCrossing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[KIND MOCrossing]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Mesh-table&amp;diff=599</id>
		<title>Mesh-table</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Mesh-table&amp;diff=599"/>
		<updated>2008-07-09T15:04:25Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the new and preferred method of asset mesh placement for most mesh asset types. It gives flexibility and control for mesh placement and animations.&lt;br /&gt;
&lt;br /&gt;
As of TC 2, there are some asset types that cannot use a mesh-table. These include all Bridges, Tunnels, Rails, Pantographs and other Spline Objects (eg. Fences or Catenaries).&lt;br /&gt;
&lt;br /&gt;
Important Note:&lt;br /&gt;
&lt;br /&gt;
Any asset that uses a mesh-table will not be compatible with pre-TRS versions of Trainz (i.e. Ultimate Trainz Collection or UTC). TRS will of course still read UTC assets.&lt;br /&gt;
&lt;br /&gt;
===Example Mesh Table===&lt;br /&gt;
 mesh-table&lt;br /&gt;
 {&lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh industry.lm&lt;br /&gt;
     anim anim.kin&lt;br /&gt;
     animation-loop-speed 1.0&lt;br /&gt;
     auto-create 1&lt;br /&gt;
     effects&lt;br /&gt;
     {&lt;br /&gt;
       0&lt;br /&gt;
       {&lt;br /&gt;
         [[kind name]]&lt;br /&gt;
         fontsize 0.15&lt;br /&gt;
         fontcolor 30,30,30&lt;br /&gt;
         att a.name0&lt;br /&gt;
         name name&lt;br /&gt;
       }&lt;br /&gt;
       1&lt;br /&gt;
       {&lt;br /&gt;
         [[kind corona]]&lt;br /&gt;
         att a.coronawhite&lt;br /&gt;
         frequency 1&lt;br /&gt;
         directional 0&lt;br /&gt;
         texture-kuid &amp;lt;KUID:-3:10111&amp;gt;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   default-night&lt;br /&gt;
   {&lt;br /&gt;
     mesh nightwindows/nightwindows.im&lt;br /&gt;
     night-mesh-base default&lt;br /&gt;
   }&lt;br /&gt;
   attachedanimation&lt;br /&gt;
   {&lt;br /&gt;
     mesh subdirectoryname/meshname.im&lt;br /&gt;
     anim subdirectoryname/animname.kin&lt;br /&gt;
     auto-create 1&lt;br /&gt;
     att a.pointname&lt;br /&gt;
     att-parent default&lt;br /&gt;
     animation-loop-speed 1.0&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===default===&lt;br /&gt;
Default is the ‘main’ mesh of the asset.&lt;br /&gt;
&lt;br /&gt;
===mesh===&lt;br /&gt;
The ‘main’ mesh name. This may include a sub-path; &lt;br /&gt;
ie: mesh nightwindows/nightwindows.im, where the file nightwindows.im has been placed in the subdirectory nightwindows.&lt;br /&gt;
&lt;br /&gt;
Use .im files exported from 3dsmax or gmax (as opposed to .pm.) or reference an .lm file if you wish your asset to have ‘Level of Detail’ mesh reduction. A pantograph model still requires a .pm file.&lt;br /&gt;
&lt;br /&gt;
Level of detail is a process of using different model meshes, depending on how far the viewer is from the model. A finer mesh is used for close up viewing in Trainz.&lt;br /&gt;
&lt;br /&gt;
===anim===&lt;br /&gt;
The animation file (.kin) exported from 3dsmax or gmax. This may include a sub-path.&lt;br /&gt;
&lt;br /&gt;
===animation-loop-speed===&lt;br /&gt;
This tag must be here if the asset is to animate when placed. If this tag is not here when placed the animation will not play by default, but may play if controlled by script. A different value (e.g. 0.5, 2.0) may be used in the tag to play the animation at a different speed from that created in 3dsmax or gmax.&lt;br /&gt;
&lt;br /&gt;
===auto-create 1===&lt;br /&gt;
The model is generated automatically when placed, or when you load a map which includes the model. In some instances you don’t want the mesh visible (as this may be controlled through script). If auto-create is 0 the mesh will not be visible when placed.&lt;br /&gt;
&lt;br /&gt;
===default-night===&lt;br /&gt;
‘Main’ night window mesh on scenery and industry and traincar assets. Modeled to the same 3d space as the default mesh and is inserted at the default mesh origin.&lt;br /&gt;
&lt;br /&gt;
===night-mesh-base default===&lt;br /&gt;
This night mesh is linked to the default mesh and is visible only at night. It is invisible if the ‘default’ mesh is invisible, (if the auto-create 0 line were used so the default mesh can be controlled by script).&lt;br /&gt;
&lt;br /&gt;
===att===&lt;br /&gt;
The mesh (and animation if present) is inserted at a mesh attachment point rather than the origin (without this line the mesh is placed relative to the origin of the parent model).&lt;br /&gt;
&lt;br /&gt;
===att-parent name===&lt;br /&gt;
The tag tells Trainz in which mesh the attachment point is located. The insertion attachment point is located within the mesh ‘name’ , as listed in the config.txt.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TRS2004&amp;diff=737</id>
		<title>TRS2004</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TRS2004&amp;diff=737"/>
		<updated>2008-07-08T20:27:26Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
Trainz Railroad Simulator 2004 is the most complete railroad experience ever created.&lt;br /&gt;
 &lt;br /&gt;
As Engineer, immerse yourself in a totally interactive, realistic world. Choose from high-speed passenger runs, shunting cars in a busy industrial yard, or carefully navigating a 200 ton logging train down a steep mountain range. &lt;br /&gt;
&lt;br /&gt;
As Yardmaster, manage your Drivers as they carry out their daily tasks. Ensure your trains are in the right place at the right time to keep pace with supply and demand of the interactive industries. &lt;br /&gt;
&lt;br /&gt;
As Route Builder, create your own stunning routes and worlds. &lt;br /&gt;
As Operations Manager, set industry production levels, commodity requirements and create multiple task lists for your Drivers in a few simple steps&lt;br /&gt;
&lt;br /&gt;
==New Features since UTC==&lt;br /&gt;
===Interactive Industries===&lt;br /&gt;
*Industry resource model with goods and resources are produced and consumed&lt;br /&gt;
*Adjustable industry output rates and capacity&lt;br /&gt;
*Industries that automatically generate waybills when goods and resources are required&lt;br /&gt;
*Animated loading and unloading&lt;br /&gt;
*Cars get heavier when loaded&lt;br /&gt;
*Set limits on which cars can pick up which goods&lt;br /&gt;
===AI Drivers===&lt;br /&gt;
*Allocate drivers and give them orders to load, unload, decouple etc&lt;br /&gt;
*Queue orders and repeat&lt;br /&gt;
*Name your drivers and even customize their photographs&lt;br /&gt;
*Run multiple trains simultaneously with AI trains path-finding their way to destinations&lt;br /&gt;
===Create your own Activities===&lt;br /&gt;
*Rules system brings the power of scripting to the average user&lt;br /&gt;
*Add new rules to expand functionality&lt;br /&gt;
*Create Html web pages to introduce your driver sessions to others&lt;br /&gt;
*Create and save different driver sessions for each route with different locos, start times and industry parameters&lt;br /&gt;
*Hotkey to jump straight from Surveyor to Driver&lt;br /&gt;
*Driver Sessions can be exported with your route&lt;br /&gt;
===Integration of locos and rolling stock into Surveyor===&lt;br /&gt;
*Place locos and rolling stock in Surveyor &lt;br /&gt;
*Name and save favorite consists for quick placement&lt;br /&gt;
*Test overpass heights and signals, track lengths and more&lt;br /&gt;
*Favorites listing from Railyard (My Collection) carried over to Surveyor&lt;br /&gt;
===Steam===&lt;br /&gt;
*Steam engines fully supported including real world physics&lt;br /&gt;
*Scripted Signaling for advanced functionality&lt;br /&gt;
*Semaphore Signals introduced&lt;br /&gt;
===Other features===&lt;br /&gt;
*Multiple save game slots &lt;br /&gt;
*Free roaming camera in Driver&lt;br /&gt;
*Per axle track sounds &lt;br /&gt;
*Synchronized steam engine sounds&lt;br /&gt;
*Long horn blasts&lt;br /&gt;
*New adjustable water system (color, wave height, reflection)&lt;br /&gt;
*Gamma slider to adjust game brightness&lt;br /&gt;
*New Trainz Helper downloading utility finds and installs all dependent items &lt;br /&gt;
&lt;br /&gt;
===New improvements===&lt;br /&gt;
*Improved graphics such as bump mapping and specular highlights&lt;br /&gt;
*Improved headlights&lt;br /&gt;
*Overall lighting model improved &lt;br /&gt;
*Improved particle effects&lt;br /&gt;
*Performance on like-for-like routes improved by 10-50% (depending on your system)&lt;br /&gt;
*2D Map View - labels, switches and signals easier to see&lt;br /&gt;
*Online systems improved for searching and uploading&lt;br /&gt;
*Content Dispatcher allows which version to install into for custom content&lt;br /&gt;
*AI stops closer to red lights&lt;br /&gt;
*Wider field of view in cab&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TC3&amp;diff=733</id>
		<title>TC3</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TC3&amp;diff=733"/>
		<updated>2008-07-08T18:58:03Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
The Trainz Classics 3 centrepiece is based on arguably some of the most famous track in the UK. One of the three major Anglo-Scottish routes the S&amp;amp;C&#039;s importance steadily downgraded after it was grouped into the London Midland &amp;amp; Scottish Railway (LMS) in 1923. &lt;br /&gt;
&lt;br /&gt;
The stunningly researched and expansive layout is modelled on the railway between Skipton and Carlisle. A wide range of purpose built structures and lineside details accurately depict the route at the time of transition from steam during the 1950&#039;s and 60&#039;s. &lt;br /&gt;
&lt;br /&gt;
The route can be travelled in it&#039;s splendid full length; and it is also supplied divided into smaller sections, for those occasions where the entire route is not required. &lt;br /&gt;
&lt;br /&gt;
==Packaged Versions==&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
==Bug fixes==&lt;br /&gt;
*&#039;&#039;&#039;Attachment to attachment bug:&#039;&#039;&#039; There were some problems experienced with having attached meshes which were attached to objects which were themsleves attachments. This has now been resolved. &lt;br /&gt;
*&#039;&#039;&#039;Cull attachment bug:&#039;&#039;&#039; The issues found with culling attachments when using multiple LOD levels in Classics 1&amp;amp;2 has been resolved and this now functions correctly again.  &lt;br /&gt;
*&#039;&#039;&#039;Trackside objects:&#039;&#039;&#039; Trackside objects can now be on gradients  &lt;br /&gt;
*&#039;&#039;&#039;World location / Show KUID issue:&#039;&#039;&#039; These two tools couldn’t be on at the same time before (same area of window) this  is now fixed.&lt;br /&gt;
*&#039;&#039;&#039;Turntable bug:&#039;&#039;&#039; The ‘disappearing track’ issue when using turntables has been resolved.  &lt;br /&gt;
*&#039;&#039;&#039;Bogie vertical curve:&#039;&#039;&#039; Bogies that are attached 180 degrees rotated now pitch the correct direction on vertical curves &lt;br /&gt;
*&#039;&#039;&#039;Sky animation:&#039;&#039;&#039; The problem with the sky moving too fast in Classics 1&amp;amp;2 has been resolved. &lt;br /&gt;
*&#039;&#039;&#039;Alpha issues:&#039;&#039;&#039; Some of the problems related to the use of alpha channel textures have been worked on and this results in better implementation of alphas within TC.  &lt;br /&gt;
*&#039;&#039;&#039;dighole bug:&#039;&#039;&#039; The &#039;dighole&#039; function no longer results in occasional land deformation. &lt;br /&gt;
*&#039;&#039;&#039;camera position bug:&#039;&#039;&#039; The camera positions will no longer be altered when routes are merged that contain cameras.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==New features from TC 1&amp;amp;2==&lt;br /&gt;
===Updated Passenger Objects=== &lt;br /&gt;
It will now be possible to have alternate passenger sets which can be specified at stations. This means that you can have appropriate passengers for your route other than the current defaults.  &lt;br /&gt;
===key for Cylinder Drain cocks===&lt;br /&gt;
A key has been added to the keyboard mapping to open and close the cylinder drain cocks on steam locomotives. &lt;br /&gt;
===Spline mesh table support=== &lt;br /&gt;
Adds support for spline objects to be trainz-build 2.5 &lt;br /&gt;
===Derailed consist removal===&lt;br /&gt;
A rule has been included which can be set to automatically remove derailed consists. This can be modified to specify the time delay before removal occurs.  &lt;br /&gt;
===Bogie movement=== &lt;br /&gt;
Bogies can now be configured to have horizontal movement .  &lt;br /&gt;
===Second Injector=== &lt;br /&gt;
Interior assets will now support a second injector control.  &lt;br /&gt;
===Sanding control=== &lt;br /&gt;
Interior assets will now support a sander control.  &lt;br /&gt;
===Automatic Fireman===&lt;br /&gt;
The ability to have an automatic fireman has been added to assist driving. &lt;br /&gt;
===Coupler Repair===&lt;br /&gt;
It will now be possible to repair a broken coupler.  &lt;br /&gt;
===Speeding check===&lt;br /&gt;
A rule has been added which enables scenario creators to check for the speed limit being exceeded. &lt;br /&gt;
===Station Visited check=== &lt;br /&gt;
A rule has been added which enables scenario creators to check if a specific station has been visited.&lt;br /&gt;
&lt;br /&gt;
==Enhancements in TC3==&lt;br /&gt;
===Scripting update===&lt;br /&gt;
Scripting hooks added to Passenger carriage door. &lt;br /&gt;
===Improvements to CCP===&lt;br /&gt;
Some changes have been made to CCP to make it more user-friendly and to enhance the usefulness of this tool.  &lt;br /&gt;
===New PFX for steam and Scripting access to PFX=== &lt;br /&gt;
Particle effects and their implementation have been improved to give the content creator much greater control of how the particle effect works through the use of scripting. We have also made it easier for a content creator to make steam smoke effects out of the smoke chimney/stack with the smoke mode &amp;quot;anim2&amp;quot;. This, when used on a steam locomotive, generates &#039;&amp;quot;chuffs&amp;quot; of steam syncronised with the cylinder strokes of the locomotive. Along with new smoke textures this provides a much superior smoke effect. &lt;br /&gt;
===Improved Steam Sound=== &lt;br /&gt;
Steam sound will now be based on the RPM of a locomotive. Instead of before a train having to have a custom sound made, a base sound can be made for a variety of steam locomotives. Steam sounds are also synchronised to the locomotive&#039;s cylinders. With the new sound system steam locomotives are sounding better than ever before in a Trainz simulator. &lt;br /&gt;
===New Signalling System=== &lt;br /&gt;
TC3 brings with it an entirely new signalling system. Trainz will now understand the concept of home and distant signals. It will also now be possible to implement block working on your routes with prototypical behaviour of both semaphore and colour-light signalling systems. A new set of signals will be included in TC3 but the added flexibility of the system can be used to create alternate sets of signals for other regions and eras. &lt;br /&gt;
===Improved Physics simulation of Steam locomotives=== &lt;br /&gt;
The entire physics system for steam locomotives has been given an update. An increased number of parameters within the engine spec configuration file and a greater degree of flexibility in their implementation has improved the characteristics of all steam locomotives leading to a more realistic and flexible system..  &lt;br /&gt;
===Better Animated Wheel slip=== &lt;br /&gt;
The animation of wheelslip has been improved and the subsequent effects of allowing wheelslip to continue on the fire state and steaming ability of steam locomotives has been implemented.  &lt;br /&gt;
===Improved Mini-map=== &lt;br /&gt;
Enhancements have been made to the look of the mini-map and some improvements made to the features available within it.  &lt;br /&gt;
===Spline/Track improvements=== &lt;br /&gt;
unit_mesh can now specify a distance to change detail level &lt;br /&gt;
===Fixed/Improved tunnels=== &lt;br /&gt;
Single track splines without portals can be a tunnel, so that kitbuilt tunnels can have all standard tunnel behaviours &lt;br /&gt;
===More realistic AI Control===&lt;br /&gt;
The AI drivers will now use the loco/train brakes. Along with other enhancements this results in a more realistic driving manner of AI consists.  &lt;br /&gt;
===Greater control over traction through scripting=== &lt;br /&gt;
The scripting possibilities have been improved to give a greater degree of control over the traction characteristics of a locomotive.  &lt;br /&gt;
===Changes to water=== &lt;br /&gt;
Water is now see through. This means that it is now possible to see bridge supports and submerged objects.  &lt;br /&gt;
===Headlights control=== &lt;br /&gt;
Due to the popularity of the low beam headlight setting from Trainz Classics 1&amp;amp;2, we have added the ability to set the high beam values of the headlights too. This gives the content creators a much greater flexibility about creating lights on the front of train cars. &lt;br /&gt;
===AWS system===&lt;br /&gt;
AWS equipment will be present and fully functional in each locomotive represented in Classics 3 that was fitted with the system while in service with British Railways. When driving in &#039;full simulation&#039; mode, it will be capable of stopping the train if you do not interact with it in the proper manner.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TC2&amp;diff=731</id>
		<title>TC2</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TC2&amp;diff=731"/>
		<updated>2008-07-08T18:39:43Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
Take a tropical break without leaving home in a breathtaking Trainz experience. Amazing lighting art and cleverly planned routines make Modula City is a noteworthy composition by anyone&#039;s standards. &lt;br /&gt;
&lt;br /&gt;
Trainzland has proven a popular and impressive creator of Trainz add-ons and has joined forces with Auran in a partnership that enables us to present Modula City in it&#039;s updated entirity with our second Trainz Classics edition. &lt;br /&gt;
&lt;br /&gt;
Operate modern trams around a thriving coastal city. Convey holiday makers over the causeway to a beautiful resort island. &lt;br /&gt;
&lt;br /&gt;
==Packaged Versions==&lt;br /&gt;
TC2 was packaged along with TC1 and TRS2006 in the United States by Merscom as &amp;quot;Trainz Railways&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==New features from TRS2006==&lt;br /&gt;
Same as [[TC1]]&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=TC1&amp;diff=729</id>
		<title>TC1</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=TC1&amp;diff=729"/>
		<updated>2008-07-08T18:33:19Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Description==&lt;br /&gt;
Experience New York&#039;s Harlem Line, realistically represented in a 3D virtual world. Rule the rails with a fast express train or stop at stations and help to convey commuters along the route. &lt;br /&gt;
&lt;br /&gt;
Accurately representing 40 miles of the former NYC empire; the Trainz Classics Harlem Line project is a carefully researched and convincing railroad simulation experience. &lt;br /&gt;
&lt;br /&gt;
The Harlem Line edition takes advantage features newly added to the ever evolving Trainz platform to realistically model Metro North&#039;s operations over the busy line.&lt;br /&gt;
&lt;br /&gt;
==Packaged Versions==&lt;br /&gt;
TC1 was packaged along with TC2 and TRS2006 in the United States by Merscom as &amp;quot;Trainz Railways&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==New features from TRS2006==&lt;br /&gt;
A number of new functions have been introduced in TC relevant to content creators. The following list summarises the new features:&lt;br /&gt;
===Removal of legacy content===&lt;br /&gt;
Much of the legacy content from TRS2006 was removed in an effort to streamline the program.&lt;br /&gt;
===New Freeways feature supporting and including one way and multi-lane roads===&lt;br /&gt;
There are two kinds that support the creation of freeway model, Kind Track and Bridge. The Kind track is used to specify a road freeway asset. For example, a two lane road mesh is used for the lanes of the freeway and tags in the config.txt file specify lane configuration.&lt;br /&gt;
&lt;br /&gt;
The example below is for a freeway with 2 lanes; both travelling in the same direction.  This would also be used for a one-way road.&lt;br /&gt;
&lt;br /&gt;
 [[username]] “Road_Freeway_01”&lt;br /&gt;
 [[grounded]] 0.4&lt;br /&gt;
 [[region]] “Britain”&lt;br /&gt;
 [[length]] 5&lt;br /&gt;
 [[width]] 7.9&lt;br /&gt;
 [[bendy]] 1&lt;br /&gt;
 [[kind track]]&lt;br /&gt;
 [[type]] &amp;quot;Roads&amp;quot;&lt;br /&gt;
 [[uncached_alphas]] 1&lt;br /&gt;
 [[carrate]] 25&lt;br /&gt;
 [[asset-filename]] “road”&lt;br /&gt;
 [[kuid]] &amp;lt;kuid:523:100082&amp;gt;&lt;br /&gt;
 [[istrack]] 0&lt;br /&gt;
 [[isroad]] 1&lt;br /&gt;
 [[isfreeway]] 1&lt;br /&gt;
 [[numlanes]] 2&lt;br /&gt;
&lt;br /&gt;
For a freeway with multiple lanes flowing in both directions, a [[Kind bridge]] has to be used. This asset calls up a freeway road model by kuid to be used on the bridge.&lt;br /&gt;
&lt;br /&gt;
The following example uses a [[Kind bridge]] to generate a four lane road (two lanes in each direction), calling up the two lane freeway asset in the previous example.&lt;br /&gt;
&lt;br /&gt;
 [[username]] “Road_Freeway_02”&lt;br /&gt;
 [[grounded]] 0.4&lt;br /&gt;
 [[region]] “Britain”&lt;br /&gt;
 [[length]] 5&lt;br /&gt;
 [[width]] 7.9&lt;br /&gt;
 [[bendy]] 1&lt;br /&gt;
 [[kind track]]&lt;br /&gt;
 [[type]] &amp;quot;Roads&amp;quot;&lt;br /&gt;
 [[uncached_alphas]] 1&lt;br /&gt;
 [[carrate]] 25&lt;br /&gt;
 [[asset-filename]] “road”&lt;br /&gt;
 [[kuid]] &amp;lt;kuid:-22:1003&amp;gt;&lt;br /&gt;
 [[trackoffsets]] -3.5,3.5&lt;br /&gt;
 [[trackdirections]] 0,1&lt;br /&gt;
 [[height]] 0&lt;br /&gt;
 [[rgb]] 255,200,0&lt;br /&gt;
 [[istrack]] 0&lt;br /&gt;
 [[isroad]] 1&lt;br /&gt;
 [[isfreeway]] 1&lt;br /&gt;
 [[numlanes]] 4&lt;br /&gt;
 [[bridgetrack]] &amp;lt;kuid:523:100082&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Flashing ditch-lights===&lt;br /&gt;
Operating ditch lights now function for locomotives. The usual attachment point conventions apply for a point placed in the mesh in 3dsmax or gmax.&lt;br /&gt;
&lt;br /&gt;
a.ditch0, a.ditch1 etc&lt;br /&gt;
&lt;br /&gt;
The odd numbered light points flash together, alternating with the even numbered light points.&lt;br /&gt;
&lt;br /&gt;
The flashing rate can be changed in the traincar config.txt file by adding the [[flash-scale]] tag.&lt;br /&gt;
&lt;br /&gt;
Ditch lights are toggled in Driver using the ; key&lt;br /&gt;
&lt;br /&gt;
===Headlight dimmer system===&lt;br /&gt;
Locomotives can run with normal or dimmed lights (normal or low beam), use the Shift + L key in Driver.&lt;br /&gt;
&lt;br /&gt;
The intensity of the light may be varied by adding the [[low-beam-value]] tag to the traincar config.txt file.&lt;br /&gt;
&lt;br /&gt;
===Remodelled roadway traffic featuring working head lights===&lt;br /&gt;
Cars driving on roads can have operating head and tail lights. Use the nightmode tag in the config.txt file for a car and in the mesh table, include the default-night tag and night mesh file that you create for the vehicle.&lt;br /&gt;
&lt;br /&gt;
The following tags show the entries in the config.txt file.&lt;br /&gt;
&lt;br /&gt;
 [[nightmode]] &amp;quot;none&amp;quot;&lt;br /&gt;
 [[mesh-table]] &lt;br /&gt;
 {&lt;br /&gt;
   default &lt;br /&gt;
   {&lt;br /&gt;
     auto-create 1&lt;br /&gt;
     mesh “hilux_blue.im”&lt;br /&gt;
   }&lt;br /&gt;
   default-night &lt;br /&gt;
   {&lt;br /&gt;
     mesh “night/gondwana_night.im”&lt;br /&gt;
     night-mesh-base “default”&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Specifically, the [[nightmode]] tag has been updated to support lights that are on for vehicles used as traffic, but off when not moving.&lt;br /&gt;
&lt;br /&gt;
===New sound functions for better representation of electric traction===&lt;br /&gt;
&lt;br /&gt;
New functions to better represent electric locomotive sounds have been implemented. The options are set in the config.txt file for the enginesound Kind.&lt;br /&gt;
&lt;br /&gt;
For an electric locomotive, the sound may be considered a speeding up of one wave form, different from diesel or steam locomotives where different sound files are used in “steps”.&lt;br /&gt;
&lt;br /&gt;
The sound used is a single .wav file called engine_loop.wav and must be placed in the directory with the config.txt file. TC automatically loads the file of this name.&lt;br /&gt;
&lt;br /&gt;
In non-electric engines, the .wav file used is the base sound (the sound used at zero km per hour). With electric engines there should be no sound at zero speed, and the use of the isfading tag scales the volume, reducing the sound as the speed reduces to zero.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 [[kind enginesound]]&lt;br /&gt;
 [[asset-filename]] &amp;quot;MN M7 enginesound&amp;quot;&lt;br /&gt;
 [[kuid]] &amp;lt;kuid:523:100052&amp;gt;&lt;br /&gt;
 [[username]] &amp;quot;MN M7 enginesound&amp;quot;&lt;br /&gt;
 [[isspeed]] 4&lt;br /&gt;
 [[isfading]] 1&lt;br /&gt;
 [[isramping]] 0&lt;br /&gt;
&lt;br /&gt;
===New interior features===&lt;br /&gt;
===Fonts===&lt;br /&gt;
TC has added the ability to define the fonts to be used for the text, alternative to the default font.  See [[kuid name]] for more details.&lt;br /&gt;
===Surveyor - Height Control===&lt;br /&gt;
Holding down the LMB while moving the mouse forward will now raise objects that are height adjustable in increments of 1.0 units. Conversely, moving the mouse backwards will lower the object in the same way. Holding the Ctrl key in conjuction with this move will adjust the objects height in increments of 0.1 units and holding the Shift key will change the height by units of 0.05.&lt;br /&gt;
===Train controlled sounds, lights and boom gates at build-in road crossings===&lt;br /&gt;
Add a level crossing road/rail junction from the Scenery Objects Tab in Surveyor, e.g. XING 1 US&lt;br /&gt;
&lt;br /&gt;
Use the Edit Properties dialogue in the Scenery panel to uniquely name the crossing, e.g. Hobotown&lt;br /&gt;
&lt;br /&gt;
Add the crossing lights to both sides of the crossing and name those in accordance with the name given to the crossing,e.g. Hobotownsig1 and Hobotownsig2.&lt;br /&gt;
===Flexible Cab Signalling system===&lt;br /&gt;
Add the object “MN Trackside Cabsignal” from the Track Panel / Trackside Objects. This signal controls the states that will be shown by the in cab signalling and is only visible in Surveyor.&lt;br /&gt;
===Computerised in-cab displays===&lt;br /&gt;
The computerised M7 cab digitally displays various technical and safeworking data. It can also display the next station name. Add a trigger at the point along the track where you would like the next station name to light up in the cab. The naming convention is simple. If the next station is “Hobotown” then name the trigger as:&lt;br /&gt;
&lt;br /&gt;
xxHobotown&lt;br /&gt;
&lt;br /&gt;
The name will be displayed until the train passes another station-name trigger.&lt;br /&gt;
&lt;br /&gt;
To blank the display add another trigger named xx_&lt;br /&gt;
&lt;br /&gt;
===Automatic Train Protection options===&lt;br /&gt;
Add the “speed_rule” to a session using Surveyor’s “edit session” dialogue. This limits your train’s speed to within the limit as imposed by both the trackside speedboards and the cab signalling system.&lt;br /&gt;
&lt;br /&gt;
===Driver - Odometer Trip Meter Display===&lt;br /&gt;
Add the “Display Custom HUD” rule to a session using Surveyor’s “edit session” dialogue. A new “Trip Meter” field will be added to the Custom Heads Up Display (HUD) which can be reset at anytime by pressing the T key on the keyboard.&lt;br /&gt;
&lt;br /&gt;
===New scripting commands===&lt;br /&gt;
This document does not cover scripting functions and coding in detail, but may refer to necessary scripts for correct functionality. Some of the new scripting functions that have been included in TC include:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setgoodfog, setbadfog&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To set the density of fog to be used - can use values larger than 1.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;setdrawdistance&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sets the drawdistance for the ground and scenery items.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;worldplaysound&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is a looping waveform to play a sound in a map.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;World Day, World Night&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Specifies a function may play during daytime or at night.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;playvideo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is a rule to play a video clip.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;locomotive and cabin scripts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These have been developed for each individual locomotive and associated cab, for the in-built models. Each individual script may not use all the available new tags for cab displays.&lt;br /&gt;
&lt;br /&gt;
Users would need to modify these scripts for other uses. Refer to included scripts for the M7, FL9 and P32 locomotives for information. Useful examples are:&lt;br /&gt;
*signalinterior.gs&lt;br /&gt;
*acmu.gs&lt;br /&gt;
*fl9.gs&lt;br /&gt;
*p32.gs&lt;br /&gt;
*m7.gs&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Station.gs&#039;&#039;&#039;&lt;br /&gt;
There is a new station script used in TC to load and unload passengers. The file is Station.gs, found in a number of the MN station assets in TC. This script operates two platforms. A second script, Station3track.gs will operate three platforms on one station. By comparing the script differences, modified scripts may be created to operate more than three platforms.&lt;br /&gt;
&lt;br /&gt;
The script makes the stopping points of trains more predictable and accurate, provided the following is used to set trigger points on the station tracks in 3dsmax or gmax.&lt;br /&gt;
&lt;br /&gt;
Trigger points in 3dsmax/gmax&lt;br /&gt;
&lt;br /&gt;
A track trigger point should be placed at each end of the platform, and another on the track near the centre of the platform length, for example a.trig1a, a.trig1d and a.trigmain.&lt;br /&gt;
&lt;br /&gt;
Trigger radii are defined in the config.txt file for the station, and 10 metres is suggested for these three trigger points.&lt;br /&gt;
&lt;br /&gt;
Additional trigger points need to be placed in between these three, so the trigger diameters touch along the full length of the track. Place the a.trig1b and a.trig1c points equidistant between the already placed points. Calculate a radius X or Y to suit and enter in the config.txt file for the station.&lt;br /&gt;
&lt;br /&gt;
A maximum value for X or Y should be 75 metres for consistent operation. If larger, place additional intermediate trigger points with reduced radii.&lt;br /&gt;
&lt;br /&gt;
While track attachment points called up in the config.txt file can be used as triggers, it is often more convienient to specify separate trigger points in the 3dsmax/gmax mesh in order to have the trigger diameters touch - track attachment points, particularly for curved stations, are not always in the best locations required for trigger points.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===CMP functions===&lt;br /&gt;
New functions of interest to Creators are included in the Miscellaneous screen of CMP.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Suppress Asset Warning in Trainz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This allows you to disable the “Missing Asset Screen” displayed when launching a route.&lt;br /&gt;
&#039;&#039;&#039;Suppress Asset Database Update at Startup&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This allows you to disable the DLS update process every time you start CMP or return to it from Trainz. For creators this should speed up the process of creating content when you do not wish to keep checking with the Download Station updates.&lt;br /&gt;
Note this does not suppress the update of the local assets.tdx file when CMP is loaded.&lt;br /&gt;
&#039;&#039;&#039;Built in Objects - Colour Display in Driver&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Adding the line -showkuids to the [[Trainzclassicoptions.txt]] file will show the kuid number of any object selected in Surveyor, in the bottom right of the Surveyor screen. A built-in object will show the kuid in yellow and a custom objects will be shown in red.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Automatic Committal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Modified and imported assets will be committed automatically when launching TC from within CMP.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Kind_name&amp;diff=547</id>
		<title>Kind name</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Kind_name&amp;diff=547"/>
		<updated>2008-07-08T18:09:57Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: /* font */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some assets may have editable signs. When you set an asset’s name in surveyor through the Edit Properties icon (‘?’ icon) the signage can be set-up to automatically update. The variables can be set for each sign.&lt;br /&gt;
&lt;br /&gt;
Typical Kind Name mesh table set-up:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 mesh-table&lt;br /&gt;
 {&lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh industry.lm&lt;br /&gt;
     auto-create 1&lt;br /&gt;
     effects&lt;br /&gt;
     {&lt;br /&gt;
       0&lt;br /&gt;
       {&lt;br /&gt;
         kind name&lt;br /&gt;
         font garamond&lt;br /&gt;
         fontsize 0.15&lt;br /&gt;
         fontcolor 30,30,30&lt;br /&gt;
         att a.name0&lt;br /&gt;
         name name&lt;br /&gt;
       }&lt;br /&gt;
       1&lt;br /&gt;
       {&lt;br /&gt;
         kind name&lt;br /&gt;
         font swiss&lt;br /&gt;
         fontsize 0.3&lt;br /&gt;
         fontcolor 30,30,30&lt;br /&gt;
         att a.name1&lt;br /&gt;
         name name&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
You do not have to use the 0,1,2... block naming convention.&lt;br /&gt;
&lt;br /&gt;
For the name effects described in the example, 0 could easily be mainsign or something more relevant to your model.&lt;br /&gt;
&lt;br /&gt;
Setting unique names may be useful for script purposes, so you can easily recognize a script reference, for instance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Breakdown of KIND NAME:==&lt;br /&gt;
===kind name===&lt;br /&gt;
The effect kind&lt;br /&gt;
===font===&lt;br /&gt;
Only supported in Trainz Classics and later&lt;br /&gt;
&lt;br /&gt;
The name of the font - refer to the list of names below:&lt;br /&gt;
 arial&lt;br /&gt;
 console&lt;br /&gt;
 comic_sans&lt;br /&gt;
 courier&lt;br /&gt;
 cordia&lt;br /&gt;
 century_gothic&lt;br /&gt;
 garamond&lt;br /&gt;
 helvetica&lt;br /&gt;
 impact&lt;br /&gt;
 sans_serif&lt;br /&gt;
 swiss&lt;br /&gt;
 tahoma&lt;br /&gt;
 times_new_roman&lt;br /&gt;
 verdana&lt;br /&gt;
All these fonts have a base size of 24 points. This size is varied by using the fontsize tag (a multiplying factor of the default font size) in the config.txt file.&lt;br /&gt;
&lt;br /&gt;
===fontsize===&lt;br /&gt;
The size of the font as a fraction of the original default font size, eg. 0.15 is 15% of the default size of 24 points.&lt;br /&gt;
&lt;br /&gt;
There is an additional larger default font size that has been used in TC which is available for use. This is referenced by the in-game name, mainmenu_titles, not by the more usual “font” name Arial. By using this larger font (80 points) and specifying a font size factor, better quality may be obtained for the name text on the created asset.&lt;br /&gt;
&lt;br /&gt;
mainmenu_titles&lt;br /&gt;
===fontcolor===&lt;br /&gt;
The color of the sign text in r.g.b.&lt;br /&gt;
===att===&lt;br /&gt;
The sign text insertion point (part of the mesh). The attachment point must be orientated correctly in 3dsmax or gmax.&lt;br /&gt;
&lt;br /&gt;
Points are placed in top view in 3dsmax/gmax. When aligning the point in 3dsmax of gmax, click on the Hierarchy - Affect Pivot Only option to examine the axis direction, turn off the Affect Pivot Only selection, and rotate the point itself to the correct orientation. Click on the Affect Pivot Only option again to check the new alignment. Make sure you rotate the point, not the axis.&lt;br /&gt;
===name===&lt;br /&gt;
The default text when placed&lt;br /&gt;
&lt;br /&gt;
When name name is specified, it uses the asset’s changeable name option, changed through the Edit Properties icon (the ‘?’ icon) in Surveyor.&lt;br /&gt;
&lt;br /&gt;
If name Graceland (for example) were used, the sign would never be able to be changed, even though the user may have changed the asset’s name in Surveyor.&lt;br /&gt;
&lt;br /&gt;
When you use the name tag, this name will appear in the minimap. In some instances the names will be hard to distinguish in a crowded map. For this reason, it may be advisable to limit the use of the name tag to objects that have a use for the attribute.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=Kind_corona&amp;diff=545</id>
		<title>Kind corona</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=Kind_corona&amp;diff=545"/>
		<updated>2008-07-07T05:33:39Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A corona is a ‘glow’ light effect. It is a simple texture that is inserted at an attachment point within the mesh. Coronas can be added to any asset that uses a mesh-table.&lt;br /&gt;
&lt;br /&gt;
Examples of coronas used in-game can be seen on the Airport and Airport basic assets. The Jumbo Jet, the Cessna and the Airport tower all use flashing coronas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example mesh table with coronas:&lt;br /&gt;
&lt;br /&gt;
 [[mesh-table]]&lt;br /&gt;
 {&lt;br /&gt;
   default&lt;br /&gt;
   {&lt;br /&gt;
     mesh asset.lm&lt;br /&gt;
     auto-create 1&lt;br /&gt;
     effects&lt;br /&gt;
     {&lt;br /&gt;
       0&lt;br /&gt;
       {&lt;br /&gt;
         kind corona&lt;br /&gt;
         att a.corona0&lt;br /&gt;
         texture-kuid &amp;lt;KUID:-3:10110&amp;gt;&lt;br /&gt;
         frequency 2&lt;br /&gt;
         directional 0&lt;br /&gt;
         object-size 0.20&lt;br /&gt;
       }&lt;br /&gt;
       1&lt;br /&gt;
       {&lt;br /&gt;
         kind corona&lt;br /&gt;
         att a.corona1&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Breakdown of KIND CORONA:==&lt;br /&gt;
===kind corona (required)===&lt;br /&gt;
The effect kind&lt;br /&gt;
===att (required)===&lt;br /&gt;
The corona insertion point in the main mesh.&lt;br /&gt;
===texture-kuid (optional)===&lt;br /&gt;
Add this tag only when you want to specify your own texture for the corona. It specifies the KUID of a [[kind texture]] asset.&lt;br /&gt;
&lt;br /&gt;
If the texture-kuid tag is not present the corona will use the default yellow/orange texture in TRS.&lt;br /&gt;
&lt;br /&gt;
TRS released corona textures:&lt;br /&gt;
* Yellow/orange corona Default (if no texture-kuid)&lt;br /&gt;
* Green corona &amp;lt;KUID:-3:10110&amp;gt;&lt;br /&gt;
* Red corona &amp;lt;KUID:-3:10112&amp;gt;&lt;br /&gt;
* White corona &amp;lt;KUID:-3:10111&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===frequency 2 (optional)===&lt;br /&gt;
This variable specifies the frequency in Hz (or ‘flashes’ per second). e.g. 1 for once per second, 0.5 for once every 2 seconds, 2 for twice per second.&lt;br /&gt;
===directional 0 (optional)===&lt;br /&gt;
The default for coronas is to be aligned to the attachment point to face the NEGATIVE Z direction. This is especially useful for Traincars.&lt;br /&gt;
&lt;br /&gt;
Adding this tag over-rides this behavior, to make the corona always face the screen – useful for scenery objects.&lt;br /&gt;
===object-size 0.15 (optional)===&lt;br /&gt;
Size of the corona on the object when viewed up close, defaults to 0.15 (i.e. 0.15m)&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
	<entry>
		<id>https://wiki.trainzsimulator.com/index.php?title=%22Obsolete-table%22_container&amp;diff=645</id>
		<title>&quot;Obsolete-table&quot; container</title>
		<link rel="alternate" type="text/html" href="https://wiki.trainzsimulator.com/index.php?title=%22Obsolete-table%22_container&amp;diff=645"/>
		<updated>2008-07-07T05:02:50Z</updated>

		<summary type="html">&lt;p&gt;Pencil42: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The obsolete-table describes the asset’s revision history.&lt;br /&gt;
&lt;br /&gt;
This field was used extensively for pre-TRS assets, as each version required a unique Content ID. However in order to make the content creator’s life a little easier, Trainz now uses the KUID2 format which adds another number as a version number.&lt;br /&gt;
&lt;br /&gt;
TRS and the Trainz Download Station automatically detects the most recent version of an asset whether it be through the KUID2 Version ID or through the obsolete-table.&lt;br /&gt;
&lt;br /&gt;
If there are no obsoletes, leave the obsolete tags out.&lt;/div&gt;</summary>
		<author><name>Pencil42</name></author>
	</entry>
</feed>