@caspertech/node-metaverse 0.7.40 → 0.7.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/examples/Camera/Camera.js +3 -14
- package/dist/examples/Camera/Camera.js.map +1 -1
- package/dist/examples/ExampleBot.js +66 -87
- package/dist/examples/ExampleBot.js.map +1 -1
- package/dist/examples/Friends/Friends.js +29 -44
- package/dist/examples/Friends/Friends.js.map +1 -1
- package/dist/examples/Grid/Name2Key.js +25 -36
- package/dist/examples/Grid/Name2Key.js.map +1 -1
- package/dist/examples/Groups/Group.js +42 -55
- package/dist/examples/Groups/Group.js.map +1 -1
- package/dist/examples/Groups/GroupChat.js +55 -68
- package/dist/examples/Groups/GroupChat.js.map +1 -1
- package/dist/examples/InstantMessages/InstantMessages.js +8 -21
- package/dist/examples/InstantMessages/InstantMessages.js.map +1 -1
- package/dist/examples/Inventory/Inventory.js +80 -97
- package/dist/examples/Inventory/Inventory.js.map +1 -1
- package/dist/examples/MFA/MFA.js +24 -40
- package/dist/examples/MFA/MFA.js.map +1 -1
- package/dist/examples/Money/Money.js +28 -41
- package/dist/examples/Money/Money.js.map +1 -1
- package/dist/examples/Objects/TaskInventory.js +13 -24
- package/dist/examples/Objects/TaskInventory.js.map +1 -1
- package/dist/examples/Region/Agents.js +6 -17
- package/dist/examples/Region/Agents.js.map +1 -1
- package/dist/examples/Region/Estate.js +9 -20
- package/dist/examples/Region/Estate.js.map +1 -1
- package/dist/examples/Region/Parcels.js +12 -23
- package/dist/examples/Region/Parcels.js.map +1 -1
- package/dist/examples/Region/Region.js +2 -13
- package/dist/examples/Region/Region.js.map +1 -1
- package/dist/examples/Region/Settings.js +15 -0
- package/dist/examples/Region/Settings.js.map +1 -0
- package/dist/examples/Teleports/Teleports.js +22 -35
- package/dist/examples/Teleports/Teleports.js.map +1 -1
- package/dist/lib/Bot.d.ts +14 -14
- package/dist/lib/Bot.js +217 -231
- package/dist/lib/Bot.js.map +1 -1
- package/dist/lib/LoginHandler.d.ts +3 -3
- package/dist/lib/LoginHandler.js +106 -116
- package/dist/lib/LoginHandler.js.map +1 -1
- package/dist/lib/classes/Agent.d.ts +23 -35
- package/dist/lib/classes/Agent.js +96 -108
- package/dist/lib/classes/Agent.js.map +1 -1
- package/dist/lib/classes/AssetMap.d.ts +18 -95
- package/dist/lib/classes/AssetMap.js +86 -16
- package/dist/lib/classes/AssetMap.js.map +1 -1
- package/dist/lib/classes/AssetRegistry.d.ts +31 -0
- package/dist/lib/classes/AssetRegistry.js +26 -0
- package/dist/lib/classes/AssetRegistry.js.map +1 -0
- package/dist/lib/classes/AssetTypeRegistry.d.ts +21 -0
- package/dist/lib/classes/AssetTypeRegistry.js +81 -0
- package/dist/lib/classes/AssetTypeRegistry.js.map +1 -0
- package/dist/lib/classes/BVH.js.map +1 -1
- package/dist/lib/classes/BVHJoint.js.map +1 -1
- package/dist/lib/classes/BVHJointKeyframe.d.ts +1 -1
- package/dist/lib/classes/BatchQueue.d.ts +2 -2
- package/dist/lib/classes/BatchQueue.js +66 -80
- package/dist/lib/classes/BatchQueue.js.map +1 -1
- package/dist/lib/classes/BatchQueue.spec.js +17 -26
- package/dist/lib/classes/BatchQueue.spec.js.map +1 -1
- package/dist/lib/classes/BinaryReader.d.ts +66 -0
- package/dist/lib/classes/BinaryReader.js +304 -0
- package/dist/lib/classes/BinaryReader.js.map +1 -0
- package/dist/lib/classes/BinaryReader.spec.d.ts +1 -0
- package/dist/lib/classes/BinaryReader.spec.js +241 -0
- package/dist/lib/classes/BinaryReader.spec.js.map +1 -0
- package/dist/lib/classes/BinaryWriter.d.ts +34 -0
- package/dist/lib/classes/BinaryWriter.js +192 -0
- package/dist/lib/classes/BinaryWriter.js.map +1 -0
- package/dist/lib/classes/BinaryWriter.spec.d.ts +1 -0
- package/dist/lib/classes/BinaryWriter.spec.js +328 -0
- package/dist/lib/classes/BinaryWriter.spec.js.map +1 -0
- package/dist/lib/classes/BitPack.d.ts +2 -2
- package/dist/lib/classes/BitPack.js +1 -1
- package/dist/lib/classes/BitPack.js.map +1 -1
- package/dist/lib/classes/BuildMap.d.ts +6 -6
- package/dist/lib/classes/BuildMap.js.map +1 -1
- package/dist/lib/classes/Caps.d.ts +18 -24
- package/dist/lib/classes/Caps.js +278 -297
- package/dist/lib/classes/Caps.js.map +1 -1
- package/dist/lib/classes/Circuit.d.ts +20 -28
- package/dist/lib/classes/Circuit.js +104 -91
- package/dist/lib/classes/Circuit.js.map +1 -1
- package/dist/lib/classes/ClientCommands.d.ts +3 -3
- package/dist/lib/classes/ClientCommands.js.map +1 -1
- package/dist/lib/classes/ClientEvents.d.ts +41 -32
- package/dist/lib/classes/ClientEvents.js +65 -0
- package/dist/lib/classes/ClientEvents.js.map +1 -1
- package/dist/lib/classes/CoalescedGameObject.d.ts +2 -2
- package/dist/lib/classes/CoalescedGameObject.js +37 -49
- package/dist/lib/classes/CoalescedGameObject.js.map +1 -1
- package/dist/lib/classes/Color4.d.ts +2 -2
- package/dist/lib/classes/Color4.js +42 -42
- package/dist/lib/classes/Color4.js.map +1 -1
- package/dist/lib/classes/Comms.d.ts +3 -3
- package/dist/lib/classes/Comms.js +236 -236
- package/dist/lib/classes/Comms.js.map +1 -1
- package/dist/lib/classes/ConcurrentQueue.d.ts +3 -3
- package/dist/lib/classes/ConcurrentQueue.js +16 -11
- package/dist/lib/classes/ConcurrentQueue.js.map +1 -1
- package/dist/lib/classes/EventQueueClient.d.ts +6 -6
- package/dist/lib/classes/EventQueueClient.js +189 -201
- package/dist/lib/classes/EventQueueClient.js.map +1 -1
- package/dist/lib/classes/GroupBan.d.ts +3 -3
- package/dist/lib/classes/GroupBan.js.map +1 -1
- package/dist/lib/classes/GroupMember.d.ts +2 -2
- package/dist/lib/classes/GroupRole.d.ts +2 -2
- package/dist/lib/classes/IPAddress.d.ts +3 -2
- package/dist/lib/classes/IPAddress.js +14 -13
- package/dist/lib/classes/IPAddress.js.map +1 -1
- package/dist/lib/classes/Inventory.d.ts +7 -15
- package/dist/lib/classes/Inventory.js +69 -80
- package/dist/lib/classes/Inventory.js.map +1 -1
- package/dist/lib/classes/InventoryFolder.d.ts +11 -11
- package/dist/lib/classes/InventoryFolder.js +544 -626
- package/dist/lib/classes/InventoryFolder.js.map +1 -1
- package/dist/lib/classes/InventoryItem.d.ts +15 -11
- package/dist/lib/classes/InventoryItem.js +494 -486
- package/dist/lib/classes/InventoryItem.js.map +1 -1
- package/dist/lib/classes/InventoryTypeRegistry.d.ts +19 -0
- package/dist/lib/classes/InventoryTypeRegistry.js +69 -0
- package/dist/lib/classes/InventoryTypeRegistry.js.map +1 -0
- package/dist/lib/classes/LLGLTFMaterial.d.ts +1 -1
- package/dist/lib/classes/LLGLTFMaterial.js +2 -2
- package/dist/lib/classes/LLGLTFMaterial.js.map +1 -1
- package/dist/lib/classes/LLGLTFMaterial.spec.js +17 -18
- package/dist/lib/classes/LLGLTFMaterial.spec.js.map +1 -1
- package/dist/lib/classes/LLGLTFMaterialOverride.d.ts +1 -1
- package/dist/lib/classes/LLGLTFMaterialOverride.js +119 -118
- package/dist/lib/classes/LLGLTFMaterialOverride.js.map +1 -1
- package/dist/lib/classes/LLGLTFMaterialOverride.spec.js +70 -71
- package/dist/lib/classes/LLGLTFMaterialOverride.spec.js.map +1 -1
- package/dist/lib/classes/LLGesture.d.ts +1 -1
- package/dist/lib/classes/LLGesture.js +1 -1
- package/dist/lib/classes/LLGesture.js.map +1 -1
- package/dist/lib/classes/LLGestureAnimationStep.d.ts +1 -1
- package/dist/lib/classes/LLGestureAnimationStep.js.map +1 -1
- package/dist/lib/classes/LLGestureChatStep.js.map +1 -1
- package/dist/lib/classes/LLGestureSoundStep.d.ts +1 -1
- package/dist/lib/classes/LLGestureSoundStep.js.map +1 -1
- package/dist/lib/classes/LLGestureStep.d.ts +1 -1
- package/dist/lib/classes/LLGestureWaitStep.js.map +1 -1
- package/dist/lib/classes/LLLindenText.d.ts +2 -4
- package/dist/lib/classes/LLLindenText.js +12 -8
- package/dist/lib/classes/LLLindenText.js.map +1 -1
- package/dist/lib/classes/LLSettings.d.ts +98 -83
- package/dist/lib/classes/LLSettings.js +240 -83
- package/dist/lib/classes/LLSettings.js.map +1 -1
- package/dist/lib/classes/LLSettings.spec.d.ts +1 -0
- package/dist/lib/classes/LLSettings.spec.js +27 -0
- package/dist/lib/classes/LLSettings.spec.js.map +1 -0
- package/dist/lib/classes/LLWearable.d.ts +4 -8
- package/dist/lib/classes/LLWearable.js +1 -1
- package/dist/lib/classes/LLWearable.js.map +1 -1
- package/dist/lib/classes/Logger.d.ts +3 -3
- package/dist/lib/classes/Logger.js +1 -1
- package/dist/lib/classes/Logger.js.map +1 -1
- package/dist/lib/classes/LoginParameters.js.map +1 -1
- package/dist/lib/classes/LoginResponse.d.ts +4 -9
- package/dist/lib/classes/LoginResponse.js +120 -113
- package/dist/lib/classes/LoginResponse.js.map +1 -1
- package/dist/lib/classes/MapBlock.d.ts +2 -2
- package/dist/lib/classes/MessageBase.d.ts +5 -5
- package/dist/lib/classes/MessageClasses.js.map +1 -1
- package/dist/lib/classes/ObjectResolver.d.ts +6 -6
- package/dist/lib/classes/ObjectResolver.js +127 -152
- package/dist/lib/classes/ObjectResolver.js.map +1 -1
- package/dist/lib/classes/ObjectStoreFull.d.ts +9 -9
- package/dist/lib/classes/ObjectStoreFull.js +176 -192
- package/dist/lib/classes/ObjectStoreFull.js.map +1 -1
- package/dist/lib/classes/ObjectStoreLite.d.ts +29 -31
- package/dist/lib/classes/ObjectStoreLite.js +485 -494
- package/dist/lib/classes/ObjectStoreLite.js.map +1 -1
- package/dist/lib/classes/Packet.d.ts +2 -2
- package/dist/lib/classes/Packet.js +2 -2
- package/dist/lib/classes/Packet.js.map +1 -1
- package/dist/lib/classes/ParticleSystem.js +1 -1
- package/dist/lib/classes/ParticleSystem.js.map +1 -1
- package/dist/lib/classes/PrimFacesHelper.d.ts +14 -0
- package/dist/lib/classes/PrimFacesHelper.js +75 -0
- package/dist/lib/classes/PrimFacesHelper.js.map +1 -0
- package/dist/lib/classes/Quaternion.d.ts +31 -6
- package/dist/lib/classes/Quaternion.js +236 -48
- package/dist/lib/classes/Quaternion.js.map +1 -1
- package/dist/lib/classes/Region.d.ts +23 -22
- package/dist/lib/classes/Region.js +453 -515
- package/dist/lib/classes/Region.js.map +1 -1
- package/dist/lib/classes/TarArchive.d.ts +1 -1
- package/dist/lib/classes/TarArchive.js.map +1 -1
- package/dist/lib/classes/TarFile.js +1 -1
- package/dist/lib/classes/TarFile.js.map +1 -1
- package/dist/lib/classes/TarReader.d.ts +1 -2
- package/dist/lib/classes/TarReader.js +15 -17
- package/dist/lib/classes/TarReader.js.map +1 -1
- package/dist/lib/classes/TarWriter.d.ts +1 -1
- package/dist/lib/classes/TarWriter.js +51 -68
- package/dist/lib/classes/TarWriter.js.map +1 -1
- package/dist/lib/classes/TextureEntry.d.ts +2 -3
- package/dist/lib/classes/TextureEntry.js +12 -12
- package/dist/lib/classes/TextureEntry.js.map +1 -1
- package/dist/lib/classes/TextureEntryFace.d.ts +4 -4
- package/dist/lib/classes/TextureEntryFace.js.map +1 -1
- package/dist/lib/classes/UUID.d.ts +2 -2
- package/dist/lib/classes/UUID.js +28 -28
- package/dist/lib/classes/UUID.js.map +1 -1
- package/dist/lib/classes/Utils.d.ts +2 -11
- package/dist/lib/classes/Utils.js +72 -328
- package/dist/lib/classes/Utils.js.map +1 -1
- package/dist/lib/classes/Vector2.d.ts +35 -6
- package/dist/lib/classes/Vector2.js +192 -28
- package/dist/lib/classes/Vector2.js.map +1 -1
- package/dist/lib/classes/Vector3.d.ts +38 -6
- package/dist/lib/classes/Vector3.js +229 -48
- package/dist/lib/classes/Vector3.js.map +1 -1
- package/dist/lib/classes/Vector4.d.ts +36 -6
- package/dist/lib/classes/Vector4.js +225 -21
- package/dist/lib/classes/Vector4.js.map +1 -1
- package/dist/lib/classes/Wearable.d.ts +1 -1
- package/dist/lib/classes/Zerocoder.js +2 -2
- package/dist/lib/classes/Zerocoder.js.map +1 -1
- package/dist/lib/classes/commands/AgentCommands.d.ts +7 -5
- package/dist/lib/classes/commands/AgentCommands.js +60 -76
- package/dist/lib/classes/commands/AgentCommands.js.map +1 -1
- package/dist/lib/classes/commands/AssetCommands.d.ts +5 -10
- package/dist/lib/classes/commands/AssetCommands.js +176 -179
- package/dist/lib/classes/commands/AssetCommands.js.map +1 -1
- package/dist/lib/classes/commands/CommandsBase.d.ts +4 -4
- package/dist/lib/classes/commands/CommandsBase.js.map +1 -1
- package/dist/lib/classes/commands/CommunicationsCommands.d.ts +3 -3
- package/dist/lib/classes/commands/CommunicationsCommands.js +350 -426
- package/dist/lib/classes/commands/CommunicationsCommands.js.map +1 -1
- package/dist/lib/classes/commands/FriendCommands.d.ts +9 -10
- package/dist/lib/classes/commands/FriendCommands.js +238 -236
- package/dist/lib/classes/commands/FriendCommands.js.map +1 -1
- package/dist/lib/classes/commands/GridCommands.d.ts +3 -3
- package/dist/lib/classes/commands/GridCommands.js +299 -336
- package/dist/lib/classes/commands/GridCommands.js.map +1 -1
- package/dist/lib/classes/commands/GroupCommands.d.ts +2 -2
- package/dist/lib/classes/commands/GroupCommands.js +293 -336
- package/dist/lib/classes/commands/GroupCommands.js.map +1 -1
- package/dist/lib/classes/commands/InventoryCommands.d.ts +4 -4
- package/dist/lib/classes/commands/InventoryCommands.js +54 -69
- package/dist/lib/classes/commands/InventoryCommands.js.map +1 -1
- package/dist/lib/classes/commands/MovementCommands.d.ts +2 -2
- package/dist/lib/classes/commands/MovementCommands.js +23 -38
- package/dist/lib/classes/commands/MovementCommands.js.map +1 -1
- package/dist/lib/classes/commands/NetworkCommands.js +35 -46
- package/dist/lib/classes/commands/NetworkCommands.js.map +1 -1
- package/dist/lib/classes/commands/ParcelCommands.d.ts +4 -4
- package/dist/lib/classes/commands/ParcelCommands.js +64 -77
- package/dist/lib/classes/commands/ParcelCommands.js.map +1 -1
- package/dist/lib/classes/commands/RegionCommands.d.ts +11 -10
- package/dist/lib/classes/commands/RegionCommands.js +1126 -1211
- package/dist/lib/classes/commands/RegionCommands.js.map +1 -1
- package/dist/lib/classes/commands/TeleportCommands.d.ts +8 -8
- package/dist/lib/classes/commands/TeleportCommands.js +58 -58
- package/dist/lib/classes/commands/TeleportCommands.js.map +1 -1
- package/dist/lib/classes/interfaces/IGameObjectData.d.ts +18 -20
- package/dist/lib/classes/interfaces/ILandBlock.d.ts +2 -2
- package/dist/lib/classes/interfaces/IObjectStore.d.ts +12 -12
- package/dist/lib/classes/interfaces/IResolveJob.d.ts +2 -2
- package/dist/lib/classes/interfaces/ITreeBoundingBox.d.ts +2 -2
- package/dist/lib/classes/llsd/LLSD.d.ts +12 -0
- package/dist/lib/classes/llsd/LLSD.js +128 -0
- package/dist/lib/classes/llsd/LLSD.js.map +1 -0
- package/dist/lib/classes/llsd/LLSD.spec.d.ts +1 -0
- package/dist/lib/classes/llsd/LLSD.spec.js +249 -0
- package/dist/lib/classes/llsd/LLSD.spec.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDArray.d.ts +26 -3
- package/dist/lib/classes/llsd/LLSDArray.js +182 -6
- package/dist/lib/classes/llsd/LLSDArray.js.map +1 -1
- package/dist/lib/classes/llsd/LLSDBinary.d.ts +7 -0
- package/dist/lib/classes/llsd/LLSDBinary.js +114 -0
- package/dist/lib/classes/llsd/LLSDBinary.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDInteger.d.ts +9 -0
- package/dist/lib/classes/llsd/LLSDInteger.js +25 -0
- package/dist/lib/classes/llsd/LLSDInteger.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDMap.d.ts +16 -5
- package/dist/lib/classes/llsd/LLSDMap.js +197 -16
- package/dist/lib/classes/llsd/LLSDMap.js.map +1 -1
- package/dist/lib/classes/llsd/LLSDNotation.d.ts +11 -0
- package/dist/lib/classes/llsd/LLSDNotation.js +271 -0
- package/dist/lib/classes/llsd/LLSDNotation.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDReal.d.ts +10 -0
- package/dist/lib/classes/llsd/LLSDReal.js +71 -0
- package/dist/lib/classes/llsd/LLSDReal.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDToken.d.ts +1 -1
- package/dist/lib/classes/llsd/LLSDTokenContainer.d.ts +2 -2
- package/dist/lib/classes/llsd/LLSDTokenGenerator.d.ts +1 -1
- package/dist/lib/classes/llsd/LLSDTokenSpec.d.ts +1 -1
- package/dist/lib/classes/llsd/LLSDTokenType.d.ts +18 -18
- package/dist/lib/classes/llsd/LLSDTokenType.js +18 -18
- package/dist/lib/classes/llsd/LLSDTokenType.js.map +1 -1
- package/dist/lib/classes/llsd/LLSDType.d.ts +6 -3
- package/dist/lib/classes/llsd/LLSDURI.d.ts +7 -0
- package/dist/lib/classes/llsd/LLSDURI.js +19 -0
- package/dist/lib/classes/llsd/LLSDURI.js.map +1 -0
- package/dist/lib/classes/llsd/LLSDXML.d.ts +5 -0
- package/dist/lib/classes/llsd/LLSDXML.js +245 -0
- package/dist/lib/classes/llsd/LLSDXML.js.map +1 -0
- package/dist/lib/classes/messages/ObjectUpdate.d.ts +4 -5
- package/dist/lib/classes/messages/ObjectUpdate.js +115 -115
- package/dist/lib/classes/messages/ObjectUpdate.js.map +1 -1
- package/dist/lib/classes/messages/SimStats.d.ts +3 -2
- package/dist/lib/classes/messages/SimStats.js +17 -17
- package/dist/lib/classes/messages/SimStats.js.map +1 -1
- package/dist/lib/classes/public/Avatar.d.ts +4 -4
- package/dist/lib/classes/public/Avatar.js +39 -33
- package/dist/lib/classes/public/Avatar.js.map +1 -1
- package/dist/lib/classes/public/AvatarQueryResult.d.ts +4 -4
- package/dist/lib/classes/public/AvatarQueryResult.js.map +1 -1
- package/dist/lib/classes/public/ExtendedMeshData.d.ts +1 -1
- package/dist/lib/classes/public/ExtendedMeshData.js.map +1 -1
- package/dist/lib/classes/public/ExtraParams.d.ts +6 -6
- package/dist/lib/classes/public/ExtraParams.js +36 -39
- package/dist/lib/classes/public/ExtraParams.js.map +1 -1
- package/dist/lib/classes/public/ExtraParams.spec.js +2 -11
- package/dist/lib/classes/public/ExtraParams.spec.js.map +1 -1
- package/dist/lib/classes/public/FlexibleData.js.map +1 -1
- package/dist/lib/classes/public/Friend.js.map +1 -1
- package/dist/lib/classes/public/GameObject.d.ts +23 -21
- package/dist/lib/classes/public/GameObject.js +1294 -1306
- package/dist/lib/classes/public/GameObject.js.map +1 -1
- package/dist/lib/classes/public/GameObject.spec.js +8 -18
- package/dist/lib/classes/public/GameObject.spec.js.map +1 -1
- package/dist/lib/classes/public/LLMesh.d.ts +5 -7
- package/dist/lib/classes/public/LLMesh.js +194 -216
- package/dist/lib/classes/public/LLMesh.js.map +1 -1
- package/dist/lib/classes/public/LightData.js.map +1 -1
- package/dist/lib/classes/public/LightImageData.js.map +1 -1
- package/dist/lib/classes/public/Material.js +45 -56
- package/dist/lib/classes/public/Material.js.map +1 -1
- package/dist/lib/classes/public/MeshData.js.map +1 -1
- package/dist/lib/classes/public/Parcel.d.ts +4 -4
- package/dist/lib/classes/public/Parcel.js +1 -2
- package/dist/lib/classes/public/Parcel.js.map +1 -1
- package/dist/lib/classes/public/ReflectionProbeData.d.ts +1 -1
- package/dist/lib/classes/public/ReflectionProbeData.js.map +1 -1
- package/dist/lib/classes/public/RegionEnvironment.d.ts +14 -13
- package/dist/lib/classes/public/RegionEnvironment.js +94 -53
- package/dist/lib/classes/public/RegionEnvironment.js.map +1 -1
- package/dist/lib/classes/public/RegionEnvironmentSky.d.ts +2 -0
- package/dist/lib/classes/public/RegionEnvironmentSky.js +7 -0
- package/dist/lib/classes/public/RegionEnvironmentSky.js.map +1 -0
- package/dist/lib/classes/public/RegionEnvironmentWater.d.ts +2 -0
- package/dist/lib/classes/public/RegionEnvironmentWater.js +7 -0
- package/dist/lib/classes/public/RegionEnvironmentWater.js.map +1 -0
- package/dist/lib/classes/public/RenderMaterialData.js.map +1 -1
- package/dist/lib/classes/public/RenderMaterialParam.d.ts +1 -1
- package/dist/lib/classes/public/SculptData.js.map +1 -1
- package/dist/lib/classes/public/TextureAnim.js +2 -1
- package/dist/lib/classes/public/TextureAnim.js.map +1 -1
- package/dist/lib/classes/public/interfaces/GlobalPosition.d.ts +1 -1
- package/dist/lib/classes/public/interfaces/LLPhysicsConvex.d.ts +1 -1
- package/dist/lib/classes/public/interfaces/LLSkin.d.ts +1 -1
- package/dist/lib/classes/public/interfaces/LLSubMesh.d.ts +3 -5
- package/dist/lib/classes/public/interfaces/MapLocation.d.ts +3 -3
- package/dist/lib/classes/public/interfaces/RegionEnvironmentSkyLLSD.d.ts +26 -0
- package/dist/lib/classes/public/interfaces/RegionEnvironmentSkyLLSD.js +3 -0
- package/dist/lib/classes/public/interfaces/RegionEnvironmentSkyLLSD.js.map +1 -0
- package/dist/lib/classes/public/interfaces/RegionEnvironmentWaterLLSD.d.ts +15 -0
- package/dist/lib/classes/public/interfaces/RegionEnvironmentWaterLLSD.js +3 -0
- package/dist/lib/classes/public/interfaces/RegionEnvironmentWaterLLSD.js.map +1 -0
- package/dist/lib/classes/public/interfaces/SkyPreset.d.ts +3 -3
- package/dist/lib/classes/public/interfaces/WaterPreset.d.ts +4 -4
- package/dist/lib/deviceToken.json +1 -0
- package/dist/lib/enums/AssetType.d.ts +6 -4
- package/dist/lib/enums/AssetType.js +5 -3
- package/dist/lib/enums/AssetType.js.map +1 -1
- package/dist/lib/enums/AttachmentPoint.d.ts +0 -1
- package/dist/lib/enums/AttachmentPoint.js +0 -1
- package/dist/lib/enums/AttachmentPoint.js.map +1 -1
- package/dist/lib/enums/InventoryType.d.ts +3 -5
- package/dist/lib/enums/InventoryType.js +2 -4
- package/dist/lib/enums/InventoryType.js.map +1 -1
- package/dist/lib/enums/LayerType.d.ts +1 -1
- package/dist/lib/enums/LayerType.js +1 -1
- package/dist/lib/events/AvatarPropertiesReplyEvent.d.ts +1 -1
- package/dist/lib/events/BalanceUpdatedEvent.d.ts +2 -2
- package/dist/lib/events/BulkUpdateInventoryEvent.d.ts +2 -2
- package/dist/lib/events/BulkUpdateInventoryEvent.js.map +1 -1
- package/dist/lib/events/ChatEvent.d.ts +5 -5
- package/dist/lib/events/FriendOnlineEvent.d.ts +1 -1
- package/dist/lib/events/FriendRemovedEvent.d.ts +1 -1
- package/dist/lib/events/FriendRequestEvent.d.ts +1 -1
- package/dist/lib/events/FriendResponseEvent.d.ts +1 -1
- package/dist/lib/events/FriendRightsEvent.d.ts +2 -2
- package/dist/lib/events/GroupChatClosedEvent.d.ts +1 -1
- package/dist/lib/events/GroupChatEvent.d.ts +1 -1
- package/dist/lib/events/GroupChatSessionAgentListEvent.d.ts +1 -1
- package/dist/lib/events/GroupChatSessionJoinEvent.d.ts +1 -1
- package/dist/lib/events/GroupInviteEvent.d.ts +1 -1
- package/dist/lib/events/GroupNoticeEvent.d.ts +1 -1
- package/dist/lib/events/GroupProfileReplyEvent.d.ts +2 -2
- package/dist/lib/events/InstantMessageEvent.d.ts +3 -3
- package/dist/lib/events/InventoryOfferedEvent.d.ts +3 -3
- package/dist/lib/events/InventoryResponseEvent.d.ts +1 -1
- package/dist/lib/events/LandStatsEvent.d.ts +4 -4
- package/dist/lib/events/LandStatsEvent.js.map +1 -1
- package/dist/lib/events/LureEvent.d.ts +2 -2
- package/dist/lib/events/MapInfoRangeReplyEvent.d.ts +1 -1
- package/dist/lib/events/MapInfoReplyEvent.d.ts +2 -2
- package/dist/lib/events/NewObjectEvent.d.ts +2 -2
- package/dist/lib/events/ObjectKilledEvent.d.ts +2 -2
- package/dist/lib/events/ObjectPhysicsDataEvent.d.ts +1 -1
- package/dist/lib/events/ObjectResolvedEvent.d.ts +1 -1
- package/dist/lib/events/ObjectUpdatedEvent.d.ts +2 -2
- package/dist/lib/events/ParcelInfoReplyEvent.d.ts +3 -3
- package/dist/lib/events/ParcelPropertiesEvent.d.ts +3 -3
- package/dist/lib/events/RegionInfoReplyEvent.d.ts +2 -2
- package/dist/lib/events/ScriptDialogEvent.d.ts +1 -1
- package/dist/lib/events/SelectedObjectEvent.d.ts +1 -1
- package/dist/lib/events/TeleportEvent.d.ts +1 -1
- package/dist/lib/index.d.ts +6 -8
- package/dist/lib/index.js +4 -7
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/tsm/common.d.ts +1 -1
- package/dist/lib/tsm/common.js +3 -1
- package/dist/lib/tsm/common.js.map +1 -1
- package/dist/lib/tsm/mat2.d.ts +8 -8
- package/dist/lib/tsm/mat2.js +8 -7
- package/dist/lib/tsm/mat2.js.map +1 -1
- package/dist/lib/tsm/mat3.d.ts +7 -7
- package/dist/lib/tsm/mat3.js +8 -7
- package/dist/lib/tsm/mat3.js.map +1 -1
- package/dist/lib/tsm/mat4.d.ts +9 -9
- package/dist/lib/tsm/mat4.js +8 -7
- package/dist/lib/tsm/mat4.js.map +1 -1
- package/dist/lib/tsm/quat.d.ts +19 -19
- package/dist/lib/tsm/quat.js +69 -68
- package/dist/lib/tsm/quat.js.map +1 -1
- package/dist/lib/tsm/vec2.d.ts +13 -13
- package/dist/lib/tsm/vec2.js +30 -29
- package/dist/lib/tsm/vec2.js.map +1 -1
- package/dist/lib/tsm/vec3.d.ts +16 -16
- package/dist/lib/tsm/vec3.js +48 -47
- package/dist/lib/tsm/vec3.js.map +1 -1
- package/dist/lib/tsm/vec4.d.ts +22 -22
- package/dist/lib/tsm/vec4.js +94 -93
- package/dist/lib/tsm/vec4.js.map +1 -1
- package/eslint.config.mjs +104 -0
- package/examples/Inventory/Inventory.ts +4 -2
- package/examples/Money/Money.ts +6 -6
- package/examples/Objects/TaskInventory.ts +4 -3
- package/examples/Region/Settings.ts +19 -0
- package/package.json +10 -9
- package/.eslintrc +0 -224
- package/dist/lib/classes/llsd/LLSDNotationParser.d.ts +0 -9
- package/dist/lib/classes/llsd/LLSDNotationParser.js +0 -177
- package/dist/lib/classes/llsd/LLSDNotationParser.js.map +0 -1
- package/dist/lib/classes/llsd/LLSDNotationParser.spec.js +0 -167
- package/dist/lib/classes/llsd/LLSDNotationParser.spec.js.map +0 -1
- package/dist/lib/enums/AssetTypeLL.d.ts +0 -27
- package/dist/lib/enums/AssetTypeLL.js +0 -32
- package/dist/lib/enums/AssetTypeLL.js.map +0 -1
- package/dist/lib/enums/HTTPAssets.d.ts +0 -24
- package/dist/lib/enums/HTTPAssets.js +0 -29
- package/dist/lib/enums/HTTPAssets.js.map +0 -1
- /package/dist/{lib/classes/llsd/LLSDNotationParser.spec.d.ts → examples/Region/Settings.d.ts} +0 -0
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.RegionCommands = void 0;
|
|
13
4
|
const LLSD = require("@caspertech/llsd");
|
|
@@ -34,34 +25,35 @@ const Utils_1 = require("../Utils");
|
|
|
34
25
|
const UUID_1 = require("../UUID");
|
|
35
26
|
const Vector3_1 = require("../Vector3");
|
|
36
27
|
const CommandsBase_1 = require("./CommandsBase");
|
|
28
|
+
const PrimFacesHelper_1 = require("../PrimFacesHelper");
|
|
29
|
+
const Logger_1 = require("../Logger");
|
|
30
|
+
const AssetType_1 = require("../../enums/AssetType");
|
|
37
31
|
class RegionCommands extends CommandsBase_1.CommandsBase {
|
|
38
|
-
getRegionHandle(regionID) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
return responseMsg.ReplyBlock.RegionHandle;
|
|
32
|
+
async getRegionHandle(regionID) {
|
|
33
|
+
const { circuit } = this.currentRegion;
|
|
34
|
+
const msg = new RegionHandleRequest_1.RegionHandleRequestMessage();
|
|
35
|
+
msg.RequestBlock = {
|
|
36
|
+
RegionID: regionID,
|
|
37
|
+
};
|
|
38
|
+
circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
39
|
+
const responseMsg = await circuit.waitForMessage(Message_1.Message.RegionIDAndHandleReply, 10000, (filterMsg) => {
|
|
40
|
+
if (filterMsg.ReplyBlock.RegionID.toString() === regionID.toString()) {
|
|
41
|
+
return FilterResponse_1.FilterResponse.Finish;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return FilterResponse_1.FilterResponse.NoMatch;
|
|
45
|
+
}
|
|
55
46
|
});
|
|
47
|
+
return responseMsg.ReplyBlock.RegionHandle;
|
|
56
48
|
}
|
|
57
|
-
waitForHandshake(timeout = 10000) {
|
|
49
|
+
async waitForHandshake(timeout = 10000) {
|
|
58
50
|
return new Promise((resolve, reject) => {
|
|
59
51
|
if (this.currentRegion.handshakeComplete) {
|
|
60
52
|
resolve();
|
|
61
53
|
}
|
|
62
54
|
else {
|
|
63
|
-
let handshakeSubscription;
|
|
64
|
-
let timeoutTimer;
|
|
55
|
+
let handshakeSubscription = undefined;
|
|
56
|
+
let timeoutTimer = undefined;
|
|
65
57
|
handshakeSubscription = this.currentRegion.handshakeCompleteEvent.subscribe(() => {
|
|
66
58
|
if (timeoutTimer !== undefined) {
|
|
67
59
|
clearTimeout(timeoutTimer);
|
|
@@ -98,7 +90,7 @@ class RegionCommands extends CommandsBase_1.CommandsBase {
|
|
|
98
90
|
}
|
|
99
91
|
});
|
|
100
92
|
}
|
|
101
|
-
estateMessage(method, params) {
|
|
93
|
+
async estateMessage(method, params) {
|
|
102
94
|
const msg = new EstateOwnerMessage_1.EstateOwnerMessageMessage();
|
|
103
95
|
msg.AgentData = {
|
|
104
96
|
AgentID: this.agent.agentID,
|
|
@@ -118,10 +110,10 @@ class RegionCommands extends CommandsBase_1.CommandsBase {
|
|
|
118
110
|
const sequenceID = this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
119
111
|
return this.circuit.waitForAck(sequenceID, 10000);
|
|
120
112
|
}
|
|
121
|
-
restartRegion(secs) {
|
|
113
|
+
async restartRegion(secs) {
|
|
122
114
|
return this.estateMessage('restart', [String(secs)]);
|
|
123
115
|
}
|
|
124
|
-
simulatorMessage(message) {
|
|
116
|
+
async simulatorMessage(message) {
|
|
125
117
|
return this.estateMessage('simulatormessage', [
|
|
126
118
|
'-1',
|
|
127
119
|
'-1',
|
|
@@ -130,56 +122,54 @@ class RegionCommands extends CommandsBase_1.CommandsBase {
|
|
|
130
122
|
message
|
|
131
123
|
]);
|
|
132
124
|
}
|
|
133
|
-
cancelRestart() {
|
|
125
|
+
async cancelRestart() {
|
|
134
126
|
return this.restartRegion(-1);
|
|
135
127
|
}
|
|
136
128
|
getAvatarsInRegion() {
|
|
137
|
-
return
|
|
129
|
+
return Array.from(this.currentRegion.agents.values());
|
|
138
130
|
}
|
|
139
|
-
deselectObjects(objects) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
selectList.push(objects[x + y]);
|
|
148
|
-
}
|
|
131
|
+
async deselectObjects(objects) {
|
|
132
|
+
const selectLimit = 255;
|
|
133
|
+
if (objects.length > selectLimit) {
|
|
134
|
+
for (let x = 0; x < objects.length; x += selectLimit) {
|
|
135
|
+
const selectList = [];
|
|
136
|
+
for (let y = 0; y < selectLimit; y++) {
|
|
137
|
+
if (x + y < objects.length) {
|
|
138
|
+
selectList.push(objects[x + y]);
|
|
149
139
|
}
|
|
150
|
-
yield this.deselectObjects(selectList);
|
|
151
140
|
}
|
|
152
|
-
|
|
141
|
+
await this.deselectObjects(selectList);
|
|
153
142
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
if (skipped > 0) {
|
|
177
|
-
console.log('Skipped ' + String(skipped) + ' bad objects during deselection');
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const deselectObject = new ObjectDeselect_1.ObjectDeselectMessage();
|
|
147
|
+
deselectObject.AgentData = {
|
|
148
|
+
AgentID: this.agent.agentID,
|
|
149
|
+
SessionID: this.circuit.sessionID
|
|
150
|
+
};
|
|
151
|
+
deselectObject.ObjectData = [];
|
|
152
|
+
const uuidMap = new Set();
|
|
153
|
+
let skipped = 0;
|
|
154
|
+
for (const obj of objects) {
|
|
155
|
+
if (!(obj instanceof GameObject_1.GameObject)) {
|
|
156
|
+
skipped++;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
const uuidStr = obj.FullID.toString();
|
|
160
|
+
if (!uuidMap.has(uuidStr)) {
|
|
161
|
+
uuidMap.add(uuidStr);
|
|
162
|
+
deselectObject.ObjectData.push({
|
|
163
|
+
ObjectLocalID: obj.ID
|
|
164
|
+
});
|
|
178
165
|
}
|
|
179
|
-
const sequenceID = this.circuit.sendMessage(deselectObject, PacketFlags_1.PacketFlags.Reliable);
|
|
180
|
-
return this.circuit.waitForAck(sequenceID, 10000);
|
|
181
166
|
}
|
|
182
|
-
|
|
167
|
+
if (skipped > 0) {
|
|
168
|
+
console.log('Skipped ' + String(skipped) + ' bad objects during deselection');
|
|
169
|
+
}
|
|
170
|
+
const sequenceID = this.circuit.sendMessage(deselectObject, PacketFlags_1.PacketFlags.Reliable);
|
|
171
|
+
return this.circuit.waitForAck(sequenceID, 10000);
|
|
172
|
+
}
|
|
183
173
|
}
|
|
184
174
|
countObjects() {
|
|
185
175
|
return this.currentRegion.objects.getNumberOfObjects();
|
|
@@ -195,152 +185,612 @@ class RegionCommands extends CommandsBase_1.CommandsBase {
|
|
|
195
185
|
exportSettings() {
|
|
196
186
|
return this.currentRegion.exportXML();
|
|
197
187
|
}
|
|
198
|
-
getTerrain() {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
for (let
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
pos = pos + 4;
|
|
207
|
-
}
|
|
188
|
+
async getTerrain() {
|
|
189
|
+
await this.currentRegion.waitForTerrain();
|
|
190
|
+
const buf = Buffer.allocUnsafe(262144);
|
|
191
|
+
let pos = 0;
|
|
192
|
+
for (let x = 0; x < 256; x++) {
|
|
193
|
+
for (let y = 0; y < 256; y++) {
|
|
194
|
+
buf.writeFloatLE(this.currentRegion.terrain[x][y], pos);
|
|
195
|
+
pos = pos + 4;
|
|
208
196
|
}
|
|
209
|
-
|
|
210
|
-
|
|
197
|
+
}
|
|
198
|
+
return buf;
|
|
211
199
|
}
|
|
212
|
-
selectObjects(objects) {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
200
|
+
async selectObjects(objects) {
|
|
201
|
+
const selectLimit = 255;
|
|
202
|
+
if (objects.length > selectLimit) {
|
|
203
|
+
for (let x = 0; x < objects.length; x += selectLimit) {
|
|
204
|
+
const selectList = [];
|
|
205
|
+
for (let y = 0; y < selectLimit; y++) {
|
|
206
|
+
if (x + y < objects.length) {
|
|
207
|
+
selectList.push(objects[x + y]);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
await this.selectObjects(selectList);
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
const selectObject = new ObjectSelect_1.ObjectSelectMessage();
|
|
216
|
+
selectObject.AgentData = {
|
|
217
|
+
AgentID: this.agent.agentID,
|
|
218
|
+
SessionID: this.circuit.sessionID
|
|
219
|
+
};
|
|
220
|
+
selectObject.ObjectData = [];
|
|
221
|
+
const uuidMap = new Map();
|
|
222
|
+
let skipped = 0;
|
|
223
|
+
for (const obj of objects) {
|
|
224
|
+
if (!(obj instanceof GameObject_1.GameObject)) {
|
|
225
|
+
skipped++;
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const uuidStr = obj.FullID.toString();
|
|
229
|
+
if (!uuidMap.has(uuidStr)) {
|
|
230
|
+
uuidMap.set(uuidStr, obj);
|
|
231
|
+
selectObject.ObjectData.push({
|
|
232
|
+
ObjectLocalID: obj.ID
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
if (skipped > 0) {
|
|
237
|
+
console.log('Skipped ' + String(skipped) + ' bad objects during deselection');
|
|
238
|
+
}
|
|
239
|
+
this.circuit.sendMessage(selectObject, PacketFlags_1.PacketFlags.Reliable);
|
|
240
|
+
try {
|
|
241
|
+
await this.circuit.waitForMessage(Message_1.Message.ObjectProperties, 10000, (propertiesMessage) => {
|
|
242
|
+
let found = false;
|
|
243
|
+
for (const objData of propertiesMessage.ObjectData) {
|
|
244
|
+
const objDataUUID = objData.ObjectID.toString();
|
|
245
|
+
const obj = uuidMap.get(objDataUUID);
|
|
246
|
+
if (obj !== undefined) {
|
|
247
|
+
obj.creatorID = objData.CreatorID;
|
|
248
|
+
obj.creationDate = objData.CreationDate;
|
|
249
|
+
obj.baseMask = objData.BaseMask;
|
|
250
|
+
obj.ownerMask = objData.OwnerMask;
|
|
251
|
+
obj.groupMask = objData.GroupMask;
|
|
252
|
+
obj.everyoneMask = objData.EveryoneMask;
|
|
253
|
+
obj.nextOwnerMask = objData.NextOwnerMask;
|
|
254
|
+
obj.ownershipCost = objData.OwnershipCost;
|
|
255
|
+
obj.saleType = objData.SaleType;
|
|
256
|
+
obj.salePrice = objData.SalePrice;
|
|
257
|
+
obj.aggregatePerms = objData.AggregatePerms;
|
|
258
|
+
obj.aggregatePermTextures = objData.AggregatePermTextures;
|
|
259
|
+
obj.aggregatePermTexturesOwner = objData.AggregatePermTexturesOwner;
|
|
260
|
+
obj.category = objData.Category;
|
|
261
|
+
obj.inventorySerial = objData.InventorySerial;
|
|
262
|
+
obj.itemID = objData.ItemID;
|
|
263
|
+
obj.folderID = objData.FolderID;
|
|
264
|
+
obj.fromTaskID = objData.FromTaskID;
|
|
265
|
+
obj.groupID = objData.GroupID;
|
|
266
|
+
obj.OwnerID = objData.OwnerID;
|
|
267
|
+
obj.lastOwnerID = objData.LastOwnerID;
|
|
268
|
+
obj.name = Utils_1.Utils.BufferToStringSimple(objData.Name);
|
|
269
|
+
obj.description = Utils_1.Utils.BufferToStringSimple(objData.Description);
|
|
270
|
+
obj.touchName = Utils_1.Utils.BufferToStringSimple(objData.TouchName);
|
|
271
|
+
obj.sitName = Utils_1.Utils.BufferToStringSimple(objData.SitName);
|
|
272
|
+
obj.textureID = Utils_1.Utils.BufferToStringSimple(objData.TextureID);
|
|
273
|
+
obj.resolvedAt = new Date().getTime() / 1000;
|
|
274
|
+
uuidMap.delete(objDataUUID);
|
|
275
|
+
found = true;
|
|
221
276
|
}
|
|
222
277
|
}
|
|
223
|
-
|
|
278
|
+
if (Object.keys(uuidMap).length === 0) {
|
|
279
|
+
return FilterResponse_1.FilterResponse.Finish;
|
|
280
|
+
}
|
|
281
|
+
if (!found) {
|
|
282
|
+
return FilterResponse_1.FilterResponse.NoMatch;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
return FilterResponse_1.FilterResponse.Match;
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
catch (_error) {
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
getName() {
|
|
294
|
+
return this.currentRegion.regionName;
|
|
295
|
+
}
|
|
296
|
+
async resolveObject(object, options) {
|
|
297
|
+
return this.currentRegion.resolver.resolveObjects([object], options);
|
|
298
|
+
}
|
|
299
|
+
async resolveObjects(objects, options) {
|
|
300
|
+
return this.currentRegion.resolver.resolveObjects(objects, options);
|
|
301
|
+
}
|
|
302
|
+
async fetchObjectInventory(object) {
|
|
303
|
+
return this.currentRegion.resolver.getInventory(object);
|
|
304
|
+
}
|
|
305
|
+
async fetchObjectInventories(objects) {
|
|
306
|
+
return this.currentRegion.resolver.getInventories(objects);
|
|
307
|
+
}
|
|
308
|
+
async fetchObjectCost(object) {
|
|
309
|
+
return this.currentRegion.resolver.getCosts([object]);
|
|
310
|
+
}
|
|
311
|
+
async fetchObjectCosts(objects) {
|
|
312
|
+
return this.currentRegion.resolver.getCosts(objects);
|
|
313
|
+
}
|
|
314
|
+
async buildObjectNew(obj, map, callback, costOnly = false, skipMove = false) {
|
|
315
|
+
const buildMap = new BuildMap_1.BuildMap(map, callback, costOnly);
|
|
316
|
+
this.gatherAssets(obj, buildMap);
|
|
317
|
+
const bomTextures = [
|
|
318
|
+
'5a9f4a74-30f2-821c-b88d-70499d3e7183',
|
|
319
|
+
'ae2de45c-d252-50b8-5c6e-19f39ce79317',
|
|
320
|
+
'24daea5f-0539-cfcf-047f-fbc40b2786ba',
|
|
321
|
+
'52cc6bb6-2ee5-e632-d3ad-50197b1dcb8a',
|
|
322
|
+
'43529ce8-7faa-ad92-165a-bc4078371687',
|
|
323
|
+
'09aac1fb-6bce-0bee-7d44-caac6dbb6c63',
|
|
324
|
+
'ff62763f-d60a-9855-890b-0c96f8f8cd98',
|
|
325
|
+
'8e915e25-31d1-cc95-ae08-d58a47488251',
|
|
326
|
+
'9742065b-19b5-297c-858a-29711d539043',
|
|
327
|
+
'03642e83-2bd1-4eb9-34b4-4c47ed586d2d',
|
|
328
|
+
'edd51b77-fc10-ce7a-4b3d-011dfc349e4f',
|
|
329
|
+
'c228d1cf-4b5d-4ba8-84f4-899a0796aa97'
|
|
330
|
+
];
|
|
331
|
+
for (const bomTexture of bomTextures) {
|
|
332
|
+
buildMap.assetMap.textures.delete(bomTexture);
|
|
333
|
+
}
|
|
334
|
+
await callback(map);
|
|
335
|
+
if (costOnly) {
|
|
336
|
+
return null;
|
|
337
|
+
}
|
|
338
|
+
let agentPos = new Vector3_1.Vector3([128, 128, 2048]);
|
|
339
|
+
try {
|
|
340
|
+
const agentLocalID = this.currentRegion.agent.localID;
|
|
341
|
+
const agentObject = this.currentRegion.objects.getObjectByLocalID(agentLocalID);
|
|
342
|
+
if (agentObject.Position !== undefined) {
|
|
343
|
+
agentPos = new Vector3_1.Vector3(agentObject.Position);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
throw new Error('Agent position is undefined');
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch (_error) {
|
|
350
|
+
console.warn('Unable to find avatar location, rezzing at ' + agentPos.toString());
|
|
351
|
+
}
|
|
352
|
+
agentPos.z += 2.0;
|
|
353
|
+
buildMap.rezLocation = agentPos;
|
|
354
|
+
const campos = new Vector3_1.Vector3(agentPos);
|
|
355
|
+
campos.z += 2.0;
|
|
356
|
+
this.currentRegion.clientCommands.agent.setCamera(campos, agentPos, 10, new Vector3_1.Vector3([-1.0, 0, 0]), new Vector3_1.Vector3([0.0, 1.0, 0]));
|
|
357
|
+
if (buildMap.primsNeeded > 0) {
|
|
358
|
+
buildMap.primReservoir = await this.createPrims(buildMap.primsNeeded, agentPos);
|
|
359
|
+
}
|
|
360
|
+
let storedPosition = undefined;
|
|
361
|
+
if (skipMove) {
|
|
362
|
+
storedPosition = obj.Position;
|
|
363
|
+
obj.Position = new Vector3_1.Vector3(buildMap.rezLocation);
|
|
364
|
+
}
|
|
365
|
+
const parts = [];
|
|
366
|
+
parts.push(async () => {
|
|
367
|
+
return {
|
|
368
|
+
index: 1,
|
|
369
|
+
object: await this.buildPart(obj, Vector3_1.Vector3.getZero(), Quaternion_1.Quaternion.getIdentity(), buildMap, true)
|
|
370
|
+
};
|
|
371
|
+
});
|
|
372
|
+
if (obj.children) {
|
|
373
|
+
if (obj.Position === undefined) {
|
|
374
|
+
obj.Position = Vector3_1.Vector3.getZero();
|
|
375
|
+
}
|
|
376
|
+
if (obj.Rotation === undefined) {
|
|
377
|
+
obj.Rotation = Quaternion_1.Quaternion.getIdentity();
|
|
378
|
+
}
|
|
379
|
+
let childIndex = 2;
|
|
380
|
+
for (const child of obj.children) {
|
|
381
|
+
if (child.Position !== undefined && child.Rotation !== undefined) {
|
|
382
|
+
const index = childIndex++;
|
|
383
|
+
parts.push(async () => {
|
|
384
|
+
return {
|
|
385
|
+
index,
|
|
386
|
+
object: await this.buildPart(child, new Vector3_1.Vector3(obj.Position), new Quaternion_1.Quaternion(obj.Rotation), buildMap, false)
|
|
387
|
+
};
|
|
388
|
+
});
|
|
224
389
|
}
|
|
225
|
-
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
let results = {
|
|
393
|
+
results: [],
|
|
394
|
+
errors: []
|
|
395
|
+
};
|
|
396
|
+
results = await Utils_1.Utils.promiseConcurrent(parts, 5, 0);
|
|
397
|
+
if (results.errors.length > 0) {
|
|
398
|
+
for (const err of results.errors) {
|
|
399
|
+
console.error(err);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
let rootObj = null;
|
|
403
|
+
for (const childObject of results.results) {
|
|
404
|
+
if (childObject.object.isMarkedRoot) {
|
|
405
|
+
rootObj = childObject.object;
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
if (rootObj === null) {
|
|
410
|
+
throw new Error('Failed to find root prim..');
|
|
411
|
+
}
|
|
412
|
+
const childPrims = [];
|
|
413
|
+
results.results.sort((a, b) => {
|
|
414
|
+
return a.index - b.index;
|
|
415
|
+
});
|
|
416
|
+
for (const childObject of results.results) {
|
|
417
|
+
if (childObject.object !== rootObj) {
|
|
418
|
+
childPrims.push(childObject.object);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
try {
|
|
422
|
+
await rootObj.linkFrom(childPrims);
|
|
423
|
+
}
|
|
424
|
+
catch (err) {
|
|
425
|
+
console.error('Link failed:');
|
|
426
|
+
console.error(err);
|
|
427
|
+
}
|
|
428
|
+
if (storedPosition !== undefined) {
|
|
429
|
+
obj.Position = storedPosition;
|
|
430
|
+
}
|
|
431
|
+
return rootObj;
|
|
432
|
+
}
|
|
433
|
+
async getObjectByLocalID(id, resolve, waitFor = 0) {
|
|
434
|
+
let obj = null;
|
|
435
|
+
try {
|
|
436
|
+
obj = this.currentRegion.objects.getObjectByLocalID(id);
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
if (waitFor > 0) {
|
|
440
|
+
obj = await this.waitForObjectByLocalID(id, waitFor);
|
|
226
441
|
}
|
|
227
442
|
else {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
443
|
+
throw (error);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
if (resolve) {
|
|
447
|
+
await this.currentRegion.resolver.resolveObjects([obj], {});
|
|
448
|
+
}
|
|
449
|
+
return obj;
|
|
450
|
+
}
|
|
451
|
+
async getObjectByUUID(id, resolve, waitFor = 0) {
|
|
452
|
+
let obj = null;
|
|
453
|
+
try {
|
|
454
|
+
obj = this.currentRegion.objects.getObjectByUUID(id);
|
|
455
|
+
}
|
|
456
|
+
catch (error) {
|
|
457
|
+
if (waitFor > 0) {
|
|
458
|
+
obj = await this.waitForObjectByUUID(id, waitFor);
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
throw (error);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
if (resolve) {
|
|
465
|
+
await this.currentRegion.resolver.resolveObjects([obj], {});
|
|
466
|
+
}
|
|
467
|
+
return obj;
|
|
468
|
+
}
|
|
469
|
+
async findObjectsByName(pattern, minX, maxX, minY, maxY, minZ, maxZ) {
|
|
470
|
+
let objects = [];
|
|
471
|
+
if (minX !== undefined && maxX !== undefined && minY !== undefined && maxY !== undefined && minZ !== undefined && maxZ !== undefined) {
|
|
472
|
+
objects = await this.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ, true);
|
|
473
|
+
}
|
|
474
|
+
else {
|
|
475
|
+
objects = await this.getAllObjects({ resolve: true });
|
|
476
|
+
}
|
|
477
|
+
const idCheck = {};
|
|
478
|
+
const matches = [];
|
|
479
|
+
const it = function (go) {
|
|
480
|
+
if (go.name !== undefined) {
|
|
481
|
+
let match = false;
|
|
482
|
+
if (pattern instanceof RegExp) {
|
|
483
|
+
if (pattern.test(go.name)) {
|
|
484
|
+
match = true;
|
|
240
485
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
486
|
+
}
|
|
487
|
+
else {
|
|
488
|
+
match = micromatch.isMatch(go.name, pattern, { nocase: true });
|
|
489
|
+
}
|
|
490
|
+
if (match) {
|
|
491
|
+
const fullID = go.FullID.toString();
|
|
492
|
+
if (!idCheck[fullID]) {
|
|
493
|
+
matches.push(go);
|
|
494
|
+
idCheck[fullID] = true;
|
|
247
495
|
}
|
|
248
496
|
}
|
|
249
|
-
|
|
250
|
-
|
|
497
|
+
}
|
|
498
|
+
if (go.children && go.children.length > 0) {
|
|
499
|
+
for (const child of go.children) {
|
|
500
|
+
it(child);
|
|
251
501
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
for (const go of objects) {
|
|
505
|
+
it(go);
|
|
506
|
+
}
|
|
507
|
+
return matches;
|
|
508
|
+
}
|
|
509
|
+
async getParcelAt(x, y) {
|
|
510
|
+
return this.currentRegion.getParcelProperties(x, y);
|
|
511
|
+
}
|
|
512
|
+
async getParcels() {
|
|
513
|
+
return this.currentRegion.getParcels();
|
|
514
|
+
}
|
|
515
|
+
async getAllObjects(options) {
|
|
516
|
+
const objs = this.currentRegion.objects.getAllObjects();
|
|
517
|
+
if (options.resolve === true) {
|
|
518
|
+
await this.currentRegion.resolver.resolveObjects(objs, options);
|
|
519
|
+
}
|
|
520
|
+
return objs;
|
|
521
|
+
}
|
|
522
|
+
async getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ, resolve = false) {
|
|
523
|
+
const objs = this.currentRegion.objects.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ);
|
|
524
|
+
if (resolve) {
|
|
525
|
+
await this.currentRegion.resolver.resolveObjects(objs, {});
|
|
526
|
+
}
|
|
527
|
+
return objs;
|
|
528
|
+
}
|
|
529
|
+
async pruneObjects(checkList) {
|
|
530
|
+
let uuids = [];
|
|
531
|
+
let objects = [];
|
|
532
|
+
const stillAlive = {};
|
|
533
|
+
const checkObjects = async (uuidList, objectList) => {
|
|
534
|
+
const objRef = {};
|
|
535
|
+
for (const obj of objectList) {
|
|
536
|
+
objRef[obj.FullID.toString()] = obj;
|
|
537
|
+
}
|
|
538
|
+
const result = await this.currentRegion.caps.capsPostXML('GetObjectCost', {
|
|
539
|
+
'object_ids': uuidList
|
|
540
|
+
});
|
|
541
|
+
for (const u of Object.keys(result)) {
|
|
542
|
+
stillAlive[u] = objRef[u];
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
for (const o of checkList) {
|
|
546
|
+
if (o.FullID !== undefined) {
|
|
547
|
+
uuids.push(new LLSD.UUID(o.FullID));
|
|
548
|
+
objects.push(o);
|
|
549
|
+
if (uuids.length > 256) {
|
|
550
|
+
await checkObjects(uuids, objects);
|
|
551
|
+
uuids = [];
|
|
552
|
+
objects = [];
|
|
301
553
|
}
|
|
302
|
-
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
if (uuids.length > 0) {
|
|
557
|
+
await checkObjects(uuids, objects);
|
|
558
|
+
}
|
|
559
|
+
const deadObjects = [];
|
|
560
|
+
for (const o of checkList) {
|
|
561
|
+
let found = false;
|
|
562
|
+
if (o.FullID !== undefined) {
|
|
563
|
+
const fullID = o.FullID.toString();
|
|
564
|
+
if (stillAlive[fullID] !== undefined) {
|
|
565
|
+
found = true;
|
|
303
566
|
}
|
|
304
567
|
}
|
|
305
|
-
|
|
568
|
+
if (!found) {
|
|
569
|
+
deadObjects.push(o);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
return deadObjects;
|
|
306
573
|
}
|
|
307
|
-
|
|
308
|
-
|
|
574
|
+
setPersist(persist) {
|
|
575
|
+
this.currentRegion.objects.setPersist(persist);
|
|
309
576
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
577
|
+
async grabObject(localID, grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
578
|
+
if (localID instanceof UUID_1.UUID) {
|
|
579
|
+
const obj = this.currentRegion.objects.getObjectByUUID(localID);
|
|
580
|
+
localID = obj.ID;
|
|
581
|
+
}
|
|
582
|
+
const msg = new ObjectGrab_1.ObjectGrabMessage();
|
|
583
|
+
msg.AgentData = {
|
|
584
|
+
AgentID: this.agent.agentID,
|
|
585
|
+
SessionID: this.circuit.sessionID
|
|
586
|
+
};
|
|
587
|
+
msg.ObjectData = {
|
|
588
|
+
LocalID: localID,
|
|
589
|
+
GrabOffset: grabOffset
|
|
590
|
+
};
|
|
591
|
+
msg.SurfaceInfo = [
|
|
592
|
+
{
|
|
593
|
+
UVCoord: uvCoordinate,
|
|
594
|
+
STCoord: stCoordinate,
|
|
595
|
+
FaceIndex: faceIndex,
|
|
596
|
+
Position: position,
|
|
597
|
+
Normal: normal,
|
|
598
|
+
Binormal: binormal
|
|
599
|
+
}
|
|
600
|
+
];
|
|
601
|
+
const seqID = this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
602
|
+
return this.circuit.waitForAck(seqID, 10000);
|
|
314
603
|
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
604
|
+
async deGrabObject(localID, _grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
605
|
+
if (localID instanceof UUID_1.UUID) {
|
|
606
|
+
const obj = this.currentRegion.objects.getObjectByUUID(localID);
|
|
607
|
+
localID = obj.ID;
|
|
608
|
+
}
|
|
609
|
+
const msg = new ObjectDeGrab_1.ObjectDeGrabMessage();
|
|
610
|
+
msg.AgentData = {
|
|
611
|
+
AgentID: this.agent.agentID,
|
|
612
|
+
SessionID: this.circuit.sessionID
|
|
613
|
+
};
|
|
614
|
+
msg.ObjectData = {
|
|
615
|
+
LocalID: localID
|
|
616
|
+
};
|
|
617
|
+
msg.SurfaceInfo = [
|
|
618
|
+
{
|
|
619
|
+
UVCoord: uvCoordinate,
|
|
620
|
+
STCoord: stCoordinate,
|
|
621
|
+
FaceIndex: faceIndex,
|
|
622
|
+
Position: position,
|
|
623
|
+
Normal: normal,
|
|
624
|
+
Binormal: binormal
|
|
625
|
+
}
|
|
626
|
+
];
|
|
627
|
+
const seqID = this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
628
|
+
return this.circuit.waitForAck(seqID, 10000);
|
|
319
629
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
630
|
+
async dragGrabbedObject(localID, grabPosition, grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
631
|
+
if (!(localID instanceof UUID_1.UUID)) {
|
|
632
|
+
const obj = this.currentRegion.objects.getObjectByLocalID(localID);
|
|
633
|
+
localID = obj.FullID;
|
|
634
|
+
}
|
|
635
|
+
const msg = new ObjectGrabUpdate_1.ObjectGrabUpdateMessage();
|
|
636
|
+
msg.AgentData = {
|
|
637
|
+
AgentID: this.agent.agentID,
|
|
638
|
+
SessionID: this.circuit.sessionID
|
|
639
|
+
};
|
|
640
|
+
msg.ObjectData = {
|
|
641
|
+
ObjectID: localID,
|
|
642
|
+
GrabOffsetInitial: grabOffset,
|
|
643
|
+
GrabPosition: grabPosition,
|
|
644
|
+
TimeSinceLast: 0
|
|
645
|
+
};
|
|
646
|
+
msg.SurfaceInfo = [
|
|
647
|
+
{
|
|
648
|
+
UVCoord: uvCoordinate,
|
|
649
|
+
STCoord: stCoordinate,
|
|
650
|
+
FaceIndex: faceIndex,
|
|
651
|
+
Position: position,
|
|
652
|
+
Normal: normal,
|
|
653
|
+
Binormal: binormal
|
|
654
|
+
}
|
|
655
|
+
];
|
|
656
|
+
const seqID = this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
657
|
+
return this.circuit.waitForAck(seqID, 10000);
|
|
324
658
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
659
|
+
async touchObject(localID, grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
660
|
+
if (localID instanceof UUID_1.UUID) {
|
|
661
|
+
const obj = this.currentRegion.objects.getObjectByUUID(localID);
|
|
662
|
+
localID = obj.ID;
|
|
663
|
+
}
|
|
664
|
+
await this.grabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
|
|
665
|
+
return this.deGrabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
|
|
329
666
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
667
|
+
async rezPrims(count) {
|
|
668
|
+
let agentPos = new Vector3_1.Vector3([128, 128, 2048]);
|
|
669
|
+
try {
|
|
670
|
+
const agentLocalID = this.currentRegion.agent.localID;
|
|
671
|
+
const agentObject = this.currentRegion.objects.getObjectByLocalID(agentLocalID);
|
|
672
|
+
if (agentObject.Position !== undefined) {
|
|
673
|
+
agentPos = new Vector3_1.Vector3(agentObject.Position);
|
|
674
|
+
}
|
|
675
|
+
else {
|
|
676
|
+
throw new Error('Agent position is undefined');
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
catch (_error) {
|
|
680
|
+
console.warn('Unable to find avatar location, rezzing at ' + agentPos.toString());
|
|
681
|
+
}
|
|
682
|
+
agentPos.z += 2.0;
|
|
683
|
+
const campos = new Vector3_1.Vector3(agentPos);
|
|
684
|
+
campos.z += 2.0;
|
|
685
|
+
this.currentRegion.clientCommands.agent.setCamera(campos, agentPos, 10, new Vector3_1.Vector3([-1.0, 0, 0]), new Vector3_1.Vector3([0.0, 1.0, 0]));
|
|
686
|
+
return this.createPrims(count, agentPos);
|
|
334
687
|
}
|
|
335
|
-
|
|
336
|
-
return
|
|
337
|
-
|
|
688
|
+
async createPrims(count, position) {
|
|
689
|
+
return new Promise((resolve, reject) => {
|
|
690
|
+
const gatheredPrims = [];
|
|
691
|
+
let objSub = undefined;
|
|
692
|
+
let timeout = setTimeout(() => {
|
|
693
|
+
if (objSub !== undefined) {
|
|
694
|
+
objSub.unsubscribe();
|
|
695
|
+
objSub = undefined;
|
|
696
|
+
}
|
|
697
|
+
if (timeout !== undefined) {
|
|
698
|
+
clearTimeout(timeout);
|
|
699
|
+
timeout = undefined;
|
|
700
|
+
}
|
|
701
|
+
reject(new Error('Failed to gather ' + count + ' prims - only gathered ' + gatheredPrims.length));
|
|
702
|
+
}, 30000);
|
|
703
|
+
objSub = this.currentRegion.clientEvents.onNewObjectEvent.subscribe((evt) => {
|
|
704
|
+
(async () => {
|
|
705
|
+
if (evt.object.resolvedAt === undefined) {
|
|
706
|
+
await this.resolveObject(evt.object, {});
|
|
707
|
+
}
|
|
708
|
+
if (evt.createSelected && !evt.object.claimedForBuild) {
|
|
709
|
+
if (evt.object.itemID === undefined || evt.object.itemID.isZero()) {
|
|
710
|
+
if (evt.object.PCode === PCode_1.PCode.Prim &&
|
|
711
|
+
evt.object.Material === 3 &&
|
|
712
|
+
evt.object.PathCurve === 16 &&
|
|
713
|
+
evt.object.ProfileCurve === 1 &&
|
|
714
|
+
evt.object.PathBegin === 0 &&
|
|
715
|
+
evt.object.PathEnd === 1 &&
|
|
716
|
+
evt.object.PathScaleX === 1 &&
|
|
717
|
+
evt.object.PathScaleY === 1 &&
|
|
718
|
+
evt.object.PathShearX === 0 &&
|
|
719
|
+
evt.object.PathShearY === 0 &&
|
|
720
|
+
evt.object.PathTwist === 0 &&
|
|
721
|
+
evt.object.PathTwistBegin === 0 &&
|
|
722
|
+
evt.object.PathRadiusOffset === 0 &&
|
|
723
|
+
evt.object.PathTaperX === 0 &&
|
|
724
|
+
evt.object.PathTaperY === 0 &&
|
|
725
|
+
evt.object.PathRevolutions === 1 &&
|
|
726
|
+
evt.object.PathSkew === 0 &&
|
|
727
|
+
evt.object.ProfileBegin === 0 &&
|
|
728
|
+
evt.object.ProfileHollow === 0) {
|
|
729
|
+
evt.object.claimedForBuild = true;
|
|
730
|
+
gatheredPrims.push(evt.object);
|
|
731
|
+
if (gatheredPrims.length === count) {
|
|
732
|
+
if (objSub !== undefined) {
|
|
733
|
+
objSub.unsubscribe();
|
|
734
|
+
objSub = undefined;
|
|
735
|
+
}
|
|
736
|
+
if (timeout !== undefined) {
|
|
737
|
+
clearTimeout(timeout);
|
|
738
|
+
timeout = undefined;
|
|
739
|
+
}
|
|
740
|
+
resolve(gatheredPrims);
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
})().catch((_e) => {
|
|
746
|
+
});
|
|
747
|
+
});
|
|
748
|
+
for (let x = 0; x < count; x++) {
|
|
749
|
+
const msg = new ObjectAdd_1.ObjectAddMessage();
|
|
750
|
+
msg.AgentData = {
|
|
751
|
+
AgentID: this.agent.agentID,
|
|
752
|
+
SessionID: this.circuit.sessionID,
|
|
753
|
+
GroupID: UUID_1.UUID.zero()
|
|
754
|
+
};
|
|
755
|
+
msg.ObjectData = {
|
|
756
|
+
PCode: PCode_1.PCode.Prim,
|
|
757
|
+
Material: 3,
|
|
758
|
+
AddFlags: PrimFlags_1.PrimFlags.CreateSelected,
|
|
759
|
+
PathCurve: 16,
|
|
760
|
+
ProfileCurve: 1,
|
|
761
|
+
PathBegin: 0,
|
|
762
|
+
PathEnd: 0,
|
|
763
|
+
PathScaleX: 100,
|
|
764
|
+
PathScaleY: 100,
|
|
765
|
+
PathShearX: 0,
|
|
766
|
+
PathShearY: 0,
|
|
767
|
+
PathTwist: 0,
|
|
768
|
+
PathTwistBegin: 0,
|
|
769
|
+
PathRadiusOffset: 0,
|
|
770
|
+
PathTaperX: 0,
|
|
771
|
+
PathTaperY: 0,
|
|
772
|
+
PathRevolutions: 0,
|
|
773
|
+
PathSkew: 0,
|
|
774
|
+
ProfileBegin: 0,
|
|
775
|
+
ProfileEnd: 0,
|
|
776
|
+
ProfileHollow: 0,
|
|
777
|
+
BypassRaycast: 1,
|
|
778
|
+
RayStart: position,
|
|
779
|
+
RayEnd: position,
|
|
780
|
+
RayTargetID: UUID_1.UUID.zero(),
|
|
781
|
+
RayEndIsIntersection: 0,
|
|
782
|
+
Scale: new Vector3_1.Vector3([0.5, 0.5, 0.5]),
|
|
783
|
+
Rotation: Quaternion_1.Quaternion.getIdentity(),
|
|
784
|
+
State: 0
|
|
785
|
+
};
|
|
786
|
+
this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
787
|
+
}
|
|
338
788
|
});
|
|
339
789
|
}
|
|
340
|
-
waitForObjectByLocalID(localID, timeout) {
|
|
790
|
+
async waitForObjectByLocalID(localID, timeout) {
|
|
341
791
|
return new Promise((resolve, reject) => {
|
|
342
792
|
let tmr = null;
|
|
343
|
-
const subscription = this.currentRegion.clientEvents.onNewObjectEvent.subscribe((event) =>
|
|
793
|
+
const subscription = this.currentRegion.clientEvents.onNewObjectEvent.subscribe((event) => {
|
|
344
794
|
if (event.localID === localID) {
|
|
345
795
|
if (tmr !== null) {
|
|
346
796
|
clearTimeout(tmr);
|
|
@@ -348,17 +798,17 @@ class RegionCommands extends CommandsBase_1.CommandsBase {
|
|
|
348
798
|
subscription.unsubscribe();
|
|
349
799
|
resolve(event.object);
|
|
350
800
|
}
|
|
351
|
-
})
|
|
801
|
+
});
|
|
352
802
|
tmr = setTimeout(() => {
|
|
353
803
|
subscription.unsubscribe();
|
|
354
804
|
reject(new Error('Timeout'));
|
|
355
805
|
}, timeout);
|
|
356
806
|
});
|
|
357
807
|
}
|
|
358
|
-
waitForObjectByUUID(objectID, timeout) {
|
|
808
|
+
async waitForObjectByUUID(objectID, timeout) {
|
|
359
809
|
return new Promise((resolve, reject) => {
|
|
360
810
|
let tmr = null;
|
|
361
|
-
const subscription = this.currentRegion.clientEvents.onNewObjectEvent.subscribe((event) =>
|
|
811
|
+
const subscription = this.currentRegion.clientEvents.onNewObjectEvent.subscribe((event) => {
|
|
362
812
|
if (event.objectID.equals(objectID)) {
|
|
363
813
|
if (tmr !== null) {
|
|
364
814
|
clearTimeout(tmr);
|
|
@@ -366,1122 +816,587 @@ class RegionCommands extends CommandsBase_1.CommandsBase {
|
|
|
366
816
|
subscription.unsubscribe();
|
|
367
817
|
resolve(event.object);
|
|
368
818
|
}
|
|
369
|
-
})
|
|
819
|
+
});
|
|
370
820
|
tmr = setTimeout(() => {
|
|
371
821
|
subscription.unsubscribe();
|
|
372
822
|
reject(new Error('Timeout'));
|
|
373
823
|
}, timeout);
|
|
374
824
|
});
|
|
375
825
|
}
|
|
376
|
-
buildPart(
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
if (meshEntry.item !== null) {
|
|
401
|
-
try {
|
|
402
|
-
object = yield meshEntry.item.rezInWorld(rezLocation);
|
|
403
|
-
}
|
|
404
|
-
catch (err) {
|
|
405
|
-
console.error('Failed to rez object ' + obj.name + ' in-world');
|
|
406
|
-
console.error(err);
|
|
407
|
-
}
|
|
408
|
-
rezzedMesh = true;
|
|
409
|
-
}
|
|
410
|
-
else {
|
|
411
|
-
console.error('Unable to rez mesh item from inventory - item is null');
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
else if (buildMap.primReservoir.length > 0) {
|
|
416
|
-
const newPrim = buildMap.primReservoir.shift();
|
|
417
|
-
if (newPrim !== undefined) {
|
|
418
|
-
object = newPrim;
|
|
826
|
+
async buildPart(obj, posOffset, rotOffset, buildMap, markRoot = false) {
|
|
827
|
+
const objectPosition = new Vector3_1.Vector3(obj.Position);
|
|
828
|
+
const objectRotation = new Quaternion_1.Quaternion(obj.Rotation);
|
|
829
|
+
const objectScale = new Vector3_1.Vector3(obj.Scale);
|
|
830
|
+
let finalPos = Vector3_1.Vector3.getZero();
|
|
831
|
+
let finalRot = Quaternion_1.Quaternion.getIdentity();
|
|
832
|
+
if (posOffset.x === 0.0 && posOffset.y === 0.0 && posOffset.z === 0.0 && objectPosition !== undefined) {
|
|
833
|
+
finalPos = new Vector3_1.Vector3(objectPosition);
|
|
834
|
+
finalRot = new Quaternion_1.Quaternion(objectRotation);
|
|
835
|
+
}
|
|
836
|
+
else {
|
|
837
|
+
const adjustedPos = new Vector3_1.Vector3(objectPosition).multiplyQuaternion(new Quaternion_1.Quaternion(rotOffset));
|
|
838
|
+
finalPos = new Vector3_1.Vector3(new Vector3_1.Vector3(posOffset).add(adjustedPos));
|
|
839
|
+
const baseRot = new Quaternion_1.Quaternion(rotOffset);
|
|
840
|
+
finalRot = new Quaternion_1.Quaternion(baseRot.multiply(new Quaternion_1.Quaternion(objectRotation)));
|
|
841
|
+
}
|
|
842
|
+
let object = null;
|
|
843
|
+
let rezzedMesh = false;
|
|
844
|
+
if (obj.extraParams?.meshData !== null && obj.extraParams?.meshData.type === SculptType_1.SculptType.Mesh) {
|
|
845
|
+
const meshEntry = buildMap.assetMap.mesh.get(obj.extraParams.meshData.meshData.toString());
|
|
846
|
+
if (meshEntry !== undefined) {
|
|
847
|
+
const rezLocation = new Vector3_1.Vector3(buildMap.rezLocation);
|
|
848
|
+
rezLocation.z += (objectScale.z / 2);
|
|
849
|
+
if (meshEntry.item !== undefined) {
|
|
419
850
|
try {
|
|
420
|
-
|
|
851
|
+
object = await meshEntry.item.rezInWorld(rezLocation);
|
|
852
|
+
rezzedMesh = true;
|
|
421
853
|
}
|
|
422
854
|
catch (err) {
|
|
423
|
-
console.error('
|
|
855
|
+
console.error('Failed to rez object ' + obj.name + ' in-world');
|
|
424
856
|
console.error(err);
|
|
425
857
|
}
|
|
426
858
|
}
|
|
859
|
+
else {
|
|
860
|
+
console.error('Unable to rez mesh item from inventory - item is null');
|
|
861
|
+
}
|
|
427
862
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
if (
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
863
|
+
}
|
|
864
|
+
if (!rezzedMesh && buildMap.primReservoir.length > 0) {
|
|
865
|
+
const newPrim = buildMap.primReservoir.shift();
|
|
866
|
+
if (newPrim !== undefined) {
|
|
867
|
+
object = newPrim;
|
|
868
|
+
try {
|
|
869
|
+
await object.setShape(obj.PathCurve, obj.ProfileCurve, obj.PathBegin, obj.PathEnd, obj.PathScaleX, obj.PathScaleY, obj.PathShearX, obj.PathShearY, obj.PathTwist, obj.PathTwistBegin, obj.PathRadiusOffset, obj.PathTaperX, obj.PathTaperY, obj.PathRevolutions, obj.PathSkew, obj.ProfileBegin, obj.ProfileEnd, obj.ProfileHollow);
|
|
870
|
+
}
|
|
871
|
+
catch (err) {
|
|
872
|
+
console.error('Error setting shape on ' + obj.name);
|
|
873
|
+
console.error(err);
|
|
874
|
+
}
|
|
437
875
|
}
|
|
438
|
-
|
|
439
|
-
|
|
876
|
+
}
|
|
877
|
+
else if (!rezzedMesh) {
|
|
878
|
+
console.error('Exhausted prim reservoir!!');
|
|
879
|
+
}
|
|
880
|
+
if (object === null) {
|
|
881
|
+
console.error('Failed to acquire prim for build');
|
|
882
|
+
throw new Error('Failed to acquire prim for build');
|
|
883
|
+
}
|
|
884
|
+
if (markRoot) {
|
|
885
|
+
object.isMarkedRoot = true;
|
|
886
|
+
}
|
|
887
|
+
try {
|
|
888
|
+
await object.setGeometry(finalPos, finalRot, objectScale);
|
|
889
|
+
}
|
|
890
|
+
catch (err) {
|
|
891
|
+
console.error('Error setting geometry on ' + obj.name);
|
|
892
|
+
console.error(err);
|
|
893
|
+
}
|
|
894
|
+
if (obj.extraParams.sculptData !== null) {
|
|
895
|
+
if (obj.extraParams.sculptData.type !== SculptType_1.SculptType.Mesh) {
|
|
896
|
+
const oldTextureID = obj.extraParams.sculptData.texture.toString();
|
|
897
|
+
const item = buildMap.assetMap.textures.get(oldTextureID);
|
|
898
|
+
if (item?.item) {
|
|
899
|
+
obj.extraParams.sculptData.texture = item.item.assetID;
|
|
900
|
+
}
|
|
440
901
|
}
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
902
|
+
}
|
|
903
|
+
if (obj.extraParams.lightImageData !== null) {
|
|
904
|
+
const oldTextureID = obj.extraParams.lightImageData.texture.toString();
|
|
905
|
+
const item = buildMap.assetMap.textures.get(oldTextureID);
|
|
906
|
+
if (item?.item) {
|
|
907
|
+
obj.extraParams.lightImageData.texture = item.item.assetID;
|
|
444
908
|
}
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
909
|
+
}
|
|
910
|
+
if (obj.extraParams.renderMaterialData !== null) {
|
|
911
|
+
for (const entry of obj.extraParams.renderMaterialData.params) {
|
|
912
|
+
const oldTextureID = entry.textureUUID.toString();
|
|
913
|
+
const item = buildMap.assetMap.gltfMaterials.get(oldTextureID);
|
|
914
|
+
if (item?.item) {
|
|
915
|
+
entry.textureUUID = item.item.assetID;
|
|
452
916
|
}
|
|
453
917
|
}
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
918
|
+
}
|
|
919
|
+
if (rezzedMesh) {
|
|
920
|
+
obj.extraParams.meshData = object.extraParams.meshData;
|
|
921
|
+
obj.extraParams.sculptData = object.extraParams.sculptData;
|
|
922
|
+
}
|
|
923
|
+
try {
|
|
924
|
+
await object.setExtraParams(obj.extraParams);
|
|
925
|
+
}
|
|
926
|
+
catch (err) {
|
|
927
|
+
if (err instanceof Error) {
|
|
928
|
+
throw (err);
|
|
457
929
|
}
|
|
458
|
-
|
|
459
|
-
|
|
930
|
+
else if (typeof err === 'string') {
|
|
931
|
+
throw new Error(err);
|
|
460
932
|
}
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
933
|
+
else {
|
|
934
|
+
throw new Error('Error setting ExtraParams on ' + obj.name);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
if (obj.TextureEntry !== undefined) {
|
|
938
|
+
const materialUpload = {
|
|
939
|
+
'FullMaterialsPerFace': []
|
|
940
|
+
};
|
|
941
|
+
let defaultMaterial = null;
|
|
942
|
+
const materialFaces = {};
|
|
943
|
+
if (obj.TextureEntry.defaultTexture !== undefined && obj.TextureEntry.defaultTexture !== null) {
|
|
944
|
+
const { materialID } = obj.TextureEntry.defaultTexture;
|
|
945
|
+
if (!materialID.isZero()) {
|
|
946
|
+
const storedMat = buildMap.assetMap.materials.get(materialID.toString());
|
|
947
|
+
if (storedMat?.item) {
|
|
948
|
+
defaultMaterial = {
|
|
949
|
+
ID: object.ID,
|
|
950
|
+
Material: storedMat.item.toLLSDObject()
|
|
951
|
+
};
|
|
952
|
+
}
|
|
464
953
|
}
|
|
465
|
-
|
|
466
|
-
|
|
954
|
+
}
|
|
955
|
+
for (let face = 0; face < obj.TextureEntry.faces.length; face++) {
|
|
956
|
+
const { materialID } = obj.TextureEntry.faces[face];
|
|
957
|
+
if (!materialID.isZero()) {
|
|
958
|
+
const storedMat = buildMap.assetMap.materials.get(materialID.toString());
|
|
959
|
+
if (storedMat?.item) {
|
|
960
|
+
materialUpload.FullMaterialsPerFace.push({
|
|
961
|
+
Face: face,
|
|
962
|
+
ID: object.ID,
|
|
963
|
+
Material: storedMat.item.toLLSDObject()
|
|
964
|
+
});
|
|
965
|
+
materialFaces[face] = {
|
|
966
|
+
added: true,
|
|
967
|
+
complete: false
|
|
968
|
+
};
|
|
969
|
+
}
|
|
467
970
|
}
|
|
468
|
-
|
|
469
|
-
|
|
971
|
+
}
|
|
972
|
+
if (defaultMaterial) {
|
|
973
|
+
Logger_1.Logger.Info('Inserting script to determine face count..');
|
|
974
|
+
const helper = new PrimFacesHelper_1.PrimFacesHelper(this.bot, object);
|
|
975
|
+
const sides = await helper.getFaces();
|
|
976
|
+
Logger_1.Logger.Info(String(sides) + ' faces');
|
|
977
|
+
for (let side = 0; side < sides; side++) {
|
|
978
|
+
if (!materialFaces[side]) {
|
|
979
|
+
materialUpload.FullMaterialsPerFace.push({
|
|
980
|
+
Face: side,
|
|
981
|
+
...defaultMaterial
|
|
982
|
+
});
|
|
983
|
+
materialFaces[side] = {
|
|
984
|
+
added: true,
|
|
985
|
+
complete: false
|
|
986
|
+
};
|
|
987
|
+
}
|
|
470
988
|
}
|
|
471
989
|
}
|
|
472
|
-
if (
|
|
473
|
-
const
|
|
474
|
-
|
|
990
|
+
if (Object.keys(materialFaces).length > 0) {
|
|
991
|
+
const zipped = await Utils_1.Utils.deflate(Buffer.from(LLSD.LLSD.formatBinary(materialUpload).octets));
|
|
992
|
+
const newMat = {
|
|
993
|
+
'Zipped': new LLSD.Binary(Array.from(zipped), 'BASE64')
|
|
475
994
|
};
|
|
476
|
-
const
|
|
477
|
-
if (
|
|
478
|
-
const
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
});
|
|
486
|
-
materialFaces[-1] = true;
|
|
995
|
+
const result = await this.currentRegion.caps.capsPutXML('RenderMaterials', newMat);
|
|
996
|
+
if (result.Zipped) {
|
|
997
|
+
const resultUnzipped = await Utils_1.Utils.inflate(Buffer.from(result.Zipped.octets));
|
|
998
|
+
const binData = new LLSD.Binary(Array.from(resultUnzipped), 'BASE64');
|
|
999
|
+
const llsdResult = LLSD.LLSD.parseBinary(binData);
|
|
1000
|
+
for (const result2 of llsdResult.result) {
|
|
1001
|
+
const face = result2.Face;
|
|
1002
|
+
if (materialFaces[face] !== undefined) {
|
|
1003
|
+
materialFaces[face].complete = true;
|
|
487
1004
|
}
|
|
488
1005
|
}
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
if (!materialID.isZero()) {
|
|
493
|
-
const storedMat = buildMap.assetMap.materials[materialID.toString()];
|
|
494
|
-
if (storedMat !== null && storedMat !== undefined) {
|
|
495
|
-
materialUpload.FullMaterialsPerFace.push({
|
|
496
|
-
Face: face,
|
|
497
|
-
ID: object.ID,
|
|
498
|
-
Material: storedMat.toLLSDObject()
|
|
499
|
-
});
|
|
500
|
-
materialFaces[face] = true;
|
|
1006
|
+
for (const face of Object.keys(materialFaces)) {
|
|
1007
|
+
if (!materialFaces[face].complete) {
|
|
1008
|
+
console.error('Failed to update material on face ' + String(face));
|
|
501
1009
|
}
|
|
502
1010
|
}
|
|
503
1011
|
}
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
}).catch((err) => {
|
|
511
|
-
console.error(err);
|
|
512
|
-
});
|
|
513
|
-
try {
|
|
514
|
-
let complete = false;
|
|
515
|
-
do {
|
|
516
|
-
complete = true;
|
|
517
|
-
yield object.waitForTextureUpdate(10000);
|
|
518
|
-
for (const materialFace of Object.keys(materialFaces)) {
|
|
519
|
-
const entry = object.TextureEntry;
|
|
520
|
-
if (entry === undefined) {
|
|
521
|
-
complete = false;
|
|
522
|
-
}
|
|
523
|
-
else if (parseInt(materialFace, 10) === -1) {
|
|
524
|
-
const def = entry.defaultTexture;
|
|
525
|
-
if (def === undefined || def === null) {
|
|
526
|
-
complete = false;
|
|
527
|
-
}
|
|
528
|
-
else {
|
|
529
|
-
if (def.materialID.equals(UUID_1.UUID.zero())) {
|
|
530
|
-
complete = false;
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
else {
|
|
535
|
-
const fc = parseInt(materialFace, 10);
|
|
536
|
-
const thisFace = entry.faces[fc];
|
|
537
|
-
if (thisFace === undefined) {
|
|
538
|
-
complete = false;
|
|
539
|
-
}
|
|
540
|
-
else {
|
|
541
|
-
if (thisFace.materialID.equals(UUID_1.UUID.zero())) {
|
|
542
|
-
complete = false;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
} while (!complete);
|
|
548
|
-
}
|
|
549
|
-
catch (error) {
|
|
550
|
-
console.error(obj.name + ':Timed out while waiting for RenderMaterials update');
|
|
551
|
-
}
|
|
552
|
-
if (object.TextureEntry !== undefined) {
|
|
553
|
-
for (let face = 0; face < object.TextureEntry.faces.length; face++) {
|
|
554
|
-
const oldFace = obj.TextureEntry.faces[face];
|
|
555
|
-
if (!oldFace.materialID.isZero()) {
|
|
556
|
-
obj.TextureEntry.faces[face].materialID = object.TextureEntry.faces[face].materialID;
|
|
557
|
-
if (obj.TextureEntry.defaultTexture !== null) {
|
|
558
|
-
if (oldFace.materialID.equals(obj.TextureEntry.defaultTexture.materialID)) {
|
|
559
|
-
obj.TextureEntry.defaultTexture.materialID = obj.TextureEntry.faces[face].materialID;
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
if (obj.TextureEntry.defaultTexture !== null && object.TextureEntry.defaultTexture !== null) {
|
|
565
|
-
obj.TextureEntry.defaultTexture.materialID = object.TextureEntry.defaultTexture.materialID;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
1012
|
+
}
|
|
1013
|
+
if (obj.TextureEntry.defaultTexture !== null) {
|
|
1014
|
+
const oldTextureID = obj.TextureEntry.defaultTexture.textureID.toString();
|
|
1015
|
+
const item = buildMap.assetMap.textures.get(oldTextureID);
|
|
1016
|
+
if (item?.item) {
|
|
1017
|
+
obj.TextureEntry.defaultTexture.textureID = item.item.assetID;
|
|
568
1018
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
1019
|
+
}
|
|
1020
|
+
for (const j of obj.TextureEntry.faces) {
|
|
1021
|
+
const oldTextureID = j.textureID.toString();
|
|
1022
|
+
const item = buildMap.assetMap.textures.get(oldTextureID);
|
|
1023
|
+
if (item?.item) {
|
|
1024
|
+
j.textureID = item.item.assetID;
|
|
575
1025
|
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
1026
|
+
}
|
|
1027
|
+
try {
|
|
1028
|
+
await object.setTextureEntry(obj.TextureEntry);
|
|
1029
|
+
}
|
|
1030
|
+
catch (error) {
|
|
1031
|
+
console.error('Error setting TextureEntry on ' + obj.name);
|
|
1032
|
+
console.error(error);
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
if (obj.name !== undefined) {
|
|
1036
|
+
try {
|
|
1037
|
+
await object.setName(obj.name);
|
|
1038
|
+
}
|
|
1039
|
+
catch (error) {
|
|
1040
|
+
if (error instanceof Error) {
|
|
1041
|
+
throw error;
|
|
582
1042
|
}
|
|
583
|
-
|
|
584
|
-
|
|
1043
|
+
else if (typeof error === 'string') {
|
|
1044
|
+
throw new Error(error);
|
|
585
1045
|
}
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
console.error(error);
|
|
1046
|
+
else {
|
|
1047
|
+
throw new Error('Error setting name on ' + obj.name);
|
|
589
1048
|
}
|
|
590
1049
|
}
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
catch (error) {
|
|
596
|
-
if (error instanceof Error) {
|
|
597
|
-
throw error;
|
|
598
|
-
}
|
|
599
|
-
else if (typeof error === 'string') {
|
|
600
|
-
throw new Error(error);
|
|
601
|
-
}
|
|
602
|
-
else {
|
|
603
|
-
throw new Error('Error setting name on ' + obj.name);
|
|
604
|
-
}
|
|
605
|
-
}
|
|
1050
|
+
}
|
|
1051
|
+
if (obj.description !== undefined) {
|
|
1052
|
+
try {
|
|
1053
|
+
await object.setDescription(obj.description);
|
|
606
1054
|
}
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
1055
|
+
catch (error) {
|
|
1056
|
+
if (error instanceof Error) {
|
|
1057
|
+
throw error;
|
|
610
1058
|
}
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
throw new Error(error);
|
|
617
|
-
}
|
|
618
|
-
else {
|
|
619
|
-
throw new Error('Error setting name on ' + obj.name);
|
|
620
|
-
}
|
|
1059
|
+
else if (typeof error === 'string') {
|
|
1060
|
+
throw new Error(error);
|
|
1061
|
+
}
|
|
1062
|
+
else {
|
|
1063
|
+
throw new Error('Error setting name on ' + obj.name);
|
|
621
1064
|
}
|
|
622
1065
|
}
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
}
|
|
1066
|
+
}
|
|
1067
|
+
const fixedInventory = [...obj.inventory];
|
|
1068
|
+
for (const invItem of fixedInventory) {
|
|
1069
|
+
try {
|
|
1070
|
+
if (invItem.inventoryType === InventoryType_1.InventoryType.Object && invItem.assetID.isZero()) {
|
|
1071
|
+
invItem.assetID = invItem.itemID;
|
|
1072
|
+
}
|
|
1073
|
+
switch (invItem.inventoryType) {
|
|
1074
|
+
case InventoryType_1.InventoryType.Settings:
|
|
1075
|
+
{
|
|
1076
|
+
const item = buildMap.assetMap.settings.get(invItem.assetID.toString());
|
|
1077
|
+
if (item?.item) {
|
|
1078
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1079
|
+
await object.updateInventory();
|
|
1080
|
+
for (const taskItem of object.inventory) {
|
|
1081
|
+
if (taskItem.name === item.item.name) {
|
|
1082
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1083
|
+
await taskItem.rename(invItem.name);
|
|
642
1084
|
}
|
|
643
1085
|
}
|
|
644
|
-
break;
|
|
645
1086
|
}
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
}
|
|
1087
|
+
break;
|
|
1088
|
+
}
|
|
1089
|
+
case InventoryType_1.InventoryType.Wearable:
|
|
1090
|
+
{
|
|
1091
|
+
const item = buildMap.assetMap.wearables.get(invItem.assetID.toString());
|
|
1092
|
+
if (item?.item) {
|
|
1093
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1094
|
+
await object.updateInventory();
|
|
1095
|
+
for (const taskItem of object.inventory) {
|
|
1096
|
+
if (taskItem.name === item.item.name) {
|
|
1097
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1098
|
+
await taskItem.rename(invItem.name);
|
|
659
1099
|
}
|
|
660
1100
|
}
|
|
661
|
-
break;
|
|
662
1101
|
}
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
}
|
|
676
|
-
}
|
|
1102
|
+
break;
|
|
1103
|
+
}
|
|
1104
|
+
case InventoryType_1.InventoryType.Notecard:
|
|
1105
|
+
{
|
|
1106
|
+
const item = buildMap.assetMap.notecards.get(invItem.assetID.toString());
|
|
1107
|
+
if (item?.item) {
|
|
1108
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1109
|
+
await object.updateInventory();
|
|
1110
|
+
for (const taskItem of object.inventory) {
|
|
1111
|
+
if (taskItem.name === item.item.name) {
|
|
1112
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1113
|
+
await taskItem.rename(invItem.name);
|
|
677
1114
|
}
|
|
678
1115
|
}
|
|
679
|
-
break;
|
|
680
1116
|
}
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
}
|
|
1117
|
+
break;
|
|
1118
|
+
}
|
|
1119
|
+
case InventoryType_1.InventoryType.Sound:
|
|
1120
|
+
{
|
|
1121
|
+
const item = buildMap.assetMap.sounds.get(invItem.assetID.toString());
|
|
1122
|
+
if (item?.item) {
|
|
1123
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1124
|
+
await object.updateInventory();
|
|
1125
|
+
for (const taskItem of object.inventory) {
|
|
1126
|
+
if (taskItem.name === item.item.name) {
|
|
1127
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1128
|
+
await taskItem.rename(invItem.name);
|
|
694
1129
|
}
|
|
695
1130
|
}
|
|
696
|
-
break;
|
|
697
1131
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
}
|
|
1132
|
+
break;
|
|
1133
|
+
}
|
|
1134
|
+
case InventoryType_1.InventoryType.Gesture:
|
|
1135
|
+
{
|
|
1136
|
+
const item = buildMap.assetMap.gestures.get(invItem.assetID.toString());
|
|
1137
|
+
if (item?.item) {
|
|
1138
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1139
|
+
await object.updateInventory();
|
|
1140
|
+
for (const taskItem of object.inventory) {
|
|
1141
|
+
if (taskItem.name === item.item.name) {
|
|
1142
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1143
|
+
await taskItem.rename(invItem.name);
|
|
711
1144
|
}
|
|
712
1145
|
}
|
|
713
|
-
break;
|
|
714
1146
|
}
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
1147
|
+
break;
|
|
1148
|
+
}
|
|
1149
|
+
case InventoryType_1.InventoryType.LSL:
|
|
1150
|
+
{
|
|
1151
|
+
const item = buildMap.assetMap.scripts.get(invItem.assetID.toString());
|
|
1152
|
+
if (item?.item) {
|
|
1153
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1154
|
+
await object.updateInventory();
|
|
1155
|
+
for (const taskItem of object.inventory) {
|
|
1156
|
+
if (taskItem.name === item.item.name) {
|
|
1157
|
+
taskItem.permissions = invItem.permissions;
|
|
1158
|
+
await taskItem.rename(invItem.name);
|
|
1159
|
+
if (taskItem.type === AssetType_1.AssetType.LSLText) {
|
|
1160
|
+
let compileQueue = buildMap.assetMap.scriptsToCompile.get(object.FullID.toString());
|
|
1161
|
+
if (compileQueue === undefined) {
|
|
1162
|
+
compileQueue = {
|
|
1163
|
+
gameObject: object,
|
|
1164
|
+
scripts: []
|
|
1165
|
+
};
|
|
726
1166
|
}
|
|
1167
|
+
compileQueue.scripts.push({
|
|
1168
|
+
item: taskItem,
|
|
1169
|
+
oldAssetID: invItem.assetID,
|
|
1170
|
+
shouldStart: invItem.scriptRunning === true,
|
|
1171
|
+
mono: invItem.scriptMono !== false
|
|
1172
|
+
});
|
|
1173
|
+
buildMap.assetMap.scriptsToCompile.set(object.FullID.toString(), compileQueue);
|
|
727
1174
|
}
|
|
728
1175
|
}
|
|
729
1176
|
}
|
|
730
|
-
break;
|
|
731
1177
|
}
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
}
|
|
745
|
-
}
|
|
1178
|
+
break;
|
|
1179
|
+
}
|
|
1180
|
+
case InventoryType_1.InventoryType.Material:
|
|
1181
|
+
{
|
|
1182
|
+
const item = buildMap.assetMap.gltfMaterials.get(invItem.assetID.toString());
|
|
1183
|
+
if (item?.item) {
|
|
1184
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1185
|
+
await object.updateInventory();
|
|
1186
|
+
for (const taskItem of object.inventory) {
|
|
1187
|
+
if (taskItem.name === item.item.name) {
|
|
1188
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1189
|
+
await taskItem.rename(invItem.name);
|
|
746
1190
|
}
|
|
747
1191
|
}
|
|
748
|
-
break;
|
|
749
1192
|
}
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
}
|
|
1193
|
+
break;
|
|
1194
|
+
}
|
|
1195
|
+
case InventoryType_1.InventoryType.Animation:
|
|
1196
|
+
{
|
|
1197
|
+
const item = buildMap.assetMap.animations.get(invItem.assetID.toString());
|
|
1198
|
+
if (item?.item) {
|
|
1199
|
+
await object.dropInventoryIntoContents(item.item);
|
|
1200
|
+
await object.updateInventory();
|
|
1201
|
+
for (const taskItem of object.inventory) {
|
|
1202
|
+
if (taskItem.name === item.item.name) {
|
|
1203
|
+
taskItem.permissions = invItem.permissions;
|
|
1204
|
+
await taskItem.rename(invItem.name);
|
|
763
1205
|
}
|
|
764
1206
|
}
|
|
765
|
-
break;
|
|
766
1207
|
}
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
}
|
|
780
|
-
}
|
|
781
|
-
else {
|
|
782
|
-
console.error('Unable to drop object: item is null');
|
|
1208
|
+
break;
|
|
1209
|
+
}
|
|
1210
|
+
case InventoryType_1.InventoryType.Object:
|
|
1211
|
+
{
|
|
1212
|
+
const inventoryItem = buildMap.assetMap.objects.get(invItem.itemID.toString());
|
|
1213
|
+
if (inventoryItem?.item) {
|
|
1214
|
+
await object.dropInventoryIntoContents(inventoryItem.item);
|
|
1215
|
+
await object.updateInventory();
|
|
1216
|
+
for (const taskItem of object.inventory) {
|
|
1217
|
+
if (taskItem.name === inventoryItem.item.name) {
|
|
1218
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1219
|
+
await taskItem.rename(invItem.name);
|
|
783
1220
|
}
|
|
784
1221
|
}
|
|
785
|
-
break;
|
|
786
1222
|
}
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
}
|
|
801
|
-
}
|
|
802
|
-
else {
|
|
803
|
-
console.error('Unable to drop object: item is null');
|
|
1223
|
+
break;
|
|
1224
|
+
}
|
|
1225
|
+
case InventoryType_1.InventoryType.Texture:
|
|
1226
|
+
case InventoryType_1.InventoryType.Snapshot:
|
|
1227
|
+
{
|
|
1228
|
+
const texItem = buildMap.assetMap.textures.get(invItem.assetID);
|
|
1229
|
+
if (texItem?.item) {
|
|
1230
|
+
await object.dropInventoryIntoContents(texItem.item);
|
|
1231
|
+
await object.updateInventory();
|
|
1232
|
+
for (const taskItem of object.inventory) {
|
|
1233
|
+
if (taskItem.name === texItem.item.name) {
|
|
1234
|
+
taskItem.permissions.nextOwnerMask = invItem.permissions.nextOwnerMask;
|
|
1235
|
+
await taskItem.rename(invItem.name);
|
|
804
1236
|
}
|
|
805
1237
|
}
|
|
806
|
-
break;
|
|
807
1238
|
}
|
|
808
|
-
default:
|
|
809
|
-
console.error('Unsupported inventory type: ' + invItem.inventoryType);
|
|
810
1239
|
break;
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
1240
|
+
}
|
|
1241
|
+
default:
|
|
1242
|
+
console.error('Unsupported inventory type: ' + invItem.inventoryType);
|
|
1243
|
+
break;
|
|
815
1244
|
}
|
|
816
1245
|
}
|
|
817
|
-
|
|
818
|
-
|
|
1246
|
+
catch (error) {
|
|
1247
|
+
console.error(error);
|
|
1248
|
+
}
|
|
1249
|
+
}
|
|
1250
|
+
return object;
|
|
819
1251
|
}
|
|
820
1252
|
gatherAssets(obj, buildMap) {
|
|
821
1253
|
if (obj.extraParams !== undefined) {
|
|
822
1254
|
if (obj.extraParams.meshData !== null) {
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
item: null
|
|
828
|
-
};
|
|
829
|
-
}
|
|
1255
|
+
buildMap.assetMap.mesh.request(obj.extraParams.meshData.meshData, {
|
|
1256
|
+
name: obj.name ?? 'Object',
|
|
1257
|
+
description: obj.description ?? '(no description)'
|
|
1258
|
+
});
|
|
830
1259
|
}
|
|
831
1260
|
else {
|
|
832
1261
|
buildMap.primsNeeded++;
|
|
833
1262
|
}
|
|
834
1263
|
if (obj.extraParams.sculptData !== null) {
|
|
835
1264
|
if (obj.extraParams.sculptData.type !== SculptType_1.SculptType.Mesh) {
|
|
836
|
-
|
|
837
|
-
buildMap.assetMap.textures[obj.extraParams.sculptData.texture.toString()] = {
|
|
838
|
-
item: null
|
|
839
|
-
};
|
|
840
|
-
}
|
|
1265
|
+
buildMap.assetMap.textures.request(obj.extraParams.sculptData.texture);
|
|
841
1266
|
}
|
|
842
1267
|
}
|
|
843
|
-
if (obj.
|
|
844
|
-
|
|
845
|
-
const textureID = j.textureID;
|
|
846
|
-
if (buildMap.assetMap.textures[textureID.toString()] === undefined) {
|
|
847
|
-
buildMap.assetMap.textures[textureID.toString()] = {
|
|
848
|
-
item: null
|
|
849
|
-
};
|
|
850
|
-
}
|
|
851
|
-
const materialID = j.materialID;
|
|
852
|
-
if (!materialID.isZero()) {
|
|
853
|
-
if (buildMap.assetMap.materials[materialID.toString()] === undefined) {
|
|
854
|
-
buildMap.assetMap.materials[materialID.toString()] = null;
|
|
855
|
-
}
|
|
856
|
-
}
|
|
857
|
-
}
|
|
858
|
-
if (obj.TextureEntry.defaultTexture !== null) {
|
|
859
|
-
const textureID = obj.TextureEntry.defaultTexture.textureID;
|
|
860
|
-
if (buildMap.assetMap.textures[textureID.toString()] === undefined) {
|
|
861
|
-
buildMap.assetMap.textures[textureID.toString()] = {
|
|
862
|
-
item: null
|
|
863
|
-
};
|
|
864
|
-
}
|
|
865
|
-
const materialID = obj.TextureEntry.defaultTexture.materialID;
|
|
866
|
-
if (!materialID.isZero()) {
|
|
867
|
-
if (buildMap.assetMap.materials[materialID.toString()] === undefined) {
|
|
868
|
-
buildMap.assetMap.materials[materialID.toString()] = null;
|
|
869
|
-
}
|
|
870
|
-
}
|
|
871
|
-
}
|
|
1268
|
+
if (obj.extraParams.lightImageData != null && !obj.extraParams.lightImageData.texture.isZero()) {
|
|
1269
|
+
buildMap.assetMap.textures.request(obj.extraParams.lightImageData.texture);
|
|
872
1270
|
}
|
|
873
|
-
if (obj.
|
|
874
|
-
for (const
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
case InventoryType_1.InventoryType.Animation:
|
|
878
|
-
{
|
|
879
|
-
if (buildMap.assetMap.animations[assetID.toString()] === undefined) {
|
|
880
|
-
buildMap.assetMap.animations[assetID.toString()] = {
|
|
881
|
-
name: j.name,
|
|
882
|
-
description: j.description,
|
|
883
|
-
item: null
|
|
884
|
-
};
|
|
885
|
-
}
|
|
886
|
-
break;
|
|
887
|
-
}
|
|
888
|
-
case InventoryType_1.InventoryType.Wearable:
|
|
889
|
-
case InventoryType_1.InventoryType.Bodypart:
|
|
890
|
-
{
|
|
891
|
-
if (buildMap.assetMap.bodyparts[assetID.toString()] === undefined) {
|
|
892
|
-
buildMap.assetMap.bodyparts[assetID.toString()] = {
|
|
893
|
-
name: j.name,
|
|
894
|
-
description: j.description,
|
|
895
|
-
item: null
|
|
896
|
-
};
|
|
897
|
-
}
|
|
898
|
-
break;
|
|
899
|
-
}
|
|
900
|
-
case InventoryType_1.InventoryType.CallingCard:
|
|
901
|
-
{
|
|
902
|
-
if (buildMap.assetMap.callingcards[assetID.toString()] === undefined) {
|
|
903
|
-
buildMap.assetMap.callingcards[assetID.toString()] = {
|
|
904
|
-
name: j.name,
|
|
905
|
-
description: j.description,
|
|
906
|
-
item: null
|
|
907
|
-
};
|
|
908
|
-
}
|
|
909
|
-
break;
|
|
910
|
-
}
|
|
911
|
-
case InventoryType_1.InventoryType.Clothing:
|
|
912
|
-
{
|
|
913
|
-
if (buildMap.assetMap.clothing[assetID.toString()] === undefined) {
|
|
914
|
-
buildMap.assetMap.clothing[assetID.toString()] = {
|
|
915
|
-
name: j.name,
|
|
916
|
-
description: j.description,
|
|
917
|
-
item: null
|
|
918
|
-
};
|
|
919
|
-
}
|
|
920
|
-
break;
|
|
921
|
-
}
|
|
922
|
-
case InventoryType_1.InventoryType.Gesture:
|
|
923
|
-
{
|
|
924
|
-
if (buildMap.assetMap.gestures[assetID.toString()] === undefined) {
|
|
925
|
-
buildMap.assetMap.gestures[assetID.toString()] = {
|
|
926
|
-
name: j.name,
|
|
927
|
-
description: j.description,
|
|
928
|
-
item: null
|
|
929
|
-
};
|
|
930
|
-
}
|
|
931
|
-
break;
|
|
932
|
-
}
|
|
933
|
-
case InventoryType_1.InventoryType.Script:
|
|
934
|
-
case InventoryType_1.InventoryType.LSL:
|
|
935
|
-
{
|
|
936
|
-
if (buildMap.assetMap.scripts[assetID.toString()] === undefined) {
|
|
937
|
-
buildMap.assetMap.scripts[assetID.toString()] = {
|
|
938
|
-
name: j.name,
|
|
939
|
-
description: j.description,
|
|
940
|
-
item: null
|
|
941
|
-
};
|
|
942
|
-
}
|
|
943
|
-
break;
|
|
944
|
-
}
|
|
945
|
-
case InventoryType_1.InventoryType.Texture:
|
|
946
|
-
case InventoryType_1.InventoryType.Snapshot:
|
|
947
|
-
{
|
|
948
|
-
if (buildMap.assetMap.textures[assetID.toString()] === undefined) {
|
|
949
|
-
buildMap.assetMap.textures[assetID.toString()] = {
|
|
950
|
-
name: j.name,
|
|
951
|
-
description: j.description,
|
|
952
|
-
item: null
|
|
953
|
-
};
|
|
954
|
-
}
|
|
955
|
-
break;
|
|
956
|
-
}
|
|
957
|
-
case InventoryType_1.InventoryType.Notecard:
|
|
958
|
-
{
|
|
959
|
-
if (buildMap.assetMap.notecards[assetID.toString()] === undefined) {
|
|
960
|
-
buildMap.assetMap.notecards[assetID.toString()] = {
|
|
961
|
-
name: j.name,
|
|
962
|
-
description: j.description,
|
|
963
|
-
item: null
|
|
964
|
-
};
|
|
965
|
-
}
|
|
966
|
-
break;
|
|
967
|
-
}
|
|
968
|
-
case InventoryType_1.InventoryType.Sound:
|
|
969
|
-
{
|
|
970
|
-
if (buildMap.assetMap.sounds[assetID.toString()] === undefined) {
|
|
971
|
-
buildMap.assetMap.sounds[assetID.toString()] = {
|
|
972
|
-
name: j.name,
|
|
973
|
-
description: j.description,
|
|
974
|
-
item: null
|
|
975
|
-
};
|
|
976
|
-
}
|
|
977
|
-
break;
|
|
978
|
-
}
|
|
979
|
-
case InventoryType_1.InventoryType.Object:
|
|
980
|
-
{
|
|
981
|
-
if (buildMap.assetMap.objects[assetID.toString()] === undefined) {
|
|
982
|
-
buildMap.assetMap.objects[assetID.toString()] = null;
|
|
983
|
-
}
|
|
984
|
-
break;
|
|
985
|
-
}
|
|
986
|
-
case InventoryType_1.InventoryType.Settings:
|
|
987
|
-
{
|
|
988
|
-
if (buildMap.assetMap.settings[assetID.toString()] === undefined) {
|
|
989
|
-
buildMap.assetMap.settings[assetID.toString()] = {
|
|
990
|
-
name: j.name,
|
|
991
|
-
description: j.description,
|
|
992
|
-
item: null
|
|
993
|
-
};
|
|
994
|
-
}
|
|
995
|
-
break;
|
|
996
|
-
}
|
|
997
|
-
default:
|
|
998
|
-
console.error('Unsupported inventory type: ' + j.inventoryType);
|
|
999
|
-
break;
|
|
1271
|
+
if (obj.extraParams.renderMaterialData != null) {
|
|
1272
|
+
for (const item of obj.extraParams.renderMaterialData.params) {
|
|
1273
|
+
if (!item.textureUUID.isZero()) {
|
|
1274
|
+
buildMap.assetMap.gltfMaterials.request(item.textureUUID);
|
|
1000
1275
|
}
|
|
1001
1276
|
}
|
|
1002
1277
|
}
|
|
1003
1278
|
}
|
|
1004
|
-
if (obj.
|
|
1005
|
-
for (const
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
return __awaiter(this, arguments, void 0, function* (obj, map, callback, costOnly = false, skipMove = false) {
|
|
1012
|
-
const buildMap = new BuildMap_1.BuildMap(map, callback, costOnly);
|
|
1013
|
-
this.gatherAssets(obj, buildMap);
|
|
1014
|
-
const bomTextures = [
|
|
1015
|
-
'5a9f4a74-30f2-821c-b88d-70499d3e7183',
|
|
1016
|
-
'ae2de45c-d252-50b8-5c6e-19f39ce79317',
|
|
1017
|
-
'24daea5f-0539-cfcf-047f-fbc40b2786ba',
|
|
1018
|
-
'52cc6bb6-2ee5-e632-d3ad-50197b1dcb8a',
|
|
1019
|
-
'43529ce8-7faa-ad92-165a-bc4078371687',
|
|
1020
|
-
'09aac1fb-6bce-0bee-7d44-caac6dbb6c63',
|
|
1021
|
-
'ff62763f-d60a-9855-890b-0c96f8f8cd98',
|
|
1022
|
-
'8e915e25-31d1-cc95-ae08-d58a47488251',
|
|
1023
|
-
'9742065b-19b5-297c-858a-29711d539043',
|
|
1024
|
-
'03642e83-2bd1-4eb9-34b4-4c47ed586d2d',
|
|
1025
|
-
'edd51b77-fc10-ce7a-4b3d-011dfc349e4f',
|
|
1026
|
-
'c228d1cf-4b5d-4ba8-84f4-899a0796aa97'
|
|
1027
|
-
];
|
|
1028
|
-
for (const bomTexture of bomTextures) {
|
|
1029
|
-
if (buildMap.assetMap.textures[bomTexture] !== undefined) {
|
|
1030
|
-
delete buildMap.assetMap.textures[bomTexture];
|
|
1279
|
+
if (obj.TextureEntry !== undefined) {
|
|
1280
|
+
for (const j of obj.TextureEntry.faces) {
|
|
1281
|
+
const { textureID } = j;
|
|
1282
|
+
buildMap.assetMap.textures.request(textureID);
|
|
1283
|
+
const { materialID } = j;
|
|
1284
|
+
if (!materialID.isZero()) {
|
|
1285
|
+
buildMap.assetMap.materials.request(materialID);
|
|
1031
1286
|
}
|
|
1032
1287
|
}
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
const agentLocalID = this.currentRegion.agent.localID;
|
|
1040
|
-
const agentObject = this.currentRegion.objects.getObjectByLocalID(agentLocalID);
|
|
1041
|
-
if (agentObject.Position !== undefined) {
|
|
1042
|
-
agentPos = new Vector3_1.Vector3(agentObject.Position);
|
|
1043
|
-
}
|
|
1044
|
-
else {
|
|
1045
|
-
throw new Error('Agent position is undefined');
|
|
1288
|
+
if (obj.TextureEntry.defaultTexture !== null) {
|
|
1289
|
+
const { textureID } = obj.TextureEntry.defaultTexture;
|
|
1290
|
+
buildMap.assetMap.textures.request(textureID);
|
|
1291
|
+
const { materialID } = obj.TextureEntry.defaultTexture;
|
|
1292
|
+
if (!materialID.isZero()) {
|
|
1293
|
+
buildMap.assetMap.materials.request(materialID);
|
|
1046
1294
|
}
|
|
1047
1295
|
}
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
storedPosition = obj.Position;
|
|
1062
|
-
obj.Position = new Vector3_1.Vector3(buildMap.rezLocation);
|
|
1063
|
-
}
|
|
1064
|
-
const parts = [];
|
|
1065
|
-
parts.push(() => __awaiter(this, void 0, void 0, function* () {
|
|
1066
|
-
return {
|
|
1067
|
-
index: 1,
|
|
1068
|
-
object: yield this.buildPart(obj, Vector3_1.Vector3.getZero(), Quaternion_1.Quaternion.getIdentity(), buildMap, true)
|
|
1069
|
-
};
|
|
1070
|
-
}));
|
|
1071
|
-
if (obj.children) {
|
|
1072
|
-
if (obj.Position === undefined) {
|
|
1073
|
-
obj.Position = Vector3_1.Vector3.getZero();
|
|
1074
|
-
}
|
|
1075
|
-
if (obj.Rotation === undefined) {
|
|
1076
|
-
obj.Rotation = Quaternion_1.Quaternion.getIdentity();
|
|
1077
|
-
}
|
|
1078
|
-
let childIndex = 2;
|
|
1079
|
-
for (const child of obj.children) {
|
|
1080
|
-
if (child.Position !== undefined && child.Rotation !== undefined) {
|
|
1081
|
-
const index = childIndex++;
|
|
1082
|
-
parts.push(() => __awaiter(this, void 0, void 0, function* () {
|
|
1083
|
-
return {
|
|
1084
|
-
index,
|
|
1085
|
-
object: yield this.buildPart(child, new Vector3_1.Vector3(obj.Position), new Quaternion_1.Quaternion(obj.Rotation), buildMap, false)
|
|
1086
|
-
};
|
|
1087
|
-
}));
|
|
1088
|
-
}
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
let results = {
|
|
1092
|
-
results: [],
|
|
1093
|
-
errors: []
|
|
1094
|
-
};
|
|
1095
|
-
results = yield Utils_1.Utils.promiseConcurrent(parts, 5, 0);
|
|
1096
|
-
if (results.errors.length > 0) {
|
|
1097
|
-
for (const err of results.errors) {
|
|
1098
|
-
console.error(err);
|
|
1099
|
-
}
|
|
1100
|
-
}
|
|
1101
|
-
let rootObj = null;
|
|
1102
|
-
for (const childObject of results.results) {
|
|
1103
|
-
if (childObject.object.isMarkedRoot) {
|
|
1104
|
-
rootObj = childObject.object;
|
|
1105
|
-
break;
|
|
1106
|
-
}
|
|
1107
|
-
}
|
|
1108
|
-
if (rootObj === null) {
|
|
1109
|
-
throw new Error('Failed to find root prim..');
|
|
1110
|
-
}
|
|
1111
|
-
const childPrims = [];
|
|
1112
|
-
results.results.sort((a, b) => {
|
|
1113
|
-
return a.index - b.index;
|
|
1114
|
-
});
|
|
1115
|
-
for (const childObject of results.results) {
|
|
1116
|
-
if (childObject.object !== rootObj) {
|
|
1117
|
-
childPrims.push(childObject.object);
|
|
1118
|
-
}
|
|
1119
|
-
}
|
|
1120
|
-
try {
|
|
1121
|
-
yield rootObj.linkFrom(childPrims);
|
|
1122
|
-
}
|
|
1123
|
-
catch (err) {
|
|
1124
|
-
console.error('Link failed:');
|
|
1125
|
-
console.error(err);
|
|
1126
|
-
}
|
|
1127
|
-
if (storedPosition !== undefined) {
|
|
1128
|
-
obj.Position = storedPosition;
|
|
1129
|
-
}
|
|
1130
|
-
return rootObj;
|
|
1131
|
-
});
|
|
1132
|
-
}
|
|
1133
|
-
createPrims(count, position) {
|
|
1134
|
-
return new Promise((resolve, reject) => {
|
|
1135
|
-
const gatheredPrims = [];
|
|
1136
|
-
let objSub = undefined;
|
|
1137
|
-
let timeout = setTimeout(() => {
|
|
1138
|
-
if (objSub !== undefined) {
|
|
1139
|
-
objSub.unsubscribe();
|
|
1140
|
-
objSub = undefined;
|
|
1141
|
-
}
|
|
1142
|
-
if (timeout !== undefined) {
|
|
1143
|
-
clearTimeout(timeout);
|
|
1144
|
-
timeout = undefined;
|
|
1145
|
-
}
|
|
1146
|
-
reject(new Error('Failed to gather ' + count + ' prims - only gathered ' + gatheredPrims.length));
|
|
1147
|
-
}, 30000);
|
|
1148
|
-
objSub = this.currentRegion.clientEvents.onNewObjectEvent.subscribe((evt) => __awaiter(this, void 0, void 0, function* () {
|
|
1149
|
-
if (!evt.object.resolvedAt) {
|
|
1150
|
-
yield this.resolveObject(evt.object, {});
|
|
1151
|
-
}
|
|
1152
|
-
if (evt.createSelected && !evt.object.claimedForBuild) {
|
|
1153
|
-
if (evt.object.itemID === undefined || evt.object.itemID.isZero()) {
|
|
1154
|
-
if (evt.object.PCode === PCode_1.PCode.Prim &&
|
|
1155
|
-
evt.object.Material === 3 &&
|
|
1156
|
-
evt.object.PathCurve === 16 &&
|
|
1157
|
-
evt.object.ProfileCurve === 1 &&
|
|
1158
|
-
evt.object.PathBegin === 0 &&
|
|
1159
|
-
evt.object.PathEnd === 1 &&
|
|
1160
|
-
evt.object.PathScaleX === 1 &&
|
|
1161
|
-
evt.object.PathScaleY === 1 &&
|
|
1162
|
-
evt.object.PathShearX === 0 &&
|
|
1163
|
-
evt.object.PathShearY === 0 &&
|
|
1164
|
-
evt.object.PathTwist === 0 &&
|
|
1165
|
-
evt.object.PathTwistBegin === 0 &&
|
|
1166
|
-
evt.object.PathRadiusOffset === 0 &&
|
|
1167
|
-
evt.object.PathTaperX === 0 &&
|
|
1168
|
-
evt.object.PathTaperY === 0 &&
|
|
1169
|
-
evt.object.PathRevolutions === 1 &&
|
|
1170
|
-
evt.object.PathSkew === 0 &&
|
|
1171
|
-
evt.object.ProfileBegin === 0 &&
|
|
1172
|
-
evt.object.ProfileHollow === 0) {
|
|
1173
|
-
evt.object.claimedForBuild = true;
|
|
1174
|
-
gatheredPrims.push(evt.object);
|
|
1175
|
-
if (gatheredPrims.length === count) {
|
|
1176
|
-
if (objSub !== undefined) {
|
|
1177
|
-
objSub.unsubscribe();
|
|
1178
|
-
objSub = undefined;
|
|
1179
|
-
}
|
|
1180
|
-
if (timeout !== undefined) {
|
|
1181
|
-
clearTimeout(timeout);
|
|
1182
|
-
timeout = undefined;
|
|
1183
|
-
}
|
|
1184
|
-
resolve(gatheredPrims);
|
|
1185
|
-
}
|
|
1296
|
+
}
|
|
1297
|
+
if (obj.inventory !== undefined) {
|
|
1298
|
+
const invList = [...obj.inventory];
|
|
1299
|
+
for (const j of invList) {
|
|
1300
|
+
const { assetID } = j;
|
|
1301
|
+
switch (j.inventoryType) {
|
|
1302
|
+
case InventoryType_1.InventoryType.Animation:
|
|
1303
|
+
{
|
|
1304
|
+
buildMap.assetMap.animations.request(assetID, {
|
|
1305
|
+
name: j.name,
|
|
1306
|
+
description: j.description
|
|
1307
|
+
});
|
|
1308
|
+
break;
|
|
1186
1309
|
}
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
GroupID: UUID_1.UUID.zero()
|
|
1196
|
-
};
|
|
1197
|
-
msg.ObjectData = {
|
|
1198
|
-
PCode: PCode_1.PCode.Prim,
|
|
1199
|
-
Material: 3,
|
|
1200
|
-
AddFlags: PrimFlags_1.PrimFlags.CreateSelected,
|
|
1201
|
-
PathCurve: 16,
|
|
1202
|
-
ProfileCurve: 1,
|
|
1203
|
-
PathBegin: 0,
|
|
1204
|
-
PathEnd: 0,
|
|
1205
|
-
PathScaleX: 100,
|
|
1206
|
-
PathScaleY: 100,
|
|
1207
|
-
PathShearX: 0,
|
|
1208
|
-
PathShearY: 0,
|
|
1209
|
-
PathTwist: 0,
|
|
1210
|
-
PathTwistBegin: 0,
|
|
1211
|
-
PathRadiusOffset: 0,
|
|
1212
|
-
PathTaperX: 0,
|
|
1213
|
-
PathTaperY: 0,
|
|
1214
|
-
PathRevolutions: 0,
|
|
1215
|
-
PathSkew: 0,
|
|
1216
|
-
ProfileBegin: 0,
|
|
1217
|
-
ProfileEnd: 0,
|
|
1218
|
-
ProfileHollow: 0,
|
|
1219
|
-
BypassRaycast: 1,
|
|
1220
|
-
RayStart: position,
|
|
1221
|
-
RayEnd: position,
|
|
1222
|
-
RayTargetID: UUID_1.UUID.zero(),
|
|
1223
|
-
RayEndIsIntersection: 0,
|
|
1224
|
-
Scale: new Vector3_1.Vector3([0.5, 0.5, 0.5]),
|
|
1225
|
-
Rotation: Quaternion_1.Quaternion.getIdentity(),
|
|
1226
|
-
State: 0
|
|
1227
|
-
};
|
|
1228
|
-
this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
1229
|
-
}
|
|
1230
|
-
});
|
|
1231
|
-
}
|
|
1232
|
-
getObjectByLocalID(id_1, resolve_1) {
|
|
1233
|
-
return __awaiter(this, arguments, void 0, function* (id, resolve, waitFor = 0) {
|
|
1234
|
-
let obj = null;
|
|
1235
|
-
try {
|
|
1236
|
-
obj = this.currentRegion.objects.getObjectByLocalID(id);
|
|
1237
|
-
}
|
|
1238
|
-
catch (error) {
|
|
1239
|
-
if (waitFor > 0) {
|
|
1240
|
-
obj = yield this.waitForObjectByLocalID(id, waitFor);
|
|
1241
|
-
}
|
|
1242
|
-
else {
|
|
1243
|
-
throw (error);
|
|
1244
|
-
}
|
|
1245
|
-
}
|
|
1246
|
-
if (resolve) {
|
|
1247
|
-
yield this.currentRegion.resolver.resolveObjects([obj], {});
|
|
1248
|
-
}
|
|
1249
|
-
return obj;
|
|
1250
|
-
});
|
|
1251
|
-
}
|
|
1252
|
-
getObjectByUUID(id_1, resolve_1) {
|
|
1253
|
-
return __awaiter(this, arguments, void 0, function* (id, resolve, waitFor = 0) {
|
|
1254
|
-
let obj = null;
|
|
1255
|
-
try {
|
|
1256
|
-
obj = this.currentRegion.objects.getObjectByUUID(id);
|
|
1257
|
-
}
|
|
1258
|
-
catch (error) {
|
|
1259
|
-
if (waitFor > 0) {
|
|
1260
|
-
obj = yield this.waitForObjectByUUID(id, waitFor);
|
|
1261
|
-
}
|
|
1262
|
-
else {
|
|
1263
|
-
throw (error);
|
|
1264
|
-
}
|
|
1265
|
-
}
|
|
1266
|
-
if (resolve) {
|
|
1267
|
-
yield this.currentRegion.resolver.resolveObjects([obj], {});
|
|
1268
|
-
}
|
|
1269
|
-
return obj;
|
|
1270
|
-
});
|
|
1271
|
-
}
|
|
1272
|
-
findObjectsByName(pattern, minX, maxX, minY, maxY, minZ, maxZ) {
|
|
1273
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
1274
|
-
let objects = [];
|
|
1275
|
-
if (minX !== undefined && maxX !== undefined && minY !== undefined && maxY !== undefined && minZ !== undefined && maxZ !== undefined) {
|
|
1276
|
-
objects = yield this.getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ, true);
|
|
1277
|
-
}
|
|
1278
|
-
else {
|
|
1279
|
-
objects = yield this.getAllObjects({ resolve: true });
|
|
1280
|
-
}
|
|
1281
|
-
const idCheck = {};
|
|
1282
|
-
const matches = [];
|
|
1283
|
-
const it = function (go) {
|
|
1284
|
-
if (go.name !== undefined) {
|
|
1285
|
-
let match = false;
|
|
1286
|
-
if (pattern instanceof RegExp) {
|
|
1287
|
-
if (pattern.test(go.name)) {
|
|
1288
|
-
match = true;
|
|
1310
|
+
case InventoryType_1.InventoryType.Wearable:
|
|
1311
|
+
{
|
|
1312
|
+
buildMap.assetMap.wearables.request(assetID, {
|
|
1313
|
+
name: j.name,
|
|
1314
|
+
description: j.description,
|
|
1315
|
+
assetType: j.type
|
|
1316
|
+
});
|
|
1317
|
+
break;
|
|
1289
1318
|
}
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
matches.push(go);
|
|
1298
|
-
idCheck[fullID] = true;
|
|
1319
|
+
case InventoryType_1.InventoryType.CallingCard:
|
|
1320
|
+
{
|
|
1321
|
+
buildMap.assetMap.callingcards.request(assetID, {
|
|
1322
|
+
name: j.name,
|
|
1323
|
+
description: j.description
|
|
1324
|
+
});
|
|
1325
|
+
break;
|
|
1299
1326
|
}
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1327
|
+
case InventoryType_1.InventoryType.Gesture:
|
|
1328
|
+
{
|
|
1329
|
+
buildMap.assetMap.gestures.request(assetID, {
|
|
1330
|
+
name: j.name,
|
|
1331
|
+
description: j.description
|
|
1332
|
+
});
|
|
1333
|
+
break;
|
|
1334
|
+
}
|
|
1335
|
+
case InventoryType_1.InventoryType.LSL:
|
|
1336
|
+
{
|
|
1337
|
+
buildMap.assetMap.scripts.request(assetID, {
|
|
1338
|
+
name: j.name,
|
|
1339
|
+
description: j.description
|
|
1340
|
+
});
|
|
1341
|
+
break;
|
|
1342
|
+
}
|
|
1343
|
+
case InventoryType_1.InventoryType.Texture:
|
|
1344
|
+
case InventoryType_1.InventoryType.Snapshot:
|
|
1345
|
+
{
|
|
1346
|
+
buildMap.assetMap.textures.request(assetID, {
|
|
1347
|
+
name: j.name,
|
|
1348
|
+
description: j.description
|
|
1349
|
+
});
|
|
1350
|
+
break;
|
|
1351
|
+
}
|
|
1352
|
+
case InventoryType_1.InventoryType.Notecard:
|
|
1353
|
+
{
|
|
1354
|
+
buildMap.assetMap.notecards.request(assetID, {
|
|
1355
|
+
name: j.name,
|
|
1356
|
+
description: j.description
|
|
1357
|
+
});
|
|
1358
|
+
break;
|
|
1359
|
+
}
|
|
1360
|
+
case InventoryType_1.InventoryType.Sound:
|
|
1361
|
+
{
|
|
1362
|
+
buildMap.assetMap.sounds.request(assetID, {
|
|
1363
|
+
name: j.name,
|
|
1364
|
+
description: j.description
|
|
1365
|
+
});
|
|
1366
|
+
break;
|
|
1367
|
+
}
|
|
1368
|
+
case InventoryType_1.InventoryType.Object:
|
|
1369
|
+
{
|
|
1370
|
+
buildMap.assetMap.objects.request(assetID);
|
|
1371
|
+
break;
|
|
1372
|
+
}
|
|
1373
|
+
case InventoryType_1.InventoryType.Settings:
|
|
1374
|
+
{
|
|
1375
|
+
buildMap.assetMap.settings.request(assetID, {
|
|
1376
|
+
name: j.name,
|
|
1377
|
+
description: j.description
|
|
1378
|
+
});
|
|
1379
|
+
break;
|
|
1380
|
+
}
|
|
1381
|
+
case InventoryType_1.InventoryType.Material:
|
|
1382
|
+
{
|
|
1383
|
+
buildMap.assetMap.gltfMaterials.request(assetID, {
|
|
1384
|
+
name: j.name,
|
|
1385
|
+
description: j.description
|
|
1386
|
+
});
|
|
1387
|
+
break;
|
|
1388
|
+
}
|
|
1389
|
+
default:
|
|
1390
|
+
console.error('Unsupported inventory type: ' + j.inventoryType);
|
|
1391
|
+
break;
|
|
1364
1392
|
}
|
|
1365
1393
|
}
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
for (const o of checkList) {
|
|
1371
|
-
let found = false;
|
|
1372
|
-
if (o.FullID) {
|
|
1373
|
-
const fullID = o.FullID.toString();
|
|
1374
|
-
if (stillAlive[fullID]) {
|
|
1375
|
-
found = true;
|
|
1376
|
-
}
|
|
1377
|
-
}
|
|
1378
|
-
if (!found) {
|
|
1379
|
-
deadObjects.push(o);
|
|
1380
|
-
}
|
|
1394
|
+
}
|
|
1395
|
+
if (obj.children) {
|
|
1396
|
+
for (const child of obj.children) {
|
|
1397
|
+
this.gatherAssets(child, buildMap);
|
|
1381
1398
|
}
|
|
1382
|
-
|
|
1383
|
-
});
|
|
1384
|
-
}
|
|
1385
|
-
setPersist(persist) {
|
|
1386
|
-
this.currentRegion.objects.setPersist(persist);
|
|
1387
|
-
}
|
|
1388
|
-
grabObject(localID_1) {
|
|
1389
|
-
return __awaiter(this, arguments, void 0, function* (localID, grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
1390
|
-
if (localID instanceof UUID_1.UUID) {
|
|
1391
|
-
const obj = this.currentRegion.objects.getObjectByUUID(localID);
|
|
1392
|
-
localID = obj.ID;
|
|
1393
|
-
}
|
|
1394
|
-
const msg = new ObjectGrab_1.ObjectGrabMessage();
|
|
1395
|
-
msg.AgentData = {
|
|
1396
|
-
AgentID: this.agent.agentID,
|
|
1397
|
-
SessionID: this.circuit.sessionID
|
|
1398
|
-
};
|
|
1399
|
-
msg.ObjectData = {
|
|
1400
|
-
LocalID: localID,
|
|
1401
|
-
GrabOffset: grabOffset
|
|
1402
|
-
};
|
|
1403
|
-
msg.SurfaceInfo = [
|
|
1404
|
-
{
|
|
1405
|
-
UVCoord: uvCoordinate,
|
|
1406
|
-
STCoord: stCoordinate,
|
|
1407
|
-
FaceIndex: faceIndex,
|
|
1408
|
-
Position: position,
|
|
1409
|
-
Normal: normal,
|
|
1410
|
-
Binormal: binormal
|
|
1411
|
-
}
|
|
1412
|
-
];
|
|
1413
|
-
const seqID = this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
1414
|
-
return this.circuit.waitForAck(seqID, 10000);
|
|
1415
|
-
});
|
|
1416
|
-
}
|
|
1417
|
-
deGrabObject(localID_1) {
|
|
1418
|
-
return __awaiter(this, arguments, void 0, function* (localID, _grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
1419
|
-
if (localID instanceof UUID_1.UUID) {
|
|
1420
|
-
const obj = this.currentRegion.objects.getObjectByUUID(localID);
|
|
1421
|
-
localID = obj.ID;
|
|
1422
|
-
}
|
|
1423
|
-
const msg = new ObjectDeGrab_1.ObjectDeGrabMessage();
|
|
1424
|
-
msg.AgentData = {
|
|
1425
|
-
AgentID: this.agent.agentID,
|
|
1426
|
-
SessionID: this.circuit.sessionID
|
|
1427
|
-
};
|
|
1428
|
-
msg.ObjectData = {
|
|
1429
|
-
LocalID: localID
|
|
1430
|
-
};
|
|
1431
|
-
msg.SurfaceInfo = [
|
|
1432
|
-
{
|
|
1433
|
-
UVCoord: uvCoordinate,
|
|
1434
|
-
STCoord: stCoordinate,
|
|
1435
|
-
FaceIndex: faceIndex,
|
|
1436
|
-
Position: position,
|
|
1437
|
-
Normal: normal,
|
|
1438
|
-
Binormal: binormal
|
|
1439
|
-
}
|
|
1440
|
-
];
|
|
1441
|
-
const seqID = this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
1442
|
-
return this.circuit.waitForAck(seqID, 10000);
|
|
1443
|
-
});
|
|
1444
|
-
}
|
|
1445
|
-
dragGrabbedObject(localID_1, grabPosition_1) {
|
|
1446
|
-
return __awaiter(this, arguments, void 0, function* (localID, grabPosition, grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
1447
|
-
if (!(localID instanceof UUID_1.UUID)) {
|
|
1448
|
-
const obj = this.currentRegion.objects.getObjectByLocalID(localID);
|
|
1449
|
-
localID = obj.FullID;
|
|
1450
|
-
}
|
|
1451
|
-
const msg = new ObjectGrabUpdate_1.ObjectGrabUpdateMessage();
|
|
1452
|
-
msg.AgentData = {
|
|
1453
|
-
AgentID: this.agent.agentID,
|
|
1454
|
-
SessionID: this.circuit.sessionID
|
|
1455
|
-
};
|
|
1456
|
-
msg.ObjectData = {
|
|
1457
|
-
ObjectID: localID,
|
|
1458
|
-
GrabOffsetInitial: grabOffset,
|
|
1459
|
-
GrabPosition: grabPosition,
|
|
1460
|
-
TimeSinceLast: 0
|
|
1461
|
-
};
|
|
1462
|
-
msg.SurfaceInfo = [
|
|
1463
|
-
{
|
|
1464
|
-
UVCoord: uvCoordinate,
|
|
1465
|
-
STCoord: stCoordinate,
|
|
1466
|
-
FaceIndex: faceIndex,
|
|
1467
|
-
Position: position,
|
|
1468
|
-
Normal: normal,
|
|
1469
|
-
Binormal: binormal
|
|
1470
|
-
}
|
|
1471
|
-
];
|
|
1472
|
-
const seqID = this.circuit.sendMessage(msg, PacketFlags_1.PacketFlags.Reliable);
|
|
1473
|
-
return this.circuit.waitForAck(seqID, 10000);
|
|
1474
|
-
});
|
|
1475
|
-
}
|
|
1476
|
-
touchObject(localID_1) {
|
|
1477
|
-
return __awaiter(this, arguments, void 0, function* (localID, grabOffset = Vector3_1.Vector3.getZero(), uvCoordinate = Vector3_1.Vector3.getZero(), stCoordinate = Vector3_1.Vector3.getZero(), faceIndex = 0, position = Vector3_1.Vector3.getZero(), normal = Vector3_1.Vector3.getZero(), binormal = Vector3_1.Vector3.getZero()) {
|
|
1478
|
-
if (localID instanceof UUID_1.UUID) {
|
|
1479
|
-
const obj = this.currentRegion.objects.getObjectByUUID(localID);
|
|
1480
|
-
localID = obj.ID;
|
|
1481
|
-
}
|
|
1482
|
-
yield this.grabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
|
|
1483
|
-
return this.deGrabObject(localID, grabOffset, uvCoordinate, stCoordinate, faceIndex, position, normal, binormal);
|
|
1484
|
-
});
|
|
1399
|
+
}
|
|
1485
1400
|
}
|
|
1486
1401
|
}
|
|
1487
1402
|
exports.RegionCommands = RegionCommands;
|