Removing the "using namespace Torque" from header file to prevent issues
with certain engine addons conflicting with ::UUID defined by windows
and Torque::UUID defined by T3D.
When a TSShapeInstance makes a copy of its own materials through
cloneMaterialList() (such as done with client side ShapeBase objects),
the reference to a named diffuse render target was being lost. This
affected using a TheoraTextureObject on a ShapeBase derived object
(StaticShape, etc.).
There is a fix in the libsquish repository to make v1.11 compile under
Linux. http://code.google.com/p/libsquish/ This involves adding an
#include <limits.h> to a couple of files.
The style.css defines how some of the Project Manager GUI elements look.
With the buttons for changing a project's modules some changes to this
file are required.
Places a theora video onto a named texture surface that may be used by
any material. Allows for the video to play, pause, stop, loop, and for
the source video to be changed at any time.
Based on this resource:
http://www.garagegames.com/community/resources/view/21019
- ShapeBaseData has two new properties. cameraCanBank indicates that
the game object may bank its eye/camera, if supported by the object.
mountedImagesBank indicates that mounted images should bank with the
eye/camera in first person view. Both default to false.
- Player supports 1st person eye and 3rd person camera banking when
making use of the new ExtendedMove class.
- Camera class supports banking when making use of the new ExtendedMove
class.
- GameConnection now has an idea of a control scheme. This determines
how game objects should respond to input events. A control scheme may
be set by either the server or client. Current control schemes are:
-- Absolute rotation (likely though the ExtendedMove class)
-- Add relative yaw (from mouse or gamepad) to absolute rotation.
-- Add relative pitch (from mouse or gamepad) to absolute rotation.
- Player class supports the new control schemes when using the
ExtendedMove class.
- Camera class supports the new control scheme when using the
ExtendedMove class.
- Side by side rendering implemented throughout the graphics pipeline.
- New GuiTSCtrl renderStyle property is set to "stereo side by side" to
activate.
- You set an IDisplayDevice on the GameConnection to define any vertical
FOV, projection offset, and stereo eye offset properties required for
the stereo rendering (no display device included with this commit).
- Full and Empty templates updated with correct scripts and shaders.
- Support for three positions and rotations.
- Increased the number of bits used to network rotations.
- New Euler based rotation support, in addition to the existing
quaternion support.
Not all platforms currently support the PVI_NumAdapters query from
PlatformVideoInfo. This fix puts in the assumption that there is always
1 adapter if the PVI_NumAdapaters query returns false. This was the
behaviour prior to PVI_NumAdapters being put in place.
The GFX (DirectX) pipeline did not respect the choice of adapter and
always went for the default one. Normally this isn't an issue unless
you wish to target a particular adapter and display device combination.
This has been corrected.
The GFX initialize functions now attempt to find the best adapter that
matches a given display device (i.e. monitor) if one has been passed in.
To aid with choosing a display device some new monitor enumeration
methods have been added to the platform window manager. These methods
have been exposed to the Canvas.
- Be sure to delete all prefs.cs files following this change.
- Changes the console types of the missing, unavailable and warning
texture paths. The old type was causing string corruption when saving
preferences.
- Changes the console type of the TSShapeConstructor collision shapes.
The old type was causing string corruption when saving preferences.
- Changed missing texture reference in ProcessedMaterial from String to
const char*.
Pass a final boolean argument to TerrainBlock::import to control
y-axis flipping. It is enabled by default, since this was the previous
default behavior.
This should be added as an option in the terrain import dialog - see
game/tools/worldEditor/gui/guiTerrainImportGui.gui
The ShapeBase class tests if all of its meshes are hidden and if so,
then it doesn't render during that frame. However, if there are no
meshes in the ShapeBase and only nodes then rendering is also skipped.
Unfortunately, this also skips the rendering of any mounted images.
This change allows for a mesh-less skeleton to render any mounted
images.
- displaySplashWindow() now takes an optional path to a bitmap file.
- Missing, unavailable and warning texture paths now come from
GFXTextureManager static methods.
The ExtendedMove class can optionally replace the standard Move class to
allow the passing of absolute position and rotation information from the
client's input device to the server. It is enabled by changing
$TORQUE_EXTENDED_MOVE to true in buildFiles/config/project.conf and
re-running the project generator.
New forceClientTransform() console method to force a RigidShape's
transform on the client. This is used when you transform a RigidShape
on the server and want the client to immediately transform rather than
interpolate to the transform.
- New InputEventManager class. It will be used by 3rd party input
devices to generate Torque 3D input events.
- Expanded the input event signal to include three new floats and a new
integer.
- Expanded the number of joystick buttons to 48.
- The input virtual map is now extendable rather than hard coded.
- The input devices types are now extendable rather than hard coded.
- New SI_POS, SI_ROT, SI_INT, and SI_FLOAT input event types.
- New SI_VALUE input action type.
- ActionMap has been updated to work with these changes.
- Removed unnecessary references to platform/event.h
ScriptTickObject is a ScriptObject that adds callbacks for tick and
frame events. Use setProcessTicks() to enable or disable the
onInterpolateTick() and onProcessTick() callbacks. The
callOnAdvanceTime property determines if the onAdvanceTime() callback is
called.
Fix for Issue_190:
Without having DI8DEVTYPE_DRIVING here, many steering wheel's will show
up as "unknown" and cannot be mapped to actions. Driving and gamepad
both map to joystick for consistency, since they all can have buttons,
axes, sliders, and pov hat's.
1. When addProtectedField used with custom setters, we need to return false, or it will set the value via regular routine after the method exists (change ParticleData::protectedSetTimes() to return false instead of true).
2. The ParticleData::sizes[] needs a custom setter, so the value is clamped in a range of 0.f and MaxParticleSize.
3. The spinRadnomMin and spinRandomMax ParticleData fields need a FRangeValidator, so it auto-clamped in a range of -1000 to 1000, as we are writing data trying to fit the values in 11 bits (as UInt upto 2048 max).
* The description for those fields needs to be updated to use 1000 instead of 10000.
* ParticleData::onAdd() should check for values to be in a correct range too.
Pull Request #125 was to fix Issue #124. However, as reported by a
user, this fix broke the water. This is a partial reversion of those
changes to get the water working again. The fix from Pull #125 will
need to be examined.
Previously, dAtoi would be called on arbitrary strings delimited
only by the / character. Now, Sim::findObject actually checks that
object handles (strings starting with a digit) actually only contain
digits or slashes.
Specifically:
* Made update bits constants protected so that derived classes can
use them - especially NextFreeMask! IIRC, most classes make these
constants public, though there's no real reason to.
* Made potentialEnterObject virtual so that derived classes can
substitute their own logic.
Before this function would iterate through every server-side object to
find a MissionArea. Now, it stores the server object in a static member
smServerObject. This member is updated in onAdd and onRemove, and returned
by getServerObject.
screenScale represents the current zoom factor, but may need some
revision because I'm not sure if what it's doing is technically correct.
It is used to multiply the culling distance for cells, as well as the
fading distance.
IMPROVEMENT: By default we stop rendering all Player shadows when in
first person and 'renderFirstPerson' is disabled. Added flag
'firstPersonShadows' to disable this behavior.
- Prevent stack corruption in a few places
- Use correct type in printfs
- Reduce type conversions in EngineApi & dAto*
- Fix compilation on GCC
- Tidy up code
- ConsoleValue class is now the base value class.
- ConsoleValueRef is now used to supply function parameters. Values are disposable.
- Script functions return values instead of just strings where possible.
- Variables can be disposable strings
- Bytecode changed
Fix the issues with console method parameters and fields which prevented missions from loading.
steeringReturn is the main control for the amount of return in
the steering. Setting it to 0 (the default) disables steering return
completely.
steeringReturnSpeedScale is a multiplier on the amount of effect that
the vehicle's velocity has on its steering return.
powerSteering can be set to eliminate the effect of steering return on
user input. Without this flag set, the user will have a harder time
steering, because the wheels try to return as they steer. If this flag
is set, steering return will not be applied while the user is actually
steering, only when they release.
Looks like GCC (4.4.x) on RHEL is built with some optimization flags, which caused crash inside assembler code (when using inline-cast: uint->uchar->uint from GetNzbSubID down to find_maskwidth).
Tested this change on 7 different distros, so far - everything seems to be working.
The FMOD include files are now assumed to be located outside of the
Torque 3D directory structure. See
Tools/projectGenerator/modules/fmod.inc for the various methods to tell
the Project Generator how to find FMOD. If FMOD is installed in its
default location then nothing special is required.