Add information for Track Designer Compatibility

Syntax: <TrackDesigner>
    <ID>...</ID>
    <Flag>...</Flag>
    <HasSeveralGeometries>...</HasSeveralGeometries>
    <TDBitmapList>
        <TDBitmap>
            <BBConnexionPointIndex>...</BBConnexionPointIndex>
            <Type>...</Type>
            <AngleBetweenTDandBB>...</AngleBetweenTDandBB>
        </TDBitmap>
        ...
    </TDBitmapList>
</TrackDesigner>


Note: The <ID> tag can be replaced by a list of ids that has this syntax:
    <IDList>
        <ID registry="...">...</ID>
        ...
    </IDList>
Default Value: If there is no <TrackDesigner> tag, the part is not compatible with TrackDesigner.
Description: A set of information used by BlueBrick to convert Track Designer parts to BlueBrick parts and vice and versa.

BlueBrick can save and load files in Track Designer format (TDL). Because the part numbers and other information are different between BlueBrick and Track Designer, BlueBrick needs to have information on how to convert the file when saving or loading a TDL format.

Normally, you only need to add this XML tag if you add a part that is supported by Track Designer. BlueBrick already comes with the full support of Track Designer's default library so you will probably never need to add this information. However, since Track Designer also has a feature to expand the library, it can happen that you want to support the custom part you made for Track Designer (in order to load your TDL file created with your custom TD library).

The ID field contains the full Track Designer ID (this can be seen in the parts properties window by right clicking on the part in Track Designer, and choosing "Properties"). This ID is used to make the link between the Track Designer part and the corresponding BlueBrick part. A default value is not possible, this field must always have an entry.

Since it is possible to assign any ID to a part in a TD registry, it may happen that the same parts have different IDs in different custom registries, making these two registries incompatible. BlueBrick, however, can still load two different TDL files saved with incompatible TD registries. If a part is known to have different TD IDs in different registries, you can replace the ID field by a IDList field in which you list all the known IDs.

The ID field contains an attribute named registry. The value of this attribute is a keyword that refers to the registry in which the part has this ID. As a keyword, you can use the name of the LUG/LTC that uses the registry, or the name of the website that distribute this registry. Then in the "config" folder of the BlueBrick installation folder, you can find a configuration file named "TDRegistryList.txt" in which you can associate your keyword with the actual file name of the registry.

The Flag field contains an integer value needed by Track Designer. This field can have only four values:

Unfortunately there's no way to find this Flag in the part registry of Track Designer. I suspect these flags are computed dynamically by, but as I don't know how to compute them, I added them as fixed values in the XML description for now. Most of the time you can use 0 as the default value. BlueBrick also uses 0 as the default value.

The HasSeveralGeometries field contains a boolean flag ("true" or "false" in lower case without the quotes) to tell if the part has several Geometries in Track Designer. To know if a Track Designer part has several geometries, open the Track Designer Registry and click on the part. If you can see more than one item under the "Geometries" field, you should set the HasSeveralGeometries field to true. If this field is false, BlueBrick will always use the port ID "0" as the origin of the part when saving the file. The default value is "false".

The TDBitmapList field contains a list containing each connection that the Track Designer part has. This field allows you to remap the Track Designer connection point with the BlueBrick connection point. In this list, just enter one TDBitmap field for each Track Designer connection points; if the BlueBrick part has more connection point than the Track Designer one, ignore them. If the Track Designer part has more connection points than the BlueBrick part, then create and add them in the connection list of the BlueBrick XML file. Pay special attention to the order of the TDBitmap field! This is important as the entries must be in the same order as the bitmap ID order in the Track Designer registry.

The BBConnexionPointIndex field contains the BlueBrick connexion 0-based index which indicates how the part will be connected in Track Designer when using this bitmap index. In the BlueBrick part description of the XML file, the connection points are described inside the ConnexionList field (see how to Describe the Connection Points section for more details). The index of the BlueBrick connection refers to the order in which the connections appear.

The Type field contains an integer value that describes the Track Designer type of the connection. This number can take a value between 0 and 20:

The AngleBetweenTDandBB field contains a decimal value that is the angle difference (in degrees) between the orientation of the BlueBrick and TrackDesigner parts.