public FixtureDef[] build() {
		FixtureDef[] fixtures = new FixtureDef[shapes.size()];
		
		Vector c1 = new Vector(allVertices.get(0));
		Vector c2 = new Vector(c1);
		
		for (Vector v : allVertices) {
			c1.x = Math.min(v.x, c1.x);
			c1.y = Math.min(v.y, c1.y);
			c2.x = Math.max(v.x, c2.x);
			c2.y = Math.max(v.y, c2.y);
		}
		
		Vector dimension = c2.minus(c1);
		float xScale = size.x / dimension.x;
		float yScale = size.y / dimension.y;
		
		Vector center = c2.plus(c1).scale(.5f);
		
		for (int i = 0; i < shapes.size(); i++){
			Vector[] vertList = shapes.get(i);
			Vec2[] finalVerts = new Vec2[vertList.length];
			
			for (int j = 0; j < vertList.length; j++){
				Vec2 v = new Vec2(vertList[j].x, vertList[j].y);
				v = v.sub(new Vec2(center.x, center.y)).add(new Vec2(center.x, center.y));
				finalVerts[j] = new Vec2(v.x * xScale, v.y * yScale);
			}
			
			PolygonShape shape = new PolygonShapeBuilder().v(finalVerts).build();
			FixtureDef fixture = new FixtureDefBuilder().shape(shape).build();
			
			if (friction != 0)
				fixture.friction = friction;
			if (density != 0)
				fixture.density = density;
			if (restitution != 0)
				fixture.restitution = restitution;
			
			
			fixtures[i] = fixture;
		}
		
		return fixtures;
	}