public override PhysicsBody CreateCircle(float radius)
		{
			Body circle = BodyFactory.CreateCircle(world, unitConverter.ToSimUnits(radius), 1.0f);
			var body = new FarseerBody(circle) { UnitConverter = unitConverter };
			AddBody(body);
			return body;
		}
		public override PhysicsBody CreateRectangle(Size size)
		{
			Body rectangle = BodyFactory.CreateRectangle(world, unitConverter.ToSimUnits(size.Width),
				unitConverter.ToSimUnits(size.Height), 1.0f);
			var body = new FarseerBody(rectangle) { UnitConverter = unitConverter };
			AddBody(body);
			return body;
		}
		public override PhysicsBody CreatePolygon(params Vector2D[] positions)
		{
			Vertices polygon = unitConverter.Convert(positions);
			Vector2 centroid = -polygon.GetCentroid();
			polygon.Translate(ref centroid);
			Body body = BodyFactory.CreatePolygon(world, polygon, 1.0f);
			var newBody = new FarseerBody(body) { UnitConverter = unitConverter };
			AddBody(newBody);
			return newBody;
		}
		public override PhysicsBody CreateEdge(Vector2D startPoint, Vector2D endPoint)
		{
			Body edge = BodyFactory.CreateEdge(world,
				unitConverter.ToSimUnits(unitConverter.Convert(startPoint)),
				unitConverter.ToSimUnits(unitConverter.Convert(endPoint)));
			var body = new FarseerBody(edge) { UnitConverter = unitConverter };
			AddBody(body);
			body.IsStatic = true;
			return body;
		}
		public override PhysicsBody CreateEdge(params Vector2D[] positions)
		{
			var edge = new Body(world);
			Vertices farseerVertices = unitConverter.Convert(positions);
			for (int i = 0; i < farseerVertices.Count - 1; ++i)
				FixtureFactory.AttachEdge(farseerVertices[i], farseerVertices[i + 1], edge);

			var body = new FarseerBody(edge) { UnitConverter = unitConverter };
			AddBody(body);
			return body;
		}
        public override PhysicsBody CreateCircle(float radius)
        {
            Body circle = BodyFactory.CreateCircle(world, unitConverter.ToSimUnits(radius), 1.0f);
            var  body   = new FarseerBody(circle)
            {
                UnitConverter = unitConverter
            };

            AddBody(body);
            return(body);
        }
        public override PhysicsBody CreateRectangle(Size size)
        {
            Body rectangle = BodyFactory.CreateRectangle(world, unitConverter.ToSimUnits(size.Width),
                                                         unitConverter.ToSimUnits(size.Height), 1.0f);
            var body = new FarseerBody(rectangle)
            {
                UnitConverter = unitConverter
            };

            AddBody(body);
            return(body);
        }
        public override PhysicsBody CreateEdge(Vector2D startPoint, Vector2D endPoint)
        {
            Body edge = BodyFactory.CreateEdge(world,
                                               unitConverter.ToSimUnits(unitConverter.Convert(startPoint)),
                                               unitConverter.ToSimUnits(unitConverter.Convert(endPoint)));
            var body = new FarseerBody(edge)
            {
                UnitConverter = unitConverter
            };

            AddBody(body);
            body.IsStatic = true;
            return(body);
        }
        public override PhysicsBody CreatePolygon(params Vector2D[] positions)
        {
            Vertices polygon  = unitConverter.Convert(positions);
            Vector2  centroid = -polygon.GetCentroid();

            polygon.Translate(ref centroid);
            Body body    = BodyFactory.CreatePolygon(world, polygon, 1.0f);
            var  newBody = new FarseerBody(body)
            {
                UnitConverter = unitConverter
            };

            AddBody(newBody);
            return(newBody);
        }
        public override PhysicsBody CreateEdge(params Vector2D[] positions)
        {
            var      edge            = new Body(world);
            Vertices farseerVertices = unitConverter.Convert(positions);

            for (int i = 0; i < farseerVertices.Count - 1; ++i)
            {
                FixtureFactory.AttachEdge(farseerVertices[i], farseerVertices[i + 1], edge);
            }

            var body = new FarseerBody(edge)
            {
                UnitConverter = unitConverter
            };

            AddBody(body);
            return(body);
        }