function BoneLookController(mesh, bone, target, options) {
            /**
             * The up axis of the coordinate system that is used when the bone is rotated.
             */
            this.upAxis = BABYLON.Vector3.Up();
            /**
             * The space that the up axis is in - BABYLON.Space.BONE, BABYLON.Space.LOCAL (default), or BABYLON.Space.WORLD.
             */
            this.upAxisSpace = BABYLON.Space.LOCAL;
            /**
             * Used to make an adjustment to the yaw of the bone.
             */
            this.adjustYaw = 0;
            /**
             * Used to make an adjustment to the pitch of the bone.
             */
            this.adjustPitch = 0;
            /**
             * Used to make an adjustment to the roll of the bone.
             */
            this.adjustRoll = 0;
            /**
             * The amount to slerp (spherical linear interpolation) to the target.  Set this to a value between 0 and 1 (a value of 1 disables slerp).
             */
            this.slerpAmount = 1;
            this._boneQuat = BABYLON.Quaternion.Identity();
            this._slerping = false;
            this._firstFrameSkipped = false;
            this._fowardAxis = BABYLON.Vector3.Forward();
            this.mesh = mesh;
            this.bone = bone;
            this.target = target;
            if (options) {
                if (options.adjustYaw) {
                    this.adjustYaw = options.adjustYaw;
                }
                if (options.adjustPitch) {
                    this.adjustPitch = options.adjustPitch;
                }
                if (options.adjustRoll) {
                    this.adjustRoll = options.adjustRoll;
                }
                if (options.maxYaw != null) {
                    this.maxYaw = options.maxYaw;
                }
                else {
                    this.maxYaw = Math.PI;
                }
                if (options.minYaw != null) {
                    this.minYaw = options.minYaw;
                }
                else {
                    this.minYaw = -Math.PI;
                }
                if (options.maxPitch != null) {
                    this.maxPitch = options.maxPitch;
                }
                else {
                    this.maxPitch = Math.PI;
                }
                if (options.minPitch != null) {
                    this.minPitch = options.minPitch;
                }
                else {
                    this.minPitch = -Math.PI;
                }
                if (options.slerpAmount != null) {
                    this.slerpAmount = options.slerpAmount;
                }
                if (options.upAxis != null) {
                    this.upAxis = options.upAxis;
                }
                if (options.upAxisSpace != null) {
                    this.upAxisSpace = options.upAxisSpace;
                }
                if (options.yawAxis != null || options.pitchAxis != null) {
                    var newYawAxis = BABYLON.Axis.Y;
                    var newPitchAxis = BABYLON.Axis.X;
                    if (options.yawAxis != null) {
                        newYawAxis = options.yawAxis.clone();
                        newYawAxis.normalize();
                    }
                    if (options.pitchAxis != null) {
                        newPitchAxis = options.pitchAxis.clone();
                        newPitchAxis.normalize();
                    }
                    var newRollAxis = BABYLON.Vector3.Cross(newPitchAxis, newYawAxis);
                    this._transformYawPitch = BABYLON.Matrix.Identity();
                    BABYLON.Matrix.FromXYZAxesToRef(newPitchAxis, newYawAxis, newRollAxis, this._transformYawPitch);
                    this._transformYawPitchInv = this._transformYawPitch.clone();
                    this._transformYawPitch.invert();
                }
            }
            if (!bone.getParent() && this.upAxisSpace == BABYLON.Space.BONE) {
                this.upAxisSpace = BABYLON.Space.LOCAL;
            }
        }
Create a BoneLookController
@param mesh the mesh that the bone belongs to
@param bone the bone that will be looking to the target
@param target the target Vector3 to look at
@param settings optional settings:
- maxYaw: the maximum angle the bone will yaw to
- minYaw: the minimum angle the bone will yaw to
- maxPitch: the maximum angle the bone will pitch to
- minPitch: the minimum angle the bone will yaw to
- slerpAmount: set the between 0 and 1 to make the bone slerp to the target.
- upAxis: the up axis of the coordinate system
- upAxisSpace: the space that the up axis is in - BABYLON.Space.BONE, BABYLON.Space.LOCAL (default), or BABYLON.Space.WORLD.
- yawAxis: set yawAxis if the bone does not yaw on the y axis
- pitchAxis: set pitchAxis if the bone does not pitch on the x axis
- adjustYaw: used to make an adjustment to the yaw of the bone
- adjustPitch: used to make an adjustment to the pitch of the bone
- adjustRoll: used to make an adjustment to the roll of the bone