Changes to the DTS Exporter:

Version 06-07-04
- Simple ground transforms are now correctly saved within DSQ files.
- A new Priority text edit field has been added to the Animation tab and a new column
  displaying its value has been added to the Animation Sequences list box.  The Priority
  animation sequence property is used in the Torque Game Engine to determine who should
  control a node when there is a conflict -- the higher priority sequence takes control.

Version 05-02-17
- A new option has been added to the Preferences tab: Combine collision meshes into single
  detail level.  With this option active, all collision meshes will be placed within the
  same detail in the DTS file.  This allows you to have more than 8 collision meshes work
  within TGE 1.3.  Using this option in TGE 1.4+ in not required as it no longer has a limit.
- The Material Attributes shader has been expanded to include two news items.  The first is
  the Detail Image Scale edit box.  When using a Detail Map, this value may optionally be
  used to change the size of the map over the shape.  The second item is the 'Detail image
  uses environmental mapping' check box.  In previous versions of the exporter, all detail
  maps were exported to allow environmental mapping.  This should not normally the case and
  was a bug to have this enabled by default.  Now environmental mapping is no longer the
  default option, and this check box allows you to turn it back on.
- A bug under OSX with the Material Attributes shader window crashing LightWave has been
  corrected and tested under LightWave 8.5.  Please remember to remove and then add the
  exporter plug-in to both Layout _and_ Modeler to make sure that all plug-in modules are
  refreshed.

Version 04-11-15
- Simple ground transformation within an animation sequence has been added.  This may be set
  from the new Ground tab at the bottom of the Animation tab.  It allows you to set how much
  the ground is moved over the course of the selected animation sequence through the x, y
  and z edit fields.  This will cause the DTS file to save a single ground transform frame
  with the given translation.  This will not be exported to a DSQ file at this time.
- Fixed a bug that was causing LightWave to crash when exporting a DSQ file on the Mac.

Version 04-10-05
- Level of Detail billboard (TSLastDetail) support has been added.  To activate a billboard
  LOD, select the detail level from the Global tab (usually the last LOD) and click on the
  'This is a billboard detail (tsLastDetail)' check box.  There are a number of parameters
  which may be changed underneath the check box to customize the billboard.

Version 04-06-07
- Collision meshes were not being built correctly if they were moved away from the scene's
  origin.  The exporter has been changed to better handle this case.
- Detail levels will now automatically reference the bones from the top most detail level,
  regardless of the 'Use Bones From' setting in LightWave.  This allows for the animation of
  the lower detail levels.  Previously, these lower LOD would all be mapped to their root bone,
  which would not correctly animate them.  Just make sure to use the same weight map names for
  the lower detail levels as those used in the primary object so the bones know which vertices
  to control.
- Corrected a crash bug with object states where there is more than one object that may
  have their states animated but not all of them are animated.
- LOS Collision Mesh has been added as an option for an object.  For this to work, 'Use Mesh'
  must be selected from the 'Collision Mesh' popup under the Global tab.

Version 04-04-13
- Fixed the case where a bone's pivot point rotation was not being taken into account when
  calculating its initial transformation.
- Fixed some cases of segmented objects not correctly exporting their initial transformation.
- Worked around a LightWave design issue where a vertex was not considered to have a discontinuous
  UV coordinate when it belonged to multiple texture maps.
- Added in Detail Maps.  These are usually gray-scale images that are applied over the coloured
  surface, often to "diry it up".  To apply a detail map, place an image into a surface's
  diffuse channel.  This will cause a detail map material to be exported.  Note that as of this
  date, the TGE will render the detail map in a second rendering pass.  This means that detail
  mapped polygons will be rendered twice each frame.

Version 04-02-26
- Added in "Save Sets".  A save set stores all of your exporter settings, from the objects that
  will be exported to the animation sequences.  By allowing you to have more than one save set
  (ie: the way the exporter used to behave) you may now export multiple DTS files from the
  same scene.  For example, you may have a LW scene setup with a house where the walls are one
  object and the roof another.  You've lined them up in the scene and now you wish each object to
  be saved to a different DTS file.  You would setup the first save set to export only the walls.
  You'd then create a new save set to export the roof as a DTS file separate from the walls.
  Then, you select each save set in turn and click the Export button.  You now have two different
  DTS files from the same scene with each made up of different LW objects.  To activate save sets,
  go to the Preferneces Tab and click on the 'Activate save sets' check box.  Now head to the
  Global Tab where you may add or remove save sets.  The save set selected in the drop down list
  is the one you are currently making changes to in the other tabs.

Version 04-02-23
- Bug fix for object visibility.  Previously, the LW dissolve value was being used directly.
  In LightWave 0% dissolve means 100% visibility, so passing this value directly to the TGE
  would have the opposite affect.
- Fixed the handling of vertices that take part in multiple weight maps.  Previously we assumed
  that the total influence on a vertex by all weight maps would not be greater than 100%
  (a normalized value).  Unfortunately, LightWave does not pass along its internally normalized
  value through the SDK, so we've had it handle it ourselves.

Version 04-01-14
- Added a check that all animation sequences have at least one frame and at least 1 FPS before
  an export may take place.

Version 04-01-07
- Fix a bug in the Exporter Shader that was preventing the NoMipMap and MipMapZeroBorder flags
  from being saved in a DTS material.
- Added the IFL flag to the Exporter Shader to tag a surface as animted.  This requires that
  a IFL file with the same name as the colour bitmap be present with the DTS file for correct
  loading of the DTS file in the TGE.  For example: if the LW surface has a colour bitmap named
  face.png attached to it and is flagged as using an IFL, then the face.ifl file must be present
  with the saved DTS file.  This IFL file is created manually in a text editor and contains a
  number of rows with the format of: "bitmapFileName Duration".  For example, for the face.ifl
  file described above, it could contain:

    face01 5
	face02 5
	face03 2
	face04 3
	face05 5

  This tells the TGE to look for bitmaps named face01.xxx through face05.xxx, with the first
  two bitmaps and the last bitmap having a duration of 5 30th's of a second, the third bitmap
  lasting 2 30th's of a second, and the fourth bitmap lasting 3 30th's of a second.  As you've
  probably guessed, the durations are in 30th's of a second (1/30).
- Added the ability to exporter IFL materials.  Once you've setup a surface to be IFL animatable
  (see above), go to the Materials Tab for a defined animation sequence.  Under this tab will be
  a list of all animatable surfaces.  Select those that will be controlled by this anim sequence
  by choosing the "Attach IFL surface to sequence" check box.  Two things to note about how the
  TGE implements IFL material animations:

  - IFL material animations may only be present in the DTS file (ie: cannot be saved in a DSQ)
  - While multiple anim sequences may be setup to control an IFL animation, if these anim
    sequences are played at the same time, only the first one that is encountered in the
	TSShapeInstance's thread list will actually control the IFL animation.  The order of this
	thread list is determined by the order the threads are added to the TSShapeInstance.
- Changed the name of the Advanced Tab to Preferences.

Version 03-11-11
- Added the ability to export an object's visibility.  It is based off of the LightWave object's
dissolve attribute which may be animated using an envelope.  Please note that under the current
release of the Torque Game Engine, object visibility animation is not supported in DSQ files.
You'll also want to note the following:  Visibility is currently only taken into account in the
TGE when it is involved in an animation.  An object with less-than 100% visibility that doesn't
modify the visibility in at least one animation will show as opaque in the TGE.  This, of course,
doesn't affect using transparent textures, only overall object visibility.  In the TGE, if an
object's visibility is <=0.01f, or in some cases in the TGE code <0.01f (which is 1% dissolve in
LightWave) the object is not rendered at all and does not take part in any collision calculations.
In the TGE, if an object's visibility is >0.99f (99% dissolve in LW) then the object is considered
opaque and will render without fading.
- Added the ability to export triggers to DTS and DSQ files.  Currently, triggers are only defined
within the DTS Exporter Animation Tab interface and not anywhere within the scene.  So, if the
DTS Exporter Master Plug-in is removed from the scene, all defined triggers will also be deleted
(as will any defined sequences, which has always been the case).  One thing to note is the
"Invert on Reverse" option that will cause a trigger's state to be the opposite when an anim
sequence is played in reverse within the TGE.  So, if a trigger is 'on' while the anim sequence
is playing in the normal (forward) direction, it will change to an 'off' in the reverse direction.
This is a very specialized application for triggers, and likely will not affect the average
TGE user.

Version 03-10-03
- There is a confirmed bug in LW 7.x that prevents it from reporting an item's (such as a bone)
true rotation to plug-ins when the 'Match Goal Orientation' parameter is set on the item.  This
means that when exporting to Torque, an animation shows the item NOT matching the goal's
orientation (as if the flag was not turned on in LW).  Some code has been put in place to
help with this situation.  Unfortunately, it doesn't work in all cases.  With some
combinations of rotations, the 'Match Goal Orientation' item can really wobble due to
numerical imprecision.  This may be especially true if the item is a child of a really long
chain.  Therefore, I recommend that you try to animate without this option turned on in
LightWave.  If you must use it, be prepared for the results in Torque to not match
exactly those in LW.  Hopefully LW 8 will fix this bug! :o)
- Fixed a bug with the 'Setup for IK' button under the 'Animation' tab.  If this button was
clicked multiple times (which is perfectly normal when setting up your animation), multiple
TorqueDTS_IKChannelCreator plug-ins were added to the object/bone.  Over time, this could
really slow down your timeline scrub in Layout as each additional plug-in would record the
item's rotation in the DTSIK.x envelopes (this should only occur once for each item at each
frame).  If this has happened to you with a previous version on the DTS Exporter plug-in,
you'll need to manually go through each item and remove the multiple DTS plug-ins under the
'Item Motion' pannel in Layout.

Version 03-06-13
- Changed how the initial transformation of bones are handled.  Originally, the bone's
transformation at the base frame (usually frame 0) was used.  Now, the bone's rest transformation
is used (a unique attribute for bones).  Before this change, if the base frame did not have
the bones at the rest transformation, limbs would often 'orbit' the character when exported
to Torque.  When using IK, it can be nearly impossible to have the bones begin at their rest
transformation at the base frame, so this change should help out a lot.
- The 'Add All Nodes' and 'Remove All Nodes' buttons on the 'Animation' tab now open a window
that allows the user to select the specific channels (position, rotation, scale) that should
be added or removed.  Previously, all channels would be added or removed.  Handy if you'd like
to add only the rotation channel of every node in the scene to a sequence.

Version 03-02-18
- Corrected an interface bug that prevented the user from selecting the 'Blend' option for
an animation.
- Allowed for the export of multiple collision meshes.  The user only need to select all of
the LW objects they wish to use as convex collision meshes in the same manner they used to
select the single collision object in the past.

Version 03-01-24
- Vertices may now be influenced by multiple bones (nodes).  In other words, vertices may now
have values in multiple weight maps.  Character animators should like this feature as seams at
joints may move based on the bones on either side, resulting in much smoother motion.

Version 02-12-16
- Added support for uniform and aligned scaling within DTS and DSQ animation sequences.
- Nodes may now have the translation, rotation, and scale animation channels independantly
selected for export.  In previous versions, all translation and rotation information was exported
regardless if the node had changes on only one of the channels (ie: bones only rotating).
This will save a bit on the size of the generated DTS and DSQ files.
- Modified the Animation tab to provide space for additional check boxes used to select which
channels will be exported for each node.

Version 02-10-25
- Added support for double-sided surfaces.  This is accomplished by creating duplicate polygons
for each double-sided polygon and reversing the normals.  These duplicate polygons are then
added to the overall polygon list to be saved.  The export of double-sided polygons may be
disabled with an option under the Advanced tab.
- A new progress dialog box appears when building DSQ files.  It better indicates to the user
what is occurring during processing, and when it is complete.

Version 02-10-18
- Allowed the user to choose if discontinuous UV texture coordinates should be automatically
created from the Advanced tab.  This automatic creation is on by default.
- DSQ filenames for each sequence are now saved with the LightWave scene file.

Version 02-10-16
- Removed the Node List button that was at the bottom of the interface, and put the information
under its own 'Nodes' tab
- Blend animation sequence support is working.  The user must choose the reference frame, which
then defines a reference position and rotation for all nodes that are a part of the sequence.
All nodes in each frame of the blend sequence then subtract their positions and rotations from the
reference frame to produce a neutral position and rotation.  Within the TGE, the blend sequence
is added to the underlying playing animation sequence to produce the desired total animation.
For this to work best, the underlying playing animation sequence should set its nodes that are
a part of the blend sequence to the same position and rotation as the reference frame, although
there are many cases when this is not required.
- Added support for discontinuous UV texture coordinates.  This allows the exporter to take into
account vertices that have more than one uv coordinate, such as along a seam on a cylinder.
LW handles this just fine, and very often new users of the exporter assume that this functionality
is available in Torque.  The exporter now converts a single vertex with multiple uv coordinates
into multiple vertices each with a single uv coordinate.  In the end, it allows for easier
mapping within LW while still working within the limitations of the Torque Engine.
- DSQ files may now be saved from animation sequences.  A DSQ file name is defined for each
sequence and the clicks on an export button to save out the DSQ file.

Version 02-08-06
- Modified the user interface so that everything is now under a tab.  This change generated
a new 'Objects' tab where all of the static object info that was at the top of the exporter
has been moved to.
- Added to the 'Animation' tab to support limiting which nodes will be exported with a given
animation sequence.  Previously, all nodes were exported with a sequence, regardless if they
were animated or not.  This change is required to allow support of blended sequences, as well
as other tricks in the Torque Engine.
- Add code to detect if the user is trying to load in a LW scene that was created with a newer
version of the exporter plug-in than is currently installed.  If this occurs, then none of the
DTS information can be loaded in from the scene.  I'm sure the reason is obvious! :o)
- Preliminary code to support Blend animation sequences.  A bug in the matrix building prevents
this from completely working.

Version 02-08-05
- Changed the version naming to be year-month-day.
- Performed a bug-fix on the Quaternion creation from angles code.  The order was originally
incorrect, and caused some animation problems when all three axis of a node were animated.
- Now a vertex is only considered to belong to a weight map if that vertex has a weight
greater than 50%.  There was a problem where a vertex was part of a weight map and had a
weight of 0%, so the vertex was being associated with the wrong node.

Version 17-05-2002
- A LW surface reflection of zero will turn on the 'no environmental reflections'
flag for the Torque material.
- The default transparency flags no longer include 'Additive'
- A non-zero value for the luminosity channel in LightWave actives the SelfIlluminated flag
for the Torque material.
- A new LW shader has been built to allow for the setting of some Torque flags on a per
surface basis.  This shader requires that the exporter plug-in be loaded in both Layout and
Modeler.  To use it, select the 'Shader' tab for the surface, and choose
TorqueDTS_MaterialAttributes from the list.  This shader allows for the setting of the
Additive and Subtractive flags, as well as the NoMipMap and MipMapZeroBorder flags.
- Fix a bug that was preventing nodes from being a child of the correct parent.
- Implemented animation sequence support.  Any number of sequences may be defined for a range
of frames within the scene.  A sequence may also be set to cycle.  All of these options
are located under the Animation Tab in the exporter interface.
- Added a custom object plug-in that will show the name of the current animation sequence.
This is very handy as you don't need to then refer to the exporter interface to find out
what sequence your frame currently belongs to.
- Added a motion handler plug-in that is used to translate IK rotations into a special set of
channels.  These channels are then read by the exporter and save as part of the animation
sequence.  This allows the user to create animations using IK (otherwise, the IK rotations
would not be saved as only true keyframes may be read by the exporter.  A LW SDK design.).

Version 21-03-2002
- Added node support, including a button to bring up a window that lists all of the nodes
that will be created in the DTS file.
- Currently, if a node is not exported, then its children will not be exported.  The exception
to this is if a node based on the mesh is not exported based on the user's option in the
Advanced Tab.  In this case, any children of the mesh will be exported as nodes, but their
local space will be used as their world space.  This will cause some differences between
how nodes are displayed between LW and Torque.  The current solution: Don't keyframe a mesh
to a location other than the origin if you are not going to export it as a node!
- Advanced Tab: Allowed the user to choose the type of points and polygons that will
be exported: those as saved from Modeler (Normal), and those after being transformed within
Layout, such as from bones or morphing (Transformed).  The default is Normal.
- Advanced Tab: The user can now choose from what time frame the positions and rotations
will be read from.  The default is a time of 0.0 seconds.
- Advanced Tab: the user may choose to export meshes as nodes.  If this is not selected,
then a Root node is automatically created for meshes to attach to (if they don't have their
own bones to attach to).  Also, any transforms that have been done on the mesh (such as
moving it or rotating it within Layout) will not be taken into account when building
child nodes, such as bones.  Otherwise, a node for each mesh is created, and any vertices
within each mesh that are not attached to a bone are attached to the mesh's node.  The
default is to create a node based on the mesh.
- Advanced Tab: The user may add an extension to the nodes created from meshes to distinguish
them from the mesh names.  This will likely only have a bearing when programmatically accessing
the object within the Torque Engine.
- Added support for environmentally reflective materials.  The reflection parameter in the
LW surface is used to regulate the amount of reflection.  For each surface, the base reflection
amount is control by the alpha channel in the colour bitmap.  This is how Torque does it when
there isn't a separate reflection map (which will be in a future version).


Version 08-03-2002
- Changed the saving code to take endian differences into account for the Mac version of the
exporter.  This also required a change to the Shape::getNodeWorldPosRot() function to assign
a Quaternion directly rather than use the SDK ::identity method.  This was to get around
a Visual C++6 and CodeWarrior 7 difference.
- Fixed all textures to export in the correct orientation.  Previously, all images would
appear to be upsidedown.  Hopefully this fix will not break sometime down the road, as the
mapping of LW to OpenGL should have worked without this fix.


Version 21-02-2002
- First stable and usable version!
- Exports static objects, including a collision mesh.
- Bug with textures being exported upsidedown exists.

