Ballz.GameSession.Physics.PhysicsControl.UpdateTerrainBody C# (CSharp) Метод

UpdateTerrainBody() публичный Метод

Removes the old terrain physics bodies and replaces them with new ones, generated from the given terrain.
public UpdateTerrainBody ( Terrain terrain ) : void
terrain Ballz.GameSession.World.Terrain
Результат void
        public void UpdateTerrainBody(Terrain terrain)
        {
            Terrain = terrain;
            foreach (var body in TerrainBodies)
            {
                var fixtures = body.FixtureList.ToArray();
                foreach (var fixture in fixtures)
                {
                    fixture.Dispose();
                }

                body.Dispose();
            }

            TerrainBodies.Clear();

            // Update the terrain explicitly
            terrain.Update();
            var outlines = terrain.GetOutline();
            
            foreach (var outline in outlines)
            {
                var vertices = new Vector2[outline.Count];

                for (int i = 0; i < outline.Count; i++)
                {
                    vertices[i] = outline[i] * terrain.Scale;
                }

                var shape = new ChainShape(new Vertices(vertices));

                var body = new Body(PhysicsWorld);
                body.BodyType = BodyType.Static;
                body.Friction = 1.0f;
                body.CreateFixture(shape);

                TerrainBodies.Add(body);
            }
        }