internalDeviceSourceManager.d.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import type { IDisposable } from "../scene";
  2. import { DeviceType } from "./InputDevices/deviceEnums";
  3. import type { Observable } from "../Misc/observable";
  4. import type { IDeviceInputSystem } from "./inputInterfaces";
  5. import { DeviceSource } from "./InputDevices/deviceSource";
  6. import type { IUIEvent } from "../Events/deviceInputEvents";
  7. import type { AbstractEngine } from "../Engines/abstractEngine";
  8. type Distribute<T> = T extends DeviceType ? DeviceSource<T> : never;
  9. export type DeviceSourceType = Distribute<DeviceType>;
  10. declare module "../Engines/abstractEngine" {
  11. interface AbstractEngine {
  12. /** @internal */
  13. _deviceSourceManager?: InternalDeviceSourceManager;
  14. }
  15. }
  16. /** @internal */
  17. export interface IObservableManager {
  18. onDeviceConnectedObservable: Observable<DeviceSourceType>;
  19. onDeviceDisconnectedObservable: Observable<DeviceSourceType>;
  20. _onInputChanged(deviceType: DeviceType, deviceSlot: number, eventData: IUIEvent): void;
  21. _addDevice(deviceSource: DeviceSource<DeviceType>): void;
  22. _removeDevice(deviceType: DeviceType, deviceSlot: number): void;
  23. }
  24. /** @internal */
  25. export declare class InternalDeviceSourceManager implements IDisposable {
  26. readonly _deviceInputSystem: IDeviceInputSystem;
  27. private readonly _devices;
  28. private readonly _registeredManagers;
  29. _refCount: number;
  30. constructor(engine: AbstractEngine);
  31. readonly registerManager: (manager: IObservableManager) => void;
  32. readonly unregisterManager: (manager: IObservableManager) => void;
  33. dispose(): void;
  34. }
  35. export {};