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); }
public override bool GetClosestSurfacePoint(float3 p, out ConcatInfo concatInfo) { return(IntersectUtil.GetClosestSurfacePoint(p, desc, out concatInfo)); }