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.