public Physic() { Instance = this; rigidbodiesSquare = new List <Rigidbody>(); rigidbodiesCircle = new List <Rigidbody>(); transformsSquare = new List <Transform2>(); transformsCicle = new List <Transform2>(); triggerableHelper = new TriggerableHelper(); overlapManager = new RecursiveOverlapManager <Rigidbody>(new Box2D(-100, -100, 1000, 840), 3); tempListOverlaps = new List <Rigidbody>(20); }
public void SetLevelBox(Box2D box, int layersForOverlap) { RecursiveOverlapManager <Rigidbody> newManager = new RecursiveOverlapManager <Rigidbody>(box, layersForOverlap); if (overlapManager.IsLast()) { newManager.AddAll(overlapManager.GetListWhenLast()); } else { List <Rigidbody> allBodies = new List <Rigidbody>(); overlapManager.GetAllOverlaps(allBodies); newManager.AddAll(allBodies); } overlapManager = newManager; }
public RecursiveOverlapManager(Rect rect, int layersDown) { this.rect = rect; isLast = layersDown <= 0; if (isLast) { overlapables = new List <T>(); } else { layersDown--; helpers = new RecursiveOverlapManager <T> [4]; rect.width *= 0.5f; rect.height *= 0.5f; helpers[0] = new RecursiveOverlapManager <T>(rect, layersDown); rect.y += rect.height; helpers[1] = new RecursiveOverlapManager <T>(rect, layersDown); rect.x += rect.width; helpers[2] = new RecursiveOverlapManager <T>(rect, layersDown); rect.position = new Vector2(this.rect.x + rect.width, this.rect.y); helpers[3] = new RecursiveOverlapManager <T>(rect, layersDown); } }