UNPKG

@gwigz/homunculus-core

Version:

A third-party framework for interacting with Linden Lab's virtual world "Second Life"

62 lines (61 loc) 1.85 kB
import { AsyncEventEmitter } from "@vladfrangu/async_event_emitter"; import type { Client } from "../client"; import { type ParcelPropertiesData, Quaternion, Vector3 } from "../network"; import { Parcel } from "../structures"; import type { Collision } from "../types"; export interface SelfEvents { collision: [collision: Collision]; "parcel-update": [parcel: Parcel]; } export declare class Self extends AsyncEventEmitter<SelfEvents> { private readonly client; key: string; sessionId: string; circuitCode: number; firstName: string; lastName: string; state: number; rotation: Quaternion; position: Vector3; cameraAtAxis: Vector3; cameraLeftAxis: Vector3; cameraUpAxis: Vector3; parcel?: Parcel; /** If the user is an estate admin in the current region */ isEstateManager: boolean; /** Linden Damage health */ health: number; /** * The last parcel sequence ID that was received from the server. This is * used to determine if the current parcel properties has changed. * * @internal */ lastParcelSequenceId: number; /** * @see {@link https://wiki.secondlife.com/wiki/How_movement_works} */ controlFlags: number; /** * @internal */ constructor(client: Client, data: { key: string; sessionId: string; circuitCode: number; firstName: string; lastName: string; lookAt?: Vector3; offset?: Vector3; }); get name(): string; set lookAt(value: Parameters<typeof Quaternion.fromEuler>[0]); updateParcelProperties(data: ParcelPropertiesData): void; sendAgentUpdate(options?: { state?: number; controlFlags?: number; }): void; sitOnObject(targetId: string): void; sitOnGround(): void; standUp(): void; }