public virtual void OnColliderEventDragFixedUpdate(ColliderButtonEventData eventData)
        {
            if (eventData != grabbedEvent)
            {
                return;
            }

            if (moveByVelocity)
            {
                // if rigidbody exists, follow eventData caster using physics
                var casterPose = GetEventPose(eventData);
                var offsetPose = eventList.GetLastValue();

                if (alignPosition)
                {
                    offsetPose.pos = alignPositionOffset;
                }
                if (alignRotation)
                {
                    offsetPose.rot = Quaternion.Euler(alignRotationOffset);
                }

                var targetPose = casterPose * offsetPose;
                RigidPose.SetRigidbodyVelocity(rigid, rigid.position, targetPose.pos, followingDuration);
                RigidPose.SetRigidbodyAngularVelocity(rigid, rigid.rotation, targetPose.rot, followingDuration, overrideMaxAngularVelocity);
            }
        }
Exemple #2
0
        protected void OnGrabRigidbody()
        {
            var targetPose = currentGrabber.grabberOrigin * currentGrabber.grabOffset;

            ModifyPose(ref targetPose, null);

            RigidPose.SetRigidbodyVelocity(grabRigidbody, grabRigidbody.position, targetPose.pos, followingDuration);
            RigidPose.SetRigidbodyAngularVelocity(grabRigidbody, grabRigidbody.rotation, targetPose.rot, followingDuration, overrideMaxAngularVelocity);
        }
 protected virtual void FixedUpdate()
 {
     if (isPoseValid)
     {
         RigidPose.SetRigidbodyVelocity(rigid, rigid.position, targetPose.pos, followingDuration);
         RigidPose.SetRigidbodyAngularVelocity(rigid, rigid.rotation, targetPose.rot, followingDuration);
     }
     else
     {
         rigid.velocity        = Vector3.zero;
         rigid.angularVelocity = Vector3.zero;
     }
 }
        protected virtual void DoDrop()
        {
            if (grabRigidbody != null && !grabRigidbody.isKinematic && m_poseSamples.Count > 0)
            {
                var framePose = m_poseSamples.Dequeue();
                var deltaTime = Time.time - framePose.time;

                RigidPose.SetRigidbodyVelocity(grabRigidbody, framePose.pose.pos, transform.position, deltaTime);
                RigidPose.SetRigidbodyAngularVelocity(grabRigidbody, framePose.pose.rot, transform.rotation, deltaTime, overrideMaxAngularVelocity);

                m_poseSamples.Clear();
            }
        }
    private void DoDrop()
    {
        if (!moveByVelocity && rigid != null && !rigid.isKinematic && m_prevPose != RigidPose.identity)
        {
            RigidPose.SetRigidbodyVelocity(rigid, m_prevPose.pos, transform.position, Time.deltaTime);
            RigidPose.SetRigidbodyAngularVelocity(rigid, m_prevPose.rot, transform.rotation, Time.deltaTime, overrideMaxAngularVelocity);

            m_prevPose = RigidPose.identity;
        }

        if (onDrop != null)
        {
            onDrop.Invoke(this);
        }
    }
    protected virtual void FixedUpdate()
    {
        if (!isDragged)
        {
            return;
        }

        if (moveByVelocity)
        {
            // if rigidbody exists, follow eventData caster using physics
            var casterPose = GetEventPose(draggedEvent);
            var offsetPose = eventList.GetLastValue();

            var targetPose = casterPose * offsetPose;
            RigidPose.SetRigidbodyVelocity(rigid, rigid.position, targetPose.pos, followingDuration);
            RigidPose.SetRigidbodyAngularVelocity(rigid, rigid.rotation, targetPose.rot, followingDuration, overrideMaxAngularVelocity);
        }
    }
        protected virtual void FixedUpdate()
        {
            if (isGrabbed && moveByVelocity)
            {
                // if rigidbody exists, follow eventData caster using physics
                var casterPose = GetEventPose(grabbedEvent);
                var offsetPose = grabbedData.offset;

                if (alignPosition)
                {
                    offsetPose.pos = alignPositionOffset;
                }
                if (alignRotation)
                {
                    offsetPose.rot = Quaternion.Euler(alignRotationOffset);
                }

                var targetPose = casterPose * offsetPose;
                RigidPose.SetRigidbodyVelocity(rigid, rigid.position, targetPose.pos, followingDuration);
                RigidPose.SetRigidbodyAngularVelocity(rigid, rigid.rotation, targetPose.rot, followingDuration, overrideMaxAngularVelocity);
            }
        }
Exemple #8
0
        protected void ClearGrabbers(bool doDrop)
        {
            if (m_grabbers.Count == 0)
            {
                return;
            }

            CheckRecursiveException("ClearGrabbers");

            if (m_beforeGrabberReleased != null)
            {
                m_grabMutex = true;
                m_beforeGrabberReleased();
                m_grabMutex = false;
            }

            m_grabbers.Clear();
            currentGrabber = null;

            if (doDrop)
            {
                if (grabRigidbody != null && !grabRigidbody.isKinematic && m_poseSamples.Count > 0)
                {
                    var framePose = m_poseSamples.Dequeue();
                    var deltaTime = Time.time - framePose.time;

                    RigidPose.SetRigidbodyVelocity(grabRigidbody, framePose.pose.pos, transform.position, deltaTime);
                    RigidPose.SetRigidbodyAngularVelocity(grabRigidbody, framePose.pose.rot, transform.rotation, deltaTime, overrideMaxAngularVelocity);

                    m_poseSamples.Clear();
                }

                if (m_onGrabberDrop != null)
                {
                    m_onGrabberDrop();
                }
            }
        }