Files
node-metaverse/lib/classes/commands/MovementCommands.ts

57 lines
1.8 KiB
TypeScript
Raw Normal View History

2021-12-11 03:52:15 +00:00
import { ControlFlags, PacketFlags } from "../..";
import { AgentRequestSitMessage, AgentSitMessage } from "../MessageClasses";
import type { UUID } from "../UUID";
import type { Vector3 } from "../Vector3";
2021-12-11 03:52:15 +00:00
import { CommandsBase } from "./CommandsBase";
export class MovementCommands extends CommandsBase {
public async sitOnObject(targetID: UUID, offset: Vector3): Promise<void>
2021-12-11 03:52:15 +00:00
{
await this.requestSitOnObject(targetID, offset);
await this.sitOn();
}
public sitOnGround(): void
2021-12-11 03:52:15 +00:00
{
this.agent.setControlFlag(ControlFlags.AGENT_CONTROL_SIT_ON_GROUND);
this.agent.sendAgentUpdate();
}
public stand(): void
2021-12-11 03:52:15 +00:00
{
this.agent.clearControlFlag(ControlFlags.AGENT_CONTROL_SIT_ON_GROUND);
this.agent.setControlFlag(ControlFlags.AGENT_CONTROL_STAND_UP);
this.agent.sendAgentUpdate();
this.agent.clearControlFlag(ControlFlags.AGENT_CONTROL_STAND_UP);
this.agent.sendAgentUpdate();
}
private async requestSitOnObject(targetID: UUID, offset: Vector3): Promise<void>
{
const msg = new AgentRequestSitMessage();
msg.AgentData = {
AgentID: this.agent.agentID,
SessionID: this.circuit.sessionID,
};
msg.TargetObject = {
TargetID: targetID,
Offset: offset,
};
const seqID = this.circuit.sendMessage(msg, PacketFlags.Reliable);
return this.circuit.waitForAck(seqID, 10000);
}
private async sitOn(): Promise<void>
{
const msg = new AgentSitMessage();
msg.AgentData = {
AgentID: this.agent.agentID,
SessionID: this.circuit.sessionID,
};
const seqID = this.circuit.sendMessage(msg, PacketFlags.Reliable);
return this.circuit.waitForAck(seqID, 10000);
}
}