update(dt) {
		let isFloating = false;
		const isPaused = state.isPaused();
		const children = this.getChildren();
		const childrenLength = children.length;

		for (let i = childrenLength, obj; i--, (obj = children[i]); ) {
			if (isPaused && !obj.updateWhenPaused) {
				// skip this object
				continue;
			}

			if (obj.isRenderable) {
				isFloating = globalFloatingCounter > 0 || obj.floating;
				if (isFloating) {
					globalFloatingCounter++;
				}

				// check if object is in any active cameras
				obj.inViewport = false;
				// iterate through all cameras
				state.current().cameras.forEach((camera) => {
					if (camera.isVisible(obj, isFloating)) {
						obj.inViewport = true;
					}
				});

				// update our object
				this.isDirty |= (obj.inViewport || obj.alwaysUpdate) && obj.update(dt);

				if (globalFloatingCounter > 0) {
					globalFloatingCounter--;
				}
			} else {
				// just directly call update() for non renderable object
				this.isDirty |= obj.update(dt);
			}
		}

		// call the parent method
		return super.update(dt);
	}
container update function. <br>
automatically called by the application update loop {@link Application}
@protected
@param {number} dt - time since the last update in milliseconds.
@returns {boolean} true if the Container is dirty