Track Node – step 0030 – December 2009
SrrTrackNode is an SRR object that is used to instrument the borders between track edges (see SrrTrackEdge) and to instrument points.
Each SrrTrackNode has exactly one neighbour SrrTrackNode.
Zero, one or more track edges can terminate in an SrrTrackNode.
If more than one track edge terminates in an SrrTrackNode, it hosts points and must contain an SrrSwitchB object to be able to switch the points.
Since track edges and track nodes are orchestrated by higher layer SRR objects (SrrBasicTrackSection, SrrBasicTurnout2Way), most fields of SrrTrackNode are set “automatically”.
The user (author of a track/turnout model) needs only to provide the neighbourName, turnoutSwitch and gauge fields.
SrrTrackNode is an external prototype that is available at the directory srr/.
<ProtoDeclare name='SrrTrackNode'>
<ProtoInterface>
<field accessType='inputOutput' name='objType' type='SFString' value='SrrTrackNode'/>
<field accessType='inputOutput' name='version' type='SFFloat' value='0.0023'/>
<field accessType='inputOutput' name='objId' type='SFString'/>
<field accessType='inputOutput' name='modParam' type='SFNode'/>
<field accessType='inputOutput' name='trackEdges' type='MFNode'/>
<field accessType='inputOutput' name='neighbourName' type='SFString'/>
<field accessType='inputOutput' name='neighbour' type='SFNode'/>
<field accessType='inputOutput' name='turnoutSwitch' type='SFNode'/>
<field accessType='inputOutput' name='isNodeA' type='MFBool'/>
<field accessType='inputOutput' name='gauge' type='SFFloat' value='1.435'/>
</ProtoInterface>
objId
will be set by the higher layer SRR objects (SrrBasicTrackSection, SrrBasicTurnout2Way, …) before initialization.
trackEdges, isNodeA
These fields are set by the higher layer SRR object and describe the relationship between the track node and all track edges that terminate in this track node. These values have to be set before initialization and the trackEdges must have been successfully initialized, before it is allowed to initialize the track node (this is orchestrated by the higher layer SRR object).
The values at index 0 refer to the turnout state 0, values at index 1 refer to turnout state 1 and so on.
neighbourName
This value needs to be set by the user and indicates the objId of the neighbour node. The module coordinator – TMM will read this value to link the node with it's neighbour node during initialization.
turnoutSwitch
This value needs to be set by the user, when the track node is used in a turnout.
It refers to an SrrSwitchB object. The higher layer SRR object will care for the initialization of the switch object.
The actualState property of the switch will be used by SrrAxle and other parts of the SRR framework to route the trains through the track layout.
neighbour
This reference is set by the module coordinator – TMM during initialization of the track node. It points to the neighbour SrrTrackNode.
gauge
This value needs to be set by the user. It denotes the gauge of the track at the position of the track node and is used to derail vehicles, whose gauge does not fit to the gauge of the tracks – see also the gauge property of the SrrAxle object (gauge check not yet implemented).