constructor(map, settings, z) {
		/**
		 * point list in JSON format
		 * @type {object[]}
		 */
		this.points = undefined;

		/**
		 * object name
		 * @type {string}
		 */
		this.name = settings.name;

		/**
		 * object x position
		 * @type {number}
		 */
		this.x = +settings.x;

		/**
		 * object y position
		 * @type {number}
		 */
		this.y = +settings.y;

		/**
		 * object z order
		 * @type {number}
		 */
		this.z = +z;

		/**
		 * object width
		 * @type {number}
		 */
		this.width = +settings.width || 0;

		/**
		 * object height
		 * @type {number}
		 */
		this.height = +settings.height || 0;

		/**
		 * object gid value
		 * when defined the object is a tiled object
		 * @type {number}
		 */
		this.gid = +settings.gid || null;

		/**
		 * tint color
		 * @type {string}
		 */
		this.tintcolor = settings.tintcolor;

		/**
		 * object type
		 * @type {string}
		 * @deprecated since Tiled 1.9
		 * @see {@link https://docs.mapeditor.org/en/stable/reference/tmx-changelog/#tiled-1-9}
		 */
		this.type = settings.type;

		/**
		 * the object class
		 * @type {string}
		 */
		this.class =
			typeof settings.class !== "undefined" ? settings.class : settings.type;

		/**
		 * object text
		 * @type {object}
		 * @see {@link http://docs.mapeditor.org/en/stable/reference/tmx-map-format/#text}
		 */
		this.text = undefined;

		/**
		 * The rotation of the object in radians clockwise (defaults to 0)
		 * @type {number}
		 */
		this.rotation = degToRad(+settings.rotation || 0);

		/**
		 * object unique identifier per level (Tiled 0.11.x+)
		 * @type {number}
		 */
		this.id = +settings.id || undefined;

		/**
		 * object orientation (orthogonal or isometric)
		 * @type {string}
		 */
		this.orientation = map.orientation;

		/**
		 * the collision shapes defined for this object
		 * @type {object[]}
		 */
		this.shapes = undefined;

		/**
		 * if true, the object is an Ellipse
		 * @type {boolean}
		 */
		this.isEllipse = false;

		/**
		 * if true, the object is a Point
		 * @type {boolean}
		 */
		this.isPoint = false;

		/**
		 * if true, the object is a Polygon
		 * @type {boolean}
		 */
		this.isPolygon = false;

		/**
		 * if true, the object is a PolyLine
		 * @type {boolean}
		 */
		this.isPolyLine = false;

		// check if the object has an associated gid
		if (typeof this.gid === "number") {
			this.setTile(map.tilesets);
		} else {
			if (typeof settings.ellipse !== "undefined") {
				this.isEllipse = true;
			} else if (typeof settings.point !== "undefined") {
				this.isPoint = true;
			} else if (typeof settings.polygon !== "undefined") {
				this.points = settings.polygon;
				this.isPolygon = true;
			} else if (typeof settings.polyline !== "undefined") {
				this.points = settings.polyline;
				this.isPolyLine = true;
			}
		}

		// check for text information
		if (typeof settings.text !== "undefined") {
			// a text object
			this.text = settings.text;
			// normalize field name and default value the melonjs way
			this.text.font = settings.text.fontfamily || "sans-serif";
			this.text.size = settings.text.pixelsize || 16;
			this.text.fillStyle = settings.text.color || "#000000";
			this.text.textAlign = settings.text.halign || "left";
			this.text.textBaseline = settings.text.valign || "top";
			this.text.width = this.width;
			this.text.height = this.height;
			// set the object properties
			applyTMXProperties(this.text, settings);
		} else {
			// set the object properties
			applyTMXProperties(this, settings);
			// a standard object
			if (!this.shapes) {
				// else define the object shapes if required
				this.shapes = this.parseTMXShapes();
			}
		}

		// Adjust the Position to match Tiled
		if (!map.isEditor) {
			map.getRenderer().adjustPosition(this);
		}
	}
a TMX Object defintion, as defined in Tiled
(Object definition is translated into the virtual `me.game.world` using `me.Renderable`)
@ignore