@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
TypeScript
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;
}