Remove dist directory from version control - it's causing too much clutter.

This commit is contained in:
Casper Warden
2018-10-19 16:43:15 +01:00
parent 2efd01dca5
commit c291ed7eda
1851 changed files with 100 additions and 58298 deletions

2
.gitignore vendored
View File

@@ -4,4 +4,4 @@
/example/npm-debug.log
/caspertech-node-metaverse-*.tgz
/npm-debug.log
/dist/classes/cache
/dist

36
dist/Bot.d.ts vendored
View File

@@ -1,36 +0,0 @@
import { LoginResponse } from './classes/LoginResponse';
import { LoginParameters } from './classes/LoginParameters';
import { Region } from './classes/Region';
import { ClientEvents } from './classes/ClientEvents';
import { ClientCommands } from './classes/ClientCommands';
import { BotOptionFlags } from './enums/BotOptionFlags';
import { UUID } from './classes/UUID';
import { Vector3 } from './classes/Vector3';
export declare class Bot {
private loginParams;
private currentRegion;
private agent;
private ping;
private pingNumber;
private lastSuccessfulPing;
private circuitSubscription;
private options;
private eventQueueRunning;
clientEvents: ClientEvents;
clientCommands: ClientCommands;
private eventQueueWaits;
private stay;
private stayRegion;
private stayPosition;
constructor(login: LoginParameters, options: BotOptionFlags);
stayPut(stay: boolean, regionName?: string, position?: Vector3): void;
login(): Promise<LoginResponse>;
changeRegion(region: Region, requested: boolean): Promise<void>;
waitForEventQueue(timeout?: number): Promise<void>;
private closeCircuit;
private kicked;
private disconnected;
close(): Promise<void>;
agentID(): UUID;
connectToSim(requested: boolean): Promise<void>;
}

326
dist/Bot.js vendored
View File

@@ -1,326 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const LoginHandler_1 = require("./LoginHandler");
const PacketFlags_1 = require("./enums/PacketFlags");
const UseCircuitCode_1 = require("./classes/messages/UseCircuitCode");
const CompleteAgentMovement_1 = require("./classes/messages/CompleteAgentMovement");
const Message_1 = require("./enums/Message");
const LogoutRequest_1 = require("./classes/messages/LogoutRequest");
const Utils_1 = require("./classes/Utils");
const RegionHandshakeReply_1 = require("./classes/messages/RegionHandshakeReply");
const RegionProtocolFlags_1 = require("./enums/RegionProtocolFlags");
const AgentDataUpdateRequest_1 = require("./classes/messages/AgentDataUpdateRequest");
const TeleportEvent_1 = require("./events/TeleportEvent");
const ClientEvents_1 = require("./classes/ClientEvents");
const TeleportEventType_1 = require("./enums/TeleportEventType");
const ClientCommands_1 = require("./classes/ClientCommands");
const DisconnectEvent_1 = require("./events/DisconnectEvent");
const StartPingCheck_1 = require("./classes/messages/StartPingCheck");
const FilterResponse_1 = require("./enums/FilterResponse");
const UUID_1 = require("./classes/UUID");
const Vector3_1 = require("./classes/Vector3");
class Bot {
constructor(login, options) {
this.ping = null;
this.pingNumber = 0;
this.lastSuccessfulPing = 0;
this.circuitSubscription = null;
this.eventQueueRunning = false;
this.eventQueueWaits = {};
this.stay = false;
this.stayRegion = '';
this.stayPosition = new Vector3_1.Vector3();
this.clientEvents = new ClientEvents_1.ClientEvents();
this.loginParams = login;
this.options = options;
this.clientEvents.onEventQueueStateChange.subscribe((evt) => {
this.eventQueueRunning = evt.active;
for (const waitID of Object.keys(this.eventQueueWaits)) {
try {
clearTimeout(this.eventQueueWaits[waitID].timer);
this.eventQueueWaits[waitID].resolve();
delete this.eventQueueWaits[waitID];
}
catch (ignore) { }
}
});
}
stayPut(stay, regionName, position) {
this.stay = stay;
if (regionName !== undefined && position !== undefined) {
this.stayRegion = regionName;
this.stayPosition = position;
}
}
login() {
return __awaiter(this, void 0, void 0, function* () {
const loginHandler = new LoginHandler_1.LoginHandler(this.clientEvents, this.options);
const response = yield loginHandler.Login(this.loginParams);
this.currentRegion = response.region;
this.agent = response.agent;
this.clientCommands = new ClientCommands_1.ClientCommands(response.region, response.agent, this);
return response;
});
}
changeRegion(region, requested) {
return __awaiter(this, void 0, void 0, function* () {
this.closeCircuit();
this.currentRegion = region;
this.clientCommands = new ClientCommands_1.ClientCommands(this.currentRegion, this.agent, this);
if (this.ping !== null) {
clearInterval(this.ping);
this.ping = null;
}
yield this.connectToSim(requested);
});
}
waitForEventQueue(timeout = 1000) {
return new Promise((resolve, reject) => {
if (this.eventQueueRunning) {
resolve();
}
else {
const waitID = UUID_1.UUID.random().toString();
const newWait = {
'resolve': resolve
};
newWait.timer = setTimeout(() => {
delete this.eventQueueWaits[waitID];
reject(new Error('Timeout'));
}, timeout);
this.eventQueueWaits[waitID] = newWait;
}
});
}
closeCircuit() {
this.currentRegion.shutdown();
if (this.circuitSubscription !== null) {
this.circuitSubscription.unsubscribe();
this.circuitSubscription = null;
}
delete this.currentRegion;
this.clientCommands.shutdown();
delete this.clientCommands;
if (this.ping !== null) {
clearInterval(this.ping);
this.ping = null;
}
}
kicked(message) {
this.closeCircuit();
this.agent.shutdown();
delete this.agent;
this.disconnected(false, message);
}
disconnected(requested, message) {
const disconnectEvent = new DisconnectEvent_1.DisconnectEvent();
disconnectEvent.requested = requested;
disconnectEvent.message = message;
if (this.clientEvents) {
this.clientEvents.onDisconnected.next(disconnectEvent);
}
}
close() {
return __awaiter(this, void 0, void 0, function* () {
const circuit = this.currentRegion.circuit;
const msg = new LogoutRequest_1.LogoutRequestMessage();
msg.AgentData = {
AgentID: this.agent.agentID,
SessionID: circuit.sessionID
};
circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
yield circuit.waitForMessage(Message_1.Message.LogoutReply, 5000);
this.stayRegion = '';
this.stayPosition = new Vector3_1.Vector3();
this.closeCircuit();
this.agent.shutdown();
delete this.agent;
this.disconnected(true, 'Logout completed');
});
}
agentID() {
return this.agent.agentID;
}
connectToSim(requested) {
return __awaiter(this, void 0, void 0, function* () {
this.agent.setCurrentRegion(this.currentRegion);
const circuit = this.currentRegion.circuit;
circuit.init();
const msg = new UseCircuitCode_1.UseCircuitCodeMessage();
msg.CircuitCode = {
SessionID: circuit.sessionID,
ID: this.agent.agentID,
Code: circuit.circuitCode
};
yield circuit.waitForAck(circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable), 1000);
const agentMovement = new CompleteAgentMovement_1.CompleteAgentMovementMessage();
agentMovement.AgentData = {
AgentID: this.agent.agentID,
SessionID: circuit.sessionID,
CircuitCode: circuit.circuitCode
};
circuit.sendMessage(agentMovement, PacketFlags_1.PacketFlags.Reliable);
let agentPosition = null;
let regionName = null;
circuit.waitForMessage(Message_1.Message.AgentMovementComplete, 10000).then((agentMovementMsg) => {
agentPosition = agentMovementMsg.Data.Position;
if (regionName !== null) {
if (this.stayRegion === '' || requested) {
this.stayPut(this.stay, regionName, agentPosition);
}
}
}).catch(() => {
console.error('Timed out waiting for AgentMovementComplete');
});
const handshakeMessage = yield circuit.waitForMessage(Message_1.Message.RegionHandshake, 10000);
const handshakeReply = new RegionHandshakeReply_1.RegionHandshakeReplyMessage();
handshakeReply.AgentData = {
AgentID: this.agent.agentID,
SessionID: circuit.sessionID
};
handshakeReply.RegionInfo = {
Flags: RegionProtocolFlags_1.RegionProtocolFlags.SelfAppearanceSupport | RegionProtocolFlags_1.RegionProtocolFlags.AgentAppearanceService
};
yield circuit.waitForAck(circuit.sendMessage(handshakeReply, PacketFlags_1.PacketFlags.Reliable), 10000);
this.currentRegion.handshake(handshakeMessage).then(() => {
regionName = this.currentRegion.regionName;
console.log('Arrived in region: ' + regionName);
if (agentPosition !== null) {
if (this.stayRegion === '' || requested) {
this.stayPut(this.stay, regionName, agentPosition);
}
}
}).catch((error) => {
console.error('Timed out getting handshake');
console.error(error);
});
if (this.clientCommands !== null) {
this.clientCommands.network.setBandwidth(1536000);
}
const agentRequest = new AgentDataUpdateRequest_1.AgentDataUpdateRequestMessage();
agentRequest.AgentData = {
AgentID: this.agent.agentID,
SessionID: circuit.sessionID
};
circuit.sendMessage(agentRequest, PacketFlags_1.PacketFlags.Reliable);
this.agent.setInitialAppearance();
this.agent.circuitActive();
this.lastSuccessfulPing = new Date().getTime();
this.ping = setInterval(() => __awaiter(this, void 0, void 0, function* () {
this.pingNumber++;
if (this.pingNumber % 12 === 0 && this.stay) {
if (this.currentRegion.regionName !== this.stayRegion) {
console.log('Stay Put: Attempting to teleport to ' + this.stayRegion);
this.clientCommands.teleport.teleportTo(this.stayRegion, this.stayPosition, this.stayPosition).then(() => {
console.log('I found my way home.');
}).catch(() => {
console.log('Cannot teleport home right now.');
});
}
}
if (this.pingNumber > 255) {
this.pingNumber = 0;
}
const ping = new StartPingCheck_1.StartPingCheckMessage();
ping.PingID = {
PingID: this.pingNumber,
OldestUnacked: this.currentRegion.circuit.getOldestUnacked()
};
circuit.sendMessage(ping, PacketFlags_1.PacketFlags.Reliable);
circuit.waitForMessage(Message_1.Message.CompletePingCheck, 10000, ((pingData, cpc) => {
if (cpc.PingID.PingID === pingData.pingID) {
this.lastSuccessfulPing = new Date().getTime();
const pingTime = this.lastSuccessfulPing - pingData.timeSent;
if (this.clientEvents !== null) {
this.clientEvents.onCircuitLatency.next(pingTime);
}
return FilterResponse_1.FilterResponse.Finish;
}
return FilterResponse_1.FilterResponse.NoMatch;
}).bind(this, {
pingID: this.pingNumber,
timeSent: new Date().getTime()
})).then(() => {
}).catch(() => {
console.error('Timeout waiting for ping from the simulator - possible disconnection');
});
if ((new Date().getTime() - this.lastSuccessfulPing) > 60000) {
this.kicked('Circuit Timeout');
}
}), 5000);
this.circuitSubscription = circuit.subscribeToMessages([
Message_1.Message.TeleportFailed,
Message_1.Message.TeleportFinish,
Message_1.Message.TeleportLocal,
Message_1.Message.TeleportStart,
Message_1.Message.TeleportProgress,
Message_1.Message.TeleportCancel,
Message_1.Message.KickUser
], (packet) => {
switch (packet.message.id) {
case Message_1.Message.TeleportLocal:
{
const tpEvent = new TeleportEvent_1.TeleportEvent();
tpEvent.message = '';
tpEvent.eventType = TeleportEventType_1.TeleportEventType.TeleportCompleted;
tpEvent.simIP = 'local';
tpEvent.simPort = 0;
tpEvent.seedCapability = '';
if (this.clientEvents === null) {
this.kicked('ClientEvents is null');
}
this.clientEvents.onTeleportEvent.next(tpEvent);
break;
}
case Message_1.Message.TeleportStart:
{
const teleportStart = packet.message;
const tpEvent = new TeleportEvent_1.TeleportEvent();
tpEvent.message = '';
tpEvent.eventType = TeleportEventType_1.TeleportEventType.TeleportStarted;
tpEvent.simIP = '';
tpEvent.simPort = 0;
tpEvent.seedCapability = '';
if (this.clientEvents === null) {
this.kicked('ClientEvents is null');
}
this.clientEvents.onTeleportEvent.next(tpEvent);
break;
}
case Message_1.Message.TeleportProgress:
{
const teleportProgress = packet.message;
const message = Utils_1.Utils.BufferToStringSimple(teleportProgress.Info.Message);
const tpEvent = new TeleportEvent_1.TeleportEvent();
tpEvent.message = message;
tpEvent.eventType = TeleportEventType_1.TeleportEventType.TeleportProgress;
tpEvent.simIP = '';
tpEvent.simPort = 0;
tpEvent.seedCapability = '';
if (this.clientEvents === null) {
this.kicked('ClientEvents is null');
}
this.clientEvents.onTeleportEvent.next(tpEvent);
break;
}
case Message_1.Message.KickUser:
{
const kickUser = packet.message;
this.kicked(Utils_1.Utils.BufferToStringSimple(kickUser.UserInfo.Reason));
break;
}
}
});
});
}
}
exports.Bot = Bot;
//# sourceMappingURL=Bot.js.map

1
dist/Bot.js.map vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,11 +0,0 @@
import { LoginParameters } from './classes/LoginParameters';
import { LoginResponse } from './classes/LoginResponse';
import { ClientEvents } from './classes/ClientEvents';
import { BotOptionFlags } from './enums/BotOptionFlags';
export declare class LoginHandler {
private clientEvents;
private options;
static GenerateMAC(): string;
constructor(ce: ClientEvents, options: BotOptionFlags);
Login(params: LoginParameters): Promise<LoginResponse>;
}

82
dist/LoginHandler.js vendored
View File

@@ -1,82 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const xmlrpc = require("xmlrpc");
const crypto = require("crypto");
const LoginResponse_1 = require("./classes/LoginResponse");
const uuid = require('uuid');
class LoginHandler {
static GenerateMAC() {
const hexDigits = '0123456789ABCDEF';
let macAddress = '';
for (let i = 0; i < 6; i++) {
macAddress += hexDigits.charAt(Math.round(Math.random() * 15));
macAddress += hexDigits.charAt(Math.round(Math.random() * 15));
if (i !== 5) {
macAddress += ':';
}
}
return macAddress;
}
constructor(ce, options) {
this.clientEvents = ce;
this.options = options;
}
Login(params) {
return new Promise((resolve, reject) => {
const secureClientOptions = {
host: 'login.agni.lindenlab.com',
port: 443,
path: '/cgi-bin/login.cgi',
rejectUnauthorized: false
};
const client = xmlrpc.createSecureClient(secureClientOptions);
client.methodCall('login_to_simulator', [
{
'first': params.firstName,
'last': params.lastName,
'passwd': '$1$' + crypto.createHash('md5').update(params.password.substr(0, 16)).digest('hex'),
'start': params.start,
'major': '0',
'minor': '0',
'patch': '1',
'build': '0',
'platform': 'win',
'mac': LoginHandler.GenerateMAC(),
'viewer_digest': uuid.v4(),
'user_agent': 'nmv',
'author': 'tom@caspertech.co.uk',
'options': [
'inventory-root',
'inventory-skeleton',
'inventory-lib-root',
'inventory-lib-owner',
'inventory-skel-lib',
'gestures',
'event_categories',
'event_notifications',
'classified_categories',
'buddy-list',
'ui-config',
'login-flags',
'global-textures'
]
}
], (error, value) => {
if (error) {
reject(error);
}
else {
if (!value['login'] || value['login'] === 'false') {
reject(new Error(value['message']));
}
else {
const response = new LoginResponse_1.LoginResponse(value, this.clientEvents, this.options);
resolve(response);
}
}
});
});
}
}
exports.LoginHandler = LoginHandler;
//# sourceMappingURL=LoginHandler.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"LoginHandler.js","sourceRoot":"","sources":["../lib/LoginHandler.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AACjC,iCAAiC;AAEjC,2DAAsD;AAGtD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAa,YAAY;IAKrB,MAAM,CAAC,WAAW;QAEd,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACrC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAC1B;YACI,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/D,UAAU,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,CAAC,EACX;gBACI,UAAU,IAAI,GAAG,CAAC;aACrB;SACJ;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,YAAY,EAAgB,EAAE,OAAuB;QAEjD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,MAAuB;QAEzB,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAElD,MAAM,mBAAmB,GAAG;gBACxB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,GAAG;gBACT,IAAI,EAAE,oBAAoB;gBAC1B,kBAAkB,EAAE,KAAK;aAC5B,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;YAC9D,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAClC;gBACI;oBACI,OAAO,EAAE,MAAM,CAAC,SAAS;oBACzB,MAAM,EAAE,MAAM,CAAC,QAAQ;oBACvB,QAAQ,EAAE,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9F,OAAO,EAAE,MAAM,CAAC,KAAK;oBACrB,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,GAAG;oBACZ,OAAO,EAAE,GAAG;oBACZ,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,YAAY,CAAC,WAAW,EAAE;oBACjC,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;oBAC1B,YAAY,EAAE,KAAK;oBACnB,QAAQ,EAAE,sBAAsB;oBAChC,SAAS,EAAE;wBACP,gBAAgB;wBAChB,oBAAoB;wBACpB,oBAAoB;wBACpB,qBAAqB;wBACrB,oBAAoB;wBACpB,UAAU;wBACV,kBAAkB;wBAClB,qBAAqB;wBACrB,uBAAuB;wBACvB,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,iBAAiB;qBACpB;iBACJ;aACJ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAEhB,IAAI,KAAK,EACT;oBACI,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;qBAED;oBACI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,EACjD;wBACI,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;qBACvC;yBAED;wBACI,MAAM,QAAQ,GAAG,IAAI,6BAAa,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC3E,OAAO,CAAC,QAAQ,CAAC,CAAC;qBACrB;iBACJ;YACL,CAAC,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;CAEJ;AA9FD,oCA8FC"}

View File

@@ -1,82 +0,0 @@
/// <reference types="node" />
import { UUID } from './UUID';
import { Vector3 } from './Vector3';
import { Inventory } from './Inventory';
import Long = require('long');
import { Wearable } from './Wearable';
import { Region } from './Region';
import { Packet } from './Packet';
import { ClientEvents } from './ClientEvents';
import Timer = NodeJS.Timer;
import { ControlFlags } from '..';
export declare class Agent {
firstName: string;
lastName: string;
localID: number;
agentID: UUID;
accessMax: string;
regionAccess: string;
agentAccess: string;
currentRegion: Region;
chatSessions: {
[key: string]: {
[key: string]: {
hasVoice: boolean;
isModerator: boolean;
};
};
};
controlFlags: ControlFlags;
openID: {
'token'?: string;
'url'?: string;
};
AOTransition: boolean;
buddyList: {
'buddyRightsGiven': boolean;
'buddyID': UUID;
'buddyRightsHas': boolean;
}[];
uiFlags: {
'allowFirstLife'?: boolean;
};
cameraLookAt: Vector3;
cameraCenter: Vector3;
cameraLeftAxis: Vector3;
cameraUpAxis: Vector3;
cameraFar: number;
maxGroups: number;
agentFlags: number;
startLocation: string;
cofVersion: number;
home: {
'regionHandle'?: Long;
'position'?: Vector3;
'lookAt'?: Vector3;
};
snapshotConfigURL: string;
inventory: Inventory;
gestures: {
assetID: UUID;
itemID: UUID;
}[];
agentAppearanceService: string;
wearables?: {
attachments: Wearable[];
serialNumber: number;
};
agentUpdateTimer: Timer | null;
estateManager: boolean;
private clientEvents;
constructor(clientEvents: ClientEvents);
setIsEstateManager(is: boolean): void;
getSessionAgentCount(uuid: UUID): number;
addChatSession(uuid: UUID): void;
hasChatSession(uuid: UUID): boolean;
setCurrentRegion(region: Region): void;
circuitActive(): void;
sendAgentUpdate(): void;
shutdown(): void;
onAnimState(packet: Packet): void;
setInitialAppearance(): void;
}

214
dist/classes/Agent.js vendored
View File

@@ -1,214 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const UUID_1 = require("./UUID");
const Vector3_1 = require("./Vector3");
const Inventory_1 = require("./Inventory");
const Message_1 = require("../enums/Message");
const AgentUpdate_1 = require("./messages/AgentUpdate");
const Quaternion_1 = require("./Quaternion");
const AgentState_1 = require("../enums/AgentState");
const BuiltInAnimations_1 = require("../enums/BuiltInAnimations");
const LLSD = require("@caspertech/llsd");
const AgentWearablesRequest_1 = require("./messages/AgentWearablesRequest");
const InventorySortOrder_1 = require("../enums/InventorySortOrder");
const RezSingleAttachmentFromInv_1 = require("./messages/RezSingleAttachmentFromInv");
const AttachmentPoint_1 = require("../enums/AttachmentPoint");
const Utils_1 = require("./Utils");
const __1 = require("..");
class Agent {
constructor(clientEvents) {
this.localID = 0;
this.chatSessions = {};
this.controlFlags = 0;
this.openID = {};
this.buddyList = [];
this.uiFlags = {};
this.cameraLookAt = new Vector3_1.Vector3([0.979546, 0.105575, -0.171303]);
this.cameraCenter = new Vector3_1.Vector3([199.58, 203.95, 24.304]);
this.cameraLeftAxis = new Vector3_1.Vector3([-1.0, 0.0, 0]);
this.cameraUpAxis = new Vector3_1.Vector3([0.0, 0.0, 1.0]);
this.cameraFar = 1;
this.home = {};
this.gestures = [];
this.agentUpdateTimer = null;
this.estateManager = false;
this.inventory = new Inventory_1.Inventory(clientEvents, this);
this.clientEvents = clientEvents;
this.clientEvents.onGroupChatAgentListUpdate.subscribe((event) => {
const str = event.groupID.toString();
if (this.chatSessions[str] === undefined) {
this.chatSessions[str] = {};
}
const agent = event.agentID.toString();
if (event.entered) {
this.chatSessions[str][agent] = {
hasVoice: event.canVoiceChat,
isModerator: event.isModerator
};
}
else {
delete this.chatSessions[str][agent];
}
});
}
setIsEstateManager(is) {
this.estateManager = is;
}
getSessionAgentCount(uuid) {
const str = uuid.toString();
if (this.chatSessions[str] === undefined) {
return 0;
}
else {
return Object.keys(this.chatSessions[str]).length;
}
}
addChatSession(uuid) {
const str = uuid.toString();
if (this.chatSessions[str] === undefined) {
this.chatSessions[str] = {};
}
}
hasChatSession(uuid) {
const str = uuid.toString();
return !(this.chatSessions[str] === undefined);
}
setCurrentRegion(region) {
this.currentRegion = region;
this.currentRegion.circuit.subscribeToMessages([
Message_1.Message.AvatarAnimation
], this.onAnimState.bind(this));
}
circuitActive() {
this.agentUpdateTimer = setInterval(this.sendAgentUpdate.bind(this), 1000);
}
sendAgentUpdate() {
if (!this.currentRegion) {
return;
}
const circuit = this.currentRegion.circuit;
const agentUpdate = new AgentUpdate_1.AgentUpdateMessage();
agentUpdate.AgentData = {
AgentID: this.agentID,
SessionID: circuit.sessionID,
HeadRotation: Quaternion_1.Quaternion.getIdentity(),
BodyRotation: Quaternion_1.Quaternion.getIdentity(),
State: AgentState_1.AgentState.None,
CameraCenter: this.cameraCenter,
CameraAtAxis: this.cameraLookAt,
CameraLeftAxis: this.cameraLeftAxis,
CameraUpAxis: this.cameraUpAxis,
Far: this.cameraFar,
ControlFlags: this.controlFlags,
Flags: __1.AgentFlags.None
};
circuit.sendMessage(agentUpdate, 0);
}
shutdown() {
if (this.agentUpdateTimer !== null) {
clearInterval(this.agentUpdateTimer);
this.agentUpdateTimer = null;
}
}
onAnimState(packet) {
if (packet.message.id === Message_1.Message.AvatarAnimation) {
const animMsg = packet.message;
if (animMsg.Sender.ID.toString() === this.agentID.toString()) {
animMsg.AnimationList.forEach((anim) => {
const a = anim.AnimID.toString();
if (a === BuiltInAnimations_1.BuiltInAnimations.STANDUP ||
a === BuiltInAnimations_1.BuiltInAnimations.PRE_JUMP ||
a === BuiltInAnimations_1.BuiltInAnimations.LAND ||
a === BuiltInAnimations_1.BuiltInAnimations.MEDIUM_LAND ||
a === BuiltInAnimations_1.BuiltInAnimations.WALK ||
a === BuiltInAnimations_1.BuiltInAnimations.RUN) {
this.controlFlags = __1.ControlFlags.AGENT_CONTROL_FINISH_ANIM;
this.sendAgentUpdate();
this.controlFlags = 0;
}
});
}
}
}
setInitialAppearance() {
const circuit = this.currentRegion.circuit;
const wearablesRequest = new AgentWearablesRequest_1.AgentWearablesRequestMessage();
wearablesRequest.AgentData = {
AgentID: this.agentID,
SessionID: circuit.sessionID
};
circuit.sendMessage(wearablesRequest, __1.PacketFlags.Reliable);
circuit.waitForMessage(Message_1.Message.AgentWearablesUpdate, 10000).then((wearables) => {
if (!this.wearables || wearables.AgentData.SerialNum > this.wearables.serialNumber) {
this.wearables = {
serialNumber: wearables.AgentData.SerialNum,
attachments: []
};
wearables.WearableData.forEach((wearable) => {
if (this.wearables && this.wearables.attachments) {
this.wearables.attachments.push({
itemID: wearable.ItemID,
assetID: wearable.AssetID,
wearableType: wearable.WearableType
});
}
});
}
Object.keys(this.inventory.main.skeleton).forEach((uuid) => {
const folder = this.inventory.main.skeleton[uuid];
if (folder.typeDefault === __1.AssetType.CurrentOutfitFolder) {
const folderID = folder.folderID;
const requestFolder = {
folder_id: new LLSD.UUID(folderID),
owner_id: new LLSD.UUID(this.agentID),
fetch_folders: true,
fetch_items: true,
sort_order: InventorySortOrder_1.InventorySortOrder.ByName
};
const requestedFolders = {
'folders': [
requestFolder
]
};
this.currentRegion.caps.capsRequestXML('FetchInventoryDescendents2', requestedFolders).then((folderContents) => {
const currentOutfitFolderContents = folderContents['folders'][0]['items'];
const wornObjects = this.currentRegion.objects.getObjectsByParent(this.localID);
currentOutfitFolderContents.forEach((item) => {
if (item.type === 6) {
let found = false;
wornObjects.forEach((obj) => {
if (obj.hasNameValueEntry('AttachItemID')) {
if (item['item_id'].toString() === obj.getNameValueEntry('AttachItemID')) {
found = true;
}
}
});
if (!found) {
const rsafi = new RezSingleAttachmentFromInv_1.RezSingleAttachmentFromInvMessage();
rsafi.AgentData = {
AgentID: this.agentID,
SessionID: circuit.sessionID
};
rsafi.ObjectData = {
ItemID: new UUID_1.UUID(item['item_id'].toString()),
OwnerID: this.agentID,
AttachmentPt: 0x80 | AttachmentPoint_1.AttachmentPoint.Default,
ItemFlags: item['flags'],
GroupMask: item['permissions']['group_mask'],
EveryoneMask: item['permissions']['everyone_mask'],
NextOwnerMask: item['permissions']['next_owner_mask'],
Name: Utils_1.Utils.StringToBuffer(item['name']),
Description: Utils_1.Utils.StringToBuffer(item['desc'])
};
circuit.sendMessage(rsafi, __1.PacketFlags.Reliable);
}
}
});
});
}
});
});
}
}
exports.Agent = Agent;
//# sourceMappingURL=Agent.js.map

File diff suppressed because one or more lines are too long

16
dist/classes/BVH.d.ts vendored
View File

@@ -1,16 +0,0 @@
/// <reference types="node" />
import { BVHJoint } from './BVHJoint';
export declare class BVH {
priority: number;
length: number;
expressionName: string;
inPoint: number;
outPoint: number;
loop: number;
easeInTime: number;
easeOutTime: number;
handPose: number;
jointCount: number;
joints: BVHJoint[];
readFromBuffer(buf: Buffer, pos: number): number;
}

48
dist/classes/BVH.js vendored
View File

@@ -1,48 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Utils_1 = require("./Utils");
const BVHJoint_1 = require("./BVHJoint");
class BVH {
constructor() {
this.joints = [];
}
readFromBuffer(buf, pos) {
const header1 = buf.readUInt16LE(pos);
pos = pos + 2;
const header2 = buf.readUInt16LE(pos);
pos = pos + 2;
if (header1 !== 1 || header2 !== 0) {
console.error('BVH Decoder: invalid data');
return 0;
}
this.priority = buf.readInt32LE(pos);
pos = pos + 4;
this.length = buf.readFloatLE(pos);
pos = pos + 4;
let result = Utils_1.Utils.BufferToString(buf, pos);
pos += result.readLength;
this.expressionName = result.result;
this.inPoint = buf.readFloatLE(pos);
pos += 4;
this.outPoint = buf.readFloatLE(pos);
pos += 4;
this.loop = buf.readInt32LE(pos);
pos += 4;
this.easeInTime = buf.readFloatLE(pos);
pos += 4;
this.easeOutTime = buf.readFloatLE(pos);
pos += 4;
this.handPose = buf.readUInt32LE(pos);
pos += 4;
this.jointCount = buf.readUInt32LE(pos);
pos += 4;
for (let x = 0; x < this.jointCount; x++) {
const joint = new BVHJoint_1.BVHJoint();
pos = joint.readFromBuffer(buf, pos, this.inPoint, this.outPoint);
this.joints.push(joint);
}
return pos;
}
}
exports.BVH = BVH;
//# sourceMappingURL=BVH.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"BVH.js","sourceRoot":"","sources":["../../lib/classes/BVH.ts"],"names":[],"mappings":";;AAAA,mCAA8B;AAC9B,yCAAoC;AAGpC,MAAa,GAAG;IAAhB;QAYI,WAAM,GAAe,EAAE,CAAC;IA4C5B,CAAC;IAzCG,cAAc,CAAC,GAAW,EAAE,GAAW;QAEnC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAClC;YACI,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,CAAC;SACZ;QACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,IAAI,MAAM,GAAG,aAAK,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,GAAG,IAAI,CAAC,CAAC;QAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EACxC;YACI,MAAM,KAAK,GAAG,IAAI,mBAAQ,EAAE,CAAC;YAC7B,GAAG,GAAG,KAAK,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAxDD,kBAwDC"}

View File

@@ -1,11 +0,0 @@
/// <reference types="node" />
import { BVHJointKeyframe } from './BVHJointKeyframe';
export declare class BVHJoint {
name: string;
priority: number;
rotationKeyframeCount: number;
rotationKeyframes: BVHJointKeyframe[];
positionKeyframeCount: number;
positionKeyframes: BVHJointKeyframe[];
readFromBuffer(buf: Buffer, pos: number, inPoint: number, outPoint: number): number;
}

View File

@@ -1,51 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Utils_1 = require("./Utils");
const Vector3_1 = require("./Vector3");
const BVHJointKeyframe_1 = require("./BVHJointKeyframe");
class BVHJoint {
constructor() {
this.rotationKeyframes = [];
this.positionKeyframes = [];
}
readFromBuffer(buf, pos, inPoint, outPoint) {
const result = Utils_1.Utils.BufferToString(buf, pos);
pos += result.readLength;
this.name = result.result;
this.priority = buf.readInt32LE(pos);
pos = pos + 4;
this.rotationKeyframeCount = buf.readInt32LE(pos);
pos = pos + 4;
for (let x = 0; x < this.rotationKeyframeCount; x++) {
const jointKF = new BVHJointKeyframe_1.BVHJointKeyframe();
jointKF.time = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), inPoint, outPoint);
pos = pos + 2;
const x = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), -1.0, 1.0);
pos = pos + 2;
const y = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), -1.0, 1.0);
pos = pos + 2;
const z = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), -1.0, 1.0);
pos = pos + 2;
jointKF.transform = new Vector3_1.Vector3([x, y, z]);
this.rotationKeyframes.push(jointKF);
}
this.positionKeyframeCount = buf.readInt32LE(pos);
pos = pos + 4;
for (let x = 0; x < this.positionKeyframeCount; x++) {
const jointKF = new BVHJointKeyframe_1.BVHJointKeyframe();
jointKF.time = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), inPoint, outPoint);
pos = pos + 2;
const x = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), -1.0, 1.0);
pos = pos + 2;
const y = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), -1.0, 1.0);
pos = pos + 2;
const z = Utils_1.Utils.UInt16ToFloat(buf.readUInt16LE(pos), -1.0, 1.0);
pos = pos + 2;
jointKF.transform = new Vector3_1.Vector3([x, y, z]);
this.positionKeyframes.push(jointKF);
}
return pos;
}
}
exports.BVHJoint = BVHJoint;
//# sourceMappingURL=BVHJoint.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"BVHJoint.js","sourceRoot":"","sources":["../../lib/classes/BVHJoint.ts"],"names":[],"mappings":";;AAAA,mCAA8B;AAC9B,uCAAkC;AAClC,yDAAoD;AAEpD,MAAa,QAAQ;IAArB;QAMI,sBAAiB,GAAuB,EAAE,CAAC;QAG3C,sBAAiB,GAAuB,EAAE,CAAC;IAgD/C,CAAC;IA7CG,cAAc,CAAC,GAAW,EAAE,GAAW,EAAE,OAAe,EAAE,QAAgB;QAEtE,MAAM,MAAM,GAAG,aAAK,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC9C,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAE1B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACrC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EACnD;YACI,MAAM,OAAO,GAAG,IAAI,mCAAgB,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC7E,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,SAAS,GAAG,IAAI,iBAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAClD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,EACnD;YACI,MAAM,OAAO,GAAG,IAAI,mCAAgB,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC7E,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,aAAK,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,SAAS,GAAG,IAAI,iBAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAzDD,4BAyDC"}

View File

@@ -1,5 +0,0 @@
import { Vector3 } from './Vector3';
export declare class BVHJointKeyframe {
time: number;
transform: Vector3;
}

View File

@@ -1,6 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class BVHJointKeyframe {
}
exports.BVHJointKeyframe = BVHJointKeyframe;
//# sourceMappingURL=BVHJointKeyframe.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"BVHJointKeyframe.js","sourceRoot":"","sources":["../../lib/classes/BVHJointKeyframe.ts"],"names":[],"mappings":";;AAEA,MAAa,gBAAgB;CAI5B;AAJD,4CAIC"}

View File

@@ -1,25 +0,0 @@
/// <reference types="node" />
import { Region } from './Region';
import { EventQueueClient } from './EventQueueClient';
import { UUID } from './UUID';
import { ClientEvents } from './ClientEvents';
import { Agent } from './Agent';
import { HTTPAssets } from '..';
export declare class Caps {
private region;
private onGotSeedCap;
private gotSeedCap;
private capabilities;
private clientEvents;
private agent;
private active;
eventQueueClient: EventQueueClient | null;
constructor(agent: Agent, region: Region, seedURL: string, clientEvents: ClientEvents);
downloadAsset(uuid: UUID, type: HTTPAssets): Promise<Buffer>;
request(url: string, data: string | Buffer, contentType: string): Promise<string>;
waitForSeedCapability(): Promise<void>;
getCapability(capability: string): Promise<string>;
capsRequestUpload(url: string, data: Buffer): Promise<any>;
capsRequestXML(capability: string, data: any): Promise<any>;
shutdown(): void;
}

234
dist/classes/Caps.js vendored
View File

@@ -1,234 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const LLSD = require("@caspertech/llsd");
const request = require("request");
const EventQueueClient_1 = require("./EventQueueClient");
const Subject_1 = require("rxjs/internal/Subject");
class Caps {
constructor(agent, region, seedURL, clientEvents) {
this.onGotSeedCap = new Subject_1.Subject();
this.gotSeedCap = false;
this.capabilities = {};
this.active = false;
this.eventQueueClient = null;
this.agent = agent;
this.clientEvents = clientEvents;
this.region = region;
const req = [];
req.push('AgentPreferences');
req.push('AgentState');
req.push('AttachmentResources');
req.push('AvatarPickerSearch');
req.push('AvatarRenderInfo');
req.push('CharacterProperties');
req.push('ChatSessionRequest');
req.push('CopyInventoryFromNotecard');
req.push('CreateInventoryCategory');
req.push('DispatchRegionInfo');
req.push('DirectDelivery');
req.push('EnvironmentSettings');
req.push('EstateChangeInfo');
req.push('EventQueueGet');
req.push('FacebookConnect');
req.push('FlickrConnect');
req.push('TwitterConnect');
req.push('FetchLib2');
req.push('FetchLibDescendents2');
req.push('FetchInventory2');
req.push('FetchInventoryDescendents2');
req.push('IncrementCOFVersion');
req.push('GetDisplayNames');
req.push('GetExperiences');
req.push('AgentExperiences');
req.push('FindExperienceByName');
req.push('GetExperienceInfo');
req.push('GetAdminExperiences');
req.push('GetCreatorExperiences');
req.push('ExperiencePreferences');
req.push('GroupExperiences');
req.push('UpdateExperience');
req.push('IsExperienceAdmin');
req.push('IsExperienceContributor');
req.push('RegionExperiences');
req.push('GetMetadata');
req.push('GetObjectCost');
req.push('GetObjectPhysicsData');
req.push('GroupAPIv1');
req.push('GroupMemberData');
req.push('GroupProposalBallot');
req.push('HomeLocation');
req.push('LandResources');
req.push('LSLSyntax');
req.push('MapLayer');
req.push('MapLayerGod');
req.push('MeshUploadFlag');
req.push('NavMeshGenerationStatus');
req.push('NewFileAgentInventory');
req.push('ObjectMedia');
req.push('ObjectMediaNavigate');
req.push('ObjectNavMeshProperties');
req.push('ParcelPropertiesUpdate');
req.push('ParcelVoiceInfoRequest');
req.push('ProductInfoRequest');
req.push('ProvisionVoiceAccountRequest');
req.push('RemoteParcelRequest');
req.push('RenderMaterials');
req.push('RequestTextureDownload');
req.push('ResourceCostSelected');
req.push('RetrieveNavMeshSrc');
req.push('SearchStatRequest');
req.push('SearchStatTracking');
req.push('SendPostcard');
req.push('SendUserReport');
req.push('SendUserReportWithScreenshot');
req.push('ServerReleaseNotes');
req.push('SetDisplayName');
req.push('SimConsoleAsync');
req.push('SimulatorFeatures');
req.push('StartGroupProposal');
req.push('TerrainNavMeshProperties');
req.push('TextureStats');
req.push('UntrustedSimulatorMessage');
req.push('UpdateAgentInformation');
req.push('UpdateAgentLanguage');
req.push('UpdateAvatarAppearance');
req.push('UpdateGestureAgentInventory');
req.push('UpdateGestureTaskInventory');
req.push('UpdateNotecardAgentInventory');
req.push('UpdateNotecardTaskInventory');
req.push('UpdateScriptAgent');
req.push('UpdateScriptTask');
req.push('UploadBakedTexture');
req.push('ViewerAsset');
req.push('ViewerMetrics');
req.push('ViewerStartAuction');
req.push('ViewerStats');
this.active = true;
this.request(seedURL, LLSD.LLSD.formatXML(req), 'application/llsd+xml').then((body) => {
this.capabilities = LLSD.LLSD.parseXML(body);
this.gotSeedCap = true;
this.onGotSeedCap.next();
if (this.capabilities['EventQueueGet']) {
if (this.eventQueueClient !== null) {
this.eventQueueClient.shutdown();
}
this.eventQueueClient = new EventQueueClient_1.EventQueueClient(this.agent, this, this.clientEvents);
}
}).catch((err) => {
console.error('Error getting seed capability');
console.error(err);
});
}
downloadAsset(uuid, type) {
return new Promise((resolve, reject) => {
this.getCapability('ViewerAsset').then((url) => {
const assetURL = url + '/?' + type + '_id=' + uuid.toString();
request({
'uri': assetURL,
'rejectUnauthorized': false,
'method': 'GET',
'encoding': null
}, (err, res, body) => {
if (err) {
reject(err);
}
else {
resolve(body);
}
});
});
});
}
request(url, data, contentType) {
return new Promise((resolve, reject) => {
request({
'headers': {
'Content-Length': data.length,
'Content-Type': contentType
},
'uri': url,
'body': data,
'rejectUnauthorized': false,
'method': 'POST'
}, (err, res, body) => {
if (err) {
reject(err);
}
else {
resolve(body);
}
});
});
}
waitForSeedCapability() {
return new Promise((resolve, reject) => {
if (this.gotSeedCap) {
resolve();
}
else {
const sub = this.onGotSeedCap.subscribe(() => {
sub.unsubscribe();
resolve();
});
}
});
}
getCapability(capability) {
return new Promise((resolve, reject) => {
if (!this.active) {
reject(new Error('Requesting getCapability to an inactive Caps instance'));
return;
}
this.waitForSeedCapability().then(() => {
if (this.capabilities[capability]) {
resolve(this.capabilities[capability]);
}
else {
reject(new Error('Capability not available'));
}
});
});
}
capsRequestUpload(url, data) {
return new Promise((resolve, reject) => {
this.request(url, data, 'application/octet-stream').then((body) => {
resolve(LLSD.LLSD.parseXML(body));
}).catch((err) => {
console.error(err);
reject(err);
});
});
}
capsRequestXML(capability, data) {
return new Promise((resolve, reject) => {
this.getCapability(capability).then((url) => {
this.request(url, LLSD.LLSD.formatXML(data), 'application/llsd+xml').then((body) => {
let result = null;
try {
result = LLSD.LLSD.parseXML(body);
}
catch (err) {
console.error('Error parsing LLSD');
console.error(body);
reject(err);
}
resolve(result);
}).catch((err) => {
console.error(err);
reject(err);
});
}).catch((err) => {
reject(err);
});
});
}
shutdown() {
this.onGotSeedCap.complete();
if (this.eventQueueClient) {
this.eventQueueClient.shutdown();
}
this.active = false;
}
}
exports.Caps = Caps;
//# sourceMappingURL=Caps.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,50 +0,0 @@
/// <reference types="node" />
import { UUID } from './UUID';
import { Socket } from 'dgram';
import { Packet } from './Packet';
import { MessageBase } from './MessageBase';
import { Message } from '../enums/Message';
import { Subscription } from 'rxjs/internal/Subscription';
import Timer = NodeJS.Timer;
import { ClientEvents } from './ClientEvents';
import { FilterResponse } from '../enums/FilterResponse';
import { PacketFlags } from '..';
export declare class Circuit {
secureSessionID: UUID;
sessionID: UUID;
circuitCode: number;
udpBlacklist: string[];
timestamp: number;
client: Socket | null;
port: number;
ipAddress: string;
sequenceNumber: number;
awaitingAck: {
[key: number]: {
packet: Packet;
timeout: Timer;
sent: number;
};
};
receivedPackets: {
[key: number]: Timer;
};
active: boolean;
private clientEvents;
private onPacketReceived;
private onAckReceived;
constructor(clientEvents: ClientEvents);
subscribeToMessages(ids: number[], callback: (packet: Packet) => void): Subscription;
sendMessage(message: MessageBase, flags: PacketFlags): number;
resend(sequenceNumber: number): void;
waitForAck(ack: number, timeout: number): Promise<void>;
init(): void;
shutdown(): void;
waitForMessage<T extends MessageBase>(id: Message, timeout: number, messageFilter?: (message: T) => FilterResponse): Promise<T>;
sendPacket(packet: Packet): void;
ackReceived(sequenceNumber: number): void;
sendAck(sequenceNumber: number): void;
getOldestUnacked(): number;
expireReceivedPacket(sequenceNumber: number): void;
receivedPacket(bytes: Buffer): void;
}

View File

@@ -1,252 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const dgram = require("dgram");
const Packet_1 = require("./Packet");
const PacketAck_1 = require("./messages/PacketAck");
const Message_1 = require("../enums/Message");
const CompletePingCheck_1 = require("./messages/CompletePingCheck");
const operators_1 = require("rxjs/operators");
const FilterResponse_1 = require("../enums/FilterResponse");
const Subject_1 = require("rxjs/internal/Subject");
const __1 = require("..");
const TimeoutError_1 = require("./TimeoutError");
class Circuit {
constructor(clientEvents) {
this.client = null;
this.sequenceNumber = 0;
this.awaitingAck = {};
this.receivedPackets = {};
this.active = false;
this.clientEvents = clientEvents;
this.onPacketReceived = new Subject_1.Subject();
this.onAckReceived = new Subject_1.Subject();
}
subscribeToMessages(ids, callback) {
const lookupObject = {};
ids.forEach((id) => {
lookupObject[id] = true;
});
return this.onPacketReceived.pipe(operators_1.filter((packet) => {
return lookupObject[packet.message.id] === true;
})).subscribe(callback);
}
sendMessage(message, flags) {
if (!this.active) {
throw new Error('Attempting to send a message on a closed circuit');
}
const packet = new Packet_1.Packet();
packet.message = message;
packet.sequenceNumber = this.sequenceNumber++;
packet.packetFlags = flags;
this.sendPacket(packet);
return packet.sequenceNumber;
}
resend(sequenceNumber) {
if (!this.active) {
console.log('Resend triggered, but circuit is not active!');
return;
}
if (this.awaitingAck[sequenceNumber]) {
const toResend = this.awaitingAck[sequenceNumber].packet;
toResend.packetFlags = toResend.packetFlags | __1.PacketFlags.Resent;
this.sendPacket(toResend);
}
}
waitForAck(ack, timeout) {
return new Promise((resolve, reject) => {
const handleObj = {
timeout: null,
subscription: null
};
handleObj.timeout = setTimeout(() => {
if (handleObj.subscription !== null) {
handleObj.subscription.unsubscribe();
reject(new Error('Timeout'));
}
}, timeout);
handleObj.subscription = this.onAckReceived.subscribe((sequenceNumber) => {
if (sequenceNumber === ack) {
if (handleObj.timeout !== null) {
clearTimeout(handleObj.timeout);
handleObj.timeout = null;
}
if (handleObj.subscription !== null) {
handleObj.subscription.unsubscribe();
handleObj.subscription = null;
}
resolve();
}
});
});
}
init() {
if (this.client !== null) {
this.client.close();
}
this.client = dgram.createSocket('udp4');
this.client.on('listening', () => {
});
this.client.on('message', (message, remote) => {
if (remote.address === this.ipAddress) {
this.receivedPacket(message);
}
});
this.client.on('error', (error) => {
});
this.active = true;
}
shutdown() {
Object.keys(this.awaitingAck).forEach((sequenceNumber) => {
clearTimeout(this.awaitingAck[parseInt(sequenceNumber, 10)].timeout);
delete this.awaitingAck[parseInt(sequenceNumber, 10)];
});
Object.keys(this.receivedPackets).forEach((sequenceNumber) => {
const seq = parseInt(sequenceNumber, 10);
clearTimeout(this.receivedPackets[seq]);
delete this.receivedPackets[seq];
});
if (this.client !== null) {
this.client.close();
this.client = null;
this.onPacketReceived.complete();
this.onAckReceived.complete();
}
this.active = false;
}
waitForMessage(id, timeout, messageFilter) {
return new Promise((resolve, reject) => {
const handleObj = {
timeout: null,
subscription: null
};
const timeoutFunc = () => {
if (handleObj.subscription !== null) {
handleObj.subscription.unsubscribe();
const err = new TimeoutError_1.TimeoutError('Timeout waiting for message of type ' + Message_1.Message[id]);
err.timeout = true;
err.waitingForMessage = id;
reject(err);
}
};
handleObj.timeout = setTimeout(timeoutFunc, timeout);
handleObj.subscription = this.subscribeToMessages([id], (packet) => {
let finish = false;
if (packet.message.id === id) {
if (messageFilter === undefined) {
finish = true;
}
else {
const filterResult = messageFilter(packet.message);
if (filterResult === FilterResponse_1.FilterResponse.Finish) {
finish = true;
}
else if (filterResult === FilterResponse_1.FilterResponse.Match) {
if (handleObj.timeout !== null) {
clearTimeout(handleObj.timeout);
}
handleObj.timeout = setTimeout(timeoutFunc, timeout);
}
}
}
if (finish) {
if (handleObj.timeout !== null) {
clearTimeout(handleObj.timeout);
handleObj.timeout = null;
}
if (handleObj.subscription !== null) {
handleObj.subscription.unsubscribe();
handleObj.subscription = null;
}
resolve(packet.message);
}
});
});
}
sendPacket(packet) {
if (packet.packetFlags & __1.PacketFlags.Reliable) {
this.awaitingAck[packet.sequenceNumber] =
{
packet: packet,
timeout: setTimeout(this.resend.bind(this, packet.sequenceNumber), 1000),
sent: new Date().getTime()
};
}
let dataToSend = Buffer.allocUnsafe(packet.getSize());
dataToSend = packet.writeToBuffer(dataToSend, 0);
if (this.client !== null) {
this.client.send(dataToSend, 0, dataToSend.length, this.port, this.ipAddress, (err, bytes) => {
});
}
else {
console.error('Attempted to send packet but UDP client is null');
}
}
ackReceived(sequenceNumber) {
if (this.awaitingAck[sequenceNumber]) {
clearTimeout(this.awaitingAck[sequenceNumber].timeout);
delete this.awaitingAck[sequenceNumber];
}
this.onAckReceived.next(sequenceNumber);
}
sendAck(sequenceNumber) {
const msg = new PacketAck_1.PacketAckMessage();
msg.Packets = [
{
ID: sequenceNumber
}
];
this.sendMessage(msg, 0);
}
getOldestUnacked() {
let result = 0;
let oldest = -1;
const keys = Object.keys(this.awaitingAck);
keys.forEach((seqID) => {
const nSeq = parseInt(seqID, 10);
if (oldest === -1 || this.awaitingAck[nSeq].sent < oldest) {
result = nSeq;
oldest = this.awaitingAck[nSeq].sent;
}
});
return result;
}
expireReceivedPacket(sequenceNumber) {
if (this.receivedPackets[sequenceNumber]) {
delete this.receivedPackets[sequenceNumber];
}
}
receivedPacket(bytes) {
const packet = new Packet_1.Packet();
try {
packet.readFromBuffer(bytes, 0, this.ackReceived.bind(this), this.sendAck.bind(this));
}
catch (erro) {
console.error(erro);
return;
}
if (this.receivedPackets[packet.sequenceNumber]) {
clearTimeout(this.receivedPackets[packet.sequenceNumber]);
this.receivedPackets[packet.sequenceNumber] = setTimeout(this.expireReceivedPacket.bind(this, packet.sequenceNumber), 10000);
console.log('Ignoring duplicate packet: ' + packet.message.name + ' sequenceID: ' + packet.sequenceNumber);
return;
}
this.receivedPackets[packet.sequenceNumber] = setTimeout(this.expireReceivedPacket.bind(this, packet.sequenceNumber), 10000);
if (packet.message.id === Message_1.Message.PacketAck) {
const msg = packet.message;
msg.Packets.forEach((obj) => {
this.ackReceived(obj.ID);
});
}
else if (packet.message.id === Message_1.Message.StartPingCheck) {
const msg = packet.message;
const reply = new CompletePingCheck_1.CompletePingCheckMessage();
reply.PingID = {
PingID: msg.PingID.PingID
};
this.sendMessage(reply, 0);
}
this.onPacketReceived.next(packet);
}
}
exports.Circuit = Circuit;
//# sourceMappingURL=Circuit.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,29 +0,0 @@
import { Region } from './Region';
import { Agent } from './Agent';
import { Bot } from '../Bot';
import { NetworkCommands } from './commands/NetworkCommands';
import { AssetCommands } from './commands/AssetCommands';
import { TeleportCommands } from './commands/TeleportCommands';
import { RegionCommands } from './commands/RegionCommands';
import { GridCommands } from './commands/GridCommands';
import { CommunicationsCommands } from './commands/CommunicationsCommands';
import { AgentCommands } from './commands/AgentCommands';
import { GroupCommands } from './commands/GroupCommands';
import { InventoryCommands } from './commands/InventoryCommands';
import { ParcelCommands } from './commands/ParcelCommands';
import { FriendCommands } from './commands/FriendCommands';
export declare class ClientCommands {
network: NetworkCommands;
asset: AssetCommands;
teleport: TeleportCommands;
region: RegionCommands;
parcel: ParcelCommands;
friends: FriendCommands;
grid: GridCommands;
comms: CommunicationsCommands;
agent: AgentCommands;
group: GroupCommands;
inventory: InventoryCommands;
constructor(region: Region, agent: Agent, bot: Bot);
shutdown(): void;
}

View File

@@ -1,43 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const NetworkCommands_1 = require("./commands/NetworkCommands");
const AssetCommands_1 = require("./commands/AssetCommands");
const TeleportCommands_1 = require("./commands/TeleportCommands");
const RegionCommands_1 = require("./commands/RegionCommands");
const GridCommands_1 = require("./commands/GridCommands");
const CommunicationsCommands_1 = require("./commands/CommunicationsCommands");
const AgentCommands_1 = require("./commands/AgentCommands");
const GroupCommands_1 = require("./commands/GroupCommands");
const InventoryCommands_1 = require("./commands/InventoryCommands");
const ParcelCommands_1 = require("./commands/ParcelCommands");
const FriendCommands_1 = require("./commands/FriendCommands");
class ClientCommands {
constructor(region, agent, bot) {
this.network = new NetworkCommands_1.NetworkCommands(region, agent, bot);
this.asset = new AssetCommands_1.AssetCommands(region, agent, bot);
this.teleport = new TeleportCommands_1.TeleportCommands(region, agent, bot);
this.region = new RegionCommands_1.RegionCommands(region, agent, bot);
this.parcel = new ParcelCommands_1.ParcelCommands(region, agent, bot);
this.grid = new GridCommands_1.GridCommands(region, agent, bot);
this.friends = new FriendCommands_1.FriendCommands(region, agent, bot);
this.comms = new CommunicationsCommands_1.CommunicationsCommands(region, agent, bot);
this.agent = new AgentCommands_1.AgentCommands(region, agent, bot);
this.group = new GroupCommands_1.GroupCommands(region, agent, bot);
this.inventory = new InventoryCommands_1.InventoryCommands(region, agent, bot);
}
shutdown() {
this.network.shutdown();
this.asset.shutdown();
this.teleport.shutdown();
this.region.shutdown();
this.parcel.shutdown();
this.grid.shutdown();
this.comms.shutdown();
this.agent.shutdown();
this.group.shutdown();
this.inventory.shutdown();
this.friends.shutdown();
}
}
exports.ClientCommands = ClientCommands;
//# sourceMappingURL=ClientCommands.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"ClientCommands.js","sourceRoot":"","sources":["../../lib/classes/ClientCommands.ts"],"names":[],"mappings":";;AAGA,gEAA2D;AAC3D,4DAAuD;AACvD,kEAA6D;AAC7D,8DAAyD;AACzD,0DAAqD;AACrD,8EAAyE;AACzE,4DAAuD;AACvD,4DAAuD;AACvD,oEAA+D;AAC/D,8DAAyD;AACzD,8DAAyD;AAEzD,MAAa,cAAc;IAcvB,YAAY,MAAc,EAAE,KAAY,EAAE,GAAQ;QAE9C,IAAI,CAAC,OAAO,GAAG,IAAI,iCAAe,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,mCAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,2BAAY,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,GAAG,IAAI,+CAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,qCAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,QAAQ;QAEJ,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;CACJ;AA1CD,wCA0CC"}

View File

@@ -1,22 +0,0 @@
import { ChatEvent, DisconnectEvent, FriendRequestEvent, FriendResponseEvent, GroupChatEvent, GroupChatSessionAgentListEvent, GroupChatSessionJoinEvent, GroupInviteEvent, InstantMessageEvent, InventoryOfferedEvent, LureEvent, TeleportEvent, ScriptDialogEvent, EventQueueStateChangeEvent, FriendOnlineEvent, FriendRightsEvent, FriendRemovedEvent } from '..';
import { Subject } from 'rxjs/internal/Subject';
export declare class ClientEvents {
onNearbyChat: Subject<ChatEvent>;
onInstantMessage: Subject<InstantMessageEvent>;
onGroupInvite: Subject<GroupInviteEvent>;
onFriendRequest: Subject<FriendRequestEvent>;
onInventoryOffered: Subject<InventoryOfferedEvent>;
onLure: Subject<LureEvent>;
onTeleportEvent: Subject<TeleportEvent>;
onDisconnected: Subject<DisconnectEvent>;
onCircuitLatency: Subject<number>;
onGroupChat: Subject<GroupChatEvent>;
onGroupChatSessionJoin: Subject<GroupChatSessionJoinEvent>;
onGroupChatAgentListUpdate: Subject<GroupChatSessionAgentListEvent>;
onFriendResponse: Subject<FriendResponseEvent>;
onScriptDialog: Subject<ScriptDialogEvent>;
onEventQueueStateChange: Subject<EventQueueStateChangeEvent>;
onFriendOnline: Subject<FriendOnlineEvent>;
onFriendRights: Subject<FriendRightsEvent>;
onFriendRemoved: Subject<FriendRemovedEvent>;
}

View File

@@ -1,27 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Subject_1 = require("rxjs/internal/Subject");
class ClientEvents {
constructor() {
this.onNearbyChat = new Subject_1.Subject();
this.onInstantMessage = new Subject_1.Subject();
this.onGroupInvite = new Subject_1.Subject();
this.onFriendRequest = new Subject_1.Subject();
this.onInventoryOffered = new Subject_1.Subject();
this.onLure = new Subject_1.Subject();
this.onTeleportEvent = new Subject_1.Subject();
this.onDisconnected = new Subject_1.Subject();
this.onCircuitLatency = new Subject_1.Subject();
this.onGroupChat = new Subject_1.Subject();
this.onGroupChatSessionJoin = new Subject_1.Subject();
this.onGroupChatAgentListUpdate = new Subject_1.Subject();
this.onFriendResponse = new Subject_1.Subject();
this.onScriptDialog = new Subject_1.Subject();
this.onEventQueueStateChange = new Subject_1.Subject();
this.onFriendOnline = new Subject_1.Subject();
this.onFriendRights = new Subject_1.Subject();
this.onFriendRemoved = new Subject_1.Subject();
}
}
exports.ClientEvents = ClientEvents;
//# sourceMappingURL=ClientEvents.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"ClientEvents.js","sourceRoot":"","sources":["../../lib/classes/ClientEvents.ts"],"names":[],"mappings":";;AAkBA,mDAA8C;AAG9C,MAAa,YAAY;IAAzB;QAEI,iBAAY,GAAuB,IAAI,iBAAO,EAAa,CAAC;QAC5D,qBAAgB,GAAiC,IAAI,iBAAO,EAAuB,CAAC;QACpF,kBAAa,GAA8B,IAAI,iBAAO,EAAoB,CAAC;QAC3E,oBAAe,GAAgC,IAAI,iBAAO,EAAsB,CAAC;QACjF,uBAAkB,GAAmC,IAAI,iBAAO,EAAyB,CAAC;QAC1F,WAAM,GAAuB,IAAI,iBAAO,EAAa,CAAC;QACtD,oBAAe,GAA2B,IAAI,iBAAO,EAAiB,CAAC;QACvE,mBAAc,GAA8B,IAAI,iBAAO,EAAmB,CAAC;QAC3E,qBAAgB,GAAoB,IAAI,iBAAO,EAAU,CAAC;QAC1D,gBAAW,GAA4B,IAAI,iBAAO,EAAkB,CAAC;QACrE,2BAAsB,GAAuC,IAAI,iBAAO,EAA6B,CAAC;QACtG,+BAA0B,GAA4C,IAAI,iBAAO,EAAkC,CAAC;QACpH,qBAAgB,GAAiC,IAAI,iBAAO,EAAuB,CAAC;QACpF,mBAAc,GAA+B,IAAI,iBAAO,EAAqB,CAAC;QAC9E,4BAAuB,GAAwC,IAAI,iBAAO,EAA8B,CAAC;QACzG,mBAAc,GAA+B,IAAI,iBAAO,EAAqB,CAAC;QAC9E,mBAAc,GAA+B,IAAI,iBAAO,EAAqB,CAAC;QAC9E,oBAAe,GAAgC,IAAI,iBAAO,EAAsB,CAAC;IACrF,CAAC;CAAA;AApBD,oCAoBC"}

View File

@@ -1,10 +0,0 @@
/// <reference types="node" />
export declare class Color4 {
red: number | Buffer;
green: number;
blue: number | boolean;
alpha: number | boolean;
static black: Color4;
static white: Color4;
constructor(red: number | Buffer, green: number, blue: number | boolean, alpha?: number | boolean);
}

View File

@@ -1,43 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class Color4 {
constructor(red, green, blue, alpha = 0) {
this.red = red;
this.green = green;
this.blue = blue;
this.alpha = alpha;
if (red instanceof Buffer && typeof blue === 'boolean') {
const buf = red;
const pos = green;
const inverted = blue;
let alphaInverted = false;
if (typeof alpha === 'boolean' && alpha === true) {
alphaInverted = true;
}
this.red = 0.0;
this.green = 0.0;
this.blue = 0.0;
this.alpha = 0.0;
const quanta = 1.0 / 255.0;
if (inverted) {
this.red = (255 - buf[pos]) * quanta;
this.green = (255 - buf[pos + 1]) * quanta;
this.blue = (255 - buf[pos + 2]) * quanta;
this.alpha = (255 - buf[pos + 3]) * quanta;
}
else {
this.red = buf[pos] * quanta;
this.green = buf[pos + 1] * quanta;
this.blue = buf[pos + 2] * quanta;
this.alpha = buf[pos + 3] * quanta;
}
if (alphaInverted) {
this.alpha = 1.0 - this.alpha;
}
}
}
}
Color4.black = new Color4(0.0, 0.0, 0.0, 1.0);
Color4.white = new Color4(1.0, 1.0, 1.0, 1.0);
exports.Color4 = Color4;
//# sourceMappingURL=Color4.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Color4.js","sourceRoot":"","sources":["../../lib/classes/Color4.ts"],"names":[],"mappings":";;AAAA,MAAa,MAAM;IAKf,YAAmB,GAAoB,EAAS,KAAa,EAAS,IAAsB,EAAS,QAA0B,CAAC;QAA7G,QAAG,GAAH,GAAG,CAAiB;QAAS,UAAK,GAAL,KAAK,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAkB;QAAS,UAAK,GAAL,KAAK,CAAsB;QAE5H,IAAI,GAAG,YAAY,MAAM,IAAI,OAAO,IAAI,KAAK,SAAS,EACtD;YACI,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,GAAG,GAAG,KAAK,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAChD;gBACI,aAAa,GAAG,IAAI,CAAC;aACxB;YAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YAEjB,MAAM,MAAM,GAAW,GAAG,GAAG,KAAK,CAAC;YACnC,IAAI,QAAQ,EACZ;gBACI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;gBACrC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC3C,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;aAC9C;iBAED;gBACI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBAC7B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;gBACnC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;gBAClC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;aACtC;YACD,IAAI,aAAa,EACjB;gBACI,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;aACjC;SACJ;IACL,CAAC;;AAzCM,YAAK,GAAW,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/C,YAAK,GAAW,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAH1D,wBA4CC"}

View File

@@ -1,10 +0,0 @@
import { Circuit } from './Circuit';
import { Agent } from './Agent';
import { ClientEvents } from './ClientEvents';
export declare class Comms {
private circuit;
private agent;
private clientEvents;
constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents);
shutdown(): void;
}

269
dist/classes/Comms.js vendored
View File

@@ -1,269 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Message_1 = require("../enums/Message");
const Utils_1 = require("./Utils");
const InstantMessageDialog_1 = require("../enums/InstantMessageDialog");
const __1 = require("..");
class Comms {
constructor(circuit, agent, clientEvents) {
this.clientEvents = clientEvents;
this.circuit = circuit;
this.agent = agent;
this.circuit.subscribeToMessages([
Message_1.Message.ImprovedInstantMessage,
Message_1.Message.ChatFromSimulator,
Message_1.Message.AlertMessage,
Message_1.Message.ScriptDialog
], (packet) => {
switch (packet.message.id) {
case Message_1.Message.ImprovedInstantMessage:
const im = packet.message;
switch (im.MessageBlock.Dialog) {
case InstantMessageDialog_1.InstantMessageDialog.MessageFromAgent:
{
const imEvent = new __1.InstantMessageEvent();
imEvent.source = __1.ChatSourceType.Agent;
imEvent.from = im.AgentData.AgentID;
imEvent.owner = im.AgentData.AgentID;
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
imEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
imEvent.flags = __1.InstantMessageEventFlags.normal;
this.clientEvents.onInstantMessage.next(imEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.MessageBox:
break;
case InstantMessageDialog_1.InstantMessageDialog.GroupInvitation:
const giEvent = new __1.GroupInviteEvent();
giEvent.from = im.AgentData.AgentID;
giEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
giEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
giEvent.inviteID = im.MessageBlock.ID;
this.clientEvents.onGroupInvite.next(giEvent);
break;
case InstantMessageDialog_1.InstantMessageDialog.InventoryOffered:
{
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
const ioEvent = new __1.InventoryOfferedEvent();
ioEvent.from = im.AgentData.AgentID;
ioEvent.fromName = fromName;
ioEvent.message = message;
ioEvent.requestID = im.MessageBlock.ID;
ioEvent.source = __1.ChatSourceType.Agent;
this.clientEvents.onInventoryOffered.next(ioEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.InventoryAccepted:
break;
case InstantMessageDialog_1.InstantMessageDialog.InventoryDeclined:
break;
case InstantMessageDialog_1.InstantMessageDialog.TaskInventoryOffered:
{
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
const ioEvent = new __1.InventoryOfferedEvent();
ioEvent.from = im.AgentData.AgentID;
ioEvent.fromName = fromName;
ioEvent.message = message;
ioEvent.requestID = im.MessageBlock.ID;
ioEvent.source = __1.ChatSourceType.Object;
ioEvent.type = im.MessageBlock.BinaryBucket.readUInt8(0);
this.clientEvents.onInventoryOffered.next(ioEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.TaskInventoryAccepted:
break;
case InstantMessageDialog_1.InstantMessageDialog.TaskInventoryDeclined:
break;
case InstantMessageDialog_1.InstantMessageDialog.MessageFromObject:
{
const imEvent = new __1.InstantMessageEvent();
imEvent.source = __1.ChatSourceType.Object;
imEvent.owner = im.AgentData.AgentID;
imEvent.from = im.MessageBlock.ID;
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
imEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
imEvent.flags = __1.InstantMessageEventFlags.normal;
this.clientEvents.onInstantMessage.next(imEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.BusyAutoResponse:
{
const imEvent = new __1.InstantMessageEvent();
imEvent.source = __1.ChatSourceType.Agent;
imEvent.from = im.AgentData.AgentID;
imEvent.owner = im.AgentData.AgentID;
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
imEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
imEvent.flags = __1.InstantMessageEventFlags.busyResponse;
this.clientEvents.onInstantMessage.next(imEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.ConsoleAndChatHistory:
break;
case InstantMessageDialog_1.InstantMessageDialog.RequestTeleport:
const lureEvent = new __1.LureEvent();
const extraData = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.BinaryBucket).split('|');
lureEvent.from = im.AgentData.AgentID;
lureEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
lureEvent.lureMessage = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
lureEvent.regionID = im.MessageBlock.RegionID;
lureEvent.position = im.MessageBlock.Position;
lureEvent.lureID = im.MessageBlock.ID;
lureEvent.gridX = parseInt(extraData[0], 10);
lureEvent.gridY = parseInt(extraData[1], 10);
this.clientEvents.onLure.next(lureEvent);
break;
case InstantMessageDialog_1.InstantMessageDialog.AcceptTeleport:
break;
case InstantMessageDialog_1.InstantMessageDialog.DenyTeleport:
break;
case InstantMessageDialog_1.InstantMessageDialog.RequestLure:
break;
case InstantMessageDialog_1.InstantMessageDialog.GotoUrl:
break;
case InstantMessageDialog_1.InstantMessageDialog.FromTaskAsAlert:
break;
case InstantMessageDialog_1.InstantMessageDialog.GroupNotice:
break;
case InstantMessageDialog_1.InstantMessageDialog.GroupNoticeInventoryAccepted:
break;
case InstantMessageDialog_1.InstantMessageDialog.GroupNoticeInventoryDeclined:
break;
case InstantMessageDialog_1.InstantMessageDialog.GroupInvitationAccept:
break;
case InstantMessageDialog_1.InstantMessageDialog.GroupInvitationDecline:
break;
case InstantMessageDialog_1.InstantMessageDialog.GroupNoticeRequested:
break;
case InstantMessageDialog_1.InstantMessageDialog.FriendshipOffered:
{
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
const frEvent = new __1.FriendRequestEvent();
frEvent.from = im.AgentData.AgentID;
frEvent.fromName = fromName;
frEvent.message = message;
frEvent.requestID = im.MessageBlock.ID;
this.clientEvents.onFriendRequest.next(frEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.FriendshipAccepted:
{
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
const frEvent = new __1.FriendResponseEvent();
frEvent.from = im.AgentData.AgentID;
frEvent.fromName = fromName;
frEvent.message = message;
frEvent.requestID = im.MessageBlock.ID;
frEvent.accepted = true;
this.clientEvents.onFriendResponse.next(frEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.FriendshipDeclined:
{
const fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
const message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
const frEvent = new __1.FriendResponseEvent();
frEvent.from = im.AgentData.AgentID;
frEvent.fromName = fromName;
frEvent.message = message;
frEvent.requestID = im.MessageBlock.ID;
frEvent.accepted = false;
this.clientEvents.onFriendResponse.next(frEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.StartTyping:
{
const imEvent = new __1.InstantMessageEvent();
imEvent.source = __1.ChatSourceType.Agent;
imEvent.from = im.AgentData.AgentID;
imEvent.owner = im.AgentData.AgentID;
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
imEvent.message = '';
imEvent.flags = __1.InstantMessageEventFlags.startTyping;
this.clientEvents.onInstantMessage.next(imEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.StopTyping:
{
const imEvent = new __1.InstantMessageEvent();
imEvent.source = __1.ChatSourceType.Agent;
imEvent.from = im.AgentData.AgentID;
imEvent.owner = im.AgentData.AgentID;
imEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
imEvent.message = '';
imEvent.flags = __1.InstantMessageEventFlags.finishTyping;
this.clientEvents.onInstantMessage.next(imEvent);
break;
}
case InstantMessageDialog_1.InstantMessageDialog.SessionSend:
{
const groupChatEvent = new __1.GroupChatEvent();
groupChatEvent.from = im.AgentData.AgentID;
groupChatEvent.fromName = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.FromAgentName);
groupChatEvent.groupID = im.MessageBlock.ID;
groupChatEvent.message = Utils_1.Utils.BufferToStringSimple(im.MessageBlock.Message);
this.clientEvents.onGroupChat.next(groupChatEvent);
break;
}
}
break;
case Message_1.Message.ChatFromSimulator:
{
const chat = packet.message;
const event = new __1.ChatEvent();
event.fromName = Utils_1.Utils.BufferToStringSimple(chat.ChatData.FromName);
event.message = Utils_1.Utils.BufferToStringSimple(chat.ChatData.Message);
event.from = chat.ChatData.SourceID;
event.ownerID = chat.ChatData.OwnerID;
event.chatType = chat.ChatData.ChatType;
event.sourceType = chat.ChatData.SourceType;
event.audible = chat.ChatData.Audible;
event.position = chat.ChatData.Position;
this.clientEvents.onNearbyChat.next(event);
break;
}
case Message_1.Message.AlertMessage:
{
const alertm = packet.message;
const alertMessage = Utils_1.Utils.BufferToStringSimple(alertm.AlertData.Message);
console.log('Alert message: ' + alertMessage);
alertm.AlertInfo.forEach((info) => {
const alertInfoMessage = Utils_1.Utils.BufferToStringSimple(info.Message);
console.log('Alert info message: ' + alertInfoMessage);
});
break;
}
case Message_1.Message.ScriptDialog:
{
const scriptd = packet.message;
const event = new __1.ScriptDialogEvent();
event.ObjectID = scriptd.Data.ObjectID;
event.FirstName = Utils_1.Utils.BufferToStringSimple(scriptd.Data.FirstName);
event.LastName = Utils_1.Utils.BufferToStringSimple(scriptd.Data.LastName);
event.ObjectName = Utils_1.Utils.BufferToStringSimple(scriptd.Data.ObjectName);
event.Message = Utils_1.Utils.BufferToStringSimple(scriptd.Data.Message);
event.ChatChannel = scriptd.Data.ChatChannel;
event.ImageID = scriptd.Data.ImageID;
event.Buttons = [];
event.Owners = [];
for (const button of scriptd.Buttons) {
event.Buttons.push(Utils_1.Utils.BufferToStringSimple(button.ButtonLabel));
}
for (const owner of scriptd.OwnerData) {
event.Owners.push(owner.OwnerID);
}
this.clientEvents.onScriptDialog.next(event);
break;
}
}
});
}
shutdown() {
}
}
exports.Comms = Comms;
//# sourceMappingURL=Comms.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,17 +0,0 @@
import { Caps } from './Caps';
import * as request from 'request';
import { ClientEvents } from './ClientEvents';
import { Agent } from './Agent';
export declare class EventQueueClient {
caps: Caps;
ack?: number;
done: boolean;
currentRequest: request.Request | null;
private clientEvents;
private agent;
constructor(agent: Agent, caps: Caps, clientEvents: ClientEvents);
shutdown(): void;
Get(): void;
request(url: string, data: string, contentType: string): Promise<string>;
capsRequestXML(capability: string, data: any, attempt?: number): Promise<any>;
}

View File

@@ -1,255 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const LLSD = require("@caspertech/llsd");
const request = require("request");
const Long = require("long");
const IPAddress_1 = require("./IPAddress");
const TeleportEventType_1 = require("../enums/TeleportEventType");
const UUID_1 = require("./UUID");
const __1 = require("..");
class EventQueueClient {
constructor(agent, caps, clientEvents) {
this.done = false;
this.currentRequest = null;
this.agent = agent;
this.clientEvents = clientEvents;
this.caps = caps;
this.Get();
const state = new __1.EventQueueStateChangeEvent();
state.active = true;
this.clientEvents.onEventQueueStateChange.next(state);
}
shutdown() {
this.done = true;
if (this.currentRequest !== null) {
this.currentRequest.abort();
}
const req = {
'ack': this.ack,
'done': true
};
this.capsRequestXML('EventQueueGet', req).then((data) => {
const state = new __1.EventQueueStateChangeEvent();
state.active = false;
this.clientEvents.onEventQueueStateChange.next(state);
});
}
Get() {
const req = {
'ack': this.ack,
'done': this.done
};
const startTime = new Date().getTime();
this.capsRequestXML('EventQueueGet', req).then((data) => {
if (data['id']) {
this.ack = data['id'];
}
else {
this.ack = undefined;
}
try {
if (data['events']) {
data['events'].forEach((event) => {
try {
if (event['message']) {
switch (event['message']) {
case 'EnableSimulator':
break;
case 'ParcelProperties':
break;
case 'AgentGroupDataUpdate':
break;
case 'AgentStateUpdate':
break;
case 'TeleportFailed':
{
const tpEvent = new __1.TeleportEvent();
tpEvent.message = event['body']['Info'][0]['Reason'];
tpEvent.eventType = TeleportEventType_1.TeleportEventType.TeleportFailed;
tpEvent.simIP = '';
tpEvent.simPort = 0;
tpEvent.seedCapability = '';
this.clientEvents.onTeleportEvent.next(tpEvent);
break;
}
case "ChatterBoxSessionStartReply":
{
if (event['body']) {
const gcsje = new __1.GroupChatSessionJoinEvent();
gcsje.sessionID = new UUID_1.UUID(event['body']['session_id'].toString());
gcsje.success = event['body']['success'];
if (gcsje.success) {
this.agent.addChatSession(gcsje.sessionID);
}
this.clientEvents.onGroupChatSessionJoin.next(gcsje);
}
break;
}
case 'ChatterBoxInvitation':
{
if (event['body'] && event['body']['instantmessage'] && event['body']['instantmessage']['message_params'] && event['body']['instantmessage']['message_params']['id']) {
const messageParams = event['body']['instantmessage']['message_params'];
const imSessionID = messageParams['id'];
const groupChatEvent = new __1.GroupChatEvent();
groupChatEvent.from = new UUID_1.UUID(messageParams['from_id'].toString());
groupChatEvent.fromName = messageParams['from_name'];
groupChatEvent.groupID = new UUID_1.UUID(messageParams['id'].toString());
groupChatEvent.message = messageParams['message'];
const requestedFolders = {
'method': 'accept invitation',
'session-id': imSessionID
};
this.caps.capsRequestXML('ChatSessionRequest', requestedFolders).then((ignore) => {
this.agent.addChatSession(groupChatEvent.groupID);
const gcsje = new __1.GroupChatSessionJoinEvent();
gcsje.sessionID = groupChatEvent.groupID;
gcsje.success = true;
this.clientEvents.onGroupChatSessionJoin.next(gcsje);
this.clientEvents.onGroupChat.next(groupChatEvent);
}).catch((err) => {
console.error(err);
});
}
break;
}
case 'ChatterBoxSessionAgentListUpdates':
{
if (event['body']) {
if (event['body']['agent_updates']) {
Object.keys(event['body']['agent_updates']).forEach((agentUpdate) => {
const updObj = event['body']['agent_updates'][agentUpdate];
const gcsale = new __1.GroupChatSessionAgentListEvent();
gcsale.agentID = new UUID_1.UUID(agentUpdate);
gcsale.groupID = new UUID_1.UUID(event['body']['session_id'].toString());
gcsale.canVoiceChat = false;
gcsale.isModerator = false;
gcsale.entered = (updObj['transition'] === 'ENTER');
if (updObj['can_voice_chat'] === true) {
gcsale.canVoiceChat = true;
}
if (updObj['is_moderator'] === true) {
gcsale.isModerator = true;
}
this.clientEvents.onGroupChatAgentListUpdate.next(gcsale);
});
}
}
break;
}
case 'ObjectPhysicsProperties':
{
break;
}
case 'TeleportFinish':
{
const info = event['body']['Info'][0];
if (info['LocationID']) {
info['LocationID'] = Buffer.from(info['LocationID'].toArray()).readUInt32LE(0);
const regionHandleBuf = Buffer.from(info['RegionHandle'].toArray());
info['RegionHandle'] = new Long(regionHandleBuf.readUInt32LE(0), regionHandleBuf.readUInt32LE(4), true);
info['SimIP'] = new IPAddress_1.IPAddress(Buffer.from(info['SimIP'].toArray()), 0).toString();
info['TeleportFlags'] = Buffer.from(info['TeleportFlags'].toArray()).readUInt32LE(0);
const tpEvent = new __1.TeleportEvent();
tpEvent.message = '';
tpEvent.eventType = TeleportEventType_1.TeleportEventType.TeleportCompleted;
tpEvent.simIP = info['SimIP'];
tpEvent.simPort = info['SimPort'];
tpEvent.seedCapability = info['SeedCapability'];
this.clientEvents.onTeleportEvent.next(tpEvent);
}
break;
}
default:
console.log('Unhandled event:');
console.log(JSON.stringify(event, null, 4));
}
}
}
catch (erro) {
console.error('Error handling cap');
console.error(erro);
}
});
}
}
catch (error) {
console.error(error);
}
if (!this.done) {
this.Get();
}
}).catch((err) => {
const time = (new Date().getTime()) - startTime;
if (time > 30000) {
if (!this.done) {
this.Get();
}
}
else {
if (!this.done) {
console.error('Event queue aborted after ' + time + 'ms. Reconnecting in 5 seconds');
setTimeout(() => {
if (!this.done) {
this.Get();
}
}, 5000);
}
}
});
}
request(url, data, contentType) {
return new Promise((resolve, reject) => {
this.currentRequest = request({
'headers': {
'Content-Length': data.length,
'Content-Type': contentType
},
'uri': url,
'body': data,
'rejectUnauthorized': false,
'method': 'POST',
'timeout': 1800000
}, (err, res, body) => {
this.currentRequest = null;
if (err) {
reject(err);
}
else {
resolve(body);
}
});
});
}
capsRequestXML(capability, data, attempt = 0) {
return new Promise((resolve, reject) => {
this.caps.getCapability(capability).then((url) => {
const serializedData = LLSD.LLSD.formatXML(data);
this.request(url, serializedData, 'application/llsd+xml').then((body) => {
try {
if (body.indexOf('<llsd>') !== -1) {
const parsed = LLSD.LLSD.parseXML(body);
resolve(parsed);
}
else {
if (attempt < 3 && capability !== 'EventQueueGet') {
return this.capsRequestXML(capability, data, ++attempt);
}
else {
reject(new Error('Not an LLSD response, capability: ' + capability));
}
}
}
catch (error) {
reject(error);
}
}).catch((err) => {
reject(err);
});
}).catch((err) => {
reject(err);
});
});
}
}
exports.EventQueueClient = EventQueueClient;
//# sourceMappingURL=EventQueueClient.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,104 +0,0 @@
/// <reference types="node" />
import { Vector3 } from './Vector3';
import { UUID } from './UUID';
import { Quaternion } from './Quaternion';
import { Tree } from '../enums/Tree';
import { SoundFlags } from '..';
import { Vector4 } from './Vector4';
import { TextureEntry } from './TextureEntry';
import { Color4 } from './Color4';
import { ParticleSystem } from './ParticleSystem';
import { ITreeBoundingBox } from './interfaces/ITreeBoundingBox';
import { NameValue } from './NameValue';
import { PCode } from '../enums/PCode';
import * as Long from 'long';
export declare class GameObject {
creatorID?: UUID;
creationDate?: Long;
baseMask?: number;
ownerMask?: number;
groupMask?: number;
everyoneMask?: number;
nextOwnerMask?: number;
ownershipCost?: number;
saleType?: number;
salePrice?: number;
aggregatePerms?: number;
aggregatePermTextures?: number;
aggregatePermTexturesOwner?: number;
category: number;
inventorySerial: number;
itemID: UUID;
folderID: UUID;
fromTaskID: UUID;
lastOwnerID: UUID;
name?: string;
description?: string;
touchName?: string;
sitName?: string;
textureID?: string;
resolvedAt?: number;
totalChildren?: number;
children?: GameObject[];
rtreeEntry?: ITreeBoundingBox;
ID: number;
FullID: UUID;
ParentID: number;
OwnerID: UUID;
IsAttachment: boolean;
NameValue: {
[key: string]: NameValue;
};
PCode: PCode;
State?: number;
CRC?: number;
Material?: number;
ClickAction?: number;
Scale?: Vector3;
ObjectData?: Buffer;
UpdateFlags?: number;
Flags?: number;
PathCurve?: number;
ProfileCurve?: number;
PathBegin?: number;
PathEnd?: number;
PathScaleX?: number;
PathScaleY?: number;
PathShearX?: number;
PathShearY?: number;
PathTwist?: number;
PathTwistBegin?: number;
PathRadiusOffset?: number;
PathTaperX?: number;
PathTaperY?: number;
PathRevolutions?: number;
PathSkew?: number;
ProfileBegin?: number;
ProfileEnd?: number;
ProfileHollow?: number;
TextureEntry?: TextureEntry;
TextureAnim?: Buffer;
Data?: Buffer;
Text?: string;
TextColor?: Color4;
MediaURL?: string;
PSBlock?: Buffer;
JointType?: number;
JointPivot?: Vector3;
JointAxisOrAnchor?: Vector3;
Position?: Vector3;
Rotation?: Quaternion;
CollisionPlane?: Vector4;
Velocity?: Vector3;
Acceleration?: Vector3;
AngularVelocity?: Vector3;
TreeSpecies?: Tree;
Sound?: UUID;
SoundGain?: number;
SoundFlags?: SoundFlags;
SoundRadius?: number;
Particles?: ParticleSystem;
constructor();
hasNameValueEntry(key: string): boolean;
getNameValueEntry(key: string): string;
}

View File

@@ -1,36 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Vector3_1 = require("./Vector3");
const UUID_1 = require("./UUID");
const Quaternion_1 = require("./Quaternion");
const PCode_1 = require("../enums/PCode");
class GameObject {
constructor() {
this.ID = 0;
this.FullID = UUID_1.UUID.random();
this.ParentID = 0;
this.OwnerID = UUID_1.UUID.zero();
this.IsAttachment = false;
this.NameValue = {};
this.PCode = PCode_1.PCode.None;
this.Position = Vector3_1.Vector3.getZero();
this.Rotation = Quaternion_1.Quaternion.getIdentity();
this.AngularVelocity = Vector3_1.Vector3.getZero();
this.TreeSpecies = 0;
this.SoundFlags = 0;
this.SoundRadius = 1.0;
this.SoundGain = 1.0;
this.ParentID = 0;
}
hasNameValueEntry(key) {
return this.NameValue[key] !== undefined;
}
getNameValueEntry(key) {
if (this.NameValue[key]) {
return this.NameValue[key].value;
}
return '';
}
}
exports.GameObject = GameObject;
//# sourceMappingURL=GameObject.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GameObject.js","sourceRoot":"","sources":["../../lib/classes/GameObject.ts"],"names":[],"mappings":";;AAAA,uCAAkC;AAClC,iCAA4B;AAC5B,6CAAwC;AASxC,0CAAqC;AAIrC,MAAa,UAAU;IAyFnB;QAzDA,OAAE,GAAG,CAAC,CAAC;QACP,WAAM,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QACvB,aAAQ,GAAG,CAAC,CAAC;QACb,YAAO,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACtB,iBAAY,GAAG,KAAK,CAAC;QACrB,cAAS,GAA+B,EAAE,CAAC;QAC3C,UAAK,GAAU,aAAK,CAAC,IAAI,CAAC;QAqDtB,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,uBAAU,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACvB;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAlHD,gCAkHC"}

View File

@@ -1,20 +0,0 @@
import { UUID } from './UUID';
import { NameValue } from './NameValue';
import { PCode } from '../enums/PCode';
import { ITreeBoundingBox } from './interfaces/ITreeBoundingBox';
export declare class GameObjectBase {
name?: string;
description?: string;
rtreeEntry?: ITreeBoundingBox;
ID: number;
FullID: UUID;
ParentID: number;
OwnerID: UUID;
IsAttachment: boolean;
NameValue: {
[key: string]: NameValue;
};
PCode: PCode;
hasNameValueEntry(key: string): boolean;
getNameValueEntry(key: string): string;
}

View File

@@ -1,26 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const UUID_1 = require("./UUID");
const PCode_1 = require("../enums/PCode");
class GameObjectBase {
constructor() {
this.ID = 0;
this.FullID = UUID_1.UUID.random();
this.ParentID = 0;
this.OwnerID = UUID_1.UUID.zero();
this.IsAttachment = false;
this.NameValue = {};
this.PCode = PCode_1.PCode.None;
}
hasNameValueEntry(key) {
return this.NameValue[key] !== undefined;
}
getNameValueEntry(key) {
if (this.NameValue[key]) {
return this.NameValue[key].value;
}
return '';
}
}
exports.GameObjectBase = GameObjectBase;
//# sourceMappingURL=GameObjectBase.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GameObjectBase.js","sourceRoot":"","sources":["../../lib/classes/GameObjectBase.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAE5B,0CAAqC;AAGrC,MAAa,cAAc;IAA3B;QAKI,OAAE,GAAG,CAAC,CAAC;QACP,WAAM,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QACvB,aAAQ,GAAG,CAAC,CAAC;QACb,YAAO,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACtB,iBAAY,GAAG,KAAK,CAAC;QACrB,cAAS,GAA+B,EAAE,CAAC;QAC3C,UAAK,GAAU,aAAK,CAAC,IAAI,CAAC;IAe9B,CAAC;IAbG,iBAAiB,CAAC,GAAW;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACvB;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AA1BD,wCA0BC"}

View File

@@ -1,77 +0,0 @@
/// <reference types="node" />
import { Vector3 } from './Vector3';
import { UUID } from './UUID';
import { PCode } from '../enums/PCode';
import { Quaternion } from './Quaternion';
import { Tree } from '../enums/Tree';
import { NameValue } from './NameValue';
import { IGameObject } from './interfaces/IGameObject';
import { SoundFlags } from '..';
import { ITreeBoundingBox } from './interfaces/ITreeBoundingBox';
import { Vector4 } from './Vector4';
import { TextureEntry } from './TextureEntry';
import { Color4 } from './Color4';
import { ParticleSystem } from './ParticleSystem';
export declare class GameObjectFull implements IGameObject {
rtreeEntry?: ITreeBoundingBox;
ID: number;
State: number;
FullID: UUID;
CRC: number;
PCode: PCode;
Material: number;
ClickAction: number;
Scale: Vector3;
ObjectData: Buffer;
ParentID: number;
UpdateFlags: number;
Flags: number;
PathCurve: number;
ProfileCurve: number;
PathBegin: number;
PathEnd: number;
PathScaleX: number;
PathScaleY: number;
PathShearX: number;
PathShearY: number;
PathTwist: number;
PathTwistBegin: number;
PathRadiusOffset: number;
PathTaperX: number;
PathTaperY: number;
PathRevolutions: number;
PathSkew: number;
ProfileBegin: number;
ProfileEnd: number;
ProfileHollow: number;
TextureEntry: TextureEntry;
TextureAnim: Buffer;
Data: Buffer;
Text: string;
TextColor: Color4;
MediaURL: string;
PSBlock: Buffer;
OwnerID: UUID;
JointType: number;
JointPivot: Vector3;
JointAxisOrAnchor: Vector3;
Position: Vector3;
Rotation: Quaternion;
CollisionPlane: Vector4;
Velocity: Vector3;
Acceleration: Vector3;
AngularVelocity: Vector3;
TreeSpecies: Tree;
Sound: UUID;
SoundGain: number;
SoundFlags: SoundFlags;
SoundRadius: number;
IsAttachment: boolean;
NameValue: {
[key: string]: NameValue;
};
Particles: ParticleSystem;
constructor();
hasNameValueEntry(key: string): boolean;
getNameValueEntry(key: string): string;
}

View File

@@ -1,32 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Vector3_1 = require("./Vector3");
const Quaternion_1 = require("./Quaternion");
class GameObjectFull {
constructor() {
this.Position = Vector3_1.Vector3.getZero();
this.Rotation = Quaternion_1.Quaternion.getIdentity();
this.IsAttachment = false;
this.NameValue = {};
this.AngularVelocity = Vector3_1.Vector3.getZero();
this.TreeSpecies = 0;
this.SoundFlags = 0;
this.SoundRadius = 1.0;
this.SoundGain = 1.0;
this.ParentID = 0;
}
hasNameValueEntry(key) {
if (this.NameValue['AttachItemID']) {
return true;
}
return false;
}
getNameValueEntry(key) {
if (this.NameValue['AttachItemID']) {
return this.NameValue['AttachItemID'].value;
}
return '';
}
}
exports.GameObjectFull = GameObjectFull;
//# sourceMappingURL=GameObjectFull.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GameObjectFull.js","sourceRoot":"","sources":["../../lib/classes/GameObjectFull.ts"],"names":[],"mappings":";;AAAA,uCAAkC;AAGlC,6CAAwC;AAWxC,MAAa,cAAc;IA0DvB;QAEI,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,uBAAU,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAClC;YACI,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAClC;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;SAC/C;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAzFD,wCAyFC"}

View File

@@ -1,20 +0,0 @@
import { UUID } from './UUID';
import { IGameObject } from './interfaces/IGameObject';
import { NameValue } from './NameValue';
import { PCode } from '../enums/PCode';
import { ITreeBoundingBox } from './interfaces/ITreeBoundingBox';
export declare class GameObjectLite implements IGameObject {
rtreeEntry?: ITreeBoundingBox;
ID: number;
FullID: UUID;
ParentID: number;
OwnerID: UUID;
IsAttachment: boolean;
NameValue: {
[key: string]: NameValue;
};
PCode: PCode;
constructor();
hasNameValueEntry(key: string): boolean;
getNameValueEntry(key: string): string;
}

View File

@@ -1,18 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class GameObjectLite {
constructor() {
this.IsAttachment = false;
}
hasNameValueEntry(key) {
return this.NameValue['AttachItemID'] !== undefined;
}
getNameValueEntry(key) {
if (this.NameValue['AttachItemID']) {
return this.NameValue['AttachItemID'].value;
}
return '';
}
}
exports.GameObjectLite = GameObjectLite;
//# sourceMappingURL=GameObjectLite.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GameObjectLite.js","sourceRoot":"","sources":["../../lib/classes/GameObjectLite.ts"],"names":[],"mappings":";;AAMA,MAAa,cAAc;IAUvB;QAEI,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC;IACxD,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAClC;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;SAC/C;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AA5BD,wCA4BC"}

View File

@@ -1,9 +0,0 @@
import { UUID } from './UUID';
import * as Long from 'long';
export declare class GroupMember {
AgentID: UUID;
OnlineStatus: string;
AgentPowers: Long;
Title: string;
IsOwner: boolean;
}

View File

@@ -1,6 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class GroupMember {
}
exports.GroupMember = GroupMember;
//# sourceMappingURL=GroupMember.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GroupMember.js","sourceRoot":"","sources":["../../lib/classes/GroupMember.ts"],"names":[],"mappings":";;AAGA,MAAa,WAAW;CAOvB;AAPD,kCAOC"}

View File

@@ -1,10 +0,0 @@
import { UUID } from './UUID';
import * as Long from 'long';
export declare class GroupRole {
RoleID: UUID;
Name: string;
Title: string;
Description: string;
Powers: Long;
Members: number;
}

View File

@@ -1,6 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class GroupRole {
}
exports.GroupRole = GroupRole;
//# sourceMappingURL=GroupRole.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"GroupRole.js","sourceRoot":"","sources":["../../lib/classes/GroupRole.ts"],"names":[],"mappings":";;AAGA,MAAa,SAAS;CAQrB;AARD,8BAQC"}

View File

@@ -1,8 +0,0 @@
/// <reference types="node" />
export declare class IPAddress {
ip: any;
static zero(): IPAddress;
toString: () => string;
constructor(buf?: Buffer | string, pos?: number);
writeToBuffer(buf: Buffer, pos: number): void;
}

View File

@@ -1,55 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const ipaddr = require('ipaddr.js');
class IPAddress {
constructor(buf, pos) {
this.ip = null;
this.toString = () => {
try {
return this.ip.toString();
}
catch (ignore) {
return '';
}
};
try {
if (buf !== undefined && buf instanceof Buffer) {
if (pos !== undefined) {
const bytes = buf.slice(pos, 4);
this.ip = ipaddr.fromByteArray(bytes);
}
else {
if (ipaddr.isValid(buf)) {
this.ip = ipaddr.parse(buf);
}
else {
throw new Error('Invalid IP address');
}
}
}
else {
if (ipaddr.isValid(buf)) {
this.ip = ipaddr.parse(buf);
}
else {
throw new Error('Invalid IP address');
}
}
}
catch (ignore) {
this.ip = ipaddr.parse('0.0.0.0');
}
}
static zero() {
return new IPAddress('0.0.0.0');
}
writeToBuffer(buf, pos) {
const bytes = this.ip.toByteArray();
buf.writeUInt8(bytes[0], pos++);
buf.writeUInt8(bytes[1], pos++);
buf.writeUInt8(bytes[2], pos++);
buf.writeUInt8(bytes[3], pos);
}
}
exports.IPAddress = IPAddress;
//# sourceMappingURL=IPAddress.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"IPAddress.js","sourceRoot":"","sources":["../../lib/classes/IPAddress.ts"],"names":[],"mappings":";;AAAA,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEpC,MAAa,SAAS;IAmBlB,YAAY,GAAqB,EAAE,GAAY;QAjB/C,OAAE,GAAQ,IAAI,CAAC;QAMR,aAAQ,GAAG,GAAW,EAAE;YAE3B,IACA;gBACI,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;aAC7B;YACD,OAAO,MAAM,EACb;gBACI,OAAO,EAAE,CAAC;aACb;QACL,CAAC,CAAC;QAGE,IACA;YACI,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,YAAY,MAAM,EAC9C;gBACI,IAAI,GAAG,KAAK,SAAS,EACrB;oBACI,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBAChC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBACzC;qBAED;oBACI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EACvB;wBACI,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;qBAC/B;yBAED;wBACI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;qBACzC;iBACJ;aACJ;iBAED;gBACI,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EACvB;oBACI,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC/B;qBAED;oBACI,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;iBACzC;aACJ;SACJ;QACD,OAAO,MAAM,EACb;YACI,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACrC;IACL,CAAC;IAtDD,MAAM,CAAC,IAAI;QAEP,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAoDD,aAAa,CAAC,GAAW,EAAE,GAAW;QAElC,MAAM,KAAK,GAAe,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAChD,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;CACJ;AAnED,8BAmEC"}

View File

@@ -1,26 +0,0 @@
import { UUID } from './UUID';
import { ClientEvents } from './ClientEvents';
import { InventoryFolder } from './InventoryFolder';
import { Agent } from './Agent';
import { AssetType } from '..';
export declare class Inventory {
main: {
skeleton: {
[key: string]: InventoryFolder;
};
root?: UUID;
};
library: {
owner?: UUID;
skeleton: {
[key: string]: InventoryFolder;
};
root?: UUID;
};
private clientEvents;
private agent;
constructor(clientEvents: ClientEvents, agent: Agent);
getRootFolderLibrary(): InventoryFolder;
getRootFolderMain(): InventoryFolder;
findFolderForType(type: AssetType): UUID;
}

View File

@@ -1,59 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const UUID_1 = require("./UUID");
const InventoryFolder_1 = require("./InventoryFolder");
const __1 = require("..");
class Inventory {
constructor(clientEvents, agent) {
this.main = {
skeleton: {}
};
this.library = {
skeleton: {}
};
this.agent = agent;
this.clientEvents = clientEvents;
}
getRootFolderLibrary() {
if (this.library.root === undefined) {
return new InventoryFolder_1.InventoryFolder(this.library, this.agent);
}
const uuidStr = this.library.root.toString();
if (this.library.skeleton[uuidStr]) {
return this.library.skeleton[uuidStr];
}
else {
return new InventoryFolder_1.InventoryFolder(this.library, this.agent);
}
}
getRootFolderMain() {
if (this.main.root === undefined) {
return new InventoryFolder_1.InventoryFolder(this.main, this.agent);
}
const uuidStr = this.main.root.toString();
if (this.main.skeleton[uuidStr]) {
return this.main.skeleton[uuidStr];
}
else {
return new InventoryFolder_1.InventoryFolder(this.main, this.agent);
}
}
findFolderForType(type) {
if (this.main.root === undefined) {
return UUID_1.UUID.zero();
}
if (type === __1.AssetType.Folder) {
return this.main.root;
}
let found = UUID_1.UUID.zero();
Object.keys(this.main.skeleton).forEach((fUUID) => {
const folder = this.main.skeleton[fUUID];
if (folder.typeDefault === type) {
found = folder.folderID;
}
});
return found;
}
}
exports.Inventory = Inventory;
//# sourceMappingURL=Inventory.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Inventory.js","sourceRoot":"","sources":["../../lib/classes/Inventory.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAE5B,uDAAkD;AAElD,0BAA6B;AAE7B,MAAa,SAAS;IAkBlB,YAAY,YAA0B,EAAE,KAAY;QAhBpD,SAAI,GAGA;YACA,QAAQ,EAAE,EAAE;SACf,CAAC;QACF,YAAO,GAIH;YACA,QAAQ,EAAE,EAAE;SACf,CAAC;QAME,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IACD,oBAAoB;QAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,EACnC;YACI,OAAO,IAAI,iCAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACxD;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAClC;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACzC;aAED;YACI,OAAO,IAAI,iCAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACxD;IACL,CAAC;IACD,iBAAiB;QAEb,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAChC;YACI,OAAO,IAAI,iCAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACrD;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC/B;YACI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SACtC;aAED;YACI,OAAO,IAAI,iCAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACrD;IACL,CAAC;IACD,iBAAiB,CAAC,IAAe;QAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAChC;YACI,OAAO,WAAI,CAAC,IAAI,EAAE,CAAC;SACtB;QACD,IAAI,IAAI,KAAK,aAAS,CAAC,MAAM,EAC7B;YACI,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;SACzB;QACD,IAAI,KAAK,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAC/B;gBACI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;aAC3B;QACL,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA5ED,8BA4EC"}

View File

@@ -1,25 +0,0 @@
import { UUID } from './UUID';
import { InventoryItem } from './InventoryItem';
import { Agent } from './Agent';
import { AssetType } from '..';
export declare class InventoryFolder {
typeDefault: AssetType;
version: number;
name: string;
folderID: UUID;
parentID: UUID;
items: InventoryItem[];
cacheDir: string;
agent: Agent;
private inventoryBase;
constructor(invBase: {
skeleton: {
[key: string]: InventoryFolder;
};
root?: UUID;
}, agent: Agent);
getChildFolders(): InventoryFolder[];
private saveCache;
private loadCache;
populate(): Promise<{}>;
}

View File

@@ -1,154 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const UUID_1 = require("./UUID");
const InventoryItem_1 = require("./InventoryItem");
const fs = require("fs");
const path = require("path");
const LLSD = require("@caspertech/llsd");
const InventorySortOrder_1 = require("../enums/InventorySortOrder");
class InventoryFolder {
constructor(invBase, agent) {
this.items = [];
this.agent = agent;
this.inventoryBase = invBase;
const cacheLocation = path.resolve(__dirname + '/cache');
if (!fs.existsSync(cacheLocation)) {
fs.mkdirSync(cacheLocation, 0o777);
}
this.cacheDir = path.resolve(cacheLocation + '/' + this.agent.agentID.toString());
if (!fs.existsSync(this.cacheDir)) {
fs.mkdirSync(this.cacheDir, 0o777);
}
}
getChildFolders() {
const children = [];
const ofi = this.folderID.toString();
Object.keys(this.inventoryBase.skeleton).forEach((uuid) => {
const folder = this.inventoryBase.skeleton[uuid];
if (folder.parentID.toString() === ofi) {
children.push(folder);
}
});
return children;
}
saveCache() {
return new Promise((resolve, reject) => {
const json = {
version: this.version,
items: this.items
};
const fileName = path.join(this.cacheDir + '/' + this.folderID.toString());
fs.writeFile(fileName, JSON.stringify(json), (err) => {
if (err) {
reject(err);
}
else {
resolve();
}
});
});
}
loadCache() {
return new Promise((resolve, reject) => {
const fileName = path.join(this.cacheDir + '/' + this.folderID.toString());
if (fs.existsSync(fileName)) {
fs.readFile(fileName, (err, data) => {
if (err) {
reject(err);
}
else {
try {
const json = JSON.parse(data.toString('utf8'));
if (json['version'] >= this.version) {
this.items = [];
json['items'].forEach((item) => {
item.created = new Date(item.created.mUUID);
item.assetID = new UUID_1.UUID(item.assetID.mUUID);
item.parentID = new UUID_1.UUID(item.parentID.mUUID);
item.itemID = new UUID_1.UUID(item.itemID.mUUID);
item.permissions.lastOwner = new UUID_1.UUID(item.permissions.lastOwner.mUUID);
item.permissions.owner = new UUID_1.UUID(item.permissions.owner.mUUID);
item.permissions.creator = new UUID_1.UUID(item.permissions.creator.mUUID);
item.permissions.group = new UUID_1.UUID(item.permissions.group.mUUID);
this.items.push(item);
});
resolve();
}
else {
reject(new Error('Old version'));
}
}
catch (err) {
reject(err);
}
}
});
}
else {
reject(new Error('Cache miss'));
}
});
}
populate() {
return new Promise((resolve, reject) => {
this.loadCache().then(() => {
resolve();
}).catch((err) => {
const requestFolder = {
folder_id: new LLSD.UUID(this.folderID),
owner_id: new LLSD.UUID(this.agent.agentID),
fetch_folders: true,
fetch_items: true,
sort_order: InventorySortOrder_1.InventorySortOrder.ByName
};
const requestedFolders = {
'folders': [
requestFolder
]
};
this.agent.currentRegion.caps.capsRequestXML('FetchInventoryDescendents2', requestedFolders).then((folderContents) => {
if (folderContents['folders'] && folderContents['folders'][0] && folderContents['folders'][0]['items']) {
this.version = folderContents['folders'][0]['version'];
this.items = [];
folderContents['folders'][0]['items'].forEach((item) => {
const invItem = new InventoryItem_1.InventoryItem();
invItem.assetID = new UUID_1.UUID(item['asset_id'].toString());
invItem.inventoryType = item['inv_type'];
invItem.name = item['name'];
invItem.salePrice = item['sale_info']['sale_price'];
invItem.saleType = item['sale_info']['sale_type'];
invItem.created = new Date(item['created_at'] * 1000);
invItem.parentID = new UUID_1.UUID(item['parent_id'].toString());
invItem.flags = item['flags'];
invItem.itemID = new UUID_1.UUID(item['item_id'].toString());
invItem.description = item['desc'];
invItem.type = item['type'];
invItem.permissions = {
baseMask: item['permissions']['base_mask'],
groupMask: item['permissions']['group_mask'],
nextOwnerMask: item['permissions']['next_owner_mask'],
ownerMask: item['permissions']['owner_mask'],
everyoneMask: item['permissions']['everyone_mask'],
lastOwner: new UUID_1.UUID(item['permissions']['last_owner_id'].toString()),
owner: new UUID_1.UUID(item['permissions']['owner_id'].toString()),
creator: new UUID_1.UUID(item['permissions']['creator_id'].toString()),
group: new UUID_1.UUID(item['permissions']['group_id'].toString())
};
this.items.push(invItem);
});
this.saveCache().then(() => {
resolve();
}).catch(() => {
resolve();
});
}
else {
resolve();
}
});
});
});
}
}
exports.InventoryFolder = InventoryFolder;
//# sourceMappingURL=InventoryFolder.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,28 +0,0 @@
import { UUID } from './UUID';
import { InventoryType } from '../enums/InventoryType';
import { PermissionMask } from '../enums/PermissionMask';
import { AssetType, InventoryItemFlags } from '..';
export declare class InventoryItem {
assetID: UUID;
inventoryType: InventoryType;
name: string;
salePrice: number;
saleType: number;
created: Date;
parentID: UUID;
flags: InventoryItemFlags;
itemID: UUID;
description: string;
type: AssetType;
permissions: {
baseMask: PermissionMask;
groupMask: PermissionMask;
nextOwnerMask: PermissionMask;
ownerMask: PermissionMask;
everyoneMask: PermissionMask;
lastOwner: UUID;
owner: UUID;
creator: UUID;
group: UUID;
};
}

View File

@@ -1,10 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const UUID_1 = require("./UUID");
class InventoryItem {
constructor() {
this.assetID = UUID_1.UUID.zero();
}
}
exports.InventoryItem = InventoryItem;
//# sourceMappingURL=InventoryItem.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"InventoryItem.js","sourceRoot":"","sources":["../../lib/classes/InventoryItem.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAK5B,MAAa,aAAa;IAA1B;QAEI,YAAO,GAAS,WAAI,CAAC,IAAI,EAAE,CAAC;IAsBhC,CAAC;CAAA;AAxBD,sCAwBC"}

View File

@@ -1,6 +0,0 @@
export declare class LoginParameters {
firstName: string;
lastName: string;
password: string;
start: string;
}

View File

@@ -1,9 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class LoginParameters {
constructor() {
this.start = 'last';
}
}
exports.LoginParameters = LoginParameters;
//# sourceMappingURL=LoginParameters.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"LoginParameters.js","sourceRoot":"","sources":["../../lib/classes/LoginParameters.ts"],"names":[],"mappings":";;AAAA,MAAa,eAAe;IAA5B;QAKI,UAAK,GAAG,MAAM,CAAC;IACnB,CAAC;CAAA;AAND,0CAMC"}

View File

@@ -1,34 +0,0 @@
import { UUID } from './UUID';
import { Agent } from './Agent';
import { Region } from './Region';
import { ClientEvents } from './ClientEvents';
import { BotOptionFlags, LoginFlags } from '..';
export declare class LoginResponse {
loginFlags: LoginFlags;
loginMessage: string;
agent: Agent;
region: Region;
events: {
categories: {
categoryID: number;
categoryName: string;
}[];
};
classifieds: {
categories: {
categoryID: number;
categoryName: string;
}[];
};
textures: {
'cloudTextureID'?: UUID;
'sunTextureID'?: UUID;
'moonTextureID'?: UUID;
};
searchToken: string;
clientEvents: ClientEvents;
private static toRegionHandle;
private static parseVector3;
private static parseHome;
constructor(json: any, clientEvents: ClientEvents, options: BotOptionFlags);
}

View File

@@ -1,271 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const UUID_1 = require("./UUID");
const Agent_1 = require("./Agent");
const Region_1 = require("./Region");
const Vector3_1 = require("./Vector3");
const Long = require("long");
const InventoryFolder_1 = require("./InventoryFolder");
const __1 = require("..");
class LoginResponse {
constructor(json, clientEvents, options) {
this.events = {
categories: []
};
this.classifieds = {
categories: []
};
this.textures = {};
this.clientEvents = clientEvents;
this.agent = new Agent_1.Agent(this.clientEvents);
this.region = new Region_1.Region(this.agent, this.clientEvents, options);
if (json['agent_id']) {
this.agent.agentID = new UUID_1.UUID(json['agent_id']);
}
Object.keys(json).forEach((key) => {
const val = json[key];
switch (key) {
case 'inventory-skeleton':
val.forEach((item) => {
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.main, this.agent);
folder.typeDefault = parseInt(item['type_default'], 10);
folder.version = parseInt(item['version'], 10);
folder.name = String(item['name']);
folder.folderID = new UUID_1.UUID(item['folder_id']);
folder.parentID = new UUID_1.UUID(item['parent_id']);
this.agent.inventory.main.skeleton[folder.folderID.toString()] = folder;
});
break;
case 'inventory-skel-lib':
val.forEach((item) => {
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.library, this.agent);
folder.typeDefault = parseInt(item['type_default'], 10);
folder.version = parseInt(item['version'], 10);
folder.name = String(item['name']);
folder.folderID = new UUID_1.UUID(item['folder_id']);
folder.parentID = new UUID_1.UUID(item['parent_id']);
this.agent.inventory.library.skeleton[folder.folderID.toString()] = folder;
});
break;
case 'inventory-root':
{
this.agent.inventory.main.root = new UUID_1.UUID(val[0]['folder_id']);
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.main, this.agent);
folder.typeDefault = 0;
folder.version = 0;
folder.name = 'root';
folder.folderID = new UUID_1.UUID(val[0]['folder_id']);
folder.parentID = UUID_1.UUID.zero();
this.agent.inventory.main.skeleton[folder.folderID.toString()] = folder;
break;
}
case 'inventory-lib-owner':
this.agent.inventory.library.owner = new UUID_1.UUID(val[0]['agent_id']);
break;
case 'inventory-lib-root':
{
this.agent.inventory.library.root = new UUID_1.UUID(val[0]['folder_id']);
const folder = new InventoryFolder_1.InventoryFolder(this.agent.inventory.library, this.agent);
folder.typeDefault = 0;
folder.version = 0;
folder.name = 'root';
folder.folderID = new UUID_1.UUID(val[0]['folder_id']);
folder.parentID = UUID_1.UUID.zero();
this.agent.inventory.library.skeleton[folder.folderID.toString()] = folder;
break;
}
case 'agent_access_max':
this.agent.accessMax = String(val);
break;
case 'event_notifications':
break;
case 'secure_session_id':
this.region.circuit.secureSessionID = new UUID_1.UUID(val);
break;
case 'openid_token':
this.agent.openID.token = String(val);
break;
case 'region_x':
this.region.xCoordinate = parseInt(val, 10);
break;
case 'ao_transition':
this.agent.AOTransition = (val !== 0);
break;
case 'global-textures':
val.forEach((obj) => {
if (obj['cloud_texture_id']) {
this.textures.cloudTextureID = obj['cloud_texture_id'];
}
if (obj['sun_texture_id']) {
this.textures.sunTextureID = obj['sun_texture_id'];
}
if (obj['moon_texture_id']) {
this.textures.moonTextureID = obj['moon_texture_id'];
}
});
break;
case 'search_token':
this.searchToken = String(val);
break;
case 'login-flags':
let flags = 0;
val.forEach((obj) => {
if (obj['ever_logged_in'] === 'Y') {
flags = flags | __1.LoginFlags.everLoggedIn;
}
if (obj['daylight_savings'] === 'Y') {
flags = flags | __1.LoginFlags.daylightSavings;
}
if (obj['stipend_since_login'] === 'Y') {
flags = flags | __1.LoginFlags.stipendSinceLogin;
}
if (obj['gendered'] === 'Y') {
flags = flags | __1.LoginFlags.gendered;
}
});
this.loginFlags = flags;
break;
case 'buddy-list':
val.forEach((obj) => {
this.agent.buddyList.push({
buddyRightsGiven: obj['buddy_rights_given'] !== 0,
buddyID: new UUID_1.UUID(obj['buddy_id']),
buddyRightsHas: obj['buddy_rights_has'] !== 0,
});
});
break;
case 'sim_port':
this.region.circuit.port = parseInt(val, 10);
break;
case 'sim_ip':
this.region.circuit.ipAddress = String(val);
break;
case 'agent_appearance_service':
this.agent.agentAppearanceService = val;
break;
case 'ui-config':
val.forEach((item) => {
if (item['allow_first_life'] === 'Y') {
this.agent.uiFlags.allowFirstLife = true;
}
});
break;
case 'look_at':
this.agent.cameraLookAt = LoginResponse.parseVector3(val);
break;
case 'openid_url':
this.agent.openID.url = String(val);
break;
case 'max-agent-groups':
this.agent.maxGroups = parseInt(val, 10);
break;
case 'session_id':
this.region.circuit.sessionID = new UUID_1.UUID(val);
break;
case 'agent_flags':
this.agent.agentFlags = parseInt(val, 10);
break;
case 'event_categories':
val.forEach((item) => {
this.events.categories.push({
'categoryID': parseInt(item['category_id'], 10),
'categoryName': String(item['category_name'])
});
});
break;
case 'start_location':
this.agent.startLocation = String(val);
break;
case 'agent_region_access':
this.agent.regionAccess = String(val);
break;
case 'last_name':
this.agent.lastName = String(val);
break;
case 'cof_version':
this.agent.cofVersion = parseInt(val, 10);
break;
case 'home':
this.agent.home = LoginResponse.parseHome(val);
break;
case 'classified_categories':
val.forEach((item) => {
this.classifieds.categories.push({
'categoryID': parseInt(item['category_id'], 10),
'categoryName': String(item['category_name'])
});
});
break;
case 'snapshot_config_url':
this.agent.snapshotConfigURL = String(val);
break;
case 'region_y':
this.region.yCoordinate = parseInt(val, 10);
break;
case 'agent_access':
this.agent.agentAccess = String(val);
break;
case 'circuit_code':
this.region.circuit.circuitCode = parseInt(val, 10);
break;
case 'message':
this.loginMessage = String(val);
break;
case 'gestures':
val.forEach((item) => {
this.agent.gestures.push({
'assetID': new UUID_1.UUID(item['asset_id']),
'itemID': new UUID_1.UUID(item['item_id'])
});
});
break;
case 'udp_blacklist':
const list = String(val).split(',');
this.region.circuit.udpBlacklist = list;
break;
case 'seconds_since_epoch':
this.region.circuit.timestamp = parseInt(val, 10);
break;
case 'seed_capability':
this.region.activateCaps(String(val));
break;
case 'first_name':
this.agent.firstName = String(val).replace(/"/g, '');
break;
}
});
this.agent.setCurrentRegion(this.region);
}
static toRegionHandle(x_global, y_global) {
let x_origin = x_global;
x_origin -= x_origin % 256;
let y_origin = y_global;
y_origin -= y_origin % 256;
return new Long(x_origin, y_origin, true);
}
static parseVector3(str) {
const num = str.replace(/[\[\]]r/g, '').split(',');
const x = parseFloat(num[0]);
const y = parseFloat(num[1]);
const z = parseFloat(num[2]);
return new Vector3_1.Vector3([x, y, z]);
}
static parseHome(str) {
const result = {};
const json = str.replace(/[\[\]']/g, '\"');
const parsed = JSON.parse(json);
if (parsed['region_handle']) {
const coords = parsed['region_handle'].replace(/r/g, '').split(', ');
result['regionHandle'] = LoginResponse.toRegionHandle(parseInt(coords[0], 10), parseInt(coords[1], 10));
}
if (parsed['position']) {
result['position'] = this.parseVector3('[' + parsed['position'] + ']');
}
if (parsed['look_at']) {
result['lookAt'] = this.parseVector3('[' + parsed['lookAt'] + ']');
}
return result;
}
}
exports.LoginResponse = LoginResponse;
//# sourceMappingURL=LoginResponse.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +0,0 @@
import { UUID } from './UUID';
export declare class MapBlock {
name: string;
mapImage: UUID;
accessFlags: number;
}

View File

@@ -1,6 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class MapBlock {
}
exports.MapBlock = MapBlock;
//# sourceMappingURL=MapBlock.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"MapBlock.js","sourceRoot":"","sources":["../../lib/classes/MapBlock.ts"],"names":[],"mappings":";;AAEA,MAAa,QAAQ;CAKpB;AALD,4BAKC"}

View File

@@ -1,11 +0,0 @@
/// <reference types="node" />
import { Message } from '../enums/Message';
import { MessageFlags } from '..';
export interface MessageBase {
name: string;
messageFlags: MessageFlags;
id: Message;
getSize(): number;
writeToBuffer(buf: Buffer, pos: number): number;
readFromBuffer(buf: Buffer, pos: number): number;
}

View File

@@ -1,3 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=MessageBase.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"MessageBase.js","sourceRoot":"","sources":["../../lib/classes/MessageBase.ts"],"names":[],"mappings":""}

View File

@@ -1,480 +0,0 @@
export * from './messages/TestMessage';
export * from './messages/PacketAck';
export * from './messages/OpenCircuit';
export * from './messages/CloseCircuit';
export * from './messages/StartPingCheck';
export * from './messages/CompletePingCheck';
export * from './messages/AddCircuitCode';
export * from './messages/UseCircuitCode';
export * from './messages/NeighborList';
export * from './messages/AvatarTextureUpdate';
export * from './messages/SimulatorMapUpdate';
export * from './messages/SimulatorSetMap';
export * from './messages/SubscribeLoad';
export * from './messages/UnsubscribeLoad';
export * from './messages/SimulatorReady';
export * from './messages/TelehubInfo';
export * from './messages/SimulatorPresentAtLocation';
export * from './messages/SimulatorLoad';
export * from './messages/SimulatorShutdownRequest';
export * from './messages/RegionPresenceRequestByRegionID';
export * from './messages/RegionPresenceRequestByHandle';
export * from './messages/RegionPresenceResponse';
export * from './messages/UpdateSimulator';
export * from './messages/LogDwellTime';
export * from './messages/FeatureDisabled';
export * from './messages/LogFailedMoneyTransaction';
export * from './messages/UserReportInternal';
export * from './messages/SetSimStatusInDatabase';
export * from './messages/SetSimPresenceInDatabase';
export * from './messages/EconomyDataRequest';
export * from './messages/EconomyData';
export * from './messages/AvatarPickerRequest';
export * from './messages/AvatarPickerRequestBackend';
export * from './messages/AvatarPickerReply';
export * from './messages/PlacesQuery';
export * from './messages/PlacesReply';
export * from './messages/DirFindQuery';
export * from './messages/DirFindQueryBackend';
export * from './messages/DirPlacesQuery';
export * from './messages/DirPlacesQueryBackend';
export * from './messages/DirPlacesReply';
export * from './messages/DirPeopleReply';
export * from './messages/DirEventsReply';
export * from './messages/DirGroupsReply';
export * from './messages/DirClassifiedQuery';
export * from './messages/DirClassifiedQueryBackend';
export * from './messages/DirClassifiedReply';
export * from './messages/AvatarClassifiedReply';
export * from './messages/ClassifiedInfoRequest';
export * from './messages/ClassifiedInfoReply';
export * from './messages/ClassifiedInfoUpdate';
export * from './messages/ClassifiedDelete';
export * from './messages/ClassifiedGodDelete';
export * from './messages/DirLandQuery';
export * from './messages/DirLandQueryBackend';
export * from './messages/DirLandReply';
export * from './messages/DirPopularQuery';
export * from './messages/DirPopularQueryBackend';
export * from './messages/DirPopularReply';
export * from './messages/ParcelInfoRequest';
export * from './messages/ParcelInfoReply';
export * from './messages/ParcelObjectOwnersRequest';
export * from './messages/ParcelObjectOwnersReply';
export * from './messages/GroupNoticesListRequest';
export * from './messages/GroupNoticesListReply';
export * from './messages/GroupNoticeRequest';
export * from './messages/GroupNoticeAdd';
export * from './messages/TeleportRequest';
export * from './messages/TeleportLocationRequest';
export * from './messages/TeleportLocal';
export * from './messages/TeleportLandmarkRequest';
export * from './messages/TeleportProgress';
export * from './messages/DataHomeLocationRequest';
export * from './messages/DataHomeLocationReply';
export * from './messages/TeleportFinish';
export * from './messages/StartLure';
export * from './messages/TeleportLureRequest';
export * from './messages/TeleportCancel';
export * from './messages/TeleportStart';
export * from './messages/TeleportFailed';
export * from './messages/Undo';
export * from './messages/Redo';
export * from './messages/UndoLand';
export * from './messages/AgentPause';
export * from './messages/AgentResume';
export * from './messages/AgentUpdate';
export * from './messages/ChatFromViewer';
export * from './messages/AgentThrottle';
export * from './messages/AgentFOV';
export * from './messages/AgentHeightWidth';
export * from './messages/AgentSetAppearance';
export * from './messages/AgentAnimation';
export * from './messages/AgentRequestSit';
export * from './messages/AgentSit';
export * from './messages/AgentQuitCopy';
export * from './messages/RequestImage';
export * from './messages/ImageNotInDatabase';
export * from './messages/RebakeAvatarTextures';
export * from './messages/SetAlwaysRun';
export * from './messages/ObjectAdd';
export * from './messages/ObjectDelete';
export * from './messages/ObjectDuplicate';
export * from './messages/ObjectDuplicateOnRay';
export * from './messages/MultipleObjectUpdate';
export * from './messages/RequestMultipleObjects';
export * from './messages/ObjectPosition';
export * from './messages/ObjectScale';
export * from './messages/ObjectRotation';
export * from './messages/ObjectFlagUpdate';
export * from './messages/ObjectClickAction';
export * from './messages/ObjectImage';
export * from './messages/ObjectMaterial';
export * from './messages/ObjectShape';
export * from './messages/ObjectExtraParams';
export * from './messages/ObjectOwner';
export * from './messages/ObjectGroup';
export * from './messages/ObjectBuy';
export * from './messages/BuyObjectInventory';
export * from './messages/DerezContainer';
export * from './messages/ObjectPermissions';
export * from './messages/ObjectSaleInfo';
export * from './messages/ObjectName';
export * from './messages/ObjectDescription';
export * from './messages/ObjectCategory';
export * from './messages/ObjectSelect';
export * from './messages/ObjectDeselect';
export * from './messages/ObjectAttach';
export * from './messages/ObjectDetach';
export * from './messages/ObjectDrop';
export * from './messages/ObjectLink';
export * from './messages/ObjectDelink';
export * from './messages/ObjectGrab';
export * from './messages/ObjectGrabUpdate';
export * from './messages/ObjectDeGrab';
export * from './messages/ObjectSpinStart';
export * from './messages/ObjectSpinUpdate';
export * from './messages/ObjectSpinStop';
export * from './messages/ObjectExportSelected';
export * from './messages/ModifyLand';
export * from './messages/VelocityInterpolateOn';
export * from './messages/VelocityInterpolateOff';
export * from './messages/StateSave';
export * from './messages/ReportAutosaveCrash';
export * from './messages/SimWideDeletes';
export * from './messages/RequestObjectPropertiesFamily';
export * from './messages/TrackAgent';
export * from './messages/ViewerStats';
export * from './messages/ScriptAnswerYes';
export * from './messages/UserReport';
export * from './messages/AlertMessage';
export * from './messages/AgentAlertMessage';
export * from './messages/MeanCollisionAlert';
export * from './messages/ViewerFrozenMessage';
export * from './messages/HealthMessage';
export * from './messages/ChatFromSimulator';
export * from './messages/SimStats';
export * from './messages/RequestRegionInfo';
export * from './messages/RegionInfo';
export * from './messages/GodUpdateRegionInfo';
export * from './messages/NearestLandingRegionRequest';
export * from './messages/NearestLandingRegionReply';
export * from './messages/NearestLandingRegionUpdated';
export * from './messages/TeleportLandingStatusChanged';
export * from './messages/RegionHandshake';
export * from './messages/RegionHandshakeReply';
export * from './messages/CoarseLocationUpdate';
export * from './messages/ImageData';
export * from './messages/ImagePacket';
export * from './messages/LayerData';
export * from './messages/ObjectUpdate';
export * from './messages/ObjectUpdateCompressed';
export * from './messages/ObjectUpdateCached';
export * from './messages/ImprovedTerseObjectUpdate';
export * from './messages/KillObject';
export * from './messages/CrossedRegion';
export * from './messages/SimulatorViewerTimeMessage';
export * from './messages/EnableSimulator';
export * from './messages/DisableSimulator';
export * from './messages/ConfirmEnableSimulator';
export * from './messages/TransferRequest';
export * from './messages/TransferInfo';
export * from './messages/TransferPacket';
export * from './messages/TransferAbort';
export * from './messages/RequestXfer';
export * from './messages/SendXferPacket';
export * from './messages/ConfirmXferPacket';
export * from './messages/AbortXfer';
export * from './messages/AvatarAnimation';
export * from './messages/AvatarAppearance';
export * from './messages/AvatarSitResponse';
export * from './messages/SetFollowCamProperties';
export * from './messages/ClearFollowCamProperties';
export * from './messages/CameraConstraint';
export * from './messages/ObjectProperties';
export * from './messages/ObjectPropertiesFamily';
export * from './messages/RequestPayPrice';
export * from './messages/PayPriceReply';
export * from './messages/KickUser';
export * from './messages/KickUserAck';
export * from './messages/GodKickUser';
export * from './messages/SystemKickUser';
export * from './messages/EjectUser';
export * from './messages/FreezeUser';
export * from './messages/AvatarPropertiesRequest';
export * from './messages/AvatarPropertiesRequestBackend';
export * from './messages/AvatarPropertiesReply';
export * from './messages/AvatarInterestsReply';
export * from './messages/AvatarGroupsReply';
export * from './messages/AvatarPropertiesUpdate';
export * from './messages/AvatarInterestsUpdate';
export * from './messages/AvatarNotesReply';
export * from './messages/AvatarNotesUpdate';
export * from './messages/AvatarPicksReply';
export * from './messages/EventInfoRequest';
export * from './messages/EventInfoReply';
export * from './messages/EventNotificationAddRequest';
export * from './messages/EventNotificationRemoveRequest';
export * from './messages/EventGodDelete';
export * from './messages/PickInfoReply';
export * from './messages/PickInfoUpdate';
export * from './messages/PickDelete';
export * from './messages/PickGodDelete';
export * from './messages/ScriptQuestion';
export * from './messages/ScriptControlChange';
export * from './messages/ScriptDialog';
export * from './messages/ScriptDialogReply';
export * from './messages/ForceScriptControlRelease';
export * from './messages/RevokePermissions';
export * from './messages/LoadURL';
export * from './messages/ScriptTeleportRequest';
export * from './messages/ParcelOverlay';
export * from './messages/ParcelPropertiesRequest';
export * from './messages/ParcelPropertiesRequestByID';
export * from './messages/ParcelProperties';
export * from './messages/ParcelPropertiesUpdate';
export * from './messages/ParcelReturnObjects';
export * from './messages/ParcelSetOtherCleanTime';
export * from './messages/ParcelDisableObjects';
export * from './messages/ParcelSelectObjects';
export * from './messages/EstateCovenantRequest';
export * from './messages/EstateCovenantReply';
export * from './messages/ForceObjectSelect';
export * from './messages/ParcelBuyPass';
export * from './messages/ParcelDeedToGroup';
export * from './messages/ParcelReclaim';
export * from './messages/ParcelClaim';
export * from './messages/ParcelJoin';
export * from './messages/ParcelDivide';
export * from './messages/ParcelRelease';
export * from './messages/ParcelBuy';
export * from './messages/ParcelGodForceOwner';
export * from './messages/ParcelAccessListRequest';
export * from './messages/ParcelAccessListReply';
export * from './messages/ParcelAccessListUpdate';
export * from './messages/ParcelDwellRequest';
export * from './messages/ParcelDwellReply';
export * from './messages/RequestParcelTransfer';
export * from './messages/UpdateParcel';
export * from './messages/RemoveParcel';
export * from './messages/MergeParcel';
export * from './messages/LogParcelChanges';
export * from './messages/CheckParcelSales';
export * from './messages/ParcelSales';
export * from './messages/ParcelGodMarkAsContent';
export * from './messages/ViewerStartAuction';
export * from './messages/StartAuction';
export * from './messages/ConfirmAuctionStart';
export * from './messages/CompleteAuction';
export * from './messages/CancelAuction';
export * from './messages/CheckParcelAuctions';
export * from './messages/ParcelAuctions';
export * from './messages/UUIDNameRequest';
export * from './messages/UUIDNameReply';
export * from './messages/UUIDGroupNameRequest';
export * from './messages/UUIDGroupNameReply';
export * from './messages/ChatPass';
export * from './messages/EdgeDataPacket';
export * from './messages/SimStatus';
export * from './messages/ChildAgentUpdate';
export * from './messages/ChildAgentAlive';
export * from './messages/ChildAgentPositionUpdate';
export * from './messages/ChildAgentDying';
export * from './messages/ChildAgentUnknown';
export * from './messages/AtomicPassObject';
export * from './messages/KillChildAgents';
export * from './messages/GetScriptRunning';
export * from './messages/ScriptRunningReply';
export * from './messages/SetScriptRunning';
export * from './messages/ScriptReset';
export * from './messages/ScriptSensorRequest';
export * from './messages/ScriptSensorReply';
export * from './messages/CompleteAgentMovement';
export * from './messages/AgentMovementComplete';
export * from './messages/DataServerLogout';
export * from './messages/LogoutRequest';
export * from './messages/LogoutReply';
export * from './messages/ImprovedInstantMessage';
export * from './messages/RetrieveInstantMessages';
export * from './messages/FindAgent';
export * from './messages/RequestGodlikePowers';
export * from './messages/GrantGodlikePowers';
export * from './messages/GodlikeMessage';
export * from './messages/EstateOwnerMessage';
export * from './messages/GenericMessage';
export * from './messages/MuteListRequest';
export * from './messages/UpdateMuteListEntry';
export * from './messages/RemoveMuteListEntry';
export * from './messages/CopyInventoryFromNotecard';
export * from './messages/UpdateInventoryItem';
export * from './messages/UpdateCreateInventoryItem';
export * from './messages/MoveInventoryItem';
export * from './messages/CopyInventoryItem';
export * from './messages/RemoveInventoryItem';
export * from './messages/ChangeInventoryItemFlags';
export * from './messages/SaveAssetIntoInventory';
export * from './messages/CreateInventoryFolder';
export * from './messages/UpdateInventoryFolder';
export * from './messages/MoveInventoryFolder';
export * from './messages/RemoveInventoryFolder';
export * from './messages/FetchInventoryDescendents';
export * from './messages/InventoryDescendents';
export * from './messages/FetchInventory';
export * from './messages/FetchInventoryReply';
export * from './messages/BulkUpdateInventory';
export * from './messages/RequestInventoryAsset';
export * from './messages/InventoryAssetResponse';
export * from './messages/RemoveInventoryObjects';
export * from './messages/PurgeInventoryDescendents';
export * from './messages/UpdateTaskInventory';
export * from './messages/RemoveTaskInventory';
export * from './messages/MoveTaskInventory';
export * from './messages/RequestTaskInventory';
export * from './messages/ReplyTaskInventory';
export * from './messages/DeRezObject';
export * from './messages/DeRezAck';
export * from './messages/RezObject';
export * from './messages/RezObjectFromNotecard';
export * from './messages/TransferInventory';
export * from './messages/TransferInventoryAck';
export * from './messages/AcceptFriendship';
export * from './messages/DeclineFriendship';
export * from './messages/FormFriendship';
export * from './messages/TerminateFriendship';
export * from './messages/OfferCallingCard';
export * from './messages/AcceptCallingCard';
export * from './messages/DeclineCallingCard';
export * from './messages/RezScript';
export * from './messages/CreateInventoryItem';
export * from './messages/CreateLandmarkForEvent';
export * from './messages/EventLocationRequest';
export * from './messages/EventLocationReply';
export * from './messages/RegionHandleRequest';
export * from './messages/RegionIDAndHandleReply';
export * from './messages/MoneyTransferRequest';
export * from './messages/MoneyTransferBackend';
export * from './messages/MoneyBalanceRequest';
export * from './messages/MoneyBalanceReply';
export * from './messages/RoutedMoneyBalanceReply';
export * from './messages/ActivateGestures';
export * from './messages/DeactivateGestures';
export * from './messages/MuteListUpdate';
export * from './messages/UseCachedMuteList';
export * from './messages/GrantUserRights';
export * from './messages/ChangeUserRights';
export * from './messages/OnlineNotification';
export * from './messages/OfflineNotification';
export * from './messages/SetStartLocationRequest';
export * from './messages/SetStartLocation';
export * from './messages/NetTest';
export * from './messages/SetCPURatio';
export * from './messages/SimCrashed';
export * from './messages/NameValuePair';
export * from './messages/RemoveNameValuePair';
export * from './messages/UpdateAttachment';
export * from './messages/RemoveAttachment';
export * from './messages/SoundTrigger';
export * from './messages/AttachedSound';
export * from './messages/AttachedSoundGainChange';
export * from './messages/PreloadSound';
export * from './messages/AssetUploadRequest';
export * from './messages/AssetUploadComplete';
export * from './messages/EmailMessageRequest';
export * from './messages/EmailMessageReply';
export * from './messages/InternalScriptMail';
export * from './messages/ScriptDataRequest';
export * from './messages/ScriptDataReply';
export * from './messages/CreateGroupRequest';
export * from './messages/CreateGroupReply';
export * from './messages/UpdateGroupInfo';
export * from './messages/GroupRoleChanges';
export * from './messages/JoinGroupRequest';
export * from './messages/JoinGroupReply';
export * from './messages/EjectGroupMemberRequest';
export * from './messages/EjectGroupMemberReply';
export * from './messages/LeaveGroupRequest';
export * from './messages/LeaveGroupReply';
export * from './messages/InviteGroupRequest';
export * from './messages/InviteGroupResponse';
export * from './messages/GroupProfileRequest';
export * from './messages/GroupProfileReply';
export * from './messages/GroupAccountSummaryRequest';
export * from './messages/GroupAccountSummaryReply';
export * from './messages/GroupAccountDetailsRequest';
export * from './messages/GroupAccountDetailsReply';
export * from './messages/GroupAccountTransactionsRequest';
export * from './messages/GroupAccountTransactionsReply';
export * from './messages/GroupActiveProposalsRequest';
export * from './messages/GroupActiveProposalItemReply';
export * from './messages/GroupVoteHistoryRequest';
export * from './messages/GroupVoteHistoryItemReply';
export * from './messages/StartGroupProposal';
export * from './messages/GroupProposalBallot';
export * from './messages/TallyVotes';
export * from './messages/GroupMembersRequest';
export * from './messages/GroupMembersReply';
export * from './messages/ActivateGroup';
export * from './messages/SetGroupContribution';
export * from './messages/SetGroupAcceptNotices';
export * from './messages/GroupRoleDataRequest';
export * from './messages/GroupRoleDataReply';
export * from './messages/GroupRoleMembersRequest';
export * from './messages/GroupRoleMembersReply';
export * from './messages/GroupTitlesRequest';
export * from './messages/GroupTitlesReply';
export * from './messages/GroupTitleUpdate';
export * from './messages/GroupRoleUpdate';
export * from './messages/LiveHelpGroupRequest';
export * from './messages/LiveHelpGroupReply';
export * from './messages/AgentWearablesRequest';
export * from './messages/AgentWearablesUpdate';
export * from './messages/AgentIsNowWearing';
export * from './messages/AgentCachedTexture';
export * from './messages/AgentCachedTextureResponse';
export * from './messages/AgentDataUpdateRequest';
export * from './messages/AgentDataUpdate';
export * from './messages/GroupDataUpdate';
export * from './messages/AgentGroupDataUpdate';
export * from './messages/AgentDropGroup';
export * from './messages/LogTextMessage';
export * from './messages/ViewerEffect';
export * from './messages/CreateTrustedCircuit';
export * from './messages/DenyTrustedCircuit';
export * from './messages/RequestTrustedCircuit';
export * from './messages/RezSingleAttachmentFromInv';
export * from './messages/RezMultipleAttachmentsFromInv';
export * from './messages/DetachAttachmentIntoInv';
export * from './messages/CreateNewOutfitAttachments';
export * from './messages/UserInfoRequest';
export * from './messages/UserInfoReply';
export * from './messages/UpdateUserInfo';
export * from './messages/ParcelRename';
export * from './messages/InitiateDownload';
export * from './messages/SystemMessage';
export * from './messages/MapLayerRequest';
export * from './messages/MapLayerReply';
export * from './messages/MapBlockRequest';
export * from './messages/MapNameRequest';
export * from './messages/MapBlockReply';
export * from './messages/MapItemRequest';
export * from './messages/MapItemReply';
export * from './messages/SendPostcard';
export * from './messages/RpcChannelRequest';
export * from './messages/RpcChannelReply';
export * from './messages/RpcScriptRequestInbound';
export * from './messages/RpcScriptRequestInboundForward';
export * from './messages/RpcScriptReplyInbound';
export * from './messages/ScriptMailRegistration';
export * from './messages/ParcelMediaCommandMessage';
export * from './messages/ParcelMediaUpdate';
export * from './messages/LandStatRequest';
export * from './messages/LandStatReply';
export * from './messages/Error';
export * from './messages/ObjectIncludeInSearch';
export * from './messages/RezRestoreToWorld';
export * from './messages/LinkInventoryItem';
export * from './messages/RetrieveIMsExtended';
export * from './messages/JoinGroupRequestExtended';
export * from './messages/CreateGroupRequestExtended';
import { Message } from '../enums/Message';
export declare function nameFromID(id: Message): string;

View File

@@ -1,968 +0,0 @@
"use strict";
function __export(m) {
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
}
Object.defineProperty(exports, "__esModule", { value: true });
__export(require("./messages/TestMessage"));
__export(require("./messages/PacketAck"));
__export(require("./messages/OpenCircuit"));
__export(require("./messages/CloseCircuit"));
__export(require("./messages/StartPingCheck"));
__export(require("./messages/CompletePingCheck"));
__export(require("./messages/AddCircuitCode"));
__export(require("./messages/UseCircuitCode"));
__export(require("./messages/NeighborList"));
__export(require("./messages/AvatarTextureUpdate"));
__export(require("./messages/SimulatorMapUpdate"));
__export(require("./messages/SimulatorSetMap"));
__export(require("./messages/SubscribeLoad"));
__export(require("./messages/UnsubscribeLoad"));
__export(require("./messages/SimulatorReady"));
__export(require("./messages/TelehubInfo"));
__export(require("./messages/SimulatorPresentAtLocation"));
__export(require("./messages/SimulatorLoad"));
__export(require("./messages/SimulatorShutdownRequest"));
__export(require("./messages/RegionPresenceRequestByRegionID"));
__export(require("./messages/RegionPresenceRequestByHandle"));
__export(require("./messages/RegionPresenceResponse"));
__export(require("./messages/UpdateSimulator"));
__export(require("./messages/LogDwellTime"));
__export(require("./messages/FeatureDisabled"));
__export(require("./messages/LogFailedMoneyTransaction"));
__export(require("./messages/UserReportInternal"));
__export(require("./messages/SetSimStatusInDatabase"));
__export(require("./messages/SetSimPresenceInDatabase"));
__export(require("./messages/EconomyDataRequest"));
__export(require("./messages/EconomyData"));
__export(require("./messages/AvatarPickerRequest"));
__export(require("./messages/AvatarPickerRequestBackend"));
__export(require("./messages/AvatarPickerReply"));
__export(require("./messages/PlacesQuery"));
__export(require("./messages/PlacesReply"));
__export(require("./messages/DirFindQuery"));
__export(require("./messages/DirFindQueryBackend"));
__export(require("./messages/DirPlacesQuery"));
__export(require("./messages/DirPlacesQueryBackend"));
__export(require("./messages/DirPlacesReply"));
__export(require("./messages/DirPeopleReply"));
__export(require("./messages/DirEventsReply"));
__export(require("./messages/DirGroupsReply"));
__export(require("./messages/DirClassifiedQuery"));
__export(require("./messages/DirClassifiedQueryBackend"));
__export(require("./messages/DirClassifiedReply"));
__export(require("./messages/AvatarClassifiedReply"));
__export(require("./messages/ClassifiedInfoRequest"));
__export(require("./messages/ClassifiedInfoReply"));
__export(require("./messages/ClassifiedInfoUpdate"));
__export(require("./messages/ClassifiedDelete"));
__export(require("./messages/ClassifiedGodDelete"));
__export(require("./messages/DirLandQuery"));
__export(require("./messages/DirLandQueryBackend"));
__export(require("./messages/DirLandReply"));
__export(require("./messages/DirPopularQuery"));
__export(require("./messages/DirPopularQueryBackend"));
__export(require("./messages/DirPopularReply"));
__export(require("./messages/ParcelInfoRequest"));
__export(require("./messages/ParcelInfoReply"));
__export(require("./messages/ParcelObjectOwnersRequest"));
__export(require("./messages/ParcelObjectOwnersReply"));
__export(require("./messages/GroupNoticesListRequest"));
__export(require("./messages/GroupNoticesListReply"));
__export(require("./messages/GroupNoticeRequest"));
__export(require("./messages/GroupNoticeAdd"));
__export(require("./messages/TeleportRequest"));
__export(require("./messages/TeleportLocationRequest"));
__export(require("./messages/TeleportLocal"));
__export(require("./messages/TeleportLandmarkRequest"));
__export(require("./messages/TeleportProgress"));
__export(require("./messages/DataHomeLocationRequest"));
__export(require("./messages/DataHomeLocationReply"));
__export(require("./messages/TeleportFinish"));
__export(require("./messages/StartLure"));
__export(require("./messages/TeleportLureRequest"));
__export(require("./messages/TeleportCancel"));
__export(require("./messages/TeleportStart"));
__export(require("./messages/TeleportFailed"));
__export(require("./messages/Undo"));
__export(require("./messages/Redo"));
__export(require("./messages/UndoLand"));
__export(require("./messages/AgentPause"));
__export(require("./messages/AgentResume"));
__export(require("./messages/AgentUpdate"));
__export(require("./messages/ChatFromViewer"));
__export(require("./messages/AgentThrottle"));
__export(require("./messages/AgentFOV"));
__export(require("./messages/AgentHeightWidth"));
__export(require("./messages/AgentSetAppearance"));
__export(require("./messages/AgentAnimation"));
__export(require("./messages/AgentRequestSit"));
__export(require("./messages/AgentSit"));
__export(require("./messages/AgentQuitCopy"));
__export(require("./messages/RequestImage"));
__export(require("./messages/ImageNotInDatabase"));
__export(require("./messages/RebakeAvatarTextures"));
__export(require("./messages/SetAlwaysRun"));
__export(require("./messages/ObjectAdd"));
__export(require("./messages/ObjectDelete"));
__export(require("./messages/ObjectDuplicate"));
__export(require("./messages/ObjectDuplicateOnRay"));
__export(require("./messages/MultipleObjectUpdate"));
__export(require("./messages/RequestMultipleObjects"));
__export(require("./messages/ObjectPosition"));
__export(require("./messages/ObjectScale"));
__export(require("./messages/ObjectRotation"));
__export(require("./messages/ObjectFlagUpdate"));
__export(require("./messages/ObjectClickAction"));
__export(require("./messages/ObjectImage"));
__export(require("./messages/ObjectMaterial"));
__export(require("./messages/ObjectShape"));
__export(require("./messages/ObjectExtraParams"));
__export(require("./messages/ObjectOwner"));
__export(require("./messages/ObjectGroup"));
__export(require("./messages/ObjectBuy"));
__export(require("./messages/BuyObjectInventory"));
__export(require("./messages/DerezContainer"));
__export(require("./messages/ObjectPermissions"));
__export(require("./messages/ObjectSaleInfo"));
__export(require("./messages/ObjectName"));
__export(require("./messages/ObjectDescription"));
__export(require("./messages/ObjectCategory"));
__export(require("./messages/ObjectSelect"));
__export(require("./messages/ObjectDeselect"));
__export(require("./messages/ObjectAttach"));
__export(require("./messages/ObjectDetach"));
__export(require("./messages/ObjectDrop"));
__export(require("./messages/ObjectLink"));
__export(require("./messages/ObjectDelink"));
__export(require("./messages/ObjectGrab"));
__export(require("./messages/ObjectGrabUpdate"));
__export(require("./messages/ObjectDeGrab"));
__export(require("./messages/ObjectSpinStart"));
__export(require("./messages/ObjectSpinUpdate"));
__export(require("./messages/ObjectSpinStop"));
__export(require("./messages/ObjectExportSelected"));
__export(require("./messages/ModifyLand"));
__export(require("./messages/VelocityInterpolateOn"));
__export(require("./messages/VelocityInterpolateOff"));
__export(require("./messages/StateSave"));
__export(require("./messages/ReportAutosaveCrash"));
__export(require("./messages/SimWideDeletes"));
__export(require("./messages/RequestObjectPropertiesFamily"));
__export(require("./messages/TrackAgent"));
__export(require("./messages/ViewerStats"));
__export(require("./messages/ScriptAnswerYes"));
__export(require("./messages/UserReport"));
__export(require("./messages/AlertMessage"));
__export(require("./messages/AgentAlertMessage"));
__export(require("./messages/MeanCollisionAlert"));
__export(require("./messages/ViewerFrozenMessage"));
__export(require("./messages/HealthMessage"));
__export(require("./messages/ChatFromSimulator"));
__export(require("./messages/SimStats"));
__export(require("./messages/RequestRegionInfo"));
__export(require("./messages/RegionInfo"));
__export(require("./messages/GodUpdateRegionInfo"));
__export(require("./messages/NearestLandingRegionRequest"));
__export(require("./messages/NearestLandingRegionReply"));
__export(require("./messages/NearestLandingRegionUpdated"));
__export(require("./messages/TeleportLandingStatusChanged"));
__export(require("./messages/RegionHandshake"));
__export(require("./messages/RegionHandshakeReply"));
__export(require("./messages/CoarseLocationUpdate"));
__export(require("./messages/ImageData"));
__export(require("./messages/ImagePacket"));
__export(require("./messages/LayerData"));
__export(require("./messages/ObjectUpdate"));
__export(require("./messages/ObjectUpdateCompressed"));
__export(require("./messages/ObjectUpdateCached"));
__export(require("./messages/ImprovedTerseObjectUpdate"));
__export(require("./messages/KillObject"));
__export(require("./messages/CrossedRegion"));
__export(require("./messages/SimulatorViewerTimeMessage"));
__export(require("./messages/EnableSimulator"));
__export(require("./messages/DisableSimulator"));
__export(require("./messages/ConfirmEnableSimulator"));
__export(require("./messages/TransferRequest"));
__export(require("./messages/TransferInfo"));
__export(require("./messages/TransferPacket"));
__export(require("./messages/TransferAbort"));
__export(require("./messages/RequestXfer"));
__export(require("./messages/SendXferPacket"));
__export(require("./messages/ConfirmXferPacket"));
__export(require("./messages/AbortXfer"));
__export(require("./messages/AvatarAnimation"));
__export(require("./messages/AvatarAppearance"));
__export(require("./messages/AvatarSitResponse"));
__export(require("./messages/SetFollowCamProperties"));
__export(require("./messages/ClearFollowCamProperties"));
__export(require("./messages/CameraConstraint"));
__export(require("./messages/ObjectProperties"));
__export(require("./messages/ObjectPropertiesFamily"));
__export(require("./messages/RequestPayPrice"));
__export(require("./messages/PayPriceReply"));
__export(require("./messages/KickUser"));
__export(require("./messages/KickUserAck"));
__export(require("./messages/GodKickUser"));
__export(require("./messages/SystemKickUser"));
__export(require("./messages/EjectUser"));
__export(require("./messages/FreezeUser"));
__export(require("./messages/AvatarPropertiesRequest"));
__export(require("./messages/AvatarPropertiesRequestBackend"));
__export(require("./messages/AvatarPropertiesReply"));
__export(require("./messages/AvatarInterestsReply"));
__export(require("./messages/AvatarGroupsReply"));
__export(require("./messages/AvatarPropertiesUpdate"));
__export(require("./messages/AvatarInterestsUpdate"));
__export(require("./messages/AvatarNotesReply"));
__export(require("./messages/AvatarNotesUpdate"));
__export(require("./messages/AvatarPicksReply"));
__export(require("./messages/EventInfoRequest"));
__export(require("./messages/EventInfoReply"));
__export(require("./messages/EventNotificationAddRequest"));
__export(require("./messages/EventNotificationRemoveRequest"));
__export(require("./messages/EventGodDelete"));
__export(require("./messages/PickInfoReply"));
__export(require("./messages/PickInfoUpdate"));
__export(require("./messages/PickDelete"));
__export(require("./messages/PickGodDelete"));
__export(require("./messages/ScriptQuestion"));
__export(require("./messages/ScriptControlChange"));
__export(require("./messages/ScriptDialog"));
__export(require("./messages/ScriptDialogReply"));
__export(require("./messages/ForceScriptControlRelease"));
__export(require("./messages/RevokePermissions"));
__export(require("./messages/LoadURL"));
__export(require("./messages/ScriptTeleportRequest"));
__export(require("./messages/ParcelOverlay"));
__export(require("./messages/ParcelPropertiesRequest"));
__export(require("./messages/ParcelPropertiesRequestByID"));
__export(require("./messages/ParcelProperties"));
__export(require("./messages/ParcelPropertiesUpdate"));
__export(require("./messages/ParcelReturnObjects"));
__export(require("./messages/ParcelSetOtherCleanTime"));
__export(require("./messages/ParcelDisableObjects"));
__export(require("./messages/ParcelSelectObjects"));
__export(require("./messages/EstateCovenantRequest"));
__export(require("./messages/EstateCovenantReply"));
__export(require("./messages/ForceObjectSelect"));
__export(require("./messages/ParcelBuyPass"));
__export(require("./messages/ParcelDeedToGroup"));
__export(require("./messages/ParcelReclaim"));
__export(require("./messages/ParcelClaim"));
__export(require("./messages/ParcelJoin"));
__export(require("./messages/ParcelDivide"));
__export(require("./messages/ParcelRelease"));
__export(require("./messages/ParcelBuy"));
__export(require("./messages/ParcelGodForceOwner"));
__export(require("./messages/ParcelAccessListRequest"));
__export(require("./messages/ParcelAccessListReply"));
__export(require("./messages/ParcelAccessListUpdate"));
__export(require("./messages/ParcelDwellRequest"));
__export(require("./messages/ParcelDwellReply"));
__export(require("./messages/RequestParcelTransfer"));
__export(require("./messages/UpdateParcel"));
__export(require("./messages/RemoveParcel"));
__export(require("./messages/MergeParcel"));
__export(require("./messages/LogParcelChanges"));
__export(require("./messages/CheckParcelSales"));
__export(require("./messages/ParcelSales"));
__export(require("./messages/ParcelGodMarkAsContent"));
__export(require("./messages/ViewerStartAuction"));
__export(require("./messages/StartAuction"));
__export(require("./messages/ConfirmAuctionStart"));
__export(require("./messages/CompleteAuction"));
__export(require("./messages/CancelAuction"));
__export(require("./messages/CheckParcelAuctions"));
__export(require("./messages/ParcelAuctions"));
__export(require("./messages/UUIDNameRequest"));
__export(require("./messages/UUIDNameReply"));
__export(require("./messages/UUIDGroupNameRequest"));
__export(require("./messages/UUIDGroupNameReply"));
__export(require("./messages/ChatPass"));
__export(require("./messages/EdgeDataPacket"));
__export(require("./messages/SimStatus"));
__export(require("./messages/ChildAgentUpdate"));
__export(require("./messages/ChildAgentAlive"));
__export(require("./messages/ChildAgentPositionUpdate"));
__export(require("./messages/ChildAgentDying"));
__export(require("./messages/ChildAgentUnknown"));
__export(require("./messages/AtomicPassObject"));
__export(require("./messages/KillChildAgents"));
__export(require("./messages/GetScriptRunning"));
__export(require("./messages/ScriptRunningReply"));
__export(require("./messages/SetScriptRunning"));
__export(require("./messages/ScriptReset"));
__export(require("./messages/ScriptSensorRequest"));
__export(require("./messages/ScriptSensorReply"));
__export(require("./messages/CompleteAgentMovement"));
__export(require("./messages/AgentMovementComplete"));
__export(require("./messages/DataServerLogout"));
__export(require("./messages/LogoutRequest"));
__export(require("./messages/LogoutReply"));
__export(require("./messages/ImprovedInstantMessage"));
__export(require("./messages/RetrieveInstantMessages"));
__export(require("./messages/FindAgent"));
__export(require("./messages/RequestGodlikePowers"));
__export(require("./messages/GrantGodlikePowers"));
__export(require("./messages/GodlikeMessage"));
__export(require("./messages/EstateOwnerMessage"));
__export(require("./messages/GenericMessage"));
__export(require("./messages/MuteListRequest"));
__export(require("./messages/UpdateMuteListEntry"));
__export(require("./messages/RemoveMuteListEntry"));
__export(require("./messages/CopyInventoryFromNotecard"));
__export(require("./messages/UpdateInventoryItem"));
__export(require("./messages/UpdateCreateInventoryItem"));
__export(require("./messages/MoveInventoryItem"));
__export(require("./messages/CopyInventoryItem"));
__export(require("./messages/RemoveInventoryItem"));
__export(require("./messages/ChangeInventoryItemFlags"));
__export(require("./messages/SaveAssetIntoInventory"));
__export(require("./messages/CreateInventoryFolder"));
__export(require("./messages/UpdateInventoryFolder"));
__export(require("./messages/MoveInventoryFolder"));
__export(require("./messages/RemoveInventoryFolder"));
__export(require("./messages/FetchInventoryDescendents"));
__export(require("./messages/InventoryDescendents"));
__export(require("./messages/FetchInventory"));
__export(require("./messages/FetchInventoryReply"));
__export(require("./messages/BulkUpdateInventory"));
__export(require("./messages/RequestInventoryAsset"));
__export(require("./messages/InventoryAssetResponse"));
__export(require("./messages/RemoveInventoryObjects"));
__export(require("./messages/PurgeInventoryDescendents"));
__export(require("./messages/UpdateTaskInventory"));
__export(require("./messages/RemoveTaskInventory"));
__export(require("./messages/MoveTaskInventory"));
__export(require("./messages/RequestTaskInventory"));
__export(require("./messages/ReplyTaskInventory"));
__export(require("./messages/DeRezObject"));
__export(require("./messages/DeRezAck"));
__export(require("./messages/RezObject"));
__export(require("./messages/RezObjectFromNotecard"));
__export(require("./messages/TransferInventory"));
__export(require("./messages/TransferInventoryAck"));
__export(require("./messages/AcceptFriendship"));
__export(require("./messages/DeclineFriendship"));
__export(require("./messages/FormFriendship"));
__export(require("./messages/TerminateFriendship"));
__export(require("./messages/OfferCallingCard"));
__export(require("./messages/AcceptCallingCard"));
__export(require("./messages/DeclineCallingCard"));
__export(require("./messages/RezScript"));
__export(require("./messages/CreateInventoryItem"));
__export(require("./messages/CreateLandmarkForEvent"));
__export(require("./messages/EventLocationRequest"));
__export(require("./messages/EventLocationReply"));
__export(require("./messages/RegionHandleRequest"));
__export(require("./messages/RegionIDAndHandleReply"));
__export(require("./messages/MoneyTransferRequest"));
__export(require("./messages/MoneyTransferBackend"));
__export(require("./messages/MoneyBalanceRequest"));
__export(require("./messages/MoneyBalanceReply"));
__export(require("./messages/RoutedMoneyBalanceReply"));
__export(require("./messages/ActivateGestures"));
__export(require("./messages/DeactivateGestures"));
__export(require("./messages/MuteListUpdate"));
__export(require("./messages/UseCachedMuteList"));
__export(require("./messages/GrantUserRights"));
__export(require("./messages/ChangeUserRights"));
__export(require("./messages/OnlineNotification"));
__export(require("./messages/OfflineNotification"));
__export(require("./messages/SetStartLocationRequest"));
__export(require("./messages/SetStartLocation"));
__export(require("./messages/NetTest"));
__export(require("./messages/SetCPURatio"));
__export(require("./messages/SimCrashed"));
__export(require("./messages/NameValuePair"));
__export(require("./messages/RemoveNameValuePair"));
__export(require("./messages/UpdateAttachment"));
__export(require("./messages/RemoveAttachment"));
__export(require("./messages/SoundTrigger"));
__export(require("./messages/AttachedSound"));
__export(require("./messages/AttachedSoundGainChange"));
__export(require("./messages/PreloadSound"));
__export(require("./messages/AssetUploadRequest"));
__export(require("./messages/AssetUploadComplete"));
__export(require("./messages/EmailMessageRequest"));
__export(require("./messages/EmailMessageReply"));
__export(require("./messages/InternalScriptMail"));
__export(require("./messages/ScriptDataRequest"));
__export(require("./messages/ScriptDataReply"));
__export(require("./messages/CreateGroupRequest"));
__export(require("./messages/CreateGroupReply"));
__export(require("./messages/UpdateGroupInfo"));
__export(require("./messages/GroupRoleChanges"));
__export(require("./messages/JoinGroupRequest"));
__export(require("./messages/JoinGroupReply"));
__export(require("./messages/EjectGroupMemberRequest"));
__export(require("./messages/EjectGroupMemberReply"));
__export(require("./messages/LeaveGroupRequest"));
__export(require("./messages/LeaveGroupReply"));
__export(require("./messages/InviteGroupRequest"));
__export(require("./messages/InviteGroupResponse"));
__export(require("./messages/GroupProfileRequest"));
__export(require("./messages/GroupProfileReply"));
__export(require("./messages/GroupAccountSummaryRequest"));
__export(require("./messages/GroupAccountSummaryReply"));
__export(require("./messages/GroupAccountDetailsRequest"));
__export(require("./messages/GroupAccountDetailsReply"));
__export(require("./messages/GroupAccountTransactionsRequest"));
__export(require("./messages/GroupAccountTransactionsReply"));
__export(require("./messages/GroupActiveProposalsRequest"));
__export(require("./messages/GroupActiveProposalItemReply"));
__export(require("./messages/GroupVoteHistoryRequest"));
__export(require("./messages/GroupVoteHistoryItemReply"));
__export(require("./messages/StartGroupProposal"));
__export(require("./messages/GroupProposalBallot"));
__export(require("./messages/TallyVotes"));
__export(require("./messages/GroupMembersRequest"));
__export(require("./messages/GroupMembersReply"));
__export(require("./messages/ActivateGroup"));
__export(require("./messages/SetGroupContribution"));
__export(require("./messages/SetGroupAcceptNotices"));
__export(require("./messages/GroupRoleDataRequest"));
__export(require("./messages/GroupRoleDataReply"));
__export(require("./messages/GroupRoleMembersRequest"));
__export(require("./messages/GroupRoleMembersReply"));
__export(require("./messages/GroupTitlesRequest"));
__export(require("./messages/GroupTitlesReply"));
__export(require("./messages/GroupTitleUpdate"));
__export(require("./messages/GroupRoleUpdate"));
__export(require("./messages/LiveHelpGroupRequest"));
__export(require("./messages/LiveHelpGroupReply"));
__export(require("./messages/AgentWearablesRequest"));
__export(require("./messages/AgentWearablesUpdate"));
__export(require("./messages/AgentIsNowWearing"));
__export(require("./messages/AgentCachedTexture"));
__export(require("./messages/AgentCachedTextureResponse"));
__export(require("./messages/AgentDataUpdateRequest"));
__export(require("./messages/AgentDataUpdate"));
__export(require("./messages/GroupDataUpdate"));
__export(require("./messages/AgentGroupDataUpdate"));
__export(require("./messages/AgentDropGroup"));
__export(require("./messages/LogTextMessage"));
__export(require("./messages/ViewerEffect"));
__export(require("./messages/CreateTrustedCircuit"));
__export(require("./messages/DenyTrustedCircuit"));
__export(require("./messages/RequestTrustedCircuit"));
__export(require("./messages/RezSingleAttachmentFromInv"));
__export(require("./messages/RezMultipleAttachmentsFromInv"));
__export(require("./messages/DetachAttachmentIntoInv"));
__export(require("./messages/CreateNewOutfitAttachments"));
__export(require("./messages/UserInfoRequest"));
__export(require("./messages/UserInfoReply"));
__export(require("./messages/UpdateUserInfo"));
__export(require("./messages/ParcelRename"));
__export(require("./messages/InitiateDownload"));
__export(require("./messages/SystemMessage"));
__export(require("./messages/MapLayerRequest"));
__export(require("./messages/MapLayerReply"));
__export(require("./messages/MapBlockRequest"));
__export(require("./messages/MapNameRequest"));
__export(require("./messages/MapBlockReply"));
__export(require("./messages/MapItemRequest"));
__export(require("./messages/MapItemReply"));
__export(require("./messages/SendPostcard"));
__export(require("./messages/RpcChannelRequest"));
__export(require("./messages/RpcChannelReply"));
__export(require("./messages/RpcScriptRequestInbound"));
__export(require("./messages/RpcScriptRequestInboundForward"));
__export(require("./messages/RpcScriptReplyInbound"));
__export(require("./messages/ScriptMailRegistration"));
__export(require("./messages/ParcelMediaCommandMessage"));
__export(require("./messages/ParcelMediaUpdate"));
__export(require("./messages/LandStatRequest"));
__export(require("./messages/LandStatReply"));
__export(require("./messages/Error"));
__export(require("./messages/ObjectIncludeInSearch"));
__export(require("./messages/RezRestoreToWorld"));
__export(require("./messages/LinkInventoryItem"));
__export(require("./messages/RetrieveIMsExtended"));
__export(require("./messages/JoinGroupRequestExtended"));
__export(require("./messages/CreateGroupRequestExtended"));
const Message_1 = require("../enums/Message");
const messages = {};
messages[Message_1.Message.TestMessage] = 'TestMessageMessage';
messages[Message_1.Message.PacketAck] = 'PacketAckMessage';
messages[Message_1.Message.OpenCircuit] = 'OpenCircuitMessage';
messages[Message_1.Message.CloseCircuit] = 'CloseCircuitMessage';
messages[Message_1.Message.StartPingCheck] = 'StartPingCheckMessage';
messages[Message_1.Message.CompletePingCheck] = 'CompletePingCheckMessage';
messages[Message_1.Message.AddCircuitCode] = 'AddCircuitCodeMessage';
messages[Message_1.Message.UseCircuitCode] = 'UseCircuitCodeMessage';
messages[Message_1.Message.NeighborList] = 'NeighborListMessage';
messages[Message_1.Message.AvatarTextureUpdate] = 'AvatarTextureUpdateMessage';
messages[Message_1.Message.SimulatorMapUpdate] = 'SimulatorMapUpdateMessage';
messages[Message_1.Message.SimulatorSetMap] = 'SimulatorSetMapMessage';
messages[Message_1.Message.SubscribeLoad] = 'SubscribeLoadMessage';
messages[Message_1.Message.UnsubscribeLoad] = 'UnsubscribeLoadMessage';
messages[Message_1.Message.SimulatorReady] = 'SimulatorReadyMessage';
messages[Message_1.Message.TelehubInfo] = 'TelehubInfoMessage';
messages[Message_1.Message.SimulatorPresentAtLocation] = 'SimulatorPresentAtLocationMessage';
messages[Message_1.Message.SimulatorLoad] = 'SimulatorLoadMessage';
messages[Message_1.Message.SimulatorShutdownRequest] = 'SimulatorShutdownRequestMessage';
messages[Message_1.Message.RegionPresenceRequestByRegionID] = 'RegionPresenceRequestByRegionIDMessage';
messages[Message_1.Message.RegionPresenceRequestByHandle] = 'RegionPresenceRequestByHandleMessage';
messages[Message_1.Message.RegionPresenceResponse] = 'RegionPresenceResponseMessage';
messages[Message_1.Message.UpdateSimulator] = 'UpdateSimulatorMessage';
messages[Message_1.Message.LogDwellTime] = 'LogDwellTimeMessage';
messages[Message_1.Message.FeatureDisabled] = 'FeatureDisabledMessage';
messages[Message_1.Message.LogFailedMoneyTransaction] = 'LogFailedMoneyTransactionMessage';
messages[Message_1.Message.UserReportInternal] = 'UserReportInternalMessage';
messages[Message_1.Message.SetSimStatusInDatabase] = 'SetSimStatusInDatabaseMessage';
messages[Message_1.Message.SetSimPresenceInDatabase] = 'SetSimPresenceInDatabaseMessage';
messages[Message_1.Message.EconomyDataRequest] = 'EconomyDataRequestMessage';
messages[Message_1.Message.EconomyData] = 'EconomyDataMessage';
messages[Message_1.Message.AvatarPickerRequest] = 'AvatarPickerRequestMessage';
messages[Message_1.Message.AvatarPickerRequestBackend] = 'AvatarPickerRequestBackendMessage';
messages[Message_1.Message.AvatarPickerReply] = 'AvatarPickerReplyMessage';
messages[Message_1.Message.PlacesQuery] = 'PlacesQueryMessage';
messages[Message_1.Message.PlacesReply] = 'PlacesReplyMessage';
messages[Message_1.Message.DirFindQuery] = 'DirFindQueryMessage';
messages[Message_1.Message.DirFindQueryBackend] = 'DirFindQueryBackendMessage';
messages[Message_1.Message.DirPlacesQuery] = 'DirPlacesQueryMessage';
messages[Message_1.Message.DirPlacesQueryBackend] = 'DirPlacesQueryBackendMessage';
messages[Message_1.Message.DirPlacesReply] = 'DirPlacesReplyMessage';
messages[Message_1.Message.DirPeopleReply] = 'DirPeopleReplyMessage';
messages[Message_1.Message.DirEventsReply] = 'DirEventsReplyMessage';
messages[Message_1.Message.DirGroupsReply] = 'DirGroupsReplyMessage';
messages[Message_1.Message.DirClassifiedQuery] = 'DirClassifiedQueryMessage';
messages[Message_1.Message.DirClassifiedQueryBackend] = 'DirClassifiedQueryBackendMessage';
messages[Message_1.Message.DirClassifiedReply] = 'DirClassifiedReplyMessage';
messages[Message_1.Message.AvatarClassifiedReply] = 'AvatarClassifiedReplyMessage';
messages[Message_1.Message.ClassifiedInfoRequest] = 'ClassifiedInfoRequestMessage';
messages[Message_1.Message.ClassifiedInfoReply] = 'ClassifiedInfoReplyMessage';
messages[Message_1.Message.ClassifiedInfoUpdate] = 'ClassifiedInfoUpdateMessage';
messages[Message_1.Message.ClassifiedDelete] = 'ClassifiedDeleteMessage';
messages[Message_1.Message.ClassifiedGodDelete] = 'ClassifiedGodDeleteMessage';
messages[Message_1.Message.DirLandQuery] = 'DirLandQueryMessage';
messages[Message_1.Message.DirLandQueryBackend] = 'DirLandQueryBackendMessage';
messages[Message_1.Message.DirLandReply] = 'DirLandReplyMessage';
messages[Message_1.Message.DirPopularQuery] = 'DirPopularQueryMessage';
messages[Message_1.Message.DirPopularQueryBackend] = 'DirPopularQueryBackendMessage';
messages[Message_1.Message.DirPopularReply] = 'DirPopularReplyMessage';
messages[Message_1.Message.ParcelInfoRequest] = 'ParcelInfoRequestMessage';
messages[Message_1.Message.ParcelInfoReply] = 'ParcelInfoReplyMessage';
messages[Message_1.Message.ParcelObjectOwnersRequest] = 'ParcelObjectOwnersRequestMessage';
messages[Message_1.Message.ParcelObjectOwnersReply] = 'ParcelObjectOwnersReplyMessage';
messages[Message_1.Message.GroupNoticesListRequest] = 'GroupNoticesListRequestMessage';
messages[Message_1.Message.GroupNoticesListReply] = 'GroupNoticesListReplyMessage';
messages[Message_1.Message.GroupNoticeRequest] = 'GroupNoticeRequestMessage';
messages[Message_1.Message.GroupNoticeAdd] = 'GroupNoticeAddMessage';
messages[Message_1.Message.TeleportRequest] = 'TeleportRequestMessage';
messages[Message_1.Message.TeleportLocationRequest] = 'TeleportLocationRequestMessage';
messages[Message_1.Message.TeleportLocal] = 'TeleportLocalMessage';
messages[Message_1.Message.TeleportLandmarkRequest] = 'TeleportLandmarkRequestMessage';
messages[Message_1.Message.TeleportProgress] = 'TeleportProgressMessage';
messages[Message_1.Message.DataHomeLocationRequest] = 'DataHomeLocationRequestMessage';
messages[Message_1.Message.DataHomeLocationReply] = 'DataHomeLocationReplyMessage';
messages[Message_1.Message.TeleportFinish] = 'TeleportFinishMessage';
messages[Message_1.Message.StartLure] = 'StartLureMessage';
messages[Message_1.Message.TeleportLureRequest] = 'TeleportLureRequestMessage';
messages[Message_1.Message.TeleportCancel] = 'TeleportCancelMessage';
messages[Message_1.Message.TeleportStart] = 'TeleportStartMessage';
messages[Message_1.Message.TeleportFailed] = 'TeleportFailedMessage';
messages[Message_1.Message.Undo] = 'UndoMessage';
messages[Message_1.Message.Redo] = 'RedoMessage';
messages[Message_1.Message.UndoLand] = 'UndoLandMessage';
messages[Message_1.Message.AgentPause] = 'AgentPauseMessage';
messages[Message_1.Message.AgentResume] = 'AgentResumeMessage';
messages[Message_1.Message.AgentUpdate] = 'AgentUpdateMessage';
messages[Message_1.Message.ChatFromViewer] = 'ChatFromViewerMessage';
messages[Message_1.Message.AgentThrottle] = 'AgentThrottleMessage';
messages[Message_1.Message.AgentFOV] = 'AgentFOVMessage';
messages[Message_1.Message.AgentHeightWidth] = 'AgentHeightWidthMessage';
messages[Message_1.Message.AgentSetAppearance] = 'AgentSetAppearanceMessage';
messages[Message_1.Message.AgentAnimation] = 'AgentAnimationMessage';
messages[Message_1.Message.AgentRequestSit] = 'AgentRequestSitMessage';
messages[Message_1.Message.AgentSit] = 'AgentSitMessage';
messages[Message_1.Message.AgentQuitCopy] = 'AgentQuitCopyMessage';
messages[Message_1.Message.RequestImage] = 'RequestImageMessage';
messages[Message_1.Message.ImageNotInDatabase] = 'ImageNotInDatabaseMessage';
messages[Message_1.Message.RebakeAvatarTextures] = 'RebakeAvatarTexturesMessage';
messages[Message_1.Message.SetAlwaysRun] = 'SetAlwaysRunMessage';
messages[Message_1.Message.ObjectAdd] = 'ObjectAddMessage';
messages[Message_1.Message.ObjectDelete] = 'ObjectDeleteMessage';
messages[Message_1.Message.ObjectDuplicate] = 'ObjectDuplicateMessage';
messages[Message_1.Message.ObjectDuplicateOnRay] = 'ObjectDuplicateOnRayMessage';
messages[Message_1.Message.MultipleObjectUpdate] = 'MultipleObjectUpdateMessage';
messages[Message_1.Message.RequestMultipleObjects] = 'RequestMultipleObjectsMessage';
messages[Message_1.Message.ObjectPosition] = 'ObjectPositionMessage';
messages[Message_1.Message.ObjectScale] = 'ObjectScaleMessage';
messages[Message_1.Message.ObjectRotation] = 'ObjectRotationMessage';
messages[Message_1.Message.ObjectFlagUpdate] = 'ObjectFlagUpdateMessage';
messages[Message_1.Message.ObjectClickAction] = 'ObjectClickActionMessage';
messages[Message_1.Message.ObjectImage] = 'ObjectImageMessage';
messages[Message_1.Message.ObjectMaterial] = 'ObjectMaterialMessage';
messages[Message_1.Message.ObjectShape] = 'ObjectShapeMessage';
messages[Message_1.Message.ObjectExtraParams] = 'ObjectExtraParamsMessage';
messages[Message_1.Message.ObjectOwner] = 'ObjectOwnerMessage';
messages[Message_1.Message.ObjectGroup] = 'ObjectGroupMessage';
messages[Message_1.Message.ObjectBuy] = 'ObjectBuyMessage';
messages[Message_1.Message.BuyObjectInventory] = 'BuyObjectInventoryMessage';
messages[Message_1.Message.DerezContainer] = 'DerezContainerMessage';
messages[Message_1.Message.ObjectPermissions] = 'ObjectPermissionsMessage';
messages[Message_1.Message.ObjectSaleInfo] = 'ObjectSaleInfoMessage';
messages[Message_1.Message.ObjectName] = 'ObjectNameMessage';
messages[Message_1.Message.ObjectDescription] = 'ObjectDescriptionMessage';
messages[Message_1.Message.ObjectCategory] = 'ObjectCategoryMessage';
messages[Message_1.Message.ObjectSelect] = 'ObjectSelectMessage';
messages[Message_1.Message.ObjectDeselect] = 'ObjectDeselectMessage';
messages[Message_1.Message.ObjectAttach] = 'ObjectAttachMessage';
messages[Message_1.Message.ObjectDetach] = 'ObjectDetachMessage';
messages[Message_1.Message.ObjectDrop] = 'ObjectDropMessage';
messages[Message_1.Message.ObjectLink] = 'ObjectLinkMessage';
messages[Message_1.Message.ObjectDelink] = 'ObjectDelinkMessage';
messages[Message_1.Message.ObjectGrab] = 'ObjectGrabMessage';
messages[Message_1.Message.ObjectGrabUpdate] = 'ObjectGrabUpdateMessage';
messages[Message_1.Message.ObjectDeGrab] = 'ObjectDeGrabMessage';
messages[Message_1.Message.ObjectSpinStart] = 'ObjectSpinStartMessage';
messages[Message_1.Message.ObjectSpinUpdate] = 'ObjectSpinUpdateMessage';
messages[Message_1.Message.ObjectSpinStop] = 'ObjectSpinStopMessage';
messages[Message_1.Message.ObjectExportSelected] = 'ObjectExportSelectedMessage';
messages[Message_1.Message.ModifyLand] = 'ModifyLandMessage';
messages[Message_1.Message.VelocityInterpolateOn] = 'VelocityInterpolateOnMessage';
messages[Message_1.Message.VelocityInterpolateOff] = 'VelocityInterpolateOffMessage';
messages[Message_1.Message.StateSave] = 'StateSaveMessage';
messages[Message_1.Message.ReportAutosaveCrash] = 'ReportAutosaveCrashMessage';
messages[Message_1.Message.SimWideDeletes] = 'SimWideDeletesMessage';
messages[Message_1.Message.RequestObjectPropertiesFamily] = 'RequestObjectPropertiesFamilyMessage';
messages[Message_1.Message.TrackAgent] = 'TrackAgentMessage';
messages[Message_1.Message.ViewerStats] = 'ViewerStatsMessage';
messages[Message_1.Message.ScriptAnswerYes] = 'ScriptAnswerYesMessage';
messages[Message_1.Message.UserReport] = 'UserReportMessage';
messages[Message_1.Message.AlertMessage] = 'AlertMessageMessage';
messages[Message_1.Message.AgentAlertMessage] = 'AgentAlertMessageMessage';
messages[Message_1.Message.MeanCollisionAlert] = 'MeanCollisionAlertMessage';
messages[Message_1.Message.ViewerFrozenMessage] = 'ViewerFrozenMessageMessage';
messages[Message_1.Message.HealthMessage] = 'HealthMessageMessage';
messages[Message_1.Message.ChatFromSimulator] = 'ChatFromSimulatorMessage';
messages[Message_1.Message.SimStats] = 'SimStatsMessage';
messages[Message_1.Message.RequestRegionInfo] = 'RequestRegionInfoMessage';
messages[Message_1.Message.RegionInfo] = 'RegionInfoMessage';
messages[Message_1.Message.GodUpdateRegionInfo] = 'GodUpdateRegionInfoMessage';
messages[Message_1.Message.NearestLandingRegionRequest] = 'NearestLandingRegionRequestMessage';
messages[Message_1.Message.NearestLandingRegionReply] = 'NearestLandingRegionReplyMessage';
messages[Message_1.Message.NearestLandingRegionUpdated] = 'NearestLandingRegionUpdatedMessage';
messages[Message_1.Message.TeleportLandingStatusChanged] = 'TeleportLandingStatusChangedMessage';
messages[Message_1.Message.RegionHandshake] = 'RegionHandshakeMessage';
messages[Message_1.Message.RegionHandshakeReply] = 'RegionHandshakeReplyMessage';
messages[Message_1.Message.CoarseLocationUpdate] = 'CoarseLocationUpdateMessage';
messages[Message_1.Message.ImageData] = 'ImageDataMessage';
messages[Message_1.Message.ImagePacket] = 'ImagePacketMessage';
messages[Message_1.Message.LayerData] = 'LayerDataMessage';
messages[Message_1.Message.ObjectUpdate] = 'ObjectUpdateMessage';
messages[Message_1.Message.ObjectUpdateCompressed] = 'ObjectUpdateCompressedMessage';
messages[Message_1.Message.ObjectUpdateCached] = 'ObjectUpdateCachedMessage';
messages[Message_1.Message.ImprovedTerseObjectUpdate] = 'ImprovedTerseObjectUpdateMessage';
messages[Message_1.Message.KillObject] = 'KillObjectMessage';
messages[Message_1.Message.CrossedRegion] = 'CrossedRegionMessage';
messages[Message_1.Message.SimulatorViewerTimeMessage] = 'SimulatorViewerTimeMessageMessage';
messages[Message_1.Message.EnableSimulator] = 'EnableSimulatorMessage';
messages[Message_1.Message.DisableSimulator] = 'DisableSimulatorMessage';
messages[Message_1.Message.ConfirmEnableSimulator] = 'ConfirmEnableSimulatorMessage';
messages[Message_1.Message.TransferRequest] = 'TransferRequestMessage';
messages[Message_1.Message.TransferInfo] = 'TransferInfoMessage';
messages[Message_1.Message.TransferPacket] = 'TransferPacketMessage';
messages[Message_1.Message.TransferAbort] = 'TransferAbortMessage';
messages[Message_1.Message.RequestXfer] = 'RequestXferMessage';
messages[Message_1.Message.SendXferPacket] = 'SendXferPacketMessage';
messages[Message_1.Message.ConfirmXferPacket] = 'ConfirmXferPacketMessage';
messages[Message_1.Message.AbortXfer] = 'AbortXferMessage';
messages[Message_1.Message.AvatarAnimation] = 'AvatarAnimationMessage';
messages[Message_1.Message.AvatarAppearance] = 'AvatarAppearanceMessage';
messages[Message_1.Message.AvatarSitResponse] = 'AvatarSitResponseMessage';
messages[Message_1.Message.SetFollowCamProperties] = 'SetFollowCamPropertiesMessage';
messages[Message_1.Message.ClearFollowCamProperties] = 'ClearFollowCamPropertiesMessage';
messages[Message_1.Message.CameraConstraint] = 'CameraConstraintMessage';
messages[Message_1.Message.ObjectProperties] = 'ObjectPropertiesMessage';
messages[Message_1.Message.ObjectPropertiesFamily] = 'ObjectPropertiesFamilyMessage';
messages[Message_1.Message.RequestPayPrice] = 'RequestPayPriceMessage';
messages[Message_1.Message.PayPriceReply] = 'PayPriceReplyMessage';
messages[Message_1.Message.KickUser] = 'KickUserMessage';
messages[Message_1.Message.KickUserAck] = 'KickUserAckMessage';
messages[Message_1.Message.GodKickUser] = 'GodKickUserMessage';
messages[Message_1.Message.SystemKickUser] = 'SystemKickUserMessage';
messages[Message_1.Message.EjectUser] = 'EjectUserMessage';
messages[Message_1.Message.FreezeUser] = 'FreezeUserMessage';
messages[Message_1.Message.AvatarPropertiesRequest] = 'AvatarPropertiesRequestMessage';
messages[Message_1.Message.AvatarPropertiesRequestBackend] = 'AvatarPropertiesRequestBackendMessage';
messages[Message_1.Message.AvatarPropertiesReply] = 'AvatarPropertiesReplyMessage';
messages[Message_1.Message.AvatarInterestsReply] = 'AvatarInterestsReplyMessage';
messages[Message_1.Message.AvatarGroupsReply] = 'AvatarGroupsReplyMessage';
messages[Message_1.Message.AvatarPropertiesUpdate] = 'AvatarPropertiesUpdateMessage';
messages[Message_1.Message.AvatarInterestsUpdate] = 'AvatarInterestsUpdateMessage';
messages[Message_1.Message.AvatarNotesReply] = 'AvatarNotesReplyMessage';
messages[Message_1.Message.AvatarNotesUpdate] = 'AvatarNotesUpdateMessage';
messages[Message_1.Message.AvatarPicksReply] = 'AvatarPicksReplyMessage';
messages[Message_1.Message.EventInfoRequest] = 'EventInfoRequestMessage';
messages[Message_1.Message.EventInfoReply] = 'EventInfoReplyMessage';
messages[Message_1.Message.EventNotificationAddRequest] = 'EventNotificationAddRequestMessage';
messages[Message_1.Message.EventNotificationRemoveRequest] = 'EventNotificationRemoveRequestMessage';
messages[Message_1.Message.EventGodDelete] = 'EventGodDeleteMessage';
messages[Message_1.Message.PickInfoReply] = 'PickInfoReplyMessage';
messages[Message_1.Message.PickInfoUpdate] = 'PickInfoUpdateMessage';
messages[Message_1.Message.PickDelete] = 'PickDeleteMessage';
messages[Message_1.Message.PickGodDelete] = 'PickGodDeleteMessage';
messages[Message_1.Message.ScriptQuestion] = 'ScriptQuestionMessage';
messages[Message_1.Message.ScriptControlChange] = 'ScriptControlChangeMessage';
messages[Message_1.Message.ScriptDialog] = 'ScriptDialogMessage';
messages[Message_1.Message.ScriptDialogReply] = 'ScriptDialogReplyMessage';
messages[Message_1.Message.ForceScriptControlRelease] = 'ForceScriptControlReleaseMessage';
messages[Message_1.Message.RevokePermissions] = 'RevokePermissionsMessage';
messages[Message_1.Message.LoadURL] = 'LoadURLMessage';
messages[Message_1.Message.ScriptTeleportRequest] = 'ScriptTeleportRequestMessage';
messages[Message_1.Message.ParcelOverlay] = 'ParcelOverlayMessage';
messages[Message_1.Message.ParcelPropertiesRequest] = 'ParcelPropertiesRequestMessage';
messages[Message_1.Message.ParcelPropertiesRequestByID] = 'ParcelPropertiesRequestByIDMessage';
messages[Message_1.Message.ParcelProperties] = 'ParcelPropertiesMessage';
messages[Message_1.Message.ParcelPropertiesUpdate] = 'ParcelPropertiesUpdateMessage';
messages[Message_1.Message.ParcelReturnObjects] = 'ParcelReturnObjectsMessage';
messages[Message_1.Message.ParcelSetOtherCleanTime] = 'ParcelSetOtherCleanTimeMessage';
messages[Message_1.Message.ParcelDisableObjects] = 'ParcelDisableObjectsMessage';
messages[Message_1.Message.ParcelSelectObjects] = 'ParcelSelectObjectsMessage';
messages[Message_1.Message.EstateCovenantRequest] = 'EstateCovenantRequestMessage';
messages[Message_1.Message.EstateCovenantReply] = 'EstateCovenantReplyMessage';
messages[Message_1.Message.ForceObjectSelect] = 'ForceObjectSelectMessage';
messages[Message_1.Message.ParcelBuyPass] = 'ParcelBuyPassMessage';
messages[Message_1.Message.ParcelDeedToGroup] = 'ParcelDeedToGroupMessage';
messages[Message_1.Message.ParcelReclaim] = 'ParcelReclaimMessage';
messages[Message_1.Message.ParcelClaim] = 'ParcelClaimMessage';
messages[Message_1.Message.ParcelJoin] = 'ParcelJoinMessage';
messages[Message_1.Message.ParcelDivide] = 'ParcelDivideMessage';
messages[Message_1.Message.ParcelRelease] = 'ParcelReleaseMessage';
messages[Message_1.Message.ParcelBuy] = 'ParcelBuyMessage';
messages[Message_1.Message.ParcelGodForceOwner] = 'ParcelGodForceOwnerMessage';
messages[Message_1.Message.ParcelAccessListRequest] = 'ParcelAccessListRequestMessage';
messages[Message_1.Message.ParcelAccessListReply] = 'ParcelAccessListReplyMessage';
messages[Message_1.Message.ParcelAccessListUpdate] = 'ParcelAccessListUpdateMessage';
messages[Message_1.Message.ParcelDwellRequest] = 'ParcelDwellRequestMessage';
messages[Message_1.Message.ParcelDwellReply] = 'ParcelDwellReplyMessage';
messages[Message_1.Message.RequestParcelTransfer] = 'RequestParcelTransferMessage';
messages[Message_1.Message.UpdateParcel] = 'UpdateParcelMessage';
messages[Message_1.Message.RemoveParcel] = 'RemoveParcelMessage';
messages[Message_1.Message.MergeParcel] = 'MergeParcelMessage';
messages[Message_1.Message.LogParcelChanges] = 'LogParcelChangesMessage';
messages[Message_1.Message.CheckParcelSales] = 'CheckParcelSalesMessage';
messages[Message_1.Message.ParcelSales] = 'ParcelSalesMessage';
messages[Message_1.Message.ParcelGodMarkAsContent] = 'ParcelGodMarkAsContentMessage';
messages[Message_1.Message.ViewerStartAuction] = 'ViewerStartAuctionMessage';
messages[Message_1.Message.StartAuction] = 'StartAuctionMessage';
messages[Message_1.Message.ConfirmAuctionStart] = 'ConfirmAuctionStartMessage';
messages[Message_1.Message.CompleteAuction] = 'CompleteAuctionMessage';
messages[Message_1.Message.CancelAuction] = 'CancelAuctionMessage';
messages[Message_1.Message.CheckParcelAuctions] = 'CheckParcelAuctionsMessage';
messages[Message_1.Message.ParcelAuctions] = 'ParcelAuctionsMessage';
messages[Message_1.Message.UUIDNameRequest] = 'UUIDNameRequestMessage';
messages[Message_1.Message.UUIDNameReply] = 'UUIDNameReplyMessage';
messages[Message_1.Message.UUIDGroupNameRequest] = 'UUIDGroupNameRequestMessage';
messages[Message_1.Message.UUIDGroupNameReply] = 'UUIDGroupNameReplyMessage';
messages[Message_1.Message.ChatPass] = 'ChatPassMessage';
messages[Message_1.Message.EdgeDataPacket] = 'EdgeDataPacketMessage';
messages[Message_1.Message.SimStatus] = 'SimStatusMessage';
messages[Message_1.Message.ChildAgentUpdate] = 'ChildAgentUpdateMessage';
messages[Message_1.Message.ChildAgentAlive] = 'ChildAgentAliveMessage';
messages[Message_1.Message.ChildAgentPositionUpdate] = 'ChildAgentPositionUpdateMessage';
messages[Message_1.Message.ChildAgentDying] = 'ChildAgentDyingMessage';
messages[Message_1.Message.ChildAgentUnknown] = 'ChildAgentUnknownMessage';
messages[Message_1.Message.AtomicPassObject] = 'AtomicPassObjectMessage';
messages[Message_1.Message.KillChildAgents] = 'KillChildAgentsMessage';
messages[Message_1.Message.GetScriptRunning] = 'GetScriptRunningMessage';
messages[Message_1.Message.ScriptRunningReply] = 'ScriptRunningReplyMessage';
messages[Message_1.Message.SetScriptRunning] = 'SetScriptRunningMessage';
messages[Message_1.Message.ScriptReset] = 'ScriptResetMessage';
messages[Message_1.Message.ScriptSensorRequest] = 'ScriptSensorRequestMessage';
messages[Message_1.Message.ScriptSensorReply] = 'ScriptSensorReplyMessage';
messages[Message_1.Message.CompleteAgentMovement] = 'CompleteAgentMovementMessage';
messages[Message_1.Message.AgentMovementComplete] = 'AgentMovementCompleteMessage';
messages[Message_1.Message.DataServerLogout] = 'DataServerLogoutMessage';
messages[Message_1.Message.LogoutRequest] = 'LogoutRequestMessage';
messages[Message_1.Message.LogoutReply] = 'LogoutReplyMessage';
messages[Message_1.Message.ImprovedInstantMessage] = 'ImprovedInstantMessageMessage';
messages[Message_1.Message.RetrieveInstantMessages] = 'RetrieveInstantMessagesMessage';
messages[Message_1.Message.FindAgent] = 'FindAgentMessage';
messages[Message_1.Message.RequestGodlikePowers] = 'RequestGodlikePowersMessage';
messages[Message_1.Message.GrantGodlikePowers] = 'GrantGodlikePowersMessage';
messages[Message_1.Message.GodlikeMessage] = 'GodlikeMessageMessage';
messages[Message_1.Message.EstateOwnerMessage] = 'EstateOwnerMessageMessage';
messages[Message_1.Message.GenericMessage] = 'GenericMessageMessage';
messages[Message_1.Message.MuteListRequest] = 'MuteListRequestMessage';
messages[Message_1.Message.UpdateMuteListEntry] = 'UpdateMuteListEntryMessage';
messages[Message_1.Message.RemoveMuteListEntry] = 'RemoveMuteListEntryMessage';
messages[Message_1.Message.CopyInventoryFromNotecard] = 'CopyInventoryFromNotecardMessage';
messages[Message_1.Message.UpdateInventoryItem] = 'UpdateInventoryItemMessage';
messages[Message_1.Message.UpdateCreateInventoryItem] = 'UpdateCreateInventoryItemMessage';
messages[Message_1.Message.MoveInventoryItem] = 'MoveInventoryItemMessage';
messages[Message_1.Message.CopyInventoryItem] = 'CopyInventoryItemMessage';
messages[Message_1.Message.RemoveInventoryItem] = 'RemoveInventoryItemMessage';
messages[Message_1.Message.ChangeInventoryItemFlags] = 'ChangeInventoryItemFlagsMessage';
messages[Message_1.Message.SaveAssetIntoInventory] = 'SaveAssetIntoInventoryMessage';
messages[Message_1.Message.CreateInventoryFolder] = 'CreateInventoryFolderMessage';
messages[Message_1.Message.UpdateInventoryFolder] = 'UpdateInventoryFolderMessage';
messages[Message_1.Message.MoveInventoryFolder] = 'MoveInventoryFolderMessage';
messages[Message_1.Message.RemoveInventoryFolder] = 'RemoveInventoryFolderMessage';
messages[Message_1.Message.FetchInventoryDescendents] = 'FetchInventoryDescendentsMessage';
messages[Message_1.Message.InventoryDescendents] = 'InventoryDescendentsMessage';
messages[Message_1.Message.FetchInventory] = 'FetchInventoryMessage';
messages[Message_1.Message.FetchInventoryReply] = 'FetchInventoryReplyMessage';
messages[Message_1.Message.BulkUpdateInventory] = 'BulkUpdateInventoryMessage';
messages[Message_1.Message.RequestInventoryAsset] = 'RequestInventoryAssetMessage';
messages[Message_1.Message.InventoryAssetResponse] = 'InventoryAssetResponseMessage';
messages[Message_1.Message.RemoveInventoryObjects] = 'RemoveInventoryObjectsMessage';
messages[Message_1.Message.PurgeInventoryDescendents] = 'PurgeInventoryDescendentsMessage';
messages[Message_1.Message.UpdateTaskInventory] = 'UpdateTaskInventoryMessage';
messages[Message_1.Message.RemoveTaskInventory] = 'RemoveTaskInventoryMessage';
messages[Message_1.Message.MoveTaskInventory] = 'MoveTaskInventoryMessage';
messages[Message_1.Message.RequestTaskInventory] = 'RequestTaskInventoryMessage';
messages[Message_1.Message.ReplyTaskInventory] = 'ReplyTaskInventoryMessage';
messages[Message_1.Message.DeRezObject] = 'DeRezObjectMessage';
messages[Message_1.Message.DeRezAck] = 'DeRezAckMessage';
messages[Message_1.Message.RezObject] = 'RezObjectMessage';
messages[Message_1.Message.RezObjectFromNotecard] = 'RezObjectFromNotecardMessage';
messages[Message_1.Message.TransferInventory] = 'TransferInventoryMessage';
messages[Message_1.Message.TransferInventoryAck] = 'TransferInventoryAckMessage';
messages[Message_1.Message.AcceptFriendship] = 'AcceptFriendshipMessage';
messages[Message_1.Message.DeclineFriendship] = 'DeclineFriendshipMessage';
messages[Message_1.Message.FormFriendship] = 'FormFriendshipMessage';
messages[Message_1.Message.TerminateFriendship] = 'TerminateFriendshipMessage';
messages[Message_1.Message.OfferCallingCard] = 'OfferCallingCardMessage';
messages[Message_1.Message.AcceptCallingCard] = 'AcceptCallingCardMessage';
messages[Message_1.Message.DeclineCallingCard] = 'DeclineCallingCardMessage';
messages[Message_1.Message.RezScript] = 'RezScriptMessage';
messages[Message_1.Message.CreateInventoryItem] = 'CreateInventoryItemMessage';
messages[Message_1.Message.CreateLandmarkForEvent] = 'CreateLandmarkForEventMessage';
messages[Message_1.Message.EventLocationRequest] = 'EventLocationRequestMessage';
messages[Message_1.Message.EventLocationReply] = 'EventLocationReplyMessage';
messages[Message_1.Message.RegionHandleRequest] = 'RegionHandleRequestMessage';
messages[Message_1.Message.RegionIDAndHandleReply] = 'RegionIDAndHandleReplyMessage';
messages[Message_1.Message.MoneyTransferRequest] = 'MoneyTransferRequestMessage';
messages[Message_1.Message.MoneyTransferBackend] = 'MoneyTransferBackendMessage';
messages[Message_1.Message.MoneyBalanceRequest] = 'MoneyBalanceRequestMessage';
messages[Message_1.Message.MoneyBalanceReply] = 'MoneyBalanceReplyMessage';
messages[Message_1.Message.RoutedMoneyBalanceReply] = 'RoutedMoneyBalanceReplyMessage';
messages[Message_1.Message.ActivateGestures] = 'ActivateGesturesMessage';
messages[Message_1.Message.DeactivateGestures] = 'DeactivateGesturesMessage';
messages[Message_1.Message.MuteListUpdate] = 'MuteListUpdateMessage';
messages[Message_1.Message.UseCachedMuteList] = 'UseCachedMuteListMessage';
messages[Message_1.Message.GrantUserRights] = 'GrantUserRightsMessage';
messages[Message_1.Message.ChangeUserRights] = 'ChangeUserRightsMessage';
messages[Message_1.Message.OnlineNotification] = 'OnlineNotificationMessage';
messages[Message_1.Message.OfflineNotification] = 'OfflineNotificationMessage';
messages[Message_1.Message.SetStartLocationRequest] = 'SetStartLocationRequestMessage';
messages[Message_1.Message.SetStartLocation] = 'SetStartLocationMessage';
messages[Message_1.Message.NetTest] = 'NetTestMessage';
messages[Message_1.Message.SetCPURatio] = 'SetCPURatioMessage';
messages[Message_1.Message.SimCrashed] = 'SimCrashedMessage';
messages[Message_1.Message.NameValuePair] = 'NameValuePairMessage';
messages[Message_1.Message.RemoveNameValuePair] = 'RemoveNameValuePairMessage';
messages[Message_1.Message.UpdateAttachment] = 'UpdateAttachmentMessage';
messages[Message_1.Message.RemoveAttachment] = 'RemoveAttachmentMessage';
messages[Message_1.Message.SoundTrigger] = 'SoundTriggerMessage';
messages[Message_1.Message.AttachedSound] = 'AttachedSoundMessage';
messages[Message_1.Message.AttachedSoundGainChange] = 'AttachedSoundGainChangeMessage';
messages[Message_1.Message.PreloadSound] = 'PreloadSoundMessage';
messages[Message_1.Message.AssetUploadRequest] = 'AssetUploadRequestMessage';
messages[Message_1.Message.AssetUploadComplete] = 'AssetUploadCompleteMessage';
messages[Message_1.Message.EmailMessageRequest] = 'EmailMessageRequestMessage';
messages[Message_1.Message.EmailMessageReply] = 'EmailMessageReplyMessage';
messages[Message_1.Message.InternalScriptMail] = 'InternalScriptMailMessage';
messages[Message_1.Message.ScriptDataRequest] = 'ScriptDataRequestMessage';
messages[Message_1.Message.ScriptDataReply] = 'ScriptDataReplyMessage';
messages[Message_1.Message.CreateGroupRequest] = 'CreateGroupRequestMessage';
messages[Message_1.Message.CreateGroupReply] = 'CreateGroupReplyMessage';
messages[Message_1.Message.UpdateGroupInfo] = 'UpdateGroupInfoMessage';
messages[Message_1.Message.GroupRoleChanges] = 'GroupRoleChangesMessage';
messages[Message_1.Message.JoinGroupRequest] = 'JoinGroupRequestMessage';
messages[Message_1.Message.JoinGroupReply] = 'JoinGroupReplyMessage';
messages[Message_1.Message.EjectGroupMemberRequest] = 'EjectGroupMemberRequestMessage';
messages[Message_1.Message.EjectGroupMemberReply] = 'EjectGroupMemberReplyMessage';
messages[Message_1.Message.LeaveGroupRequest] = 'LeaveGroupRequestMessage';
messages[Message_1.Message.LeaveGroupReply] = 'LeaveGroupReplyMessage';
messages[Message_1.Message.InviteGroupRequest] = 'InviteGroupRequestMessage';
messages[Message_1.Message.InviteGroupResponse] = 'InviteGroupResponseMessage';
messages[Message_1.Message.GroupProfileRequest] = 'GroupProfileRequestMessage';
messages[Message_1.Message.GroupProfileReply] = 'GroupProfileReplyMessage';
messages[Message_1.Message.GroupAccountSummaryRequest] = 'GroupAccountSummaryRequestMessage';
messages[Message_1.Message.GroupAccountSummaryReply] = 'GroupAccountSummaryReplyMessage';
messages[Message_1.Message.GroupAccountDetailsRequest] = 'GroupAccountDetailsRequestMessage';
messages[Message_1.Message.GroupAccountDetailsReply] = 'GroupAccountDetailsReplyMessage';
messages[Message_1.Message.GroupAccountTransactionsRequest] = 'GroupAccountTransactionsRequestMessage';
messages[Message_1.Message.GroupAccountTransactionsReply] = 'GroupAccountTransactionsReplyMessage';
messages[Message_1.Message.GroupActiveProposalsRequest] = 'GroupActiveProposalsRequestMessage';
messages[Message_1.Message.GroupActiveProposalItemReply] = 'GroupActiveProposalItemReplyMessage';
messages[Message_1.Message.GroupVoteHistoryRequest] = 'GroupVoteHistoryRequestMessage';
messages[Message_1.Message.GroupVoteHistoryItemReply] = 'GroupVoteHistoryItemReplyMessage';
messages[Message_1.Message.StartGroupProposal] = 'StartGroupProposalMessage';
messages[Message_1.Message.GroupProposalBallot] = 'GroupProposalBallotMessage';
messages[Message_1.Message.TallyVotes] = 'TallyVotesMessage';
messages[Message_1.Message.GroupMembersRequest] = 'GroupMembersRequestMessage';
messages[Message_1.Message.GroupMembersReply] = 'GroupMembersReplyMessage';
messages[Message_1.Message.ActivateGroup] = 'ActivateGroupMessage';
messages[Message_1.Message.SetGroupContribution] = 'SetGroupContributionMessage';
messages[Message_1.Message.SetGroupAcceptNotices] = 'SetGroupAcceptNoticesMessage';
messages[Message_1.Message.GroupRoleDataRequest] = 'GroupRoleDataRequestMessage';
messages[Message_1.Message.GroupRoleDataReply] = 'GroupRoleDataReplyMessage';
messages[Message_1.Message.GroupRoleMembersRequest] = 'GroupRoleMembersRequestMessage';
messages[Message_1.Message.GroupRoleMembersReply] = 'GroupRoleMembersReplyMessage';
messages[Message_1.Message.GroupTitlesRequest] = 'GroupTitlesRequestMessage';
messages[Message_1.Message.GroupTitlesReply] = 'GroupTitlesReplyMessage';
messages[Message_1.Message.GroupTitleUpdate] = 'GroupTitleUpdateMessage';
messages[Message_1.Message.GroupRoleUpdate] = 'GroupRoleUpdateMessage';
messages[Message_1.Message.LiveHelpGroupRequest] = 'LiveHelpGroupRequestMessage';
messages[Message_1.Message.LiveHelpGroupReply] = 'LiveHelpGroupReplyMessage';
messages[Message_1.Message.AgentWearablesRequest] = 'AgentWearablesRequestMessage';
messages[Message_1.Message.AgentWearablesUpdate] = 'AgentWearablesUpdateMessage';
messages[Message_1.Message.AgentIsNowWearing] = 'AgentIsNowWearingMessage';
messages[Message_1.Message.AgentCachedTexture] = 'AgentCachedTextureMessage';
messages[Message_1.Message.AgentCachedTextureResponse] = 'AgentCachedTextureResponseMessage';
messages[Message_1.Message.AgentDataUpdateRequest] = 'AgentDataUpdateRequestMessage';
messages[Message_1.Message.AgentDataUpdate] = 'AgentDataUpdateMessage';
messages[Message_1.Message.GroupDataUpdate] = 'GroupDataUpdateMessage';
messages[Message_1.Message.AgentGroupDataUpdate] = 'AgentGroupDataUpdateMessage';
messages[Message_1.Message.AgentDropGroup] = 'AgentDropGroupMessage';
messages[Message_1.Message.LogTextMessage] = 'LogTextMessageMessage';
messages[Message_1.Message.ViewerEffect] = 'ViewerEffectMessage';
messages[Message_1.Message.CreateTrustedCircuit] = 'CreateTrustedCircuitMessage';
messages[Message_1.Message.DenyTrustedCircuit] = 'DenyTrustedCircuitMessage';
messages[Message_1.Message.RequestTrustedCircuit] = 'RequestTrustedCircuitMessage';
messages[Message_1.Message.RezSingleAttachmentFromInv] = 'RezSingleAttachmentFromInvMessage';
messages[Message_1.Message.RezMultipleAttachmentsFromInv] = 'RezMultipleAttachmentsFromInvMessage';
messages[Message_1.Message.DetachAttachmentIntoInv] = 'DetachAttachmentIntoInvMessage';
messages[Message_1.Message.CreateNewOutfitAttachments] = 'CreateNewOutfitAttachmentsMessage';
messages[Message_1.Message.UserInfoRequest] = 'UserInfoRequestMessage';
messages[Message_1.Message.UserInfoReply] = 'UserInfoReplyMessage';
messages[Message_1.Message.UpdateUserInfo] = 'UpdateUserInfoMessage';
messages[Message_1.Message.ParcelRename] = 'ParcelRenameMessage';
messages[Message_1.Message.InitiateDownload] = 'InitiateDownloadMessage';
messages[Message_1.Message.SystemMessage] = 'SystemMessageMessage';
messages[Message_1.Message.MapLayerRequest] = 'MapLayerRequestMessage';
messages[Message_1.Message.MapLayerReply] = 'MapLayerReplyMessage';
messages[Message_1.Message.MapBlockRequest] = 'MapBlockRequestMessage';
messages[Message_1.Message.MapNameRequest] = 'MapNameRequestMessage';
messages[Message_1.Message.MapBlockReply] = 'MapBlockReplyMessage';
messages[Message_1.Message.MapItemRequest] = 'MapItemRequestMessage';
messages[Message_1.Message.MapItemReply] = 'MapItemReplyMessage';
messages[Message_1.Message.SendPostcard] = 'SendPostcardMessage';
messages[Message_1.Message.RpcChannelRequest] = 'RpcChannelRequestMessage';
messages[Message_1.Message.RpcChannelReply] = 'RpcChannelReplyMessage';
messages[Message_1.Message.RpcScriptRequestInbound] = 'RpcScriptRequestInboundMessage';
messages[Message_1.Message.RpcScriptRequestInboundForward] = 'RpcScriptRequestInboundForwardMessage';
messages[Message_1.Message.RpcScriptReplyInbound] = 'RpcScriptReplyInboundMessage';
messages[Message_1.Message.ScriptMailRegistration] = 'ScriptMailRegistrationMessage';
messages[Message_1.Message.ParcelMediaCommandMessage] = 'ParcelMediaCommandMessageMessage';
messages[Message_1.Message.ParcelMediaUpdate] = 'ParcelMediaUpdateMessage';
messages[Message_1.Message.LandStatRequest] = 'LandStatRequestMessage';
messages[Message_1.Message.LandStatReply] = 'LandStatReplyMessage';
messages[Message_1.Message.Error] = 'ErrorMessage';
messages[Message_1.Message.ObjectIncludeInSearch] = 'ObjectIncludeInSearchMessage';
messages[Message_1.Message.RezRestoreToWorld] = 'RezRestoreToWorldMessage';
messages[Message_1.Message.LinkInventoryItem] = 'LinkInventoryItemMessage';
messages[Message_1.Message.RetrieveIMsExtended] = 'RetrieveIMsExtendedMessage';
messages[Message_1.Message.JoinGroupRequestExtended] = 'JoinGroupRequestExtendedMessage';
messages[Message_1.Message.CreateGroupRequestExtended] = 'CreateGroupRequestExtendedMessage';
function nameFromID(id) {
return messages[id];
}
exports.nameFromID = nameFromID;
//# sourceMappingURL=MessageClasses.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +0,0 @@
export declare class NameValue {
type: string;
class: string;
sendTo: string;
value: string;
}

View File

@@ -1,6 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
class NameValue {
}
exports.NameValue = NameValue;
//# sourceMappingURL=NameValue.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"NameValue.js","sourceRoot":"","sources":["../../lib/classes/NameValue.ts"],"names":[],"mappings":";;AAAA,MAAa,SAAS;CAMrB;AAND,8BAMC"}

View File

@@ -1,19 +0,0 @@
import { Circuit } from './Circuit';
import { ObjectUpdateMessage } from './messages/ObjectUpdate';
import { ObjectUpdateCachedMessage } from './messages/ObjectUpdateCached';
import { ObjectUpdateCompressedMessage } from './messages/ObjectUpdateCompressed';
import { ImprovedTerseObjectUpdateMessage } from './messages/ImprovedTerseObjectUpdate';
import { Agent } from './Agent';
import { ClientEvents } from './ClientEvents';
import { IObjectStore } from './interfaces/IObjectStore';
import { BotOptionFlags } from '..';
import { RBush3D } from 'rbush-3d/dist';
import { ObjectStoreLite } from './ObjectStoreLite';
export declare class ObjectStoreFull extends ObjectStoreLite implements IObjectStore {
rtree?: RBush3D;
constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags);
protected objectUpdate(objectUpdate: ObjectUpdateMessage): void;
protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage): void;
protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage): void;
protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage): void;
}

View File

@@ -1,453 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const RequestMultipleObjects_1 = require("./messages/RequestMultipleObjects");
const UUID_1 = require("./UUID");
const Quaternion_1 = require("./Quaternion");
const Vector3_1 = require("./Vector3");
const Utils_1 = require("./Utils");
const PCode_1 = require("../enums/PCode");
const __1 = require("..");
const dist_1 = require("rbush-3d/dist");
const Vector4_1 = require("./Vector4");
const TextureEntry_1 = require("./TextureEntry");
const Color4_1 = require("./Color4");
const ParticleSystem_1 = require("./ParticleSystem");
const GameObject_1 = require("./GameObject");
const ObjectStoreLite_1 = require("./ObjectStoreLite");
class ObjectStoreFull extends ObjectStoreLite_1.ObjectStoreLite {
constructor(circuit, agent, clientEvents, options) {
super(circuit, agent, clientEvents, options);
this.rtree = new dist_1.RBush3D();
}
objectUpdate(objectUpdate) {
for (const objData of objectUpdate.ObjectData) {
const localID = objData.ID;
const parentID = objData.ParentID;
let addToParentList = true;
if (this.objects[localID]) {
if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) {
const ind = this.objectsByParent[parentID].indexOf(localID);
if (ind !== -1) {
this.objectsByParent[parentID].splice(ind, 1);
}
}
else {
addToParentList = false;
}
}
else {
this.objects[localID] = new GameObject_1.GameObject();
}
const obj = this.objects[localID];
obj.ID = objData.ID;
obj.State = objData.State;
obj.FullID = objData.FullID;
obj.CRC = objData.CRC;
obj.PCode = objData.PCode;
obj.Material = objData.Material;
obj.ClickAction = objData.ClickAction;
obj.Scale = objData.Scale;
obj.ObjectData = objData.ObjectData;
const data = objData.ObjectData;
let dataPos = 0;
switch (data.length) {
case 76:
obj.CollisionPlane = new Vector4_1.Vector4(objData.ObjectData, dataPos);
dataPos += 16;
case 60:
obj.Position = new Vector3_1.Vector3(objData.ObjectData, dataPos);
dataPos += 12;
obj.Velocity = new Vector3_1.Vector3(objData.ObjectData, dataPos);
dataPos += 12;
obj.Acceleration = new Vector3_1.Vector3(objData.ObjectData, dataPos);
dataPos += 12;
obj.Rotation = new Quaternion_1.Quaternion(objData.ObjectData, dataPos);
dataPos += 12;
obj.AngularVelocity = new Vector3_1.Vector3(objData.ObjectData, dataPos);
dataPos += 12;
break;
case 48:
obj.CollisionPlane = new Vector4_1.Vector4(objData.ObjectData, dataPos);
dataPos += 16;
case 32:
obj.Position = new Vector3_1.Vector3([
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -0.5 * 256.0, 1.5 * 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -0.5 * 256.0, 1.5 * 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 3.0 * 256.0)
]);
dataPos += 6;
obj.Velocity = new Vector3_1.Vector3([
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
]);
dataPos += 6;
obj.Acceleration = new Vector3_1.Vector3([
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
]);
dataPos += 6;
obj.Rotation = new Quaternion_1.Quaternion([
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -1.0, 1.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -1.0, 1.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0)
]);
dataPos += 8;
obj.AngularVelocity = new Vector3_1.Vector3([
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
]);
dataPos += 6;
break;
case 16:
obj.Position = new Vector3_1.Vector3([
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
]);
obj.Velocity = new Vector3_1.Vector3([
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
]);
obj.Acceleration = new Vector3_1.Vector3([
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
]);
obj.Rotation = new Quaternion_1.Quaternion([
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0)
]);
obj.AngularVelocity = new Vector3_1.Vector3([
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
]);
break;
}
obj.ParentID = objData.ParentID;
obj.Flags = objData.UpdateFlags;
obj.PathCurve = objData.PathCurve;
obj.ProfileCurve = objData.ProfileCurve;
obj.PathBegin = objData.PathBegin;
obj.PathEnd = objData.PathEnd;
obj.PathScaleX = objData.PathScaleX;
obj.PathScaleY = objData.PathScaleY;
obj.PathShearX = objData.PathShearX;
obj.PathShearY = objData.PathShearY;
obj.PathTwist = objData.PathTwist;
obj.PathTwistBegin = objData.PathTwistBegin;
obj.PathRadiusOffset = objData.PathRadiusOffset;
obj.PathTaperX = objData.PathTaperX;
obj.PathTaperY = objData.PathTaperY;
obj.PathRevolutions = objData.PathRevolutions;
obj.PathSkew = objData.PathSkew;
obj.ProfileBegin = objData.ProfileBegin;
obj.ProfileEnd = objData.ProfileEnd;
obj.ProfileHollow = objData.ProfileHollow;
obj.TextureEntry = new TextureEntry_1.TextureEntry(objData.TextureEntry);
obj.TextureAnim = objData.TextureAnim;
const pcodeData = objData.Data;
obj.Text = Utils_1.Utils.BufferToStringSimple(objData.Text);
obj.TextColor = new Color4_1.Color4(objData.TextColor, 0, false, true);
obj.MediaURL = Utils_1.Utils.BufferToStringSimple(objData.MediaURL);
obj.PSBlock = objData.PSBlock;
obj.Sound = objData.Sound;
obj.OwnerID = objData.OwnerID;
obj.SoundGain = objData.Gain;
obj.SoundFlags = objData.Flags;
obj.SoundRadius = objData.Radius;
obj.JointType = objData.JointType;
obj.JointPivot = objData.JointPivot;
obj.JointAxisOrAnchor = objData.JointAxisOrAnchor;
switch (obj.PCode) {
case PCode_1.PCode.Grass:
case PCode_1.PCode.Tree:
case PCode_1.PCode.NewTree:
if (pcodeData.length === 1) {
obj.TreeSpecies = pcodeData[0];
}
break;
}
if (this.objects[localID].PCode === PCode_1.PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) {
this.agent.localID = localID;
if (this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) {
Object.keys(this.objectsByParent).forEach((objParentID) => {
const parent = parseInt(objParentID, 10);
if (parent !== this.agent.localID) {
let foundAvatars = false;
this.objectsByParent[parent].forEach((objID) => {
if (this.objects[objID]) {
const o = this.objects[objID];
if (o.PCode === PCode_1.PCode.Avatar) {
foundAvatars = true;
}
}
});
if (this.objects[parent]) {
const o = this.objects[parent];
if (o.PCode === PCode_1.PCode.Avatar) {
foundAvatars = true;
}
}
if (!foundAvatars) {
this.deleteObject(parent);
}
}
});
}
}
this.readExtraParams(objData.ExtraParams, 0, this.objects[localID]);
this.objects[localID].NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue));
this.objectsByUUID[objData.FullID.toString()] = localID;
if (!this.objectsByParent[parentID]) {
this.objectsByParent[parentID] = [];
}
if (addToParentList) {
this.objectsByParent[parentID].push(localID);
}
if (objData.PCode !== PCode_1.PCode.Avatar && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID)) {
this.deleteObject(localID);
}
else {
this.insertIntoRtree(obj);
}
}
}
objectUpdateCached(objectUpdateCached) {
const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage();
rmo.AgentData = {
AgentID: this.agent.agentID,
SessionID: this.circuit.sessionID
};
rmo.ObjectData = [];
for (const obj of objectUpdateCached.ObjectData) {
if (!this.objects[obj.ID]) {
rmo.ObjectData.push({
CacheMissType: 0,
ID: obj.ID
});
}
}
if (rmo.ObjectData.length > 0) {
this.circuit.sendMessage(rmo, 0);
}
}
objectUpdateCompressed(objectUpdateCompressed) {
for (const obj of objectUpdateCompressed.ObjectData) {
const flags = obj.UpdateFlags;
const buf = obj.Data;
let pos = 0;
const fullID = new UUID_1.UUID(buf, pos);
pos += 16;
const localID = buf.readUInt32LE(pos);
pos += 4;
const pcode = buf.readUInt8(pos++);
let newObj = false;
if (!this.objects[localID]) {
newObj = true;
this.objects[localID] = new GameObject_1.GameObject();
}
const o = this.objects[localID];
o.ID = localID;
this.objectsByUUID[fullID.toString()] = localID;
o.FullID = fullID;
o.Flags = flags;
o.PCode = pcode;
o.State = buf.readUInt8(pos++);
o.CRC = buf.readUInt32LE(pos);
pos = pos + 4;
o.Material = buf.readUInt8(pos++);
o.ClickAction = buf.readUInt8(pos++);
o.Scale = new Vector3_1.Vector3(buf, pos, false);
pos = pos + 12;
o.Position = new Vector3_1.Vector3(buf, pos, false);
pos = pos + 12;
o.Rotation = new Quaternion_1.Quaternion(buf, pos);
pos = pos + 12;
const compressedflags = buf.readUInt32LE(pos);
pos = pos + 4;
o.OwnerID = new UUID_1.UUID(buf, pos);
pos += 16;
if (compressedflags & __1.CompressedFlags.HasAngularVelocity) {
o.AngularVelocity = new Vector3_1.Vector3(buf, pos, false);
pos = pos + 12;
}
if (compressedflags & __1.CompressedFlags.HasParent) {
const newParentID = buf.readUInt32LE(pos);
pos += 4;
let add = true;
if (!newObj) {
if (newParentID !== o.ParentID) {
const index = this.objectsByParent[o.ParentID].indexOf(localID);
if (index !== -1) {
this.objectsByParent[o.ParentID].splice(index, 1);
}
}
else {
add = false;
}
}
if (add) {
if (!this.objectsByParent[newParentID]) {
this.objectsByParent[newParentID] = [];
}
this.objectsByParent[newParentID].push(localID);
}
o.ParentID = newParentID;
}
if (pcode !== PCode_1.PCode.Avatar && newObj && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && o.ParentID !== this.agent.localID)) {
this.deleteObject(localID);
return;
}
else {
if (compressedflags & __1.CompressedFlags.Tree) {
o.TreeSpecies = buf.readUInt8(pos++);
}
else if (compressedflags & __1.CompressedFlags.ScratchPad) {
o.TreeSpecies = 0;
const scratchPadSize = buf.readUInt8(pos++);
pos = pos + scratchPadSize;
}
if (compressedflags & __1.CompressedFlags.HasText) {
const result = Utils_1.Utils.BufferToString(buf, pos);
pos += result.readLength;
o.Text = result.result;
o.TextColor = new Color4_1.Color4(buf, pos, false, true);
pos = pos + 4;
}
else {
o.Text = '';
}
if (compressedflags & __1.CompressedFlags.MediaURL) {
const result = Utils_1.Utils.BufferToString(buf, pos);
pos += result.readLength;
o.MediaURL = result.result;
}
if (compressedflags & __1.CompressedFlags.HasParticles) {
o.Particles = new ParticleSystem_1.ParticleSystem(buf.slice(pos, pos + 86), 0);
pos += 86;
}
pos = this.readExtraParams(buf, pos, o);
if (compressedflags & __1.CompressedFlags.HasSound) {
o.Sound = new UUID_1.UUID(buf, pos);
pos = pos + 16;
o.SoundGain = buf.readFloatLE(pos);
pos += 4;
o.SoundFlags = buf.readUInt8(pos++);
o.SoundRadius = buf.readFloatLE(pos);
pos = pos + 4;
}
if (compressedflags & __1.CompressedFlags.HasNameValues) {
const result = Utils_1.Utils.BufferToString(buf, pos);
o.NameValue = this.parseNameValues(result.result);
pos += result.readLength;
}
o.PathCurve = buf.readUInt8(pos++);
o.PathBegin = buf.readUInt16LE(pos);
pos = pos + 2;
o.PathEnd = buf.readUInt16LE(pos);
pos = pos + 2;
o.PathScaleX = buf.readUInt8(pos++);
o.PathScaleY = buf.readUInt8(pos++);
o.PathShearX = buf.readUInt8(pos++);
o.PathShearY = buf.readUInt8(pos++);
o.PathTwist = buf.readUInt8(pos++);
o.PathTwistBegin = buf.readUInt8(pos++);
o.PathRadiusOffset = buf.readUInt8(pos++);
o.PathTaperX = buf.readUInt8(pos++);
o.PathTaperY = buf.readUInt8(pos++);
o.PathRevolutions = buf.readUInt8(pos++);
o.PathSkew = buf.readUInt8(pos++);
o.ProfileCurve = buf.readUInt8(pos++);
o.ProfileBegin = buf.readUInt16LE(pos);
pos = pos + 2;
o.ProfileEnd = buf.readUInt16LE(pos);
pos = pos + 2;
o.ProfileHollow = buf.readUInt16LE(pos);
pos = pos + 2;
const textureEntryLength = buf.readUInt32LE(pos);
pos = pos + 4;
o.TextureEntry = new TextureEntry_1.TextureEntry(buf.slice(pos, pos + textureEntryLength));
pos = pos + textureEntryLength;
if (compressedflags & __1.CompressedFlags.TextureAnimation) {
pos = pos + 4;
}
o.IsAttachment = (compressedflags & __1.CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0;
this.insertIntoRtree(o);
}
}
}
objectUpdateTerse(objectUpdateTerse) {
const dilation = objectUpdateTerse.RegionData.TimeDilation / 65535.0;
for (let i = 0; i < objectUpdateTerse.ObjectData.length; i++) {
const objectData = objectUpdateTerse.ObjectData[i];
if (!(this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly)) {
let pos = 0;
const localID = objectData.Data.readUInt32LE(pos);
pos = pos + 4;
if (this.objects[localID]) {
this.objects[localID].State = objectData.Data.readUInt8(pos++);
const avatar = (objectData.Data.readUInt8(pos++) !== 0);
if (avatar) {
this.objects[localID].CollisionPlane = new Vector4_1.Vector4(objectData.Data, pos);
pos += 16;
}
this.objects[localID].Position = new Vector3_1.Vector3(objectData.Data, pos);
pos += 12;
this.objects[localID].Velocity = new Vector3_1.Vector3([
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -128.0, 128.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -128.0, 128.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -128.0, 128.0)
]);
pos += 6;
this.objects[localID].Acceleration = new Vector3_1.Vector3([
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0)
]);
pos += 6;
this.objects[localID].Rotation = new Quaternion_1.Quaternion([
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -1.0, 1.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -1.0, 1.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -1.0, 1.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 6), -1.0, 1.0)
]);
pos += 8;
this.objects[localID].AngularVelocity = new Vector3_1.Vector3([
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0),
Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0)
]);
pos += 6;
if (objectData.TextureEntry.length > 0) {
this.objects[localID].TextureEntry = new TextureEntry_1.TextureEntry(objectData.TextureEntry.slice(4));
}
this.insertIntoRtree(this.objects[localID]);
}
else {
console.log('Received terse update for object ' + localID + ' which is not in the store, so requesting the object');
const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage();
rmo.AgentData = {
AgentID: this.agent.agentID,
SessionID: this.circuit.sessionID
};
rmo.ObjectData = [];
rmo.ObjectData.push({
CacheMissType: 0,
ID: localID
});
this.circuit.sendMessage(rmo, 0);
}
}
}
}
}
exports.ObjectStoreFull = ObjectStoreFull;
//# sourceMappingURL=ObjectStoreFull.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,54 +0,0 @@
/// <reference types="node" />
import { Circuit } from './Circuit';
import { ObjectUpdateMessage } from './messages/ObjectUpdate';
import { ObjectUpdateCachedMessage } from './messages/ObjectUpdateCached';
import { ObjectUpdateCompressedMessage } from './messages/ObjectUpdateCompressed';
import { ImprovedTerseObjectUpdateMessage } from './messages/ImprovedTerseObjectUpdate';
import { MultipleObjectUpdateMessage } from './messages/MultipleObjectUpdate';
import { Agent } from './Agent';
import { UUID } from './UUID';
import { ClientEvents } from './ClientEvents';
import { KillObjectMessage } from './messages/KillObject';
import { IObjectStore } from './interfaces/IObjectStore';
import { NameValue } from './NameValue';
import { BotOptionFlags } from '..';
import { GameObject } from './GameObject';
import { RBush3D } from 'rbush-3d/dist';
export declare class ObjectStoreLite implements IObjectStore {
protected circuit: Circuit;
protected agent: Agent;
protected objects: {
[key: number]: GameObject;
};
protected objectsByUUID: {
[key: string]: number;
};
protected objectsByParent: {
[key: number]: number[];
};
protected clientEvents: ClientEvents;
protected options: BotOptionFlags;
rtree?: RBush3D;
constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags);
protected objectUpdate(objectUpdate: ObjectUpdateMessage): void;
protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage): void;
protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage): void;
protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage): void;
protected objectUpdateMultiple(objectUpdateMultiple: MultipleObjectUpdateMessage): void;
protected killObject(killObj: KillObjectMessage): void;
deleteObject(objectID: number): void;
readExtraParams(buf: Buffer, pos: number, o: GameObject): number;
getObjectsByParent(parentID: number): GameObject[];
parseNameValues(str: string): {
[key: string]: NameValue;
};
shutdown(): void;
protected findParent(go: GameObject): GameObject;
private populateChildren;
getAllObjects(): GameObject[];
getNumberOfObjects(): number;
getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[];
getObjectByUUID(fullID: UUID | string): GameObject;
getObjectByLocalID(localID: number): GameObject;
insertIntoRtree(obj: GameObject): void;
}

View File

@@ -1,478 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Message_1 = require("../enums/Message");
const RequestMultipleObjects_1 = require("./messages/RequestMultipleObjects");
const UUID_1 = require("./UUID");
const Utils_1 = require("./Utils");
const PCode_1 = require("../enums/PCode");
const NameValue_1 = require("./NameValue");
const __1 = require("..");
const GameObject_1 = require("./GameObject");
class ObjectStoreLite {
constructor(circuit, agent, clientEvents, options) {
this.objects = {};
this.objectsByUUID = {};
this.objectsByParent = {};
agent.localID = 0;
this.options = options;
this.clientEvents = clientEvents;
this.circuit = circuit;
this.agent = agent;
this.circuit.subscribeToMessages([
Message_1.Message.ObjectUpdate,
Message_1.Message.ObjectUpdateCached,
Message_1.Message.ObjectUpdateCompressed,
Message_1.Message.ImprovedTerseObjectUpdate,
Message_1.Message.MultipleObjectUpdate,
Message_1.Message.KillObject
], (packet) => {
switch (packet.message.id) {
case Message_1.Message.ObjectUpdate:
const objectUpdate = packet.message;
this.objectUpdate(objectUpdate);
break;
case Message_1.Message.ObjectUpdateCached:
const objectUpdateCached = packet.message;
this.objectUpdateCached(objectUpdateCached);
break;
case Message_1.Message.ObjectUpdateCompressed:
{
const objectUpdateCompressed = packet.message;
this.objectUpdateCompressed(objectUpdateCompressed);
break;
}
case Message_1.Message.ImprovedTerseObjectUpdate:
const objectUpdateTerse = packet.message;
this.objectUpdateTerse(objectUpdateTerse);
break;
case Message_1.Message.MultipleObjectUpdate:
const multipleObjectUpdate = packet.message;
this.objectUpdateMultiple(multipleObjectUpdate);
break;
case Message_1.Message.KillObject:
const killObj = packet.message;
this.killObject(killObj);
break;
}
});
}
objectUpdate(objectUpdate) {
objectUpdate.ObjectData.forEach((objData) => {
const localID = objData.ID;
const parentID = objData.ParentID;
let addToParentList = true;
if (this.objects[localID]) {
if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) {
const ind = this.objectsByParent[parentID].indexOf(localID);
if (ind !== -1) {
this.objectsByParent[parentID].splice(ind, 1);
}
}
else {
addToParentList = false;
}
}
else {
this.objects[localID] = new GameObject_1.GameObject();
}
const obj = this.objects[localID];
obj.ID = objData.ID;
obj.FullID = objData.FullID;
obj.ParentID = objData.ParentID;
obj.OwnerID = objData.OwnerID;
obj.PCode = objData.PCode;
this.objects[localID].NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue));
if (objData.PCode === PCode_1.PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) {
this.agent.localID = localID;
if (this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) {
Object.keys(this.objectsByParent).forEach((objParentID) => {
const parent = parseInt(objParentID, 10);
if (parent !== this.agent.localID) {
let foundAvatars = false;
this.objectsByParent[parent].forEach((objID) => {
if (this.objects[objID]) {
const o = this.objects[objID];
if (o.PCode === PCode_1.PCode.Avatar) {
foundAvatars = true;
}
}
});
if (this.objects[parent]) {
const o = this.objects[parent];
if (o.PCode === PCode_1.PCode.Avatar) {
foundAvatars = true;
}
}
if (!foundAvatars) {
this.deleteObject(parent);
}
}
});
}
}
this.objectsByUUID[objData.FullID.toString()] = localID;
if (!this.objectsByParent[parentID]) {
this.objectsByParent[parentID] = [];
}
if (addToParentList) {
this.objectsByParent[parentID].push(localID);
}
if (objData.PCode !== PCode_1.PCode.Avatar && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) {
if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID) {
this.deleteObject(localID);
return;
}
}
});
}
objectUpdateCached(objectUpdateCached) {
const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage();
rmo.AgentData = {
AgentID: this.agent.agentID,
SessionID: this.circuit.sessionID
};
rmo.ObjectData = [];
objectUpdateCached.ObjectData.forEach((obj) => {
rmo.ObjectData.push({
CacheMissType: 0,
ID: obj.ID
});
});
this.circuit.sendMessage(rmo, 0);
}
objectUpdateCompressed(objectUpdateCompressed) {
for (const obj of objectUpdateCompressed.ObjectData) {
const flags = obj.UpdateFlags;
const buf = obj.Data;
let pos = 0;
const fullID = new UUID_1.UUID(buf, pos);
pos += 16;
const localID = buf.readUInt32LE(pos);
pos += 4;
const pcode = buf.readUInt8(pos++);
let newObj = false;
if (!this.objects[localID]) {
newObj = true;
this.objects[localID] = new GameObject_1.GameObject();
}
const o = this.objects[localID];
o.ID = localID;
o.PCode = pcode;
this.objectsByUUID[fullID.toString()] = localID;
o.FullID = fullID;
pos++;
pos = pos + 4;
pos++;
pos++;
pos = pos + 12;
pos = pos + 12;
pos = pos + 12;
const compressedflags = buf.readUInt32LE(pos);
pos = pos + 4;
o.OwnerID = new UUID_1.UUID(buf, pos);
pos += 16;
if (compressedflags & __1.CompressedFlags.HasAngularVelocity) {
pos = pos + 12;
}
if (compressedflags & __1.CompressedFlags.HasParent) {
const newParentID = buf.readUInt32LE(pos);
pos += 4;
let add = true;
if (!newObj) {
if (newParentID !== o.ParentID) {
const index = this.objectsByParent[o.ParentID].indexOf(localID);
if (index !== -1) {
this.objectsByParent[o.ParentID].splice(index, 1);
}
}
else {
add = false;
}
}
if (add) {
if (!this.objectsByParent[newParentID]) {
this.objectsByParent[newParentID] = [];
}
this.objectsByParent[newParentID].push(localID);
}
o.ParentID = newParentID;
}
if (pcode !== PCode_1.PCode.Avatar && newObj && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) {
if (this.agent.localID !== 0 && o.ParentID !== this.agent.localID) {
this.deleteObject(localID);
return;
}
}
if (compressedflags & __1.CompressedFlags.Tree) {
pos++;
}
else if (compressedflags & __1.CompressedFlags.ScratchPad) {
const scratchPadSize = buf.readUInt8(pos++);
pos = pos + scratchPadSize;
}
if (compressedflags & __1.CompressedFlags.HasText) {
const result = Utils_1.Utils.BufferToString(buf, pos);
pos += result.readLength;
pos = pos + 4;
}
if (compressedflags & __1.CompressedFlags.MediaURL) {
const result = Utils_1.Utils.BufferToString(buf, pos);
pos += result.readLength;
}
if (compressedflags & __1.CompressedFlags.HasParticles) {
pos += 86;
}
pos = this.readExtraParams(buf, pos, o);
if (compressedflags & __1.CompressedFlags.HasSound) {
pos = pos + 16;
pos += 4;
pos++;
pos = pos + 4;
}
if (compressedflags & __1.CompressedFlags.HasNameValues) {
const result = Utils_1.Utils.BufferToString(buf, pos);
o.NameValue = this.parseNameValues(result.result);
pos += result.readLength;
}
pos++;
pos = pos + 2;
pos = pos + 2;
pos = pos + 12;
pos = pos + 2;
pos = pos + 2;
pos = pos + 2;
const textureEntryLength = buf.readUInt32LE(pos);
pos = pos + 4;
pos = pos + textureEntryLength;
if (compressedflags & __1.CompressedFlags.TextureAnimation) {
pos = pos + 4;
}
o.IsAttachment = (compressedflags & __1.CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0;
}
}
objectUpdateTerse(objectUpdateTerse) { }
objectUpdateMultiple(objectUpdateMultiple) { }
killObject(killObj) {
killObj.ObjectData.forEach((obj) => {
const objectID = obj.ID;
this.deleteObject(objectID);
});
}
deleteObject(objectID) {
if (this.objects[objectID]) {
if (this.objectsByParent[objectID]) {
this.objectsByParent[objectID].forEach((childObjID) => {
this.deleteObject(childObjID);
});
}
delete this.objectsByParent[objectID];
const objct = this.objects[objectID];
const uuid = objct.FullID.toString();
if (this.objectsByUUID[uuid]) {
delete this.objectsByUUID[uuid];
}
const parentID = objct.ParentID;
if (this.objectsByParent[parentID]) {
const ind = this.objectsByParent[parentID].indexOf(objectID);
if (ind !== -1) {
this.objectsByParent[parentID].splice(ind, 1);
}
}
if (this.rtree && this.objects[objectID].rtreeEntry !== undefined) {
this.rtree.remove(this.objects[objectID].rtreeEntry);
}
delete this.objects[objectID];
}
}
readExtraParams(buf, pos, o) {
if (pos >= buf.length) {
return 0;
}
const extraParamCount = buf.readUInt8(pos++);
for (let k = 0; k < extraParamCount; k++) {
const type = buf.readUInt16LE(pos);
pos = pos + 2;
const paramLength = buf.readUInt32LE(pos);
pos = pos + 4;
pos += paramLength;
}
return pos;
}
getObjectsByParent(parentID) {
const list = this.objectsByParent[parentID];
if (list === undefined) {
return [];
}
const result = [];
list.forEach((localID) => {
result.push(this.objects[localID]);
});
return result;
}
parseNameValues(str) {
const nv = {};
const lines = str.split('\n');
lines.forEach((line) => {
if (line.length > 0) {
let kv = line.split(/[\t ]/);
if (kv.length > 5) {
for (let x = 5; x < kv.length; x++) {
kv[4] += ' ' + kv[x];
}
kv = kv.slice(0, 5);
}
if (kv.length === 5) {
const namevalue = new NameValue_1.NameValue();
namevalue.type = kv[1];
namevalue.class = kv[2];
namevalue.sendTo = kv[3];
namevalue.value = kv[4];
nv[kv[0]] = namevalue;
}
else {
console.log('namevalue unexpected length: ' + kv.length);
console.log(kv);
}
}
});
return nv;
}
shutdown() {
this.objects = {};
if (this.rtree) {
this.rtree.clear();
}
this.objectsByUUID = {};
this.objectsByParent = {};
}
findParent(go) {
if (go.ParentID !== 0 && this.objects[go.ParentID]) {
return this.findParent(this.objects[go.ParentID]);
}
else {
return go;
}
}
populateChildren(obj) {
obj.children = [];
obj.totalChildren = 0;
for (const child of this.getObjectsByParent(obj.ID)) {
obj.totalChildren++;
this.populateChildren(child);
if (child.totalChildren !== undefined) {
obj.totalChildren += child.totalChildren;
}
obj.children.push(child);
}
}
getAllObjects() {
const results = [];
const found = {};
for (const k of Object.keys(this.objects)) {
const go = this.objects[parseInt(k, 10)];
if (go.PCode !== PCode_1.PCode.Avatar && (go.IsAttachment === undefined || go.IsAttachment === false)) {
try {
const parent = this.findParent(go);
if (parent.PCode !== PCode_1.PCode.Avatar && (parent.IsAttachment === undefined || parent.IsAttachment === false)) {
const uuid = parent.FullID.toString();
if (found[uuid] === undefined) {
found[uuid] = parent;
results.push(parent);
}
}
}
catch (error) {
console.log('Failed to find parent for ' + go.FullID.toString());
console.error(error);
}
}
}
for (const obj of results) {
this.populateChildren(obj);
}
return results;
}
getNumberOfObjects() {
return Object.keys(this.objects).length;
}
getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
if (!this.rtree) {
throw new Error('GetObjectsInArea not available with the Lite object store');
}
const result = this.rtree.search({
minX: minX,
maxX: maxX,
minY: minY,
maxY: maxY,
minZ: minZ,
maxZ: maxZ
});
const found = {};
const objs = [];
for (const obj of result) {
const o = obj;
const go = o.gameObject;
if (go.PCode !== PCode_1.PCode.Avatar && (go.IsAttachment === undefined || go.IsAttachment === false)) {
try {
const parent = this.findParent(go);
if (parent.PCode !== PCode_1.PCode.Avatar && (parent.IsAttachment === undefined || parent.IsAttachment === false)) {
const uuid = parent.FullID.toString();
if (found[uuid] === undefined) {
found[uuid] = parent;
objs.push(parent);
}
}
}
catch (error) {
console.log('Failed to find parent for ' + go.FullID.toString());
console.error(error);
}
}
}
for (const obj of objs) {
this.populateChildren(obj);
}
return objs;
}
getObjectByUUID(fullID) {
if (fullID instanceof UUID_1.UUID) {
fullID = fullID.toString();
}
if (!this.objectsByUUID[fullID]) {
throw new Error('No object found with that UUID');
}
const localID = this.objectsByUUID[fullID];
return this.objects[localID];
}
getObjectByLocalID(localID) {
if (!this.objects[localID]) {
throw new Error('No object found with that UUID');
}
return this.objects[localID];
}
insertIntoRtree(obj) {
if (!this.rtree) {
return;
}
if (obj.rtreeEntry !== undefined) {
this.rtree.remove(obj.rtreeEntry);
}
if (!obj.Scale || !obj.Position || !obj.Rotation) {
return;
}
const normalizedScale = obj.Scale.multiplyByQuat(obj.Rotation);
const bounds = {
minX: obj.Position.x - (normalizedScale.x / 2),
maxX: obj.Position.x + (normalizedScale.x / 2),
minY: obj.Position.y - (normalizedScale.y / 2),
maxY: obj.Position.y + (normalizedScale.y / 2),
minZ: obj.Position.z - (normalizedScale.z / 2),
maxZ: obj.Position.z + (normalizedScale.z / 2),
gameObject: obj
};
obj.rtreeEntry = bounds;
this.rtree.insert(bounds);
}
}
exports.ObjectStoreLite = ObjectStoreLite;
//# sourceMappingURL=ObjectStoreLite.js.map

File diff suppressed because one or more lines are too long

View File

@@ -1,12 +0,0 @@
/// <reference types="node" />
import { MessageBase } from './MessageBase';
import { DecodeFlags, PacketFlags } from '..';
export declare class Packet {
packetFlags: PacketFlags;
sequenceNumber: number;
extraHeader: Buffer;
message: MessageBase;
getSize(): number;
writeToBuffer(buf: Buffer, pos: number, options?: DecodeFlags): Buffer;
readFromBuffer(buf: Buffer, pos: number, ackReceived: (sequenceID: number) => void, sendAck: (sequenceID: number) => void): number;
}

124
dist/classes/Packet.js vendored
View File

@@ -1,124 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Zerocoder_1 = require("./Zerocoder");
const MessageClasses_1 = require("./MessageClasses");
const MessageClass = require("./MessageClasses");
const __1 = require("..");
class Packet {
constructor() {
this.packetFlags = 0;
this.sequenceNumber = 0;
this.extraHeader = Buffer.allocUnsafe(0);
}
getSize() {
let idSize = 4;
if (this.message.messageFlags & __1.MessageFlags.FrequencyHigh) {
idSize = 1;
}
else if (this.message.messageFlags & __1.MessageFlags.FrequencyMedium) {
idSize = 2;
}
return 1 + 4 + 1 + this.extraHeader.length + idSize + this.message.getSize();
}
writeToBuffer(buf, pos, options) {
if (options === undefined) {
options = 0;
}
if (this.message.messageFlags & __1.MessageFlags.Zerocoded && !(options & 1)) {
this.packetFlags = this.packetFlags | __1.PacketFlags.Zerocoded;
}
buf.writeUInt8(this.packetFlags, pos++);
buf.writeUInt32BE(this.sequenceNumber, pos);
pos = pos + 4;
buf.writeUInt8(this.extraHeader.length, pos++);
if (this.extraHeader.length > 0) {
this.extraHeader.copy(buf, pos);
pos += this.extraHeader.length;
}
const bodyStart = pos;
if (this.message.messageFlags & __1.MessageFlags.FrequencyHigh) {
buf.writeUInt8(this.message.id, pos++);
}
else if (this.message.messageFlags & __1.MessageFlags.FrequencyMedium) {
buf.writeUInt16BE(this.message.id, pos);
pos += 2;
}
else {
buf.writeUInt32BE(this.message.id, pos);
pos += 4;
}
const expectedLength = this.message.getSize();
const actualLength = this.message.writeToBuffer(buf, pos);
if (actualLength !== expectedLength) {
console.error('WARNING: Bytes written does not match expected message data length');
}
pos += actualLength;
if (pos < buf.length) {
console.error('WARNING: BUFFER UNDERFLOW: Finished writing but we are not at the end of the buffer (Written: ' + pos + ' bytes, expected ' + buf.length);
}
if (this.packetFlags & __1.PacketFlags.Zerocoded) {
buf = Zerocoder_1.Zerocoder.Encode(buf, bodyStart, pos);
}
return buf;
}
readFromBuffer(buf, pos, ackReceived, sendAck) {
this.packetFlags = buf.readUInt8(pos++);
this.sequenceNumber = buf.readUInt32BE(pos);
if (this.packetFlags & __1.PacketFlags.Reliable) {
sendAck(this.sequenceNumber);
}
pos = pos + 4;
const extraBytes = buf.readUInt8(pos++);
if (extraBytes > 0) {
this.extraHeader = buf.slice(pos, pos + extraBytes);
pos += extraBytes;
}
else {
this.extraHeader = Buffer.allocUnsafe(0);
}
let appendedAcks = 0;
if (this.packetFlags & __1.PacketFlags.Ack) {
appendedAcks = buf.readUInt8(buf.length - 1);
}
if (this.packetFlags & __1.PacketFlags.Zerocoded) {
let tail = 0;
if (this.packetFlags & __1.PacketFlags.Ack) {
tail = 1;
if (appendedAcks > 0) {
tail += appendedAcks * 4;
}
}
buf = Zerocoder_1.Zerocoder.Decode(buf, pos, buf.length - 1, tail);
}
let messageID = buf.readUInt8(pos);
if (messageID === 0xFF) {
messageID = buf.readUInt16BE(pos);
if (messageID === 0xFFFF) {
messageID = buf.readUInt32BE(pos);
pos += 4;
}
else {
pos += 2;
}
}
else {
pos++;
}
this.message = new MessageClass[MessageClasses_1.nameFromID(messageID)]();
pos += this.message.readFromBuffer(buf, pos);
if (this.packetFlags & __1.PacketFlags.Ack) {
for (let i = 0; i < appendedAcks; i++) {
const ackID = buf.readUInt32BE(pos);
ackReceived(ackID);
pos += 4;
}
pos++;
}
if (pos < buf.length) {
console.error('WARNING: Finished reading ' + MessageClasses_1.nameFromID(messageID) + ' but we\'re not at the end of the packet (' + pos + ' < ' + buf.length + ', seq ' + this.sequenceNumber + ')');
}
return pos;
}
}
exports.Packet = Packet;
//# sourceMappingURL=Packet.js.map

View File

@@ -1 +0,0 @@
{"version":3,"file":"Packet.js","sourceRoot":"","sources":["../../lib/classes/Packet.ts"],"names":[],"mappings":";;AACA,2CAAsC;AACtC,qDAA4C;AAC5C,iDAAiD;AACjD,0BAA0D;AAE1D,MAAa,MAAM;IAAnB;QAEI,gBAAW,GAAgB,CAAC,CAAC;QAC7B,mBAAc,GAAG,CAAC,CAAC;QACnB,gBAAW,GAAW,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAuJhD,CAAC;IApJG,OAAO;QAEH,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,gBAAY,CAAC,aAAa,EAC1D;YACI,MAAM,GAAG,CAAC,CAAC;SACd;aACI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,gBAAY,CAAC,eAAe,EACjE;YACI,MAAM,GAAG,CAAC,CAAC;SACd;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACjF,CAAC;IAED,aAAa,CAAC,GAAW,EAAE,GAAW,EAAE,OAAqB;QAEzD,IAAI,OAAO,KAAK,SAAS,EACzB;YACI,OAAO,GAAG,CAAC,CAAC;SACf;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,gBAAY,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,EACxE;YACI,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,eAAW,CAAC,SAAS,CAAC;SAC/D;QACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QACxC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC5C,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAC/B;YACI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;SAClC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC;QAEtB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,gBAAY,CAAC,aAAa,EAC1D;YACI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;SAC1C;aACI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,gBAAY,CAAC,eAAe,EACjE;YACI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACxC,GAAG,IAAI,CAAC,CAAC;SACZ;aAED;YACI,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACxC,GAAG,IAAI,CAAC,CAAC;SACZ;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC1D,IAAI,YAAY,KAAK,cAAc,EACnC;YACI,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAA;SACtF;QACD,GAAG,IAAI,YAAY,CAAC;QACpB,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EACpB;YACI,OAAO,CAAC,KAAK,CAAC,gGAAgG,GAAG,GAAG,GAAG,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;SAC5J;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,eAAW,CAAC,SAAS,EAC5C;YACI,GAAG,GAAG,qBAAS,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;SAC/C;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,cAAc,CAAC,GAAW,EAAE,GAAW,EAAE,WAAyC,EAAE,OAAqC;QAErH,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,WAAW,GAAG,eAAW,CAAC,QAAQ,EAC3C;YACI,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAChC;QACD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACxC,IAAI,UAAU,GAAG,CAAC,EAClB;YACI,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC;YACpD,GAAG,IAAI,UAAU,CAAC;SACrB;aAED;YACI,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAC5C;QACD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,WAAW,GAAG,eAAW,CAAC,GAAG,EACtC;YACI,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAChD;QACD,IAAI,IAAI,CAAC,WAAW,GAAG,eAAW,CAAC,SAAS,EAC5C;YAEI,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,WAAW,GAAG,eAAW,CAAC,GAAG,EACtC;gBAEI,IAAI,GAAG,CAAC,CAAC;gBACT,IAAI,YAAY,GAAG,CAAC,EACpB;oBACI,IAAI,IAAI,YAAY,GAAG,CAAC,CAAC;iBAC5B;aACJ;YACD,GAAG,GAAG,qBAAS,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;SAC1D;QAED,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,SAAS,KAAK,IAAI,EACtB;YACI,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,SAAS,KAAK,MAAM,EACxB;gBACI,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClC,GAAG,IAAI,CAAC,CAAC;aACZ;iBAED;gBACI,GAAG,IAAI,CAAC,CAAC;aACZ;SACJ;aAED;YACI,GAAG,EAAE,CAAC;SACT;QAED,IAAI,CAAC,OAAO,GAAG,IAAU,YAAa,CAAC,2BAAU,CAAC,SAAS,CAAC,CAAC,EAAiB,CAAC;QAE/E,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAE7C,IAAI,IAAI,CAAC,WAAW,GAAG,eAAW,CAAC,GAAG,EACtC;YACI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EACrC;gBACI,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACpC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACnB,GAAG,IAAI,CAAC,CAAC;aACZ;YAED,GAAG,EAAE,CAAC;SACT;QACD,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EACpB;YACI,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,2BAAU,CAAC,SAAS,CAAC,GAAG,4CAA4C,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;SACxL;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AA3JD,wBA2JC"}

View File

@@ -1,41 +0,0 @@
/// <reference types="node" />
import { BlendFunc } from '../enums/BlendFunc';
import { SourcePattern } from '../enums/SourcePattern';
import { Vector3 } from './Vector3';
import { UUID } from './UUID';
import { ParticleDataFlags } from '../enums/ParticleDataFlags';
import { Color4 } from './Color4';
export declare class ParticleSystem {
startGlow: number;
endGlow: number;
blendFuncSource: BlendFunc;
blendFuncDest: BlendFunc;
crc: number;
pattern: SourcePattern;
maxAge: number;
startAge: number;
innerAngle: number;
outerAngle: number;
burstRate: number;
burstRadius: number;
burstSpeedMin: number;
burstSpeedMax: number;
burstPartCount: number;
angularVelocity: Vector3;
acceleration: Vector3;
texture: UUID;
target: UUID;
dataFlags: ParticleDataFlags;
partMaxAge: number;
startColor: Color4;
endColor: Color4;
startScaleX: number;
startScaleY: number;
endScaleX: number;
endScaleY: number;
flags: number;
static unpackFixed(buf: Buffer, pos: number, signed: boolean, intBits: number, fracBits: number): number;
constructor(buf: Buffer, pos: number);
unpackSystem(buf: Buffer, pos: number): number;
unpackLegacyData(buf: Buffer, pos: number): number;
}

View File

@@ -1,153 +0,0 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const BlendFunc_1 = require("../enums/BlendFunc");
const SourcePattern_1 = require("../enums/SourcePattern");
const Vector3_1 = require("./Vector3");
const UUID_1 = require("./UUID");
const ParticleDataFlags_1 = require("../enums/ParticleDataFlags");
const Color4_1 = require("./Color4");
class ParticleSystem {
constructor(buf, pos) {
this.startGlow = 0.0;
this.endGlow = 0.0;
this.blendFuncSource = BlendFunc_1.BlendFunc.SourceAlpha;
this.blendFuncDest = BlendFunc_1.BlendFunc.OneMinusSourceAlpha;
this.crc = 0;
this.pattern = SourcePattern_1.SourcePattern.None;
this.maxAge = 0.0;
this.startAge = 0.0;
this.innerAngle = 0.0;
this.outerAngle = 0.0;
this.burstRate = 0.0;
this.burstRadius = 0.0;
this.burstSpeedMin = 0.0;
this.burstSpeedMax = 0.0;
this.burstPartCount = 0;
this.angularVelocity = Vector3_1.Vector3.getZero();
this.acceleration = Vector3_1.Vector3.getZero();
this.texture = UUID_1.UUID.zero();
this.target = UUID_1.UUID.zero();
this.dataFlags = ParticleDataFlags_1.ParticleDataFlags.None;
this.partMaxAge = 0.0;
this.startColor = Color4_1.Color4.black;
this.endColor = Color4_1.Color4.black;
this.startScaleX = 0.0;
this.startScaleY = 0.0;
this.endScaleX = 0.0;
this.endScaleY = 0.0;
this.flags = 0;
const size = buf.length - pos;
if (size === 86) {
pos = this.unpackSystem(buf, pos);
pos = this.unpackLegacyData(buf, pos);
}
else if (size > 86 && size <= 98) {
const sysSize = buf.readInt32LE(pos);
pos += 4;
if (sysSize !== 68) {
console.error('Particle system block size ' + sysSize + ' different from expected 68 bytes');
return;
}
pos = this.unpackSystem(buf, pos);
const dataSize = buf.readInt32LE(pos);
pos += 4;
pos = this.unpackLegacyData(buf, pos);
if ((this.dataFlags & ParticleDataFlags_1.ParticleDataFlags.DataGlow) === ParticleDataFlags_1.ParticleDataFlags.DataGlow) {
let glow = buf.readUInt8(pos++);
this.startGlow = glow / 255.0;
glow = buf.readUInt8(pos++);
this.endGlow = glow / 255.0;
}
if ((this.dataFlags & ParticleDataFlags_1.ParticleDataFlags.DataBlend) === ParticleDataFlags_1.ParticleDataFlags.DataBlend) {
this.blendFuncSource = buf.readUInt8(pos++);
this.blendFuncDest = buf.readUInt8(pos++);
}
}
else {
console.error('WARNING: Paricle system size of ' + size + ' bytes exceeds maximum block size of 98');
}
}
static unpackFixed(buf, pos, signed, intBits, fracBits) {
let totalBits = intBits + fracBits;
let fixedVal = 0.0;
if (signed) {
totalBits++;
}
const maxVal = 1 << intBits;
if (totalBits <= 8) {
fixedVal = buf.readUInt8(pos);
}
else if (totalBits <= 16) {
fixedVal = buf.readUInt16LE(pos);
}
else if (totalBits <= 31) {
fixedVal = buf.readUInt32LE(pos);
}
else {
return 0.0;
}
fixedVal /= (1 << fracBits);
if (signed) {
fixedVal -= maxVal;
}
return fixedVal;
}
unpackSystem(buf, pos) {
const startPos = pos;
this.crc = buf.readUInt32LE(pos);
pos += 4;
this.flags = buf.readUInt32LE(pos);
pos += 4;
this.pattern = buf.readUInt8(pos++);
this.maxAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
pos += 2;
this.startAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
pos += 2;
this.innerAngle = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
this.outerAngle = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
this.burstRate = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
pos += 2;
this.burstRadius = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
pos += 2;
this.burstSpeedMin = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
pos += 2;
this.burstSpeedMax = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
pos += 2;
this.burstPartCount = buf.readUInt8(pos++);
this.angularVelocity = new Vector3_1.Vector3([
ParticleSystem.unpackFixed(buf, pos, true, 8, 7),
ParticleSystem.unpackFixed(buf, pos + 2, true, 8, 7),
ParticleSystem.unpackFixed(buf, pos + 4, true, 8, 7),
]);
pos = pos + 6;
this.acceleration = new Vector3_1.Vector3([
ParticleSystem.unpackFixed(buf, pos, true, 8, 7),
ParticleSystem.unpackFixed(buf, pos + 2, true, 8, 7),
ParticleSystem.unpackFixed(buf, pos + 4, true, 8, 7),
]);
pos = pos + 6;
this.texture = new UUID_1.UUID(buf, pos);
pos += 16;
this.target = new UUID_1.UUID(buf, pos);
pos += 16;
if (pos - startPos !== 68) {
console.log('INVALID SIZE: ' + (pos - startPos));
}
return pos;
}
unpackLegacyData(buf, pos) {
this.dataFlags = buf.readUInt32LE(pos);
pos += 4;
this.partMaxAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
pos += 2;
this.startColor = new Color4_1.Color4(buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++));
this.endColor = new Color4_1.Color4(buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++));
this.startScaleX = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
this.startScaleY = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
this.endScaleX = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
this.endScaleY = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
return pos;
}
}
exports.ParticleSystem = ParticleSystem;
//# sourceMappingURL=ParticleSystem.js.map

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More