Пример #1
0
        public void Execute(int index)
        {
            var position        = this.positions[index];
            var predictPosition = this.positions[index];
            var spheres         = collidersGroup.spheres;
            var boxes           = collidersGroup.boxes;
            var capsules        = collidersGroup.capsules;

            for (var i = 0; i < spheres.Length; i++)
            {
                var        s = spheres[i];
                ConcatInfo concatInfo;
                if (IntersectUtil.GetClosestSurfacePoint(position, s.collider, out concatInfo))
                {
                    EnableCollisionConstraint(index, ref concatInfo, ref s.rigidbody, s.entityId);
                    return;
                }
            }

            for (var i = 0; i < boxes.Length; i++)
            {
                var        s = boxes[i];
                ConcatInfo concatInfo;
                if (IntersectUtil.GetClosestSurfacePoint(position, s.collider, out concatInfo))
                {
                    EnableCollisionConstraint(index, ref concatInfo, ref s.rigidbody, s.entityId);

                    return;
                }
            }

            for (var i = 0; i < capsules.Length; i++)
            {
                var        s = capsules[i];
                ConcatInfo concatInfo;
                if (IntersectUtil.GetClosestSurfacePoint(position, s.collider, out concatInfo))
                {
                    EnableCollisionConstraint(index, ref concatInfo, ref s.rigidbody, s.entityId);
                    return;
                }
            }
            DisableCollisionConstraint(index);
        }
Пример #2
0
 public override bool GetClosestSurfacePoint(float3 p, out ConcatInfo concatInfo)
 {
     return(IntersectUtil.GetClosestSurfacePoint(p, desc, out concatInfo));
 }