public void UpdateBorder(int SizeOfSystem) { sizeOfSystem = SizeOfSystem; //Console.WriteLine("Setting size of system to " + SizeOfSystem); if (Border.Body != null && _physicsManager.World.BodyList.Contains(Border.Body)) { Debugging.DisposeStack.Push(this.ToString()); Border.Body.Dispose(); } borderList.Clear(); Vertices verts = Boundaries.CreateConcaveSemiCircle(SizeOfSystem / 100f, SizeOfSystem / 100); foreach (Vector2 v in verts) { borderList.Add(v); } Border = new PlanetBorder(); var tempbd = new CollisionDataObject(Border, BodyTypes.WallTile); Debugging.AddStack.Push(this.ToString()); Border.Body = BodyFactory.CreateLoopShape(_physicsManager.World, verts, Vector2.Zero, tempbd); Border.Body.IsStatic = true; Border.Body.UserData = tempbd; Border.Body.SleepingAllowed = true; Border.Body.Friction = 0f; Border.Body.Restitution = 0.2f; }
public BorderManager(Texture2D borderTexture, SpriteBatch spriteBatch, PhysicsManager physicsManager) { _physicsManager = physicsManager; _spriteBatch = spriteBatch; Border = new PlanetBorder(); // Debug Textures tex_EdgeOfSystem = borderTexture; }