Here is an update for the submodel system. This will allow submodels to be
defined for any aircraft, and there are no default submodels. To use this
submodel system you need to set up a binding (slight change in property name
from last one, but you can use any property name you like, as long as it
matches the name in the submodels.xml file, see below):
<button n="0">
<desc>Trigger</desc>
<binding>
<command>property-assign</command>
<property>/systems/submodels/trigger</property>
<value type="bool">true</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/systems/submodels/trigger</property>
<value type="bool">false</value>
</binding>
</mod-up>
</button>
Then in your *-set.xml file you need to define a path to the configuration
file (similar to the way the electrical system is now done):
<sim>
...
<systems>
<electrical>
<path>Aircraft/Generic/generic-electrical.xml</path>
</electrical>
<submodels>
<serviceable type="bool">true</serviceable>
<path>Aircraft/FW190/submodels.xml</path>
</submodels>
</systems>
...
</sim>
Then you put the submodel configuration file in your aircraft's directory.
I've attached a file, submodels.xml, that can be used to define a gun that
works just like the former one did.
There are two things remaining to be done. One is to change the function
SubmodelSystem::transform() to properly position the submodel. This will
require some complicated matrix code that I might borrow from Yasim.
Right now the code is not very configurable, and there is only one submodel per airplane possible. It is implemented as an SGSubSystem, just like the electrics, vacuum, etc. systems. To make it work you need to make a release binding like this (for my joystick trigger):
<button n="0">
<desc>Trigger</desc>
<binding>
<command>property-assign</command>
<property>/systems/submodel/trigger</property>
<value type="bool">true</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/systems/submodel/trigger</property>
<value type="bool">false</value>
</binding>
</mod-up>
</button>
Then, each airplane that uses the system should have something like this added to its *-set.xml file (note that this does *not* go within the <sim></sim> tags):
<systems>
<submodel>
<serviceable type="bool">true</serviceable>
<amount type="int">70</amount>
</submodel>
</systems>
Future improvements will include:
1) more configurability, so the user can create multiple submodels, and can assign them different locations, and pitch and yaw adjustments, and nitial velocity.
2) sound?
3) a more accurate calculation of the submodels location at any pitch/roll/yaw.
4) a way to pre-load the model, so the AI code doesn't have to parse the model every time it creates an instance.
I think that's all of it.