UNPKG

@geheimgang188/fmod-service-api

Version:
90 lines (89 loc) 3.16 kB
import { IControlFmod } from '../ports/i-control-fmod'; import { TypedEmitter } from 'tiny-typed-emitter'; import { ILogger } from './i-logger'; import { ConnectionEvents, IConnect, IConnectEvents } from '../ports/i-connect'; import { IConfigureLogging } from '../ports/i-configure-logging'; import { MarkerData } from './marker-data'; export declare enum ConnectionState { Disconnected = "Disconnected", Connecting = "Connecting", Connected = "Connected", Disconnecting = "Disconnecting" } export interface FmodZeromqApiArgs { logger?: ILogger; heartbeatIntervalMillis?: number; socketStatusIntervalMillis?: number; /** Address for the pub/sub subscriber socket. Defaults to main address port + 1. */ subscriberAddress?: string; } export declare class FmodZeromqApi extends TypedEmitter<ConnectionEvents> implements IControlFmod, IConnect, IConnectEvents, IConfigureLogging { static getEventIdFromResponse(response: string): string | undefined; private static toEventMapId; private readonly _socketStatusInterval; private _socketStatusPoll; private readonly _heartbeatInterval; private _heartbeatPoll; private _lastId; private _socket; private readonly _zmqAddress; private readonly _logger; private readonly _events; private readonly _sm; private readonly _socketSempahore; private readonly _singleShotEventIds; private _verboseLogging; private readonly _subscriberAddress; private _subSocket; private _subRunning; constructor(address: string, args?: FmodZeromqApiArgs); get connectionState(): ConnectionState; get verboseLogging(): boolean; set verboseLogging(verbose: boolean); connect(): void; disconnect(): void; /** * Register a callback for marker events from FMOD. */ onMarker(cb: (data: MarkerData) => void): void; /** * Unregister a marker event callback. */ offMarker(cb: (data: MarkerData) => void): void; /** * Start an event; it can be stopped again */ start(event: string): Promise<void>; /** * Stop a running event */ stop(event: string): Promise<number>; stopStartedEvents(): Promise<void>; /** * Play an event (fire-and-forget) * @param event */ play(event: string): Promise<void>; loadBank(bankName: string): Promise<void>; unloadBank(bankName: string): Promise<void>; setParameter(eventId: string, name: string, value: number): Promise<void>; playVoice(eventId: string, key: string): Promise<void>; stopVoice(eventId: string, key: string): Promise<number>; isPlaying(eventId: string): Promise<boolean>; listLoadedBankPaths(): Promise<string[]>; private stopSingleShotEvents; private addSingleShotId; private cleanupOldEventIds; private printSingleShotLength; private doConnect; private doDisconnect; private sendCommand; private checkHeartbeat; private onConnecting; private onConnected; private onDisconnecting; private onDisconnected; private connectSubscriber; private disconnectSubscriber; private runSubscriberLoop; }