Ejemplo n.º 1
0
        /// <summary>
        /// Pushing spine segment from detected collider
        /// </summary>
        public void PushIfSegmentInsideCollider(SpineBone bone, ref Vector3 targetPoint)
        {
            // We must translate phantom/reference skeleton positions to true position in world space for collisions
            Vector3 offset;

            if (UseTruePosition)
            {
                Vector3 theTarget    = targetPoint;
                Vector3 truePosition = bone.FinalPosition;
                offset = truePosition - theTarget + bone.transform.TransformVector(bone.ColliderOffset + OffsetAllColliders);
            }
            else
            {
                offset = bone.transform.TransformVector(bone.ColliderOffset + OffsetAllColliders);
            }

            if (!DetailedCollision)
            {
                for (int i = 0; i < CollidersDataToCheck.Count; i++)
                {
                    if (CollidersDataToCheck[i].PushIfInside(ref targetPoint, bone.GetCollisionRadiusScaled(), offset))
                    {
                        return;
                    }
                }
            }
            else
            {
                for (int i = 0; i < CollidersDataToCheck.Count; i++)
                {
                    CollidersDataToCheck[i].PushIfInside(ref targetPoint, bone.GetCollisionRadiusScaled(), offset);
                }
            }
        }