@osobh/reactar
Version:
AR Library for React Native and Expo
59 lines (58 loc) • 1.33 kB
TypeScript
import { EventEmitter } from 'events';
export interface ARUser {
userId: string;
deviceId: string;
position: {
x: number;
y: number;
z: number;
};
rotation: {
x: number;
y: number;
z: number;
};
lastUpdate: number;
isActive: boolean;
}
export interface UserSessionOptions {
serverUrl?: string;
heartbeatInterval?: number;
inactivityTimeout?: number;
}
export declare class UserSessionManager extends EventEmitter {
private options;
private users;
private currentUser;
private heartbeatInterval;
constructor(options?: UserSessionOptions);
/**
* Initializes a user session
*/
initializeSession(deviceId: string): Promise<ARUser>;
/**
* Updates the current user's position and rotation
*/
updateUserPosition(position: {
x: number;
y: number;
z: number;
}, rotation: {
x: number;
y: number;
z: number;
}): void;
/**
* Handles incoming user updates from other devices
*/
handleRemoteUserUpdate(user: ARUser): void;
/**
* Gets all active users in the session
*/
getActiveUsers(): ARUser[];
private startHeartbeat;
/**
* Ends the current user's session
*/
endSession(): void;
}