public void Initialize(LSBody b1, LSBody b2) { PartitionVersion = 0; Body1 = b1; Body2 = b2; IsColliding = false; DistX = 0; DistY = 0; PenetrationX = 0; PenetrationY = 0; CacheSqrDistance = b1.Radius + b2.Radius; CacheSqrDistance *= CacheSqrDistance; LeCollisionType = CollisionType.None; if (Body1.Shape == ColliderType.None || Body2.Shape == ColliderType.None) { } else if (Body1.Shape == ColliderType.Circle) { if (Body2.Shape == ColliderType.Circle) { LeCollisionType = CollisionType.Circle_Circle; } else if (Body2.Shape == ColliderType.AABox) { LeCollisionType = CollisionType.Circle_AABox; } else if (Body2.Shape == ColliderType.Polygon) { LeCollisionType = CollisionType.Circle_Polygon; } } else if (Body1.Shape == ColliderType.AABox) { if (Body2.Shape == ColliderType.Circle) { LeCollisionType = CollisionType.Circle_AABox; } else if (Body2.Shape == ColliderType.AABox) { LeCollisionType = CollisionType.AABox_AABox; } else if (Body2.Shape == ColliderType.Polygon) { LeCollisionType = CollisionType.AABox_Polygon; } } else if (Body1.Shape == ColliderType.Polygon) { if (Body2.Shape == ColliderType.Circle) { LeCollisionType = CollisionType.Circle_Polygon; } else if (Body2.Shape == ColliderType.AABox) { LeCollisionType = CollisionType.AABox_Polygon; } else if (Body2.Shape == ColliderType.Polygon) { LeCollisionType = CollisionType.Polygon_Polygon; } } if (DoPhysics) { if (Body1.Immovable) { physicsFavor = PhysicsFavor.Favor1; } else if (Body2.Immovable) { physicsFavor = PhysicsFavor.Favor2; } else if (Body1.Priority > Body2.Priority) { physicsFavor = PhysicsFavor.Favor1; } else if (Body2.Priority > Body1.Priority) { physicsFavor = PhysicsFavor.Favor2; } else { physicsFavor = PhysicsFavor.Same; } } Active = true; }