From 2852c76cb08862268d5add3dcdff9d2d442798d1 Mon Sep 17 00:00:00 2001 From: Casper Warden <216465704+casperwardensl@users.noreply.github.com> Date: Fri, 19 Oct 2018 16:30:09 +0100 Subject: [PATCH] - Implement camera controls - Option to resolve object properties when fetching from object store (names, descriptions etc). Can be more efficient - TODO: use FamilyProperties for child prims. - Refactored objectstore to reduce code duplication --- dist/classes/Agent.d.ts | 6 +- dist/classes/Agent.js | 15 +- dist/classes/Agent.js.map | 2 +- dist/classes/EventQueueClient.js | 4 + dist/classes/EventQueueClient.js.map | 2 +- dist/classes/GameObject.d.ts | 104 ++ dist/classes/GameObject.js | 36 + dist/classes/GameObject.js.map | 1 + dist/classes/GameObjectBase.d.ts | 20 + dist/classes/GameObjectBase.js | 26 + dist/classes/GameObjectBase.js.map | 1 + dist/classes/LoginResponse.js | 2 +- dist/classes/LoginResponse.js.map | 2 +- dist/classes/ObjectStoreFull.d.ts | 37 +- dist/classes/ObjectStoreFull.js | 1046 ++++++-------- dist/classes/ObjectStoreFull.js.map | 2 +- dist/classes/ObjectStoreLite.d.ts | 52 +- dist/classes/ObjectStoreLite.js | 494 ++++--- dist/classes/ObjectStoreLite.js.map | 2 +- dist/classes/commands/AgentCommands.d.ts | 3 + dist/classes/commands/AgentCommands.js | 16 + dist/classes/commands/AgentCommands.js.map | 2 +- dist/classes/commands/RegionCommands.d.ts | 9 +- dist/classes/commands/RegionCommands.js | 216 ++- dist/classes/commands/RegionCommands.js.map | 2 +- dist/classes/interfaces/IObjectStore.d.ts | 12 +- dist/classes/interfaces/ITreeBoundingBox.d.ts | 4 +- lib/classes/Agent.ts | 20 +- lib/classes/EventQueueClient.ts | 4 + lib/classes/GameObject.ts | 130 ++ lib/classes/GameObjectFull.ts | 104 -- lib/classes/GameObjectLite.ts | 35 - lib/classes/LoginResponse.ts | 2 +- lib/classes/ObjectStoreFull.ts | 1279 +++++++---------- lib/classes/ObjectStoreLite.ts | 713 +++++---- lib/classes/commands/AgentCommands.ts | 24 + lib/classes/commands/RegionCommands.ts | 287 +++- lib/classes/interfaces/IGameObject.ts | 16 - lib/classes/interfaces/IObjectStore.ts | 12 +- lib/classes/interfaces/ITreeBoundingBox.ts | 4 +- package-lock.json | 22 +- package.json | 2 + 42 files changed, 2651 insertions(+), 2121 deletions(-) create mode 100644 dist/classes/GameObject.d.ts create mode 100644 dist/classes/GameObject.js create mode 100644 dist/classes/GameObject.js.map create mode 100644 dist/classes/GameObjectBase.d.ts create mode 100644 dist/classes/GameObjectBase.js create mode 100644 dist/classes/GameObjectBase.js.map create mode 100644 lib/classes/GameObject.ts delete mode 100644 lib/classes/GameObjectFull.ts delete mode 100644 lib/classes/GameObjectLite.ts delete mode 100644 lib/classes/interfaces/IGameObject.ts diff --git a/dist/classes/Agent.d.ts b/dist/classes/Agent.d.ts index 8a612a3..af49485 100644 --- a/dist/classes/Agent.d.ts +++ b/dist/classes/Agent.d.ts @@ -40,7 +40,11 @@ export declare class Agent { uiFlags: { 'allowFirstLife'?: boolean; }; - lookAt: Vector3; + cameraLookAt: Vector3; + cameraCenter: Vector3; + cameraLeftAxis: Vector3; + cameraUpAxis: Vector3; + cameraFar: number; maxGroups: number; agentFlags: number; startLocation: string; diff --git a/dist/classes/Agent.js b/dist/classes/Agent.js index 17caa56..a0b83d4 100644 --- a/dist/classes/Agent.js +++ b/dist/classes/Agent.js @@ -23,6 +23,11 @@ class Agent { this.openID = {}; this.buddyList = []; this.uiFlags = {}; + this.cameraLookAt = new Vector3_1.Vector3([0.979546, 0.105575, -0.171303]); + this.cameraCenter = new Vector3_1.Vector3([199.58, 203.95, 24.304]); + this.cameraLeftAxis = new Vector3_1.Vector3([-1.0, 0.0, 0]); + this.cameraUpAxis = new Vector3_1.Vector3([0.0, 0.0, 1.0]); + this.cameraFar = 1; this.home = {}; this.gestures = []; this.agentUpdateTimer = null; @@ -89,11 +94,11 @@ class Agent { HeadRotation: Quaternion_1.Quaternion.getIdentity(), BodyRotation: Quaternion_1.Quaternion.getIdentity(), State: AgentState_1.AgentState.None, - CameraCenter: new Vector3_1.Vector3([199.58, 203.95, 24.304]), - CameraAtAxis: new Vector3_1.Vector3([0.979546, 0.105575, -0.171303]), - CameraLeftAxis: new Vector3_1.Vector3([-0.107158, 0.994242, 0]), - CameraUpAxis: new Vector3_1.Vector3([0.170316, 0.018357, 0.985218]), - Far: 128, + CameraCenter: this.cameraCenter, + CameraAtAxis: this.cameraLookAt, + CameraLeftAxis: this.cameraLeftAxis, + CameraUpAxis: this.cameraUpAxis, + Far: this.cameraFar, ControlFlags: this.controlFlags, Flags: __1.AgentFlags.None }; diff --git a/dist/classes/Agent.js.map b/dist/classes/Agent.js.map index e7c725b..923a1bf 100644 --- a/dist/classes/Agent.js.map +++ b/dist/classes/Agent.js.map @@ -1 +1 @@ -{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../lib/classes/Agent.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Agent.js","sourceRoot":"","sources":["../../lib/classes/Agent.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAC5B,uCAAkC;AAClC,2CAAsC;AAItC,8CAAyC;AAGzC,wDAA0D;AAC1D,6CAAwC;AACxC,oDAA+C;AAC/C,kEAA6D;AAC7D,yCAAyC;AACzC,4EAA8E;AAE9E,oEAA+D;AAC/D,sFAAwF;AACxF,8DAAyD;AACzD,mCAA8B;AAG9B,0BAAoG;AAGpG,MAAa,KAAK;IA2Dd,YAAY,YAA0B;QAvDtC,YAAO,GAAG,CAAC,CAAC;QAMZ,iBAAY,GAKH,EAAE,CAAC;QACZ,iBAAY,GAAiB,CAAC,CAAC;QAC/B,WAAM,GAGF,EAAE,CAAC;QAEP,cAAS,GAIH,EAAE,CAAC;QACT,YAAO,GAEH,EAAE,CAAC;QACP,iBAAY,GAAY,IAAI,iBAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,iBAAY,GAAY,IAAI,iBAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,mBAAc,GAAY,IAAI,iBAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,iBAAY,GAAY,IAAI,iBAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACrD,cAAS,GAAG,CAAC,CAAC;QAKd,SAAI,GAIA,EAAE,CAAC;QAGP,aAAQ,GAGF,EAAE,CAAC;QAMT,qBAAgB,GAAiB,IAAI,CAAC;QACtC,kBAAa,GAAG,KAAK,CAAC;QAKlB,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,KAAqC,EAAE,EAAE;YAE7F,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EACxC;gBACI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;aAC/B;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEvC,IAAI,KAAK,CAAC,OAAO,EACjB;gBACI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG;oBAC5B,QAAQ,EAAE,KAAK,CAAC,YAAY;oBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;iBACjC,CAAA;aACJ;iBAED;gBACI,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;aACxC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,kBAAkB,CAAC,EAAW;QAE1B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC5B,CAAC;IAED,oBAAoB,CAAC,IAAU;QAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EACxC;YACI,OAAO,CAAC,CAAC;SACZ;aAED;YACI,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;SACrD;IACL,CAAC;IAED,cAAc,CAAC,IAAU;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,EACxC;YACI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;SAC/B;IACL,CAAC;IAED,cAAc,CAAC,IAAU;QAErB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB,CAAC,MAAc;QAE3B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC3C,iBAAO,CAAC,eAAe;SAC1B,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,aAAa;QAET,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IACD,eAAe;QAEX,IAAI,CAAC,IAAI,CAAC,aAAa,EACvB;YACI,OAAO;SACV;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC3C,MAAM,WAAW,GAAuB,IAAI,gCAAkB,EAAE,CAAC;QACjE,WAAW,CAAC,SAAS,GAAG;YACpB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,uBAAU,CAAC,WAAW,EAAE;YACtC,YAAY,EAAE,uBAAU,CAAC,WAAW,EAAE;YACtC,KAAK,EAAE,uBAAU,CAAC,IAAI;YACtB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,KAAK,EAAE,cAAU,CAAC,IAAI;SACzB,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,QAAQ;QAEJ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAClC;YACI,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAChC;IACL,CAAC;IACD,WAAW,CAAC,MAAc;QAEtB,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAO,CAAC,eAAe,EACjD;YACI,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiC,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAC5D;gBACI,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAEnC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACjC,IAAI,CAAC,KAAK,qCAAiB,CAAC,OAAO;wBAC/B,CAAC,KAAK,qCAAiB,CAAC,QAAQ;wBAChC,CAAC,KAAK,qCAAiB,CAAC,IAAI;wBAC5B,CAAC,KAAK,qCAAiB,CAAC,WAAW;wBACnC,CAAC,KAAK,qCAAiB,CAAC,IAAI;wBAC5B,CAAC,KAAK,qCAAiB,CAAC,GAAG,EAC/B;wBAEI,IAAI,CAAC,YAAY,GAAG,gBAAY,CAAC,yBAAyB,CAAC;wBAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;qBACzB;gBACL,CAAC,CAAC,CAAC;aACN;SACJ;IACL,CAAC;IACD,oBAAoB;QAEhB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAC3C,MAAM,gBAAgB,GAAiC,IAAI,oDAA4B,EAAE,CAAC;QAC1F,gBAAgB,CAAC,SAAS,GAAG;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC;QACF,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,eAAW,CAAC,QAAQ,CAAC,CAAC;QAC5D,OAAO,CAAC,cAAc,CAA8B,iBAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAsC,EAAE,EAAE;YAErI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAClF;gBACI,IAAI,CAAC,SAAS,GAAG;oBACb,YAAY,EAAE,SAAS,CAAC,SAAS,CAAC,SAAS;oBAC3C,WAAW,EAAE,EAAE;iBAClB,CAAC;gBACF,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAChD;wBACI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;4BACzB,YAAY,EAAE,QAAQ,CAAC,YAAY;yBACtC,CAAC,CAAC;qBACN;gBACL,CAAC,CAAC,CAAC;aACN;YAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,MAAM,CAAC,WAAW,KAAK,aAAS,CAAC,mBAAmB,EACxD;oBACI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBAEjC,MAAM,aAAa,GAAG;wBAClB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAClC,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;wBACrC,aAAa,EAAE,IAAI;wBACnB,WAAW,EAAE,IAAI;wBACjB,UAAU,EAAE,uCAAkB,CAAC,MAAM;qBACxC,CAAC;oBACF,MAAM,gBAAgB,GAAG;wBACrB,SAAS,EAAE;4BACP,aAAa;yBAChB;qBACJ,CAAC;oBACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,cAAmB,EAAE,EAAE;wBAEhH,MAAM,2BAA2B,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;wBAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAChF,2BAA2B,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;4BAE9C,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EACnB;gCACI,IAAI,KAAK,GAAG,KAAK,CAAC;gCAClB,WAAW,CAAC,OAAO,CAAC,CAAC,GAAe,EAAE,EAAE;oCAEpC,IAAI,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,EACzC;wCACI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,EACxE;4CACI,KAAK,GAAG,IAAI,CAAC;yCAChB;qCACJ;gCACL,CAAC,CAAC,CAAC;gCAEH,IAAI,CAAC,KAAK,EACV;oCACI,MAAM,KAAK,GAAG,IAAI,8DAAiC,EAAE,CAAC;oCACtD,KAAK,CAAC,SAAS,GAAG;wCACd,OAAO,EAAE,IAAI,CAAC,OAAO;wCACrB,SAAS,EAAE,OAAO,CAAC,SAAS;qCAC/B,CAAC;oCACF,KAAK,CAAC,UAAU,GAAG;wCACf,MAAM,EAAE,IAAI,WAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;wCAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;wCACrB,YAAY,EAAE,IAAI,GAAG,iCAAe,CAAC,OAAO;wCAC5C,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC;wCACxB,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC;wCAC5C,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,eAAe,CAAC;wCAClD,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,iBAAiB,CAAC;wCACrD,IAAI,EAAE,aAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wCACxC,WAAW,EAAE,aAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qCAClD,CAAC;oCACF,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,eAAW,CAAC,QAAQ,CAAC,CAAC;iCACpD;6BACJ;wBACL,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;iBAEN;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA9RD,sBA8RC"} \ No newline at end of file diff --git a/dist/classes/EventQueueClient.js b/dist/classes/EventQueueClient.js index b2829ed..5bdf9b0 100644 --- a/dist/classes/EventQueueClient.js +++ b/dist/classes/EventQueueClient.js @@ -136,6 +136,10 @@ class EventQueueClient { } break; } + case 'ObjectPhysicsProperties': + { + break; + } case 'TeleportFinish': { const info = event['body']['Info'][0]; diff --git a/dist/classes/EventQueueClient.js.map b/dist/classes/EventQueueClient.js.map index b5e3c35..b9cdb6a 100644 --- a/dist/classes/EventQueueClient.js.map +++ b/dist/classes/EventQueueClient.js.map @@ -1 +1 @@ -{"version":3,"file":"EventQueueClient.js","sourceRoot":"","sources":["../../lib/classes/EventQueueClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"EventQueueClient.js","sourceRoot":"","sources":["../../lib/classes/EventQueueClient.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/classes/GameObject.d.ts b/dist/classes/GameObject.d.ts new file mode 100644 index 0000000..5431c1b --- /dev/null +++ b/dist/classes/GameObject.d.ts @@ -0,0 +1,104 @@ +/// +import { Vector3 } from './Vector3'; +import { UUID } from './UUID'; +import { Quaternion } from './Quaternion'; +import { Tree } from '../enums/Tree'; +import { SoundFlags } from '..'; +import { Vector4 } from './Vector4'; +import { TextureEntry } from './TextureEntry'; +import { Color4 } from './Color4'; +import { ParticleSystem } from './ParticleSystem'; +import { ITreeBoundingBox } from './interfaces/ITreeBoundingBox'; +import { NameValue } from './NameValue'; +import { PCode } from '../enums/PCode'; +import * as Long from 'long'; +export declare class GameObject { + creatorID?: UUID; + creationDate?: Long; + baseMask?: number; + ownerMask?: number; + groupMask?: number; + everyoneMask?: number; + nextOwnerMask?: number; + ownershipCost?: number; + saleType?: number; + salePrice?: number; + aggregatePerms?: number; + aggregatePermTextures?: number; + aggregatePermTexturesOwner?: number; + category: number; + inventorySerial: number; + itemID: UUID; + folderID: UUID; + fromTaskID: UUID; + lastOwnerID: UUID; + name?: string; + description?: string; + touchName?: string; + sitName?: string; + textureID?: string; + resolvedAt?: number; + totalChildren?: number; + children?: GameObject[]; + rtreeEntry?: ITreeBoundingBox; + ID: number; + FullID: UUID; + ParentID: number; + OwnerID: UUID; + IsAttachment: boolean; + NameValue: { + [key: string]: NameValue; + }; + PCode: PCode; + State?: number; + CRC?: number; + Material?: number; + ClickAction?: number; + Scale?: Vector3; + ObjectData?: Buffer; + UpdateFlags?: number; + Flags?: number; + PathCurve?: number; + ProfileCurve?: number; + PathBegin?: number; + PathEnd?: number; + PathScaleX?: number; + PathScaleY?: number; + PathShearX?: number; + PathShearY?: number; + PathTwist?: number; + PathTwistBegin?: number; + PathRadiusOffset?: number; + PathTaperX?: number; + PathTaperY?: number; + PathRevolutions?: number; + PathSkew?: number; + ProfileBegin?: number; + ProfileEnd?: number; + ProfileHollow?: number; + TextureEntry?: TextureEntry; + TextureAnim?: Buffer; + Data?: Buffer; + Text?: string; + TextColor?: Color4; + MediaURL?: string; + PSBlock?: Buffer; + JointType?: number; + JointPivot?: Vector3; + JointAxisOrAnchor?: Vector3; + Position?: Vector3; + Rotation?: Quaternion; + CollisionPlane?: Vector4; + Velocity?: Vector3; + Acceleration?: Vector3; + AngularVelocity?: Vector3; + TreeSpecies?: Tree; + Sound?: UUID; + SoundGain?: number; + SoundFlags?: SoundFlags; + SoundRadius?: number; + Particles?: ParticleSystem; + constructor(); + hasNameValueEntry(key: string): boolean; + getNameValueEntry(key: string): string; +} diff --git a/dist/classes/GameObject.js b/dist/classes/GameObject.js new file mode 100644 index 0000000..08dcecf --- /dev/null +++ b/dist/classes/GameObject.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const Vector3_1 = require("./Vector3"); +const UUID_1 = require("./UUID"); +const Quaternion_1 = require("./Quaternion"); +const PCode_1 = require("../enums/PCode"); +class GameObject { + constructor() { + this.ID = 0; + this.FullID = UUID_1.UUID.random(); + this.ParentID = 0; + this.OwnerID = UUID_1.UUID.zero(); + this.IsAttachment = false; + this.NameValue = {}; + this.PCode = PCode_1.PCode.None; + this.Position = Vector3_1.Vector3.getZero(); + this.Rotation = Quaternion_1.Quaternion.getIdentity(); + this.AngularVelocity = Vector3_1.Vector3.getZero(); + this.TreeSpecies = 0; + this.SoundFlags = 0; + this.SoundRadius = 1.0; + this.SoundGain = 1.0; + this.ParentID = 0; + } + hasNameValueEntry(key) { + return this.NameValue[key] !== undefined; + } + getNameValueEntry(key) { + if (this.NameValue[key]) { + return this.NameValue[key].value; + } + return ''; + } +} +exports.GameObject = GameObject; +//# sourceMappingURL=GameObject.js.map \ No newline at end of file diff --git a/dist/classes/GameObject.js.map b/dist/classes/GameObject.js.map new file mode 100644 index 0000000..4388f5e --- /dev/null +++ b/dist/classes/GameObject.js.map @@ -0,0 +1 @@ +{"version":3,"file":"GameObject.js","sourceRoot":"","sources":["../../lib/classes/GameObject.ts"],"names":[],"mappings":";;AAAA,uCAAkC;AAClC,iCAA4B;AAC5B,6CAAwC;AASxC,0CAAqC;AAIrC,MAAa,UAAU;IAyFnB;QAzDA,OAAE,GAAG,CAAC,CAAC;QACP,WAAM,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QACvB,aAAQ,GAAG,CAAC,CAAC;QACb,YAAO,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACtB,iBAAY,GAAG,KAAK,CAAC;QACrB,cAAS,GAA+B,EAAE,CAAC;QAC3C,UAAK,GAAU,aAAK,CAAC,IAAI,CAAC;QAqDtB,IAAI,CAAC,QAAQ,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,uBAAU,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,iBAAO,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACvB;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AAlHD,gCAkHC"} \ No newline at end of file diff --git a/dist/classes/GameObjectBase.d.ts b/dist/classes/GameObjectBase.d.ts new file mode 100644 index 0000000..adc53be --- /dev/null +++ b/dist/classes/GameObjectBase.d.ts @@ -0,0 +1,20 @@ +import { UUID } from './UUID'; +import { NameValue } from './NameValue'; +import { PCode } from '../enums/PCode'; +import { ITreeBoundingBox } from './interfaces/ITreeBoundingBox'; +export declare class GameObjectBase { + name?: string; + description?: string; + rtreeEntry?: ITreeBoundingBox; + ID: number; + FullID: UUID; + ParentID: number; + OwnerID: UUID; + IsAttachment: boolean; + NameValue: { + [key: string]: NameValue; + }; + PCode: PCode; + hasNameValueEntry(key: string): boolean; + getNameValueEntry(key: string): string; +} diff --git a/dist/classes/GameObjectBase.js b/dist/classes/GameObjectBase.js new file mode 100644 index 0000000..8d58693 --- /dev/null +++ b/dist/classes/GameObjectBase.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const UUID_1 = require("./UUID"); +const PCode_1 = require("../enums/PCode"); +class GameObjectBase { + constructor() { + this.ID = 0; + this.FullID = UUID_1.UUID.random(); + this.ParentID = 0; + this.OwnerID = UUID_1.UUID.zero(); + this.IsAttachment = false; + this.NameValue = {}; + this.PCode = PCode_1.PCode.None; + } + hasNameValueEntry(key) { + return this.NameValue[key] !== undefined; + } + getNameValueEntry(key) { + if (this.NameValue[key]) { + return this.NameValue[key].value; + } + return ''; + } +} +exports.GameObjectBase = GameObjectBase; +//# sourceMappingURL=GameObjectBase.js.map \ No newline at end of file diff --git a/dist/classes/GameObjectBase.js.map b/dist/classes/GameObjectBase.js.map new file mode 100644 index 0000000..4759769 --- /dev/null +++ b/dist/classes/GameObjectBase.js.map @@ -0,0 +1 @@ +{"version":3,"file":"GameObjectBase.js","sourceRoot":"","sources":["../../lib/classes/GameObjectBase.ts"],"names":[],"mappings":";;AAAA,iCAA4B;AAE5B,0CAAqC;AAGrC,MAAa,cAAc;IAA3B;QAKI,OAAE,GAAG,CAAC,CAAC;QACP,WAAM,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QACvB,aAAQ,GAAG,CAAC,CAAC;QACb,YAAO,GAAG,WAAI,CAAC,IAAI,EAAE,CAAC;QACtB,iBAAY,GAAG,KAAK,CAAC;QACrB,cAAS,GAA+B,EAAE,CAAC;QAC3C,UAAK,GAAU,aAAK,CAAC,IAAI,CAAC;IAe9B,CAAC;IAbG,iBAAiB,CAAC,GAAW;QAEzB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,GAAW;QAEzB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACvB;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AA1BD,wCA0BC"} \ No newline at end of file diff --git a/dist/classes/LoginResponse.js b/dist/classes/LoginResponse.js index ea24845..ad436e8 100644 --- a/dist/classes/LoginResponse.js +++ b/dist/classes/LoginResponse.js @@ -151,7 +151,7 @@ class LoginResponse { }); break; case 'look_at': - this.agent.lookAt = LoginResponse.parseVector3(val); + this.agent.cameraLookAt = LoginResponse.parseVector3(val); break; case 'openid_url': this.agent.openID.url = String(val); diff --git a/dist/classes/LoginResponse.js.map b/dist/classes/LoginResponse.js.map index fbc8413..86a5ed4 100644 --- a/dist/classes/LoginResponse.js.map +++ b/dist/classes/LoginResponse.js.map @@ -1 +1 @@ -{"version":3,"file":"LoginResponse.js","sourceRoot":"","sources":["../../lib/classes/LoginResponse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LoginResponse.js","sourceRoot":"","sources":["../../lib/classes/LoginResponse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/classes/ObjectStoreFull.d.ts b/dist/classes/ObjectStoreFull.d.ts index df744ff..e9fb457 100644 --- a/dist/classes/ObjectStoreFull.d.ts +++ b/dist/classes/ObjectStoreFull.d.ts @@ -1,34 +1,19 @@ -/// import { Circuit } from './Circuit'; +import { ObjectUpdateMessage } from './messages/ObjectUpdate'; +import { ObjectUpdateCachedMessage } from './messages/ObjectUpdateCached'; +import { ObjectUpdateCompressedMessage } from './messages/ObjectUpdateCompressed'; +import { ImprovedTerseObjectUpdateMessage } from './messages/ImprovedTerseObjectUpdate'; import { Agent } from './Agent'; -import { UUID } from './UUID'; -import { NameValue } from './NameValue'; import { ClientEvents } from './ClientEvents'; import { IObjectStore } from './interfaces/IObjectStore'; -import { GameObjectFull } from './GameObjectFull'; -import { IGameObject } from './interfaces/IGameObject'; import { BotOptionFlags } from '..'; import { RBush3D } from 'rbush-3d/dist'; -export declare class ObjectStoreFull implements IObjectStore { - private circuit; - private agent; - private objects; - private objectsByUUID; - private objectsByParent; - private clientEvents; - private options; - rtree: RBush3D; +import { ObjectStoreLite } from './ObjectStoreLite'; +export declare class ObjectStoreFull extends ObjectStoreLite implements IObjectStore { + rtree?: RBush3D; constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags); - insertIntoRtree(obj: GameObjectFull): void; - deleteObject(objectID: number): void; - readExtraParams(buf: Buffer, pos: number, o: GameObjectFull): number; - getObjectsByParent(parentID: number): IGameObject[]; - getObjectByUUID(fullID: UUID | string): IGameObject; - getObjectByLocalID(localID: number): IGameObject; - parseNameValues(str: string): { - [key: string]: NameValue; - }; - shutdown(): void; - private findParent; - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[]; + protected objectUpdate(objectUpdate: ObjectUpdateMessage): void; + protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage): void; + protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage): void; + protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage): void; } diff --git a/dist/classes/ObjectStoreFull.js b/dist/classes/ObjectStoreFull.js index 4bc1fe0..9e91aa9 100644 --- a/dist/classes/ObjectStoreFull.js +++ b/dist/classes/ObjectStoreFull.js @@ -1,650 +1,452 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -const Message_1 = require("../enums/Message"); const RequestMultipleObjects_1 = require("./messages/RequestMultipleObjects"); const UUID_1 = require("./UUID"); const Quaternion_1 = require("./Quaternion"); const Vector3_1 = require("./Vector3"); const Utils_1 = require("./Utils"); const PCode_1 = require("../enums/PCode"); -const NameValue_1 = require("./NameValue"); -const GameObjectFull_1 = require("./GameObjectFull"); const __1 = require(".."); const dist_1 = require("rbush-3d/dist"); const Vector4_1 = require("./Vector4"); const TextureEntry_1 = require("./TextureEntry"); const Color4_1 = require("./Color4"); const ParticleSystem_1 = require("./ParticleSystem"); -class ObjectStoreFull { +const GameObject_1 = require("./GameObject"); +const ObjectStoreLite_1 = require("./ObjectStoreLite"); +class ObjectStoreFull extends ObjectStoreLite_1.ObjectStoreLite { constructor(circuit, agent, clientEvents, options) { - this.objects = {}; - this.objectsByUUID = {}; - this.objectsByParent = {}; - agent.localID = 0; + super(circuit, agent, clientEvents, options); this.rtree = new dist_1.RBush3D(); - this.options = options; - this.clientEvents = clientEvents; - this.circuit = circuit; - this.agent = agent; - this.circuit.subscribeToMessages([ - Message_1.Message.ObjectUpdate, - Message_1.Message.ObjectUpdateCached, - Message_1.Message.ObjectUpdateCompressed, - Message_1.Message.ImprovedTerseObjectUpdate, - Message_1.Message.MultipleObjectUpdate, - Message_1.Message.KillObject - ], (packet) => { - switch (packet.message.id) { - case Message_1.Message.ObjectUpdate: - const objectUpdate = packet.message; - for (const objData of objectUpdate.ObjectData) { - const localID = objData.ID; - const parentID = objData.ParentID; - let addToParentList = true; - if (this.objects[localID]) { - if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) { - const ind = this.objectsByParent[parentID].indexOf(localID); - if (ind !== -1) { - this.objectsByParent[parentID].splice(ind, 1); - } - } - else { - addToParentList = false; - } - } - else { - this.objects[localID] = new GameObjectFull_1.GameObjectFull(); - } - const obj = this.objects[localID]; - obj.ID = objData.ID; - obj.State = objData.State; - obj.FullID = objData.FullID; - obj.CRC = objData.CRC; - obj.PCode = objData.PCode; - obj.Material = objData.Material; - obj.ClickAction = objData.ClickAction; - obj.Scale = objData.Scale; - obj.ObjectData = objData.ObjectData; - const data = objData.ObjectData; - let dataPos = 0; - switch (data.length) { - case 76: - obj.CollisionPlane = new Vector4_1.Vector4(objData.ObjectData, dataPos); - dataPos += 16; - case 60: - obj.Position = new Vector3_1.Vector3(objData.ObjectData, dataPos); - dataPos += 12; - obj.Velocity = new Vector3_1.Vector3(objData.ObjectData, dataPos); - dataPos += 12; - obj.Acceleration = new Vector3_1.Vector3(objData.ObjectData, dataPos); - dataPos += 12; - obj.Rotation = new Quaternion_1.Quaternion(objData.ObjectData, dataPos); - dataPos += 12; - obj.AngularVelocity = new Vector3_1.Vector3(objData.ObjectData, dataPos); - dataPos += 12; - break; - case 48: - obj.CollisionPlane = new Vector4_1.Vector4(objData.ObjectData, dataPos); - dataPos += 16; - case 32: - obj.Position = new Vector3_1.Vector3([ - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -0.5 * 256.0, 1.5 * 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -0.5 * 256.0, 1.5 * 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 3.0 * 256.0) - ]); - dataPos += 6; - obj.Velocity = new Vector3_1.Vector3([ - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) - ]); - dataPos += 6; - obj.Acceleration = new Vector3_1.Vector3([ - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) - ]); - dataPos += 6; - obj.Rotation = new Quaternion_1.Quaternion([ - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -1.0, 1.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -1.0, 1.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0) - ]); - dataPos += 8; - obj.AngularVelocity = new Vector3_1.Vector3([ - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), - Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) - ]); - dataPos += 6; - break; - case 16: - obj.Position = new Vector3_1.Vector3([ - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - obj.Velocity = new Vector3_1.Vector3([ - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - obj.Acceleration = new Vector3_1.Vector3([ - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - obj.Rotation = new Quaternion_1.Quaternion([ - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0) - ]); - obj.AngularVelocity = new Vector3_1.Vector3([ - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - break; - } - obj.ParentID = objData.ParentID; - obj.Flags = objData.UpdateFlags; - obj.PathCurve = objData.PathCurve; - obj.ProfileCurve = objData.ProfileCurve; - obj.PathBegin = objData.PathBegin; - obj.PathEnd = objData.PathEnd; - obj.PathScaleX = objData.PathScaleX; - obj.PathScaleY = objData.PathScaleY; - obj.PathShearX = objData.PathShearX; - obj.PathShearY = objData.PathShearY; - obj.PathTwist = objData.PathTwist; - obj.PathTwistBegin = objData.PathTwistBegin; - obj.PathRadiusOffset = objData.PathRadiusOffset; - obj.PathTaperX = objData.PathTaperX; - obj.PathTaperY = objData.PathTaperY; - obj.PathRevolutions = objData.PathRevolutions; - obj.PathSkew = objData.PathSkew; - obj.ProfileBegin = objData.ProfileBegin; - obj.ProfileEnd = objData.ProfileEnd; - obj.ProfileHollow = objData.ProfileHollow; - obj.TextureEntry = new TextureEntry_1.TextureEntry(objData.TextureEntry); - obj.TextureAnim = objData.TextureAnim; - const pcodeData = objData.Data; - obj.Text = Utils_1.Utils.BufferToStringSimple(objData.Text); - obj.TextColor = new Color4_1.Color4(objData.TextColor, 0, false, true); - obj.MediaURL = Utils_1.Utils.BufferToStringSimple(objData.MediaURL); - obj.PSBlock = objData.PSBlock; - obj.Sound = objData.Sound; - obj.OwnerID = objData.OwnerID; - obj.SoundGain = objData.Gain; - obj.SoundFlags = objData.Flags; - obj.SoundRadius = objData.Radius; - obj.JointType = objData.JointType; - obj.JointPivot = objData.JointPivot; - obj.JointAxisOrAnchor = objData.JointAxisOrAnchor; - switch (obj.PCode) { - case PCode_1.PCode.Grass: - case PCode_1.PCode.Tree: - case PCode_1.PCode.NewTree: - if (pcodeData.length === 1) { - obj.TreeSpecies = pcodeData[0]; - } - break; - } - if (this.objects[localID].PCode === PCode_1.PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) { - this.agent.localID = localID; - if (this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { - Object.keys(this.objectsByParent).forEach((objParentID) => { - const parent = parseInt(objParentID, 10); - if (parent !== this.agent.localID) { - let foundAvatars = false; - this.objectsByParent[parent].forEach((objID) => { - if (this.objects[objID]) { - const o = this.objects[objID]; - if (o.PCode === PCode_1.PCode.Avatar) { - foundAvatars = true; - } - } - }); - if (this.objects[parent]) { - const o = this.objects[parent]; - if (o.PCode === PCode_1.PCode.Avatar) { - foundAvatars = true; - } - } - if (!foundAvatars) { - this.deleteObject(parent); - } - } - }); - } - } - this.readExtraParams(objData.ExtraParams, 0, this.objects[localID]); - this.objects[localID].NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue)); - this.objectsByUUID[objData.FullID.toString()] = localID; - if (!this.objectsByParent[parentID]) { - this.objectsByParent[parentID] = []; - } - if (addToParentList) { - this.objectsByParent[parentID].push(localID); - } - if (objData.PCode !== PCode_1.PCode.Avatar && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID)) { - this.deleteObject(localID); - } - else { - this.insertIntoRtree(obj); - } + } + objectUpdate(objectUpdate) { + for (const objData of objectUpdate.ObjectData) { + const localID = objData.ID; + const parentID = objData.ParentID; + let addToParentList = true; + if (this.objects[localID]) { + if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) { + const ind = this.objectsByParent[parentID].indexOf(localID); + if (ind !== -1) { + this.objectsByParent[parentID].splice(ind, 1); } - break; - case Message_1.Message.ObjectUpdateCached: - { - const objectUpdateCached = packet.message; - const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage(); - rmo.AgentData = { - AgentID: this.agent.agentID, - SessionID: this.circuit.sessionID - }; - rmo.ObjectData = []; - for (const obj of objectUpdateCached.ObjectData) { - if (!this.objects[obj.ID]) { - rmo.ObjectData.push({ - CacheMissType: 0, - ID: obj.ID - }); - } - } - if (rmo.ObjectData.length > 0) { - circuit.sendMessage(rmo, 0); - } - break; - } - case Message_1.Message.ObjectUpdateCompressed: - { - const objectUpdateCompressed = packet.message; - for (const obj of objectUpdateCompressed.ObjectData) { - const flags = obj.UpdateFlags; - const buf = obj.Data; - let pos = 0; - const fullID = new UUID_1.UUID(buf, pos); - pos += 16; - const localID = buf.readUInt32LE(pos); - pos += 4; - const pcode = buf.readUInt8(pos++); - let newObj = false; - if (!this.objects[localID]) { - newObj = true; - this.objects[localID] = new GameObjectFull_1.GameObjectFull(); - } - const o = this.objects[localID]; - o.ID = localID; - this.objectsByUUID[fullID.toString()] = localID; - o.FullID = fullID; - o.Flags = flags; - o.PCode = pcode; - o.State = buf.readUInt8(pos++); - o.CRC = buf.readUInt32LE(pos); - pos = pos + 4; - o.Material = buf.readUInt8(pos++); - o.ClickAction = buf.readUInt8(pos++); - o.Scale = new Vector3_1.Vector3(buf, pos, false); - pos = pos + 12; - o.Position = new Vector3_1.Vector3(buf, pos, false); - pos = pos + 12; - o.Rotation = new Quaternion_1.Quaternion(buf, pos); - pos = pos + 12; - const compressedflags = buf.readUInt32LE(pos); - pos = pos + 4; - o.OwnerID = new UUID_1.UUID(buf, pos); - pos += 16; - if (compressedflags & __1.CompressedFlags.HasAngularVelocity) { - o.AngularVelocity = new Vector3_1.Vector3(buf, pos, false); - pos = pos + 12; - } - if (compressedflags & __1.CompressedFlags.HasParent) { - const newParentID = buf.readUInt32LE(pos); - pos += 4; - let add = true; - if (!newObj) { - if (newParentID !== o.ParentID) { - const index = this.objectsByParent[o.ParentID].indexOf(localID); - if (index !== -1) { - this.objectsByParent[o.ParentID].splice(index, 1); - } - } - else { - add = false; - } - } - if (add) { - if (!this.objectsByParent[newParentID]) { - this.objectsByParent[newParentID] = []; - } - this.objectsByParent[newParentID].push(localID); - } - o.ParentID = newParentID; - } - if (pcode !== PCode_1.PCode.Avatar && newObj && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && o.ParentID !== this.agent.localID)) { - this.deleteObject(localID); - return; - } - else { - if (compressedflags & __1.CompressedFlags.Tree) { - o.TreeSpecies = buf.readUInt8(pos++); - } - else if (compressedflags & __1.CompressedFlags.ScratchPad) { - o.TreeSpecies = 0; - const scratchPadSize = buf.readUInt8(pos++); - pos = pos + scratchPadSize; - } - if (compressedflags & __1.CompressedFlags.HasText) { - const result = Utils_1.Utils.BufferToString(buf, pos); - pos += result.readLength; - o.Text = result.result; - o.TextColor = new Color4_1.Color4(buf, pos, false, true); - pos = pos + 4; - } - else { - o.Text = ''; - } - if (compressedflags & __1.CompressedFlags.MediaURL) { - const result = Utils_1.Utils.BufferToString(buf, pos); - pos += result.readLength; - o.MediaURL = result.result; - } - if (compressedflags & __1.CompressedFlags.HasParticles) { - o.Particles = new ParticleSystem_1.ParticleSystem(buf.slice(pos, pos + 86), 0); - pos += 86; - } - pos = this.readExtraParams(buf, pos, o); - if (compressedflags & __1.CompressedFlags.HasSound) { - o.Sound = new UUID_1.UUID(buf, pos); - pos = pos + 16; - o.SoundGain = buf.readFloatLE(pos); - pos += 4; - o.SoundFlags = buf.readUInt8(pos++); - o.SoundRadius = buf.readFloatLE(pos); - pos = pos + 4; - } - if (compressedflags & __1.CompressedFlags.HasNameValues) { - const result = Utils_1.Utils.BufferToString(buf, pos); - o.NameValue = this.parseNameValues(result.result); - pos += result.readLength; - } - o.PathCurve = buf.readUInt8(pos++); - o.PathBegin = buf.readUInt16LE(pos); - pos = pos + 2; - o.PathEnd = buf.readUInt16LE(pos); - pos = pos + 2; - o.PathScaleX = buf.readUInt8(pos++); - o.PathScaleY = buf.readUInt8(pos++); - o.PathShearX = buf.readUInt8(pos++); - o.PathShearY = buf.readUInt8(pos++); - o.PathTwist = buf.readUInt8(pos++); - o.PathTwistBegin = buf.readUInt8(pos++); - o.PathRadiusOffset = buf.readUInt8(pos++); - o.PathTaperX = buf.readUInt8(pos++); - o.PathTaperY = buf.readUInt8(pos++); - o.PathRevolutions = buf.readUInt8(pos++); - o.PathSkew = buf.readUInt8(pos++); - o.ProfileCurve = buf.readUInt8(pos++); - o.ProfileBegin = buf.readUInt16LE(pos); - pos = pos + 2; - o.ProfileEnd = buf.readUInt16LE(pos); - pos = pos + 2; - o.ProfileHollow = buf.readUInt16LE(pos); - pos = pos + 2; - const textureEntryLength = buf.readUInt32LE(pos); - pos = pos + 4; - o.TextureEntry = new TextureEntry_1.TextureEntry(buf.slice(pos, pos + textureEntryLength)); - pos = pos + textureEntryLength; - if (compressedflags & __1.CompressedFlags.TextureAnimation) { - pos = pos + 4; - } - o.IsAttachment = (compressedflags & __1.CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; - this.insertIntoRtree(o); - } - } - break; - } - case Message_1.Message.ImprovedTerseObjectUpdate: - { - const objectUpdateTerse = packet.message; - const dilation = objectUpdateTerse.RegionData.TimeDilation / 65535.0; - for (let i = 0; i < objectUpdateTerse.ObjectData.length; i++) { - const objectData = objectUpdateTerse.ObjectData[i]; - if (!(this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly)) { - let pos = 0; - const localID = objectData.Data.readUInt32LE(pos); - pos = pos + 4; - if (this.objects[localID]) { - this.objects[localID].State = objectData.Data.readUInt8(pos++); - const avatar = (objectData.Data.readUInt8(pos++) !== 0); - if (avatar) { - this.objects[localID].CollisionPlane = new Vector4_1.Vector4(objectData.Data, pos); - pos += 16; - } - this.objects[localID].Position = new Vector3_1.Vector3(objectData.Data, pos); - pos += 12; - this.objects[localID].Velocity = new Vector3_1.Vector3([ - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -128.0, 128.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -128.0, 128.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -128.0, 128.0) - ]); - pos += 6; - this.objects[localID].Acceleration = new Vector3_1.Vector3([ - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) - ]); - pos += 6; - this.objects[localID].Rotation = new Quaternion_1.Quaternion([ - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -1.0, 1.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -1.0, 1.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -1.0, 1.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 6), -1.0, 1.0) - ]); - pos += 8; - this.objects[localID].AngularVelocity = new Vector3_1.Vector3([ - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), - Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) - ]); - pos += 6; - if (objectData.TextureEntry.length > 0) { - this.objects[localID].TextureEntry = new TextureEntry_1.TextureEntry(objectData.TextureEntry.slice(4)); - } - this.insertIntoRtree(this.objects[localID]); - } - else { - console.log('Received terse update for object ' + localID + ' which is not in the store, so requesting the object'); - const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage(); - rmo.AgentData = { - AgentID: this.agent.agentID, - SessionID: this.circuit.sessionID - }; - rmo.ObjectData = []; - rmo.ObjectData.push({ - CacheMissType: 0, - ID: localID - }); - circuit.sendMessage(rmo, 0); - } - } - } - break; - } - case Message_1.Message.MultipleObjectUpdate: - const multipleObjectUpdate = packet.message; - console.error('TODO: MultipleObjectUpdate'); - break; - case Message_1.Message.KillObject: - const killObj = packet.message; - for (const obj of killObj.ObjectData) { - const objectID = obj.ID; - this.deleteObject(objectID); - } - break; - } - }); - } - insertIntoRtree(obj) { - if (obj.rtreeEntry !== undefined) { - this.rtree.remove(obj.rtreeEntry); - } - const normalizedScale = obj.Scale.multiplyByQuat(obj.Rotation); - const bounds = { - minX: obj.Position.x - (normalizedScale.x / 2), - maxX: obj.Position.x + (normalizedScale.x / 2), - minY: obj.Position.y - (normalizedScale.y / 2), - maxY: obj.Position.y + (normalizedScale.y / 2), - minZ: obj.Position.z - (normalizedScale.z / 2), - maxZ: obj.Position.z + (normalizedScale.z / 2), - gameObject: obj - }; - obj.rtreeEntry = bounds; - this.rtree.insert(bounds); - } - deleteObject(objectID) { - if (this.objects[objectID]) { - if (this.objectsByParent[objectID]) { - this.objectsByParent[objectID].forEach((childObjID) => { - this.deleteObject(childObjID); - }); - } - delete this.objectsByParent[objectID]; - const objct = this.objects[objectID]; - const uuid = objct.FullID.toString(); - if (this.objectsByUUID[uuid]) { - delete this.objectsByUUID[uuid]; - } - const parentID = objct.ParentID; - if (this.objectsByParent[parentID]) { - const ind = this.objectsByParent[parentID].indexOf(objectID); - if (ind !== -1) { - this.objectsByParent[parentID].splice(ind, 1); - } - } - if (this.objects[objectID].rtreeEntry !== undefined) { - this.rtree.remove(this.objects[objectID].rtreeEntry); - } - delete this.objects[objectID]; - } - } - readExtraParams(buf, pos, o) { - if (pos >= buf.length) { - return 0; - } - const extraParamCount = buf.readUInt8(pos++); - for (let k = 0; k < extraParamCount; k++) { - const type = buf.readUInt16LE(pos); - pos = pos + 2; - const paramLength = buf.readUInt32LE(pos); - pos = pos + 4; - pos += paramLength; - } - return pos; - } - getObjectsByParent(parentID) { - const list = this.objectsByParent[parentID]; - if (list === undefined) { - return []; - } - const result = []; - list.forEach((localID) => { - result.push(this.objects[localID]); - }); - return result; - } - getObjectByUUID(fullID) { - if (fullID instanceof UUID_1.UUID) { - fullID = fullID.toString(); - } - if (!this.objectsByUUID[fullID]) { - throw new Error('No object found with that UUID'); - } - const localID = this.objectsByUUID[fullID]; - return this.objects[localID]; - } - getObjectByLocalID(localID) { - if (!this.objects[localID]) { - throw new Error('No object found with that UUID'); - } - return this.objects[localID]; - } - parseNameValues(str) { - const nv = {}; - const lines = str.split('\n'); - lines.forEach((line) => { - if (line.length > 0) { - let kv = line.split(/[\t ]/); - if (kv.length > 5) { - for (let x = 5; x < kv.length; x++) { - kv[4] += ' ' + kv[x]; - } - kv = kv.slice(0, 5); - } - if (kv.length === 5) { - const namevalue = new NameValue_1.NameValue(); - namevalue.type = kv[1]; - namevalue.class = kv[2]; - namevalue.sendTo = kv[3]; - namevalue.value = kv[4]; - nv[kv[0]] = namevalue; } else { - console.log('namevalue unexpected length: ' + kv.length); - console.log(kv); + addToParentList = false; } } - }); - return nv; - } - shutdown() { - this.objects = {}; - this.rtree.clear(); - this.objectsByUUID = {}; - this.objectsByParent = {}; - } - findParent(go) { - if (go.ParentID === 0) { - return go; - } - else { - return this.findParent(this.objects[go.ParentID]); - } - } - getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) { - const result = this.rtree.search({ - minX: minX, - maxX: maxX, - minY: minY, - maxY: maxY, - minZ: minZ, - maxZ: maxZ - }); - const found = {}; - const objs = []; - for (const obj of result) { - const o = obj; - const go = o.gameObject; - try { - const parent = this.findParent(go); - const uuid = parent.FullID.toString(); - if (parent !== go) { - console.log('Resolved object ' + go.FullID.toString() + ' to parent ' + parent.FullID.toString() + ' which ' + ((found[uuid] === undefined) ? 'does not exist' : 'already exists')); - } - if (found[uuid] === undefined) { - found[uuid] = parent; - objs.push(parent); + else { + this.objects[localID] = new GameObject_1.GameObject(); + } + const obj = this.objects[localID]; + obj.ID = objData.ID; + obj.State = objData.State; + obj.FullID = objData.FullID; + obj.CRC = objData.CRC; + obj.PCode = objData.PCode; + obj.Material = objData.Material; + obj.ClickAction = objData.ClickAction; + obj.Scale = objData.Scale; + obj.ObjectData = objData.ObjectData; + const data = objData.ObjectData; + let dataPos = 0; + switch (data.length) { + case 76: + obj.CollisionPlane = new Vector4_1.Vector4(objData.ObjectData, dataPos); + dataPos += 16; + case 60: + obj.Position = new Vector3_1.Vector3(objData.ObjectData, dataPos); + dataPos += 12; + obj.Velocity = new Vector3_1.Vector3(objData.ObjectData, dataPos); + dataPos += 12; + obj.Acceleration = new Vector3_1.Vector3(objData.ObjectData, dataPos); + dataPos += 12; + obj.Rotation = new Quaternion_1.Quaternion(objData.ObjectData, dataPos); + dataPos += 12; + obj.AngularVelocity = new Vector3_1.Vector3(objData.ObjectData, dataPos); + dataPos += 12; + break; + case 48: + obj.CollisionPlane = new Vector4_1.Vector4(objData.ObjectData, dataPos); + dataPos += 16; + case 32: + obj.Position = new Vector3_1.Vector3([ + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -0.5 * 256.0, 1.5 * 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -0.5 * 256.0, 1.5 * 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 3.0 * 256.0) + ]); + dataPos += 6; + obj.Velocity = new Vector3_1.Vector3([ + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) + ]); + dataPos += 6; + obj.Acceleration = new Vector3_1.Vector3([ + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) + ]); + dataPos += 6; + obj.Rotation = new Quaternion_1.Quaternion([ + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -1.0, 1.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -1.0, 1.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0) + ]); + dataPos += 8; + obj.AngularVelocity = new Vector3_1.Vector3([ + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), + Utils_1.Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) + ]); + dataPos += 6; + break; + case 16: + obj.Position = new Vector3_1.Vector3([ + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + obj.Velocity = new Vector3_1.Vector3([ + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + obj.Acceleration = new Vector3_1.Vector3([ + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + obj.Rotation = new Quaternion_1.Quaternion([ + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0) + ]); + obj.AngularVelocity = new Vector3_1.Vector3([ + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils_1.Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + break; + } + obj.ParentID = objData.ParentID; + obj.Flags = objData.UpdateFlags; + obj.PathCurve = objData.PathCurve; + obj.ProfileCurve = objData.ProfileCurve; + obj.PathBegin = objData.PathBegin; + obj.PathEnd = objData.PathEnd; + obj.PathScaleX = objData.PathScaleX; + obj.PathScaleY = objData.PathScaleY; + obj.PathShearX = objData.PathShearX; + obj.PathShearY = objData.PathShearY; + obj.PathTwist = objData.PathTwist; + obj.PathTwistBegin = objData.PathTwistBegin; + obj.PathRadiusOffset = objData.PathRadiusOffset; + obj.PathTaperX = objData.PathTaperX; + obj.PathTaperY = objData.PathTaperY; + obj.PathRevolutions = objData.PathRevolutions; + obj.PathSkew = objData.PathSkew; + obj.ProfileBegin = objData.ProfileBegin; + obj.ProfileEnd = objData.ProfileEnd; + obj.ProfileHollow = objData.ProfileHollow; + obj.TextureEntry = new TextureEntry_1.TextureEntry(objData.TextureEntry); + obj.TextureAnim = objData.TextureAnim; + const pcodeData = objData.Data; + obj.Text = Utils_1.Utils.BufferToStringSimple(objData.Text); + obj.TextColor = new Color4_1.Color4(objData.TextColor, 0, false, true); + obj.MediaURL = Utils_1.Utils.BufferToStringSimple(objData.MediaURL); + obj.PSBlock = objData.PSBlock; + obj.Sound = objData.Sound; + obj.OwnerID = objData.OwnerID; + obj.SoundGain = objData.Gain; + obj.SoundFlags = objData.Flags; + obj.SoundRadius = objData.Radius; + obj.JointType = objData.JointType; + obj.JointPivot = objData.JointPivot; + obj.JointAxisOrAnchor = objData.JointAxisOrAnchor; + switch (obj.PCode) { + case PCode_1.PCode.Grass: + case PCode_1.PCode.Tree: + case PCode_1.PCode.NewTree: + if (pcodeData.length === 1) { + obj.TreeSpecies = pcodeData[0]; + } + break; + } + if (this.objects[localID].PCode === PCode_1.PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) { + this.agent.localID = localID; + if (this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { + Object.keys(this.objectsByParent).forEach((objParentID) => { + const parent = parseInt(objParentID, 10); + if (parent !== this.agent.localID) { + let foundAvatars = false; + this.objectsByParent[parent].forEach((objID) => { + if (this.objects[objID]) { + const o = this.objects[objID]; + if (o.PCode === PCode_1.PCode.Avatar) { + foundAvatars = true; + } + } + }); + if (this.objects[parent]) { + const o = this.objects[parent]; + if (o.PCode === PCode_1.PCode.Avatar) { + foundAvatars = true; + } + } + if (!foundAvatars) { + this.deleteObject(parent); + } + } + }); } } - catch (error) { - console.log('Failed to find parent for ' + go.FullID.toString()); - console.error(error); + this.readExtraParams(objData.ExtraParams, 0, this.objects[localID]); + this.objects[localID].NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue)); + this.objectsByUUID[objData.FullID.toString()] = localID; + if (!this.objectsByParent[parentID]) { + this.objectsByParent[parentID] = []; + } + if (addToParentList) { + this.objectsByParent[parentID].push(localID); + } + if (objData.PCode !== PCode_1.PCode.Avatar && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID)) { + this.deleteObject(localID); + } + else { + this.insertIntoRtree(obj); + } + } + } + objectUpdateCached(objectUpdateCached) { + const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage(); + rmo.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + rmo.ObjectData = []; + for (const obj of objectUpdateCached.ObjectData) { + if (!this.objects[obj.ID]) { + rmo.ObjectData.push({ + CacheMissType: 0, + ID: obj.ID + }); + } + } + if (rmo.ObjectData.length > 0) { + this.circuit.sendMessage(rmo, 0); + } + } + objectUpdateCompressed(objectUpdateCompressed) { + for (const obj of objectUpdateCompressed.ObjectData) { + const flags = obj.UpdateFlags; + const buf = obj.Data; + let pos = 0; + const fullID = new UUID_1.UUID(buf, pos); + pos += 16; + const localID = buf.readUInt32LE(pos); + pos += 4; + const pcode = buf.readUInt8(pos++); + let newObj = false; + if (!this.objects[localID]) { + newObj = true; + this.objects[localID] = new GameObject_1.GameObject(); + } + const o = this.objects[localID]; + o.ID = localID; + this.objectsByUUID[fullID.toString()] = localID; + o.FullID = fullID; + o.Flags = flags; + o.PCode = pcode; + o.State = buf.readUInt8(pos++); + o.CRC = buf.readUInt32LE(pos); + pos = pos + 4; + o.Material = buf.readUInt8(pos++); + o.ClickAction = buf.readUInt8(pos++); + o.Scale = new Vector3_1.Vector3(buf, pos, false); + pos = pos + 12; + o.Position = new Vector3_1.Vector3(buf, pos, false); + pos = pos + 12; + o.Rotation = new Quaternion_1.Quaternion(buf, pos); + pos = pos + 12; + const compressedflags = buf.readUInt32LE(pos); + pos = pos + 4; + o.OwnerID = new UUID_1.UUID(buf, pos); + pos += 16; + if (compressedflags & __1.CompressedFlags.HasAngularVelocity) { + o.AngularVelocity = new Vector3_1.Vector3(buf, pos, false); + pos = pos + 12; + } + if (compressedflags & __1.CompressedFlags.HasParent) { + const newParentID = buf.readUInt32LE(pos); + pos += 4; + let add = true; + if (!newObj) { + if (newParentID !== o.ParentID) { + const index = this.objectsByParent[o.ParentID].indexOf(localID); + if (index !== -1) { + this.objectsByParent[o.ParentID].splice(index, 1); + } + } + else { + add = false; + } + } + if (add) { + if (!this.objectsByParent[newParentID]) { + this.objectsByParent[newParentID] = []; + } + this.objectsByParent[newParentID].push(localID); + } + o.ParentID = newParentID; + } + if (pcode !== PCode_1.PCode.Avatar && newObj && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && o.ParentID !== this.agent.localID)) { + this.deleteObject(localID); + return; + } + else { + if (compressedflags & __1.CompressedFlags.Tree) { + o.TreeSpecies = buf.readUInt8(pos++); + } + else if (compressedflags & __1.CompressedFlags.ScratchPad) { + o.TreeSpecies = 0; + const scratchPadSize = buf.readUInt8(pos++); + pos = pos + scratchPadSize; + } + if (compressedflags & __1.CompressedFlags.HasText) { + const result = Utils_1.Utils.BufferToString(buf, pos); + pos += result.readLength; + o.Text = result.result; + o.TextColor = new Color4_1.Color4(buf, pos, false, true); + pos = pos + 4; + } + else { + o.Text = ''; + } + if (compressedflags & __1.CompressedFlags.MediaURL) { + const result = Utils_1.Utils.BufferToString(buf, pos); + pos += result.readLength; + o.MediaURL = result.result; + } + if (compressedflags & __1.CompressedFlags.HasParticles) { + o.Particles = new ParticleSystem_1.ParticleSystem(buf.slice(pos, pos + 86), 0); + pos += 86; + } + pos = this.readExtraParams(buf, pos, o); + if (compressedflags & __1.CompressedFlags.HasSound) { + o.Sound = new UUID_1.UUID(buf, pos); + pos = pos + 16; + o.SoundGain = buf.readFloatLE(pos); + pos += 4; + o.SoundFlags = buf.readUInt8(pos++); + o.SoundRadius = buf.readFloatLE(pos); + pos = pos + 4; + } + if (compressedflags & __1.CompressedFlags.HasNameValues) { + const result = Utils_1.Utils.BufferToString(buf, pos); + o.NameValue = this.parseNameValues(result.result); + pos += result.readLength; + } + o.PathCurve = buf.readUInt8(pos++); + o.PathBegin = buf.readUInt16LE(pos); + pos = pos + 2; + o.PathEnd = buf.readUInt16LE(pos); + pos = pos + 2; + o.PathScaleX = buf.readUInt8(pos++); + o.PathScaleY = buf.readUInt8(pos++); + o.PathShearX = buf.readUInt8(pos++); + o.PathShearY = buf.readUInt8(pos++); + o.PathTwist = buf.readUInt8(pos++); + o.PathTwistBegin = buf.readUInt8(pos++); + o.PathRadiusOffset = buf.readUInt8(pos++); + o.PathTaperX = buf.readUInt8(pos++); + o.PathTaperY = buf.readUInt8(pos++); + o.PathRevolutions = buf.readUInt8(pos++); + o.PathSkew = buf.readUInt8(pos++); + o.ProfileCurve = buf.readUInt8(pos++); + o.ProfileBegin = buf.readUInt16LE(pos); + pos = pos + 2; + o.ProfileEnd = buf.readUInt16LE(pos); + pos = pos + 2; + o.ProfileHollow = buf.readUInt16LE(pos); + pos = pos + 2; + const textureEntryLength = buf.readUInt32LE(pos); + pos = pos + 4; + o.TextureEntry = new TextureEntry_1.TextureEntry(buf.slice(pos, pos + textureEntryLength)); + pos = pos + textureEntryLength; + if (compressedflags & __1.CompressedFlags.TextureAnimation) { + pos = pos + 4; + } + o.IsAttachment = (compressedflags & __1.CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; + this.insertIntoRtree(o); + } + } + } + objectUpdateTerse(objectUpdateTerse) { + const dilation = objectUpdateTerse.RegionData.TimeDilation / 65535.0; + for (let i = 0; i < objectUpdateTerse.ObjectData.length; i++) { + const objectData = objectUpdateTerse.ObjectData[i]; + if (!(this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly)) { + let pos = 0; + const localID = objectData.Data.readUInt32LE(pos); + pos = pos + 4; + if (this.objects[localID]) { + this.objects[localID].State = objectData.Data.readUInt8(pos++); + const avatar = (objectData.Data.readUInt8(pos++) !== 0); + if (avatar) { + this.objects[localID].CollisionPlane = new Vector4_1.Vector4(objectData.Data, pos); + pos += 16; + } + this.objects[localID].Position = new Vector3_1.Vector3(objectData.Data, pos); + pos += 12; + this.objects[localID].Velocity = new Vector3_1.Vector3([ + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -128.0, 128.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -128.0, 128.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -128.0, 128.0) + ]); + pos += 6; + this.objects[localID].Acceleration = new Vector3_1.Vector3([ + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) + ]); + pos += 6; + this.objects[localID].Rotation = new Quaternion_1.Quaternion([ + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -1.0, 1.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -1.0, 1.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -1.0, 1.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 6), -1.0, 1.0) + ]); + pos += 8; + this.objects[localID].AngularVelocity = new Vector3_1.Vector3([ + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), + Utils_1.Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) + ]); + pos += 6; + if (objectData.TextureEntry.length > 0) { + this.objects[localID].TextureEntry = new TextureEntry_1.TextureEntry(objectData.TextureEntry.slice(4)); + } + this.insertIntoRtree(this.objects[localID]); + } + else { + console.log('Received terse update for object ' + localID + ' which is not in the store, so requesting the object'); + const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage(); + rmo.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + rmo.ObjectData = []; + rmo.ObjectData.push({ + CacheMissType: 0, + ID: localID + }); + this.circuit.sendMessage(rmo, 0); + } } } - return objs; } } exports.ObjectStoreFull = ObjectStoreFull; diff --git a/dist/classes/ObjectStoreFull.js.map b/dist/classes/ObjectStoreFull.js.map index 949272b..528251c 100644 --- a/dist/classes/ObjectStoreFull.js.map +++ b/dist/classes/ObjectStoreFull.js.map @@ -1 +1 @@ -{"version":3,"file":"ObjectStoreFull.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreFull.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ObjectStoreFull.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreFull.ts"],"names":[],"mappings":";;AAKA,8EAAgF;AAEhF,iCAA4B;AAC5B,6CAAwC;AACxC,uCAAkC;AAClC,mCAA8B;AAC9B,0CAAqC;AAGrC,0BAAmD;AACnD,wCAAsC;AACtC,uCAAkC;AAClC,iDAA4C;AAC5C,qCAAgC;AAChC,qDAAgD;AAChD,6CAAwC;AACxC,uDAAkD;AAElD,MAAa,eAAgB,SAAQ,iCAAe;IAIhD,YAAY,OAAgB,EAAE,KAAY,EAAE,YAA0B,EAAE,OAAuB;QAE3F,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,GAAG,IAAI,cAAO,EAAE,CAAC;IAC/B,CAAC;IAES,YAAY,CAAC,YAAiC;QAEpD,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,UAAU,EAC7C;YACI,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAClC,IAAI,eAAe,GAAG,IAAI,CAAC;YAE3B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EACzB;gBACI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EACjF;oBACI,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAC5D,IAAI,GAAG,KAAK,CAAC,CAAC,EACd;wBACI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;qBACjD;iBACJ;qBAED;oBACI,eAAe,GAAG,KAAK,CAAC;iBAC3B;aACJ;iBAED;gBACI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,uBAAU,EAAE,CAAC;aAC5C;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC1B,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC5B,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;YACtB,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC1B,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACtC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC1B,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,MAAM,IAAI,GAAW,OAAO,CAAC,UAAU,CAAC;YACxC,IAAI,OAAO,GAAG,CAAC,CAAC;YAGhB,QAAQ,IAAI,CAAC,MAAM,EACnB;gBACI,KAAK,EAAE;oBAEH,GAAG,CAAC,cAAc,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC9D,OAAO,IAAI,EAAE,CAAC;gBAClB,KAAK,EAAE;oBAEH,GAAG,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBACxD,OAAO,IAAI,EAAE,CAAC;oBACd,GAAG,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBACxD,OAAO,IAAI,EAAE,CAAC;oBACd,GAAG,CAAC,YAAY,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC5D,OAAO,IAAI,EAAE,CAAC;oBACd,GAAG,CAAC,QAAQ,GAAG,IAAI,uBAAU,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC3D,OAAO,IAAI,EAAE,CAAC;oBACd,GAAG,CAAC,eAAe,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC/D,OAAO,IAAI,EAAE,CAAC;oBACd,MAAM;gBACV,KAAK,EAAE;oBACH,GAAG,CAAC,cAAc,GAAG,IAAI,iBAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAC9D,OAAO,IAAI,EAAE,CAAC;gBAClB,KAAK,EAAE;oBACH,GAAG,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC;wBACvB,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;wBACxF,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;wBAC5F,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC;qBACzF,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,CAAC;oBACb,GAAG,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC;wBACvB,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBAC5E,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBAChF,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBACnF,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,CAAC;oBACb,GAAG,CAAC,YAAY,GAAG,IAAI,iBAAO,CAAC;wBAC3B,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBAC5E,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBAChF,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBACnF,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,CAAC;oBACb,GAAG,CAAC,QAAQ,GAAG,IAAI,uBAAU,CAAC;wBAC1B,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBACxE,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBAC5E,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBAC5E,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;qBAC/E,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,CAAC;oBACb,GAAG,CAAC,eAAe,GAAG,IAAI,iBAAO,CAAC;wBAC9B,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBAC5E,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBAChF,aAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBACnF,CAAC,CAAC;oBACH,OAAO,IAAI,CAAC,CAAC;oBACb,MAAM;gBACV,KAAK,EAAE;oBACH,GAAG,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC;wBACvB,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC5E,CAAC,CAAC;oBACH,GAAG,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC;wBACvB,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC5E,CAAC,CAAC;oBACH,GAAG,CAAC,YAAY,GAAG,IAAI,iBAAO,CAAC;wBAC3B,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC5E,CAAC,CAAC;oBACH,GAAG,CAAC,QAAQ,GAAG,IAAI,uBAAU,CAAC;wBAC1B,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBACrE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBACrE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBACrE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;qBACxE,CAAC,CAAC;oBACH,GAAG,CAAC,eAAe,GAAG,IAAI,iBAAO,CAAC;wBAC9B,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC5E,CAAC,CAAC;oBACH,MAAM;aACb;YACD,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChC,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;YAChC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAClC,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACxC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAClC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAClC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;YAC5C,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAChD,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;YAC9C,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAChC,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;YACxC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;YAC1C,GAAG,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC1D,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACtC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAC/B,GAAG,CAAC,IAAI,GAAG,aAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpD,GAAG,CAAC,SAAS,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC9D,GAAG,CAAC,QAAQ,GAAG,aAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5D,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAC1B,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAC9B,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;YAC7B,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;YAC/B,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;YACjC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YAClC,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACpC,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAElD,QAAQ,GAAG,CAAC,KAAK,EACjB;gBACI,KAAK,aAAK,CAAC,KAAK,CAAC;gBACjB,KAAK,aAAK,CAAC,IAAI,CAAC;gBAChB,KAAK,aAAK,CAAC,OAAO;oBACd,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAC1B;wBACI,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;qBAClC;oBACD,MAAM;aACb;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAC7H;gBACI,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBAE7B,IAAI,IAAI,CAAC,OAAO,GAAG,kBAAc,CAAC,sBAAsB,EACxD;oBACI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,WAAmB,EAAE,EAAE;wBAE9D,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;wBACzC,IAAI,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EACjC;4BACI,IAAI,YAAY,GAAG,KAAK,CAAC;4BACzB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gCAE3C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EACvB;oCACI,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oCAC9B,IAAI,CAAC,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,EAC5B;wCACI,YAAY,GAAG,IAAI,CAAC;qCACvB;iCACJ;4BACL,CAAC,CAAC,CAAC;4BACH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EACxB;gCACI,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gCAC/B,IAAI,CAAC,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,EAC5B;oCACI,YAAY,GAAG,IAAI,CAAC;iCACvB;6BACJ;4BACD,IAAI,CAAC,YAAY,EACjB;gCACI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;6BAC7B;yBACJ;oBACL,CAAC,CAAC,CAAC;iBACN;aACJ;YAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACpE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,aAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAEtG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EACnC;gBACI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;aACvC;YACD,IAAI,eAAe,EACnB;gBACI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAChD;YAED,IAAI,OAAO,CAAC,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,GAAG,kBAAc,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAC/J;gBAEI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAED;gBACI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aAC7B;SACJ;IACL,CAAC;IAES,kBAAkB,CAAC,kBAA6C;QAEtE,MAAM,GAAG,GAAG,IAAI,sDAA6B,EAAE,CAAC;QAChD,GAAG,CAAC,SAAS,GAAG;YACZ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;YAC3B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SACpC,CAAC;QACF,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,kBAAkB,CAAC,UAAU,EAC/C;YACI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EACzB;gBACI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;oBAChB,aAAa,EAAE,CAAC;oBAChB,EAAE,EAAE,GAAG,CAAC,EAAE;iBACb,CAAC,CAAC;aACN;SACJ;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAC7B;YACI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;SACpC;IACL,CAAC;IAES,sBAAsB,CAAC,sBAAqD;QAElF,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,UAAU,EACnD;YACI,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC;YAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;YACrB,IAAI,GAAG,GAAG,CAAC,CAAC;YAEZ,MAAM,MAAM,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,GAAG,IAAI,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACtC,GAAG,IAAI,CAAC,CAAC;YACT,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YACnC,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAC1B;gBACI,MAAM,GAAG,IAAI,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,uBAAU,EAAE,CAAC;aAC5C;YACD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;YAChD,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC9B,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,CAAC,CAAC,KAAK,GAAG,IAAI,iBAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;YACf,CAAC,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1C,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;YACf,CAAC,CAAC,QAAQ,GAAG,IAAI,uBAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;YACf,MAAM,eAAe,GAAoB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/D,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,OAAO,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC/B,GAAG,IAAI,EAAE,CAAC;YAEV,IAAI,eAAe,GAAG,mBAAe,CAAC,kBAAkB,EACxD;gBACI,CAAC,CAAC,eAAe,GAAG,IAAI,iBAAO,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBACjD,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;aAClB;YACD,IAAI,eAAe,GAAG,mBAAe,CAAC,SAAS,EAC/C;gBACI,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC1C,GAAG,IAAI,CAAC,CAAC;gBACT,IAAI,GAAG,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,MAAM,EACX;oBACI,IAAI,WAAW,KAAK,CAAC,CAAC,QAAQ,EAC9B;wBACI,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAChE,IAAI,KAAK,KAAK,CAAC,CAAC,EAChB;4BACI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBACrD;qBACJ;yBAED;wBACI,GAAG,GAAG,KAAK,CAAC;qBACf;iBACJ;gBACD,IAAI,GAAG,EACP;oBACI,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EACtC;wBACI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;qBAC1C;oBACD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACnD;gBACD,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC;aAC5B;YACD,IAAI,KAAK,KAAK,aAAK,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,GAAG,kBAAc,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAC/J;gBAEI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO;aACV;iBAED;gBACI,IAAI,eAAe,GAAG,mBAAe,CAAC,IAAI,EAC1C;oBACI,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;iBACxC;qBACI,IAAI,eAAe,GAAG,mBAAe,CAAC,UAAU,EACrD;oBACI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;oBAClB,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;oBAE5C,GAAG,GAAG,GAAG,GAAG,cAAc,CAAC;iBAC9B;gBACD,IAAI,eAAe,GAAG,mBAAe,CAAC,OAAO,EAC7C;oBAEI,MAAM,MAAM,GAAG,aAAK,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAE9C,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC;oBACzB,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;oBACvB,CAAC,CAAC,SAAS,GAAG,IAAI,eAAM,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;oBAChD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;iBACjB;qBAED;oBACI,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;iBACf;gBACD,IAAI,eAAe,GAAG,mBAAe,CAAC,QAAQ,EAC9C;oBACI,MAAM,MAAM,GAAG,aAAK,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAE9C,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC;oBACzB,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;iBAC9B;gBACD,IAAI,eAAe,GAAG,mBAAe,CAAC,YAAY,EAClD;oBACI,CAAC,CAAC,SAAS,GAAG,IAAI,+BAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC9D,GAAG,IAAI,EAAE,CAAC;iBACb;gBAGD,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAExC,IAAI,eAAe,GAAG,mBAAe,CAAC,QAAQ,EAC9C;oBACI,CAAC,CAAC,KAAK,GAAG,IAAI,WAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC7B,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;oBACf,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACnC,GAAG,IAAI,CAAC,CAAC;oBACT,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;oBACpC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACrC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;iBACjB;gBACD,IAAI,eAAe,GAAG,mBAAe,CAAC,aAAa,EACnD;oBACI,MAAM,MAAM,GAAG,aAAK,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC9C,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAClD,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC;iBAC5B;gBACD,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACpC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACnC,CAAC,CAAC,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACxC,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACpC,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACzC,CAAC,CAAC,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBAClC,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtC,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACvC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACrC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACd,MAAM,kBAAkB,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBACjD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC;gBAC5E,GAAG,GAAG,GAAG,GAAG,kBAAkB,CAAC;gBAE/B,IAAI,eAAe,GAAG,mBAAe,CAAC,gBAAgB,EACtD;oBAEI,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;iBACjB;gBAED,CAAC,CAAC,YAAY,GAAG,CAAC,eAAe,GAAG,mBAAe,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC;gBAE7F,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;aAC3B;SACJ;IACL,CAAC;IAES,iBAAiB,CAAC,iBAAmD;QAE3E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC;QAErE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAC5D;YACI,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,kBAAc,CAAC,sBAAsB,CAAC,EAC3D;gBACI,IAAI,GAAG,GAAG,CAAC,CAAC;gBACZ,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClD,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;gBACd,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EACzB;oBACI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC/D,MAAM,MAAM,GAAY,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;oBACjE,IAAI,MAAM,EACV;wBACI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,cAAc,GAAG,IAAI,iBAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBACzE,GAAG,IAAI,EAAE,CAAC;qBACb;oBACD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACnE,GAAG,IAAI,EAAE,CAAC;oBACV,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,iBAAO,CAAC;wBACzC,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACrE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;wBACzE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC5E,CAAC,CAAC;oBACH,GAAG,IAAI,CAAC,CAAC;oBACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,GAAG,IAAI,iBAAO,CAAC;wBAC7C,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;wBACnE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;wBACvE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC1E,CAAC,CAAC;oBACH,GAAG,IAAI,CAAC,CAAC;oBACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,uBAAU,CAAC;wBAC5C,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBACjE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBACrE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;wBACrE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;qBACxE,CAAC,CAAC;oBACH,GAAG,IAAI,CAAC,CAAC;oBACT,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,eAAe,GAAG,IAAI,iBAAO,CAAC;wBAChD,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;wBACnE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;wBACvE,aAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC1E,CAAC,CAAC;oBACH,GAAG,IAAI,CAAC,CAAC;oBAET,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EACtC;wBAEI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC3F;oBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC/C;qBAED;oBACI,OAAO,CAAC,GAAG,CAAC,mCAAmC,GAAG,OAAO,GAAG,sDAAsD,CAAC,CAAC;oBAEpH,MAAM,GAAG,GAAG,IAAI,sDAA6B,EAAE,CAAC;oBAChD,GAAG,CAAC,SAAS,GAAG;wBACZ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;wBAC3B,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;qBACpC,CAAC;oBACF,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;oBACpB,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;wBAChB,aAAa,EAAE,CAAC;wBAChB,EAAE,EAAE,OAAO;qBACd,CAAC,CAAC;oBACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBACpC;aACJ;SACJ;IACL,CAAC;CACJ;AAlhBD,0CAkhBC"} \ No newline at end of file diff --git a/dist/classes/ObjectStoreLite.d.ts b/dist/classes/ObjectStoreLite.d.ts index fd18b77..ebd55c3 100644 --- a/dist/classes/ObjectStoreLite.d.ts +++ b/dist/classes/ObjectStoreLite.d.ts @@ -1,31 +1,53 @@ /// import { Circuit } from './Circuit'; +import { ObjectUpdateMessage } from './messages/ObjectUpdate'; +import { ObjectUpdateCachedMessage } from './messages/ObjectUpdateCached'; +import { ObjectUpdateCompressedMessage } from './messages/ObjectUpdateCompressed'; +import { ImprovedTerseObjectUpdateMessage } from './messages/ImprovedTerseObjectUpdate'; +import { MultipleObjectUpdateMessage } from './messages/MultipleObjectUpdate'; import { Agent } from './Agent'; import { UUID } from './UUID'; import { ClientEvents } from './ClientEvents'; +import { KillObjectMessage } from './messages/KillObject'; import { IObjectStore } from './interfaces/IObjectStore'; -import { GameObjectLite } from './GameObjectLite'; import { NameValue } from './NameValue'; import { BotOptionFlags } from '..'; -import { IGameObject } from './interfaces/IGameObject'; -import { GameObjectFull } from './GameObjectFull'; +import { GameObject } from './GameObject'; +import { RBush3D } from 'rbush-3d/dist'; export declare class ObjectStoreLite implements IObjectStore { - private circuit; - private agent; - private objects; - private objectsByUUID; - private objectsByParent; - private clientEvents; - private options; + protected circuit: Circuit; + protected agent: Agent; + protected objects: { + [key: number]: GameObject; + }; + protected objectsByUUID: { + [key: string]: number; + }; + protected objectsByParent: { + [key: number]: number[]; + }; + protected clientEvents: ClientEvents; + protected options: BotOptionFlags; + rtree?: RBush3D; constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags); + protected objectUpdate(objectUpdate: ObjectUpdateMessage): void; + protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage): void; + protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage): void; + protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage): void; + protected objectUpdateMultiple(objectUpdateMultiple: MultipleObjectUpdateMessage): void; + protected killObject(killObj: KillObjectMessage): void; deleteObject(objectID: number): void; - readExtraParams(buf: Buffer, pos: number, o: GameObjectLite): number; - getObjectsByParent(parentID: number): GameObjectLite[]; + readExtraParams(buf: Buffer, pos: number, o: GameObject): number; + getObjectsByParent(parentID: number): GameObject[]; parseNameValues(str: string): { [key: string]: NameValue; }; shutdown(): void; - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[]; - getObjectByUUID(fullID: UUID | string): IGameObject; - getObjectByLocalID(localID: number): IGameObject; + protected findParent(go: GameObject): GameObject; + private populateChildren; + getNumberOfObjects(): number; + getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[]; + getObjectByUUID(fullID: UUID | string): GameObject; + getObjectByLocalID(localID: number): GameObject; + insertIntoRtree(obj: GameObject): void; } diff --git a/dist/classes/ObjectStoreLite.js b/dist/classes/ObjectStoreLite.js index 98a522d..ead84b5 100644 --- a/dist/classes/ObjectStoreLite.js +++ b/dist/classes/ObjectStoreLite.js @@ -5,9 +5,9 @@ const RequestMultipleObjects_1 = require("./messages/RequestMultipleObjects"); const UUID_1 = require("./UUID"); const Utils_1 = require("./Utils"); const PCode_1 = require("../enums/PCode"); -const GameObjectLite_1 = require("./GameObjectLite"); const NameValue_1 = require("./NameValue"); const __1 = require(".."); +const GameObject_1 = require("./GameObject"); class ObjectStoreLite { constructor(circuit, agent, clientEvents, options) { this.objects = {}; @@ -29,221 +29,235 @@ class ObjectStoreLite { switch (packet.message.id) { case Message_1.Message.ObjectUpdate: const objectUpdate = packet.message; - objectUpdate.ObjectData.forEach((objData) => { - const localID = objData.ID; - const parentID = objData.ParentID; - let addToParentList = true; - if (this.objects[localID]) { - if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) { - const ind = this.objectsByParent[parentID].indexOf(localID); - if (ind !== -1) { - this.objectsByParent[parentID].splice(ind, 1); - } - } - else { - addToParentList = false; - } - } - else { - this.objects[localID] = new GameObjectLite_1.GameObjectLite(); - } - const obj = this.objects[localID]; - obj.ID = objData.ID; - obj.FullID = objData.FullID; - obj.ParentID = objData.ParentID; - obj.OwnerID = objData.OwnerID; - obj.PCode = objData.PCode; - this.objects[localID].NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue)); - if (objData.PCode === PCode_1.PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) { - this.agent.localID = localID; - if (this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { - Object.keys(this.objectsByParent).forEach((objParentID) => { - const parent = parseInt(objParentID, 10); - if (parent !== this.agent.localID) { - let foundAvatars = false; - this.objectsByParent[parent].forEach((objID) => { - if (this.objects[objID]) { - const o = this.objects[objID]; - if (o.PCode === PCode_1.PCode.Avatar) { - foundAvatars = true; - } - } - }); - if (this.objects[parent]) { - const o = this.objects[parent]; - if (o.PCode === PCode_1.PCode.Avatar) { - foundAvatars = true; - } - } - if (!foundAvatars) { - this.deleteObject(parent); - } - } - }); - } - } - this.objectsByUUID[objData.FullID.toString()] = localID; - if (!this.objectsByParent[parentID]) { - this.objectsByParent[parentID] = []; - } - if (addToParentList) { - this.objectsByParent[parentID].push(localID); - } - if (objData.PCode !== PCode_1.PCode.Avatar && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { - if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID) { - this.deleteObject(localID); - return; - } - } - }); + this.objectUpdate(objectUpdate); break; case Message_1.Message.ObjectUpdateCached: const objectUpdateCached = packet.message; - const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage(); - rmo.AgentData = { - AgentID: this.agent.agentID, - SessionID: this.circuit.sessionID - }; - rmo.ObjectData = []; - objectUpdateCached.ObjectData.forEach((obj) => { - rmo.ObjectData.push({ - CacheMissType: 0, - ID: obj.ID - }); - }); - circuit.sendMessage(rmo, 0); + this.objectUpdateCached(objectUpdateCached); break; case Message_1.Message.ObjectUpdateCompressed: { const objectUpdateCompressed = packet.message; - for (const obj of objectUpdateCompressed.ObjectData) { - const flags = obj.UpdateFlags; - const buf = obj.Data; - let pos = 0; - const fullID = new UUID_1.UUID(buf, pos); - pos += 16; - const localID = buf.readUInt32LE(pos); - pos += 4; - const pcode = buf.readUInt8(pos++); - let newObj = false; - if (!this.objects[localID]) { - newObj = true; - this.objects[localID] = new GameObjectLite_1.GameObjectLite(); - } - const o = this.objects[localID]; - o.ID = localID; - o.PCode = pcode; - this.objectsByUUID[fullID.toString()] = localID; - o.FullID = fullID; - pos++; - pos = pos + 4; - pos++; - pos++; - pos = pos + 12; - pos = pos + 12; - pos = pos + 12; - const compressedflags = buf.readUInt32LE(pos); - pos = pos + 4; - o.OwnerID = new UUID_1.UUID(buf, pos); - pos += 16; - if (compressedflags & __1.CompressedFlags.HasAngularVelocity) { - pos = pos + 12; - } - if (compressedflags & __1.CompressedFlags.HasParent) { - const newParentID = buf.readUInt32LE(pos); - pos += 4; - let add = true; - if (!newObj) { - if (newParentID !== o.ParentID) { - const index = this.objectsByParent[o.ParentID].indexOf(localID); - if (index !== -1) { - this.objectsByParent[o.ParentID].splice(index, 1); - } - } - else { - add = false; - } - } - if (add) { - if (!this.objectsByParent[newParentID]) { - this.objectsByParent[newParentID] = []; - } - this.objectsByParent[newParentID].push(localID); - } - o.ParentID = newParentID; - } - if (pcode !== PCode_1.PCode.Avatar && newObj && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { - if (this.agent.localID !== 0 && o.ParentID !== this.agent.localID) { - this.deleteObject(localID); - return; - } - } - if (compressedflags & __1.CompressedFlags.Tree) { - pos++; - } - else if (compressedflags & __1.CompressedFlags.ScratchPad) { - const scratchPadSize = buf.readUInt8(pos++); - pos = pos + scratchPadSize; - } - if (compressedflags & __1.CompressedFlags.HasText) { - const result = Utils_1.Utils.BufferToString(buf, pos); - pos += result.readLength; - pos = pos + 4; - } - if (compressedflags & __1.CompressedFlags.MediaURL) { - const result = Utils_1.Utils.BufferToString(buf, pos); - pos += result.readLength; - } - if (compressedflags & __1.CompressedFlags.HasParticles) { - pos += 86; - } - pos = this.readExtraParams(buf, pos, o); - if (compressedflags & __1.CompressedFlags.HasSound) { - pos = pos + 16; - pos += 4; - pos++; - pos = pos + 4; - } - if (compressedflags & __1.CompressedFlags.HasNameValues) { - const result = Utils_1.Utils.BufferToString(buf, pos); - o.NameValue = this.parseNameValues(result.result); - pos += result.readLength; - } - pos++; - pos = pos + 2; - pos = pos + 2; - pos = pos + 12; - pos = pos + 2; - pos = pos + 2; - pos = pos + 2; - const textureEntryLength = buf.readUInt32LE(pos); - pos = pos + 4; - pos = pos + textureEntryLength; - if (compressedflags & __1.CompressedFlags.TextureAnimation) { - pos = pos + 4; - } - o.IsAttachment = (compressedflags & __1.CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; - } - ; + this.objectUpdateCompressed(objectUpdateCompressed); break; } case Message_1.Message.ImprovedTerseObjectUpdate: const objectUpdateTerse = packet.message; + this.objectUpdateTerse(objectUpdateTerse); break; case Message_1.Message.MultipleObjectUpdate: const multipleObjectUpdate = packet.message; - console.error('TODO: MultipleObjectUpdate'); + this.objectUpdateMultiple(multipleObjectUpdate); break; case Message_1.Message.KillObject: const killObj = packet.message; - killObj.ObjectData.forEach((obj) => { - const objectID = obj.ID; - this.deleteObject(objectID); - }); + this.killObject(killObj); break; } }); } + objectUpdate(objectUpdate) { + objectUpdate.ObjectData.forEach((objData) => { + const localID = objData.ID; + const parentID = objData.ParentID; + let addToParentList = true; + if (this.objects[localID]) { + if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) { + const ind = this.objectsByParent[parentID].indexOf(localID); + if (ind !== -1) { + this.objectsByParent[parentID].splice(ind, 1); + } + } + else { + addToParentList = false; + } + } + else { + this.objects[localID] = new GameObject_1.GameObject(); + } + const obj = this.objects[localID]; + obj.ID = objData.ID; + obj.FullID = objData.FullID; + obj.ParentID = objData.ParentID; + obj.OwnerID = objData.OwnerID; + obj.PCode = objData.PCode; + this.objects[localID].NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue)); + if (objData.PCode === PCode_1.PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) { + this.agent.localID = localID; + if (this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { + Object.keys(this.objectsByParent).forEach((objParentID) => { + const parent = parseInt(objParentID, 10); + if (parent !== this.agent.localID) { + let foundAvatars = false; + this.objectsByParent[parent].forEach((objID) => { + if (this.objects[objID]) { + const o = this.objects[objID]; + if (o.PCode === PCode_1.PCode.Avatar) { + foundAvatars = true; + } + } + }); + if (this.objects[parent]) { + const o = this.objects[parent]; + if (o.PCode === PCode_1.PCode.Avatar) { + foundAvatars = true; + } + } + if (!foundAvatars) { + this.deleteObject(parent); + } + } + }); + } + } + this.objectsByUUID[objData.FullID.toString()] = localID; + if (!this.objectsByParent[parentID]) { + this.objectsByParent[parentID] = []; + } + if (addToParentList) { + this.objectsByParent[parentID].push(localID); + } + if (objData.PCode !== PCode_1.PCode.Avatar && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { + if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID) { + this.deleteObject(localID); + return; + } + } + }); + } + objectUpdateCached(objectUpdateCached) { + const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage(); + rmo.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + rmo.ObjectData = []; + objectUpdateCached.ObjectData.forEach((obj) => { + rmo.ObjectData.push({ + CacheMissType: 0, + ID: obj.ID + }); + }); + this.circuit.sendMessage(rmo, 0); + } + objectUpdateCompressed(objectUpdateCompressed) { + for (const obj of objectUpdateCompressed.ObjectData) { + const flags = obj.UpdateFlags; + const buf = obj.Data; + let pos = 0; + const fullID = new UUID_1.UUID(buf, pos); + pos += 16; + const localID = buf.readUInt32LE(pos); + pos += 4; + const pcode = buf.readUInt8(pos++); + let newObj = false; + if (!this.objects[localID]) { + newObj = true; + this.objects[localID] = new GameObject_1.GameObject(); + } + const o = this.objects[localID]; + o.ID = localID; + o.PCode = pcode; + this.objectsByUUID[fullID.toString()] = localID; + o.FullID = fullID; + pos++; + pos = pos + 4; + pos++; + pos++; + pos = pos + 12; + pos = pos + 12; + pos = pos + 12; + const compressedflags = buf.readUInt32LE(pos); + pos = pos + 4; + o.OwnerID = new UUID_1.UUID(buf, pos); + pos += 16; + if (compressedflags & __1.CompressedFlags.HasAngularVelocity) { + pos = pos + 12; + } + if (compressedflags & __1.CompressedFlags.HasParent) { + const newParentID = buf.readUInt32LE(pos); + pos += 4; + let add = true; + if (!newObj) { + if (newParentID !== o.ParentID) { + const index = this.objectsByParent[o.ParentID].indexOf(localID); + if (index !== -1) { + this.objectsByParent[o.ParentID].splice(index, 1); + } + } + else { + add = false; + } + } + if (add) { + if (!this.objectsByParent[newParentID]) { + this.objectsByParent[newParentID] = []; + } + this.objectsByParent[newParentID].push(localID); + } + o.ParentID = newParentID; + } + if (pcode !== PCode_1.PCode.Avatar && newObj && this.options & __1.BotOptionFlags.StoreMyAttachmentsOnly) { + if (this.agent.localID !== 0 && o.ParentID !== this.agent.localID) { + this.deleteObject(localID); + return; + } + } + if (compressedflags & __1.CompressedFlags.Tree) { + pos++; + } + else if (compressedflags & __1.CompressedFlags.ScratchPad) { + const scratchPadSize = buf.readUInt8(pos++); + pos = pos + scratchPadSize; + } + if (compressedflags & __1.CompressedFlags.HasText) { + const result = Utils_1.Utils.BufferToString(buf, pos); + pos += result.readLength; + pos = pos + 4; + } + if (compressedflags & __1.CompressedFlags.MediaURL) { + const result = Utils_1.Utils.BufferToString(buf, pos); + pos += result.readLength; + } + if (compressedflags & __1.CompressedFlags.HasParticles) { + pos += 86; + } + pos = this.readExtraParams(buf, pos, o); + if (compressedflags & __1.CompressedFlags.HasSound) { + pos = pos + 16; + pos += 4; + pos++; + pos = pos + 4; + } + if (compressedflags & __1.CompressedFlags.HasNameValues) { + const result = Utils_1.Utils.BufferToString(buf, pos); + o.NameValue = this.parseNameValues(result.result); + pos += result.readLength; + } + pos++; + pos = pos + 2; + pos = pos + 2; + pos = pos + 12; + pos = pos + 2; + pos = pos + 2; + pos = pos + 2; + const textureEntryLength = buf.readUInt32LE(pos); + pos = pos + 4; + pos = pos + textureEntryLength; + if (compressedflags & __1.CompressedFlags.TextureAnimation) { + pos = pos + 4; + } + o.IsAttachment = (compressedflags & __1.CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; + } + } + objectUpdateTerse(objectUpdateTerse) { } + objectUpdateMultiple(objectUpdateMultiple) { } + killObject(killObj) { + killObj.ObjectData.forEach((obj) => { + const objectID = obj.ID; + this.deleteObject(objectID); + }); + } deleteObject(objectID) { if (this.objects[objectID]) { if (this.objectsByParent[objectID]) { @@ -264,6 +278,9 @@ class ObjectStoreLite { this.objectsByParent[parentID].splice(ind, 1); } } + if (this.rtree && this.objects[objectID].rtreeEntry !== undefined) { + this.rtree.remove(this.objects[objectID].rtreeEntry); + } delete this.objects[objectID]; } } @@ -322,11 +339,73 @@ class ObjectStoreLite { } shutdown() { this.objects = {}; + if (this.rtree) { + this.rtree.clear(); + } this.objectsByUUID = {}; this.objectsByParent = {}; } + findParent(go) { + if (go.ParentID !== 0 && this.objects[go.ParentID]) { + return this.findParent(this.objects[go.ParentID]); + } + else { + return go; + } + } + populateChildren(obj) { + obj.children = []; + obj.totalChildren = 0; + for (const child of this.getObjectsByParent(obj.ID)) { + obj.totalChildren++; + this.populateChildren(child); + if (child.totalChildren !== undefined) { + obj.totalChildren += child.totalChildren; + } + obj.children.push(child); + } + } + getNumberOfObjects() { + return Object.keys(this.objects).length; + } getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) { - throw new Error('GetObjectsInArea not available with the Lite object store.'); + if (!this.rtree) { + throw new Error('GetObjectsInArea not available with the Lite object store'); + } + const result = this.rtree.search({ + minX: minX, + maxX: maxX, + minY: minY, + maxY: maxY, + minZ: minZ, + maxZ: maxZ + }); + const found = {}; + const objs = []; + for (const obj of result) { + const o = obj; + const go = o.gameObject; + if (go.PCode !== PCode_1.PCode.Avatar && (go.IsAttachment === undefined || go.IsAttachment === false)) { + try { + const parent = this.findParent(go); + if (parent.PCode !== PCode_1.PCode.Avatar && (parent.IsAttachment === undefined || parent.IsAttachment === false)) { + const uuid = parent.FullID.toString(); + if (found[uuid] === undefined) { + found[uuid] = parent; + objs.push(parent); + } + } + } + catch (error) { + console.log('Failed to find parent for ' + go.FullID.toString()); + console.error(error); + } + } + } + for (const obj of objs) { + this.populateChildren(obj); + } + return objs; } getObjectByUUID(fullID) { if (fullID instanceof UUID_1.UUID) { @@ -344,6 +423,29 @@ class ObjectStoreLite { } return this.objects[localID]; } + insertIntoRtree(obj) { + if (!this.rtree) { + return; + } + if (obj.rtreeEntry !== undefined) { + this.rtree.remove(obj.rtreeEntry); + } + if (!obj.Scale || !obj.Position || !obj.Rotation) { + return; + } + const normalizedScale = obj.Scale.multiplyByQuat(obj.Rotation); + const bounds = { + minX: obj.Position.x - (normalizedScale.x / 2), + maxX: obj.Position.x + (normalizedScale.x / 2), + minY: obj.Position.y - (normalizedScale.y / 2), + maxY: obj.Position.y + (normalizedScale.y / 2), + minZ: obj.Position.z - (normalizedScale.z / 2), + maxZ: obj.Position.z + (normalizedScale.z / 2), + gameObject: obj + }; + obj.rtreeEntry = bounds; + this.rtree.insert(bounds); + } } exports.ObjectStoreLite = ObjectStoreLite; //# sourceMappingURL=ObjectStoreLite.js.map \ No newline at end of file diff --git a/dist/classes/ObjectStoreLite.js.map b/dist/classes/ObjectStoreLite.js.map index 364197c..e855141 100644 --- a/dist/classes/ObjectStoreLite.js.map +++ b/dist/classes/ObjectStoreLite.js.map @@ -1 +1 @@ -{"version":3,"file":"ObjectStoreLite.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreLite.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"ObjectStoreLite.js","sourceRoot":"","sources":["../../lib/classes/ObjectStoreLite.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/classes/commands/AgentCommands.d.ts b/dist/classes/commands/AgentCommands.d.ts index 6f21d6e..698766a 100644 --- a/dist/classes/commands/AgentCommands.d.ts +++ b/dist/classes/commands/AgentCommands.d.ts @@ -1,7 +1,10 @@ import { UUID } from '../UUID'; import { CommandsBase } from './CommandsBase'; +import { Vector3 } from '../Vector3'; export declare class AgentCommands extends CommandsBase { private animate; startAnimations(anim: UUID[]): Promise; stopAnimations(anim: UUID[]): Promise; + setCamera(position: Vector3, lookAt: Vector3, viewDistance?: number, leftAxis?: Vector3, upAxis?: Vector3): void; + setViewDistance(viewDistance: number): void; } diff --git a/dist/classes/commands/AgentCommands.js b/dist/classes/commands/AgentCommands.js index 880ad92..dafa587 100644 --- a/dist/classes/commands/AgentCommands.js +++ b/dist/classes/commands/AgentCommands.js @@ -41,6 +41,22 @@ class AgentCommands extends CommandsBase_1.CommandsBase { return yield this.animate(anim, false); }); } + setCamera(position, lookAt, viewDistance, leftAxis, upAxis) { + this.agent.cameraCenter = position; + this.agent.cameraLookAt = lookAt; + if (viewDistance !== undefined) { + this.agent.cameraFar = viewDistance; + } + if (leftAxis !== undefined) { + this.agent.cameraLeftAxis = leftAxis; + } + if (upAxis !== undefined) { + this.agent.cameraUpAxis = upAxis; + } + } + setViewDistance(viewDistance) { + this.agent.cameraFar = viewDistance; + } } exports.AgentCommands = AgentCommands; //# sourceMappingURL=AgentCommands.js.map \ No newline at end of file diff --git a/dist/classes/commands/AgentCommands.js.map b/dist/classes/commands/AgentCommands.js.map index 300ef48..4a9e31e 100644 --- a/dist/classes/commands/AgentCommands.js.map +++ b/dist/classes/commands/AgentCommands.js.map @@ -1 +1 @@ -{"version":3,"file":"AgentCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/AgentCommands.ts"],"names":[],"mappings":";;;;;;;;;;AACA,+DAAiE;AACjE,yDAAoD;AACpD,iDAA4C;AAE5C,MAAa,aAAc,SAAQ,2BAAY;IAE7B,OAAO,CAAC,IAAY,EAAE,GAAY;;YAG5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,sCAAqB,EAAE,CAAC;YAC/C,UAAU,CAAC,SAAS,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC/B,CAAC;YACF,UAAU,CAAC,uBAAuB,GAAG,EAAE,CAAC;YACxC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAEf,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;oBAC1B,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,GAAG;iBACjB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,yBAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAClG,CAAC;KAAA;IAEK,eAAe,CAAC,IAAY;;YAE9B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,cAAc,CAAC,IAAY;;YAE7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;CACJ;AAjCD,sCAiCC"} \ No newline at end of file +{"version":3,"file":"AgentCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/AgentCommands.ts"],"names":[],"mappings":";;;;;;;;;;AACA,+DAAiE;AACjE,yDAAoD;AACpD,iDAA4C;AAG5C,MAAa,aAAc,SAAQ,2BAAY;IAE7B,OAAO,CAAC,IAAY,EAAE,GAAY;;YAG5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,sCAAqB,EAAE,CAAC;YAC/C,UAAU,CAAC,SAAS,GAAG;gBACnB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;gBAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;aAC/B,CAAC;YACF,UAAU,CAAC,uBAAuB,GAAG,EAAE,CAAC;YACxC,UAAU,CAAC,aAAa,GAAG,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAEf,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC;oBAC1B,MAAM,EAAE,CAAC;oBACT,SAAS,EAAE,GAAG;iBACjB,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,yBAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAClG,CAAC;KAAA;IAEK,eAAe,CAAC,IAAY;;YAE9B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEK,cAAc,CAAC,IAAY;;YAE7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;IAED,SAAS,CAAC,QAAiB,EAAE,MAAe,EAAE,YAAqB,EAAE,QAAkB,EAAE,MAAgB;QAErG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;QACjC,IAAI,YAAY,KAAK,SAAS,EAC9B;YACI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;SACvC;QACD,IAAI,QAAQ,KAAK,SAAS,EAC1B;YACI,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;SACxC;QACD,IAAI,MAAM,KAAK,SAAS,EACxB;YACI,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC;SACpC;IACL,CAAC;IAED,eAAe,CAAC,YAAoB;QAEhC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC;IACxC,CAAC;CACJ;AAxDD,sCAwDC"} \ No newline at end of file diff --git a/dist/classes/commands/RegionCommands.d.ts b/dist/classes/commands/RegionCommands.d.ts index f62b704..6c23fc4 100644 --- a/dist/classes/commands/RegionCommands.d.ts +++ b/dist/classes/commands/RegionCommands.d.ts @@ -2,10 +2,15 @@ import { CommandsBase } from './CommandsBase'; import { UUID } from '../UUID'; import * as Long from 'long'; import { Vector3 } from '../..'; -import { IGameObject } from '../interfaces/IGameObject'; +import { GameObject } from '../GameObject'; +import { ObjectPropertiesMessage } from '../messages/ObjectProperties'; export declare class RegionCommands extends CommandsBase { getRegionHandle(regionID: UUID): Promise; - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): IGameObject[]; + deselectObjects(objects: GameObject[]): Promise; + countObjects(): number; + selectObjects(objects: GameObject[]): Promise; + private resolveObjects; + getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number, resolve?: boolean): Promise; grabObject(localID: number | UUID, grabOffset?: Vector3, uvCoordinate?: Vector3, stCoordinate?: Vector3, faceIndex?: number, position?: Vector3, normal?: Vector3, binormal?: Vector3): Promise; deGrabObject(localID: number | UUID, grabOffset?: Vector3, uvCoordinate?: Vector3, stCoordinate?: Vector3, faceIndex?: number, position?: Vector3, normal?: Vector3, binormal?: Vector3): Promise; dragGrabbedObject(localID: number | UUID, grabPosition: Vector3, grabOffset?: Vector3, uvCoordinate?: Vector3, stCoordinate?: Vector3, faceIndex?: number, position?: Vector3, normal?: Vector3, binormal?: Vector3): Promise; diff --git a/dist/classes/commands/RegionCommands.js b/dist/classes/commands/RegionCommands.js index 383b4a2..1c620c1 100644 --- a/dist/classes/commands/RegionCommands.js +++ b/dist/classes/commands/RegionCommands.js @@ -17,6 +17,10 @@ const __1 = require("../.."); const ObjectGrab_1 = require("../messages/ObjectGrab"); const ObjectDeGrab_1 = require("../messages/ObjectDeGrab"); const ObjectGrabUpdate_1 = require("../messages/ObjectGrabUpdate"); +const ObjectSelect_1 = require("../messages/ObjectSelect"); +const Utils_1 = require("../Utils"); +const ObjectDeselect_1 = require("../messages/ObjectDeselect"); +const PCode_1 = require("../../enums/PCode"); class RegionCommands extends CommandsBase_1.CommandsBase { getRegionHandle(regionID) { return __awaiter(this, void 0, void 0, function* () { @@ -37,8 +41,216 @@ class RegionCommands extends CommandsBase_1.CommandsBase { return responseMsg.ReplyBlock.RegionHandle; }); } - getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) { - return this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ); + deselectObjects(objects) { + return __awaiter(this, void 0, void 0, function* () { + const selectLimit = 255; + if (objects.length > selectLimit) { + for (let x = 0; x < objects.length; x += selectLimit) { + const selectList = []; + for (let y = 0; y < selectLimit; y++) { + if (y < objects.length) { + selectList.push(objects[x + y]); + } + } + yield this.deselectObjects(selectList); + } + return; + } + else { + const deselectObject = new ObjectDeselect_1.ObjectDeselectMessage(); + deselectObject.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + deselectObject.ObjectData = []; + const uuidMap = {}; + for (const obj of objects) { + const uuidStr = obj.FullID.toString(); + if (!uuidMap[uuidStr]) { + uuidMap[uuidStr] = obj; + deselectObject.ObjectData.push({ + ObjectLocalID: obj.ID + }); + } + } + const sequenceID = this.circuit.sendMessage(deselectObject, __1.PacketFlags.Reliable); + return yield this.circuit.waitForAck(sequenceID, 10000); + } + }); + } + countObjects() { + return this.currentRegion.objects.getNumberOfObjects(); + } + selectObjects(objects) { + return __awaiter(this, void 0, void 0, function* () { + const selectLimit = 255; + if (objects.length > selectLimit) { + for (let x = 0; x < objects.length; x += selectLimit) { + const selectList = []; + for (let y = 0; y < selectLimit; y++) { + if (y < objects.length) { + selectList.push(objects[x + y]); + } + } + yield this.selectObjects(selectList); + } + return; + } + else { + const selectObject = new ObjectSelect_1.ObjectSelectMessage(); + selectObject.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + selectObject.ObjectData = []; + const uuidMap = {}; + for (const obj of objects) { + const uuidStr = obj.FullID.toString(); + if (!uuidMap[uuidStr]) { + uuidMap[uuidStr] = obj; + selectObject.ObjectData.push({ + ObjectLocalID: obj.ID + }); + } + } + let resolved = 0; + this.circuit.sendMessage(selectObject, __1.PacketFlags.Reliable); + return yield this.circuit.waitForMessage(Message_1.Message.ObjectProperties, 10000, (propertiesMessage) => { + let found = false; + for (const objData of propertiesMessage.ObjectData) { + const objDataUUID = objData.ObjectID.toString(); + if (uuidMap[objDataUUID] !== undefined) { + resolved++; + const obj = uuidMap[objDataUUID]; + obj.creatorID = objData.CreatorID; + obj.creationDate = objData.CreationDate; + obj.baseMask = objData.BaseMask; + obj.ownerMask = objData.OwnerMask; + obj.groupMask = objData.GroupMask; + obj.everyoneMask = objData.EveryoneMask; + obj.nextOwnerMask = objData.NextOwnerMask; + obj.ownershipCost = objData.OwnershipCost; + obj.saleType = objData.SaleType; + obj.salePrice = objData.SalePrice; + obj.aggregatePerms = objData.AggregatePerms; + obj.aggregatePermTextures = objData.AggregatePermTextures; + obj.aggregatePermTexturesOwner = objData.AggregatePermTexturesOwner; + obj.category = objData.Category; + obj.inventorySerial = objData.InventorySerial; + obj.itemID = objData.ItemID; + obj.folderID = objData.FolderID; + obj.fromTaskID = objData.FromTaskID; + obj.lastOwnerID = objData.LastOwnerID; + obj.name = Utils_1.Utils.BufferToStringSimple(objData.Name); + obj.description = Utils_1.Utils.BufferToStringSimple(objData.Description); + obj.touchName = Utils_1.Utils.BufferToStringSimple(objData.TouchName); + obj.sitName = Utils_1.Utils.BufferToStringSimple(objData.SitName); + obj.textureID = Utils_1.Utils.BufferToStringSimple(objData.TextureID); + obj.resolvedAt = new Date().getTime() / 1000; + delete uuidMap[objDataUUID]; + found = true; + } + } + if (Object.keys(uuidMap).length === 0) { + return FilterResponse_1.FilterResponse.Finish; + } + if (!found) { + return FilterResponse_1.FilterResponse.NoMatch; + } + else { + return FilterResponse_1.FilterResponse.Match; + } + }); + } + }); + } + resolveObjects(objects) { + return __awaiter(this, void 0, void 0, function* () { + const objs = {}; + const scanObject = function (obj) { + const localID = obj.ID; + if (!objs[localID]) { + objs[localID] = obj; + if (obj.children) { + for (const child of obj.children) { + scanObject(child); + } + } + } + }; + for (const obj of objects) { + scanObject(obj); + } + const resolveTime = new Date().getTime() / 1000; + let objectList = []; + let totalRemaining = 0; + try { + for (const k of Object.keys(objs)) { + const ky = parseInt(k, 10); + if (objs[ky] !== undefined) { + const o = objs[ky]; + if (o.resolvedAt === undefined) { + o.resolvedAt = 0; + } + if (o.resolvedAt !== undefined && o.resolvedAt < resolveTime && o.PCode !== PCode_1.PCode.Avatar) { + objs[ky].name = undefined; + totalRemaining++; + objectList.push(objs[ky]); + if (objectList.length > 254) { + try { + yield this.selectObjects(objectList); + yield this.deselectObjects(objectList); + for (const chk of objectList) { + if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime) { + totalRemaining--; + } + } + } + catch (ignore) { + } + finally { + objectList = []; + } + } + } + } + } + if (objectList.length > 0) { + yield this.selectObjects(objectList); + yield this.deselectObjects(objectList); + for (const chk of objectList) { + if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime) { + totalRemaining--; + } + } + } + } + catch (ignore) { + } + finally { + if (totalRemaining < 1) { + totalRemaining = 0; + for (const obj of objectList) { + if (obj.resolvedAt === undefined || obj.resolvedAt < resolveTime) { + totalRemaining++; + } + } + if (totalRemaining > 0) { + console.error(totalRemaining + ' objects could not be resolved'); + } + } + } + }); + } + getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ, resolve = false) { + return __awaiter(this, void 0, void 0, function* () { + const objs = this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ); + if (resolve) { + console.log('Resolving ' + objs.length + ' objects'); + yield this.resolveObjects(objs); + } + return objs; + }); } grabObject(localID, grabOffset = __1.Vector3.getZero(), uvCoordinate = __1.Vector3.getZero(), stCoordinate = __1.Vector3.getZero(), faceIndex = 0, position = __1.Vector3.getZero(), normal = __1.Vector3.getZero(), binormal = __1.Vector3.getZero()) { return __awaiter(this, void 0, void 0, function* () { diff --git a/dist/classes/commands/RegionCommands.js.map b/dist/classes/commands/RegionCommands.js.map index 501f90c..a9ba333 100644 --- a/dist/classes/commands/RegionCommands.js.map +++ b/dist/classes/commands/RegionCommands.js.map @@ -1 +1 @@ -{"version":3,"file":"RegionCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/RegionCommands.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"RegionCommands.js","sourceRoot":"","sources":["../../../lib/classes/commands/RegionCommands.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/classes/interfaces/IObjectStore.d.ts b/dist/classes/interfaces/IObjectStore.d.ts index a7048e4..3df6ff7 100644 --- a/dist/classes/interfaces/IObjectStore.d.ts +++ b/dist/classes/interfaces/IObjectStore.d.ts @@ -1,12 +1,12 @@ -import { IGameObject } from './IGameObject'; import { RBush3D } from 'rbush-3d/dist'; -import { GameObjectFull } from '../GameObjectFull'; import { UUID } from '../UUID'; +import { GameObject } from '../GameObject'; export interface IObjectStore { rtree?: RBush3D; - getObjectsByParent(parentID: number): IGameObject[]; + getObjectsByParent(parentID: number): GameObject[]; shutdown(): void; - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[]; - getObjectByUUID(fullID: UUID): IGameObject; - getObjectByLocalID(ID: number): IGameObject; + getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[]; + getObjectByUUID(fullID: UUID): GameObject; + getObjectByLocalID(ID: number): GameObject; + getNumberOfObjects(): number; } diff --git a/dist/classes/interfaces/ITreeBoundingBox.d.ts b/dist/classes/interfaces/ITreeBoundingBox.d.ts index 4695581..166e148 100644 --- a/dist/classes/interfaces/ITreeBoundingBox.d.ts +++ b/dist/classes/interfaces/ITreeBoundingBox.d.ts @@ -1,5 +1,5 @@ import { BBox } from 'rbush-3d/dist'; -import { IGameObject } from './IGameObject'; +import { GameObject } from '../GameObject'; export interface ITreeBoundingBox extends BBox { - gameObject: IGameObject; + gameObject: GameObject; } diff --git a/lib/classes/Agent.ts b/lib/classes/Agent.ts index 42a6dca..d44e3f2 100644 --- a/lib/classes/Agent.ts +++ b/lib/classes/Agent.ts @@ -19,9 +19,9 @@ import {RezSingleAttachmentFromInvMessage} from './messages/RezSingleAttachmentF import {AttachmentPoint} from '../enums/AttachmentPoint'; import {Utils} from './Utils'; import {ClientEvents} from './ClientEvents'; -import {IGameObject} from './interfaces/IGameObject'; import Timer = NodeJS.Timer; import {ControlFlags, GroupChatSessionAgentListEvent, AgentFlags, PacketFlags, AssetType} from '..'; +import {GameObject} from './GameObject'; export class Agent { @@ -53,7 +53,11 @@ export class Agent uiFlags: { 'allowFirstLife'?: boolean } = {}; - lookAt: Vector3; + cameraLookAt: Vector3 = new Vector3([0.979546, 0.105575, -0.171303]); + cameraCenter: Vector3 = new Vector3([199.58, 203.95, 24.304]); + cameraLeftAxis: Vector3 = new Vector3([-1.0, 0.0, 0]); + cameraUpAxis: Vector3 = new Vector3([0.0, 0.0, 1.0]); + cameraFar = 1; maxGroups: number; agentFlags: number; startLocation: string; @@ -164,11 +168,11 @@ export class Agent HeadRotation: Quaternion.getIdentity(), BodyRotation: Quaternion.getIdentity(), State: AgentState.None, - CameraCenter: new Vector3([199.58, 203.95, 24.304]), - CameraAtAxis: new Vector3([0.979546, 0.105575, -0.171303]), - CameraLeftAxis: new Vector3([-0.107158, 0.994242, 0]), - CameraUpAxis: new Vector3([0.170316, 0.018357, 0.985218]), - Far: 128, + CameraCenter: this.cameraCenter, + CameraAtAxis: this.cameraLookAt, + CameraLeftAxis: this.cameraLeftAxis, + CameraUpAxis: this.cameraUpAxis, + Far: this.cameraFar, ControlFlags: this.controlFlags, Flags: AgentFlags.None }; @@ -266,7 +270,7 @@ export class Agent if (item.type === 6) { let found = false; - wornObjects.forEach((obj: IGameObject) => + wornObjects.forEach((obj: GameObject) => { if (obj.hasNameValueEntry('AttachItemID')) { diff --git a/lib/classes/EventQueueClient.ts b/lib/classes/EventQueueClient.ts index b0314f1..9d52ff5 100644 --- a/lib/classes/EventQueueClient.ts +++ b/lib/classes/EventQueueClient.ts @@ -366,6 +366,10 @@ export class EventQueueClient } break; } + case 'ObjectPhysicsProperties': + { + break; + } case 'TeleportFinish': { const info = event['body']['Info'][0]; diff --git a/lib/classes/GameObject.ts b/lib/classes/GameObject.ts new file mode 100644 index 0000000..ea2b13a --- /dev/null +++ b/lib/classes/GameObject.ts @@ -0,0 +1,130 @@ +import {Vector3} from './Vector3'; +import {UUID} from './UUID'; +import {Quaternion} from './Quaternion'; +import {Tree} from '../enums/Tree'; +import {SoundFlags} from '..'; +import {Vector4} from './Vector4'; +import {TextureEntry} from './TextureEntry'; +import {Color4} from './Color4'; +import {ParticleSystem} from './ParticleSystem'; +import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox'; +import {NameValue} from './NameValue'; +import {PCode} from '../enums/PCode'; +import {Utils} from './Utils'; +import * as Long from 'long'; + +export class GameObject +{ + creatorID?: UUID; + creationDate?: Long; + baseMask?: number; + ownerMask?: number; + groupMask?: number; + everyoneMask?: number; + nextOwnerMask?: number; + ownershipCost?: number; + saleType?: number; + salePrice?: number; + aggregatePerms?: number; + aggregatePermTextures?: number; + aggregatePermTexturesOwner?: number; + category: number; + inventorySerial: number; + itemID: UUID; + folderID: UUID; + fromTaskID: UUID; + lastOwnerID: UUID; + name?: string; + description?: string; + touchName?: string; + sitName?: string; + textureID?: string; + resolvedAt?: number; + totalChildren?: number; + + + children?: GameObject[]; + rtreeEntry?: ITreeBoundingBox; + ID = 0; + FullID = UUID.random(); + ParentID = 0; + OwnerID = UUID.zero(); + IsAttachment = false; + NameValue: {[key: string]: NameValue} = {}; + PCode: PCode = PCode.None; + + State?: number; + CRC?: number; + Material?: number; + ClickAction?: number; + Scale?: Vector3; + ObjectData?: Buffer; + UpdateFlags?: number; + Flags?: number; + PathCurve?: number; + ProfileCurve?: number; + PathBegin?: number; + PathEnd?: number; + PathScaleX?: number; + PathScaleY?: number; + PathShearX?: number; + PathShearY?: number; + PathTwist?: number; + PathTwistBegin?: number; + PathRadiusOffset?: number; + PathTaperX?: number; + PathTaperY?: number; + PathRevolutions?: number; + PathSkew?: number; + ProfileBegin?: number; + ProfileEnd?: number; + ProfileHollow?: number; + TextureEntry?: TextureEntry; + TextureAnim?: Buffer; + Data?: Buffer; + Text?: string; + TextColor?: Color4; + MediaURL?: string; + PSBlock?: Buffer; + JointType?: number; + JointPivot?: Vector3; + JointAxisOrAnchor?: Vector3; + Position?: Vector3; + Rotation?: Quaternion; + CollisionPlane?: Vector4; + Velocity?: Vector3; + Acceleration?: Vector3; + AngularVelocity?: Vector3; + TreeSpecies?: Tree; + Sound?: UUID; + SoundGain?: number; + SoundFlags?: SoundFlags; + SoundRadius?: number; + Particles?: ParticleSystem; + + constructor() + { + this.Position = Vector3.getZero(); + this.Rotation = Quaternion.getIdentity(); + this.AngularVelocity = Vector3.getZero(); + this.TreeSpecies = 0; + this.SoundFlags = 0; + this.SoundRadius = 1.0; + this.SoundGain = 1.0; + this.ParentID = 0; + } + + hasNameValueEntry(key: string): boolean + { + return this.NameValue[key] !== undefined; + } + + getNameValueEntry(key: string): string + { + if (this.NameValue[key]) + { + return this.NameValue[key].value; + } + return ''; + } +} diff --git a/lib/classes/GameObjectFull.ts b/lib/classes/GameObjectFull.ts deleted file mode 100644 index dba0dea..0000000 --- a/lib/classes/GameObjectFull.ts +++ /dev/null @@ -1,104 +0,0 @@ -import {Vector3} from './Vector3'; -import {UUID} from './UUID'; -import {PCode} from '../enums/PCode'; -import {Quaternion} from './Quaternion'; -import {Tree} from '../enums/Tree'; -import {NameValue} from './NameValue'; -import {IGameObject} from './interfaces/IGameObject'; -import {SoundFlags} from '..'; -import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox'; -import {Vector4} from './Vector4'; -import {TextureEntry} from './TextureEntry'; -import {Color4} from './Color4'; -import {ParticleSystem} from './ParticleSystem'; - -export class GameObjectFull implements IGameObject -{ - rtreeEntry?: ITreeBoundingBox; - ID: number; - State: number; - FullID: UUID; - CRC: number; - PCode: PCode; - Material: number; - ClickAction: number; - Scale: Vector3; - ObjectData: Buffer; - ParentID: number; - UpdateFlags: number; - Flags: number; - PathCurve: number; - ProfileCurve: number; - PathBegin: number; - PathEnd: number; - PathScaleX: number; - PathScaleY: number; - PathShearX: number; - PathShearY: number; - PathTwist: number; - PathTwistBegin: number; - PathRadiusOffset: number; - PathTaperX: number; - PathTaperY: number; - PathRevolutions: number; - PathSkew: number; - ProfileBegin: number; - ProfileEnd: number; - ProfileHollow: number; - TextureEntry: TextureEntry; - TextureAnim: Buffer; - Data: Buffer; - Text: string; - TextColor: Color4; - MediaURL: string; - PSBlock: Buffer; - OwnerID: UUID; - JointType: number; - JointPivot: Vector3; - JointAxisOrAnchor: Vector3; - Position: Vector3; - Rotation: Quaternion; - CollisionPlane: Vector4; - Velocity: Vector3; - Acceleration: Vector3; - AngularVelocity: Vector3; - TreeSpecies: Tree; - Sound: UUID; - SoundGain: number; - SoundFlags: SoundFlags; - SoundRadius: number; - IsAttachment: boolean; - NameValue: {[key: string]: NameValue}; - Particles: ParticleSystem; - constructor() - { - this.Position = Vector3.getZero(); - this.Rotation = Quaternion.getIdentity(); - this.IsAttachment = false; - this.NameValue = {}; - this.AngularVelocity = Vector3.getZero(); - this.TreeSpecies = 0; - this.SoundFlags = 0; - this.SoundRadius = 1.0; - this.SoundGain = 1.0; - this.ParentID = 0; - } - - hasNameValueEntry(key: string): boolean - { - if (this.NameValue['AttachItemID']) - { - return true; - } - return false; - } - - getNameValueEntry(key: string): string - { - if (this.NameValue['AttachItemID']) - { - return this.NameValue['AttachItemID'].value; - } - return ''; - } -} diff --git a/lib/classes/GameObjectLite.ts b/lib/classes/GameObjectLite.ts deleted file mode 100644 index c8bcbfe..0000000 --- a/lib/classes/GameObjectLite.ts +++ /dev/null @@ -1,35 +0,0 @@ -import {UUID} from './UUID'; -import {IGameObject} from './interfaces/IGameObject'; -import {NameValue} from './NameValue'; -import {PCode} from '../enums/PCode'; -import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox'; - -export class GameObjectLite implements IGameObject -{ - rtreeEntry?: ITreeBoundingBox; - ID: number; - FullID: UUID; - ParentID: number; - OwnerID: UUID; - IsAttachment: boolean; - NameValue: {[key: string]: NameValue}; - PCode: PCode; - constructor() - { - this.IsAttachment = false; - } - - hasNameValueEntry(key: string): boolean - { - return this.NameValue['AttachItemID'] !== undefined; - } - - getNameValueEntry(key: string): string - { - if (this.NameValue['AttachItemID']) - { - return this.NameValue['AttachItemID'].value; - } - return ''; - } -} diff --git a/lib/classes/LoginResponse.ts b/lib/classes/LoginResponse.ts index 94f4f48..ba5e7c9 100644 --- a/lib/classes/LoginResponse.ts +++ b/lib/classes/LoginResponse.ts @@ -246,7 +246,7 @@ export class LoginResponse }); break; case 'look_at': - this.agent.lookAt = LoginResponse.parseVector3(val); + this.agent.cameraLookAt = LoginResponse.parseVector3(val); break; case 'openid_url': this.agent.openID.url = String(val); diff --git a/lib/classes/ObjectStoreFull.ts b/lib/classes/ObjectStoreFull.ts index 31d2be5..3ae1d2d 100644 --- a/lib/classes/ObjectStoreFull.ts +++ b/lib/classes/ObjectStoreFull.ts @@ -1,817 +1,554 @@ import {Circuit} from './Circuit'; -import {Packet} from './Packet'; -import {Message} from '../enums/Message'; import {ObjectUpdateMessage} from './messages/ObjectUpdate'; import {ObjectUpdateCachedMessage} from './messages/ObjectUpdateCached'; import {ObjectUpdateCompressedMessage} from './messages/ObjectUpdateCompressed'; import {ImprovedTerseObjectUpdateMessage} from './messages/ImprovedTerseObjectUpdate'; -import {MultipleObjectUpdateMessage} from './messages/MultipleObjectUpdate'; import {RequestMultipleObjectsMessage} from './messages/RequestMultipleObjects'; import {Agent} from './Agent'; import {UUID} from './UUID'; import {Quaternion} from './Quaternion'; import {Vector3} from './Vector3'; -import {ExtraParamType} from '../enums/ExtraParamType'; import {Utils} from './Utils'; import {PCode} from '../enums/PCode'; -import {NameValue} from './NameValue'; import {ClientEvents} from './ClientEvents'; -import {KillObjectMessage} from './messages/KillObject'; import {IObjectStore} from './interfaces/IObjectStore'; -import {GameObjectFull} from './GameObjectFull'; -import {IGameObject} from './interfaces/IGameObject'; import {BotOptionFlags, CompressedFlags} from '..'; import {RBush3D} from 'rbush-3d/dist'; -import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox'; import {Vector4} from './Vector4'; import {TextureEntry} from './TextureEntry'; import {Color4} from './Color4'; import {ParticleSystem} from './ParticleSystem'; +import {GameObject} from './GameObject'; +import {ObjectStoreLite} from './ObjectStoreLite'; -export class ObjectStoreFull implements IObjectStore +export class ObjectStoreFull extends ObjectStoreLite implements IObjectStore { - private circuit: Circuit; - private agent: Agent; - private objects: { [key: number]: GameObjectFull } = {}; - private objectsByUUID: { [key: string]: number } = {}; - private objectsByParent: { [key: number]: number[] } = {}; - private clientEvents: ClientEvents; - private options: BotOptionFlags; - rtree: RBush3D; + rtree?: RBush3D; constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags) { - agent.localID = 0; + super(circuit, agent, clientEvents, options); this.rtree = new RBush3D(); - this.options = options; - this.clientEvents = clientEvents; - this.circuit = circuit; - this.agent = agent; - this.circuit.subscribeToMessages([ - Message.ObjectUpdate, - Message.ObjectUpdateCached, - Message.ObjectUpdateCompressed, - Message.ImprovedTerseObjectUpdate, - Message.MultipleObjectUpdate, - Message.KillObject - ], (packet: Packet) => + } + + protected objectUpdate(objectUpdate: ObjectUpdateMessage) + { + for (const objData of objectUpdate.ObjectData) { - switch (packet.message.id) + const localID = objData.ID; + const parentID = objData.ParentID; + let addToParentList = true; + + if (this.objects[localID]) { - case Message.ObjectUpdate: - const objectUpdate = packet.message as ObjectUpdateMessage; - for (const objData of objectUpdate.ObjectData) + if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) + { + const ind = this.objectsByParent[parentID].indexOf(localID); + if (ind !== -1) { - const localID = objData.ID; - const parentID = objData.ParentID; - let addToParentList = true; + this.objectsByParent[parentID].splice(ind, 1); + } + } + else + { + addToParentList = false; + } + } + else + { + this.objects[localID] = new GameObject(); + } - if (this.objects[localID]) - { - if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) - { - const ind = this.objectsByParent[parentID].indexOf(localID); - if (ind !== -1) - { - this.objectsByParent[parentID].splice(ind, 1); - } - } - else - { - addToParentList = false; - } - } - else - { - this.objects[localID] = new GameObjectFull(); - } + const obj = this.objects[localID]; + obj.ID = objData.ID; + obj.State = objData.State; + obj.FullID = objData.FullID; + obj.CRC = objData.CRC; + obj.PCode = objData.PCode; + obj.Material = objData.Material; + obj.ClickAction = objData.ClickAction; + obj.Scale = objData.Scale; + obj.ObjectData = objData.ObjectData; + const data: Buffer = objData.ObjectData; + let dataPos = 0; - const obj = this.objects[localID]; - obj.ID = objData.ID; - obj.State = objData.State; - obj.FullID = objData.FullID; - obj.CRC = objData.CRC; - obj.PCode = objData.PCode; - obj.Material = objData.Material; - obj.ClickAction = objData.ClickAction; - obj.Scale = objData.Scale; - obj.ObjectData = objData.ObjectData; - const data: Buffer = objData.ObjectData; - let dataPos = 0; + // noinspection FallThroughInSwitchStatementJS, TsLint + switch (data.length) + { + case 76: + // Avatar collision normal; + obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos); + dataPos += 16; + case 60: + // Position + obj.Position = new Vector3(objData.ObjectData, dataPos); + dataPos += 12; + obj.Velocity = new Vector3(objData.ObjectData, dataPos); + dataPos += 12; + obj.Acceleration = new Vector3(objData.ObjectData, dataPos); + dataPos += 12; + obj.Rotation = new Quaternion(objData.ObjectData, dataPos); + dataPos += 12; + obj.AngularVelocity = new Vector3(objData.ObjectData, dataPos); + dataPos += 12; + break; + case 48: + obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos); + dataPos += 16; + case 32: + obj.Position = new Vector3([ + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -0.5 * 256.0, 1.5 * 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -0.5 * 256.0, 1.5 * 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 3.0 * 256.0) + ]); + dataPos += 6; + obj.Velocity = new Vector3([ + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) + ]); + dataPos += 6; + obj.Acceleration = new Vector3([ + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) + ]); + dataPos += 6; + obj.Rotation = new Quaternion([ + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -1.0, 1.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -1.0, 1.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0) + ]); + dataPos += 8; + obj.AngularVelocity = new Vector3([ + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), + Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) + ]); + dataPos += 6; + break; + case 16: + obj.Position = new Vector3([ + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + obj.Velocity = new Vector3([ + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + obj.Acceleration = new Vector3([ + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + obj.Rotation = new Quaternion([ + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0) + ]); + obj.AngularVelocity = new Vector3([ + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), + Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) + ]); + break; + } + obj.ParentID = objData.ParentID; + obj.Flags = objData.UpdateFlags; + obj.PathCurve = objData.PathCurve; + obj.ProfileCurve = objData.ProfileCurve; + obj.PathBegin = objData.PathBegin; + obj.PathEnd = objData.PathEnd; + obj.PathScaleX = objData.PathScaleX; + obj.PathScaleY = objData.PathScaleY; + obj.PathShearX = objData.PathShearX; + obj.PathShearY = objData.PathShearY; + obj.PathTwist = objData.PathTwist; + obj.PathTwistBegin = objData.PathTwistBegin; + obj.PathRadiusOffset = objData.PathRadiusOffset; + obj.PathTaperX = objData.PathTaperX; + obj.PathTaperY = objData.PathTaperY; + obj.PathRevolutions = objData.PathRevolutions; + obj.PathSkew = objData.PathSkew; + obj.ProfileBegin = objData.ProfileBegin; + obj.ProfileEnd = objData.ProfileEnd; + obj.ProfileHollow = objData.ProfileHollow; + obj.TextureEntry = new TextureEntry(objData.TextureEntry); + obj.TextureAnim = objData.TextureAnim; + const pcodeData = objData.Data; + obj.Text = Utils.BufferToStringSimple(objData.Text); + obj.TextColor = new Color4(objData.TextColor, 0, false, true); + obj.MediaURL = Utils.BufferToStringSimple(objData.MediaURL); + obj.PSBlock = objData.PSBlock; + obj.Sound = objData.Sound; + obj.OwnerID = objData.OwnerID; + obj.SoundGain = objData.Gain; + obj.SoundFlags = objData.Flags; + obj.SoundRadius = objData.Radius; + obj.JointType = objData.JointType; + obj.JointPivot = objData.JointPivot; + obj.JointAxisOrAnchor = objData.JointAxisOrAnchor; - // noinspection FallThroughInSwitchStatementJS, TsLint - switch (data.length) - { - case 76: - // Avatar collision normal; - obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos); - dataPos += 16; - case 60: - // Position - obj.Position = new Vector3(objData.ObjectData, dataPos); - dataPos += 12; - obj.Velocity = new Vector3(objData.ObjectData, dataPos); - dataPos += 12; - obj.Acceleration = new Vector3(objData.ObjectData, dataPos); - dataPos += 12; - obj.Rotation = new Quaternion(objData.ObjectData, dataPos); - dataPos += 12; - obj.AngularVelocity = new Vector3(objData.ObjectData, dataPos); - dataPos += 12; - break; - case 48: - obj.CollisionPlane = new Vector4(objData.ObjectData, dataPos); - dataPos += 16; - case 32: - obj.Position = new Vector3([ - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -0.5 * 256.0, 1.5 * 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -0.5 * 256.0, 1.5 * 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 3.0 * 256.0) - ]); - dataPos += 6; - obj.Velocity = new Vector3([ - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) - ]); - dataPos += 6; - obj.Acceleration = new Vector3([ - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) - ]); - dataPos += 6; - obj.Rotation = new Quaternion([ - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -1.0, 1.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -1.0, 1.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -1.0, 1.0) - ]); - dataPos += 8; - obj.AngularVelocity = new Vector3([ - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos), -256.0, 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 2), -256.0, 256.0), - Utils.UInt16ToFloat(objData.ObjectData.readUInt16LE(dataPos + 4), -256.0, 256.0) - ]); - dataPos += 6; - break; - case 16: - obj.Position = new Vector3([ - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - obj.Velocity = new Vector3([ - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - obj.Acceleration = new Vector3([ - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - obj.Rotation = new Quaternion([ - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -1.0, 1.0) - ]); - obj.AngularVelocity = new Vector3([ - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0), - Utils.ByteToFloat(objData.ObjectData.readUInt8(dataPos++), -256.0, 256.0) - ]); - break; - } - obj.ParentID = objData.ParentID; - obj.Flags = objData.UpdateFlags; - obj.PathCurve = objData.PathCurve; - obj.ProfileCurve = objData.ProfileCurve; - obj.PathBegin = objData.PathBegin; - obj.PathEnd = objData.PathEnd; - obj.PathScaleX = objData.PathScaleX; - obj.PathScaleY = objData.PathScaleY; - obj.PathShearX = objData.PathShearX; - obj.PathShearY = objData.PathShearY; - obj.PathTwist = objData.PathTwist; - obj.PathTwistBegin = objData.PathTwistBegin; - obj.PathRadiusOffset = objData.PathRadiusOffset; - obj.PathTaperX = objData.PathTaperX; - obj.PathTaperY = objData.PathTaperY; - obj.PathRevolutions = objData.PathRevolutions; - obj.PathSkew = objData.PathSkew; - obj.ProfileBegin = objData.ProfileBegin; - obj.ProfileEnd = objData.ProfileEnd; - obj.ProfileHollow = objData.ProfileHollow; - obj.TextureEntry = new TextureEntry(objData.TextureEntry); - obj.TextureAnim = objData.TextureAnim; - const pcodeData = objData.Data; - obj.Text = Utils.BufferToStringSimple(objData.Text); - obj.TextColor = new Color4(objData.TextColor, 0, false, true); - obj.MediaURL = Utils.BufferToStringSimple(objData.MediaURL); - obj.PSBlock = objData.PSBlock; - obj.Sound = objData.Sound; - obj.OwnerID = objData.OwnerID; - obj.SoundGain = objData.Gain; - obj.SoundFlags = objData.Flags; - obj.SoundRadius = objData.Radius; - obj.JointType = objData.JointType; - obj.JointPivot = objData.JointPivot; - obj.JointAxisOrAnchor = objData.JointAxisOrAnchor; - - switch (obj.PCode) - { - case PCode.Grass: - case PCode.Tree: - case PCode.NewTree: - if (pcodeData.length === 1) - { - obj.TreeSpecies = pcodeData[0]; - } - break; - } - - if (this.objects[localID].PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) - { - this.agent.localID = localID; - - if (this.options & BotOptionFlags.StoreMyAttachmentsOnly) - { - Object.keys(this.objectsByParent).forEach((objParentID: string) => - { - const parent = parseInt(objParentID, 10); - if (parent !== this.agent.localID) - { - let foundAvatars = false; - this.objectsByParent[parent].forEach((objID) => - { - if (this.objects[objID]) - { - const o = this.objects[objID]; - if (o.PCode === PCode.Avatar) - { - foundAvatars = true; - } - } - }); - if (this.objects[parent]) - { - const o = this.objects[parent]; - if (o.PCode === PCode.Avatar) - { - foundAvatars = true; - } - } - if (!foundAvatars) - { - this.deleteObject(parent); - } - } - }); - } - } - - this.readExtraParams(objData.ExtraParams, 0, this.objects[localID]); - this.objects[localID].NameValue = this.parseNameValues(Utils.BufferToStringSimple(objData.NameValue)); - - this.objectsByUUID[objData.FullID.toString()] = localID; - if (!this.objectsByParent[parentID]) - { - this.objectsByParent[parentID] = []; - } - if (addToParentList) - { - this.objectsByParent[parentID].push(localID); - } - - if (objData.PCode !== PCode.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID)) - { - // Drop object - this.deleteObject(localID); - } - else - { - this.insertIntoRtree(obj); - } + switch (obj.PCode) + { + case PCode.Grass: + case PCode.Tree: + case PCode.NewTree: + if (pcodeData.length === 1) + { + obj.TreeSpecies = pcodeData[0]; } break; - case Message.ObjectUpdateCached: + } + + if (this.objects[localID].PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) + { + this.agent.localID = localID; + + if (this.options & BotOptionFlags.StoreMyAttachmentsOnly) { - const objectUpdateCached = packet.message as ObjectUpdateCachedMessage; + Object.keys(this.objectsByParent).forEach((objParentID: string) => + { + const parent = parseInt(objParentID, 10); + if (parent !== this.agent.localID) + { + let foundAvatars = false; + this.objectsByParent[parent].forEach((objID) => + { + if (this.objects[objID]) + { + const o = this.objects[objID]; + if (o.PCode === PCode.Avatar) + { + foundAvatars = true; + } + } + }); + if (this.objects[parent]) + { + const o = this.objects[parent]; + if (o.PCode === PCode.Avatar) + { + foundAvatars = true; + } + } + if (!foundAvatars) + { + this.deleteObject(parent); + } + } + }); + } + } + + this.readExtraParams(objData.ExtraParams, 0, this.objects[localID]); + this.objects[localID].NameValue = this.parseNameValues(Utils.BufferToStringSimple(objData.NameValue)); + + this.objectsByUUID[objData.FullID.toString()] = localID; + if (!this.objectsByParent[parentID]) + { + this.objectsByParent[parentID] = []; + } + if (addToParentList) + { + this.objectsByParent[parentID].push(localID); + } + + if (objData.PCode !== PCode.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID)) + { + // Drop object + this.deleteObject(localID); + } + else + { + this.insertIntoRtree(obj); + } + } + } + + protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage) + { + const rmo = new RequestMultipleObjectsMessage(); + rmo.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + rmo.ObjectData = []; + for (const obj of objectUpdateCached.ObjectData) + { + if (!this.objects[obj.ID]) + { + rmo.ObjectData.push({ + CacheMissType: 0, + ID: obj.ID + }); + } + } + if (rmo.ObjectData.length > 0) + { + this.circuit.sendMessage(rmo, 0); + } + } + + protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage) + { + for (const obj of objectUpdateCompressed.ObjectData) + { + const flags = obj.UpdateFlags; + const buf = obj.Data; + let pos = 0; + + const fullID = new UUID(buf, pos); + pos += 16; + const localID = buf.readUInt32LE(pos); + pos += 4; + const pcode = buf.readUInt8(pos++); + let newObj = false; + if (!this.objects[localID]) + { + newObj = true; + this.objects[localID] = new GameObject(); + } + const o = this.objects[localID]; + o.ID = localID; + this.objectsByUUID[fullID.toString()] = localID; + o.FullID = fullID; + o.Flags = flags; + o.PCode = pcode; + o.State = buf.readUInt8(pos++); + o.CRC = buf.readUInt32LE(pos); + pos = pos + 4; + o.Material = buf.readUInt8(pos++); + o.ClickAction = buf.readUInt8(pos++); + o.Scale = new Vector3(buf, pos, false); + pos = pos + 12; + o.Position = new Vector3(buf, pos, false); + pos = pos + 12; + o.Rotation = new Quaternion(buf, pos); + pos = pos + 12; + const compressedflags: CompressedFlags = buf.readUInt32LE(pos); + pos = pos + 4; + o.OwnerID = new UUID(buf, pos); + pos += 16; + + if (compressedflags & CompressedFlags.HasAngularVelocity) + { + o.AngularVelocity = new Vector3(buf, pos, false); + pos = pos + 12; + } + if (compressedflags & CompressedFlags.HasParent) + { + const newParentID = buf.readUInt32LE(pos); + pos += 4; + let add = true; + if (!newObj) + { + if (newParentID !== o.ParentID) + { + const index = this.objectsByParent[o.ParentID].indexOf(localID); + if (index !== -1) + { + this.objectsByParent[o.ParentID].splice(index, 1); + } + } + else + { + add = false; + } + } + if (add) + { + if (!this.objectsByParent[newParentID]) + { + this.objectsByParent[newParentID] = []; + } + this.objectsByParent[newParentID].push(localID); + } + o.ParentID = newParentID; + } + if (pcode !== PCode.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && o.ParentID !== this.agent.localID)) + { + // Drop object + this.deleteObject(localID); + return; + } + else + { + if (compressedflags & CompressedFlags.Tree) + { + o.TreeSpecies = buf.readUInt8(pos++); + } + else if (compressedflags & CompressedFlags.ScratchPad) + { + o.TreeSpecies = 0; + const scratchPadSize = buf.readUInt8(pos++); + // Ignore this data + pos = pos + scratchPadSize; + } + if (compressedflags & CompressedFlags.HasText) + { + // Read null terminated string + const result = Utils.BufferToString(buf, pos); + + pos += result.readLength; + o.Text = result.result; + o.TextColor = new Color4(buf, pos, false, true); + pos = pos + 4; + } + else + { + o.Text = ''; + } + if (compressedflags & CompressedFlags.MediaURL) + { + const result = Utils.BufferToString(buf, pos); + + pos += result.readLength; + o.MediaURL = result.result; + } + if (compressedflags & CompressedFlags.HasParticles) + { + o.Particles = new ParticleSystem(buf.slice(pos, pos + 86), 0); + pos += 86; + } + + // Extra params + pos = this.readExtraParams(buf, pos, o); + + if (compressedflags & CompressedFlags.HasSound) + { + o.Sound = new UUID(buf, pos); + pos = pos + 16; + o.SoundGain = buf.readFloatLE(pos); + pos += 4; + o.SoundFlags = buf.readUInt8(pos++); + o.SoundRadius = buf.readFloatLE(pos); + pos = pos + 4; + } + if (compressedflags & CompressedFlags.HasNameValues) + { + const result = Utils.BufferToString(buf, pos); + o.NameValue = this.parseNameValues(result.result); + pos += result.readLength; + } + o.PathCurve = buf.readUInt8(pos++); + o.PathBegin = buf.readUInt16LE(pos); + pos = pos + 2; + o.PathEnd = buf.readUInt16LE(pos); + pos = pos + 2; + o.PathScaleX = buf.readUInt8(pos++); + o.PathScaleY = buf.readUInt8(pos++); + o.PathShearX = buf.readUInt8(pos++); + o.PathShearY = buf.readUInt8(pos++); + o.PathTwist = buf.readUInt8(pos++); + o.PathTwistBegin = buf.readUInt8(pos++); + o.PathRadiusOffset = buf.readUInt8(pos++); + o.PathTaperX = buf.readUInt8(pos++); + o.PathTaperY = buf.readUInt8(pos++); + o.PathRevolutions = buf.readUInt8(pos++); + o.PathSkew = buf.readUInt8(pos++); + o.ProfileCurve = buf.readUInt8(pos++); + o.ProfileBegin = buf.readUInt16LE(pos); + pos = pos + 2; + o.ProfileEnd = buf.readUInt16LE(pos); + pos = pos + 2; + o.ProfileHollow = buf.readUInt16LE(pos); + pos = pos + 2; + const textureEntryLength = buf.readUInt32LE(pos); + pos = pos + 4; + o.TextureEntry = new TextureEntry(buf.slice(pos, pos + textureEntryLength)); + pos = pos + textureEntryLength; + + if (compressedflags & CompressedFlags.TextureAnimation) + { + // TODO: Properly parse textureAnim + pos = pos + 4; + } + + o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; + + this.insertIntoRtree(o); + } + } + } + + protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage) + { + const dilation = objectUpdateTerse.RegionData.TimeDilation / 65535.0; + + for (let i = 0; i < objectUpdateTerse.ObjectData.length; i++) + { + const objectData = objectUpdateTerse.ObjectData[i]; + if (!(this.options & BotOptionFlags.StoreMyAttachmentsOnly)) + { + let pos = 0; + const localID = objectData.Data.readUInt32LE(pos); + pos = pos + 4; + if (this.objects[localID]) + { + this.objects[localID].State = objectData.Data.readUInt8(pos++); + const avatar: boolean = (objectData.Data.readUInt8(pos++) !== 0); + if (avatar) + { + this.objects[localID].CollisionPlane = new Vector4(objectData.Data, pos); + pos += 16; + } + this.objects[localID].Position = new Vector3(objectData.Data, pos); + pos += 12; + this.objects[localID].Velocity = new Vector3([ + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -128.0, 128.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -128.0, 128.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -128.0, 128.0) + ]); + pos += 6; + this.objects[localID].Acceleration = new Vector3([ + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) + ]); + pos += 6; + this.objects[localID].Rotation = new Quaternion([ + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -1.0, 1.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -1.0, 1.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -1.0, 1.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 6), -1.0, 1.0) + ]); + pos += 8; + this.objects[localID].AngularVelocity = new Vector3([ + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), + Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) + ]); + pos += 6; + + if (objectData.TextureEntry.length > 0) + { + // No idea why the first four bytes are skipped here. + this.objects[localID].TextureEntry = new TextureEntry(objectData.TextureEntry.slice(4)); + } + this.insertIntoRtree(this.objects[localID]); + } + else + { + console.log('Received terse update for object ' + localID + ' which is not in the store, so requesting the object'); + // We don't know about this object, so request it const rmo = new RequestMultipleObjectsMessage(); rmo.AgentData = { AgentID: this.agent.agentID, SessionID: this.circuit.sessionID }; rmo.ObjectData = []; - for (const obj of objectUpdateCached.ObjectData) - { - if (!this.objects[obj.ID]) - { - rmo.ObjectData.push({ - CacheMissType: 0, - ID: obj.ID - }); - } - } - if (rmo.ObjectData.length > 0) - { - circuit.sendMessage(rmo, 0); - } - break; - } - case Message.ObjectUpdateCompressed: - { - const objectUpdateCompressed = packet.message as ObjectUpdateCompressedMessage; - for (const obj of objectUpdateCompressed.ObjectData) - { - const flags = obj.UpdateFlags; - const buf = obj.Data; - let pos = 0; - - const fullID = new UUID(buf, pos); - pos += 16; - const localID = buf.readUInt32LE(pos); - pos += 4; - const pcode = buf.readUInt8(pos++); - let newObj = false; - if (!this.objects[localID]) - { - newObj = true; - this.objects[localID] = new GameObjectFull(); - } - const o = this.objects[localID]; - o.ID = localID; - this.objectsByUUID[fullID.toString()] = localID; - o.FullID = fullID; - o.Flags = flags; - o.PCode = pcode; - o.State = buf.readUInt8(pos++); - o.CRC = buf.readUInt32LE(pos); - pos = pos + 4; - o.Material = buf.readUInt8(pos++); - o.ClickAction = buf.readUInt8(pos++); - o.Scale = new Vector3(buf, pos, false); - pos = pos + 12; - o.Position = new Vector3(buf, pos, false); - pos = pos + 12; - o.Rotation = new Quaternion(buf, pos); - pos = pos + 12; - const compressedflags: CompressedFlags = buf.readUInt32LE(pos); - pos = pos + 4; - o.OwnerID = new UUID(buf, pos); - pos += 16; - - if (compressedflags & CompressedFlags.HasAngularVelocity) - { - o.AngularVelocity = new Vector3(buf, pos, false); - pos = pos + 12; - } - if (compressedflags & CompressedFlags.HasParent) - { - const newParentID = buf.readUInt32LE(pos); - pos += 4; - let add = true; - if (!newObj) - { - if (newParentID !== o.ParentID) - { - const index = this.objectsByParent[o.ParentID].indexOf(localID); - if (index !== -1) - { - this.objectsByParent[o.ParentID].splice(index, 1); - } - } - else - { - add = false; - } - } - if (add) - { - if (!this.objectsByParent[newParentID]) - { - this.objectsByParent[newParentID] = []; - } - this.objectsByParent[newParentID].push(localID); - } - o.ParentID = newParentID; - } - if (pcode !== PCode.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly && (this.agent.localID !== 0 && o.ParentID !== this.agent.localID)) - { - // Drop object - this.deleteObject(localID); - return; - } - else - { - if (compressedflags & CompressedFlags.Tree) - { - o.TreeSpecies = buf.readUInt8(pos++); - } - else if (compressedflags & CompressedFlags.ScratchPad) - { - o.TreeSpecies = 0; - const scratchPadSize = buf.readUInt8(pos++); - // Ignore this data - pos = pos + scratchPadSize; - } - if (compressedflags & CompressedFlags.HasText) - { - // Read null terminated string - const result = Utils.BufferToString(buf, pos); - - pos += result.readLength; - o.Text = result.result; - o.TextColor = new Color4(buf, pos, false, true); - pos = pos + 4; - } - else - { - o.Text = ''; - } - if (compressedflags & CompressedFlags.MediaURL) - { - const result = Utils.BufferToString(buf, pos); - - pos += result.readLength; - o.MediaURL = result.result; - } - if (compressedflags & CompressedFlags.HasParticles) - { - o.Particles = new ParticleSystem(buf.slice(pos, pos + 86), 0); - pos += 86; - } - - // Extra params - pos = this.readExtraParams(buf, pos, o); - - if (compressedflags & CompressedFlags.HasSound) - { - o.Sound = new UUID(buf, pos); - pos = pos + 16; - o.SoundGain = buf.readFloatLE(pos); - pos += 4; - o.SoundFlags = buf.readUInt8(pos++); - o.SoundRadius = buf.readFloatLE(pos); - pos = pos + 4; - } - if (compressedflags & CompressedFlags.HasNameValues) - { - const result = Utils.BufferToString(buf, pos); - o.NameValue = this.parseNameValues(result.result); - pos += result.readLength; - } - o.PathCurve = buf.readUInt8(pos++); - o.PathBegin = buf.readUInt16LE(pos); - pos = pos + 2; - o.PathEnd = buf.readUInt16LE(pos); - pos = pos + 2; - o.PathScaleX = buf.readUInt8(pos++); - o.PathScaleY = buf.readUInt8(pos++); - o.PathShearX = buf.readUInt8(pos++); - o.PathShearY = buf.readUInt8(pos++); - o.PathTwist = buf.readUInt8(pos++); - o.PathTwistBegin = buf.readUInt8(pos++); - o.PathRadiusOffset = buf.readUInt8(pos++); - o.PathTaperX = buf.readUInt8(pos++); - o.PathTaperY = buf.readUInt8(pos++); - o.PathRevolutions = buf.readUInt8(pos++); - o.PathSkew = buf.readUInt8(pos++); - o.ProfileCurve = buf.readUInt8(pos++); - o.ProfileBegin = buf.readUInt16LE(pos); - pos = pos + 2; - o.ProfileEnd = buf.readUInt16LE(pos); - pos = pos + 2; - o.ProfileHollow = buf.readUInt16LE(pos); - pos = pos + 2; - const textureEntryLength = buf.readUInt32LE(pos); - pos = pos + 4; - o.TextureEntry = new TextureEntry(buf.slice(pos, pos + textureEntryLength)); - pos = pos + textureEntryLength; - - if (compressedflags & CompressedFlags.TextureAnimation) - { - // TODO: Properly parse textureAnim - pos = pos + 4; - } - - o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; - - this.insertIntoRtree(o); - } - } - break; - } - case Message.ImprovedTerseObjectUpdate: - { - const objectUpdateTerse = packet.message as ImprovedTerseObjectUpdateMessage; - const dilation = objectUpdateTerse.RegionData.TimeDilation / 65535.0; - - for (let i = 0; i < objectUpdateTerse.ObjectData.length; i++) - { - const objectData = objectUpdateTerse.ObjectData[i]; - if (!(this.options & BotOptionFlags.StoreMyAttachmentsOnly)) - { - let pos = 0; - const localID = objectData.Data.readUInt32LE(pos); - pos = pos + 4; - if (this.objects[localID]) - { - this.objects[localID].State = objectData.Data.readUInt8(pos++); - const avatar: boolean = (objectData.Data.readUInt8(pos++) !== 0); - if (avatar) - { - this.objects[localID].CollisionPlane = new Vector4(objectData.Data, pos); - pos += 16; - } - this.objects[localID].Position = new Vector3(objectData.Data, pos); - pos += 12; - this.objects[localID].Velocity = new Vector3([ - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -128.0, 128.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -128.0, 128.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -128.0, 128.0) - ]); - pos += 6; - this.objects[localID].Acceleration = new Vector3([ - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) - ]); - pos += 6; - this.objects[localID].Rotation = new Quaternion([ - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -1.0, 1.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -1.0, 1.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -1.0, 1.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 6), -1.0, 1.0) - ]); - pos += 8; - this.objects[localID].AngularVelocity = new Vector3([ - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos), -64.0, 64.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 2), -64.0, 64.0), - Utils.UInt16ToFloat(objectData.Data.readUInt16LE(pos + 4), -64.0, 64.0) - ]); - pos += 6; - - if (objectData.TextureEntry.length > 0) - { - // No idea why the first four bytes are skipped here. - this.objects[localID].TextureEntry = new TextureEntry(objectData.TextureEntry.slice(4)); - } - this.insertIntoRtree(this.objects[localID]); - } - else - { - console.log('Received terse update for object ' + localID + ' which is not in the store, so requesting the object'); - // We don't know about this object, so request it - const rmo = new RequestMultipleObjectsMessage(); - rmo.AgentData = { - AgentID: this.agent.agentID, - SessionID: this.circuit.sessionID - }; - rmo.ObjectData = []; - rmo.ObjectData.push({ - CacheMissType: 0, - ID: localID - }); - circuit.sendMessage(rmo, 0); - } - } - } - break; - } - case Message.MultipleObjectUpdate: - const multipleObjectUpdate = packet.message as MultipleObjectUpdateMessage; - // TODO: multipleObjectUpdate - console.error('TODO: MultipleObjectUpdate'); - break; - case Message.KillObject: - const killObj = packet.message as KillObjectMessage; - for (const obj of killObj.ObjectData) - { - const objectID = obj.ID; - this.deleteObject(objectID); - } - break; - } - }); - } - - insertIntoRtree(obj: GameObjectFull) - { - if (obj.rtreeEntry !== undefined) - { - this.rtree.remove(obj.rtreeEntry); - } - const normalizedScale = obj.Scale.multiplyByQuat(obj.Rotation); - const bounds: ITreeBoundingBox = { - minX: obj.Position.x - (normalizedScale.x / 2), - maxX: obj.Position.x + (normalizedScale.x / 2), - minY: obj.Position.y - (normalizedScale.y / 2), - maxY: obj.Position.y + (normalizedScale.y / 2), - minZ: obj.Position.z - (normalizedScale.z / 2), - maxZ: obj.Position.z + (normalizedScale.z / 2), - gameObject: obj - }; - - obj.rtreeEntry = bounds; - this.rtree.insert(bounds); - } - - deleteObject(objectID: number) - { - if (this.objects[objectID]) - { - // First, kill all children - if (this.objectsByParent[objectID]) - { - this.objectsByParent[objectID].forEach((childObjID) => - { - this.deleteObject(childObjID); - }); - } - delete this.objectsByParent[objectID]; - - // Now delete this object - const objct = this.objects[objectID]; - const uuid = objct.FullID.toString(); - - if (this.objectsByUUID[uuid]) - { - delete this.objectsByUUID[uuid]; - } - const parentID = objct.ParentID; - if (this.objectsByParent[parentID]) - { - const ind = this.objectsByParent[parentID].indexOf(objectID); - if (ind !== -1) - { - this.objectsByParent[parentID].splice(ind, 1); + rmo.ObjectData.push({ + CacheMissType: 0, + ID: localID + }); + this.circuit.sendMessage(rmo, 0); } } - if (this.objects[objectID].rtreeEntry !== undefined) - { - this.rtree.remove(this.objects[objectID].rtreeEntry); - } - delete this.objects[objectID]; } } - - readExtraParams(buf: Buffer, pos: number, o: GameObjectFull): number - { - if (pos >= buf.length) - { - return 0; - } - const extraParamCount = buf.readUInt8(pos++); - for (let k = 0; k < extraParamCount; k++) - { - const type: ExtraParamType = buf.readUInt16LE(pos); - pos = pos + 2; - const paramLength = buf.readUInt32LE(pos); - pos = pos + 4; - - // TODO: Read extra param data - pos += paramLength; - } - return pos; - } - - getObjectsByParent(parentID: number): IGameObject[] - { - const list = this.objectsByParent[parentID]; - if (list === undefined) - { - return []; - } - const result: IGameObject[] = []; - list.forEach((localID) => - { - result.push(this.objects[localID]); - }); - return result; - } - - getObjectByUUID(fullID: UUID | string): IGameObject - { - if (fullID instanceof UUID) - { - fullID = fullID.toString(); - } - if (!this.objectsByUUID[fullID]) - { - throw new Error('No object found with that UUID'); - } - const localID: number = this.objectsByUUID[fullID]; - return this.objects[localID]; - } - - getObjectByLocalID(localID: number): IGameObject - { - if (!this.objects[localID]) - { - throw new Error('No object found with that UUID'); - } - return this.objects[localID]; - } - - parseNameValues(str: string): { [key: string]: NameValue } - { - const nv: { [key: string]: NameValue } = {}; - const lines = str.split('\n'); - lines.forEach((line) => - { - if (line.length > 0) - { - let kv = line.split(/[\t ]/); - if (kv.length > 5) - { - for (let x = 5; x < kv.length; x++) - { - kv[4] += ' ' + kv[x]; - } - kv = kv.slice(0, 5); - } - if (kv.length === 5) - { - const namevalue = new NameValue(); - namevalue.type = kv[1]; - namevalue.class = kv[2]; - namevalue.sendTo = kv[3]; - namevalue.value = kv[4]; - nv[kv[0]] = namevalue; - } - else - { - console.log('namevalue unexpected length: ' + kv.length); - console.log(kv); - } - } - }); - return nv; - } - - shutdown() - { - this.objects = {}; - this.rtree.clear(); - this.objectsByUUID = {}; - this.objectsByParent = {}; - } - - private findParent(go: GameObjectFull): GameObjectFull - { - if (go.ParentID === 0) - { - return go; - } - else - { - return this.findParent(this.objects[go.ParentID]); - } - } - - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[] - { - const result = this.rtree.search({ - minX: minX, - maxX: maxX, - minY: minY, - maxY: maxY, - minZ: minZ, - maxZ: maxZ - }); - const found: {[key: string]: GameObjectFull} = {}; - const objs: GameObjectFull[] = []; - for (const obj of result) - { - const o = obj as ITreeBoundingBox; - const go = o.gameObject as GameObjectFull; - try - { - const parent = this.findParent(go); - const uuid = parent.FullID.toString(); - - if (parent !== go) - { - console.log('Resolved object ' + go.FullID.toString() + ' to parent ' + parent.FullID.toString() + ' which ' + ((found[uuid] === undefined) ? 'does not exist' : 'already exists')); - } - - - if (found[uuid] === undefined) - { - found[uuid] = parent; - objs.push(parent); - } - } - catch (error) - { - console.log('Failed to find parent for ' + go.FullID.toString()); - console.error(error); - // Unable to find parent, full object probably not fully loaded yet - } - } - return objs; - } } diff --git a/lib/classes/ObjectStoreLite.ts b/lib/classes/ObjectStoreLite.ts index 2352b0b..561ec19 100644 --- a/lib/classes/ObjectStoreLite.ts +++ b/lib/classes/ObjectStoreLite.ts @@ -15,21 +15,23 @@ import {PCode} from '../enums/PCode'; import {ClientEvents} from './ClientEvents'; import {KillObjectMessage} from './messages/KillObject'; import {IObjectStore} from './interfaces/IObjectStore'; -import {GameObjectLite} from './GameObjectLite'; import {NameValue} from './NameValue'; import {BotOptionFlags, CompressedFlags} from '..'; -import {IGameObject} from './interfaces/IGameObject'; -import {GameObjectFull} from './GameObjectFull'; +import {GameObject} from './GameObject'; +import {RBush3D} from 'rbush-3d/dist'; +import {ITreeBoundingBox} from './interfaces/ITreeBoundingBox'; export class ObjectStoreLite implements IObjectStore { - private circuit: Circuit; - private agent: Agent; - private objects: { [key: number]: GameObjectLite } = {}; - private objectsByUUID: { [key: string]: number } = {}; - private objectsByParent: { [key: number]: number[] } = {}; - private clientEvents: ClientEvents; - private options: BotOptionFlags; + protected circuit: Circuit; + protected agent: Agent; + protected objects: { [key: number]: GameObject } = {}; + protected objectsByUUID: { [key: string]: number } = {}; + protected objectsByParent: { [key: number]: number[] } = {}; + protected clientEvents: ClientEvents; + protected options: BotOptionFlags; + + rtree?: RBush3D; constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags) { @@ -51,295 +53,319 @@ export class ObjectStoreLite implements IObjectStore { case Message.ObjectUpdate: const objectUpdate = packet.message as ObjectUpdateMessage; - objectUpdate.ObjectData.forEach((objData) => - { - const localID = objData.ID; - const parentID = objData.ParentID; - let addToParentList = true; - - if (this.objects[localID]) - { - if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) - { - const ind = this.objectsByParent[parentID].indexOf(localID); - if (ind !== -1) - { - this.objectsByParent[parentID].splice(ind, 1); - } - } - else - { - addToParentList = false; - } - } - else - { - this.objects[localID] = new GameObjectLite(); - } - - const obj = this.objects[localID]; - obj.ID = objData.ID; - obj.FullID = objData.FullID; - obj.ParentID = objData.ParentID; - obj.OwnerID = objData.OwnerID; - obj.PCode = objData.PCode; - - this.objects[localID].NameValue = this.parseNameValues(Utils.BufferToStringSimple(objData.NameValue)); - - if (objData.PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) - { - this.agent.localID = localID; - - if (this.options & BotOptionFlags.StoreMyAttachmentsOnly) - { - Object.keys(this.objectsByParent).forEach((objParentID: string) => - { - const parent = parseInt(objParentID, 10); - if (parent !== this.agent.localID) - { - let foundAvatars = false; - this.objectsByParent[parent].forEach((objID) => - { - if (this.objects[objID]) - { - const o = this.objects[objID]; - if (o.PCode === PCode.Avatar) - { - foundAvatars = true; - } - } - }); - if (this.objects[parent]) - { - const o = this.objects[parent]; - if (o.PCode === PCode.Avatar) - { - foundAvatars = true; - } - } - if (!foundAvatars) - { - this.deleteObject(parent); - } - } - }); - } - } - - this.objectsByUUID[objData.FullID.toString()] = localID; - if (!this.objectsByParent[parentID]) - { - this.objectsByParent[parentID] = []; - } - if (addToParentList) - { - this.objectsByParent[parentID].push(localID); - } - - if (objData.PCode !== PCode.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly) - { - if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID) - { - // Drop object - this.deleteObject(localID); - return; - } - } - }); + this.objectUpdate(objectUpdate); break; case Message.ObjectUpdateCached: const objectUpdateCached = packet.message as ObjectUpdateCachedMessage; - const rmo = new RequestMultipleObjectsMessage(); - rmo.AgentData = { - AgentID: this.agent.agentID, - SessionID: this.circuit.sessionID - }; - rmo.ObjectData = []; - objectUpdateCached.ObjectData.forEach((obj) => - { - rmo.ObjectData.push({ - CacheMissType: 0, - ID: obj.ID - }); - }); - circuit.sendMessage(rmo, 0); + this.objectUpdateCached(objectUpdateCached); break; case Message.ObjectUpdateCompressed: { const objectUpdateCompressed = packet.message as ObjectUpdateCompressedMessage; - for (const obj of objectUpdateCompressed.ObjectData) - { - const flags = obj.UpdateFlags; - const buf = obj.Data; - let pos = 0; - - const fullID = new UUID(buf, pos); - pos += 16; - const localID = buf.readUInt32LE(pos); - pos += 4; - const pcode = buf.readUInt8(pos++); - let newObj = false; - if (!this.objects[localID]) - { - newObj = true; - this.objects[localID] = new GameObjectLite(); - } - const o = this.objects[localID]; - o.ID = localID; - o.PCode = pcode; - this.objectsByUUID[fullID.toString()] = localID; - o.FullID = fullID; - - - pos++; - - pos = pos + 4; - pos++; - pos++; - - pos = pos + 12; - - pos = pos + 12; - - pos = pos + 12; - const compressedflags: CompressedFlags = buf.readUInt32LE(pos); - pos = pos + 4; - o.OwnerID = new UUID(buf, pos); - pos += 16; - - if (compressedflags & CompressedFlags.HasAngularVelocity) - { - pos = pos + 12; - } - if (compressedflags & CompressedFlags.HasParent) - { - const newParentID = buf.readUInt32LE(pos); - pos += 4; - let add = true; - if (!newObj) - { - if (newParentID !== o.ParentID) - { - const index = this.objectsByParent[o.ParentID].indexOf(localID); - if (index !== -1) - { - this.objectsByParent[o.ParentID].splice(index, 1); - } - } - else - { - add = false; - } - } - if (add) - { - if (!this.objectsByParent[newParentID]) - { - this.objectsByParent[newParentID] = []; - } - this.objectsByParent[newParentID].push(localID); - } - o.ParentID = newParentID; - } - if (pcode !== PCode.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly) - { - if (this.agent.localID !== 0 && o.ParentID !== this.agent.localID) - { - // Drop object - this.deleteObject(localID); - return; - } - } - if (compressedflags & CompressedFlags.Tree) - { - pos++; - } - else if (compressedflags & CompressedFlags.ScratchPad) - { - const scratchPadSize = buf.readUInt8(pos++); - // Ignore this data - pos = pos + scratchPadSize; - } - if (compressedflags & CompressedFlags.HasText) - { - // Read null terminated string - const result = Utils.BufferToString(buf, pos); - - pos += result.readLength; - pos = pos + 4; - } - if (compressedflags & CompressedFlags.MediaURL) - { - const result = Utils.BufferToString(buf, pos); - - pos += result.readLength; - } - if (compressedflags & CompressedFlags.HasParticles) - { - // TODO: Particle system block - pos += 86; - } - - // Extra params - pos = this.readExtraParams(buf, pos, o); - - if (compressedflags & CompressedFlags.HasSound) - { - pos = pos + 16; - pos += 4; - pos++; - pos = pos + 4; - } - if (compressedflags & CompressedFlags.HasNameValues) - { - const result = Utils.BufferToString(buf, pos); - o.NameValue = this.parseNameValues(result.result); - pos += result.readLength; - } - pos++; - pos = pos + 2; - pos = pos + 2; - pos = pos + 12; - pos = pos + 2; - pos = pos + 2; - pos = pos + 2; - const textureEntryLength = buf.readUInt32LE(pos); - pos = pos + 4; - // TODO: Properly parse textureentry; - pos = pos + textureEntryLength; - - if (compressedflags & CompressedFlags.TextureAnimation) - { - // TODO: Properly parse textureAnim - pos = pos + 4; - } - - o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; - }; - + this.objectUpdateCompressed(objectUpdateCompressed); break; } case Message.ImprovedTerseObjectUpdate: const objectUpdateTerse = packet.message as ImprovedTerseObjectUpdateMessage; - // TODO: ImprovedTerseObjectUPdate + this.objectUpdateTerse(objectUpdateTerse); break; case Message.MultipleObjectUpdate: const multipleObjectUpdate = packet.message as MultipleObjectUpdateMessage; - // TODO: multipleObjectUpdate - console.error('TODO: MultipleObjectUpdate'); + this.objectUpdateMultiple(multipleObjectUpdate); break; case Message.KillObject: const killObj = packet.message as KillObjectMessage; - killObj.ObjectData.forEach((obj) => - { - const objectID = obj.ID; - this.deleteObject(objectID); - }); + this.killObject(killObj); break; } }); } + protected objectUpdate(objectUpdate: ObjectUpdateMessage) + { + objectUpdate.ObjectData.forEach((objData) => + { + const localID = objData.ID; + const parentID = objData.ParentID; + let addToParentList = true; + + if (this.objects[localID]) + { + if (this.objects[localID].ParentID !== parentID && this.objectsByParent[parentID]) + { + const ind = this.objectsByParent[parentID].indexOf(localID); + if (ind !== -1) + { + this.objectsByParent[parentID].splice(ind, 1); + } + } + else + { + addToParentList = false; + } + } + else + { + this.objects[localID] = new GameObject(); + } + + const obj = this.objects[localID]; + obj.ID = objData.ID; + obj.FullID = objData.FullID; + obj.ParentID = objData.ParentID; + obj.OwnerID = objData.OwnerID; + obj.PCode = objData.PCode; + + this.objects[localID].NameValue = this.parseNameValues(Utils.BufferToStringSimple(objData.NameValue)); + + if (objData.PCode === PCode.Avatar && this.objects[localID].FullID.toString() === this.agent.agentID.toString()) + { + this.agent.localID = localID; + + if (this.options & BotOptionFlags.StoreMyAttachmentsOnly) + { + Object.keys(this.objectsByParent).forEach((objParentID: string) => + { + const parent = parseInt(objParentID, 10); + if (parent !== this.agent.localID) + { + let foundAvatars = false; + this.objectsByParent[parent].forEach((objID) => + { + if (this.objects[objID]) + { + const o = this.objects[objID]; + if (o.PCode === PCode.Avatar) + { + foundAvatars = true; + } + } + }); + if (this.objects[parent]) + { + const o = this.objects[parent]; + if (o.PCode === PCode.Avatar) + { + foundAvatars = true; + } + } + if (!foundAvatars) + { + this.deleteObject(parent); + } + } + }); + } + } + + this.objectsByUUID[objData.FullID.toString()] = localID; + if (!this.objectsByParent[parentID]) + { + this.objectsByParent[parentID] = []; + } + if (addToParentList) + { + this.objectsByParent[parentID].push(localID); + } + + if (objData.PCode !== PCode.Avatar && this.options & BotOptionFlags.StoreMyAttachmentsOnly) + { + if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID) + { + // Drop object + this.deleteObject(localID); + return; + } + } + }); + } + + protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage) + { + const rmo = new RequestMultipleObjectsMessage(); + rmo.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + rmo.ObjectData = []; + objectUpdateCached.ObjectData.forEach((obj) => + { + rmo.ObjectData.push({ + CacheMissType: 0, + ID: obj.ID + }); + }); + this.circuit.sendMessage(rmo, 0); + } + + protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage) + { + for (const obj of objectUpdateCompressed.ObjectData) + { + const flags = obj.UpdateFlags; + const buf = obj.Data; + let pos = 0; + + const fullID = new UUID(buf, pos); + pos += 16; + const localID = buf.readUInt32LE(pos); + pos += 4; + const pcode = buf.readUInt8(pos++); + let newObj = false; + if (!this.objects[localID]) + { + newObj = true; + this.objects[localID] = new GameObject(); + } + const o = this.objects[localID]; + o.ID = localID; + o.PCode = pcode; + this.objectsByUUID[fullID.toString()] = localID; + o.FullID = fullID; + + + pos++; + + pos = pos + 4; + pos++; + pos++; + + pos = pos + 12; + + pos = pos + 12; + + pos = pos + 12; + const compressedflags: CompressedFlags = buf.readUInt32LE(pos); + pos = pos + 4; + o.OwnerID = new UUID(buf, pos); + pos += 16; + + if (compressedflags & CompressedFlags.HasAngularVelocity) + { + pos = pos + 12; + } + if (compressedflags & CompressedFlags.HasParent) + { + const newParentID = buf.readUInt32LE(pos); + pos += 4; + let add = true; + if (!newObj) + { + if (newParentID !== o.ParentID) + { + const index = this.objectsByParent[o.ParentID].indexOf(localID); + if (index !== -1) + { + this.objectsByParent[o.ParentID].splice(index, 1); + } + } + else + { + add = false; + } + } + if (add) + { + if (!this.objectsByParent[newParentID]) + { + this.objectsByParent[newParentID] = []; + } + this.objectsByParent[newParentID].push(localID); + } + o.ParentID = newParentID; + } + if (pcode !== PCode.Avatar && newObj && this.options & BotOptionFlags.StoreMyAttachmentsOnly) + { + if (this.agent.localID !== 0 && o.ParentID !== this.agent.localID) + { + // Drop object + this.deleteObject(localID); + return; + } + } + if (compressedflags & CompressedFlags.Tree) + { + pos++; + } + else if (compressedflags & CompressedFlags.ScratchPad) + { + const scratchPadSize = buf.readUInt8(pos++); + // Ignore this data + pos = pos + scratchPadSize; + } + if (compressedflags & CompressedFlags.HasText) + { + // Read null terminated string + const result = Utils.BufferToString(buf, pos); + + pos += result.readLength; + pos = pos + 4; + } + if (compressedflags & CompressedFlags.MediaURL) + { + const result = Utils.BufferToString(buf, pos); + + pos += result.readLength; + } + if (compressedflags & CompressedFlags.HasParticles) + { + // TODO: Particle system block + pos += 86; + } + + // Extra params + pos = this.readExtraParams(buf, pos, o); + + if (compressedflags & CompressedFlags.HasSound) + { + pos = pos + 16; + pos += 4; + pos++; + pos = pos + 4; + } + if (compressedflags & CompressedFlags.HasNameValues) + { + const result = Utils.BufferToString(buf, pos); + o.NameValue = this.parseNameValues(result.result); + pos += result.readLength; + } + pos++; + pos = pos + 2; + pos = pos + 2; + pos = pos + 12; + pos = pos + 2; + pos = pos + 2; + pos = pos + 2; + const textureEntryLength = buf.readUInt32LE(pos); + pos = pos + 4; + // TODO: Properly parse textureentry; + pos = pos + textureEntryLength; + + if (compressedflags & CompressedFlags.TextureAnimation) + { + // TODO: Properly parse textureAnim + pos = pos + 4; + } + + o.IsAttachment = (compressedflags & CompressedFlags.HasNameValues) !== 0 && o.ParentID !== 0; + } + } + + protected objectUpdateTerse(objectUpdateTerse: ImprovedTerseObjectUpdateMessage) + { } + + protected objectUpdateMultiple(objectUpdateMultiple: MultipleObjectUpdateMessage) + { } + + protected killObject(killObj: KillObjectMessage) + { + killObj.ObjectData.forEach((obj) => + { + const objectID = obj.ID; + this.deleteObject(objectID); + }); + } + deleteObject(objectID: number) { if (this.objects[objectID]) @@ -371,11 +397,15 @@ export class ObjectStoreLite implements IObjectStore this.objectsByParent[parentID].splice(ind, 1); } } + if (this.rtree && this.objects[objectID].rtreeEntry !== undefined) + { + this.rtree.remove(this.objects[objectID].rtreeEntry); + } delete this.objects[objectID]; } } - readExtraParams(buf: Buffer, pos: number, o: GameObjectLite): number + readExtraParams(buf: Buffer, pos: number, o: GameObject): number { if (pos >= buf.length) { @@ -395,14 +425,14 @@ export class ObjectStoreLite implements IObjectStore return pos; } - getObjectsByParent(parentID: number): GameObjectLite[] + getObjectsByParent(parentID: number): GameObject[] { const list = this.objectsByParent[parentID]; if (list === undefined) { return []; } - const result: GameObjectLite[] = []; + const result: GameObject[] = []; list.forEach((localID) => { result.push(this.objects[localID]); @@ -449,16 +479,102 @@ export class ObjectStoreLite implements IObjectStore shutdown() { this.objects = {}; + if (this.rtree) + { + this.rtree.clear(); + } this.objectsByUUID = {}; this.objectsByParent = {}; } - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[] + protected findParent(go: GameObject): GameObject { - throw new Error('GetObjectsInArea not available with the Lite object store.'); + if (go.ParentID !== 0 && this.objects[go.ParentID]) + { + return this.findParent(this.objects[go.ParentID]); + } + else + { + return go; + } } - getObjectByUUID(fullID: UUID | string): IGameObject + private populateChildren(obj: GameObject) + { + obj.children = []; + obj.totalChildren = 0; + for (const child of this.getObjectsByParent(obj.ID)) + { + obj.totalChildren++; + this.populateChildren(child); + if (child.totalChildren !== undefined) + { + obj.totalChildren += child.totalChildren; + } + obj.children.push(child); + } + } + + getNumberOfObjects() + { + return Object.keys(this.objects).length; + } + + getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[] + { + if (!this.rtree) + { + throw new Error('GetObjectsInArea not available with the Lite object store'); + } + const result = this.rtree.search({ + minX: minX, + maxX: maxX, + minY: minY, + maxY: maxY, + minZ: minZ, + maxZ: maxZ + }); + const found: {[key: string]: GameObject} = {}; + const objs: GameObject[] = []; + for (const obj of result) + { + const o = obj as ITreeBoundingBox; + const go = o.gameObject as GameObject; + if (go.PCode !== PCode.Avatar && (go.IsAttachment === undefined || go.IsAttachment === false)) + { + try + { + const parent = this.findParent(go); + if (parent.PCode !== PCode.Avatar && (parent.IsAttachment === undefined || parent.IsAttachment === false)) + { + const uuid = parent.FullID.toString(); + + if (found[uuid] === undefined) + { + found[uuid] = parent; + objs.push(parent); + } + } + } + catch (error) + { + console.log('Failed to find parent for ' + go.FullID.toString()); + console.error(error); + // Unable to find parent, full object probably not fully loaded yet + } + } + } + + // Now populate children of each found object + for (const obj of objs) + { + this.populateChildren(obj); + } + + return objs; + } + + getObjectByUUID(fullID: UUID | string): GameObject { if (fullID instanceof UUID) { @@ -472,7 +588,7 @@ export class ObjectStoreLite implements IObjectStore return this.objects[localID]; } - getObjectByLocalID(localID: number): IGameObject + getObjectByLocalID(localID: number): GameObject { if (!this.objects[localID]) { @@ -480,4 +596,33 @@ export class ObjectStoreLite implements IObjectStore } return this.objects[localID]; } + + insertIntoRtree(obj: GameObject) + { + if (!this.rtree) + { + return; + } + if (obj.rtreeEntry !== undefined) + { + this.rtree.remove(obj.rtreeEntry); + } + if (!obj.Scale || !obj.Position || !obj.Rotation) + { + return; + } + const normalizedScale = obj.Scale.multiplyByQuat(obj.Rotation); + const bounds: ITreeBoundingBox = { + minX: obj.Position.x - (normalizedScale.x / 2), + maxX: obj.Position.x + (normalizedScale.x / 2), + minY: obj.Position.y - (normalizedScale.y / 2), + maxY: obj.Position.y + (normalizedScale.y / 2), + minZ: obj.Position.z - (normalizedScale.z / 2), + maxZ: obj.Position.z + (normalizedScale.z / 2), + gameObject: obj + }; + + obj.rtreeEntry = bounds; + this.rtree.insert(bounds); + } } diff --git a/lib/classes/commands/AgentCommands.ts b/lib/classes/commands/AgentCommands.ts index 9f0afe3..34ed3be 100644 --- a/lib/classes/commands/AgentCommands.ts +++ b/lib/classes/commands/AgentCommands.ts @@ -2,6 +2,7 @@ import {UUID} from '../UUID'; import {AgentAnimationMessage} from '../messages/AgentAnimation'; import {PacketFlags} from '../../enums/PacketFlags'; import {CommandsBase} from './CommandsBase'; +import {Vector3} from '../Vector3'; export class AgentCommands extends CommandsBase { @@ -36,4 +37,27 @@ export class AgentCommands extends CommandsBase { return await this.animate(anim, false); } + + setCamera(position: Vector3, lookAt: Vector3, viewDistance?: number, leftAxis?: Vector3, upAxis?: Vector3) + { + this.agent.cameraCenter = position; + this.agent.cameraLookAt = lookAt; + if (viewDistance !== undefined) + { + this.agent.cameraFar = viewDistance; + } + if (leftAxis !== undefined) + { + this.agent.cameraLeftAxis = leftAxis; + } + if (upAxis !== undefined) + { + this.agent.cameraUpAxis = upAxis; + } + } + + setViewDistance(viewDistance: number) + { + this.agent.cameraFar = viewDistance; + } } diff --git a/lib/classes/commands/RegionCommands.ts b/lib/classes/commands/RegionCommands.ts index 82781fa..9b8395f 100644 --- a/lib/classes/commands/RegionCommands.ts +++ b/lib/classes/commands/RegionCommands.ts @@ -6,10 +6,15 @@ import {Message} from '../../enums/Message'; import {FilterResponse} from '../../enums/FilterResponse'; import {RegionIDAndHandleReplyMessage} from '../messages/RegionIDAndHandleReply'; import {PacketFlags, Vector3} from '../..'; -import {IGameObject} from '../interfaces/IGameObject'; import {ObjectGrabMessage} from '../messages/ObjectGrab'; import {ObjectDeGrabMessage} from '../messages/ObjectDeGrab'; import {ObjectGrabUpdateMessage} from '../messages/ObjectGrabUpdate'; +import {GameObject} from '../GameObject'; +import {ObjectSelectMessage} from '../messages/ObjectSelect'; +import {ObjectPropertiesMessage} from '../messages/ObjectProperties'; +import {Utils} from '../Utils'; +import {ObjectDeselectMessage} from '../messages/ObjectDeselect'; +import {PCode} from '../../enums/PCode'; export class RegionCommands extends CommandsBase { @@ -35,9 +40,277 @@ export class RegionCommands extends CommandsBase return responseMsg.ReplyBlock.RegionHandle; } - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): IGameObject[] + async deselectObjects(objects: GameObject[]) { - return this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ); + // Limit to 255 objects at once + const selectLimit = 255; + if (objects.length > selectLimit) + { + for (let x = 0; x < objects.length; x += selectLimit) + { + const selectList: GameObject[] = []; + for (let y = 0; y < selectLimit; y++) + { + if (y < objects.length) + { + selectList.push(objects[x + y]); + } + } + await this.deselectObjects(selectList); + } + return; + } + else + { + const deselectObject = new ObjectDeselectMessage(); + deselectObject.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + deselectObject.ObjectData = []; + const uuidMap: {[key: string]: GameObject} = {}; + for (const obj of objects) + { + const uuidStr = obj.FullID.toString(); + if (!uuidMap[uuidStr]) + { + uuidMap[uuidStr] = obj; + deselectObject.ObjectData.push({ + ObjectLocalID: obj.ID + }); + } + } + + // Create a map of our expected UUIDs + + const sequenceID = this.circuit.sendMessage(deselectObject, PacketFlags.Reliable); + return await this.circuit.waitForAck(sequenceID, 10000); + } + } + + countObjects(): number + { + return this.currentRegion.objects.getNumberOfObjects(); + } + + async selectObjects(objects: GameObject[]) + { + // Limit to 255 objects at once + const selectLimit = 255; + if (objects.length > selectLimit) + { + for (let x = 0; x < objects.length; x += selectLimit) + { + const selectList: GameObject[] = []; + for (let y = 0; y < selectLimit; y++) + { + if (y < objects.length) + { + selectList.push(objects[x + y]); + } + } + await this.selectObjects(selectList); + } + return; + } + else + { + const selectObject = new ObjectSelectMessage(); + selectObject.AgentData = { + AgentID: this.agent.agentID, + SessionID: this.circuit.sessionID + }; + selectObject.ObjectData = []; + const uuidMap: {[key: string]: GameObject} = {}; + for (const obj of objects) + { + const uuidStr = obj.FullID.toString(); + if (!uuidMap[uuidStr]) + { + uuidMap[uuidStr] = obj; + selectObject.ObjectData.push({ + ObjectLocalID: obj.ID + }); + } + } + + // Create a map of our expected UUIDs + let resolved = 0; + + this.circuit.sendMessage(selectObject, PacketFlags.Reliable); + return await this.circuit.waitForMessage(Message.ObjectProperties, 10000, (propertiesMessage: ObjectPropertiesMessage): FilterResponse => + { + let found = false; + for (const objData of propertiesMessage.ObjectData) + { + const objDataUUID = objData.ObjectID.toString(); + if (uuidMap[objDataUUID] !== undefined) + { + resolved++; + const obj = uuidMap[objDataUUID]; + obj.creatorID = objData.CreatorID; + obj.creationDate = objData.CreationDate; + obj.baseMask = objData.BaseMask; + obj.ownerMask = objData.OwnerMask; + obj.groupMask = objData.GroupMask; + obj.everyoneMask = objData.EveryoneMask; + obj.nextOwnerMask = objData.NextOwnerMask; + obj.ownershipCost = objData.OwnershipCost; + obj.saleType = objData.SaleType; + obj.salePrice = objData.SalePrice; + obj.aggregatePerms = objData.AggregatePerms; + obj.aggregatePermTextures = objData.AggregatePermTextures; + obj.aggregatePermTexturesOwner = objData.AggregatePermTexturesOwner; + obj.category = objData.Category; + obj.inventorySerial = objData.InventorySerial; + obj.itemID = objData.ItemID; + obj.folderID = objData.FolderID; + obj.fromTaskID = objData.FromTaskID; + obj.lastOwnerID = objData.LastOwnerID; + obj.name = Utils.BufferToStringSimple(objData.Name); + obj.description = Utils.BufferToStringSimple(objData.Description); + obj.touchName = Utils.BufferToStringSimple(objData.TouchName); + obj.sitName = Utils.BufferToStringSimple(objData.SitName); + obj.textureID = Utils.BufferToStringSimple(objData.TextureID); + obj.resolvedAt = new Date().getTime() / 1000; + delete uuidMap[objDataUUID]; + found = true; + + // console.log(obj.name + ' (' + resolved + ' of ' + objects.length + ')'); + } + } + if (Object.keys(uuidMap).length === 0) + { + return FilterResponse.Finish; + } + if (!found) + { + return FilterResponse.NoMatch; + } + else + { + return FilterResponse.Match; + } + }); + } + } + + private async resolveObjects(objects: GameObject[]) + { + // First, create a map of all object IDs + const objs: {[key: number]: GameObject} = {}; + const scanObject = function(obj: GameObject) + { + const localID = obj.ID; + if (!objs[localID]) + { + objs[localID] = obj; + if (obj.children) + { + for (const child of obj.children) + { + scanObject(child); + } + } + } + }; + for (const obj of objects) + { + scanObject(obj); + } + + const resolveTime = new Date().getTime() / 1000; + let objectList = []; + let totalRemaining = 0; + try + { + for (const k of Object.keys(objs)) + { + const ky = parseInt(k, 10); + if (objs[ky] !== undefined) + { + const o = objs[ky]; + if (o.resolvedAt === undefined) + { + o.resolvedAt = 0; + } + if (o.resolvedAt !== undefined && o.resolvedAt < resolveTime && o.PCode !== PCode.Avatar) + { + objs[ky].name = undefined; + totalRemaining++; + objectList.push(objs[ky]); + if (objectList.length > 254) + { + try + { + await this.selectObjects(objectList); + await this.deselectObjects(objectList); + for (const chk of objectList) + { + if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime) + { + totalRemaining--; + } + } + } + catch (ignore) + { + + } + finally + { + objectList = []; + } + } + } + } + } + if (objectList.length > 0) + { + await this.selectObjects(objectList); + await this.deselectObjects(objectList); + for (const chk of objectList) + { + if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime) + { + totalRemaining --; + } + } + } + } + catch (ignore) + { + + } + finally + { + if (totalRemaining < 1) + { + totalRemaining = 0; + for (const obj of objectList) + { + if (obj.resolvedAt === undefined || obj.resolvedAt < resolveTime) + { + totalRemaining++; + } + } + if (totalRemaining > 0) + { + console.error(totalRemaining + ' objects could not be resolved'); + } + } + } + } + + async getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number, resolve: boolean = false): Promise + { + const objs = this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ); + if (resolve) + { + console.log('Resolving ' + objs.length + ' objects'); + await this.resolveObjects(objs); + } + return objs; } async grabObject(localID: number | UUID, @@ -51,7 +324,7 @@ export class RegionCommands extends CommandsBase { if (localID instanceof UUID) { - const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID); + const obj: GameObject = this.currentRegion.objects.getObjectByUUID(localID); localID = obj.ID; } const msg = new ObjectGrabMessage(); @@ -88,7 +361,7 @@ export class RegionCommands extends CommandsBase { if (localID instanceof UUID) { - const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID); + const obj: GameObject = this.currentRegion.objects.getObjectByUUID(localID); localID = obj.ID; } const msg = new ObjectDeGrabMessage(); @@ -126,7 +399,7 @@ export class RegionCommands extends CommandsBase // For some reason this message takes a UUID when the others take a LocalID - wtf? if (!(localID instanceof UUID)) { - const obj: IGameObject = this.currentRegion.objects.getObjectByLocalID(localID); + const obj: GameObject = this.currentRegion.objects.getObjectByLocalID(localID); localID = obj.FullID; } const msg = new ObjectGrabUpdateMessage(); @@ -165,7 +438,7 @@ export class RegionCommands extends CommandsBase { if (localID instanceof UUID) { - const obj: IGameObject = this.currentRegion.objects.getObjectByUUID(localID); + const obj: GameObject = this.currentRegion.objects.getObjectByUUID(localID); localID = obj.ID; } await this.grabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal); diff --git a/lib/classes/interfaces/IGameObject.ts b/lib/classes/interfaces/IGameObject.ts deleted file mode 100644 index a12b29c..0000000 --- a/lib/classes/interfaces/IGameObject.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {ITreeBoundingBox} from './ITreeBoundingBox'; -import {UUID} from '../UUID'; -import {PCode} from '../../enums/PCode'; - -export interface IGameObject -{ - ID: number; - FullID: UUID; - ParentID: number; - OwnerID: UUID; - IsAttachment: boolean; - PCode: PCode; - rtreeEntry?: ITreeBoundingBox; - hasNameValueEntry(key: string): boolean; - getNameValueEntry(key: string): string; -} diff --git a/lib/classes/interfaces/IObjectStore.ts b/lib/classes/interfaces/IObjectStore.ts index f9235af..1729ab7 100644 --- a/lib/classes/interfaces/IObjectStore.ts +++ b/lib/classes/interfaces/IObjectStore.ts @@ -1,14 +1,14 @@ -import {IGameObject} from './IGameObject'; import {RBush3D} from 'rbush-3d/dist'; -import {GameObjectFull} from '../GameObjectFull'; import {UUID} from '../UUID'; +import {GameObject} from '../GameObject'; export interface IObjectStore { rtree?: RBush3D; - getObjectsByParent(parentID: number): IGameObject[]; + getObjectsByParent(parentID: number): GameObject[]; shutdown(): void; - getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObjectFull[]; - getObjectByUUID(fullID: UUID): IGameObject; - getObjectByLocalID(ID: number): IGameObject; + getObjectsInArea(minX: number, maxX: number, minY: number, maxY: number, minZ: number, maxZ: number): GameObject[]; + getObjectByUUID(fullID: UUID): GameObject; + getObjectByLocalID(ID: number): GameObject; + getNumberOfObjects(): number; } diff --git a/lib/classes/interfaces/ITreeBoundingBox.ts b/lib/classes/interfaces/ITreeBoundingBox.ts index 1022e18..17aca0e 100644 --- a/lib/classes/interfaces/ITreeBoundingBox.ts +++ b/lib/classes/interfaces/ITreeBoundingBox.ts @@ -1,7 +1,7 @@ import {BBox} from 'rbush-3d/dist'; -import {IGameObject} from './IGameObject'; +import {GameObject} from '../GameObject'; export interface ITreeBoundingBox extends BBox { - gameObject: IGameObject; + gameObject: GameObject; } diff --git a/package-lock.json b/package-lock.json index c19017a..175a307 100644 --- a/package-lock.json +++ b/package-lock.json @@ -71,6 +71,12 @@ "@types/node": "*" } }, + "@types/tiny-async-pool": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/tiny-async-pool/-/tiny-async-pool-1.0.0.tgz", + "integrity": "sha512-d8RK1jg/piCgv5/jD8ta8uJOE10tU8MWExzL1Kf1kOjMaTuL5cW0eZ9ax001SSYa4Ecg6xzZBh/jM4GB7+5OAg==", + "dev": true + }, "@types/tough-cookie": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz", @@ -167,6 +173,10 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "assertion": { + "version": "github:rxaviers/assertion#ea0449073d2c9e276c447f03df0fa021228de11b", + "from": "github:rxaviers/assertion" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -815,8 +825,7 @@ "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", - "dev": true + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, "source-map": { "version": "0.6.1", @@ -874,6 +883,15 @@ "has-flag": "^3.0.0" } }, + "tiny-async-pool": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tiny-async-pool/-/tiny-async-pool-1.0.1.tgz", + "integrity": "sha512-nqqQJ3ZwO/ajCk9hJisYWiW1pKgGZqxQPk2Q/2rzL84GyaFZ3N75sYcvpM+T6OYndgM4UqnezmGURHzQq7D64w==", + "requires": { + "assertion": "github:rxaviers/assertion#ea0449073d2c9e276c447f03df0fa021228de11b", + "semver": "^5.5.0" + } + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", diff --git a/package.json b/package.json index 48a520c..f6bff14 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@types/mocha": "^5.2.5", "@types/node": "^10.11.6", "@types/request": "^2.47.1", + "@types/tiny-async-pool": "^1.0.0", "@types/uuid": "^3.4.4", "@types/validator": "^9.4.2", "@types/xml": "^1.0.2", @@ -45,6 +46,7 @@ "rbush-3d": "0.0.4", "request": "^2.88.0", "rxjs": "^6.3.3", + "tiny-async-pool": "^1.0.1", "uuid": "^3.3.2", "validator": "^10.8.0", "xml": "^1.0.1",