void TickIntellect()
{
//horizontalMotor
{
float throttle = 0;
throttle += Intellect.GetControlKeyStrength( GameControlKeys.Left );
throttle -= Intellect.GetControlKeyStrength( GameControlKeys.Right );
GearedMotor motor = PhysicsModel.GetMotor( "horizontalMotor" ) as GearedMotor;
if( motor != null )
motor.Throttle = throttle;
}
//gibbetMotor
{
ServoMotor motor = PhysicsModel.GetMotor( "gibbetMotor" ) as ServoMotor;
if( motor != null )
{
Radian needAngle = motor.DesiredAngle;
needAngle += Intellect.GetControlKeyStrength( GameControlKeys.Forward ) * .004f;
needAngle -= Intellect.GetControlKeyStrength( GameControlKeys.Backward ) * .004f;
MathFunctions.Clamp( ref needAngle,
new Degree( -20.0f ).InRadians(), new Degree( 40.0f ).InRadians() );
motor.DesiredAngle = needAngle;
}
}
//Change player LookDirection at rotation
PlayerIntellect intellect = Intellect as PlayerIntellect;
if( intellect != null )
{
Vec3 lookVector = intellect.LookDirection.GetVector();
lookVector *= OldRotation.GetInverse();
lookVector *= Rotation;
intellect.LookDirection = SphereDir.FromVector( lookVector );
}
}