updateBounds(absolute = true) {
		if (this.isRenderable) {
			const bounds = this.getBounds();

			bounds.clear();
			if (this.autoTransform === true && !this.currentTransform.isIdentity()) {
				// temporarly translate the matrix based on the anchor point
				this.currentTransform.translate(
					-this.width * this.anchorPoint.x,
					-this.height * this.anchorPoint.y,
				);
				bounds.addFrame(0, 0, this.width, this.height, this.currentTransform);
				this.currentTransform.translate(
					this.width * this.anchorPoint.x,
					this.height * this.anchorPoint.y,
				);
			} else {
				bounds.addFrame(0, 0, this.width, this.height);
				// translate the bounds based on the anchor point
				bounds.translate(
					-this.width * this.anchorPoint.x,
					-this.height * this.anchorPoint.y,
				);
			}

			if (absolute === true) {
				const absPos = this.getAbsolutePosition();
				bounds.centerOn(
					absPos.x + bounds.x + bounds.width / 2,
					absPos.y + bounds.y + bounds.height / 2,
				);
			}
			return bounds;
		} else {
			// manage the case where updateBounds is called
			// before the object being yet properly initialized
			return super.updateBounds(absolute);
		}
	}
update the bounding box for this shape.
@param {boolean} [absolute=true] - update the bounds size and position in (world) absolute coordinates
@returns {Bounds} this shape bounding box Rectangle object