- 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.
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.
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.
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.
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.
IMPROVEMENT: By default we stop rendering all Player shadows when in
first person and 'renderFirstPerson' is disabled. Added flag
'firstPersonShadows' to disable this behavior.
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.