import { Node, Partial, SceneChildrenKeyT, ServerEvent, UpdateNodeType } from '../interfaces'; import { EulerTuple, Vector3Tuple } from 'three'; export interface SceneType extends Partial { position?: Vector3Tuple; rotation?: EulerTuple; scale?: Vector3Tuple; up?: [number, number, number] | null; frameloop?: 'demand' | 'always' | 'never'; grid?: boolean; toneMapping?: string; toneMappingExposure?: number; } export interface SetEvent extends ServerEvent { data: { key?: string; tag: string; } & SceneType; } export interface AddEvent extends ServerEvent { data: { nodes: Node[]; to: string | SceneChildrenKeyT; }; } export interface UpdateEvent extends ServerEvent { data: { nodes: UpdateNodeType[]; }; } export interface UpsertEvent extends ServerEvent { data: { nodes: Node[]; to: string | SceneChildrenKeyT; }; } export interface RemoveEvent extends ServerEvent { data: { keys: string[]; }; } export interface TimeoutEvent extends ServerEvent { data: { timeout: number; fn: string | (() => void); }; }