From ff0a5fa58bd39431c0b304749e9bb6a26a382690 Mon Sep 17 00:00:00 2001
From: Casper Warden <216465704+casperwardensl@users.noreply.github.com>
Date: Tue, 16 Oct 2018 16:46:58 +0100
Subject: [PATCH] - Add grabObject, deGrabObject, dragGrabbedObject,
touchObject to RegionCommands (closes #8) - Properly decode object
TextureEntry - Properly decode object ParticleSystem - Properly decode object
ObjectData - Properly decode object TextColor - Properly decode Linden Tree
species - Correct handling of ObjectUpdateCached (only request objects if we
don't already have them) - Implement handling of ImprovedTerseObjectUpdate to
complete support for R-Tree object searching - Object store interface:
getObjectByUUID, getObjectByLocalID
---
dist/classes/Color4.d.ts | 10 +
dist/classes/Color4.js | 43 +++
dist/classes/Color4.js.map | 1 +
dist/classes/GameObjectFull.d.ts | 12 +-
dist/classes/GameObjectFull.js.map | 2 +-
dist/classes/ObjectStoreFull.d.ts | 3 +
dist/classes/ObjectStoreFull.js | 226 ++++++++++--
dist/classes/ObjectStoreFull.js.map | 2 +-
dist/classes/ObjectStoreLite.d.ts | 4 +
dist/classes/ObjectStoreLite.js | 16 +
dist/classes/ObjectStoreLite.js.map | 2 +-
dist/classes/ParticleSystem.d.ts | 41 +++
dist/classes/ParticleSystem.js | 153 +++++++++
dist/classes/ParticleSystem.js.map | 1 +
dist/classes/TextureEntry.d.ts | 14 +
dist/classes/TextureEntry.js | 266 ++++++++++++++
dist/classes/TextureEntry.js.map | 1 +
dist/classes/TextureEntryFace.d.ts | 23 ++
dist/classes/TextureEntryFace.js | 25 ++
dist/classes/TextureEntryFace.js.map | 1 +
dist/classes/Utils.d.ts | 4 +
dist/classes/Utils.js | 22 ++
dist/classes/Utils.js.map | 2 +-
dist/classes/commands/RegionCommands.d.ts | 5 +
dist/classes/commands/RegionCommands.js | 117 ++++++-
dist/classes/commands/RegionCommands.js.map | 2 +-
dist/classes/interfaces/IGameObject.d.ts | 8 +
dist/classes/interfaces/IObjectStore.d.ts | 3 +
dist/enums/BlendFunc.d.ts | 12 +
dist/enums/BlendFunc.js | 16 +
dist/enums/BlendFunc.js.map | 1 +
dist/enums/ParticleDataFlags.d.ts | 16 +
dist/enums/ParticleDataFlags.js | 20 ++
dist/enums/ParticleDataFlags.js.map | 1 +
dist/enums/SourcePattern.d.ts | 8 +
dist/enums/SourcePattern.js | 12 +
dist/enums/SourcePattern.js.map | 1 +
dist/enums/TextureFlags.d.ts | 15 +
dist/enums/TextureFlags.js | 19 +
dist/enums/TextureFlags.js.map | 1 +
dist/index.d.ts | 6 +-
dist/index.js | 8 +
dist/index.js.map | 2 +-
lib/classes/Color4.ts | 45 +++
lib/classes/GameObjectFull.ts | 12 +-
lib/classes/ObjectStoreFull.ts | 241 ++++++++++++-
lib/classes/ObjectStoreLite.ts | 23 ++
lib/classes/ParticleSystem.ts | 186 ++++++++++
lib/classes/TextureEntry.ts | 362 ++++++++++++++++++++
lib/classes/TextureEntryFace.ts | 43 +++
lib/classes/Utils.ts | 32 +-
lib/classes/commands/RegionCommands.ts | 173 ++++++++--
lib/classes/interfaces/IGameObject.ts | 8 +
lib/classes/interfaces/IObjectStore.ts | 3 +
lib/enums/BlendFunc.ts | 13 +
lib/enums/ParticleDataFlags.ts | 17 +
lib/enums/SourcePattern.ts | 9 +
lib/enums/TextureFlags.ts | 16 +
lib/index.ts | 8 +
59 files changed, 2263 insertions(+), 75 deletions(-)
create mode 100644 dist/classes/Color4.d.ts
create mode 100644 dist/classes/Color4.js
create mode 100644 dist/classes/Color4.js.map
create mode 100644 dist/classes/ParticleSystem.d.ts
create mode 100644 dist/classes/ParticleSystem.js
create mode 100644 dist/classes/ParticleSystem.js.map
create mode 100644 dist/classes/TextureEntry.d.ts
create mode 100644 dist/classes/TextureEntry.js
create mode 100644 dist/classes/TextureEntry.js.map
create mode 100644 dist/classes/TextureEntryFace.d.ts
create mode 100644 dist/classes/TextureEntryFace.js
create mode 100644 dist/classes/TextureEntryFace.js.map
create mode 100644 dist/enums/BlendFunc.d.ts
create mode 100644 dist/enums/BlendFunc.js
create mode 100644 dist/enums/BlendFunc.js.map
create mode 100644 dist/enums/ParticleDataFlags.d.ts
create mode 100644 dist/enums/ParticleDataFlags.js
create mode 100644 dist/enums/ParticleDataFlags.js.map
create mode 100644 dist/enums/SourcePattern.d.ts
create mode 100644 dist/enums/SourcePattern.js
create mode 100644 dist/enums/SourcePattern.js.map
create mode 100644 dist/enums/TextureFlags.d.ts
create mode 100644 dist/enums/TextureFlags.js
create mode 100644 dist/enums/TextureFlags.js.map
create mode 100644 lib/classes/Color4.ts
create mode 100644 lib/classes/ParticleSystem.ts
create mode 100644 lib/classes/TextureEntry.ts
create mode 100644 lib/classes/TextureEntryFace.ts
create mode 100644 lib/enums/BlendFunc.ts
create mode 100644 lib/enums/ParticleDataFlags.ts
create mode 100644 lib/enums/SourcePattern.ts
create mode 100644 lib/enums/TextureFlags.ts
diff --git a/dist/classes/Color4.d.ts b/dist/classes/Color4.d.ts
new file mode 100644
index 0000000..d7f69c8
--- /dev/null
+++ b/dist/classes/Color4.d.ts
@@ -0,0 +1,10 @@
+///
+export declare class Color4 {
+ red: number | Buffer;
+ green: number;
+ blue: number | boolean;
+ alpha: number | boolean;
+ static black: Color4;
+ static white: Color4;
+ constructor(red: number | Buffer, green: number, blue: number | boolean, alpha?: number | boolean);
+}
diff --git a/dist/classes/Color4.js b/dist/classes/Color4.js
new file mode 100644
index 0000000..16cfe93
--- /dev/null
+++ b/dist/classes/Color4.js
@@ -0,0 +1,43 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+class Color4 {
+ constructor(red, green, blue, alpha = 0) {
+ this.red = red;
+ this.green = green;
+ this.blue = blue;
+ this.alpha = alpha;
+ if (red instanceof Buffer && typeof blue === 'boolean') {
+ const buf = red;
+ const pos = green;
+ const inverted = blue;
+ let alphaInverted = false;
+ if (typeof alpha === 'boolean' && alpha === true) {
+ alphaInverted = true;
+ }
+ this.red = 0.0;
+ this.green = 0.0;
+ this.blue = 0.0;
+ this.alpha = 0.0;
+ const quanta = 1.0 / 255.0;
+ if (inverted) {
+ this.red = (255 - buf[pos]) * quanta;
+ this.green = (255 - buf[pos + 1]) * quanta;
+ this.blue = (255 - buf[pos + 2]) * quanta;
+ this.alpha = (255 - buf[pos + 3]) * quanta;
+ }
+ else {
+ this.red = buf[pos] * quanta;
+ this.green = buf[pos + 1] * quanta;
+ this.blue = buf[pos + 2] * quanta;
+ this.alpha = buf[pos + 3] * quanta;
+ }
+ if (alphaInverted) {
+ this.alpha = 1.0 - this.alpha;
+ }
+ }
+ }
+}
+Color4.black = new Color4(0.0, 0.0, 0.0, 1.0);
+Color4.white = new Color4(1.0, 1.0, 1.0, 1.0);
+exports.Color4 = Color4;
+//# sourceMappingURL=Color4.js.map
\ No newline at end of file
diff --git a/dist/classes/Color4.js.map b/dist/classes/Color4.js.map
new file mode 100644
index 0000000..5c213e6
--- /dev/null
+++ b/dist/classes/Color4.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Color4.js","sourceRoot":"","sources":["../../lib/classes/Color4.ts"],"names":[],"mappings":";;AAAA,MAAa,MAAM;IAKf,YAAmB,GAAoB,EAAS,KAAa,EAAS,IAAsB,EAAS,QAA0B,CAAC;QAA7G,QAAG,GAAH,GAAG,CAAiB;QAAS,UAAK,GAAL,KAAK,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAkB;QAAS,UAAK,GAAL,KAAK,CAAsB;QAE5H,IAAI,GAAG,YAAY,MAAM,IAAI,OAAO,IAAI,KAAK,SAAS,EACtD;YACI,MAAM,GAAG,GAAG,GAAG,CAAC;YAChB,MAAM,GAAG,GAAG,KAAK,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAChD;gBACI,aAAa,GAAG,IAAI,CAAC;aACxB;YAED,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;YACf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;YAChB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YAEjB,MAAM,MAAM,GAAW,GAAG,GAAG,KAAK,CAAC;YACnC,IAAI,QAAQ,EACZ;gBACI,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;gBACrC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC3C,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;gBAC1C,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;aAC9C;iBAED;gBACI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBAC7B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;gBACnC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;gBAClC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;aACtC;YACD,IAAI,aAAa,EACjB;gBACI,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;aACjC;SACJ;IACL,CAAC;;AAzCM,YAAK,GAAW,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/C,YAAK,GAAW,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAH1D,wBA4CC"}
\ No newline at end of file
diff --git a/dist/classes/GameObjectFull.d.ts b/dist/classes/GameObjectFull.d.ts
index adf0563..c64545e 100644
--- a/dist/classes/GameObjectFull.d.ts
+++ b/dist/classes/GameObjectFull.d.ts
@@ -8,6 +8,10 @@ import { NameValue } from './NameValue';
import { IGameObject } from './interfaces/IGameObject';
import { SoundFlags } from '..';
import { ITreeBoundingBox } from './interfaces/ITreeBoundingBox';
+import { Vector4 } from './Vector4';
+import { TextureEntry } from './TextureEntry';
+import { Color4 } from './Color4';
+import { ParticleSystem } from './ParticleSystem';
export declare class GameObjectFull implements IGameObject {
rtreeEntry?: ITreeBoundingBox;
ID: number;
@@ -40,11 +44,11 @@ export declare class GameObjectFull implements IGameObject {
ProfileBegin: number;
ProfileEnd: number;
ProfileHollow: number;
- TextureEntry: Buffer;
+ TextureEntry: TextureEntry;
TextureAnim: Buffer;
Data: Buffer;
Text: string;
- TextColor: Buffer;
+ TextColor: Color4;
MediaURL: string;
PSBlock: Buffer;
OwnerID: UUID;
@@ -53,6 +57,9 @@ export declare class GameObjectFull implements IGameObject {
JointAxisOrAnchor: Vector3;
Position: Vector3;
Rotation: Quaternion;
+ CollisionPlane: Vector4;
+ Velocity: Vector3;
+ Acceleration: Vector3;
AngularVelocity: Vector3;
TreeSpecies: Tree;
Sound: UUID;
@@ -63,6 +70,7 @@ export declare class GameObjectFull implements IGameObject {
NameValue: {
[key: string]: NameValue;
};
+ Particles: ParticleSystem;
constructor();
hasNameValueEntry(key: string): boolean;
getNameValueEntry(key: string): string;
diff --git a/dist/classes/GameObjectFull.js.map b/dist/classes/GameObjectFull.js.map
index c94044a..fbb0d2d 100644
--- a/dist/classes/GameObjectFull.js.map
+++ b/dist/classes/GameObjectFull.js.map
@@ -1 +1 @@
-{"version":3,"file":"GameObjectFull.js","sourceRoot":"","sources":["../../lib/classes/GameObjectFull.ts"],"names":[],"mappings":";;AAAA,uCAAkC;AAGlC,6CAAwC;AAOxC,MAAa,cAAc;IAsDvB;QAEI,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,uBAAU,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAClC;YACI,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAClC;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;SAC/C;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AArFD,wCAqFC"}
\ No newline at end of file
+{"version":3,"file":"GameObjectFull.js","sourceRoot":"","sources":["../../lib/classes/GameObjectFull.ts"],"names":[],"mappings":";;AAAA,uCAAkC;AAGlC,6CAAwC;AAWxC,MAAa,cAAc;IA0DvB;QAEI,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,uBAAU,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,eAAe,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAClC;YACI,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAClC;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;SAC/C;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAzFD,wCAyFC"}
\ No newline at end of file
diff --git a/dist/classes/ObjectStoreFull.d.ts b/dist/classes/ObjectStoreFull.d.ts
index 777b194..df744ff 100644
--- a/dist/classes/ObjectStoreFull.d.ts
+++ b/dist/classes/ObjectStoreFull.d.ts
@@ -1,6 +1,7 @@
///
import { Circuit } from './Circuit';
import { Agent } from './Agent';
+import { UUID } from './UUID';
import { NameValue } from './NameValue';
import { ClientEvents } from './ClientEvents';
import { IObjectStore } from './interfaces/IObjectStore';
@@ -22,6 +23,8 @@ export declare class ObjectStoreFull implements IObjectStore {
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;
};
diff --git a/dist/classes/ObjectStoreFull.js b/dist/classes/ObjectStoreFull.js
index 3abe401..4bc1fe0 100644
--- a/dist/classes/ObjectStoreFull.js
+++ b/dist/classes/ObjectStoreFull.js
@@ -11,6 +11,10 @@ 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 {
constructor(circuit, agent, clientEvents, options) {
this.objects = {};
@@ -61,6 +65,89 @@ class ObjectStoreFull {
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;
@@ -81,11 +168,11 @@ class ObjectStoreFull {
obj.ProfileBegin = objData.ProfileBegin;
obj.ProfileEnd = objData.ProfileEnd;
obj.ProfileHollow = objData.ProfileHollow;
- obj.TextureEntry = objData.TextureEntry;
+ obj.TextureEntry = new TextureEntry_1.TextureEntry(objData.TextureEntry);
obj.TextureAnim = objData.TextureAnim;
- obj.Data = objData.Data;
+ const pcodeData = objData.Data;
obj.Text = Utils_1.Utils.BufferToStringSimple(objData.Text);
- obj.TextColor = objData.TextColor;
+ 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;
@@ -96,6 +183,15 @@ class ObjectStoreFull {
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) {
@@ -142,21 +238,27 @@ class ObjectStoreFull {
}
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);
- break;
+ {
+ 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;
@@ -239,7 +341,7 @@ class ObjectStoreFull {
const result = Utils_1.Utils.BufferToString(buf, pos);
pos += result.readLength;
o.Text = result.result;
- o.TextColor = buf.slice(pos, pos + 4);
+ o.TextColor = new Color4_1.Color4(buf, pos, false, true);
pos = pos + 4;
}
else {
@@ -251,6 +353,7 @@ class ObjectStoreFull {
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);
@@ -293,6 +396,7 @@ class ObjectStoreFull {
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;
@@ -304,8 +408,72 @@ class ObjectStoreFull {
break;
}
case Message_1.Message.ImprovedTerseObjectUpdate:
- const objectUpdateTerse = packet.message;
- break;
+ {
+ 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');
@@ -388,6 +556,22 @@ class ObjectStoreFull {
});
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');
diff --git a/dist/classes/ObjectStoreFull.js.map b/dist/classes/ObjectStoreFull.js.map
index fa62daf..949272b 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 35b9231..fd18b77 100644
--- a/dist/classes/ObjectStoreLite.d.ts
+++ b/dist/classes/ObjectStoreLite.d.ts
@@ -1,11 +1,13 @@
///
import { Circuit } from './Circuit';
import { Agent } from './Agent';
+import { UUID } from './UUID';
import { ClientEvents } from './ClientEvents';
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';
export declare class ObjectStoreLite implements IObjectStore {
private circuit;
@@ -24,4 +26,6 @@ export declare class ObjectStoreLite implements IObjectStore {
};
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;
}
diff --git a/dist/classes/ObjectStoreLite.js b/dist/classes/ObjectStoreLite.js
index 290ec15..98a522d 100644
--- a/dist/classes/ObjectStoreLite.js
+++ b/dist/classes/ObjectStoreLite.js
@@ -328,6 +328,22 @@ class ObjectStoreLite {
getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
throw new Error('GetObjectsInArea not available with the Lite object store.');
}
+ 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];
+ }
}
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 69bc682..364197c 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/ParticleSystem.d.ts b/dist/classes/ParticleSystem.d.ts
new file mode 100644
index 0000000..f21a921
--- /dev/null
+++ b/dist/classes/ParticleSystem.d.ts
@@ -0,0 +1,41 @@
+///
+import { BlendFunc } from '../enums/BlendFunc';
+import { SourcePattern } from '../enums/SourcePattern';
+import { Vector3 } from './Vector3';
+import { UUID } from './UUID';
+import { ParticleDataFlags } from '../enums/ParticleDataFlags';
+import { Color4 } from './Color4';
+export declare class ParticleSystem {
+ startGlow: number;
+ endGlow: number;
+ blendFuncSource: BlendFunc;
+ blendFuncDest: BlendFunc;
+ crc: number;
+ pattern: SourcePattern;
+ maxAge: number;
+ startAge: number;
+ innerAngle: number;
+ outerAngle: number;
+ burstRate: number;
+ burstRadius: number;
+ burstSpeedMin: number;
+ burstSpeedMax: number;
+ burstPartCount: number;
+ angularVelocity: Vector3;
+ acceleration: Vector3;
+ texture: UUID;
+ target: UUID;
+ dataFlags: ParticleDataFlags;
+ partMaxAge: number;
+ startColor: Color4;
+ endColor: Color4;
+ startScaleX: number;
+ startScaleY: number;
+ endScaleX: number;
+ endScaleY: number;
+ flags: number;
+ static unpackFixed(buf: Buffer, pos: number, signed: boolean, intBits: number, fracBits: number): number;
+ constructor(buf: Buffer, pos: number);
+ unpackSystem(buf: Buffer, pos: number): number;
+ unpackLegacyData(buf: Buffer, pos: number): number;
+}
diff --git a/dist/classes/ParticleSystem.js b/dist/classes/ParticleSystem.js
new file mode 100644
index 0000000..c34de18
--- /dev/null
+++ b/dist/classes/ParticleSystem.js
@@ -0,0 +1,153 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const BlendFunc_1 = require("../enums/BlendFunc");
+const SourcePattern_1 = require("../enums/SourcePattern");
+const Vector3_1 = require("./Vector3");
+const UUID_1 = require("./UUID");
+const ParticleDataFlags_1 = require("../enums/ParticleDataFlags");
+const Color4_1 = require("./Color4");
+class ParticleSystem {
+ constructor(buf, pos) {
+ this.startGlow = 0.0;
+ this.endGlow = 0.0;
+ this.blendFuncSource = BlendFunc_1.BlendFunc.SourceAlpha;
+ this.blendFuncDest = BlendFunc_1.BlendFunc.OneMinusSourceAlpha;
+ this.crc = 0;
+ this.pattern = SourcePattern_1.SourcePattern.None;
+ this.maxAge = 0.0;
+ this.startAge = 0.0;
+ this.innerAngle = 0.0;
+ this.outerAngle = 0.0;
+ this.burstRate = 0.0;
+ this.burstRadius = 0.0;
+ this.burstSpeedMin = 0.0;
+ this.burstSpeedMax = 0.0;
+ this.burstPartCount = 0;
+ this.angularVelocity = Vector3_1.Vector3.getZero();
+ this.acceleration = Vector3_1.Vector3.getZero();
+ this.texture = UUID_1.UUID.zero();
+ this.target = UUID_1.UUID.zero();
+ this.dataFlags = ParticleDataFlags_1.ParticleDataFlags.None;
+ this.partMaxAge = 0.0;
+ this.startColor = Color4_1.Color4.black;
+ this.endColor = Color4_1.Color4.black;
+ this.startScaleX = 0.0;
+ this.startScaleY = 0.0;
+ this.endScaleX = 0.0;
+ this.endScaleY = 0.0;
+ this.flags = 0;
+ const size = buf.length - pos;
+ if (size === 86) {
+ pos = this.unpackSystem(buf, pos);
+ pos = this.unpackLegacyData(buf, pos);
+ }
+ else if (size > 86 && size <= 98) {
+ const sysSize = buf.readInt32LE(pos);
+ pos += 4;
+ if (sysSize !== 68) {
+ console.error('Particle system block size ' + sysSize + ' different from expected 68 bytes');
+ return;
+ }
+ pos = this.unpackSystem(buf, pos);
+ const dataSize = buf.readInt32LE(pos);
+ pos += 4;
+ pos = this.unpackLegacyData(buf, pos);
+ if ((this.dataFlags & ParticleDataFlags_1.ParticleDataFlags.DataGlow) === ParticleDataFlags_1.ParticleDataFlags.DataGlow) {
+ let glow = buf.readUInt8(pos++);
+ this.startGlow = glow / 255.0;
+ glow = buf.readUInt8(pos++);
+ this.endGlow = glow / 255.0;
+ }
+ if ((this.dataFlags & ParticleDataFlags_1.ParticleDataFlags.DataBlend) === ParticleDataFlags_1.ParticleDataFlags.DataBlend) {
+ this.blendFuncSource = buf.readUInt8(pos++);
+ this.blendFuncDest = buf.readUInt8(pos++);
+ }
+ }
+ else {
+ console.error('WARNING: Paricle system size of ' + size + ' bytes exceeds maximum block size of 98');
+ }
+ }
+ static unpackFixed(buf, pos, signed, intBits, fracBits) {
+ let totalBits = intBits + fracBits;
+ let fixedVal = 0.0;
+ if (signed) {
+ totalBits++;
+ }
+ const maxVal = 1 << intBits;
+ if (totalBits <= 8) {
+ fixedVal = buf.readUInt8(pos);
+ }
+ else if (totalBits <= 16) {
+ fixedVal = buf.readUInt16LE(pos);
+ }
+ else if (totalBits <= 31) {
+ fixedVal = buf.readUInt32LE(pos);
+ }
+ else {
+ return 0.0;
+ }
+ fixedVal /= (1 << fracBits);
+ if (signed) {
+ fixedVal -= maxVal;
+ }
+ return fixedVal;
+ }
+ unpackSystem(buf, pos) {
+ const startPos = pos;
+ this.crc = buf.readUInt32LE(pos);
+ pos += 4;
+ this.flags = buf.readUInt32LE(pos);
+ pos += 4;
+ this.pattern = buf.readUInt8(pos++);
+ this.maxAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.startAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.innerAngle = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.outerAngle = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.burstRate = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstRadius = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstSpeedMin = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstSpeedMax = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstPartCount = buf.readUInt8(pos++);
+ this.angularVelocity = new Vector3_1.Vector3([
+ ParticleSystem.unpackFixed(buf, pos, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 2, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 4, true, 8, 7),
+ ]);
+ pos = pos + 6;
+ this.acceleration = new Vector3_1.Vector3([
+ ParticleSystem.unpackFixed(buf, pos, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 2, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 4, true, 8, 7),
+ ]);
+ pos = pos + 6;
+ this.texture = new UUID_1.UUID(buf, pos);
+ pos += 16;
+ this.target = new UUID_1.UUID(buf, pos);
+ pos += 16;
+ if (pos - startPos !== 68) {
+ console.log('INVALID SIZE: ' + (pos - startPos));
+ }
+ return pos;
+ }
+ unpackLegacyData(buf, pos) {
+ this.dataFlags = buf.readUInt32LE(pos);
+ pos += 4;
+ this.partMaxAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.startColor = new Color4_1.Color4(buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++));
+ this.endColor = new Color4_1.Color4(buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++), buf.readUInt8(pos++));
+ this.startScaleX = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.startScaleY = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.endScaleX = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.endScaleY = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ return pos;
+ }
+}
+exports.ParticleSystem = ParticleSystem;
+//# sourceMappingURL=ParticleSystem.js.map
\ No newline at end of file
diff --git a/dist/classes/ParticleSystem.js.map b/dist/classes/ParticleSystem.js.map
new file mode 100644
index 0000000..76f63f9
--- /dev/null
+++ b/dist/classes/ParticleSystem.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParticleSystem.js","sourceRoot":"","sources":["../../lib/classes/ParticleSystem.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/TextureEntry.d.ts b/dist/classes/TextureEntry.d.ts
new file mode 100644
index 0000000..dcbad53
--- /dev/null
+++ b/dist/classes/TextureEntry.d.ts
@@ -0,0 +1,14 @@
+///
+import { TextureEntryFace } from './TextureEntryFace';
+export declare class TextureEntry {
+ defaultTexture: TextureEntryFace | null;
+ faces: TextureEntryFace[];
+ static readFaceBitfield(buf: Buffer, pos: number): {
+ result: boolean;
+ pos: number;
+ faceBits: number;
+ bitfieldSize: number;
+ };
+ constructor(buf: Buffer);
+ private createFace;
+}
diff --git a/dist/classes/TextureEntry.js b/dist/classes/TextureEntry.js
new file mode 100644
index 0000000..e5600b5
--- /dev/null
+++ b/dist/classes/TextureEntry.js
@@ -0,0 +1,266 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const TextureEntryFace_1 = require("./TextureEntryFace");
+const UUID_1 = require("./UUID");
+const Color4_1 = require("./Color4");
+const Utils_1 = require("./Utils");
+class TextureEntry {
+ constructor(buf) {
+ this.faces = [];
+ if (buf.length < 16) {
+ this.defaultTexture = null;
+ }
+ else {
+ this.defaultTexture = new TextureEntryFace_1.TextureEntryFace(null);
+ let pos = 0;
+ let i = pos;
+ {
+ this.defaultTexture.textureID = new UUID_1.UUID(buf, i);
+ i += 16;
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const uuid = new UUID_1.UUID(buf, i);
+ i += 16;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].textureID = uuid;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.rgba = new Color4_1.Color4(buf, i, true);
+ i += 4;
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpColor = new Color4_1.Color4(buf, i, true);
+ i += 4;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].rgba = tmpColor;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.repeatU = buf.readFloatLE(i);
+ i += 4;
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpFloat = buf.readFloatLE(i);
+ i += 4;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].repeatU = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.repeatV = buf.readFloatLE(i);
+ i += 4;
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpFloat = buf.readFloatLE(i);
+ i += 4;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].repeatV = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.offsetU = Utils_1.Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpFloat = Utils_1.Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].offsetU = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.offsetV = Utils_1.Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpFloat = Utils_1.Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].offsetV = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.rotation = Utils_1.Utils.ReadRotationFloat(buf, i);
+ i += 2;
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpFloat = Utils_1.Utils.ReadRotationFloat(buf, i);
+ i += 2;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].rotation = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.materialb = buf[i++];
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpByte = buf[i++];
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].materialb = tmpByte;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.mediab = buf[i++];
+ let done = false;
+ while (i - pos < buf.length && !done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpByte = buf[i++];
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].mediab = tmpByte;
+ }
+ }
+ }
+ }
+ }
+ {
+ this.defaultTexture.glow = Utils_1.Utils.ReadGlowFloat(buf, i++);
+ let done = false;
+ while (!done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const tmpFloat = Utils_1.Utils.ReadGlowFloat(buf, i++);
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].glow = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+ {
+ const len = i - pos + 16;
+ if (i - pos + 16 <= buf.length) {
+ this.defaultTexture.materialID = new UUID_1.UUID(buf, i);
+ i += 16;
+ let done = false;
+ while (i - pos + 16 <= buf.length && !done) {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done) {
+ const uuid = new UUID_1.UUID(buf, i);
+ i += 16;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1) {
+ if ((result.faceBits & bit) !== 0) {
+ this.createFace(face);
+ this.faces[face].materialID = uuid;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ static readFaceBitfield(buf, pos) {
+ const result = {
+ result: false,
+ pos: pos,
+ faceBits: 0,
+ bitfieldSize: 0
+ };
+ if (result.pos >= buf.length) {
+ return result;
+ }
+ let b = 0;
+ do {
+ b = buf.readUInt8(result.pos);
+ result.faceBits = (result.faceBits << 7) | (b & 0x7F);
+ result.bitfieldSize += 7;
+ result.pos++;
+ } while ((b & 0x80) !== 0);
+ result.result = (result.faceBits !== 0);
+ return result;
+ }
+ createFace(face) {
+ if (face > 32) {
+ console.error('Warning: Face number exceeds maximum number of faces: 32');
+ }
+ while (this.faces.length <= face) {
+ this.faces.push(new TextureEntryFace_1.TextureEntryFace(this.defaultTexture));
+ }
+ }
+}
+exports.TextureEntry = TextureEntry;
+//# sourceMappingURL=TextureEntry.js.map
\ No newline at end of file
diff --git a/dist/classes/TextureEntry.js.map b/dist/classes/TextureEntry.js.map
new file mode 100644
index 0000000..cb68c00
--- /dev/null
+++ b/dist/classes/TextureEntry.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextureEntry.js","sourceRoot":"","sources":["../../lib/classes/TextureEntry.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/TextureEntryFace.d.ts b/dist/classes/TextureEntryFace.d.ts
new file mode 100644
index 0000000..d81a9a1
--- /dev/null
+++ b/dist/classes/TextureEntryFace.d.ts
@@ -0,0 +1,23 @@
+import { UUID } from './UUID';
+import { Color4 } from './Color4';
+export declare class TextureEntryFace {
+ private BUMP_MASK;
+ private FULLBRIGHT_MASK;
+ private SHINY_MASK;
+ private MEDIA_MASK;
+ private TEX_MAP_MASK;
+ textureID: UUID;
+ rgba: Color4;
+ repeatU: number;
+ repeatV: number;
+ offsetU: number;
+ offsetV: number;
+ rotation: number;
+ materialb: number;
+ mediab: number;
+ glow: number;
+ materialID: UUID;
+ private hasAttribute;
+ private defaultTexture;
+ constructor(def: TextureEntryFace | null);
+}
diff --git a/dist/classes/TextureEntryFace.js b/dist/classes/TextureEntryFace.js
new file mode 100644
index 0000000..fa161e1
--- /dev/null
+++ b/dist/classes/TextureEntryFace.js
@@ -0,0 +1,25 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const Color4_1 = require("./Color4");
+const TextureFlags_1 = require("../enums/TextureFlags");
+class TextureEntryFace {
+ constructor(def) {
+ this.BUMP_MASK = 0x1F;
+ this.FULLBRIGHT_MASK = 0x20;
+ this.SHINY_MASK = 0xC0;
+ this.MEDIA_MASK = 0x01;
+ this.TEX_MAP_MASK = 0x06;
+ this.rgba = Color4_1.Color4.white;
+ this.repeatU = 1.0;
+ this.repeatV = 1.0;
+ this.defaultTexture = def;
+ if (this.defaultTexture == null) {
+ this.hasAttribute = TextureFlags_1.TextureFlags.All;
+ }
+ else {
+ this.hasAttribute = TextureFlags_1.TextureFlags.None;
+ }
+ }
+}
+exports.TextureEntryFace = TextureEntryFace;
+//# sourceMappingURL=TextureEntryFace.js.map
\ No newline at end of file
diff --git a/dist/classes/TextureEntryFace.js.map b/dist/classes/TextureEntryFace.js.map
new file mode 100644
index 0000000..896944b
--- /dev/null
+++ b/dist/classes/TextureEntryFace.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextureEntryFace.js","sourceRoot":"","sources":["../../lib/classes/TextureEntryFace.ts"],"names":[],"mappings":";;AACA,qCAAgC;AAChC,wDAAmD;AAEnD,MAAa,gBAAgB;IAuBzB,YAAY,GAA4B;QArBhC,cAAS,GAAG,IAAI,CAAC;QACjB,oBAAe,GAAG,IAAI,CAAC;QACvB,eAAU,GAAG,IAAI,CAAC;QAClB,eAAU,GAAG,IAAI,CAAC;QAClB,iBAAY,GAAG,IAAI,CAAC;QAmBxB,IAAI,CAAC,IAAI,GAAG,eAAM,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAC/B;YACI,IAAI,CAAC,YAAY,GAAG,2BAAY,CAAC,GAAG,CAAC;SACxC;aAED;YACI,IAAI,CAAC,YAAY,GAAG,2BAAY,CAAC,IAAI,CAAC;SACzC;IACL,CAAC;CACJ;AAtCD,4CAsCC"}
\ No newline at end of file
diff --git a/dist/classes/Utils.d.ts b/dist/classes/Utils.d.ts
index 6f18963..97bc359 100644
--- a/dist/classes/Utils.d.ts
+++ b/dist/classes/Utils.d.ts
@@ -10,8 +10,12 @@ export declare class Utils {
};
static RegionCoordinatesToHandle(regionX: number, regionY: number): GlobalPosition;
static HTTPAssetTypeToInventoryType(HTTPAssetType: string): "" | "script" | "object" | "texture" | "sound" | "animation" | "gesture" | "landmark" | "callcard" | "wearable" | "notecard" | "category" | "mesh";
+ static ByteToFloat(byte: number, lower: number, upper: number): number;
static UInt16ToFloat(val: number, lower: number, upper: number): number;
static Base64EncodeString(str: string): string;
static Base64DecodeString(str: string): string;
static HexToLong(hex: string): Long;
+ static ReadRotationFloat(buf: Buffer, pos: number): number;
+ static ReadGlowFloat(buf: Buffer, pos: number): number;
+ static ReadOffsetFloat(buf: Buffer, pos: number): number;
}
diff --git a/dist/classes/Utils.js b/dist/classes/Utils.js
index 6487f17..b6e7fb7 100644
--- a/dist/classes/Utils.js
+++ b/dist/classes/Utils.js
@@ -93,6 +93,18 @@ class Utils {
return '';
}
}
+ static ByteToFloat(byte, lower, upper) {
+ const ONE_OVER_BYTEMAX = 1.0 / 255;
+ let fval = byte * ONE_OVER_BYTEMAX;
+ const delta = (upper - lower);
+ fval *= delta;
+ fval += lower;
+ const error = delta * ONE_OVER_BYTEMAX;
+ if (Math.abs(fval) < error) {
+ fval = 0.0;
+ }
+ return fval;
+ }
static UInt16ToFloat(val, lower, upper) {
const ONE_OVER_U16_MAX = 1.0 / 65535;
let fval = val * ONE_OVER_U16_MAX;
@@ -119,6 +131,16 @@ class Utils {
}
return new Long(parseInt(hex.substr(8), 16), parseInt(hex.substr(0, 8), 16));
}
+ static ReadRotationFloat(buf, pos) {
+ return ((buf[pos] | (buf[pos + 1] << 8)) / 32768.0) * (2 * Math.PI);
+ }
+ static ReadGlowFloat(buf, pos) {
+ return buf[pos] / 255;
+ }
+ static ReadOffsetFloat(buf, pos) {
+ const offset = buf.readInt16LE(pos);
+ return offset / 32767.0;
+ }
}
exports.Utils = Utils;
//# sourceMappingURL=Utils.js.map
\ No newline at end of file
diff --git a/dist/classes/Utils.js.map b/dist/classes/Utils.js.map
index 68b852a..9586f7f 100644
--- a/dist/classes/Utils.js.map
+++ b/dist/classes/Utils.js.map
@@ -1 +1 @@
-{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../lib/classes/Utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../lib/classes/Utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/classes/commands/RegionCommands.d.ts b/dist/classes/commands/RegionCommands.d.ts
index 9590b76..f62b704 100644
--- a/dist/classes/commands/RegionCommands.d.ts
+++ b/dist/classes/commands/RegionCommands.d.ts
@@ -1,8 +1,13 @@
import { CommandsBase } from './CommandsBase';
import { UUID } from '../UUID';
import * as Long from 'long';
+import { Vector3 } from '../..';
import { IGameObject } from '../interfaces/IGameObject';
export declare class RegionCommands extends CommandsBase {
getRegionHandle(regionID: UUID): Promise;
getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): IGameObject[];
+ 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;
+ touchObject(localID: number | UUID, 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 f5eaf41..383b4a2 100644
--- a/dist/classes/commands/RegionCommands.js
+++ b/dist/classes/commands/RegionCommands.js
@@ -1,34 +1,143 @@
"use strict";
+var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+ function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+};
Object.defineProperty(exports, "__esModule", { value: true });
const CommandsBase_1 = require("./CommandsBase");
+const UUID_1 = require("../UUID");
const RegionHandleRequest_1 = require("../messages/RegionHandleRequest");
const Message_1 = require("../../enums/Message");
const FilterResponse_1 = require("../../enums/FilterResponse");
const __1 = require("../..");
+const ObjectGrab_1 = require("../messages/ObjectGrab");
+const ObjectDeGrab_1 = require("../messages/ObjectDeGrab");
+const ObjectGrabUpdate_1 = require("../messages/ObjectGrabUpdate");
class RegionCommands extends CommandsBase_1.CommandsBase {
getRegionHandle(regionID) {
- return new Promise((resolve, reject) => {
+ return __awaiter(this, void 0, void 0, function* () {
const circuit = this.currentRegion.circuit;
const msg = new RegionHandleRequest_1.RegionHandleRequestMessage();
msg.RequestBlock = {
RegionID: regionID,
};
circuit.sendMessage(msg, __1.PacketFlags.Reliable);
- circuit.waitForMessage(Message_1.Message.RegionIDAndHandleReply, 10000, (filterMsg) => {
+ const responseMsg = yield circuit.waitForMessage(Message_1.Message.RegionIDAndHandleReply, 10000, (filterMsg) => {
if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString()) {
return FilterResponse_1.FilterResponse.Finish;
}
else {
return FilterResponse_1.FilterResponse.NoMatch;
}
- }).then((responseMsg) => {
- resolve(responseMsg.ReplyBlock.RegionHandle);
});
+ return responseMsg.ReplyBlock.RegionHandle;
});
}
getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
return this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ);
}
+ 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* () {
+ if (localID instanceof UUID_1.UUID) {
+ const obj = this.currentRegion.objects.getObjectByUUID(localID);
+ localID = obj.ID;
+ }
+ const msg = new ObjectGrab_1.ObjectGrabMessage();
+ msg.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ msg.ObjectData = {
+ LocalID: localID,
+ GrabOffset: grabOffset
+ };
+ msg.SurfaceInfo = [
+ {
+ UVCoord: uvCoordinate,
+ STCoord: stCoordinate,
+ FaceIndex: faceIndex,
+ Position: position,
+ Normal: normal,
+ Binormal: binormal
+ }
+ ];
+ const seqID = this.circuit.sendMessage(msg, __1.PacketFlags.Reliable);
+ yield this.circuit.waitForAck(seqID, 10000);
+ });
+ }
+ deGrabObject(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* () {
+ if (localID instanceof UUID_1.UUID) {
+ const obj = this.currentRegion.objects.getObjectByUUID(localID);
+ localID = obj.ID;
+ }
+ const msg = new ObjectDeGrab_1.ObjectDeGrabMessage();
+ msg.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ msg.ObjectData = {
+ LocalID: localID
+ };
+ msg.SurfaceInfo = [
+ {
+ UVCoord: uvCoordinate,
+ STCoord: stCoordinate,
+ FaceIndex: faceIndex,
+ Position: position,
+ Normal: normal,
+ Binormal: binormal
+ }
+ ];
+ const seqID = this.circuit.sendMessage(msg, __1.PacketFlags.Reliable);
+ yield this.circuit.waitForAck(seqID, 10000);
+ });
+ }
+ dragGrabbedObject(localID, grabPosition, 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* () {
+ if (!(localID instanceof UUID_1.UUID)) {
+ const obj = this.currentRegion.objects.getObjectByLocalID(localID);
+ localID = obj.FullID;
+ }
+ const msg = new ObjectGrabUpdate_1.ObjectGrabUpdateMessage();
+ msg.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ msg.ObjectData = {
+ ObjectID: localID,
+ GrabOffsetInitial: grabOffset,
+ GrabPosition: grabPosition,
+ TimeSinceLast: 0
+ };
+ msg.SurfaceInfo = [
+ {
+ UVCoord: uvCoordinate,
+ STCoord: stCoordinate,
+ FaceIndex: faceIndex,
+ Position: position,
+ Normal: normal,
+ Binormal: binormal
+ }
+ ];
+ const seqID = this.circuit.sendMessage(msg, __1.PacketFlags.Reliable);
+ yield this.circuit.waitForAck(seqID, 10000);
+ });
+ }
+ touchObject(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* () {
+ if (localID instanceof UUID_1.UUID) {
+ const obj = this.currentRegion.objects.getObjectByUUID(localID);
+ localID = obj.ID;
+ }
+ yield this.grabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
+ yield this.deGrabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
+ });
+ }
}
exports.RegionCommands = RegionCommands;
//# sourceMappingURL=RegionCommands.js.map
\ No newline at end of file
diff --git a/dist/classes/commands/RegionCommands.js.map b/dist/classes/commands/RegionCommands.js.map
index 3846971..501f90c 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":";;AAAA,iDAA4C;AAG5C,yEAA2E;AAC3E,iDAA4C;AAC5C,+DAA0D;AAE1D,6BAAkC;AAGlC,MAAa,cAAe,SAAQ,2BAAY;IAE5C,eAAe,CAAC,QAAc;QAE1B,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,GAAG,GAA+B,IAAI,gDAA0B,EAAE,CAAC;YACzE,GAAG,CAAC,YAAY,GAAG;gBACf,QAAQ,EAAE,QAAQ;aACrB,CAAC;YACF,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,eAAW,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,CAAC,cAAc,CAAgC,iBAAO,CAAC,sBAAsB,EAAE,KAAK,EAAE,CAAC,SAAwC,EAAkB,EAAE;gBAEtJ,IAAI,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,QAAQ,CAAC,QAAQ,EAAE,EACpE;oBACI,OAAO,+BAAc,CAAC,MAAM,CAAC;iBAChC;qBAED;oBACI,OAAO,+BAAc,CAAC,OAAO,CAAC;iBACjC;YACL,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAA0C,EAAE,EAAE;gBAEnD,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IACD,gBAAgB,CAAC,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY;QAE/F,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;CACJ;AAhCD,wCAgCC"}
\ 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/IGameObject.d.ts b/dist/classes/interfaces/IGameObject.d.ts
index 68fe1e3..604c89d 100644
--- a/dist/classes/interfaces/IGameObject.d.ts
+++ b/dist/classes/interfaces/IGameObject.d.ts
@@ -1,5 +1,13 @@
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/dist/classes/interfaces/IObjectStore.d.ts b/dist/classes/interfaces/IObjectStore.d.ts
index 3a16d8d..a7048e4 100644
--- a/dist/classes/interfaces/IObjectStore.d.ts
+++ b/dist/classes/interfaces/IObjectStore.d.ts
@@ -1,9 +1,12 @@
import { IGameObject } from './IGameObject';
import { RBush3D } from 'rbush-3d/dist';
import { GameObjectFull } from '../GameObjectFull';
+import { UUID } from '../UUID';
export interface IObjectStore {
rtree?: RBush3D;
getObjectsByParent(parentID: number): IGameObject[];
shutdown(): void;
getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[];
+ getObjectByUUID(fullID: UUID): IGameObject;
+ getObjectByLocalID(ID: number): IGameObject;
}
diff --git a/dist/enums/BlendFunc.d.ts b/dist/enums/BlendFunc.d.ts
new file mode 100644
index 0000000..5ce3248
--- /dev/null
+++ b/dist/enums/BlendFunc.d.ts
@@ -0,0 +1,12 @@
+export declare enum BlendFunc {
+ One = 0,
+ Zero = 1,
+ DestColor = 2,
+ SourceColor = 3,
+ OneMinusDestColor = 4,
+ OneMinusSourceColor = 5,
+ DestAlpha = 6,
+ SourceAlpha = 7,
+ OneMinusDestAlpha = 8,
+ OneMinusSourceAlpha = 9
+}
diff --git a/dist/enums/BlendFunc.js b/dist/enums/BlendFunc.js
new file mode 100644
index 0000000..ce71223
--- /dev/null
+++ b/dist/enums/BlendFunc.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var BlendFunc;
+(function (BlendFunc) {
+ BlendFunc[BlendFunc["One"] = 0] = "One";
+ BlendFunc[BlendFunc["Zero"] = 1] = "Zero";
+ BlendFunc[BlendFunc["DestColor"] = 2] = "DestColor";
+ BlendFunc[BlendFunc["SourceColor"] = 3] = "SourceColor";
+ BlendFunc[BlendFunc["OneMinusDestColor"] = 4] = "OneMinusDestColor";
+ BlendFunc[BlendFunc["OneMinusSourceColor"] = 5] = "OneMinusSourceColor";
+ BlendFunc[BlendFunc["DestAlpha"] = 6] = "DestAlpha";
+ BlendFunc[BlendFunc["SourceAlpha"] = 7] = "SourceAlpha";
+ BlendFunc[BlendFunc["OneMinusDestAlpha"] = 8] = "OneMinusDestAlpha";
+ BlendFunc[BlendFunc["OneMinusSourceAlpha"] = 9] = "OneMinusSourceAlpha";
+})(BlendFunc = exports.BlendFunc || (exports.BlendFunc = {}));
+//# sourceMappingURL=BlendFunc.js.map
\ No newline at end of file
diff --git a/dist/enums/BlendFunc.js.map b/dist/enums/BlendFunc.js.map
new file mode 100644
index 0000000..b2ac766
--- /dev/null
+++ b/dist/enums/BlendFunc.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"BlendFunc.js","sourceRoot":"","sources":["../../lib/enums/BlendFunc.ts"],"names":[],"mappings":";;AAAA,IAAY,SAYX;AAZD,WAAY,SAAS;IAEjB,uCAAO,CAAA;IACP,yCAAQ,CAAA;IACR,mDAAa,CAAA;IACb,uDAAe,CAAA;IACf,mEAAqB,CAAA;IACrB,uEAAuB,CAAA;IACvB,mDAAa,CAAA;IACb,uDAAe,CAAA;IACf,mEAAqB,CAAA;IACrB,uEAAuB,CAAA;AAC3B,CAAC,EAZW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAYpB"}
\ No newline at end of file
diff --git a/dist/enums/ParticleDataFlags.d.ts b/dist/enums/ParticleDataFlags.d.ts
new file mode 100644
index 0000000..7caee91
--- /dev/null
+++ b/dist/enums/ParticleDataFlags.d.ts
@@ -0,0 +1,16 @@
+export declare enum ParticleDataFlags {
+ None = 0,
+ InterpColor = 1,
+ InterpScale = 2,
+ Bounce = 4,
+ Wind = 8,
+ FollowSrc = 16,
+ FollowVelocity = 32,
+ TargetPos = 64,
+ TargetLinear = 128,
+ Emissive = 256,
+ Beam = 512,
+ Ribbon = 1024,
+ DataGlow = 65536,
+ DataBlend = 131072
+}
diff --git a/dist/enums/ParticleDataFlags.js b/dist/enums/ParticleDataFlags.js
new file mode 100644
index 0000000..938915a
--- /dev/null
+++ b/dist/enums/ParticleDataFlags.js
@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var ParticleDataFlags;
+(function (ParticleDataFlags) {
+ ParticleDataFlags[ParticleDataFlags["None"] = 0] = "None";
+ ParticleDataFlags[ParticleDataFlags["InterpColor"] = 1] = "InterpColor";
+ ParticleDataFlags[ParticleDataFlags["InterpScale"] = 2] = "InterpScale";
+ ParticleDataFlags[ParticleDataFlags["Bounce"] = 4] = "Bounce";
+ ParticleDataFlags[ParticleDataFlags["Wind"] = 8] = "Wind";
+ ParticleDataFlags[ParticleDataFlags["FollowSrc"] = 16] = "FollowSrc";
+ ParticleDataFlags[ParticleDataFlags["FollowVelocity"] = 32] = "FollowVelocity";
+ ParticleDataFlags[ParticleDataFlags["TargetPos"] = 64] = "TargetPos";
+ ParticleDataFlags[ParticleDataFlags["TargetLinear"] = 128] = "TargetLinear";
+ ParticleDataFlags[ParticleDataFlags["Emissive"] = 256] = "Emissive";
+ ParticleDataFlags[ParticleDataFlags["Beam"] = 512] = "Beam";
+ ParticleDataFlags[ParticleDataFlags["Ribbon"] = 1024] = "Ribbon";
+ ParticleDataFlags[ParticleDataFlags["DataGlow"] = 65536] = "DataGlow";
+ ParticleDataFlags[ParticleDataFlags["DataBlend"] = 131072] = "DataBlend";
+})(ParticleDataFlags = exports.ParticleDataFlags || (exports.ParticleDataFlags = {}));
+//# sourceMappingURL=ParticleDataFlags.js.map
\ No newline at end of file
diff --git a/dist/enums/ParticleDataFlags.js.map b/dist/enums/ParticleDataFlags.js.map
new file mode 100644
index 0000000..a0cfbb5
--- /dev/null
+++ b/dist/enums/ParticleDataFlags.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ParticleDataFlags.js","sourceRoot":"","sources":["../../lib/enums/ParticleDataFlags.ts"],"names":[],"mappings":";;AAAA,IAAY,iBAgBX;AAhBD,WAAY,iBAAiB;IAEzB,yDAAQ,CAAA;IACR,uEAAmB,CAAA;IACnB,uEAAmB,CAAA;IACnB,6DAAc,CAAA;IACd,yDAAY,CAAA;IACZ,oEAAiB,CAAA;IACjB,8EAAsB,CAAA;IACtB,oEAAiB,CAAA;IACjB,2EAAoB,CAAA;IACpB,mEAAgB,CAAA;IAChB,2DAAY,CAAA;IACZ,gEAAc,CAAA;IACd,qEAAkB,CAAA;IAClB,wEAAmB,CAAA;AACvB,CAAC,EAhBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAgB5B"}
\ No newline at end of file
diff --git a/dist/enums/SourcePattern.d.ts b/dist/enums/SourcePattern.d.ts
new file mode 100644
index 0000000..2f13971
--- /dev/null
+++ b/dist/enums/SourcePattern.d.ts
@@ -0,0 +1,8 @@
+export declare enum SourcePattern {
+ None = 0,
+ Drop = 1,
+ Explode = 2,
+ Angle = 4,
+ AngleCone = 8,
+ AngleConeEmpty = 16
+}
diff --git a/dist/enums/SourcePattern.js b/dist/enums/SourcePattern.js
new file mode 100644
index 0000000..4247d85
--- /dev/null
+++ b/dist/enums/SourcePattern.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var SourcePattern;
+(function (SourcePattern) {
+ SourcePattern[SourcePattern["None"] = 0] = "None";
+ SourcePattern[SourcePattern["Drop"] = 1] = "Drop";
+ SourcePattern[SourcePattern["Explode"] = 2] = "Explode";
+ SourcePattern[SourcePattern["Angle"] = 4] = "Angle";
+ SourcePattern[SourcePattern["AngleCone"] = 8] = "AngleCone";
+ SourcePattern[SourcePattern["AngleConeEmpty"] = 16] = "AngleConeEmpty";
+})(SourcePattern = exports.SourcePattern || (exports.SourcePattern = {}));
+//# sourceMappingURL=SourcePattern.js.map
\ No newline at end of file
diff --git a/dist/enums/SourcePattern.js.map b/dist/enums/SourcePattern.js.map
new file mode 100644
index 0000000..c8cc6b8
--- /dev/null
+++ b/dist/enums/SourcePattern.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"SourcePattern.js","sourceRoot":"","sources":["../../lib/enums/SourcePattern.ts"],"names":[],"mappings":";;AAAA,IAAY,aAQX;AARD,WAAY,aAAa;IAErB,iDAAQ,CAAA;IACR,iDAAW,CAAA;IACX,uDAAc,CAAA;IACd,mDAAY,CAAA;IACZ,2DAAgB,CAAA;IAChB,sEAAqB,CAAA;AACzB,CAAC,EARW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAQxB"}
\ No newline at end of file
diff --git a/dist/enums/TextureFlags.d.ts b/dist/enums/TextureFlags.d.ts
new file mode 100644
index 0000000..32fdd29
--- /dev/null
+++ b/dist/enums/TextureFlags.d.ts
@@ -0,0 +1,15 @@
+export declare enum TextureFlags {
+ None = 0,
+ TextureID = 1,
+ RGBA = 2,
+ RepeatU = 4,
+ RepeatV = 8,
+ OffsetU = 16,
+ OffsetV = 32,
+ Rotation = 64,
+ Material = 128,
+ Media = 256,
+ Glow = 512,
+ MaterialID = 1024,
+ All = 4294967295
+}
diff --git a/dist/enums/TextureFlags.js b/dist/enums/TextureFlags.js
new file mode 100644
index 0000000..e4eab75
--- /dev/null
+++ b/dist/enums/TextureFlags.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var TextureFlags;
+(function (TextureFlags) {
+ TextureFlags[TextureFlags["None"] = 0] = "None";
+ TextureFlags[TextureFlags["TextureID"] = 1] = "TextureID";
+ TextureFlags[TextureFlags["RGBA"] = 2] = "RGBA";
+ TextureFlags[TextureFlags["RepeatU"] = 4] = "RepeatU";
+ TextureFlags[TextureFlags["RepeatV"] = 8] = "RepeatV";
+ TextureFlags[TextureFlags["OffsetU"] = 16] = "OffsetU";
+ TextureFlags[TextureFlags["OffsetV"] = 32] = "OffsetV";
+ TextureFlags[TextureFlags["Rotation"] = 64] = "Rotation";
+ TextureFlags[TextureFlags["Material"] = 128] = "Material";
+ TextureFlags[TextureFlags["Media"] = 256] = "Media";
+ TextureFlags[TextureFlags["Glow"] = 512] = "Glow";
+ TextureFlags[TextureFlags["MaterialID"] = 1024] = "MaterialID";
+ TextureFlags[TextureFlags["All"] = 4294967295] = "All";
+})(TextureFlags = exports.TextureFlags || (exports.TextureFlags = {}));
+//# sourceMappingURL=TextureFlags.js.map
\ No newline at end of file
diff --git a/dist/enums/TextureFlags.js.map b/dist/enums/TextureFlags.js.map
new file mode 100644
index 0000000..87d80ce
--- /dev/null
+++ b/dist/enums/TextureFlags.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"TextureFlags.js","sourceRoot":"","sources":["../../lib/enums/TextureFlags.ts"],"names":[],"mappings":";;AAAA,IAAY,YAeX;AAfD,WAAY,YAAY;IAEpB,+CAAQ,CAAA;IACR,yDAAkB,CAAA;IAClB,+CAAa,CAAA;IACb,qDAAgB,CAAA;IAChB,qDAAgB,CAAA;IAChB,sDAAgB,CAAA;IAChB,sDAAgB,CAAA;IAChB,wDAAiB,CAAA;IACjB,yDAAiB,CAAA;IACjB,mDAAc,CAAA;IACd,iDAAa,CAAA;IACb,8DAAoB,CAAA;IACpB,sDAAgB,CAAA;AACpB,CAAC,EAfW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAevB"}
\ No newline at end of file
diff --git a/dist/index.d.ts b/dist/index.d.ts
index a0926f7..9a50c42 100644
--- a/dist/index.d.ts
+++ b/dist/index.d.ts
@@ -49,4 +49,8 @@ import { FriendRemovedEvent } from './events/FriendRemovedEvent';
import { GlobalPosition } from './classes/public/interfaces/GlobalPosition';
import { MapLocation } from './classes/public/interfaces/MapLocation';
import { Vector2 } from './classes/Vector2';
-export { Bot, LoginParameters, AssetType, HTTPAssets, ClientEvents, BVH, ChatSourceType, BotOptionFlags, UUID, Vector3, Vector2, AgentFlags, CompressedFlags, ControlFlags, DecodeFlags, InstantMessageEventFlags, InventoryItemFlags, LoginFlags, MessageFlags, ParcelInfoFlags, PacketFlags, RegionProtocolFlags, SoundFlags, TeleportFlags, RegionFlags, RightsFlags, ChatEvent, DisconnectEvent, FriendRequestEvent, FriendResponseEvent, GroupChatEvent, GroupChatSessionAgentListEvent, GroupChatSessionJoinEvent, GroupInviteEvent, InstantMessageEvent, InventoryOfferedEvent, LureEvent, MapInfoRangeReplyEvent, MapInfoReplyEvent, ParcelInfoReplyEvent, RegionInfoReplyEvent, TeleportEvent, ScriptDialogEvent, EventQueueStateChangeEvent, FriendOnlineEvent, FriendRightsEvent, FriendRemovedEvent, Avatar, Friend, GlobalPosition, MapLocation };
+import { ParticleDataFlags } from './enums/ParticleDataFlags';
+import { TextureFlags } from './enums/TextureFlags';
+import { SourcePattern } from './enums/SourcePattern';
+import { BlendFunc } from './enums/BlendFunc';
+export { Bot, LoginParameters, AssetType, HTTPAssets, ClientEvents, BVH, ChatSourceType, BotOptionFlags, UUID, Vector3, Vector2, AgentFlags, CompressedFlags, ControlFlags, DecodeFlags, InstantMessageEventFlags, InventoryItemFlags, LoginFlags, MessageFlags, ParcelInfoFlags, PacketFlags, RegionProtocolFlags, SoundFlags, TeleportFlags, RegionFlags, RightsFlags, ParticleDataFlags, TextureFlags, SourcePattern, BlendFunc, ChatEvent, DisconnectEvent, FriendRequestEvent, FriendResponseEvent, GroupChatEvent, GroupChatSessionAgentListEvent, GroupChatSessionJoinEvent, GroupInviteEvent, InstantMessageEvent, InventoryOfferedEvent, LureEvent, MapInfoRangeReplyEvent, MapInfoReplyEvent, ParcelInfoReplyEvent, RegionInfoReplyEvent, TeleportEvent, ScriptDialogEvent, EventQueueStateChangeEvent, FriendOnlineEvent, FriendRightsEvent, FriendRemovedEvent, Avatar, Friend, GlobalPosition, MapLocation };
diff --git a/dist/index.js b/dist/index.js
index d349d93..4c5eac6 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -98,4 +98,12 @@ const FriendRemovedEvent_1 = require("./events/FriendRemovedEvent");
exports.FriendRemovedEvent = FriendRemovedEvent_1.FriendRemovedEvent;
const Vector2_1 = require("./classes/Vector2");
exports.Vector2 = Vector2_1.Vector2;
+const ParticleDataFlags_1 = require("./enums/ParticleDataFlags");
+exports.ParticleDataFlags = ParticleDataFlags_1.ParticleDataFlags;
+const TextureFlags_1 = require("./enums/TextureFlags");
+exports.TextureFlags = TextureFlags_1.TextureFlags;
+const SourcePattern_1 = require("./enums/SourcePattern");
+exports.SourcePattern = SourcePattern_1.SourcePattern;
+const BlendFunc_1 = require("./enums/BlendFunc");
+exports.BlendFunc = BlendFunc_1.BlendFunc;
//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/dist/index.js.map b/dist/index.js.map
index 685cda0..a450192 100644
--- a/dist/index.js.map
+++ b/dist/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;AAAA,+BAA0B;AAsDtB,cAtDI,SAAG,CAsDJ;AArDP,+DAA0D;AAsDtD,0BAtDI,iCAAe,CAsDJ;AArDnB,yDAAoD;AAwDhD,uBAxDI,2BAAY,CAwDJ;AAvDhB,uCAAkC;AAwD9B,cAxDI,SAAG,CAwDJ;AAtDP,iDAA4C;AAmDxC,oBAnDI,qBAAS,CAmDJ;AAlDb,mDAA8C;AAmD1C,qBAnDI,uBAAU,CAmDJ;AAlDd,+EAA0E;AAgEtE,mCAhEI,mDAAwB,CAgEJ;AA/D5B,sEAAiE;AAoF7D,8BApFI,yCAAmB,CAoFJ;AAnFvB,2DAAsD;AAmDlD,yBAnDI,+BAAc,CAmDJ;AAlDlB,2DAAsD;AAmDlD,yBAnDI,+BAAc,CAmDJ;AAlDlB,yCAAoC;AAmDhC,eAnDI,WAAI,CAmDJ;AAlDR,+CAA0C;AAmDtC,kBAnDI,iBAAO,CAmDJ;AAlDX,kDAA6C;AAuEzC,oBAvEI,qBAAS,CAuEJ;AAtEb,gEAA2D;AA6EvD,2BA7EI,mCAAgB,CA6EJ;AA5EpB,oEAA+D;AAuE3D,6BAvEI,uCAAkB,CAuEJ;AAtEtB,sEAAiE;AAuE7D,8BAvEI,yCAAmB,CAuEJ;AAtEvB,kDAA6C;AA6EzC,oBA7EI,qBAAS,CA6EJ;AA5Eb,0DAAqD;AAiFjD,wBAjFI,6BAAa,CAiFJ;AAhFjB,8DAAyD;AAkErD,0BAlEI,iCAAe,CAkEJ;AAjEnB,4DAAuD;AAoEnD,yBApEI,+BAAc,CAoEJ;AAnElB,kFAA6E;AAqEzE,oCArEI,qDAAyB,CAqEJ;AApE7B,4FAAuF;AAmEnF,yCAnEI,+DAA8B,CAmEJ;AAlElC,wEAAmE;AA2E/D,+BA3EI,2CAAoB,CA2EJ;AA1ExB,kEAA6D;AAwEzD,4BAxEI,qCAAiB,CAwEJ;AAvErB,4EAAuE;AAsEnE,iCAtEI,+CAAsB,CAsEJ;AArE1B,0EAAqE;AAmEjE,gCAnEI,6CAAqB,CAmEJ;AAlEzB,mDAA8C;AAwC1C,qBAxCI,uBAAU,CAwCJ;AAvCd,uDAAkD;AAyC9C,uBAzCI,2BAAY,CAyCJ;AAxChB,mEAA8D;AA2C1D,6BA3CI,uCAAkB,CA2CJ;AA1CtB,mDAA8C;AA2C1C,qBA3CI,uBAAU,CA2CJ;AA1Cd,uDAAkD;AA2C9C,uBA3CI,2BAAY,CA2CJ;AA1ChB,qDAAgD;AA4C5C,sBA5CI,yBAAW,CA4CJ;AA3Cf,qEAAgE;AA4C5D,8BA5CI,yCAAmB,CA4CJ;AA3CvB,mDAA8C;AA4C1C,qBA5CI,uBAAU,CA4CJ;AA3Cd,yDAAoD;AA4ChD,wBA5CI,6BAAa,CA4CJ;AA3CjB,6DAAwD;AAgCpD,0BAhCI,iCAAe,CAgCJ;AA/BnB,qDAAgD;AAiC5C,sBAjCI,yBAAW,CAiCJ;AAhCf,6DAAwD;AAqCpD,0BArCI,iCAAe,CAqCJ;AApCnB,wEAAmE;AA0D/D,+BA1DI,2CAAoB,CA0DJ;AAzDxB,kEAA6D;AA4DzD,4BA5DI,qCAAiB,CA4DJ;AA3DrB,oFAA+E;AA4D3E,qCA5DI,uDAA0B,CA4DJ;AA3D9B,qDAAgD;AAsC5C,sBAtCI,yBAAW,CAsCJ;AArCf,oDAA+C;AAiE3C,iBAjEI,eAAM,CAiEJ;AAhEV,kEAA6D;AA0DzD,4BA1DI,qCAAiB,CA0DJ;AAzDrB,oDAA+C;AA8D3C,iBA9DI,eAAM,CA8DJ;AA7DV,qDAAgD;AAmC5C,sBAnCI,yBAAW,CAmCJ;AAlCf,kEAA6D;AAwDzD,4BAxDI,qCAAiB,CAwDJ;AAvDrB,oEAA+D;AAwD3D,6BAxDI,uCAAkB,CAwDJ;AArDtB,+CAA0C;AAatC,kBAbI,iBAAO,CAaJ"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":";;AAAA,+BAA0B;AA0DtB,cA1DI,SAAG,CA0DJ;AAzDP,+DAA0D;AA0DtD,0BA1DI,iCAAe,CA0DJ;AAzDnB,yDAAoD;AA4DhD,uBA5DI,2BAAY,CA4DJ;AA3DhB,uCAAkC;AA4D9B,cA5DI,SAAG,CA4DJ;AA1DP,iDAA4C;AAuDxC,oBAvDI,qBAAS,CAuDJ;AAtDb,mDAA8C;AAuD1C,qBAvDI,uBAAU,CAuDJ;AAtDd,+EAA0E;AAoEtE,mCApEI,mDAAwB,CAoEJ;AAnE5B,sEAAiE;AA4F7D,8BA5FI,yCAAmB,CA4FJ;AA3FvB,2DAAsD;AAuDlD,yBAvDI,+BAAc,CAuDJ;AAtDlB,2DAAsD;AAuDlD,yBAvDI,+BAAc,CAuDJ;AAtDlB,yCAAoC;AAuDhC,eAvDI,WAAI,CAuDJ;AAtDR,+CAA0C;AAuDtC,kBAvDI,iBAAO,CAuDJ;AAtDX,kDAA6C;AA+EzC,oBA/EI,qBAAS,CA+EJ;AA9Eb,gEAA2D;AAqFvD,2BArFI,mCAAgB,CAqFJ;AApFpB,oEAA+D;AA+E3D,6BA/EI,uCAAkB,CA+EJ;AA9EtB,sEAAiE;AA+E7D,8BA/EI,yCAAmB,CA+EJ;AA9EvB,kDAA6C;AAqFzC,oBArFI,qBAAS,CAqFJ;AApFb,0DAAqD;AAyFjD,wBAzFI,6BAAa,CAyFJ;AAxFjB,8DAAyD;AA0ErD,0BA1EI,iCAAe,CA0EJ;AAzEnB,4DAAuD;AA4EnD,yBA5EI,+BAAc,CA4EJ;AA3ElB,kFAA6E;AA6EzE,oCA7EI,qDAAyB,CA6EJ;AA5E7B,4FAAuF;AA2EnF,yCA3EI,+DAA8B,CA2EJ;AA1ElC,wEAAmE;AAmF/D,+BAnFI,2CAAoB,CAmFJ;AAlFxB,kEAA6D;AAgFzD,4BAhFI,qCAAiB,CAgFJ;AA/ErB,4EAAuE;AA8EnE,iCA9EI,+CAAsB,CA8EJ;AA7E1B,0EAAqE;AA2EjE,gCA3EI,6CAAqB,CA2EJ;AA1EzB,mDAA8C;AA4C1C,qBA5CI,uBAAU,CA4CJ;AA3Cd,uDAAkD;AA6C9C,uBA7CI,2BAAY,CA6CJ;AA5ChB,mEAA8D;AA+C1D,6BA/CI,uCAAkB,CA+CJ;AA9CtB,mDAA8C;AA+C1C,qBA/CI,uBAAU,CA+CJ;AA9Cd,uDAAkD;AA+C9C,uBA/CI,2BAAY,CA+CJ;AA9ChB,qDAAgD;AAgD5C,sBAhDI,yBAAW,CAgDJ;AA/Cf,qEAAgE;AAgD5D,8BAhDI,yCAAmB,CAgDJ;AA/CvB,mDAA8C;AAgD1C,qBAhDI,uBAAU,CAgDJ;AA/Cd,yDAAoD;AAgDhD,wBAhDI,6BAAa,CAgDJ;AA/CjB,6DAAwD;AAoCpD,0BApCI,iCAAe,CAoCJ;AAnCnB,qDAAgD;AAqC5C,sBArCI,yBAAW,CAqCJ;AApCf,6DAAwD;AAyCpD,0BAzCI,iCAAe,CAyCJ;AAxCnB,wEAAmE;AAkE/D,+BAlEI,2CAAoB,CAkEJ;AAjExB,kEAA6D;AAoEzD,4BApEI,qCAAiB,CAoEJ;AAnErB,oFAA+E;AAoE3E,qCApEI,uDAA0B,CAoEJ;AAnE9B,qDAAgD;AA0C5C,sBA1CI,yBAAW,CA0CJ;AAzCf,oDAA+C;AAyE3C,iBAzEI,eAAM,CAyEJ;AAxEV,kEAA6D;AAkEzD,4BAlEI,qCAAiB,CAkEJ;AAjErB,oDAA+C;AAsE3C,iBAtEI,eAAM,CAsEJ;AArEV,qDAAgD;AAuC5C,sBAvCI,yBAAW,CAuCJ;AAtCf,kEAA6D;AAgEzD,4BAhEI,qCAAiB,CAgEJ;AA/DrB,oEAA+D;AAgE3D,6BAhEI,uCAAkB,CAgEJ;AA7DtB,+CAA0C;AAiBtC,kBAjBI,iBAAO,CAiBJ;AAhBX,iEAA4D;AAkCxD,4BAlCI,qCAAiB,CAkCJ;AAjCrB,uDAAkD;AAkC9C,uBAlCI,2BAAY,CAkCJ;AAjChB,yDAAoD;AAkChD,wBAlCI,6BAAa,CAkCJ;AAjCjB,iDAA4C;AAkCxC,oBAlCI,qBAAS,CAkCJ"}
\ No newline at end of file
diff --git a/lib/classes/Color4.ts b/lib/classes/Color4.ts
new file mode 100644
index 0000000..f9277b9
--- /dev/null
+++ b/lib/classes/Color4.ts
@@ -0,0 +1,45 @@
+export class Color4
+{
+ static black: Color4 = new Color4(0.0, 0.0, 0.0, 1.0);
+ static white: Color4 = new Color4(1.0, 1.0, 1.0, 1.0);
+
+ constructor(public red: number | Buffer, public green: number, public blue: number | boolean, public alpha: number | boolean = 0)
+ {
+ if (red instanceof Buffer && typeof blue === 'boolean')
+ {
+ const buf = red;
+ const pos = green;
+ const inverted = blue;
+ let alphaInverted = false;
+ if (typeof alpha === 'boolean' && alpha === true)
+ {
+ alphaInverted = true;
+ }
+
+ this.red = 0.0;
+ this.green = 0.0;
+ this.blue = 0.0;
+ this.alpha = 0.0;
+
+ const quanta: number = 1.0 / 255.0;
+ if (inverted)
+ {
+ this.red = (255 - buf[pos]) * quanta;
+ this.green = (255 - buf[pos + 1]) * quanta;
+ this.blue = (255 - buf[pos + 2]) * quanta;
+ this.alpha = (255 - buf[pos + 3]) * quanta;
+ }
+ else
+ {
+ this.red = buf[pos] * quanta;
+ this.green = buf[pos + 1] * quanta;
+ this.blue = buf[pos + 2] * quanta;
+ this.alpha = buf[pos + 3] * quanta;
+ }
+ if (alphaInverted)
+ {
+ this.alpha = 1.0 - this.alpha;
+ }
+ }
+ }
+}
diff --git a/lib/classes/GameObjectFull.ts b/lib/classes/GameObjectFull.ts
index 0023119..dba0dea 100644
--- a/lib/classes/GameObjectFull.ts
+++ b/lib/classes/GameObjectFull.ts
@@ -7,6 +7,10 @@ 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
{
@@ -41,11 +45,11 @@ export class GameObjectFull implements IGameObject
ProfileBegin: number;
ProfileEnd: number;
ProfileHollow: number;
- TextureEntry: Buffer;
+ TextureEntry: TextureEntry;
TextureAnim: Buffer;
Data: Buffer;
Text: string;
- TextColor: Buffer;
+ TextColor: Color4;
MediaURL: string;
PSBlock: Buffer;
OwnerID: UUID;
@@ -54,6 +58,9 @@ export class GameObjectFull implements IGameObject
JointAxisOrAnchor: Vector3;
Position: Vector3;
Rotation: Quaternion;
+ CollisionPlane: Vector4;
+ Velocity: Vector3;
+ Acceleration: Vector3;
AngularVelocity: Vector3;
TreeSpecies: Tree;
Sound: UUID;
@@ -62,6 +69,7 @@ export class GameObjectFull implements IGameObject
SoundRadius: number;
IsAttachment: boolean;
NameValue: {[key: string]: NameValue};
+ Particles: ParticleSystem;
constructor()
{
this.Position = Vector3.getZero();
diff --git a/lib/classes/ObjectStoreFull.ts b/lib/classes/ObjectStoreFull.ts
index a110854..31d2be5 100644
--- a/lib/classes/ObjectStoreFull.ts
+++ b/lib/classes/ObjectStoreFull.ts
@@ -21,9 +21,12 @@ import {IObjectStore} from './interfaces/IObjectStore';
import {GameObjectFull} from './GameObjectFull';
import {IGameObject} from './interfaces/IGameObject';
import {BotOptionFlags, CompressedFlags} from '..';
-import {BBox, RBush3D} from 'rbush-3d/dist';
+import {RBush3D} from 'rbush-3d/dist';
import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox';
-import {GameObjectLite} from './GameObjectLite';
+import {Vector4} from './Vector4';
+import {TextureEntry} from './TextureEntry';
+import {Color4} from './Color4';
+import {ParticleSystem} from './ParticleSystem';
export class ObjectStoreFull implements IObjectStore
{
@@ -92,7 +95,95 @@ export class ObjectStoreFull implements IObjectStore
obj.Material = objData.Material;
obj.ClickAction = objData.ClickAction;
obj.Scale = objData.Scale;
- obj.ObjectData = objData.ObjectData; // TODO: DECODE
+ 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;
@@ -113,11 +204,11 @@ export class ObjectStoreFull implements IObjectStore
obj.ProfileBegin = objData.ProfileBegin;
obj.ProfileEnd = objData.ProfileEnd;
obj.ProfileHollow = objData.ProfileHollow;
- obj.TextureEntry = objData.TextureEntry; // TODO: DECODE
+ obj.TextureEntry = new TextureEntry(objData.TextureEntry);
obj.TextureAnim = objData.TextureAnim;
- obj.Data = objData.Data; // TODO: DECODE
+ const pcodeData = objData.Data;
obj.Text = Utils.BufferToStringSimple(objData.Text);
- obj.TextColor = objData.TextColor; // TODO: DECODE
+ obj.TextColor = new Color4(objData.TextColor, 0, false, true);
obj.MediaURL = Utils.BufferToStringSimple(objData.MediaURL);
obj.PSBlock = objData.PSBlock;
obj.Sound = objData.Sound;
@@ -129,6 +220,18 @@ export class ObjectStoreFull implements IObjectStore
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;
@@ -194,6 +297,7 @@ export class ObjectStoreFull implements IObjectStore
}
break;
case Message.ObjectUpdateCached:
+ {
const objectUpdateCached = packet.message as ObjectUpdateCachedMessage;
const rmo = new RequestMultipleObjectsMessage();
rmo.AgentData = {
@@ -201,15 +305,22 @@ export class ObjectStoreFull implements IObjectStore
SessionID: this.circuit.sessionID
};
rmo.ObjectData = [];
- objectUpdateCached.ObjectData.forEach((obj) =>
+ for (const obj of objectUpdateCached.ObjectData)
{
- rmo.ObjectData.push({
- CacheMissType: 0,
- ID: obj.ID
- });
- });
- circuit.sendMessage(rmo, 0);
+ 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;
@@ -313,7 +424,7 @@ export class ObjectStoreFull implements IObjectStore
pos += result.readLength;
o.Text = result.result;
- o.TextColor = buf.slice(pos, pos + 4);
+ o.TextColor = new Color4(buf, pos, false, true);
pos = pos + 4;
}
else
@@ -329,7 +440,7 @@ export class ObjectStoreFull implements IObjectStore
}
if (compressedflags & CompressedFlags.HasParticles)
{
- // TODO: Particle system block
+ o.Particles = new ParticleSystem(buf.slice(pos, pos + 86), 0);
pos += 86;
}
@@ -377,7 +488,7 @@ export class ObjectStoreFull implements IObjectStore
pos = pos + 2;
const textureEntryLength = buf.readUInt32LE(pos);
pos = pos + 4;
- // TODO: Properly parse textureentry;
+ o.TextureEntry = new TextureEntry(buf.slice(pos, pos + textureEntryLength));
pos = pos + textureEntryLength;
if (compressedflags & CompressedFlags.TextureAnimation)
@@ -394,9 +505,82 @@ export class ObjectStoreFull implements IObjectStore
break;
}
case Message.ImprovedTerseObjectUpdate:
+ {
const objectUpdateTerse = packet.message as ImprovedTerseObjectUpdateMessage;
- // TODO: ImprovedTerseObjectUpdate
+ 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
@@ -509,6 +693,29 @@ export class ObjectStoreFull implements IObjectStore
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 } = {};
diff --git a/lib/classes/ObjectStoreLite.ts b/lib/classes/ObjectStoreLite.ts
index 39789cf..2352b0b 100644
--- a/lib/classes/ObjectStoreLite.ts
+++ b/lib/classes/ObjectStoreLite.ts
@@ -457,4 +457,27 @@ export class ObjectStoreLite implements IObjectStore
{
throw new Error('GetObjectsInArea not available with the Lite object store.');
}
+
+ 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];
+ }
}
diff --git a/lib/classes/ParticleSystem.ts b/lib/classes/ParticleSystem.ts
new file mode 100644
index 0000000..3dad978
--- /dev/null
+++ b/lib/classes/ParticleSystem.ts
@@ -0,0 +1,186 @@
+import {BlendFunc} from '../enums/BlendFunc';
+import {SourcePattern} from '../enums/SourcePattern';
+import {Vector3} from './Vector3';
+import {UUID} from './UUID';
+import {ParticleDataFlags} from '../enums/ParticleDataFlags';
+import {Color4} from './Color4';
+
+export class ParticleSystem
+{
+ startGlow = 0.0;
+ endGlow = 0.0;
+ blendFuncSource: BlendFunc = BlendFunc.SourceAlpha;
+ blendFuncDest: BlendFunc = BlendFunc.OneMinusSourceAlpha;
+ crc = 0;
+ pattern: SourcePattern = SourcePattern.None;
+ maxAge = 0.0;
+ startAge = 0.0;
+ innerAngle = 0.0;
+ outerAngle = 0.0;
+ burstRate = 0.0;
+ burstRadius = 0.0;
+ burstSpeedMin = 0.0;
+ burstSpeedMax = 0.0;
+ burstPartCount = 0;
+ angularVelocity = Vector3.getZero();
+ acceleration = Vector3.getZero();
+ texture = UUID.zero();
+ target = UUID.zero();
+ dataFlags: ParticleDataFlags = ParticleDataFlags.None;
+ partMaxAge = 0.0;
+ startColor = Color4.black;
+ endColor = Color4.black;
+ startScaleX = 0.0;
+ startScaleY = 0.0;
+ endScaleX = 0.0;
+ endScaleY = 0.0;
+ flags = 0;
+
+ static unpackFixed(buf: Buffer, pos: number, signed: boolean, intBits: number, fracBits: number): number
+ {
+ let totalBits = intBits + fracBits;
+ let fixedVal = 0.0;
+ if (signed)
+ {
+ totalBits++;
+ }
+ const maxVal = 1 << intBits;
+
+ if (totalBits <= 8)
+ {
+ fixedVal = buf.readUInt8(pos);
+ }
+ else if (totalBits <= 16)
+ {
+ fixedVal = buf.readUInt16LE(pos);
+ }
+ else if (totalBits <= 31)
+ {
+ fixedVal = buf.readUInt32LE(pos);
+ }
+ else
+ {
+ return 0.0;
+ }
+
+ fixedVal /= (1 << fracBits);
+
+ if (signed)
+ {
+ fixedVal -= maxVal;
+ }
+ return fixedVal;
+ }
+
+ constructor(buf: Buffer, pos: number)
+ {
+ const size = buf.length - pos;
+ if (size === 86) // Legacy data block size
+ {
+ pos = this.unpackSystem(buf, pos);
+ pos = this.unpackLegacyData(buf, pos);
+ }
+ else if (size > 86 && size <= 98)
+ {
+ const sysSize = buf.readInt32LE(pos);
+ pos += 4;
+ if (sysSize !== 68)
+ {
+ console.error('Particle system block size ' + sysSize + ' different from expected 68 bytes');
+ return;
+ }
+ pos = this.unpackSystem(buf, pos);
+ const dataSize = buf.readInt32LE(pos);
+ pos += 4;
+ pos = this.unpackLegacyData(buf, pos);
+
+ if ((this.dataFlags & ParticleDataFlags.DataGlow) === ParticleDataFlags.DataGlow)
+ {
+ let glow = buf.readUInt8(pos++);
+ this.startGlow = glow / 255.0;
+ glow = buf.readUInt8(pos++);
+ this.endGlow = glow / 255.0;
+ }
+ if ((this.dataFlags & ParticleDataFlags.DataBlend) === ParticleDataFlags.DataBlend)
+ {
+ this.blendFuncSource = buf.readUInt8(pos++);
+ this.blendFuncDest = buf.readUInt8(pos++);
+ }
+ }
+ else
+ {
+ console.error('WARNING: Paricle system size of ' + size + ' bytes exceeds maximum block size of 98');
+ }
+ }
+
+ unpackSystem(buf: Buffer, pos: number): number
+ {
+ const startPos = pos;
+ this.crc = buf.readUInt32LE(pos);
+ pos += 4;
+ this.flags = buf.readUInt32LE(pos);
+ pos += 4;
+ this.pattern = buf.readUInt8(pos++);
+ this.maxAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.startAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.innerAngle = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.outerAngle = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.burstRate = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstRadius = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstSpeedMin = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstSpeedMax = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.burstPartCount = buf.readUInt8(pos++);
+ this.angularVelocity = new Vector3([
+ ParticleSystem.unpackFixed(buf, pos, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 2, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 4, true, 8, 7),
+ ]);
+ pos = pos + 6;
+ this.acceleration = new Vector3([
+ ParticleSystem.unpackFixed(buf, pos, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 2, true, 8, 7),
+ ParticleSystem.unpackFixed(buf, pos + 4, true, 8, 7),
+ ]);
+ pos = pos + 6;
+ this.texture = new UUID(buf, pos);
+ pos += 16;
+ this.target = new UUID(buf, pos);
+ pos += 16;
+ if (pos - startPos !== 68)
+ {
+ console.log('INVALID SIZE: ' + (pos - startPos));
+ }
+ return pos;
+ }
+
+ unpackLegacyData(buf: Buffer, pos: number): number
+ {
+ this.dataFlags = buf.readUInt32LE(pos);
+ pos += 4;
+ this.partMaxAge = ParticleSystem.unpackFixed(buf, pos, false, 8, 8);
+ pos += 2;
+ this.startColor = new Color4(
+ buf.readUInt8(pos++),
+ buf.readUInt8(pos++),
+ buf.readUInt8(pos++),
+ buf.readUInt8(pos++),
+ );
+ this.endColor = new Color4(
+ buf.readUInt8(pos++),
+ buf.readUInt8(pos++),
+ buf.readUInt8(pos++),
+ buf.readUInt8(pos++),
+ );
+ this.startScaleX = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.startScaleY = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.endScaleX = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ this.endScaleY = ParticleSystem.unpackFixed(buf, pos++, false, 3, 5);
+ return pos;
+ }
+}
diff --git a/lib/classes/TextureEntry.ts b/lib/classes/TextureEntry.ts
new file mode 100644
index 0000000..66fad2a
--- /dev/null
+++ b/lib/classes/TextureEntry.ts
@@ -0,0 +1,362 @@
+import {TextureEntryFace} from './TextureEntryFace';
+import {UUID} from './UUID';
+import {Color4} from './Color4';
+import {Utils} from './Utils';
+
+export class TextureEntry
+{
+ defaultTexture: TextureEntryFace | null;
+ faces: TextureEntryFace[] = [];
+
+ static readFaceBitfield(buf: Buffer, pos: number): {
+ result: boolean,
+ pos: number,
+ faceBits: number,
+ bitfieldSize: number
+ }
+ {
+ const result = {
+ result: false,
+ pos: pos,
+ faceBits: 0,
+ bitfieldSize: 0
+ };
+ if (result.pos >= buf.length)
+ {
+ return result;
+ }
+ let b = 0;
+ do
+ {
+ b = buf.readUInt8(result.pos);
+ result.faceBits = (result.faceBits << 7) | (b & 0x7F);
+ result.bitfieldSize += 7;
+ result.pos++;
+ }
+ while ((b & 0x80) !== 0);
+ result.result = (result.faceBits !== 0);
+ return result;
+ }
+
+ constructor(buf: Buffer)
+ {
+ if (buf.length < 16)
+ {
+ this.defaultTexture = null;
+ }
+ else
+ {
+ this.defaultTexture = new TextureEntryFace(null);
+ let pos = 0;
+ let i = pos;
+
+ // Texture
+ {
+ this.defaultTexture.textureID = new UUID(buf, i);
+ i += 16;
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const uuid = new UUID(buf, i);
+ i += 16;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].textureID = uuid;
+ }
+ }
+ }
+ }
+ }
+
+ // Colour
+ {
+ this.defaultTexture.rgba = new Color4(buf, i, true);
+ i += 4;
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpColor = new Color4(buf, i, true);
+ i += 4;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].rgba = tmpColor;
+ }
+ }
+ }
+ }
+ }
+
+ // RepeatU
+ {
+ this.defaultTexture.repeatU = buf.readFloatLE(i);
+ i += 4;
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpFloat = buf.readFloatLE(i);
+ i += 4;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].repeatU = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+
+ // RepeatV
+ {
+ this.defaultTexture.repeatV = buf.readFloatLE(i);
+ i += 4;
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpFloat = buf.readFloatLE(i);
+ i += 4;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].repeatV = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+
+ // OffsetU
+ {
+ this.defaultTexture.offsetU = Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpFloat = Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].offsetU = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+
+ // OffsetV
+ {
+ this.defaultTexture.offsetV = Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpFloat = Utils.ReadOffsetFloat(buf, i);
+ i += 2;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].offsetV = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+
+ // Rotation
+ {
+ this.defaultTexture.rotation = Utils.ReadRotationFloat(buf, i);
+ i += 2;
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpFloat = Utils.ReadRotationFloat(buf, i);
+ i += 2;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].rotation = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+
+ // Material
+ {
+ this.defaultTexture.materialb = buf[i++];
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpByte = buf[i++];
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].materialb = tmpByte;
+ }
+ }
+ }
+ }
+ }
+
+ // Media
+ {
+ this.defaultTexture.mediab = buf[i++];
+
+ let done = false;
+ while (i - pos < buf.length && !done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpByte = buf[i++];
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].mediab = tmpByte;
+ }
+ }
+ }
+ }
+ }
+
+ // Glow
+ {
+ this.defaultTexture.glow = Utils.ReadGlowFloat(buf, i++);
+
+ let done = false;
+ while (!done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const tmpFloat = Utils.ReadGlowFloat(buf, i++);
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].glow = tmpFloat;
+ }
+ }
+ }
+ }
+ }
+
+ // MaterialID
+ {
+ const len = i - pos + 16;
+ if (i - pos + 16 <= buf.length)
+ {
+ this.defaultTexture.materialID = new UUID(buf, i);
+ i += 16;
+
+ let done = false;
+ while (i - pos + 16 <= buf.length && !done)
+ {
+ const result = TextureEntry.readFaceBitfield(buf, i);
+ done = !result.result;
+ i = result.pos;
+ if (!done)
+ {
+ const uuid = new UUID(buf, i);
+ i += 16;
+ for (let face = 0, bit = 1; face < result.bitfieldSize; face++, bit <<= 1)
+ {
+ if ((result.faceBits & bit) !== 0)
+ {
+ this.createFace(face);
+ this.faces[face].materialID = uuid;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ private createFace(face: number)
+ {
+ if (face > 32)
+ {
+ console.error('Warning: Face number exceeds maximum number of faces: 32');
+ }
+ while (this.faces.length <= face)
+ {
+ this.faces.push(new TextureEntryFace(this.defaultTexture));
+ }
+ }
+}
diff --git a/lib/classes/TextureEntryFace.ts b/lib/classes/TextureEntryFace.ts
new file mode 100644
index 0000000..ce3f4a1
--- /dev/null
+++ b/lib/classes/TextureEntryFace.ts
@@ -0,0 +1,43 @@
+import {UUID} from './UUID';
+import {Color4} from './Color4';
+import {TextureFlags} from '../enums/TextureFlags';
+
+export class TextureEntryFace
+{
+ private BUMP_MASK = 0x1F;
+ private FULLBRIGHT_MASK = 0x20;
+ private SHINY_MASK = 0xC0;
+ private MEDIA_MASK = 0x01;
+ private TEX_MAP_MASK = 0x06;
+
+ textureID: UUID;
+ rgba: Color4;
+ repeatU: number;
+ repeatV: number;
+ offsetU: number;
+ offsetV: number;
+ rotation: number;
+ materialb: number;
+ mediab: number;
+ glow: number;
+ materialID: UUID;
+
+ private hasAttribute: TextureFlags;
+ private defaultTexture: TextureEntryFace | null;
+
+ constructor(def: TextureEntryFace | null)
+ {
+ this.rgba = Color4.white;
+ this.repeatU = 1.0;
+ this.repeatV = 1.0;
+ this.defaultTexture = def;
+ if (this.defaultTexture == null)
+ {
+ this.hasAttribute = TextureFlags.All;
+ }
+ else
+ {
+ this.hasAttribute = TextureFlags.None;
+ }
+ }
+}
diff --git a/lib/classes/Utils.ts b/lib/classes/Utils.ts
index 1e87b0d..25cd3c9 100644
--- a/lib/classes/Utils.ts
+++ b/lib/classes/Utils.ts
@@ -115,6 +115,23 @@ export class Utils
}
}
+ static ByteToFloat(byte: number, lower: number, upper: number)
+ {
+ const ONE_OVER_BYTEMAX: number = 1.0 / 255;
+
+ let fval: number = byte * ONE_OVER_BYTEMAX;
+ const delta: number = (upper - lower);
+ fval *= delta;
+ fval += lower;
+
+ const error: number = delta * ONE_OVER_BYTEMAX;
+ if (Math.abs(fval) < error)
+ {
+ fval = 0.0;
+ }
+ return fval;
+ }
+
static UInt16ToFloat(val: number, lower: number, upper: number)
{
const ONE_OVER_U16_MAX = 1.0 / 65535;
@@ -148,4 +165,17 @@ export class Utils
}
return new Long(parseInt(hex.substr(8), 16), parseInt(hex.substr(0, 8), 16));
}
-}
\ No newline at end of file
+ static ReadRotationFloat(buf: Buffer, pos: number): number
+ {
+ return ((buf[pos] | (buf[pos + 1] << 8)) / 32768.0) * (2 * Math.PI);
+ }
+ static ReadGlowFloat(buf: Buffer, pos: number): number
+ {
+ return buf[pos] / 255;
+ }
+ static ReadOffsetFloat(buf: Buffer, pos: number): number
+ {
+ const offset = buf.readInt16LE(pos);
+ return offset / 32767.0;
+ }
+}
diff --git a/lib/classes/commands/RegionCommands.ts b/lib/classes/commands/RegionCommands.ts
index e4a49b2..82781fa 100644
--- a/lib/classes/commands/RegionCommands.ts
+++ b/lib/classes/commands/RegionCommands.ts
@@ -5,39 +5,170 @@ import {RegionHandleRequestMessage} from '../messages/RegionHandleRequest';
import {Message} from '../../enums/Message';
import {FilterResponse} from '../../enums/FilterResponse';
import {RegionIDAndHandleReplyMessage} from '../messages/RegionIDAndHandleReply';
-import {PacketFlags} from '../..';
+import {PacketFlags, Vector3} from '../..';
import {IGameObject} from '../interfaces/IGameObject';
+import {ObjectGrabMessage} from '../messages/ObjectGrab';
+import {ObjectDeGrabMessage} from '../messages/ObjectDeGrab';
+import {ObjectGrabUpdateMessage} from '../messages/ObjectGrabUpdate';
export class RegionCommands extends CommandsBase
{
- getRegionHandle(regionID: UUID): Promise
+ async getRegionHandle(regionID: UUID): Promise
{
- return new Promise((resolve, reject) =>
+ const circuit = this.currentRegion.circuit;
+ const msg: RegionHandleRequestMessage = new RegionHandleRequestMessage();
+ msg.RequestBlock = {
+ RegionID: regionID,
+ };
+ circuit.sendMessage(msg, PacketFlags.Reliable);
+ const responseMsg: RegionIDAndHandleReplyMessage = await circuit.waitForMessage(Message.RegionIDAndHandleReply, 10000, (filterMsg: RegionIDAndHandleReplyMessage): FilterResponse =>
{
- const circuit = this.currentRegion.circuit;
- const msg: RegionHandleRequestMessage = new RegionHandleRequestMessage();
- msg.RequestBlock = {
- RegionID: regionID,
- };
- circuit.sendMessage(msg, PacketFlags.Reliable);
- circuit.waitForMessage(Message.RegionIDAndHandleReply, 10000, (filterMsg: RegionIDAndHandleReplyMessage): FilterResponse =>
+ if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString())
{
- if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString())
- {
- return FilterResponse.Finish;
- }
- else
- {
- return FilterResponse.NoMatch;
- }
- }).then((responseMsg: RegionIDAndHandleReplyMessage) =>
+ return FilterResponse.Finish;
+ }
+ else
{
- resolve(responseMsg.ReplyBlock.RegionHandle);
- });
+ return FilterResponse.NoMatch;
+ }
});
+ return responseMsg.ReplyBlock.RegionHandle;
}
+
getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): IGameObject[]
{
return this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ);
}
+
+ async grabObject(localID: number | UUID,
+ grabOffset: Vector3 = Vector3.getZero(),
+ uvCoordinate: Vector3 = Vector3.getZero(),
+ stCoordinate: Vector3 = Vector3.getZero(),
+ faceIndex: number = 0,
+ position: Vector3 = Vector3.getZero(),
+ normal: Vector3 = Vector3.getZero(),
+ binormal: Vector3 = Vector3.getZero())
+ {
+ if (localID instanceof UUID)
+ {
+ const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID);
+ localID = obj.ID;
+ }
+ const msg = new ObjectGrabMessage();
+ msg.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ msg.ObjectData = {
+ LocalID: localID,
+ GrabOffset: grabOffset
+ };
+ msg.SurfaceInfo = [
+ {
+ UVCoord: uvCoordinate,
+ STCoord: stCoordinate,
+ FaceIndex: faceIndex,
+ Position: position,
+ Normal: normal,
+ Binormal: binormal
+ }
+ ];
+ const seqID = this.circuit.sendMessage(msg, PacketFlags.Reliable);
+ await this.circuit.waitForAck(seqID, 10000);
+ }
+
+ async deGrabObject(localID: number | UUID,
+ grabOffset: Vector3 = Vector3.getZero(),
+ uvCoordinate: Vector3 = Vector3.getZero(),
+ stCoordinate: Vector3 = Vector3.getZero(),
+ faceIndex: number = 0,
+ position: Vector3 = Vector3.getZero(),
+ normal: Vector3 = Vector3.getZero(),
+ binormal: Vector3 = Vector3.getZero())
+ {
+ if (localID instanceof UUID)
+ {
+ const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID);
+ localID = obj.ID;
+ }
+ const msg = new ObjectDeGrabMessage();
+ msg.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ msg.ObjectData = {
+ LocalID: localID
+ };
+ msg.SurfaceInfo = [
+ {
+ UVCoord: uvCoordinate,
+ STCoord: stCoordinate,
+ FaceIndex: faceIndex,
+ Position: position,
+ Normal: normal,
+ Binormal: binormal
+ }
+ ];
+ const seqID = this.circuit.sendMessage(msg, PacketFlags.Reliable);
+ await this.circuit.waitForAck(seqID, 10000);
+ }
+
+ async dragGrabbedObject(localID: number | UUID,
+ grabPosition: Vector3,
+ grabOffset: Vector3 = Vector3.getZero(),
+ uvCoordinate: Vector3 = Vector3.getZero(),
+ stCoordinate: Vector3 = Vector3.getZero(),
+ faceIndex: number = 0,
+ position: Vector3 = Vector3.getZero(),
+ normal: Vector3 = Vector3.getZero(),
+ binormal: Vector3 = Vector3.getZero())
+ {
+ // 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);
+ localID = obj.FullID;
+ }
+ const msg = new ObjectGrabUpdateMessage();
+ msg.AgentData = {
+ AgentID: this.agent.agentID,
+ SessionID: this.circuit.sessionID
+ };
+ msg.ObjectData = {
+ ObjectID: localID,
+ GrabOffsetInitial: grabOffset,
+ GrabPosition: grabPosition,
+ TimeSinceLast: 0
+ };
+ msg.SurfaceInfo = [
+ {
+ UVCoord: uvCoordinate,
+ STCoord: stCoordinate,
+ FaceIndex: faceIndex,
+ Position: position,
+ Normal: normal,
+ Binormal: binormal
+ }
+ ];
+ const seqID = this.circuit.sendMessage(msg, PacketFlags.Reliable);
+ await this.circuit.waitForAck(seqID, 10000);
+ }
+
+ async touchObject(localID: number | UUID,
+ grabOffset: Vector3 = Vector3.getZero(),
+ uvCoordinate: Vector3 = Vector3.getZero(),
+ stCoordinate: Vector3 = Vector3.getZero(),
+ faceIndex: number = 0,
+ position: Vector3 = Vector3.getZero(),
+ normal: Vector3 = Vector3.getZero(),
+ binormal: Vector3 = Vector3.getZero())
+ {
+ if (localID instanceof UUID)
+ {
+ const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID);
+ localID = obj.ID;
+ }
+ await this.grabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
+ await this.deGrabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
+ }
}
diff --git a/lib/classes/interfaces/IGameObject.ts b/lib/classes/interfaces/IGameObject.ts
index 8017608..a12b29c 100644
--- a/lib/classes/interfaces/IGameObject.ts
+++ b/lib/classes/interfaces/IGameObject.ts
@@ -1,7 +1,15 @@
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 545d3de..f9235af 100644
--- a/lib/classes/interfaces/IObjectStore.ts
+++ b/lib/classes/interfaces/IObjectStore.ts
@@ -1,6 +1,7 @@
import {IGameObject} from './IGameObject';
import {RBush3D} from 'rbush-3d/dist';
import {GameObjectFull} from '../GameObjectFull';
+import {UUID} from '../UUID';
export interface IObjectStore
{
@@ -8,4 +9,6 @@ export interface IObjectStore
getObjectsByParent(parentID: number): IGameObject[];
shutdown(): void;
getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[];
+ getObjectByUUID(fullID: UUID): IGameObject;
+ getObjectByLocalID(ID: number): IGameObject;
}
diff --git a/lib/enums/BlendFunc.ts b/lib/enums/BlendFunc.ts
new file mode 100644
index 0000000..fa087e5
--- /dev/null
+++ b/lib/enums/BlendFunc.ts
@@ -0,0 +1,13 @@
+export enum BlendFunc
+{
+ One = 0,
+ Zero = 1,
+ DestColor = 2,
+ SourceColor = 3,
+ OneMinusDestColor = 4,
+ OneMinusSourceColor = 5,
+ DestAlpha = 6,
+ SourceAlpha = 7,
+ OneMinusDestAlpha = 8,
+ OneMinusSourceAlpha = 9
+}
diff --git a/lib/enums/ParticleDataFlags.ts b/lib/enums/ParticleDataFlags.ts
new file mode 100644
index 0000000..f4f48f5
--- /dev/null
+++ b/lib/enums/ParticleDataFlags.ts
@@ -0,0 +1,17 @@
+export enum ParticleDataFlags
+{
+ None = 0,
+ InterpColor = 0x001,
+ InterpScale = 0x002,
+ Bounce = 0x004,
+ Wind = 0x008,
+ FollowSrc = 0x010,
+ FollowVelocity = 0x020,
+ TargetPos = 0x040,
+ TargetLinear = 0x080,
+ Emissive = 0x100,
+ Beam = 0x200,
+ Ribbon = 0x400,
+ DataGlow = 0x10000,
+ DataBlend = 0x20000
+}
diff --git a/lib/enums/SourcePattern.ts b/lib/enums/SourcePattern.ts
new file mode 100644
index 0000000..9cf252e
--- /dev/null
+++ b/lib/enums/SourcePattern.ts
@@ -0,0 +1,9 @@
+export enum SourcePattern
+{
+ None = 0,
+ Drop = 0x01,
+ Explode = 0x02,
+ Angle = 0x04,
+ AngleCone = 0x08,
+ AngleConeEmpty = 0x10
+}
diff --git a/lib/enums/TextureFlags.ts b/lib/enums/TextureFlags.ts
new file mode 100644
index 0000000..2b01da5
--- /dev/null
+++ b/lib/enums/TextureFlags.ts
@@ -0,0 +1,16 @@
+export enum TextureFlags
+{
+ None = 0,
+ TextureID = 1 << 0,
+ RGBA = 1 << 1,
+ RepeatU = 1 << 2,
+ RepeatV = 1 << 3,
+ OffsetU = 1 << 4,
+ OffsetV = 1 << 5,
+ Rotation = 1 << 6,
+ Material = 1 << 7,
+ Media = 1 << 8,
+ Glow = 1 << 9,
+ MaterialID = 1 << 10,
+ All = 0xFFFFFFFF
+}
diff --git a/lib/index.ts b/lib/index.ts
index 7e2b9a0..b8fbbda 100644
--- a/lib/index.ts
+++ b/lib/index.ts
@@ -50,6 +50,10 @@ import {FriendRemovedEvent} from './events/FriendRemovedEvent';
import {GlobalPosition} from './classes/public/interfaces/GlobalPosition';
import {MapLocation} from './classes/public/interfaces/MapLocation';
import {Vector2} from './classes/Vector2';
+import {ParticleDataFlags} from './enums/ParticleDataFlags';
+import {TextureFlags} from './enums/TextureFlags';
+import {SourcePattern} from './enums/SourcePattern';
+import {BlendFunc} from './enums/BlendFunc';
export {
Bot,
@@ -80,6 +84,10 @@ export {
TeleportFlags,
RegionFlags,
RightsFlags,
+ ParticleDataFlags,
+ TextureFlags,
+ SourcePattern,
+ BlendFunc,
// Events
ChatEvent,