예제 #1
0
        //-----------------------------------------------------------------------------------------------------------------------------------------
        // Dynamics Methods

        #region Dynamics

        /// <summary> Update the dynamics (velocity, angular velocity) of the grabreference. </summary>
        protected virtual void UpdateDynamics()
        {
            Vector3    currPos = this.grabReference != null ? this.grabReference.transform.position : this.transform.position;
            Quaternion currRot = this.grabReference != null ? this.grabReference.transform.rotation : this.transform.rotation;

            Vector3 velocity        = (currPos - lastPosition) / Time.deltaTime;
            Vector3 angularVelocity = SG_Util.CalculateAngularVelocity(currRot, lastRotation, Time.deltaTime);

            this.velocities.Add(velocity);
            this.angularVelocities.Add(angularVelocity);
            if (velocities.Count > SG_GrabScript.maxDataPoints)
            {
                this.velocities.RemoveAt(0);
                this.angularVelocities.RemoveAt(0);
            }

            lastPosition = currPos;
            lastRotation = currRot;
        }