function enablePointerEvent() {
	if (!pointerInitialized) {
		// the current pointer area
		currentPointer = new Rect(0, 0, 1, 1);

		// instantiate a pool of pointer catched
		for (let v = 0; v < device.maxTouchPoints; v++) {
			T_POINTERS.push(new Pointer());
		}

		if (pointerEventTarget === null) {
			// default pointer event target
			pointerEventTarget = renderer.getCanvas();
		}

		if (device.pointerEvent) {
			// standard Pointer Events
			activeEventList = pointerEventList;
		} else {
			// Regular Mouse events
			activeEventList = mouseEventList;
		}
		if (device.touch && !device.pointerEvent) {
			// touch event on mobile devices
			activeEventList = activeEventList.concat(touchEventList);
		}
		registerEventListener(activeEventList, onPointerEvent);

		// set the PointerMove/touchMove/MouseMove event
		if (typeof throttlingInterval === "undefined") {
			// set the default value
			throttlingInterval = ~~(1000 / timer.maxfps);
		}

		if (device.autoFocus === true) {
			device.focus();
			pointerEventTarget.addEventListener(
				activeEventList[2], // MOUSE/POINTER DOWN
				() => {
					device.focus();
				},
				{ passive: preventDefault === false },
			);
		}

		// if time interval <= 16, disable the feature
		const events = findAllActiveEvents(activeEventList, POINTER_MOVE);
		if (throttlingInterval < 17) {
			for (let i = 0; i < events.length; i++) {
				if (activeEventList.indexOf(events[i]) !== -1) {
					pointerEventTarget.addEventListener(
						events[i],
						onMoveEvent,
						{ passive: true }, // do not preventDefault on Move events
					);
				}
			}
		} else {
			for (let i = 0; i < events.length; i++) {
				if (activeEventList.indexOf(events[i]) !== -1) {
					pointerEventTarget.addEventListener(
						events[i],
						throttle(onMoveEvent, throttlingInterval),
						{ passive: true }, // do not preventDefault on Move events
					);
				}
			}
		}
		// disable all gesture by default
		setTouchAction(pointerEventTarget);

		// set a on change listener on pointerlock if supported
		if (device.hasPointerLockSupport) {
			globalThis.document.addEventListener(
				POINTERLOCKCHANGE,
				() => {
					// change the locked status accordingly
					locked =
						globalThis.document.pointerLockElement === game.getParentElement();
					// emit the corresponding internal event
					eventEmitter.emit(POINTERLOCKCHANGE, locked);
				},
				true,
			);
		}

		// all done !
		pointerInitialized = true;
	}
}
enable pointer event (Pointer/Mouse/Touch)
@ignore