Example #1
0
		public void ConstrainedAlignAxis(int nAxis, Vector3f vTo, Vector3f vAround)
		{
			Vector3f axis = GetAxis(nAxis);
			float fAngle = MathUtil.PlaneAngleSignedD(axis, vTo, vAround);
			var rot = Quaternionf.AxisAngleD(vAround, fAngle);
			Rotate(rot);
		}
        public void Update()
        {
            Vector3f  delta = (Vector3f)Input.mousePosition - last_mouse_pos;
            Transform x     = mainCamera.transform;

            if (Input.mouseScrollDelta.y != 0)
            {
                if (mainCamera.orthographic)
                {
                    mainCamera.orthographicSize = MathUtil.Clamp(
                        mainCamera.orthographicSize - ScrollSpeed * Input.mouseScrollDelta.y, 1, 1000);
                }
            }
            else if (Input.GetMouseButton(1) || Input.GetMouseButton(2))
            {
                mainCamera.transform.position +=
                    (-PanSpeed * delta.x * x.right) +
                    (-PanSpeed * delta.y * x.up);
            }
            else if (Input.GetMouseButton(0))
            {
                Quaternionf rotatelr     = Quaternionf.AxisAngleD(x.up, -RotateSpeed * delta.x);
                Quaternionf rotateud     = Quaternionf.AxisAngleD(x.right, RotateSpeed * delta.y);
                Quaternionf cur_rotation = TargetObject.transform.rotation;
                Quaternion  new_rotation = rotatelr * rotateud * cur_rotation;
                TargetObject.transform.rotation = new_rotation;
            }

            last_mouse_pos = Input.mousePosition;
        }
Example #3
0
        public static Quaternionf FromToConstrained(Vector3f vFrom, Vector3f vTo, Vector3f vAround)
        {
            float fAngle = MathUtil.PlaneAngleSignedD(vFrom, vTo, vAround);

            return(Quaternionf.AxisAngleD(vAround, fAngle));
        }