Exemple #1
0
        public override void Rotate(Vector3d versor, double angle)
        {
            var rotationQuaternion = new Quaternion(versor, angle);

            SetRotationStatus((rotationQuaternion * RotationStatus).Normalize());

            SetRotationMatrix(RotationStatus.ConvertToMatrix());

            SetInverseInertiaTensor(
                (RotationMatrix * MassInfo.InverseBaseInertiaTensor) *
                RotationMatrix.Transpose());
        }
Exemple #2
0
        void FixedUpdate()
        {
            if (m_isDragging && RotationHelper.I.RotationStatus != RotationStatus.None)
            {
                if (m_rotationStatus != RotationHelper.I.RotationStatus)
                {
                    m_rotationStatus = RotationHelper.I.RotationStatus;
                    m_rotationSpeed  = RotationHelper.I.RotationStatus == RotationStatus.Left ? RotationHelper.MIN_SPEED : -RotationHelper.MIN_SPEED;
                }

                if (RotationHelper.I.RotationStatus == RotationStatus.Left && m_rotationSpeed >= RotationHelper.MAX_SPEED)
                {
                    m_rotationSpeed = RotationHelper.MAX_SPEED;
                }
                else if (RotationHelper.I.RotationStatus == RotationStatus.Right && m_rotationSpeed <= -RotationHelper.MAX_SPEED)
                {
                    m_rotationSpeed = -RotationHelper.MAX_SPEED;
                }
                else
                {
                    if (RotationHelper.I.RotationStatus == RotationStatus.Left)
                    {
                        m_rotationSpeed += RotationHelper.INTERVAL_SPEED;
                    }
                    else
                    {
                        m_rotationSpeed -= RotationHelper.INTERVAL_SPEED;
                    }
                }

                m_z += Time.deltaTime * m_rotationSpeed;

                if (m_z > 360.0f)
                {
                    m_z = 0.0f;
                }

                transform.localRotation = Quaternion.Euler(0, 0, m_z);
            }
            else
            {
                m_rotationStatus = RotationStatus.None;
                m_rotationSpeed  = 0;
            }
        }
        private void Rotate(IEvent @event)
        {
            var value = (@event as RotationEvent).Value;

            m_rotationStatus = value;
        }
Exemple #4
0
 public RotationEvent(RotationStatus value)
 {
     Value = value;
 }