Шаблоны
SpinTires XML шаблоны используются для того, чтобы избежать копирования. Например, колёса грузовика в основном идентичны, однако каждое описывается собственной XML-ветвью. Чтобы предотвратить копирование атрибутов в каждой ветви, шаблон колеса создается в специальном файле, который называется "_templates":
<_templates>
<Wheel>
<RearWheel
ConnectedToHandbrake="true"
DefaultWheelType="kraz_rear"
HardpointOffsetY="-0.244"
SuspensionMin="-0.4"
SuspensionStrength="0.02"
Torque="default"
/>
</Wheel>
</_templates>
Существуют глобальные шаблоны с уже готовыми шаблонами. Они могут быть включены при помощи добавления, например, атрибута ="trucks". Все эти файлы находятся в папке "\Media\_templates".
При этом каждое колесо использует этот шаблон (атрибут под названием "_template"):<Wheel _template="RearWheel" HardpointX="-0.49" />
<Wheel _template="RearWheel" HardpointX="-0.49" RightSide="true" />
<Wheel _template="RearWheel" HardpointX="-1.93" />
<Wheel _template="RearWheel" HardpointX="-1.93" RightSide="true" />
XML-ветвь может использовать только те шаблоны, которые описаны как дочерний узел ветви с тем же именем. Помните, что колёса используют шаблон "RearWheel", который является дочерним узлом ветви "Wheel" в секции "_templates".
Таким образом, получается практически тоже самое, что и копирование всех атрибутов в каждую индивидуальную XML-ветвь. Ветвь, использующая шаблон может переопределить любой атрибут конкретного шаблона. Иерархия ветвей, так же как и иерархия атрибутов, копируется системой шаблонов.Наследование
SpinTires XML файл может наследовать другой файл:
<_parent File="kamaz6520" />
Это примерно тоже самое, что и глобальный шаблон для всего файла. Получается, что все атрибуты и ветви загружаются из файла "kamaz6520.xml", после чего атрибуты и ветви из текущего файла (если они там есть) объединяются вверху (переопределяются).
Это, например, облегчает поддержку разных грузовиков, которые немного отличаются друг от друга. Наследование, также, влияет на поведение модели непосредственно в игре:
- Все игровые достижения Steam работают со всем наследованными грузовиками. То есть, если грузовик B имеет строку
<_parent File="A" />
То игрок может получить все те же самые достижения на грузовике B, что и на грузовике A. - Требования для аддонов грузовиков SpinTires и исключаемые аддоны работают для всех наследуемых аддонов. То есть, строка
ExcludeAddons="A"
также исключает B, если B имеет строку
<_parent File="A" />
А требование
<RequiredAddon Types="A" />
Также справедливо для B, если B имеет все ту же строку
<_parent File="A" />
- Наследование распространяется на все свойства модели.
_inheritRemove
Если ветвь наследуемого XML файла содержит строку
_inheritRemove="true"
То в таком случае её свойства и атрибуты не будут скопированы с родительского файла. Например, если ваш мод на грузовик имеет 4 колеса вместо 6, вы добавляете 2 этих лишних колеса со строкой
_inheritRemove="true"
_noinherit
Если ветвь наследуемого XML файла содержит строку
_noinherit="true"
То тогда её атрибуты и дочерние узлы не будут скопированы с родительского файла. Например, если ваш мод на грузовик имеет абсолютно другие колёса, вы используете "_noinherit", чтобы не дать родительскому файлу переопределить какие-либо параметры мода.