diff --git a/dist/classes/Agent.d.ts b/dist/classes/Agent.d.ts
index 8a612a3..af49485 100644
--- a/dist/classes/Agent.d.ts
+++ b/dist/classes/Agent.d.ts
@@ -40,7 +40,11 @@ export declare class Agent {
uiFlags: {
'allowFirstLife'?: boolean;
};
- lookAt: Vector3;
+ cameraLookAt: Vector3;
+ cameraCenter: Vector3;
+ cameraLeftAxis: Vector3;
+ cameraUpAxis: Vector3;
+ cameraFar: number;
maxGroups: number;
agentFlags: number;
startLocation: string;
diff --git a/dist/classes/Agent.js b/dist/classes/Agent.js
index 17caa56..a0b83d4 100644
--- a/dist/classes/Agent.js
+++ b/dist/classes/Agent.js
@@ -23,6 +23,11 @@ class Agent {
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;
@@ -89,11 +94,11 @@ class Agent {
HeadRotation: Quaternion_1.Quaternion.getIdentity(),
BodyRotation: Quaternion_1.Quaternion.getIdentity(),
State: AgentState_1.AgentState.None,
- CameraCenter: new Vector3_1.Vector3([199.58, 203.95, 24.304]),
- CameraAtAxis: new Vector3_1.Vector3([0.979546, 0.105575, -0.171303]),
- CameraLeftAxis: new Vector3_1.Vector3([-0.107158, 0.994242, 0]),
- CameraUpAxis: new Vector3_1.Vector3([0.170316, 0.018357, 0.985218]),
- Far: 128,
+ CameraCenter: this.cameraCenter,
+ CameraAtAxis: this.cameraLookAt,
+ CameraLeftAxis: this.cameraLeftAxis,
+ CameraUpAxis: this.cameraUpAxis,
+ Far: this.cameraFar,
ControlFlags: this.controlFlags,
Flags: __1.AgentFlags.None
};
diff --git a/dist/classes/Agent.js.map b/dist/classes/Agent.js.map
index e7c725b..923a1bf 100644
--- a/dist/classes/Agent.js.map
+++ b/dist/classes/Agent.js.map
@@ -1 +1 @@
-{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../lib/classes/Agent.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAC5B,uCAAkC;AAClC,2CAAsC;AAItC,8CAAyC;AAGzC,wDAA0D;AAC1D,6CAAwC;AACxC,oDAA+C;AAC/C,kEAA6D;AAC7D,yCAAyC;AACzC,4EAA8E;AAE9E,oEAA+D;AAC/D,sFAAwF;AACxF,8DAAyD;AACzD,mCAA8B;AAI9B,0BAAoG;AAEpG,MAAa,KAAK;IAuDd,YAAY,YAA0B;QAnDtC,YAAO,GAAG,CAAC,CAAC;QAMZ,iBAAY,GAKH,EAAE,CAAC;QACZ,iBAAY,GAAiB,CAAC,CAAC;QAC/B,WAAM,GAGF,EAAE,CAAC;QAEP,cAAS,GAIH,EAAE,CAAC;QACT,YAAO,GAEH,EAAE,CAAC;QAMP,SAAI,GAIA,EAAE,CAAC;QAGP,aAAQ,GAGF,EAAE,CAAC;QAMT,qBAAgB,GAAiB,IAAI,CAAC;QACtC,kBAAa,GAAG,KAAK,CAAC;QAKlB,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,KAAqC,EAAE,EAAE;YAE7F,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EACxC;gBACI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAC/B;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEvC,IAAI,KAAK,CAAC,OAAO,EACjB;gBACI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG;oBAC5B,QAAQ,EAAE,KAAK,CAAC,YAAY;oBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;iBACjC,CAAA;aACJ;iBAED;gBACI,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;aACxC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB,CAAC,EAAW;QAE1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,oBAAoB,CAAC,IAAU;QAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EACxC;YACI,OAAO,CAAC,CAAC;SACZ;aAED;YACI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;SACrD;IACL,CAAC;IAED,cAAc,CAAC,IAAU;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EACxC;YACI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SAC/B;IACL,CAAC;IAED,cAAc,CAAC,IAAU;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB,CAAC,MAAc;QAE3B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC3C,iBAAO,CAAC,eAAe;SAC1B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,aAAa;QAET,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IACD,eAAe;QAEX,IAAI,CAAC,IAAI,CAAC,aAAa,EACvB;YACI,OAAO;SACV;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC3C,MAAM,WAAW,GAAuB,IAAI,gCAAkB,EAAE,CAAC;QACjE,WAAW,CAAC,SAAS,GAAG;YACpB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,uBAAU,CAAC,WAAW,EAAE;YACtC,YAAY,EAAE,uBAAU,CAAC,WAAW,EAAE;YACtC,KAAK,EAAE,uBAAU,CAAC,IAAI;YACtB,YAAY,EAAE,IAAI,iBAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACnD,YAAY,EAAE,IAAI,iBAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC1D,cAAc,EAAE,IAAI,iBAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YACrD,YAAY,EAAE,IAAI,iBAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACzD,GAAG,EAAE,GAAG;YACR,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,cAAU,CAAC,IAAI;SACzB,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,QAAQ;QAEJ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAClC;YACI,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC;IACL,CAAC;IACD,WAAW,CAAC,MAAc;QAEtB,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAO,CAAC,eAAe,EACjD;YACI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiC,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAC5D;gBACI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAEnC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,qCAAiB,CAAC,OAAO;wBAC/B,CAAC,KAAK,qCAAiB,CAAC,QAAQ;wBAChC,CAAC,KAAK,qCAAiB,CAAC,IAAI;wBAC5B,CAAC,KAAK,qCAAiB,CAAC,WAAW;wBACnC,CAAC,KAAK,qCAAiB,CAAC,IAAI;wBAC5B,CAAC,KAAK,qCAAiB,CAAC,GAAG,EAC/B;wBAEI,IAAI,CAAC,YAAY,GAAG,gBAAY,CAAC,yBAAyB,CAAC;wBAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;qBACzB;gBACL,CAAC,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IACD,oBAAoB;QAEhB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC3C,MAAM,gBAAgB,GAAiC,IAAI,oDAA4B,EAAE,CAAC;QAC1F,gBAAgB,CAAC,SAAS,GAAG;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,eAAW,CAAC,QAAQ,CAAC,CAAC;QAC5D,OAAO,CAAC,cAAc,CAA8B,iBAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAsC,EAAE,EAAE;YAErI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAClF;gBACI,IAAI,CAAC,SAAS,GAAG;oBACb,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS;oBAC3C,WAAW,EAAE,EAAE;iBAClB,CAAC;gBACF,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAChD;wBACI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;4BACzB,YAAY,EAAE,QAAQ,CAAC,YAAY;yBACtC,CAAC,CAAC;qBACN;gBACL,CAAC,CAAC,CAAC;aACN;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,MAAM,CAAC,WAAW,KAAK,aAAS,CAAC,mBAAmB,EACxD;oBACI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBAEjC,MAAM,aAAa,GAAG;wBAClB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAClC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;wBACrC,aAAa,EAAE,IAAI;wBACnB,WAAW,EAAE,IAAI;wBACjB,UAAU,EAAE,uCAAkB,CAAC,MAAM;qBACxC,CAAC;oBACF,MAAM,gBAAgB,GAAG;wBACrB,SAAS,EAAE;4BACP,aAAa;yBAChB;qBACJ,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,cAAmB,EAAE,EAAE;wBAEhH,MAAM,2BAA2B,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;wBAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAChF,2BAA2B,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;4BAE9C,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EACnB;gCACI,IAAI,KAAK,GAAG,KAAK,CAAC;gCAClB,WAAW,CAAC,OAAO,CAAC,CAAC,GAAgB,EAAE,EAAE;oCAErC,IAAI,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,EACzC;wCACI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,EACxE;4CACI,KAAK,GAAG,IAAI,CAAC;yCAChB;qCACJ;gCACL,CAAC,CAAC,CAAC;gCAEH,IAAI,CAAC,KAAK,EACV;oCACI,MAAM,KAAK,GAAG,IAAI,8DAAiC,EAAE,CAAC;oCACtD,KAAK,CAAC,SAAS,GAAG;wCACd,OAAO,EAAE,IAAI,CAAC,OAAO;wCACrB,SAAS,EAAE,OAAO,CAAC,SAAS;qCAC/B,CAAC;oCACF,KAAK,CAAC,UAAU,GAAG;wCACf,MAAM,EAAE,IAAI,WAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;wCAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;wCACrB,YAAY,EAAE,IAAI,GAAG,iCAAe,CAAC,OAAO;wCAC5C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;wCACxB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;wCAC5C,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC;wCAClD,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC;wCACrD,IAAI,EAAE,aAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wCACxC,WAAW,EAAE,aAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qCAClD,CAAC;oCACF,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,eAAW,CAAC,QAAQ,CAAC,CAAC;iCACpD;6BACJ;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;iBAEN;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA1RD,sBA0RC"}
\ No newline at end of file
+{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../lib/classes/Agent.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/EventQueueClient.js b/dist/classes/EventQueueClient.js
index b2829ed..5bdf9b0 100644
--- a/dist/classes/EventQueueClient.js
+++ b/dist/classes/EventQueueClient.js
@@ -136,6 +136,10 @@ class EventQueueClient {
}
break;
}
+ case 'ObjectPhysicsProperties':
+ {
+ break;
+ }
case 'TeleportFinish':
{
const info = event['body']['Info'][0];
diff --git a/dist/classes/EventQueueClient.js.map b/dist/classes/EventQueueClient.js.map
index b5e3c35..b9cdb6a 100644
--- a/dist/classes/EventQueueClient.js.map
+++ b/dist/classes/EventQueueClient.js.map
@@ -1 +1 @@
-{"version":3,"file":"EventQueueClient.js","sourceRoot":"","sources":["../../lib/classes/EventQueueClient.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"EventQueueClient.js","sourceRoot":"","sources":["../../lib/classes/EventQueueClient.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/GameObject.d.ts b/dist/classes/GameObject.d.ts
new file mode 100644
index 0000000..5431c1b
--- /dev/null
+++ b/dist/classes/GameObject.d.ts
@@ -0,0 +1,104 @@
+///
+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;
+}
diff --git a/dist/classes/GameObject.js b/dist/classes/GameObject.js
new file mode 100644
index 0000000..08dcecf
--- /dev/null
+++ b/dist/classes/GameObject.js
@@ -0,0 +1,36 @@
+"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
\ No newline at end of file
diff --git a/dist/classes/GameObject.js.map b/dist/classes/GameObject.js.map
new file mode 100644
index 0000000..4388f5e
--- /dev/null
+++ b/dist/classes/GameObject.js.map
@@ -0,0 +1 @@
+{"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"}
\ No newline at end of file
diff --git a/dist/classes/GameObjectBase.d.ts b/dist/classes/GameObjectBase.d.ts
new file mode 100644
index 0000000..adc53be
--- /dev/null
+++ b/dist/classes/GameObjectBase.d.ts
@@ -0,0 +1,20 @@
+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;
+}
diff --git a/dist/classes/GameObjectBase.js b/dist/classes/GameObjectBase.js
new file mode 100644
index 0000000..8d58693
--- /dev/null
+++ b/dist/classes/GameObjectBase.js
@@ -0,0 +1,26 @@
+"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
\ No newline at end of file
diff --git a/dist/classes/GameObjectBase.js.map b/dist/classes/GameObjectBase.js.map
new file mode 100644
index 0000000..4759769
--- /dev/null
+++ b/dist/classes/GameObjectBase.js.map
@@ -0,0 +1 @@
+{"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"}
\ No newline at end of file
diff --git a/dist/classes/LoginResponse.js b/dist/classes/LoginResponse.js
index ea24845..ad436e8 100644
--- a/dist/classes/LoginResponse.js
+++ b/dist/classes/LoginResponse.js
@@ -151,7 +151,7 @@ class LoginResponse {
});
break;
case 'look_at':
- this.agent.lookAt = LoginResponse.parseVector3(val);
+ this.agent.cameraLookAt = LoginResponse.parseVector3(val);
break;
case 'openid_url':
this.agent.openID.url = String(val);
diff --git a/dist/classes/LoginResponse.js.map b/dist/classes/LoginResponse.js.map
index fbc8413..86a5ed4 100644
--- a/dist/classes/LoginResponse.js.map
+++ b/dist/classes/LoginResponse.js.map
@@ -1 +1 @@
-{"version":3,"file":"LoginResponse.js","sourceRoot":"","sources":["../../lib/classes/LoginResponse.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"LoginResponse.js","sourceRoot":"","sources":["../../lib/classes/LoginResponse.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/ObjectStoreFull.d.ts b/dist/classes/ObjectStoreFull.d.ts
index df744ff..e9fb457 100644
--- a/dist/classes/ObjectStoreFull.d.ts
+++ b/dist/classes/ObjectStoreFull.d.ts
@@ -1,34 +1,19 @@
-///
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 { UUID } from './UUID';
-import { NameValue } from './NameValue';
import { ClientEvents } from './ClientEvents';
import { IObjectStore } from './interfaces/IObjectStore';
-import { GameObjectFull } from './GameObjectFull';
-import { IGameObject } from './interfaces/IGameObject';
import { BotOptionFlags } from '..';
import { RBush3D } from 'rbush-3d/dist';
-export declare class ObjectStoreFull implements IObjectStore {
- private circuit;
- private agent;
- private objects;
- private objectsByUUID;
- private objectsByParent;
- private clientEvents;
- private options;
- rtree: RBush3D;
+import { ObjectStoreLite } from './ObjectStoreLite';
+export declare class ObjectStoreFull extends ObjectStoreLite implements IObjectStore {
+ rtree?: RBush3D;
constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags);
- insertIntoRtree(obj: GameObjectFull): void;
- deleteObject(objectID: number): void;
- readExtraParams(buf: Buffer, pos: number, o: GameObjectFull): number;
- getObjectsByParent(parentID: number): IGameObject[];
- getObjectByUUID(fullID: UUID | string): IGameObject;
- getObjectByLocalID(localID: number): IGameObject;
- parseNameValues(str: string): {
- [key: string]: NameValue;
- };
- shutdown(): void;
- private findParent;
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[];
+ protected objectUpdate(objectUpdate: ObjectUpdateMessage): void;
+ protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage): void;
+ protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage): void;
+ protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage): void;
}
diff --git a/dist/classes/ObjectStoreFull.js b/dist/classes/ObjectStoreFull.js
index 4bc1fe0..9e91aa9 100644
--- a/dist/classes/ObjectStoreFull.js
+++ b/dist/classes/ObjectStoreFull.js
@@ -1,650 +1,452 @@
"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 Quaternion_1 = require("./Quaternion");
const Vector3_1 = require("./Vector3");
const Utils_1 = require("./Utils");
const PCode_1 = require("../enums/PCode");
-const NameValue_1 = require("./NameValue");
-const GameObjectFull_1 = require("./GameObjectFull");
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");
-class ObjectStoreFull {
+const GameObject_1 = require("./GameObject");
+const ObjectStoreLite_1 = require("./ObjectStoreLite");
+class ObjectStoreFull extends ObjectStoreLite_1.ObjectStoreLite {
constructor(circuit, agent, clientEvents, options) {
- this.objects = {};
- this.objectsByUUID = {};
- this.objectsByParent = {};
- agent.localID = 0;
+ super(circuit, agent, clientEvents, options);
this.rtree = new dist_1.RBush3D();
- 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;
- 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 GameObjectFull_1.GameObjectFull();
- }
- 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);
- }
+ }
+ 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);
}
- break;
- case Message_1.Message.ObjectUpdateCached:
- {
- const objectUpdateCached = packet.message;
- 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) {
- circuit.sendMessage(rmo, 0);
- }
- break;
- }
- case Message_1.Message.ObjectUpdateCompressed:
- {
- const objectUpdateCompressed = packet.message;
- 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 GameObjectFull_1.GameObjectFull();
- }
- 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);
- }
- }
- break;
- }
- case Message_1.Message.ImprovedTerseObjectUpdate:
- {
- const objectUpdateTerse = packet.message;
- 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
- });
- circuit.sendMessage(rmo, 0);
- }
- }
- }
- break;
- }
- case Message_1.Message.MultipleObjectUpdate:
- const multipleObjectUpdate = packet.message;
- console.error('TODO: MultipleObjectUpdate');
- break;
- case Message_1.Message.KillObject:
- const killObj = packet.message;
- for (const obj of killObj.ObjectData) {
- const objectID = obj.ID;
- this.deleteObject(objectID);
- }
- break;
- }
- });
- }
- insertIntoRtree(obj) {
- if (obj.rtreeEntry !== undefined) {
- this.rtree.remove(obj.rtreeEntry);
- }
- 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);
- }
- 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.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;
- }
- 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];
- }
- 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);
+ addToParentList = false;
}
}
- });
- return nv;
- }
- shutdown() {
- this.objects = {};
- this.rtree.clear();
- this.objectsByUUID = {};
- this.objectsByParent = {};
- }
- findParent(go) {
- if (go.ParentID === 0) {
- return go;
- }
- else {
- return this.findParent(this.objects[go.ParentID]);
- }
- }
- getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
- 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;
- try {
- const parent = this.findParent(go);
- const uuid = parent.FullID.toString();
- if (parent !== go) {
- console.log('Resolved object ' + go.FullID.toString() + ' to parent ' + parent.FullID.toString() + ' which ' + ((found[uuid] === undefined) ? 'does not exist' : 'already exists'));
- }
- if (found[uuid] === undefined) {
- found[uuid] = parent;
- objs.push(parent);
+ 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);
+ }
+ }
+ });
}
}
- catch (error) {
- console.log('Failed to find parent for ' + go.FullID.toString());
- console.error(error);
+ 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);
+ }
}
}
- return objs;
}
}
exports.ObjectStoreFull = ObjectStoreFull;
diff --git a/dist/classes/ObjectStoreFull.js.map b/dist/classes/ObjectStoreFull.js.map
index 949272b..528251c 100644
--- a/dist/classes/ObjectStoreFull.js.map
+++ b/dist/classes/ObjectStoreFull.js.map
@@ -1 +1 @@
-{"version":3,"file":"ObjectStoreFull.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreFull.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"ObjectStoreFull.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreFull.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/ObjectStoreLite.d.ts b/dist/classes/ObjectStoreLite.d.ts
index fd18b77..ebd55c3 100644
--- a/dist/classes/ObjectStoreLite.d.ts
+++ b/dist/classes/ObjectStoreLite.d.ts
@@ -1,31 +1,53 @@
///
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 { GameObjectLite } from './GameObjectLite';
import { NameValue } from './NameValue';
import { BotOptionFlags } from '..';
-import { IGameObject } from './interfaces/IGameObject';
-import { GameObjectFull } from './GameObjectFull';
+import { GameObject } from './GameObject';
+import { RBush3D } from 'rbush-3d/dist';
export declare class ObjectStoreLite implements IObjectStore {
- private circuit;
- private agent;
- private objects;
- private objectsByUUID;
- private objectsByParent;
- private clientEvents;
- private options;
+ 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: GameObjectLite): number;
- getObjectsByParent(parentID: number): GameObjectLite[];
+ readExtraParams(buf: Buffer, pos: number, o: GameObject): number;
+ getObjectsByParent(parentID: number): GameObject[];
parseNameValues(str: string): {
[key: string]: NameValue;
};
shutdown(): void;
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[];
- getObjectByUUID(fullID: UUID | string): IGameObject;
- getObjectByLocalID(localID: number): IGameObject;
+ protected findParent(go: GameObject): GameObject;
+ private populateChildren;
+ 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;
}
diff --git a/dist/classes/ObjectStoreLite.js b/dist/classes/ObjectStoreLite.js
index 98a522d..ead84b5 100644
--- a/dist/classes/ObjectStoreLite.js
+++ b/dist/classes/ObjectStoreLite.js
@@ -5,9 +5,9 @@ const RequestMultipleObjects_1 = require("./messages/RequestMultipleObjects");
const UUID_1 = require("./UUID");
const Utils_1 = require("./Utils");
const PCode_1 = require("../enums/PCode");
-const GameObjectLite_1 = require("./GameObjectLite");
const NameValue_1 = require("./NameValue");
const __1 = require("..");
+const GameObject_1 = require("./GameObject");
class ObjectStoreLite {
constructor(circuit, agent, clientEvents, options) {
this.objects = {};
@@ -29,221 +29,235 @@ class ObjectStoreLite {
switch (packet.message.id) {
case Message_1.Message.ObjectUpdate:
const objectUpdate = packet.message;
- 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 GameObjectLite_1.GameObjectLite();
- }
- 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;
- }
- }
- });
+ this.objectUpdate(objectUpdate);
break;
case Message_1.Message.ObjectUpdateCached:
const objectUpdateCached = packet.message;
- 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
- });
- });
- circuit.sendMessage(rmo, 0);
+ this.objectUpdateCached(objectUpdateCached);
break;
case Message_1.Message.ObjectUpdateCompressed:
{
const objectUpdateCompressed = packet.message;
- 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 GameObjectLite_1.GameObjectLite();
- }
- 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;
- }
- ;
+ 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;
- console.error('TODO: MultipleObjectUpdate');
+ this.objectUpdateMultiple(multipleObjectUpdate);
break;
case Message_1.Message.KillObject:
const killObj = packet.message;
- killObj.ObjectData.forEach((obj) => {
- const objectID = obj.ID;
- this.deleteObject(objectID);
- });
+ 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]) {
@@ -264,6 +278,9 @@ class ObjectStoreLite {
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];
}
}
@@ -322,11 +339,73 @@ class ObjectStoreLite {
}
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);
+ }
+ }
+ getNumberOfObjects() {
+ return Object.keys(this.objects).length;
+ }
getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
- throw new Error('GetObjectsInArea not available with the Lite object store.');
+ 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) {
@@ -344,6 +423,29 @@ class ObjectStoreLite {
}
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
\ No newline at end of file
diff --git a/dist/classes/ObjectStoreLite.js.map b/dist/classes/ObjectStoreLite.js.map
index 364197c..e855141 100644
--- a/dist/classes/ObjectStoreLite.js.map
+++ b/dist/classes/ObjectStoreLite.js.map
@@ -1 +1 @@
-{"version":3,"file":"ObjectStoreLite.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreLite.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"ObjectStoreLite.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreLite.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/commands/AgentCommands.d.ts b/dist/classes/commands/AgentCommands.d.ts
index 6f21d6e..698766a 100644
--- a/dist/classes/commands/AgentCommands.d.ts
+++ b/dist/classes/commands/AgentCommands.d.ts
@@ -1,7 +1,10 @@
import { UUID } from '../UUID';
import { CommandsBase } from './CommandsBase';
+import { Vector3 } from '../Vector3';
export declare class AgentCommands extends CommandsBase {
private animate;
startAnimations(anim: UUID[]): Promise;
stopAnimations(anim: UUID[]): Promise;
+ setCamera(position: Vector3, lookAt: Vector3, viewDistance?: number, leftAxis?: Vector3, upAxis?: Vector3): void;
+ setViewDistance(viewDistance: number): void;
}
diff --git a/dist/classes/commands/AgentCommands.js b/dist/classes/commands/AgentCommands.js
index 880ad92..dafa587 100644
--- a/dist/classes/commands/AgentCommands.js
+++ b/dist/classes/commands/AgentCommands.js
@@ -41,6 +41,22 @@ class AgentCommands extends CommandsBase_1.CommandsBase {
return yield this.animate(anim, false);
});
}
+ setCamera(position, lookAt, viewDistance, leftAxis, upAxis) {
+ this.agent.cameraCenter = position;
+ this.agent.cameraLookAt = lookAt;
+ if (viewDistance !== undefined) {
+ this.agent.cameraFar = viewDistance;
+ }
+ if (leftAxis !== undefined) {
+ this.agent.cameraLeftAxis = leftAxis;
+ }
+ if (upAxis !== undefined) {
+ this.agent.cameraUpAxis = upAxis;
+ }
+ }
+ setViewDistance(viewDistance) {
+ this.agent.cameraFar = viewDistance;
+ }
}
exports.AgentCommands = AgentCommands;
//# sourceMappingURL=AgentCommands.js.map
\ No newline at end of file
diff --git a/dist/classes/commands/AgentCommands.js.map b/dist/classes/commands/AgentCommands.js.map
index 300ef48..4a9e31e 100644
--- a/dist/classes/commands/AgentCommands.js.map
+++ b/dist/classes/commands/AgentCommands.js.map
@@ -1 +1 @@
-{"version":3,"file":"AgentCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/AgentCommands.ts"],"names":[],"mappings":";;;;;;;;;;AACA,+DAAiE;AACjE,yDAAoD;AACpD,iDAA4C;AAE5C,MAAa,aAAc,SAAQ,2BAAY;IAE7B,OAAO,CAAC,IAAY,EAAE,GAAY;;YAG5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,sCAAqB,EAAE,CAAC;YAC/C,UAAU,CAAC,SAAS,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC/B,CAAC;YACF,UAAU,CAAC,uBAAuB,GAAG,EAAE,CAAC;YACxC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAEf,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;oBAC1B,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,GAAG;iBACjB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,yBAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAClG,CAAC;KAAA;IAEK,eAAe,CAAC,IAAY;;YAE9B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,cAAc,CAAC,IAAY;;YAE7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;CACJ;AAjCD,sCAiCC"}
\ No newline at end of file
+{"version":3,"file":"AgentCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/AgentCommands.ts"],"names":[],"mappings":";;;;;;;;;;AACA,+DAAiE;AACjE,yDAAoD;AACpD,iDAA4C;AAG5C,MAAa,aAAc,SAAQ,2BAAY;IAE7B,OAAO,CAAC,IAAY,EAAE,GAAY;;YAG5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,sCAAqB,EAAE,CAAC;YAC/C,UAAU,CAAC,SAAS,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC/B,CAAC;YACF,UAAU,CAAC,uBAAuB,GAAG,EAAE,CAAC;YACxC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAEf,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;oBAC1B,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,GAAG;iBACjB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,yBAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAClG,CAAC;KAAA;IAEK,eAAe,CAAC,IAAY;;YAE9B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,cAAc,CAAC,IAAY;;YAE7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;IAED,SAAS,CAAC,QAAiB,EAAE,MAAe,EAAE,YAAqB,EAAE,QAAkB,EAAE,MAAgB;QAErG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;QACjC,IAAI,YAAY,KAAK,SAAS,EAC9B;YACI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;SACvC;QACD,IAAI,QAAQ,KAAK,SAAS,EAC1B;YACI,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;SACxC;QACD,IAAI,MAAM,KAAK,SAAS,EACxB;YACI,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;SACpC;IACL,CAAC;IAED,eAAe,CAAC,YAAoB;QAEhC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;IACxC,CAAC;CACJ;AAxDD,sCAwDC"}
\ No newline at end of file
diff --git a/dist/classes/commands/RegionCommands.d.ts b/dist/classes/commands/RegionCommands.d.ts
index f62b704..6c23fc4 100644
--- a/dist/classes/commands/RegionCommands.d.ts
+++ b/dist/classes/commands/RegionCommands.d.ts
@@ -2,10 +2,15 @@ import { CommandsBase } from './CommandsBase';
import { UUID } from '../UUID';
import * as Long from 'long';
import { Vector3 } from '../..';
-import { IGameObject } from '../interfaces/IGameObject';
+import { GameObject } from '../GameObject';
+import { ObjectPropertiesMessage } from '../messages/ObjectProperties';
export declare class RegionCommands extends CommandsBase {
getRegionHandle(regionID: UUID): Promise;
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): IGameObject[];
+ deselectObjects(objects: GameObject[]): Promise;
+ countObjects(): number;
+ selectObjects(objects: GameObject[]): Promise;
+ private resolveObjects;
+ getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number, resolve?: boolean): Promise;
grabObject(localID: number | UUID, grabOffset?: Vector3, uvCoordinate?: Vector3, stCoordinate?: Vector3, faceIndex?: number, position?: Vector3, normal?: Vector3, binormal?: Vector3): Promise;
deGrabObject(localID: number | UUID, grabOffset?: Vector3, uvCoordinate?: Vector3, stCoordinate?: Vector3, faceIndex?: number, position?: Vector3, normal?: Vector3, binormal?: Vector3): Promise;
dragGrabbedObject(localID: number | UUID, grabPosition: Vector3, grabOffset?: Vector3, uvCoordinate?: Vector3, stCoordinate?: Vector3, faceIndex?: number, position?: Vector3, normal?: Vector3, binormal?: Vector3): Promise;
diff --git a/dist/classes/commands/RegionCommands.js b/dist/classes/commands/RegionCommands.js
index 383b4a2..1c620c1 100644
--- a/dist/classes/commands/RegionCommands.js
+++ b/dist/classes/commands/RegionCommands.js
@@ -17,6 +17,10 @@ const __1 = require("../..");
const ObjectGrab_1 = require("../messages/ObjectGrab");
const ObjectDeGrab_1 = require("../messages/ObjectDeGrab");
const ObjectGrabUpdate_1 = require("../messages/ObjectGrabUpdate");
+const ObjectSelect_1 = require("../messages/ObjectSelect");
+const Utils_1 = require("../Utils");
+const ObjectDeselect_1 = require("../messages/ObjectDeselect");
+const PCode_1 = require("../../enums/PCode");
class RegionCommands extends CommandsBase_1.CommandsBase {
getRegionHandle(regionID) {
return __awaiter(this, void 0, void 0, function* () {
@@ -37,8 +41,216 @@ class RegionCommands extends CommandsBase_1.CommandsBase {
return responseMsg.ReplyBlock.RegionHandle;
});
}
- getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
- return this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ);
+ deselectObjects(objects) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const selectLimit = 255;
+ if (objects.length > selectLimit) {
+ for (let x = 0; x < objects.length; x += selectLimit) {
+ const selectList = [];
+ for (let y = 0; y < selectLimit; y++) {
+ if (y < objects.length) {
+ selectList.push(objects[x + y]);
+ }
+ }
+ yield this.deselectObjects(selectList);
+ }
+ return;
+ }
+ else {
+ const deselectObject = new ObjectDeselect_1.ObjectDeselectMessage();
+ deselectObject.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ deselectObject.ObjectData = [];
+ const uuidMap = {};
+ for (const obj of objects) {
+ const uuidStr = obj.FullID.toString();
+ if (!uuidMap[uuidStr]) {
+ uuidMap[uuidStr] = obj;
+ deselectObject.ObjectData.push({
+ ObjectLocalID: obj.ID
+ });
+ }
+ }
+ const sequenceID = this.circuit.sendMessage(deselectObject, __1.PacketFlags.Reliable);
+ return yield this.circuit.waitForAck(sequenceID, 10000);
+ }
+ });
+ }
+ countObjects() {
+ return this.currentRegion.objects.getNumberOfObjects();
+ }
+ selectObjects(objects) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const selectLimit = 255;
+ if (objects.length > selectLimit) {
+ for (let x = 0; x < objects.length; x += selectLimit) {
+ const selectList = [];
+ for (let y = 0; y < selectLimit; y++) {
+ if (y < objects.length) {
+ selectList.push(objects[x + y]);
+ }
+ }
+ yield this.selectObjects(selectList);
+ }
+ return;
+ }
+ else {
+ const selectObject = new ObjectSelect_1.ObjectSelectMessage();
+ selectObject.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ selectObject.ObjectData = [];
+ const uuidMap = {};
+ for (const obj of objects) {
+ const uuidStr = obj.FullID.toString();
+ if (!uuidMap[uuidStr]) {
+ uuidMap[uuidStr] = obj;
+ selectObject.ObjectData.push({
+ ObjectLocalID: obj.ID
+ });
+ }
+ }
+ let resolved = 0;
+ this.circuit.sendMessage(selectObject, __1.PacketFlags.Reliable);
+ return yield this.circuit.waitForMessage(Message_1.Message.ObjectProperties, 10000, (propertiesMessage) => {
+ let found = false;
+ for (const objData of propertiesMessage.ObjectData) {
+ const objDataUUID = objData.ObjectID.toString();
+ if (uuidMap[objDataUUID] !== undefined) {
+ resolved++;
+ const obj = uuidMap[objDataUUID];
+ obj.creatorID = objData.CreatorID;
+ obj.creationDate = objData.CreationDate;
+ obj.baseMask = objData.BaseMask;
+ obj.ownerMask = objData.OwnerMask;
+ obj.groupMask = objData.GroupMask;
+ obj.everyoneMask = objData.EveryoneMask;
+ obj.nextOwnerMask = objData.NextOwnerMask;
+ obj.ownershipCost = objData.OwnershipCost;
+ obj.saleType = objData.SaleType;
+ obj.salePrice = objData.SalePrice;
+ obj.aggregatePerms = objData.AggregatePerms;
+ obj.aggregatePermTextures = objData.AggregatePermTextures;
+ obj.aggregatePermTexturesOwner = objData.AggregatePermTexturesOwner;
+ obj.category = objData.Category;
+ obj.inventorySerial = objData.InventorySerial;
+ obj.itemID = objData.ItemID;
+ obj.folderID = objData.FolderID;
+ obj.fromTaskID = objData.FromTaskID;
+ obj.lastOwnerID = objData.LastOwnerID;
+ obj.name = Utils_1.Utils.BufferToStringSimple(objData.Name);
+ obj.description = Utils_1.Utils.BufferToStringSimple(objData.Description);
+ obj.touchName = Utils_1.Utils.BufferToStringSimple(objData.TouchName);
+ obj.sitName = Utils_1.Utils.BufferToStringSimple(objData.SitName);
+ obj.textureID = Utils_1.Utils.BufferToStringSimple(objData.TextureID);
+ obj.resolvedAt = new Date().getTime() / 1000;
+ delete uuidMap[objDataUUID];
+ found = true;
+ }
+ }
+ if (Object.keys(uuidMap).length === 0) {
+ return FilterResponse_1.FilterResponse.Finish;
+ }
+ if (!found) {
+ return FilterResponse_1.FilterResponse.NoMatch;
+ }
+ else {
+ return FilterResponse_1.FilterResponse.Match;
+ }
+ });
+ }
+ });
+ }
+ resolveObjects(objects) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const objs = {};
+ const scanObject = function (obj) {
+ const localID = obj.ID;
+ if (!objs[localID]) {
+ objs[localID] = obj;
+ if (obj.children) {
+ for (const child of obj.children) {
+ scanObject(child);
+ }
+ }
+ }
+ };
+ for (const obj of objects) {
+ scanObject(obj);
+ }
+ const resolveTime = new Date().getTime() / 1000;
+ let objectList = [];
+ let totalRemaining = 0;
+ try {
+ for (const k of Object.keys(objs)) {
+ const ky = parseInt(k, 10);
+ if (objs[ky] !== undefined) {
+ const o = objs[ky];
+ if (o.resolvedAt === undefined) {
+ o.resolvedAt = 0;
+ }
+ if (o.resolvedAt !== undefined && o.resolvedAt < resolveTime && o.PCode !== PCode_1.PCode.Avatar) {
+ objs[ky].name = undefined;
+ totalRemaining++;
+ objectList.push(objs[ky]);
+ if (objectList.length > 254) {
+ try {
+ yield this.selectObjects(objectList);
+ yield this.deselectObjects(objectList);
+ for (const chk of objectList) {
+ if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime) {
+ totalRemaining--;
+ }
+ }
+ }
+ catch (ignore) {
+ }
+ finally {
+ objectList = [];
+ }
+ }
+ }
+ }
+ }
+ if (objectList.length > 0) {
+ yield this.selectObjects(objectList);
+ yield this.deselectObjects(objectList);
+ for (const chk of objectList) {
+ if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime) {
+ totalRemaining--;
+ }
+ }
+ }
+ }
+ catch (ignore) {
+ }
+ finally {
+ if (totalRemaining < 1) {
+ totalRemaining = 0;
+ for (const obj of objectList) {
+ if (obj.resolvedAt === undefined || obj.resolvedAt < resolveTime) {
+ totalRemaining++;
+ }
+ }
+ if (totalRemaining > 0) {
+ console.error(totalRemaining + ' objects could not be resolved');
+ }
+ }
+ }
+ });
+ }
+ getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ, resolve = false) {
+ return __awaiter(this, void 0, void 0, function* () {
+ const objs = this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ);
+ if (resolve) {
+ console.log('Resolving ' + objs.length + ' objects');
+ yield this.resolveObjects(objs);
+ }
+ return objs;
+ });
}
grabObject(localID, grabOffset = __1.Vector3.getZero(), uvCoordinate = __1.Vector3.getZero(), stCoordinate = __1.Vector3.getZero(), faceIndex = 0, position = __1.Vector3.getZero(), normal = __1.Vector3.getZero(), binormal = __1.Vector3.getZero()) {
return __awaiter(this, void 0, void 0, function* () {
diff --git a/dist/classes/commands/RegionCommands.js.map b/dist/classes/commands/RegionCommands.js.map
index 501f90c..a9ba333 100644
--- a/dist/classes/commands/RegionCommands.js.map
+++ b/dist/classes/commands/RegionCommands.js.map
@@ -1 +1 @@
-{"version":3,"file":"RegionCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/RegionCommands.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"RegionCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/RegionCommands.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/interfaces/IObjectStore.d.ts b/dist/classes/interfaces/IObjectStore.d.ts
index a7048e4..3df6ff7 100644
--- a/dist/classes/interfaces/IObjectStore.d.ts
+++ b/dist/classes/interfaces/IObjectStore.d.ts
@@ -1,12 +1,12 @@
-import { IGameObject } from './IGameObject';
import { RBush3D } from 'rbush-3d/dist';
-import { GameObjectFull } from '../GameObjectFull';
import { UUID } from '../UUID';
+import { GameObject } from '../GameObject';
export interface IObjectStore {
rtree?: RBush3D;
- getObjectsByParent(parentID: number): IGameObject[];
+ getObjectsByParent(parentID: number): GameObject[];
shutdown(): void;
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[];
- getObjectByUUID(fullID: UUID): IGameObject;
- getObjectByLocalID(ID: number): IGameObject;
+ getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[];
+ getObjectByUUID(fullID: UUID): GameObject;
+ getObjectByLocalID(ID: number): GameObject;
+ getNumberOfObjects(): number;
}
diff --git a/dist/classes/interfaces/ITreeBoundingBox.d.ts b/dist/classes/interfaces/ITreeBoundingBox.d.ts
index 4695581..166e148 100644
--- a/dist/classes/interfaces/ITreeBoundingBox.d.ts
+++ b/dist/classes/interfaces/ITreeBoundingBox.d.ts
@@ -1,5 +1,5 @@
import { BBox } from 'rbush-3d/dist';
-import { IGameObject } from './IGameObject';
+import { GameObject } from '../GameObject';
export interface ITreeBoundingBox extends BBox {
- gameObject: IGameObject;
+ gameObject: GameObject;
}
diff --git a/lib/classes/Agent.ts b/lib/classes/Agent.ts
index 42a6dca..d44e3f2 100644
--- a/lib/classes/Agent.ts
+++ b/lib/classes/Agent.ts
@@ -19,9 +19,9 @@ import {RezSingleAttachmentFromInvMessage} from './messages/RezSingleAttachmentF
import {AttachmentPoint} from '../enums/AttachmentPoint';
import {Utils} from './Utils';
import {ClientEvents} from './ClientEvents';
-import {IGameObject} from './interfaces/IGameObject';
import Timer = NodeJS.Timer;
import {ControlFlags, GroupChatSessionAgentListEvent, AgentFlags, PacketFlags, AssetType} from '..';
+import {GameObject} from './GameObject';
export class Agent
{
@@ -53,7 +53,11 @@ export class Agent
uiFlags: {
'allowFirstLife'?: boolean
} = {};
- lookAt: Vector3;
+ cameraLookAt: Vector3 = new Vector3([0.979546, 0.105575, -0.171303]);
+ cameraCenter: Vector3 = new Vector3([199.58, 203.95, 24.304]);
+ cameraLeftAxis: Vector3 = new Vector3([-1.0, 0.0, 0]);
+ cameraUpAxis: Vector3 = new Vector3([0.0, 0.0, 1.0]);
+ cameraFar = 1;
maxGroups: number;
agentFlags: number;
startLocation: string;
@@ -164,11 +168,11 @@ export class Agent
HeadRotation: Quaternion.getIdentity(),
BodyRotation: Quaternion.getIdentity(),
State: AgentState.None,
- CameraCenter: new Vector3([199.58, 203.95, 24.304]),
- CameraAtAxis: new Vector3([0.979546, 0.105575, -0.171303]),
- CameraLeftAxis: new Vector3([-0.107158, 0.994242, 0]),
- CameraUpAxis: new Vector3([0.170316, 0.018357, 0.985218]),
- Far: 128,
+ CameraCenter: this.cameraCenter,
+ CameraAtAxis: this.cameraLookAt,
+ CameraLeftAxis: this.cameraLeftAxis,
+ CameraUpAxis: this.cameraUpAxis,
+ Far: this.cameraFar,
ControlFlags: this.controlFlags,
Flags: AgentFlags.None
};
@@ -266,7 +270,7 @@ export class Agent
if (item.type === 6)
{
let found = false;
- wornObjects.forEach((obj: IGameObject) =>
+ wornObjects.forEach((obj: GameObject) =>
{
if (obj.hasNameValueEntry('AttachItemID'))
{
diff --git a/lib/classes/EventQueueClient.ts b/lib/classes/EventQueueClient.ts
index b0314f1..9d52ff5 100644
--- a/lib/classes/EventQueueClient.ts
+++ b/lib/classes/EventQueueClient.ts
@@ -366,6 +366,10 @@ export class EventQueueClient
}
break;
}
+ case 'ObjectPhysicsProperties':
+ {
+ break;
+ }
case 'TeleportFinish':
{
const info = event['body']['Info'][0];
diff --git a/lib/classes/GameObject.ts b/lib/classes/GameObject.ts
new file mode 100644
index 0000000..ea2b13a
--- /dev/null
+++ b/lib/classes/GameObject.ts
@@ -0,0 +1,130 @@
+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 {Utils} from './Utils';
+import * as Long from 'long';
+
+export 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 = 0;
+ FullID = UUID.random();
+ ParentID = 0;
+ OwnerID = UUID.zero();
+ IsAttachment = false;
+ NameValue: {[key: string]: NameValue} = {};
+ PCode: PCode = PCode.None;
+
+ 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()
+ {
+ this.Position = Vector3.getZero();
+ this.Rotation = Quaternion.getIdentity();
+ this.AngularVelocity = Vector3.getZero();
+ this.TreeSpecies = 0;
+ this.SoundFlags = 0;
+ this.SoundRadius = 1.0;
+ this.SoundGain = 1.0;
+ this.ParentID = 0;
+ }
+
+ hasNameValueEntry(key: string): boolean
+ {
+ return this.NameValue[key] !== undefined;
+ }
+
+ getNameValueEntry(key: string): string
+ {
+ if (this.NameValue[key])
+ {
+ return this.NameValue[key].value;
+ }
+ return '';
+ }
+}
diff --git a/lib/classes/GameObjectFull.ts b/lib/classes/GameObjectFull.ts
deleted file mode 100644
index dba0dea..0000000
--- a/lib/classes/GameObjectFull.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-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 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()
- {
- this.Position = Vector3.getZero();
- this.Rotation = Quaternion.getIdentity();
- this.IsAttachment = false;
- this.NameValue = {};
- this.AngularVelocity = Vector3.getZero();
- this.TreeSpecies = 0;
- this.SoundFlags = 0;
- this.SoundRadius = 1.0;
- this.SoundGain = 1.0;
- this.ParentID = 0;
- }
-
- hasNameValueEntry(key: string): boolean
- {
- if (this.NameValue['AttachItemID'])
- {
- return true;
- }
- return false;
- }
-
- getNameValueEntry(key: string): string
- {
- if (this.NameValue['AttachItemID'])
- {
- return this.NameValue['AttachItemID'].value;
- }
- return '';
- }
-}
diff --git a/lib/classes/GameObjectLite.ts b/lib/classes/GameObjectLite.ts
deleted file mode 100644
index c8bcbfe..0000000
--- a/lib/classes/GameObjectLite.ts
+++ /dev/null
@@ -1,35 +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 class GameObjectLite implements IGameObject
-{
- rtreeEntry?: ITreeBoundingBox;
- ID: number;
- FullID: UUID;
- ParentID: number;
- OwnerID: UUID;
- IsAttachment: boolean;
- NameValue: {[key: string]: NameValue};
- PCode: PCode;
- constructor()
- {
- this.IsAttachment = false;
- }
-
- hasNameValueEntry(key: string): boolean
- {
- return this.NameValue['AttachItemID'] !== undefined;
- }
-
- getNameValueEntry(key: string): string
- {
- if (this.NameValue['AttachItemID'])
- {
- return this.NameValue['AttachItemID'].value;
- }
- return '';
- }
-}
diff --git a/lib/classes/LoginResponse.ts b/lib/classes/LoginResponse.ts
index 94f4f48..ba5e7c9 100644
--- a/lib/classes/LoginResponse.ts
+++ b/lib/classes/LoginResponse.ts
@@ -246,7 +246,7 @@ export class LoginResponse
});
break;
case 'look_at':
- this.agent.lookAt = LoginResponse.parseVector3(val);
+ this.agent.cameraLookAt = LoginResponse.parseVector3(val);
break;
case 'openid_url':
this.agent.openID.url = String(val);
diff --git a/lib/classes/ObjectStoreFull.ts b/lib/classes/ObjectStoreFull.ts
index 31d2be5..3ae1d2d 100644
--- a/lib/classes/ObjectStoreFull.ts
+++ b/lib/classes/ObjectStoreFull.ts
@@ -1,817 +1,554 @@
import {Circuit} from './Circuit';
-import {Packet} from './Packet';
-import {Message} from '../enums/Message';
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 {RequestMultipleObjectsMessage} from './messages/RequestMultipleObjects';
import {Agent} from './Agent';
import {UUID} from './UUID';
import {Quaternion} from './Quaternion';
import {Vector3} from './Vector3';
-import {ExtraParamType} from '../enums/ExtraParamType';
import {Utils} from './Utils';
import {PCode} from '../enums/PCode';
-import {NameValue} from './NameValue';
import {ClientEvents} from './ClientEvents';
-import {KillObjectMessage} from './messages/KillObject';
import {IObjectStore} from './interfaces/IObjectStore';
-import {GameObjectFull} from './GameObjectFull';
-import {IGameObject} from './interfaces/IGameObject';
import {BotOptionFlags, CompressedFlags} from '..';
import {RBush3D} from 'rbush-3d/dist';
-import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox';
import {Vector4} from './Vector4';
import {TextureEntry} from './TextureEntry';
import {Color4} from './Color4';
import {ParticleSystem} from './ParticleSystem';
+import {GameObject} from './GameObject';
+import {ObjectStoreLite} from './ObjectStoreLite';
-export class ObjectStoreFull implements IObjectStore
+export class ObjectStoreFull extends ObjectStoreLite implements IObjectStore
{
- private circuit: Circuit;
- private agent: Agent;
- private objects: { [key: number]: GameObjectFull } = {};
- private objectsByUUID: { [key: string]: number } = {};
- private objectsByParent: { [key: number]: number[] } = {};
- private clientEvents: ClientEvents;
- private options: BotOptionFlags;
- rtree: RBush3D;
+ rtree?: RBush3D;
constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags)
{
- agent.localID = 0;
+ super(circuit, agent, clientEvents, options);
this.rtree = new RBush3D();
- this.options = options;
- this.clientEvents = clientEvents;
- this.circuit = circuit;
- this.agent = agent;
- this.circuit.subscribeToMessages([
- Message.ObjectUpdate,
- Message.ObjectUpdateCached,
- Message.ObjectUpdateCompressed,
- Message.ImprovedTerseObjectUpdate,
- Message.MultipleObjectUpdate,
- Message.KillObject
- ], (packet: Packet) =>
+ }
+
+ protected objectUpdate(objectUpdate: ObjectUpdateMessage)
+ {
+ for (const objData of objectUpdate.ObjectData)
{
- switch (packet.message.id)
+ const localID = objData.ID;
+ const parentID = objData.ParentID;
+ let addToParentList = true;
+
+ if (this.objects[localID])
{
- case Message.ObjectUpdate:
- const objectUpdate = packet.message as ObjectUpdateMessage;
- for (const objData of objectUpdate.ObjectData)
+ if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID])
+ {
+ const ind = this.objectsByParent[parentID].indexOf(localID);
+ if (ind !== -1)
{
- const localID = objData.ID;
- const parentID = objData.ParentID;
- let addToParentList = true;
+ this.objectsByParent[parentID].splice(ind, 1);
+ }
+ }
+ else
+ {
+ addToParentList = false;
+ }
+ }
+ else
+ {
+ this.objects[localID] = new GameObject();
+ }
- 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 GameObjectFull();
- }
+ 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: Buffer = objData.ObjectData;
+ let dataPos = 0;
- 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: Buffer = objData.ObjectData;
- let dataPos = 0;
+ // noinspection FallThroughInSwitchStatementJS, TsLint
+ switch (data.length)
+ {
+ case 76:
+ // Avatar collision normal;
+ obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos);
+ dataPos += 16;
+ case 60:
+ // Position
+ obj.Position = new Vector3(objData.ObjectData, dataPos);
+ dataPos += 12;
+ obj.Velocity = new Vector3(objData.ObjectData, dataPos);
+ dataPos += 12;
+ obj.Acceleration = new Vector3(objData.ObjectData, dataPos);
+ dataPos += 12;
+ obj.Rotation = new Quaternion(objData.ObjectData, dataPos);
+ dataPos += 12;
+ obj.AngularVelocity = new Vector3(objData.ObjectData, dataPos);
+ dataPos += 12;
+ break;
+ case 48:
+ obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos);
+ dataPos += 16;
+ case 32:
+ obj.Position = new Vector3([
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -0.5 * 256.0, 1.5 * 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -0.5 * 256.0, 1.5 * 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 3.0 * 256.0)
+ ]);
+ dataPos += 6;
+ obj.Velocity = new Vector3([
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
+ ]);
+ dataPos += 6;
+ obj.Acceleration = new Vector3([
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
+ ]);
+ dataPos += 6;
+ obj.Rotation = new Quaternion([
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -1.0, 1.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -1.0, 1.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0)
+ ]);
+ dataPos += 8;
+ obj.AngularVelocity = new Vector3([
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
+ Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
+ ]);
+ dataPos += 6;
+ break;
+ case 16:
+ obj.Position = new Vector3([
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
+ ]);
+ obj.Velocity = new Vector3([
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
+ ]);
+ obj.Acceleration = new Vector3([
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
+ ]);
+ obj.Rotation = new Quaternion([
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0)
+ ]);
+ obj.AngularVelocity = new Vector3([
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
+ 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(objData.TextureEntry);
+ obj.TextureAnim = objData.TextureAnim;
+ const pcodeData = objData.Data;
+ obj.Text = Utils.BufferToStringSimple(objData.Text);
+ obj.TextColor = new Color4(objData.TextColor, 0, false, true);
+ obj.MediaURL = 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;
- // noinspection FallThroughInSwitchStatementJS, TsLint
- switch (data.length)
- {
- case 76:
- // Avatar collision normal;
- obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos);
- dataPos += 16;
- case 60:
- // Position
- obj.Position = new Vector3(objData.ObjectData, dataPos);
- dataPos += 12;
- obj.Velocity = new Vector3(objData.ObjectData, dataPos);
- dataPos += 12;
- obj.Acceleration = new Vector3(objData.ObjectData, dataPos);
- dataPos += 12;
- obj.Rotation = new Quaternion(objData.ObjectData, dataPos);
- dataPos += 12;
- obj.AngularVelocity = new Vector3(objData.ObjectData, dataPos);
- dataPos += 12;
- break;
- case 48:
- obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos);
- dataPos += 16;
- case 32:
- obj.Position = new Vector3([
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -0.5 * 256.0, 1.5 * 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -0.5 * 256.0, 1.5 * 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 3.0 * 256.0)
- ]);
- dataPos += 6;
- obj.Velocity = new Vector3([
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
- ]);
- dataPos += 6;
- obj.Acceleration = new Vector3([
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
- ]);
- dataPos += 6;
- obj.Rotation = new Quaternion([
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -1.0, 1.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -1.0, 1.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0)
- ]);
- dataPos += 8;
- obj.AngularVelocity = new Vector3([
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0),
- Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0)
- ]);
- dataPos += 6;
- break;
- case 16:
- obj.Position = new Vector3([
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
- ]);
- obj.Velocity = new Vector3([
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
- ]);
- obj.Acceleration = new Vector3([
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0)
- ]);
- obj.Rotation = new Quaternion([
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0)
- ]);
- obj.AngularVelocity = new Vector3([
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0),
- 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(objData.TextureEntry);
- obj.TextureAnim = objData.TextureAnim;
- const pcodeData = objData.Data;
- obj.Text = Utils.BufferToStringSimple(objData.Text);
- obj.TextColor = new Color4(objData.TextColor, 0, false, true);
- obj.MediaURL = 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.Grass:
- case PCode.Tree:
- case PCode.NewTree:
- if (pcodeData.length === 1)
- {
- obj.TreeSpecies = pcodeData[0];
- }
- break;
- }
-
- if (this.objects[localID].PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString())
- {
- this.agent.localID = localID;
-
- if (this.options & BotOptionFlags.StoreMyAttachmentsOnly)
- {
- Object.keys(this.objectsByParent).forEach((objParentID: string) =>
- {
- 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.Avatar)
- {
- foundAvatars = true;
- }
- }
- });
- if (this.objects[parent])
- {
- const o = this.objects[parent];
- if (o.PCode === PCode.Avatar)
- {
- foundAvatars = true;
- }
- }
- if (!foundAvatars)
- {
- this.deleteObject(parent);
- }
- }
- });
- }
- }
-
- this.readExtraParams(objData.ExtraParams, 0, this.objects[localID]);
- this.objects[localID].NameValue = this.parseNameValues(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.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID))
- {
- // Drop object
- this.deleteObject(localID);
- }
- else
- {
- this.insertIntoRtree(obj);
- }
+ switch (obj.PCode)
+ {
+ case PCode.Grass:
+ case PCode.Tree:
+ case PCode.NewTree:
+ if (pcodeData.length === 1)
+ {
+ obj.TreeSpecies = pcodeData[0];
}
break;
- case Message.ObjectUpdateCached:
+ }
+
+ if (this.objects[localID].PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString())
+ {
+ this.agent.localID = localID;
+
+ if (this.options & BotOptionFlags.StoreMyAttachmentsOnly)
{
- const objectUpdateCached = packet.message as ObjectUpdateCachedMessage;
+ Object.keys(this.objectsByParent).forEach((objParentID: string) =>
+ {
+ 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.Avatar)
+ {
+ foundAvatars = true;
+ }
+ }
+ });
+ if (this.objects[parent])
+ {
+ const o = this.objects[parent];
+ if (o.PCode === PCode.Avatar)
+ {
+ foundAvatars = true;
+ }
+ }
+ if (!foundAvatars)
+ {
+ this.deleteObject(parent);
+ }
+ }
+ });
+ }
+ }
+
+ this.readExtraParams(objData.ExtraParams, 0, this.objects[localID]);
+ this.objects[localID].NameValue = this.parseNameValues(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.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID))
+ {
+ // Drop object
+ this.deleteObject(localID);
+ }
+ else
+ {
+ this.insertIntoRtree(obj);
+ }
+ }
+ }
+
+ protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage)
+ {
+ const rmo = new 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);
+ }
+ }
+
+ protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage)
+ {
+ for (const obj of objectUpdateCompressed.ObjectData)
+ {
+ const flags = obj.UpdateFlags;
+ const buf = obj.Data;
+ let pos = 0;
+
+ const fullID = new 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();
+ }
+ 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(buf, pos, false);
+ pos = pos + 12;
+ o.Position = new Vector3(buf, pos, false);
+ pos = pos + 12;
+ o.Rotation = new Quaternion(buf, pos);
+ pos = pos + 12;
+ const compressedflags: CompressedFlags = buf.readUInt32LE(pos);
+ pos = pos + 4;
+ o.OwnerID = new UUID(buf, pos);
+ pos += 16;
+
+ if (compressedflags & CompressedFlags.HasAngularVelocity)
+ {
+ o.AngularVelocity = new Vector3(buf, pos, false);
+ pos = pos + 12;
+ }
+ if (compressedflags & 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.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && o.ParentID !== this.agent.localID))
+ {
+ // Drop object
+ this.deleteObject(localID);
+ return;
+ }
+ else
+ {
+ if (compressedflags & CompressedFlags.Tree)
+ {
+ o.TreeSpecies = buf.readUInt8(pos++);
+ }
+ else if (compressedflags & CompressedFlags.ScratchPad)
+ {
+ o.TreeSpecies = 0;
+ const scratchPadSize = buf.readUInt8(pos++);
+ // Ignore this data
+ pos = pos + scratchPadSize;
+ }
+ if (compressedflags & CompressedFlags.HasText)
+ {
+ // Read null terminated string
+ const result = Utils.BufferToString(buf, pos);
+
+ pos += result.readLength;
+ o.Text = result.result;
+ o.TextColor = new Color4(buf, pos, false, true);
+ pos = pos + 4;
+ }
+ else
+ {
+ o.Text = '';
+ }
+ if (compressedflags & CompressedFlags.MediaURL)
+ {
+ const result = Utils.BufferToString(buf, pos);
+
+ pos += result.readLength;
+ o.MediaURL = result.result;
+ }
+ if (compressedflags & CompressedFlags.HasParticles)
+ {
+ o.Particles = new ParticleSystem(buf.slice(pos, pos + 86), 0);
+ pos += 86;
+ }
+
+ // Extra params
+ pos = this.readExtraParams(buf, pos, o);
+
+ if (compressedflags & CompressedFlags.HasSound)
+ {
+ o.Sound = new 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 & CompressedFlags.HasNameValues)
+ {
+ const result = 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(buf.slice(pos, pos + textureEntryLength));
+ pos = pos + textureEntryLength;
+
+ if (compressedflags & CompressedFlags.TextureAnimation)
+ {
+ // TODO: Properly parse textureAnim
+ pos = pos + 4;
+ }
+
+ o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0;
+
+ this.insertIntoRtree(o);
+ }
+ }
+ }
+
+ protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage)
+ {
+ const dilation = objectUpdateTerse.RegionData.TimeDilation / 65535.0;
+
+ for (let i = 0; i < objectUpdateTerse.ObjectData.length; i++)
+ {
+ const objectData = objectUpdateTerse.ObjectData[i];
+ if (!(this.options & 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: boolean = (objectData.Data.readUInt8(pos++) !== 0);
+ if (avatar)
+ {
+ this.objects[localID].CollisionPlane = new Vector4(objectData.Data, pos);
+ pos += 16;
+ }
+ this.objects[localID].Position = new Vector3(objectData.Data, pos);
+ pos += 12;
+ this.objects[localID].Velocity = new Vector3([
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -128.0, 128.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -128.0, 128.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -128.0, 128.0)
+ ]);
+ pos += 6;
+ this.objects[localID].Acceleration = new Vector3([
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0)
+ ]);
+ pos += 6;
+ this.objects[localID].Rotation = new Quaternion([
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -1.0, 1.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -1.0, 1.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -1.0, 1.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 6), -1.0, 1.0)
+ ]);
+ pos += 8;
+ this.objects[localID].AngularVelocity = new Vector3([
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0),
+ Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0)
+ ]);
+ pos += 6;
+
+ if (objectData.TextureEntry.length > 0)
+ {
+ // No idea why the first four bytes are skipped here.
+ this.objects[localID].TextureEntry = new 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');
+ // We don't know about this object, so request it
const rmo = new 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)
- {
- circuit.sendMessage(rmo, 0);
- }
- break;
- }
- case Message.ObjectUpdateCompressed:
- {
- const objectUpdateCompressed = packet.message as ObjectUpdateCompressedMessage;
- for (const obj of objectUpdateCompressed.ObjectData)
- {
- const flags = obj.UpdateFlags;
- const buf = obj.Data;
- let pos = 0;
-
- const fullID = new 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 GameObjectFull();
- }
- 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(buf, pos, false);
- pos = pos + 12;
- o.Position = new Vector3(buf, pos, false);
- pos = pos + 12;
- o.Rotation = new Quaternion(buf, pos);
- pos = pos + 12;
- const compressedflags: CompressedFlags = buf.readUInt32LE(pos);
- pos = pos + 4;
- o.OwnerID = new UUID(buf, pos);
- pos += 16;
-
- if (compressedflags & CompressedFlags.HasAngularVelocity)
- {
- o.AngularVelocity = new Vector3(buf, pos, false);
- pos = pos + 12;
- }
- if (compressedflags & 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.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && o.ParentID !== this.agent.localID))
- {
- // Drop object
- this.deleteObject(localID);
- return;
- }
- else
- {
- if (compressedflags & CompressedFlags.Tree)
- {
- o.TreeSpecies = buf.readUInt8(pos++);
- }
- else if (compressedflags & CompressedFlags.ScratchPad)
- {
- o.TreeSpecies = 0;
- const scratchPadSize = buf.readUInt8(pos++);
- // Ignore this data
- pos = pos + scratchPadSize;
- }
- if (compressedflags & CompressedFlags.HasText)
- {
- // Read null terminated string
- const result = Utils.BufferToString(buf, pos);
-
- pos += result.readLength;
- o.Text = result.result;
- o.TextColor = new Color4(buf, pos, false, true);
- pos = pos + 4;
- }
- else
- {
- o.Text = '';
- }
- if (compressedflags & CompressedFlags.MediaURL)
- {
- const result = Utils.BufferToString(buf, pos);
-
- pos += result.readLength;
- o.MediaURL = result.result;
- }
- if (compressedflags & CompressedFlags.HasParticles)
- {
- o.Particles = new ParticleSystem(buf.slice(pos, pos + 86), 0);
- pos += 86;
- }
-
- // Extra params
- pos = this.readExtraParams(buf, pos, o);
-
- if (compressedflags & CompressedFlags.HasSound)
- {
- o.Sound = new 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 & CompressedFlags.HasNameValues)
- {
- const result = 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(buf.slice(pos, pos + textureEntryLength));
- pos = pos + textureEntryLength;
-
- if (compressedflags & CompressedFlags.TextureAnimation)
- {
- // TODO: Properly parse textureAnim
- pos = pos + 4;
- }
-
- o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0;
-
- this.insertIntoRtree(o);
- }
- }
- break;
- }
- case Message.ImprovedTerseObjectUpdate:
- {
- const objectUpdateTerse = packet.message as ImprovedTerseObjectUpdateMessage;
- const dilation = objectUpdateTerse.RegionData.TimeDilation / 65535.0;
-
- for (let i = 0; i < objectUpdateTerse.ObjectData.length; i++)
- {
- const objectData = objectUpdateTerse.ObjectData[i];
- if (!(this.options & 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: boolean = (objectData.Data.readUInt8(pos++) !== 0);
- if (avatar)
- {
- this.objects[localID].CollisionPlane = new Vector4(objectData.Data, pos);
- pos += 16;
- }
- this.objects[localID].Position = new Vector3(objectData.Data, pos);
- pos += 12;
- this.objects[localID].Velocity = new Vector3([
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -128.0, 128.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -128.0, 128.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -128.0, 128.0)
- ]);
- pos += 6;
- this.objects[localID].Acceleration = new Vector3([
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0)
- ]);
- pos += 6;
- this.objects[localID].Rotation = new Quaternion([
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -1.0, 1.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -1.0, 1.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -1.0, 1.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 6), -1.0, 1.0)
- ]);
- pos += 8;
- this.objects[localID].AngularVelocity = new Vector3([
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0),
- Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0)
- ]);
- pos += 6;
-
- if (objectData.TextureEntry.length > 0)
- {
- // No idea why the first four bytes are skipped here.
- this.objects[localID].TextureEntry = new 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');
- // We don't know about this object, so request it
- const rmo = new RequestMultipleObjectsMessage();
- rmo.AgentData = {
- AgentID: this.agent.agentID,
- SessionID: this.circuit.sessionID
- };
- rmo.ObjectData = [];
- rmo.ObjectData.push({
- CacheMissType: 0,
- ID: localID
- });
- circuit.sendMessage(rmo, 0);
- }
- }
- }
- break;
- }
- case Message.MultipleObjectUpdate:
- const multipleObjectUpdate = packet.message as MultipleObjectUpdateMessage;
- // TODO: multipleObjectUpdate
- console.error('TODO: MultipleObjectUpdate');
- break;
- case Message.KillObject:
- const killObj = packet.message as KillObjectMessage;
- for (const obj of killObj.ObjectData)
- {
- const objectID = obj.ID;
- this.deleteObject(objectID);
- }
- break;
- }
- });
- }
-
- insertIntoRtree(obj: GameObjectFull)
- {
- if (obj.rtreeEntry !== undefined)
- {
- this.rtree.remove(obj.rtreeEntry);
- }
- const normalizedScale = obj.Scale.multiplyByQuat(obj.Rotation);
- const bounds: ITreeBoundingBox = {
- 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);
- }
-
- deleteObject(objectID: number)
- {
- if (this.objects[objectID])
- {
- // First, kill all children
- if (this.objectsByParent[objectID])
- {
- this.objectsByParent[objectID].forEach((childObjID) =>
- {
- this.deleteObject(childObjID);
- });
- }
- delete this.objectsByParent[objectID];
-
- // Now delete this object
- 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);
+ rmo.ObjectData.push({
+ CacheMissType: 0,
+ ID: localID
+ });
+ this.circuit.sendMessage(rmo, 0);
}
}
- if (this.objects[objectID].rtreeEntry !== undefined)
- {
- this.rtree.remove(this.objects[objectID].rtreeEntry);
- }
- delete this.objects[objectID];
}
}
-
- readExtraParams(buf: Buffer, pos: number, o: GameObjectFull): number
- {
- if (pos >= buf.length)
- {
- return 0;
- }
- const extraParamCount = buf.readUInt8(pos++);
- for (let k = 0; k < extraParamCount; k++)
- {
- const type: ExtraParamType = buf.readUInt16LE(pos);
- pos = pos + 2;
- const paramLength = buf.readUInt32LE(pos);
- pos = pos + 4;
-
- // TODO: Read extra param data
- pos += paramLength;
- }
- return pos;
- }
-
- getObjectsByParent(parentID: number): IGameObject[]
- {
- const list = this.objectsByParent[parentID];
- if (list === undefined)
- {
- return [];
- }
- const result: IGameObject[] = [];
- list.forEach((localID) =>
- {
- result.push(this.objects[localID]);
- });
- return result;
- }
-
- getObjectByUUID(fullID: UUID | string): IGameObject
- {
- if (fullID instanceof UUID)
- {
- fullID = fullID.toString();
- }
- if (!this.objectsByUUID[fullID])
- {
- throw new Error('No object found with that UUID');
- }
- const localID: number = this.objectsByUUID[fullID];
- return this.objects[localID];
- }
-
- getObjectByLocalID(localID: number): IGameObject
- {
- if (!this.objects[localID])
- {
- throw new Error('No object found with that UUID');
- }
- return this.objects[localID];
- }
-
- parseNameValues(str: string): { [key: string]: NameValue }
- {
- const nv: { [key: string]: NameValue } = {};
- 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();
- 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 = {};
- this.rtree.clear();
- this.objectsByUUID = {};
- this.objectsByParent = {};
- }
-
- private findParent(go: GameObjectFull): GameObjectFull
- {
- if (go.ParentID === 0)
- {
- return go;
- }
- else
- {
- return this.findParent(this.objects[go.ParentID]);
- }
- }
-
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[]
- {
- const result = this.rtree.search({
- minX: minX,
- maxX: maxX,
- minY: minY,
- maxY: maxY,
- minZ: minZ,
- maxZ: maxZ
- });
- const found: {[key: string]: GameObjectFull} = {};
- const objs: GameObjectFull[] = [];
- for (const obj of result)
- {
- const o = obj as ITreeBoundingBox;
- const go = o.gameObject as GameObjectFull;
- try
- {
- const parent = this.findParent(go);
- const uuid = parent.FullID.toString();
-
- if (parent !== go)
- {
- console.log('Resolved object ' + go.FullID.toString() + ' to parent ' + parent.FullID.toString() + ' which ' + ((found[uuid] === undefined) ? 'does not exist' : 'already exists'));
- }
-
-
- 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);
- // Unable to find parent, full object probably not fully loaded yet
- }
- }
- return objs;
- }
}
diff --git a/lib/classes/ObjectStoreLite.ts b/lib/classes/ObjectStoreLite.ts
index 2352b0b..561ec19 100644
--- a/lib/classes/ObjectStoreLite.ts
+++ b/lib/classes/ObjectStoreLite.ts
@@ -15,21 +15,23 @@ import {PCode} from '../enums/PCode';
import {ClientEvents} from './ClientEvents';
import {KillObjectMessage} from './messages/KillObject';
import {IObjectStore} from './interfaces/IObjectStore';
-import {GameObjectLite} from './GameObjectLite';
import {NameValue} from './NameValue';
import {BotOptionFlags, CompressedFlags} from '..';
-import {IGameObject} from './interfaces/IGameObject';
-import {GameObjectFull} from './GameObjectFull';
+import {GameObject} from './GameObject';
+import {RBush3D} from 'rbush-3d/dist';
+import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox';
export class ObjectStoreLite implements IObjectStore
{
- private circuit: Circuit;
- private agent: Agent;
- private objects: { [key: number]: GameObjectLite } = {};
- private objectsByUUID: { [key: string]: number } = {};
- private objectsByParent: { [key: number]: number[] } = {};
- private clientEvents: ClientEvents;
- private options: BotOptionFlags;
+ 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)
{
@@ -51,295 +53,319 @@ export class ObjectStoreLite implements IObjectStore
{
case Message.ObjectUpdate:
const objectUpdate = packet.message as ObjectUpdateMessage;
- 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 GameObjectLite();
- }
-
- 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.BufferToStringSimple(objData.NameValue));
-
- if (objData.PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString())
- {
- this.agent.localID = localID;
-
- if (this.options & BotOptionFlags.StoreMyAttachmentsOnly)
- {
- Object.keys(this.objectsByParent).forEach((objParentID: string) =>
- {
- 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.Avatar)
- {
- foundAvatars = true;
- }
- }
- });
- if (this.objects[parent])
- {
- const o = this.objects[parent];
- if (o.PCode === 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.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly)
- {
- if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID)
- {
- // Drop object
- this.deleteObject(localID);
- return;
- }
- }
- });
+ this.objectUpdate(objectUpdate);
break;
case Message.ObjectUpdateCached:
const objectUpdateCached = packet.message as ObjectUpdateCachedMessage;
- const rmo = new 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
- });
- });
- circuit.sendMessage(rmo, 0);
+ this.objectUpdateCached(objectUpdateCached);
break;
case Message.ObjectUpdateCompressed:
{
const objectUpdateCompressed = packet.message as ObjectUpdateCompressedMessage;
- for (const obj of objectUpdateCompressed.ObjectData)
- {
- const flags = obj.UpdateFlags;
- const buf = obj.Data;
- let pos = 0;
-
- const fullID = new 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 GameObjectLite();
- }
- 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: CompressedFlags = buf.readUInt32LE(pos);
- pos = pos + 4;
- o.OwnerID = new UUID(buf, pos);
- pos += 16;
-
- if (compressedflags & CompressedFlags.HasAngularVelocity)
- {
- pos = pos + 12;
- }
- if (compressedflags & 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.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly)
- {
- if (this.agent.localID !== 0 && o.ParentID !== this.agent.localID)
- {
- // Drop object
- this.deleteObject(localID);
- return;
- }
- }
- if (compressedflags & CompressedFlags.Tree)
- {
- pos++;
- }
- else if (compressedflags & CompressedFlags.ScratchPad)
- {
- const scratchPadSize = buf.readUInt8(pos++);
- // Ignore this data
- pos = pos + scratchPadSize;
- }
- if (compressedflags & CompressedFlags.HasText)
- {
- // Read null terminated string
- const result = Utils.BufferToString(buf, pos);
-
- pos += result.readLength;
- pos = pos + 4;
- }
- if (compressedflags & CompressedFlags.MediaURL)
- {
- const result = Utils.BufferToString(buf, pos);
-
- pos += result.readLength;
- }
- if (compressedflags & CompressedFlags.HasParticles)
- {
- // TODO: Particle system block
- pos += 86;
- }
-
- // Extra params
- pos = this.readExtraParams(buf, pos, o);
-
- if (compressedflags & CompressedFlags.HasSound)
- {
- pos = pos + 16;
- pos += 4;
- pos++;
- pos = pos + 4;
- }
- if (compressedflags & CompressedFlags.HasNameValues)
- {
- const result = 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;
- // TODO: Properly parse textureentry;
- pos = pos + textureEntryLength;
-
- if (compressedflags & CompressedFlags.TextureAnimation)
- {
- // TODO: Properly parse textureAnim
- pos = pos + 4;
- }
-
- o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0;
- };
-
+ this.objectUpdateCompressed(objectUpdateCompressed);
break;
}
case Message.ImprovedTerseObjectUpdate:
const objectUpdateTerse = packet.message as ImprovedTerseObjectUpdateMessage;
- // TODO: ImprovedTerseObjectUPdate
+ this.objectUpdateTerse(objectUpdateTerse);
break;
case Message.MultipleObjectUpdate:
const multipleObjectUpdate = packet.message as MultipleObjectUpdateMessage;
- // TODO: multipleObjectUpdate
- console.error('TODO: MultipleObjectUpdate');
+ this.objectUpdateMultiple(multipleObjectUpdate);
break;
case Message.KillObject:
const killObj = packet.message as KillObjectMessage;
- killObj.ObjectData.forEach((obj) =>
- {
- const objectID = obj.ID;
- this.deleteObject(objectID);
- });
+ this.killObject(killObj);
break;
}
});
}
+ protected objectUpdate(objectUpdate: ObjectUpdateMessage)
+ {
+ 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();
+ }
+
+ 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.BufferToStringSimple(objData.NameValue));
+
+ if (objData.PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString())
+ {
+ this.agent.localID = localID;
+
+ if (this.options & BotOptionFlags.StoreMyAttachmentsOnly)
+ {
+ Object.keys(this.objectsByParent).forEach((objParentID: string) =>
+ {
+ 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.Avatar)
+ {
+ foundAvatars = true;
+ }
+ }
+ });
+ if (this.objects[parent])
+ {
+ const o = this.objects[parent];
+ if (o.PCode === 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.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly)
+ {
+ if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID)
+ {
+ // Drop object
+ this.deleteObject(localID);
+ return;
+ }
+ }
+ });
+ }
+
+ protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage)
+ {
+ const rmo = new 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);
+ }
+
+ protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage)
+ {
+ for (const obj of objectUpdateCompressed.ObjectData)
+ {
+ const flags = obj.UpdateFlags;
+ const buf = obj.Data;
+ let pos = 0;
+
+ const fullID = new 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();
+ }
+ 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: CompressedFlags = buf.readUInt32LE(pos);
+ pos = pos + 4;
+ o.OwnerID = new UUID(buf, pos);
+ pos += 16;
+
+ if (compressedflags & CompressedFlags.HasAngularVelocity)
+ {
+ pos = pos + 12;
+ }
+ if (compressedflags & 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.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly)
+ {
+ if (this.agent.localID !== 0 && o.ParentID !== this.agent.localID)
+ {
+ // Drop object
+ this.deleteObject(localID);
+ return;
+ }
+ }
+ if (compressedflags & CompressedFlags.Tree)
+ {
+ pos++;
+ }
+ else if (compressedflags & CompressedFlags.ScratchPad)
+ {
+ const scratchPadSize = buf.readUInt8(pos++);
+ // Ignore this data
+ pos = pos + scratchPadSize;
+ }
+ if (compressedflags & CompressedFlags.HasText)
+ {
+ // Read null terminated string
+ const result = Utils.BufferToString(buf, pos);
+
+ pos += result.readLength;
+ pos = pos + 4;
+ }
+ if (compressedflags & CompressedFlags.MediaURL)
+ {
+ const result = Utils.BufferToString(buf, pos);
+
+ pos += result.readLength;
+ }
+ if (compressedflags & CompressedFlags.HasParticles)
+ {
+ // TODO: Particle system block
+ pos += 86;
+ }
+
+ // Extra params
+ pos = this.readExtraParams(buf, pos, o);
+
+ if (compressedflags & CompressedFlags.HasSound)
+ {
+ pos = pos + 16;
+ pos += 4;
+ pos++;
+ pos = pos + 4;
+ }
+ if (compressedflags & CompressedFlags.HasNameValues)
+ {
+ const result = 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;
+ // TODO: Properly parse textureentry;
+ pos = pos + textureEntryLength;
+
+ if (compressedflags & CompressedFlags.TextureAnimation)
+ {
+ // TODO: Properly parse textureAnim
+ pos = pos + 4;
+ }
+
+ o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0;
+ }
+ }
+
+ protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage)
+ { }
+
+ protected objectUpdateMultiple(objectUpdateMultiple: MultipleObjectUpdateMessage)
+ { }
+
+ protected killObject(killObj: KillObjectMessage)
+ {
+ killObj.ObjectData.forEach((obj) =>
+ {
+ const objectID = obj.ID;
+ this.deleteObject(objectID);
+ });
+ }
+
deleteObject(objectID: number)
{
if (this.objects[objectID])
@@ -371,11 +397,15 @@ export class ObjectStoreLite implements IObjectStore
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: Buffer, pos: number, o: GameObjectLite): number
+ readExtraParams(buf: Buffer, pos: number, o: GameObject): number
{
if (pos >= buf.length)
{
@@ -395,14 +425,14 @@ export class ObjectStoreLite implements IObjectStore
return pos;
}
- getObjectsByParent(parentID: number): GameObjectLite[]
+ getObjectsByParent(parentID: number): GameObject[]
{
const list = this.objectsByParent[parentID];
if (list === undefined)
{
return [];
}
- const result: GameObjectLite[] = [];
+ const result: GameObject[] = [];
list.forEach((localID) =>
{
result.push(this.objects[localID]);
@@ -449,16 +479,102 @@ export class ObjectStoreLite implements IObjectStore
shutdown()
{
this.objects = {};
+ if (this.rtree)
+ {
+ this.rtree.clear();
+ }
this.objectsByUUID = {};
this.objectsByParent = {};
}
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[]
+ protected findParent(go: GameObject): GameObject
{
- throw new Error('GetObjectsInArea not available with the Lite object store.');
+ if (go.ParentID !== 0 && this.objects[go.ParentID])
+ {
+ return this.findParent(this.objects[go.ParentID]);
+ }
+ else
+ {
+ return go;
+ }
}
- getObjectByUUID(fullID: UUID | string): IGameObject
+ private populateChildren(obj: GameObject)
+ {
+ 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);
+ }
+ }
+
+ getNumberOfObjects()
+ {
+ return Object.keys(this.objects).length;
+ }
+
+ getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[]
+ {
+ 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: {[key: string]: GameObject} = {};
+ const objs: GameObject[] = [];
+ for (const obj of result)
+ {
+ const o = obj as ITreeBoundingBox;
+ const go = o.gameObject as GameObject;
+ if (go.PCode !== PCode.Avatar && (go.IsAttachment === undefined || go.IsAttachment === false))
+ {
+ try
+ {
+ const parent = this.findParent(go);
+ if (parent.PCode !== 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);
+ // Unable to find parent, full object probably not fully loaded yet
+ }
+ }
+ }
+
+ // Now populate children of each found object
+ for (const obj of objs)
+ {
+ this.populateChildren(obj);
+ }
+
+ return objs;
+ }
+
+ getObjectByUUID(fullID: UUID | string): GameObject
{
if (fullID instanceof UUID)
{
@@ -472,7 +588,7 @@ export class ObjectStoreLite implements IObjectStore
return this.objects[localID];
}
- getObjectByLocalID(localID: number): IGameObject
+ getObjectByLocalID(localID: number): GameObject
{
if (!this.objects[localID])
{
@@ -480,4 +596,33 @@ export class ObjectStoreLite implements IObjectStore
}
return this.objects[localID];
}
+
+ insertIntoRtree(obj: GameObject)
+ {
+ 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: ITreeBoundingBox = {
+ 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);
+ }
}
diff --git a/lib/classes/commands/AgentCommands.ts b/lib/classes/commands/AgentCommands.ts
index 9f0afe3..34ed3be 100644
--- a/lib/classes/commands/AgentCommands.ts
+++ b/lib/classes/commands/AgentCommands.ts
@@ -2,6 +2,7 @@ import {UUID} from '../UUID';
import {AgentAnimationMessage} from '../messages/AgentAnimation';
import {PacketFlags} from '../../enums/PacketFlags';
import {CommandsBase} from './CommandsBase';
+import {Vector3} from '../Vector3';
export class AgentCommands extends CommandsBase
{
@@ -36,4 +37,27 @@ export class AgentCommands extends CommandsBase
{
return await this.animate(anim, false);
}
+
+ setCamera(position: Vector3, lookAt: Vector3, viewDistance?: number, leftAxis?: Vector3, upAxis?: Vector3)
+ {
+ this.agent.cameraCenter = position;
+ this.agent.cameraLookAt = lookAt;
+ if (viewDistance !== undefined)
+ {
+ this.agent.cameraFar = viewDistance;
+ }
+ if (leftAxis !== undefined)
+ {
+ this.agent.cameraLeftAxis = leftAxis;
+ }
+ if (upAxis !== undefined)
+ {
+ this.agent.cameraUpAxis = upAxis;
+ }
+ }
+
+ setViewDistance(viewDistance: number)
+ {
+ this.agent.cameraFar = viewDistance;
+ }
}
diff --git a/lib/classes/commands/RegionCommands.ts b/lib/classes/commands/RegionCommands.ts
index 82781fa..9b8395f 100644
--- a/lib/classes/commands/RegionCommands.ts
+++ b/lib/classes/commands/RegionCommands.ts
@@ -6,10 +6,15 @@ import {Message} from '../../enums/Message';
import {FilterResponse} from '../../enums/FilterResponse';
import {RegionIDAndHandleReplyMessage} from '../messages/RegionIDAndHandleReply';
import {PacketFlags, Vector3} from '../..';
-import {IGameObject} from '../interfaces/IGameObject';
import {ObjectGrabMessage} from '../messages/ObjectGrab';
import {ObjectDeGrabMessage} from '../messages/ObjectDeGrab';
import {ObjectGrabUpdateMessage} from '../messages/ObjectGrabUpdate';
+import {GameObject} from '../GameObject';
+import {ObjectSelectMessage} from '../messages/ObjectSelect';
+import {ObjectPropertiesMessage} from '../messages/ObjectProperties';
+import {Utils} from '../Utils';
+import {ObjectDeselectMessage} from '../messages/ObjectDeselect';
+import {PCode} from '../../enums/PCode';
export class RegionCommands extends CommandsBase
{
@@ -35,9 +40,277 @@ export class RegionCommands extends CommandsBase
return responseMsg.ReplyBlock.RegionHandle;
}
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): IGameObject[]
+ async deselectObjects(objects: GameObject[])
{
- return this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ);
+ // Limit to 255 objects at once
+ const selectLimit = 255;
+ if (objects.length > selectLimit)
+ {
+ for (let x = 0; x < objects.length; x += selectLimit)
+ {
+ const selectList: GameObject[] = [];
+ for (let y = 0; y < selectLimit; y++)
+ {
+ if (y < objects.length)
+ {
+ selectList.push(objects[x + y]);
+ }
+ }
+ await this.deselectObjects(selectList);
+ }
+ return;
+ }
+ else
+ {
+ const deselectObject = new ObjectDeselectMessage();
+ deselectObject.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ deselectObject.ObjectData = [];
+ const uuidMap: {[key: string]: GameObject} = {};
+ for (const obj of objects)
+ {
+ const uuidStr = obj.FullID.toString();
+ if (!uuidMap[uuidStr])
+ {
+ uuidMap[uuidStr] = obj;
+ deselectObject.ObjectData.push({
+ ObjectLocalID: obj.ID
+ });
+ }
+ }
+
+ // Create a map of our expected UUIDs
+
+ const sequenceID = this.circuit.sendMessage(deselectObject, PacketFlags.Reliable);
+ return await this.circuit.waitForAck(sequenceID, 10000);
+ }
+ }
+
+ countObjects(): number
+ {
+ return this.currentRegion.objects.getNumberOfObjects();
+ }
+
+ async selectObjects(objects: GameObject[])
+ {
+ // Limit to 255 objects at once
+ const selectLimit = 255;
+ if (objects.length > selectLimit)
+ {
+ for (let x = 0; x < objects.length; x += selectLimit)
+ {
+ const selectList: GameObject[] = [];
+ for (let y = 0; y < selectLimit; y++)
+ {
+ if (y < objects.length)
+ {
+ selectList.push(objects[x + y]);
+ }
+ }
+ await this.selectObjects(selectList);
+ }
+ return;
+ }
+ else
+ {
+ const selectObject = new ObjectSelectMessage();
+ selectObject.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ selectObject.ObjectData = [];
+ const uuidMap: {[key: string]: GameObject} = {};
+ for (const obj of objects)
+ {
+ const uuidStr = obj.FullID.toString();
+ if (!uuidMap[uuidStr])
+ {
+ uuidMap[uuidStr] = obj;
+ selectObject.ObjectData.push({
+ ObjectLocalID: obj.ID
+ });
+ }
+ }
+
+ // Create a map of our expected UUIDs
+ let resolved = 0;
+
+ this.circuit.sendMessage(selectObject, PacketFlags.Reliable);
+ return await this.circuit.waitForMessage(Message.ObjectProperties, 10000, (propertiesMessage: ObjectPropertiesMessage): FilterResponse =>
+ {
+ let found = false;
+ for (const objData of propertiesMessage.ObjectData)
+ {
+ const objDataUUID = objData.ObjectID.toString();
+ if (uuidMap[objDataUUID] !== undefined)
+ {
+ resolved++;
+ const obj = uuidMap[objDataUUID];
+ obj.creatorID = objData.CreatorID;
+ obj.creationDate = objData.CreationDate;
+ obj.baseMask = objData.BaseMask;
+ obj.ownerMask = objData.OwnerMask;
+ obj.groupMask = objData.GroupMask;
+ obj.everyoneMask = objData.EveryoneMask;
+ obj.nextOwnerMask = objData.NextOwnerMask;
+ obj.ownershipCost = objData.OwnershipCost;
+ obj.saleType = objData.SaleType;
+ obj.salePrice = objData.SalePrice;
+ obj.aggregatePerms = objData.AggregatePerms;
+ obj.aggregatePermTextures = objData.AggregatePermTextures;
+ obj.aggregatePermTexturesOwner = objData.AggregatePermTexturesOwner;
+ obj.category = objData.Category;
+ obj.inventorySerial = objData.InventorySerial;
+ obj.itemID = objData.ItemID;
+ obj.folderID = objData.FolderID;
+ obj.fromTaskID = objData.FromTaskID;
+ obj.lastOwnerID = objData.LastOwnerID;
+ obj.name = Utils.BufferToStringSimple(objData.Name);
+ obj.description = Utils.BufferToStringSimple(objData.Description);
+ obj.touchName = Utils.BufferToStringSimple(objData.TouchName);
+ obj.sitName = Utils.BufferToStringSimple(objData.SitName);
+ obj.textureID = Utils.BufferToStringSimple(objData.TextureID);
+ obj.resolvedAt = new Date().getTime() / 1000;
+ delete uuidMap[objDataUUID];
+ found = true;
+
+ // console.log(obj.name + ' (' + resolved + ' of ' + objects.length + ')');
+ }
+ }
+ if (Object.keys(uuidMap).length === 0)
+ {
+ return FilterResponse.Finish;
+ }
+ if (!found)
+ {
+ return FilterResponse.NoMatch;
+ }
+ else
+ {
+ return FilterResponse.Match;
+ }
+ });
+ }
+ }
+
+ private async resolveObjects(objects: GameObject[])
+ {
+ // First, create a map of all object IDs
+ const objs: {[key: number]: GameObject} = {};
+ const scanObject = function(obj: GameObject)
+ {
+ const localID = obj.ID;
+ if (!objs[localID])
+ {
+ objs[localID] = obj;
+ if (obj.children)
+ {
+ for (const child of obj.children)
+ {
+ scanObject(child);
+ }
+ }
+ }
+ };
+ for (const obj of objects)
+ {
+ scanObject(obj);
+ }
+
+ const resolveTime = new Date().getTime() / 1000;
+ let objectList = [];
+ let totalRemaining = 0;
+ try
+ {
+ for (const k of Object.keys(objs))
+ {
+ const ky = parseInt(k, 10);
+ if (objs[ky] !== undefined)
+ {
+ const o = objs[ky];
+ if (o.resolvedAt === undefined)
+ {
+ o.resolvedAt = 0;
+ }
+ if (o.resolvedAt !== undefined && o.resolvedAt < resolveTime && o.PCode !== PCode.Avatar)
+ {
+ objs[ky].name = undefined;
+ totalRemaining++;
+ objectList.push(objs[ky]);
+ if (objectList.length > 254)
+ {
+ try
+ {
+ await this.selectObjects(objectList);
+ await this.deselectObjects(objectList);
+ for (const chk of objectList)
+ {
+ if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime)
+ {
+ totalRemaining--;
+ }
+ }
+ }
+ catch (ignore)
+ {
+
+ }
+ finally
+ {
+ objectList = [];
+ }
+ }
+ }
+ }
+ }
+ if (objectList.length > 0)
+ {
+ await this.selectObjects(objectList);
+ await this.deselectObjects(objectList);
+ for (const chk of objectList)
+ {
+ if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime)
+ {
+ totalRemaining --;
+ }
+ }
+ }
+ }
+ catch (ignore)
+ {
+
+ }
+ finally
+ {
+ if (totalRemaining < 1)
+ {
+ totalRemaining = 0;
+ for (const obj of objectList)
+ {
+ if (obj.resolvedAt === undefined || obj.resolvedAt < resolveTime)
+ {
+ totalRemaining++;
+ }
+ }
+ if (totalRemaining > 0)
+ {
+ console.error(totalRemaining + ' objects could not be resolved');
+ }
+ }
+ }
+ }
+
+ async getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number, resolve: boolean = false): Promise
+ {
+ const objs = this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ);
+ if (resolve)
+ {
+ console.log('Resolving ' + objs.length + ' objects');
+ await this.resolveObjects(objs);
+ }
+ return objs;
}
async grabObject(localID: number | UUID,
@@ -51,7 +324,7 @@ export class RegionCommands extends CommandsBase
{
if (localID instanceof UUID)
{
- const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID);
+ const obj: GameObject = this.currentRegion.objects.getObjectByUUID(localID);
localID = obj.ID;
}
const msg = new ObjectGrabMessage();
@@ -88,7 +361,7 @@ export class RegionCommands extends CommandsBase
{
if (localID instanceof UUID)
{
- const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID);
+ const obj: GameObject = this.currentRegion.objects.getObjectByUUID(localID);
localID = obj.ID;
}
const msg = new ObjectDeGrabMessage();
@@ -126,7 +399,7 @@ export class RegionCommands extends CommandsBase
// For some reason this message takes a UUID when the others take a LocalID - wtf?
if (!(localID instanceof UUID))
{
- const obj: IGameObject = this.currentRegion.objects.getObjectByLocalID(localID);
+ const obj: GameObject = this.currentRegion.objects.getObjectByLocalID(localID);
localID = obj.FullID;
}
const msg = new ObjectGrabUpdateMessage();
@@ -165,7 +438,7 @@ export class RegionCommands extends CommandsBase
{
if (localID instanceof UUID)
{
- const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID);
+ const obj: GameObject = this.currentRegion.objects.getObjectByUUID(localID);
localID = obj.ID;
}
await this.grabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
diff --git a/lib/classes/interfaces/IGameObject.ts b/lib/classes/interfaces/IGameObject.ts
deleted file mode 100644
index a12b29c..0000000
--- a/lib/classes/interfaces/IGameObject.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import {ITreeBoundingBox} from './ITreeBoundingBox';
-import {UUID} from '../UUID';
-import {PCode} from '../../enums/PCode';
-
-export interface IGameObject
-{
- ID: number;
- FullID: UUID;
- ParentID: number;
- OwnerID: UUID;
- IsAttachment: boolean;
- PCode: PCode;
- rtreeEntry?: ITreeBoundingBox;
- hasNameValueEntry(key: string): boolean;
- getNameValueEntry(key: string): string;
-}
diff --git a/lib/classes/interfaces/IObjectStore.ts b/lib/classes/interfaces/IObjectStore.ts
index f9235af..1729ab7 100644
--- a/lib/classes/interfaces/IObjectStore.ts
+++ b/lib/classes/interfaces/IObjectStore.ts
@@ -1,14 +1,14 @@
-import {IGameObject} from './IGameObject';
import {RBush3D} from 'rbush-3d/dist';
-import {GameObjectFull} from '../GameObjectFull';
import {UUID} from '../UUID';
+import {GameObject} from '../GameObject';
export interface IObjectStore
{
rtree?: RBush3D;
- getObjectsByParent(parentID: number): IGameObject[];
+ getObjectsByParent(parentID: number): GameObject[];
shutdown(): void;
- getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[];
- getObjectByUUID(fullID: UUID): IGameObject;
- getObjectByLocalID(ID: number): IGameObject;
+ getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[];
+ getObjectByUUID(fullID: UUID): GameObject;
+ getObjectByLocalID(ID: number): GameObject;
+ getNumberOfObjects(): number;
}
diff --git a/lib/classes/interfaces/ITreeBoundingBox.ts b/lib/classes/interfaces/ITreeBoundingBox.ts
index 1022e18..17aca0e 100644
--- a/lib/classes/interfaces/ITreeBoundingBox.ts
+++ b/lib/classes/interfaces/ITreeBoundingBox.ts
@@ -1,7 +1,7 @@
import {BBox} from 'rbush-3d/dist';
-import {IGameObject} from './IGameObject';
+import {GameObject} from '../GameObject';
export interface ITreeBoundingBox extends BBox
{
- gameObject: IGameObject;
+ gameObject: GameObject;
}
diff --git a/package-lock.json b/package-lock.json
index c19017a..175a307 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -71,6 +71,12 @@
"@types/node": "*"
}
},
+ "@types/tiny-async-pool": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/tiny-async-pool/-/tiny-async-pool-1.0.0.tgz",
+ "integrity": "sha512-d8RK1jg/piCgv5/jD8ta8uJOE10tU8MWExzL1Kf1kOjMaTuL5cW0eZ9ax001SSYa4Ecg6xzZBh/jM4GB7+5OAg==",
+ "dev": true
+ },
"@types/tough-cookie": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz",
@@ -167,6 +173,10 @@
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
},
+ "assertion": {
+ "version": "github:rxaviers/assertion#ea0449073d2c9e276c447f03df0fa021228de11b",
+ "from": "github:rxaviers/assertion"
+ },
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -815,8 +825,7 @@
"semver": {
"version": "5.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
- "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
- "dev": true
+ "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
},
"source-map": {
"version": "0.6.1",
@@ -874,6 +883,15 @@
"has-flag": "^3.0.0"
}
},
+ "tiny-async-pool": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.0.1.tgz",
+ "integrity": "sha512-nqqQJ3ZwO/ajCk9hJisYWiW1pKgGZqxQPk2Q/2rzL84GyaFZ3N75sYcvpM+T6OYndgM4UqnezmGURHzQq7D64w==",
+ "requires": {
+ "assertion": "github:rxaviers/assertion#ea0449073d2c9e276c447f03df0fa021228de11b",
+ "semver": "^5.5.0"
+ }
+ },
"tough-cookie": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
diff --git a/package.json b/package.json
index 48a520c..f6bff14 100644
--- a/package.json
+++ b/package.json
@@ -27,6 +27,7 @@
"@types/mocha": "^5.2.5",
"@types/node": "^10.11.6",
"@types/request": "^2.47.1",
+ "@types/tiny-async-pool": "^1.0.0",
"@types/uuid": "^3.4.4",
"@types/validator": "^9.4.2",
"@types/xml": "^1.0.2",
@@ -45,6 +46,7 @@
"rbush-3d": "0.0.4",
"request": "^2.88.0",
"rxjs": "^6.3.3",
+ "tiny-async-pool": "^1.0.1",
"uuid": "^3.3.2",
"validator": "^10.8.0",
"xml": "^1.0.1",