BDAnimationModules.MouseAimLight.Aim C# (CSharp) Method

Aim() private method

private Aim ( Vector3 target ) : void
target Vector3
return void
        private void Aim(Vector3 target)
        {
            Vector3 targetYawOffset;
            Vector3 targetPitchOffset;

            targetDistance = (target - part.transform.position).magnitude;
            spotlightIntensity = Mathf.Clamp(0.005f * targetDistance, 1, 4.5f);
            targetYawOffset = yawTransform.position - target;
            targetYawOffset = Quaternion.Inverse(yawTransform.rotation) * targetYawOffset; //sets offset relative to the turret's rotation
            targetYawOffset = Quaternion.AngleAxis(90, yawAxis) * targetYawOffset; //fix difference in coordinate system.

            targetPitchOffset = pitchTransform.position - target;
            targetPitchOffset = Quaternion.Inverse(pitchTransform.rotation) * targetPitchOffset;
            targetPitchOffset = Quaternion.AngleAxis(180, pitchAxis) * targetPitchOffset;

            float rotationSpeedYaw = Mathf.Clamp (Mathf.Abs (10*targetYawOffset.x/Mathf.Clamp (targetDistance,10, maxTargetingRange)), 0, rotationSpeed);
            float rotationSpeedPitch = Mathf.Clamp (Mathf.Abs (10*targetPitchOffset.z/Mathf.Clamp (targetDistance,10, maxTargetingRange)), 0, rotationSpeed);

            targetPosition = target;

            if(TimeWarp.WarpMode!=TimeWarp.Modes.HIGH || TimeWarp.CurrentRate == 1)
            {
                //yaw movement
                if(yawRange >= 0)
                {

                    float minYaw = -(yawRange/2);
                    float maxYaw = yawRange/2;
                    if(targetYawOffset.x > 0 && yawTransform.localRotation.Roll () < maxYaw*Mathf.Deg2Rad)
                    {
                        yawTransform.localRotation *= Quaternion.AngleAxis(rotationSpeedYaw, yawAxis);
                    }
                    else if(targetYawOffset.x < 0 && yawTransform.localRotation.Roll () > minYaw*Mathf.Deg2Rad)
                    {
                        yawTransform.localRotation *= Quaternion.AngleAxis(-rotationSpeedYaw, yawAxis);
                    }

                }
                else{
                    if(targetYawOffset.x > 0)
                    {
                        yawTransform.localRotation *= Quaternion.AngleAxis(rotationSpeedYaw, yawAxis);
                    }
                    if(targetYawOffset.x < 0)
                    {
                        yawTransform.localRotation *= Quaternion.AngleAxis(-rotationSpeedYaw, yawAxis);
                    }
                }

                //pitch movement
                if(targetPitchOffset.z > 0 && pitchTransform.localRotation.Yaw ()>-maxPitch*Mathf.Deg2Rad)
                {
                    pitchTransform.localRotation *= Quaternion.AngleAxis(rotationSpeedPitch, pitchAxis);
                }
                else if(targetPitchOffset.z < 0 && pitchTransform.localRotation.Yaw () < - minPitch*Mathf.Deg2Rad)
                {
                    pitchTransform.localRotation *= Quaternion.AngleAxis(-rotationSpeedPitch, pitchAxis);
                }

            }
        }