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":";;AAAA,kDAA6C;AAC7C,0DAAqD;AACrD,uCAAkC;AAClC,iCAA4B;AAC5B,kEAA6D;AAC7D,qCAAgC;AAEhC,MAAa,cAAc;IAmEvB,YAAY,GAAW,EAAE,GAAW;QAjEpC,cAAS,GAAG,GAAG,CAAC;QAChB,YAAO,GAAG,GAAG,CAAC;QACd,oBAAe,GAAc,qBAAS,CAAC,WAAW,CAAC;QACnD,kBAAa,GAAc,qBAAS,CAAC,mBAAmB,CAAC;QACzD,QAAG,GAAI,CAAC,CAAC;QACT,YAAO,GAAkB,6BAAa,CAAC,IAAI,CAAC;QAC5C,WAAM,GAAG,GAAG,CAAC;QACb,aAAQ,GAAG,GAAG,CAAC;QACf,eAAU,GAAG,GAAG,CAAC;QACjB,eAAU,GAAG,GAAG,CAAC;QACjB,cAAS,GAAG,GAAG,CAAC;QAChB,gBAAW,GAAG,GAAG,CAAC;QAClB,kBAAa,GAAG,GAAG,CAAC;QACpB,kBAAa,GAAG,GAAG,CAAC;QACpB,mBAAc,GAAG,CAAC,CAAC;QACnB,oBAAe,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QACpC,iBAAY,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QACjC,YAAO,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACtB,WAAM,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACrB,cAAS,GAAsB,qCAAiB,CAAC,IAAI,CAAC;QACtD,eAAU,GAAG,GAAG,CAAC;QACjB,eAAU,GAAG,eAAM,CAAC,KAAK,CAAC;QAC1B,aAAQ,GAAG,eAAM,CAAC,KAAK,CAAC;QACxB,gBAAW,GAAG,GAAG,CAAC;QAClB,gBAAW,GAAG,GAAG,CAAC;QAClB,cAAS,GAAG,GAAG,CAAC;QAChB,cAAS,GAAG,GAAG,CAAC;QAChB,UAAK,GAAG,CAAC,CAAC;QAwCN,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;QAC9B,IAAI,IAAI,KAAK,EAAE,EACf;YACI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;SACzC;aACI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,EAAE,EAChC;YACI,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACrC,GAAG,IAAI,CAAC,CAAC;YACT,IAAI,OAAO,KAAK,EAAE,EAClB;gBACI,OAAO,CAAC,KAAK,CAAC,6BAA6B,GAAG,OAAO,GAAG,mCAAmC,CAAC,CAAC;gBAC7F,OAAO;aACV;YACD,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACtC,GAAG,IAAI,CAAC,CAAC;YACT,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAEtC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,qCAAiB,CAAC,QAAQ,CAAC,KAAK,qCAAiB,CAAC,QAAQ,EAChF;gBACI,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;gBAC9B,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;aAC/B;YACD,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,qCAAiB,CAAC,SAAS,CAAC,KAAK,qCAAiB,CAAC,SAAS,EAClF;gBACI,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC5C,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;aAC7C;SACJ;aAED;YACI,OAAO,CAAC,KAAK,CAAC,kCAAkC,GAAG,IAAI,GAAG,yCAAyC,CAAC,CAAC;SACxG;IACL,CAAC;IA3ED,MAAM,CAAC,WAAW,CAAC,GAAW,EAAE,GAAW,EAAE,MAAe,EAAE,OAAe,EAAE,QAAgB;QAE3F,IAAI,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;QACnC,IAAI,QAAQ,GAAG,GAAG,CAAC;QACnB,IAAI,MAAM,EACV;YACI,SAAS,EAAE,CAAC;SACf;QACD,MAAM,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC;QAE5B,IAAI,SAAS,IAAI,CAAC,EAClB;YACI,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACjC;aACI,IAAI,SAAS,IAAI,EAAE,EACxB;YACI,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SACpC;aACI,IAAI,SAAS,IAAI,EAAE,EACxB;YACI,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SACpC;aAED;YACI,OAAO,GAAG,CAAC;SACd;QAED,QAAQ,IAAI,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;QAE5B,IAAI,MAAM,EACV;YACI,QAAQ,IAAI,MAAM,CAAC;SACtB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IA2CD,YAAY,CAAC,GAAW,EAAE,GAAW;QAEjC,MAAM,QAAQ,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,IAAI,iBAAO,CAAC;YAC/B,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SACvD,CAAC,CAAC;QACH,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,YAAY,GAAG,IAAI,iBAAO,CAAC;YAC5B,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YACpD,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SACvD,CAAC,CAAC;QACH,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,OAAO,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAClC,GAAG,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,MAAM,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACjC,GAAG,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,GAAG,QAAQ,KAAK,EAAE,EACzB;YACI,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;SACpD;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,GAAW,EAAE,GAAW;QAErC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,GAAG,IAAI,CAAC,CAAC;QACT,IAAI,CAAC,UAAU,GAAG,IAAI,eAAM,CACxB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CACvB,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAM,CACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EACpB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CACvB,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAlLD,wCAkLC"} \ 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":"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"} \ 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,