parseTMXShapes() {
		const shapes = [];

		// add an ellipse shape
		if (this.isEllipse === true) {
			// ellipse coordinates are the center position, so set default to the corresonding radius
			shapes.push(
				ellipsePool
					.get(this.width / 2, this.height / 2, this.width, this.height)
					.rotate(this.rotation),
			);
		} else if (this.isPoint === true) {
			shapes.push(pointPool.get(this.x, this.y));
		} else {
			// add a polygon
			if (this.isPolygon === true) {
				const _polygon = polygonPool.get(0, 0, this.points);
				const isConvex = _polygon.isConvex();
				// make sure it's a convex polygon
				if (isConvex === false) {
					throw new Error(
						"collision polygones in Tiled should be defined as Convex",
					);
				} else if (isConvex === null) {
					throw new Error("invalid polygone");
				}
				shapes.push(_polygon.rotate(this.rotation));
			} else if (this.isPolyLine === true) {
				const p = this.points;
				let p1;
				let p2;
				const segments = p.length - 1;
				for (let i = 0; i < segments; i++) {
					// clone the value before, as [i + 1]
					// is reused later by the next segment
					p1 = vector2dPool.get(p[i].x, p[i].y);
					p2 = vector2dPool.get(p[i + 1].x, p[i + 1].y);
					if (this.rotation !== 0) {
						p1 = p1.rotate(this.rotation);
						p2 = p2.rotate(this.rotation);
					}
					shapes.push(linePool.get(0, 0, [p1, p2]));
				}
			}

			// it's a rectangle, returns a polygon object anyway
			else {
				shapes.push(
					polygonPool
						.get(0, 0, [
							vector2dPool.get(),
							vector2dPool.get(this.width, 0),
							vector2dPool.get(this.width, this.height),
							vector2dPool.get(0, this.height),
						])
						.rotate(this.rotation),
				);
			}
		}

		// Apply isometric projection
		if (this.orientation === "isometric") {
			for (let i = 0; i < shapes.length; i++) {
				if (typeof shapes[i].toIso === "function") {
					shapes[i].toIso();
				}
			}
		}

		return shapes;
	}
parses the TMX shape definition and returns a corresponding array of me.Shape object
@private
@returns {Polygon[]|Line[]|Ellipse[]} an array of shape objects