@geheimgang188/fmod-service-api
Version:
FMOD service API
90 lines (89 loc) • 3.16 kB
TypeScript
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;
}