@caspertech/node-metaverse 0.7.50 → 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.
Files changed (461) hide show
  1. package/dist/examples/Camera/Camera.js +3 -14
  2. package/dist/examples/Camera/Camera.js.map +1 -1
  3. package/dist/examples/ExampleBot.js +66 -87
  4. package/dist/examples/ExampleBot.js.map +1 -1
  5. package/dist/examples/Friends/Friends.js +29 -44
  6. package/dist/examples/Friends/Friends.js.map +1 -1
  7. package/dist/examples/Grid/Name2Key.js +25 -36
  8. package/dist/examples/Grid/Name2Key.js.map +1 -1
  9. package/dist/examples/Groups/Group.js +42 -55
  10. package/dist/examples/Groups/Group.js.map +1 -1
  11. package/dist/examples/Groups/GroupChat.js +55 -68
  12. package/dist/examples/Groups/GroupChat.js.map +1 -1
  13. package/dist/examples/InstantMessages/InstantMessages.js +8 -21
  14. package/dist/examples/InstantMessages/InstantMessages.js.map +1 -1
  15. package/dist/examples/Inventory/Inventory.js +80 -97
  16. package/dist/examples/Inventory/Inventory.js.map +1 -1
  17. package/dist/examples/MFA/MFA.js +24 -40
  18. package/dist/examples/MFA/MFA.js.map +1 -1
  19. package/dist/examples/Money/Money.js +28 -41
  20. package/dist/examples/Money/Money.js.map +1 -1
  21. package/dist/examples/Objects/TaskInventory.js +13 -24
  22. package/dist/examples/Objects/TaskInventory.js.map +1 -1
  23. package/dist/examples/Region/Agents.js +6 -17
  24. package/dist/examples/Region/Agents.js.map +1 -1
  25. package/dist/examples/Region/Estate.js +9 -20
  26. package/dist/examples/Region/Estate.js.map +1 -1
  27. package/dist/examples/Region/Parcels.js +12 -23
  28. package/dist/examples/Region/Parcels.js.map +1 -1
  29. package/dist/examples/Region/Region.js +2 -13
  30. package/dist/examples/Region/Region.js.map +1 -1
  31. package/dist/examples/Region/Settings.js +15 -0
  32. package/dist/examples/Region/Settings.js.map +1 -0
  33. package/dist/examples/Teleports/Teleports.js +22 -35
  34. package/dist/examples/Teleports/Teleports.js.map +1 -1
  35. package/dist/lib/Bot.d.ts +14 -14
  36. package/dist/lib/Bot.js +217 -231
  37. package/dist/lib/Bot.js.map +1 -1
  38. package/dist/lib/LoginHandler.d.ts +3 -3
  39. package/dist/lib/LoginHandler.js +106 -116
  40. package/dist/lib/LoginHandler.js.map +1 -1
  41. package/dist/lib/classes/Agent.d.ts +23 -35
  42. package/dist/lib/classes/Agent.js +96 -108
  43. package/dist/lib/classes/Agent.js.map +1 -1
  44. package/dist/lib/classes/AssetMap.d.ts +18 -95
  45. package/dist/lib/classes/AssetMap.js +86 -16
  46. package/dist/lib/classes/AssetMap.js.map +1 -1
  47. package/dist/lib/classes/AssetRegistry.d.ts +31 -0
  48. package/dist/lib/classes/AssetRegistry.js +26 -0
  49. package/dist/lib/classes/AssetRegistry.js.map +1 -0
  50. package/dist/lib/classes/AssetTypeRegistry.d.ts +21 -0
  51. package/dist/lib/classes/AssetTypeRegistry.js +81 -0
  52. package/dist/lib/classes/AssetTypeRegistry.js.map +1 -0
  53. package/dist/lib/classes/BVH.js.map +1 -1
  54. package/dist/lib/classes/BVHJoint.js.map +1 -1
  55. package/dist/lib/classes/BVHJointKeyframe.d.ts +1 -1
  56. package/dist/lib/classes/BatchQueue.d.ts +2 -2
  57. package/dist/lib/classes/BatchQueue.js +66 -80
  58. package/dist/lib/classes/BatchQueue.js.map +1 -1
  59. package/dist/lib/classes/BatchQueue.spec.js +17 -26
  60. package/dist/lib/classes/BatchQueue.spec.js.map +1 -1
  61. package/dist/lib/classes/BinaryReader.d.ts +66 -0
  62. package/dist/lib/classes/BinaryReader.js +304 -0
  63. package/dist/lib/classes/BinaryReader.js.map +1 -0
  64. package/dist/lib/classes/BinaryReader.spec.js +241 -0
  65. package/dist/lib/classes/BinaryReader.spec.js.map +1 -0
  66. package/dist/lib/classes/BinaryWriter.d.ts +34 -0
  67. package/dist/lib/classes/BinaryWriter.js +192 -0
  68. package/dist/lib/classes/BinaryWriter.js.map +1 -0
  69. package/dist/lib/classes/BinaryWriter.spec.d.ts +1 -0
  70. package/dist/lib/classes/BinaryWriter.spec.js +328 -0
  71. package/dist/lib/classes/BinaryWriter.spec.js.map +1 -0
  72. package/dist/lib/classes/BitPack.d.ts +2 -2
  73. package/dist/lib/classes/BitPack.js +1 -1
  74. package/dist/lib/classes/BitPack.js.map +1 -1
  75. package/dist/lib/classes/BuildMap.d.ts +6 -6
  76. package/dist/lib/classes/BuildMap.js.map +1 -1
  77. package/dist/lib/classes/Caps.d.ts +18 -24
  78. package/dist/lib/classes/Caps.js +278 -297
  79. package/dist/lib/classes/Caps.js.map +1 -1
  80. package/dist/lib/classes/Circuit.d.ts +20 -28
  81. package/dist/lib/classes/Circuit.js +104 -91
  82. package/dist/lib/classes/Circuit.js.map +1 -1
  83. package/dist/lib/classes/ClientCommands.d.ts +3 -3
  84. package/dist/lib/classes/ClientCommands.js.map +1 -1
  85. package/dist/lib/classes/ClientEvents.d.ts +41 -32
  86. package/dist/lib/classes/ClientEvents.js +65 -0
  87. package/dist/lib/classes/ClientEvents.js.map +1 -1
  88. package/dist/lib/classes/CoalescedGameObject.d.ts +2 -2
  89. package/dist/lib/classes/CoalescedGameObject.js +37 -49
  90. package/dist/lib/classes/CoalescedGameObject.js.map +1 -1
  91. package/dist/lib/classes/Color4.d.ts +2 -2
  92. package/dist/lib/classes/Color4.js +42 -42
  93. package/dist/lib/classes/Color4.js.map +1 -1
  94. package/dist/lib/classes/Comms.d.ts +3 -3
  95. package/dist/lib/classes/Comms.js +236 -236
  96. package/dist/lib/classes/Comms.js.map +1 -1
  97. package/dist/lib/classes/ConcurrentQueue.d.ts +3 -3
  98. package/dist/lib/classes/ConcurrentQueue.js +16 -11
  99. package/dist/lib/classes/ConcurrentQueue.js.map +1 -1
  100. package/dist/lib/classes/EventQueueClient.d.ts +6 -6
  101. package/dist/lib/classes/EventQueueClient.js +189 -201
  102. package/dist/lib/classes/EventQueueClient.js.map +1 -1
  103. package/dist/lib/classes/GroupBan.d.ts +3 -3
  104. package/dist/lib/classes/GroupBan.js.map +1 -1
  105. package/dist/lib/classes/GroupMember.d.ts +2 -2
  106. package/dist/lib/classes/GroupRole.d.ts +2 -2
  107. package/dist/lib/classes/IPAddress.d.ts +3 -2
  108. package/dist/lib/classes/IPAddress.js +14 -13
  109. package/dist/lib/classes/IPAddress.js.map +1 -1
  110. package/dist/lib/classes/Inventory.d.ts +7 -15
  111. package/dist/lib/classes/Inventory.js +69 -80
  112. package/dist/lib/classes/Inventory.js.map +1 -1
  113. package/dist/lib/classes/InventoryFolder.d.ts +11 -11
  114. package/dist/lib/classes/InventoryFolder.js +539 -601
  115. package/dist/lib/classes/InventoryFolder.js.map +1 -1
  116. package/dist/lib/classes/InventoryItem.d.ts +15 -11
  117. package/dist/lib/classes/InventoryItem.js +494 -486
  118. package/dist/lib/classes/InventoryItem.js.map +1 -1
  119. package/dist/lib/classes/InventoryTypeRegistry.d.ts +19 -0
  120. package/dist/lib/classes/InventoryTypeRegistry.js +69 -0
  121. package/dist/lib/classes/InventoryTypeRegistry.js.map +1 -0
  122. package/dist/lib/classes/LLGLTFMaterial.d.ts +1 -1
  123. package/dist/lib/classes/LLGLTFMaterial.js +2 -2
  124. package/dist/lib/classes/LLGLTFMaterial.js.map +1 -1
  125. package/dist/lib/classes/LLGLTFMaterial.spec.js +17 -18
  126. package/dist/lib/classes/LLGLTFMaterial.spec.js.map +1 -1
  127. package/dist/lib/classes/LLGLTFMaterialOverride.d.ts +1 -1
  128. package/dist/lib/classes/LLGLTFMaterialOverride.js +119 -118
  129. package/dist/lib/classes/LLGLTFMaterialOverride.js.map +1 -1
  130. package/dist/lib/classes/LLGLTFMaterialOverride.spec.js +70 -71
  131. package/dist/lib/classes/LLGLTFMaterialOverride.spec.js.map +1 -1
  132. package/dist/lib/classes/LLGesture.d.ts +1 -1
  133. package/dist/lib/classes/LLGesture.js +1 -1
  134. package/dist/lib/classes/LLGesture.js.map +1 -1
  135. package/dist/lib/classes/LLGestureAnimationStep.d.ts +1 -1
  136. package/dist/lib/classes/LLGestureAnimationStep.js.map +1 -1
  137. package/dist/lib/classes/LLGestureChatStep.js.map +1 -1
  138. package/dist/lib/classes/LLGestureSoundStep.d.ts +1 -1
  139. package/dist/lib/classes/LLGestureSoundStep.js.map +1 -1
  140. package/dist/lib/classes/LLGestureStep.d.ts +1 -1
  141. package/dist/lib/classes/LLGestureWaitStep.js.map +1 -1
  142. package/dist/lib/classes/LLLindenText.d.ts +2 -4
  143. package/dist/lib/classes/LLLindenText.js +12 -8
  144. package/dist/lib/classes/LLLindenText.js.map +1 -1
  145. package/dist/lib/classes/LLSettings.d.ts +98 -83
  146. package/dist/lib/classes/LLSettings.js +240 -83
  147. package/dist/lib/classes/LLSettings.js.map +1 -1
  148. package/dist/lib/classes/LLSettings.spec.d.ts +1 -0
  149. package/dist/lib/classes/LLSettings.spec.js +27 -0
  150. package/dist/lib/classes/LLSettings.spec.js.map +1 -0
  151. package/dist/lib/classes/LLWearable.d.ts +4 -8
  152. package/dist/lib/classes/LLWearable.js +1 -1
  153. package/dist/lib/classes/LLWearable.js.map +1 -1
  154. package/dist/lib/classes/Logger.d.ts +3 -3
  155. package/dist/lib/classes/Logger.js +1 -1
  156. package/dist/lib/classes/Logger.js.map +1 -1
  157. package/dist/lib/classes/LoginParameters.js.map +1 -1
  158. package/dist/lib/classes/LoginResponse.d.ts +4 -9
  159. package/dist/lib/classes/LoginResponse.js +120 -113
  160. package/dist/lib/classes/LoginResponse.js.map +1 -1
  161. package/dist/lib/classes/MapBlock.d.ts +2 -2
  162. package/dist/lib/classes/MessageBase.d.ts +5 -5
  163. package/dist/lib/classes/MessageClasses.js.map +1 -1
  164. package/dist/lib/classes/ObjectResolver.d.ts +6 -6
  165. package/dist/lib/classes/ObjectResolver.js +127 -152
  166. package/dist/lib/classes/ObjectResolver.js.map +1 -1
  167. package/dist/lib/classes/ObjectStoreFull.d.ts +9 -9
  168. package/dist/lib/classes/ObjectStoreFull.js +176 -192
  169. package/dist/lib/classes/ObjectStoreFull.js.map +1 -1
  170. package/dist/lib/classes/ObjectStoreLite.d.ts +29 -31
  171. package/dist/lib/classes/ObjectStoreLite.js +485 -494
  172. package/dist/lib/classes/ObjectStoreLite.js.map +1 -1
  173. package/dist/lib/classes/Packet.d.ts +2 -2
  174. package/dist/lib/classes/Packet.js +2 -2
  175. package/dist/lib/classes/Packet.js.map +1 -1
  176. package/dist/lib/classes/ParticleSystem.js +1 -1
  177. package/dist/lib/classes/ParticleSystem.js.map +1 -1
  178. package/dist/lib/classes/PrimFacesHelper.d.ts +14 -0
  179. package/dist/lib/classes/PrimFacesHelper.js +75 -0
  180. package/dist/lib/classes/PrimFacesHelper.js.map +1 -0
  181. package/dist/lib/classes/Quaternion.d.ts +31 -6
  182. package/dist/lib/classes/Quaternion.js +236 -48
  183. package/dist/lib/classes/Quaternion.js.map +1 -1
  184. package/dist/lib/classes/Region.d.ts +22 -22
  185. package/dist/lib/classes/Region.js +449 -526
  186. package/dist/lib/classes/Region.js.map +1 -1
  187. package/dist/lib/classes/TarArchive.d.ts +1 -1
  188. package/dist/lib/classes/TarArchive.js.map +1 -1
  189. package/dist/lib/classes/TarFile.js +1 -1
  190. package/dist/lib/classes/TarFile.js.map +1 -1
  191. package/dist/lib/classes/TarReader.d.ts +1 -2
  192. package/dist/lib/classes/TarReader.js +15 -17
  193. package/dist/lib/classes/TarReader.js.map +1 -1
  194. package/dist/lib/classes/TarWriter.d.ts +1 -1
  195. package/dist/lib/classes/TarWriter.js +51 -68
  196. package/dist/lib/classes/TarWriter.js.map +1 -1
  197. package/dist/lib/classes/TextureEntry.d.ts +2 -3
  198. package/dist/lib/classes/TextureEntry.js +12 -12
  199. package/dist/lib/classes/TextureEntry.js.map +1 -1
  200. package/dist/lib/classes/TextureEntryFace.d.ts +4 -4
  201. package/dist/lib/classes/TextureEntryFace.js.map +1 -1
  202. package/dist/lib/classes/UUID.d.ts +2 -2
  203. package/dist/lib/classes/UUID.js +28 -28
  204. package/dist/lib/classes/UUID.js.map +1 -1
  205. package/dist/lib/classes/Utils.d.ts +2 -11
  206. package/dist/lib/classes/Utils.js +72 -328
  207. package/dist/lib/classes/Utils.js.map +1 -1
  208. package/dist/lib/classes/Vector2.d.ts +35 -6
  209. package/dist/lib/classes/Vector2.js +192 -28
  210. package/dist/lib/classes/Vector2.js.map +1 -1
  211. package/dist/lib/classes/Vector3.d.ts +38 -6
  212. package/dist/lib/classes/Vector3.js +229 -48
  213. package/dist/lib/classes/Vector3.js.map +1 -1
  214. package/dist/lib/classes/Vector4.d.ts +36 -6
  215. package/dist/lib/classes/Vector4.js +225 -21
  216. package/dist/lib/classes/Vector4.js.map +1 -1
  217. package/dist/lib/classes/Wearable.d.ts +1 -1
  218. package/dist/lib/classes/Zerocoder.js +2 -2
  219. package/dist/lib/classes/Zerocoder.js.map +1 -1
  220. package/dist/lib/classes/commands/AgentCommands.d.ts +7 -5
  221. package/dist/lib/classes/commands/AgentCommands.js +60 -76
  222. package/dist/lib/classes/commands/AgentCommands.js.map +1 -1
  223. package/dist/lib/classes/commands/AssetCommands.d.ts +5 -10
  224. package/dist/lib/classes/commands/AssetCommands.js +176 -179
  225. package/dist/lib/classes/commands/AssetCommands.js.map +1 -1
  226. package/dist/lib/classes/commands/CommandsBase.d.ts +4 -4
  227. package/dist/lib/classes/commands/CommandsBase.js.map +1 -1
  228. package/dist/lib/classes/commands/CommunicationsCommands.d.ts +3 -3
  229. package/dist/lib/classes/commands/CommunicationsCommands.js +350 -426
  230. package/dist/lib/classes/commands/CommunicationsCommands.js.map +1 -1
  231. package/dist/lib/classes/commands/FriendCommands.d.ts +9 -10
  232. package/dist/lib/classes/commands/FriendCommands.js +238 -236
  233. package/dist/lib/classes/commands/FriendCommands.js.map +1 -1
  234. package/dist/lib/classes/commands/GridCommands.d.ts +3 -3
  235. package/dist/lib/classes/commands/GridCommands.js +299 -336
  236. package/dist/lib/classes/commands/GridCommands.js.map +1 -1
  237. package/dist/lib/classes/commands/GroupCommands.d.ts +2 -2
  238. package/dist/lib/classes/commands/GroupCommands.js +293 -336
  239. package/dist/lib/classes/commands/GroupCommands.js.map +1 -1
  240. package/dist/lib/classes/commands/InventoryCommands.d.ts +4 -4
  241. package/dist/lib/classes/commands/InventoryCommands.js +54 -69
  242. package/dist/lib/classes/commands/InventoryCommands.js.map +1 -1
  243. package/dist/lib/classes/commands/MovementCommands.d.ts +2 -2
  244. package/dist/lib/classes/commands/MovementCommands.js +23 -38
  245. package/dist/lib/classes/commands/MovementCommands.js.map +1 -1
  246. package/dist/lib/classes/commands/NetworkCommands.js +35 -46
  247. package/dist/lib/classes/commands/NetworkCommands.js.map +1 -1
  248. package/dist/lib/classes/commands/ParcelCommands.d.ts +4 -4
  249. package/dist/lib/classes/commands/ParcelCommands.js +64 -77
  250. package/dist/lib/classes/commands/ParcelCommands.js.map +1 -1
  251. package/dist/lib/classes/commands/RegionCommands.d.ts +11 -10
  252. package/dist/lib/classes/commands/RegionCommands.js +1126 -1211
  253. package/dist/lib/classes/commands/RegionCommands.js.map +1 -1
  254. package/dist/lib/classes/commands/TeleportCommands.d.ts +8 -8
  255. package/dist/lib/classes/commands/TeleportCommands.js +58 -58
  256. package/dist/lib/classes/commands/TeleportCommands.js.map +1 -1
  257. package/dist/lib/classes/interfaces/IGameObjectData.d.ts +18 -20
  258. package/dist/lib/classes/interfaces/ILandBlock.d.ts +2 -2
  259. package/dist/lib/classes/interfaces/IObjectStore.d.ts +12 -12
  260. package/dist/lib/classes/interfaces/IResolveJob.d.ts +2 -2
  261. package/dist/lib/classes/interfaces/ITreeBoundingBox.d.ts +2 -2
  262. package/dist/lib/classes/llsd/LLSD.d.ts +12 -0
  263. package/dist/lib/classes/llsd/LLSD.js +128 -0
  264. package/dist/lib/classes/llsd/LLSD.js.map +1 -0
  265. package/dist/lib/classes/llsd/LLSD.spec.d.ts +1 -0
  266. package/dist/lib/classes/llsd/LLSD.spec.js +249 -0
  267. package/dist/lib/classes/llsd/LLSD.spec.js.map +1 -0
  268. package/dist/lib/classes/llsd/LLSDArray.d.ts +26 -3
  269. package/dist/lib/classes/llsd/LLSDArray.js +182 -6
  270. package/dist/lib/classes/llsd/LLSDArray.js.map +1 -1
  271. package/dist/lib/classes/llsd/LLSDBinary.d.ts +7 -0
  272. package/dist/lib/classes/llsd/LLSDBinary.js +114 -0
  273. package/dist/lib/classes/llsd/LLSDBinary.js.map +1 -0
  274. package/dist/lib/classes/llsd/LLSDInteger.d.ts +9 -0
  275. package/dist/lib/classes/llsd/LLSDInteger.js +25 -0
  276. package/dist/lib/classes/llsd/LLSDInteger.js.map +1 -0
  277. package/dist/lib/classes/llsd/LLSDMap.d.ts +16 -5
  278. package/dist/lib/classes/llsd/LLSDMap.js +197 -16
  279. package/dist/lib/classes/llsd/LLSDMap.js.map +1 -1
  280. package/dist/lib/classes/llsd/LLSDNotation.d.ts +11 -0
  281. package/dist/lib/classes/llsd/LLSDNotation.js +271 -0
  282. package/dist/lib/classes/llsd/LLSDNotation.js.map +1 -0
  283. package/dist/lib/classes/llsd/LLSDReal.d.ts +10 -0
  284. package/dist/lib/classes/llsd/LLSDReal.js +71 -0
  285. package/dist/lib/classes/llsd/LLSDReal.js.map +1 -0
  286. package/dist/lib/classes/llsd/LLSDToken.d.ts +1 -1
  287. package/dist/lib/classes/llsd/LLSDTokenContainer.d.ts +2 -2
  288. package/dist/lib/classes/llsd/LLSDTokenGenerator.d.ts +1 -1
  289. package/dist/lib/classes/llsd/LLSDTokenSpec.d.ts +1 -1
  290. package/dist/lib/classes/llsd/LLSDTokenType.d.ts +18 -18
  291. package/dist/lib/classes/llsd/LLSDTokenType.js +18 -18
  292. package/dist/lib/classes/llsd/LLSDTokenType.js.map +1 -1
  293. package/dist/lib/classes/llsd/LLSDType.d.ts +6 -3
  294. package/dist/lib/classes/llsd/LLSDURI.d.ts +7 -0
  295. package/dist/lib/classes/llsd/LLSDURI.js +19 -0
  296. package/dist/lib/classes/llsd/LLSDURI.js.map +1 -0
  297. package/dist/lib/classes/llsd/LLSDXML.d.ts +5 -0
  298. package/dist/lib/classes/llsd/LLSDXML.js +245 -0
  299. package/dist/lib/classes/llsd/LLSDXML.js.map +1 -0
  300. package/dist/lib/classes/messages/ObjectUpdate.d.ts +4 -5
  301. package/dist/lib/classes/messages/ObjectUpdate.js +115 -115
  302. package/dist/lib/classes/messages/ObjectUpdate.js.map +1 -1
  303. package/dist/lib/classes/messages/SimStats.d.ts +3 -2
  304. package/dist/lib/classes/messages/SimStats.js +17 -17
  305. package/dist/lib/classes/messages/SimStats.js.map +1 -1
  306. package/dist/lib/classes/public/Avatar.d.ts +4 -4
  307. package/dist/lib/classes/public/Avatar.js +39 -33
  308. package/dist/lib/classes/public/Avatar.js.map +1 -1
  309. package/dist/lib/classes/public/AvatarQueryResult.d.ts +4 -4
  310. package/dist/lib/classes/public/AvatarQueryResult.js.map +1 -1
  311. package/dist/lib/classes/public/ExtendedMeshData.d.ts +1 -1
  312. package/dist/lib/classes/public/ExtendedMeshData.js.map +1 -1
  313. package/dist/lib/classes/public/ExtraParams.d.ts +6 -6
  314. package/dist/lib/classes/public/ExtraParams.js +36 -39
  315. package/dist/lib/classes/public/ExtraParams.js.map +1 -1
  316. package/dist/lib/classes/public/ExtraParams.spec.js +2 -11
  317. package/dist/lib/classes/public/ExtraParams.spec.js.map +1 -1
  318. package/dist/lib/classes/public/FlexibleData.js.map +1 -1
  319. package/dist/lib/classes/public/Friend.js.map +1 -1
  320. package/dist/lib/classes/public/GameObject.d.ts +23 -21
  321. package/dist/lib/classes/public/GameObject.js +1294 -1306
  322. package/dist/lib/classes/public/GameObject.js.map +1 -1
  323. package/dist/lib/classes/public/GameObject.spec.js +8 -18
  324. package/dist/lib/classes/public/GameObject.spec.js.map +1 -1
  325. package/dist/lib/classes/public/LLMesh.d.ts +5 -7
  326. package/dist/lib/classes/public/LLMesh.js +194 -213
  327. package/dist/lib/classes/public/LLMesh.js.map +1 -1
  328. package/dist/lib/classes/public/LightData.js.map +1 -1
  329. package/dist/lib/classes/public/LightImageData.js.map +1 -1
  330. package/dist/lib/classes/public/Material.js +45 -56
  331. package/dist/lib/classes/public/Material.js.map +1 -1
  332. package/dist/lib/classes/public/MeshData.js.map +1 -1
  333. package/dist/lib/classes/public/Parcel.d.ts +4 -4
  334. package/dist/lib/classes/public/Parcel.js +1 -2
  335. package/dist/lib/classes/public/Parcel.js.map +1 -1
  336. package/dist/lib/classes/public/ReflectionProbeData.d.ts +1 -1
  337. package/dist/lib/classes/public/ReflectionProbeData.js.map +1 -1
  338. package/dist/lib/classes/public/RegionEnvironment.d.ts +14 -13
  339. package/dist/lib/classes/public/RegionEnvironment.js +94 -53
  340. package/dist/lib/classes/public/RegionEnvironment.js.map +1 -1
  341. package/dist/lib/classes/public/RegionEnvironmentSky.d.ts +2 -0
  342. package/dist/lib/classes/public/RegionEnvironmentSky.js +7 -0
  343. package/dist/lib/classes/public/RegionEnvironmentSky.js.map +1 -0
  344. package/dist/lib/classes/public/RegionEnvironmentWater.d.ts +2 -0
  345. package/dist/lib/classes/public/RegionEnvironmentWater.js +7 -0
  346. package/dist/lib/classes/public/RegionEnvironmentWater.js.map +1 -0
  347. package/dist/lib/classes/public/RenderMaterialData.js.map +1 -1
  348. package/dist/lib/classes/public/RenderMaterialParam.d.ts +1 -1
  349. package/dist/lib/classes/public/SculptData.js.map +1 -1
  350. package/dist/lib/classes/public/TextureAnim.js +2 -1
  351. package/dist/lib/classes/public/TextureAnim.js.map +1 -1
  352. package/dist/lib/classes/public/interfaces/GlobalPosition.d.ts +1 -1
  353. package/dist/lib/classes/public/interfaces/LLPhysicsConvex.d.ts +1 -1
  354. package/dist/lib/classes/public/interfaces/LLSkin.d.ts +1 -1
  355. package/dist/lib/classes/public/interfaces/LLSubMesh.d.ts +3 -5
  356. package/dist/lib/classes/public/interfaces/MapLocation.d.ts +3 -3
  357. package/dist/lib/classes/public/interfaces/RegionEnvironmentSkyLLSD.d.ts +26 -0
  358. package/dist/lib/classes/public/interfaces/RegionEnvironmentSkyLLSD.js +3 -0
  359. package/dist/lib/classes/public/interfaces/RegionEnvironmentSkyLLSD.js.map +1 -0
  360. package/dist/lib/classes/public/interfaces/RegionEnvironmentWaterLLSD.d.ts +15 -0
  361. package/dist/lib/classes/public/interfaces/RegionEnvironmentWaterLLSD.js +3 -0
  362. package/dist/lib/classes/public/interfaces/RegionEnvironmentWaterLLSD.js.map +1 -0
  363. package/dist/lib/classes/public/interfaces/SkyPreset.d.ts +3 -3
  364. package/dist/lib/classes/public/interfaces/WaterPreset.d.ts +4 -4
  365. package/dist/lib/deviceToken.json +1 -0
  366. package/dist/lib/enums/AssetType.d.ts +6 -4
  367. package/dist/lib/enums/AssetType.js +5 -3
  368. package/dist/lib/enums/AssetType.js.map +1 -1
  369. package/dist/lib/enums/AttachmentPoint.d.ts +0 -1
  370. package/dist/lib/enums/AttachmentPoint.js +0 -1
  371. package/dist/lib/enums/AttachmentPoint.js.map +1 -1
  372. package/dist/lib/enums/InventoryType.d.ts +3 -5
  373. package/dist/lib/enums/InventoryType.js +2 -4
  374. package/dist/lib/enums/InventoryType.js.map +1 -1
  375. package/dist/lib/enums/LayerType.d.ts +1 -1
  376. package/dist/lib/enums/LayerType.js +1 -1
  377. package/dist/lib/events/AvatarPropertiesReplyEvent.d.ts +1 -1
  378. package/dist/lib/events/BalanceUpdatedEvent.d.ts +2 -2
  379. package/dist/lib/events/BulkUpdateInventoryEvent.d.ts +2 -2
  380. package/dist/lib/events/BulkUpdateInventoryEvent.js.map +1 -1
  381. package/dist/lib/events/ChatEvent.d.ts +5 -5
  382. package/dist/lib/events/FriendOnlineEvent.d.ts +1 -1
  383. package/dist/lib/events/FriendRemovedEvent.d.ts +1 -1
  384. package/dist/lib/events/FriendRequestEvent.d.ts +1 -1
  385. package/dist/lib/events/FriendResponseEvent.d.ts +1 -1
  386. package/dist/lib/events/FriendRightsEvent.d.ts +2 -2
  387. package/dist/lib/events/GroupChatClosedEvent.d.ts +1 -1
  388. package/dist/lib/events/GroupChatEvent.d.ts +1 -1
  389. package/dist/lib/events/GroupChatSessionAgentListEvent.d.ts +1 -1
  390. package/dist/lib/events/GroupChatSessionJoinEvent.d.ts +1 -1
  391. package/dist/lib/events/GroupInviteEvent.d.ts +1 -1
  392. package/dist/lib/events/GroupNoticeEvent.d.ts +1 -1
  393. package/dist/lib/events/GroupProfileReplyEvent.d.ts +2 -2
  394. package/dist/lib/events/InstantMessageEvent.d.ts +3 -3
  395. package/dist/lib/events/InventoryOfferedEvent.d.ts +3 -3
  396. package/dist/lib/events/InventoryResponseEvent.d.ts +1 -1
  397. package/dist/lib/events/LandStatsEvent.d.ts +4 -4
  398. package/dist/lib/events/LandStatsEvent.js.map +1 -1
  399. package/dist/lib/events/LureEvent.d.ts +2 -2
  400. package/dist/lib/events/MapInfoRangeReplyEvent.d.ts +1 -1
  401. package/dist/lib/events/MapInfoReplyEvent.d.ts +2 -2
  402. package/dist/lib/events/NewObjectEvent.d.ts +2 -2
  403. package/dist/lib/events/ObjectKilledEvent.d.ts +2 -2
  404. package/dist/lib/events/ObjectPhysicsDataEvent.d.ts +1 -1
  405. package/dist/lib/events/ObjectResolvedEvent.d.ts +1 -1
  406. package/dist/lib/events/ObjectUpdatedEvent.d.ts +2 -2
  407. package/dist/lib/events/ParcelInfoReplyEvent.d.ts +3 -3
  408. package/dist/lib/events/ParcelPropertiesEvent.d.ts +3 -3
  409. package/dist/lib/events/RegionInfoReplyEvent.d.ts +2 -2
  410. package/dist/lib/events/ScriptDialogEvent.d.ts +1 -1
  411. package/dist/lib/events/SelectedObjectEvent.d.ts +1 -1
  412. package/dist/lib/events/TeleportEvent.d.ts +1 -1
  413. package/dist/lib/index.d.ts +6 -8
  414. package/dist/lib/index.js +4 -7
  415. package/dist/lib/index.js.map +1 -1
  416. package/dist/lib/tsm/common.d.ts +1 -1
  417. package/dist/lib/tsm/common.js +3 -1
  418. package/dist/lib/tsm/common.js.map +1 -1
  419. package/dist/lib/tsm/mat2.d.ts +8 -8
  420. package/dist/lib/tsm/mat2.js +8 -7
  421. package/dist/lib/tsm/mat2.js.map +1 -1
  422. package/dist/lib/tsm/mat3.d.ts +7 -7
  423. package/dist/lib/tsm/mat3.js +8 -7
  424. package/dist/lib/tsm/mat3.js.map +1 -1
  425. package/dist/lib/tsm/mat4.d.ts +9 -9
  426. package/dist/lib/tsm/mat4.js +8 -7
  427. package/dist/lib/tsm/mat4.js.map +1 -1
  428. package/dist/lib/tsm/quat.d.ts +19 -19
  429. package/dist/lib/tsm/quat.js +69 -68
  430. package/dist/lib/tsm/quat.js.map +1 -1
  431. package/dist/lib/tsm/vec2.d.ts +13 -13
  432. package/dist/lib/tsm/vec2.js +30 -29
  433. package/dist/lib/tsm/vec2.js.map +1 -1
  434. package/dist/lib/tsm/vec3.d.ts +16 -16
  435. package/dist/lib/tsm/vec3.js +48 -47
  436. package/dist/lib/tsm/vec3.js.map +1 -1
  437. package/dist/lib/tsm/vec4.d.ts +22 -22
  438. package/dist/lib/tsm/vec4.js +94 -93
  439. package/dist/lib/tsm/vec4.js.map +1 -1
  440. package/eslint.config.mjs +104 -0
  441. package/examples/Inventory/Inventory.ts +4 -2
  442. package/examples/Money/Money.ts +6 -6
  443. package/examples/Objects/TaskInventory.ts +4 -3
  444. package/examples/Region/Settings.ts +19 -0
  445. package/package.json +10 -9
  446. package/.eslintrc +0 -224
  447. package/dist/lib/classes/llsd/LLSDNotationParser.d.ts +0 -9
  448. package/dist/lib/classes/llsd/LLSDNotationParser.js +0 -177
  449. package/dist/lib/classes/llsd/LLSDNotationParser.js.map +0 -1
  450. package/dist/lib/classes/llsd/LLSDNotationParser.spec.js +0 -167
  451. package/dist/lib/classes/llsd/LLSDNotationParser.spec.js.map +0 -1
  452. package/dist/lib/enums/AssetTypeLL.d.ts +0 -27
  453. package/dist/lib/enums/AssetTypeLL.js +0 -32
  454. package/dist/lib/enums/AssetTypeLL.js.map +0 -1
  455. package/dist/lib/enums/HTTPAssets.d.ts +0 -24
  456. package/dist/lib/enums/HTTPAssets.js +0 -29
  457. package/dist/lib/enums/HTTPAssets.js.map +0 -1
  458. package/dist/lib/tsm/test.js +0 -11
  459. package/dist/lib/tsm/test.js.map +0 -1
  460. /package/dist/{lib/classes/llsd/LLSDNotationParser.spec.d.ts → examples/Region/Settings.d.ts} +0 -0
  461. /package/dist/lib/{tsm/test.d.ts → classes/BinaryReader.spec.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.ObjectStoreLite = void 0;
13
4
  const Logger_1 = require("./Logger");
@@ -33,9 +24,11 @@ const CompressedFlags_1 = require("../enums/CompressedFlags");
33
24
  const Vector3_1 = require("./Vector3");
34
25
  const ObjectResolvedEvent_1 = require("../events/ObjectResolvedEvent");
35
26
  const Avatar_1 = require("./public/Avatar");
36
- const LLSDNotationParser_1 = require("./llsd/LLSDNotationParser");
37
- const LLSDMap_1 = require("./llsd/LLSDMap");
38
27
  const LLGLTFMaterialOverride_1 = require("./LLGLTFMaterialOverride");
28
+ const LLSD_1 = require("./llsd/LLSD");
29
+ const LLSDMap_1 = require("./llsd/LLSDMap");
30
+ const LLSDInteger_1 = require("./llsd/LLSDInteger");
31
+ const LLSDArray_1 = require("./llsd/LLSDArray");
39
32
  class ObjectStoreLite {
40
33
  constructor(circuit, agent, clientEvents, options) {
41
34
  this.objects = new Map();
@@ -64,7 +57,7 @@ class ObjectStoreLite {
64
57
  Message_1.Message.ObjectProperties,
65
58
  Message_1.Message.KillObject,
66
59
  Message_1.Message.GenericStreamingMessage
67
- ], (packet) => __awaiter(this, void 0, void 0, function* () {
60
+ ], (packet) => {
68
61
  switch (packet.message.id) {
69
62
  case Message_1.Message.GenericStreamingMessage:
70
63
  {
@@ -73,10 +66,10 @@ class ObjectStoreLite {
73
66
  }
74
67
  const genMsg = packet.message;
75
68
  if (genMsg.MethodData.Method === 0x4175) {
76
- const result = LLSDNotationParser_1.LLSDNotationParser.parse(genMsg.DataBlock.Data.toString('utf-8'));
69
+ const result = LLSD_1.LLSD.parseNotation(genMsg.DataBlock.Data.toString('utf-8'));
77
70
  if (result instanceof LLSDMap_1.LLSDMap) {
78
71
  const localID = result.get('id');
79
- if (typeof localID !== 'number') {
72
+ if (!(localID instanceof LLSDInteger_1.LLSDInteger)) {
80
73
  return;
81
74
  }
82
75
  const tes = result.get('te');
@@ -85,7 +78,7 @@ class ObjectStoreLite {
85
78
  if (Array.isArray(tes) && Array.isArray(ods) && tes.length === ods.length) {
86
79
  for (let x = 0; x < tes.length; x++) {
87
80
  const te = tes[x];
88
- if (typeof te !== 'number') {
81
+ if (!(te instanceof LLSDInteger_1.LLSDInteger)) {
89
82
  continue;
90
83
  }
91
84
  const params = ods[x];
@@ -102,75 +95,61 @@ class ObjectStoreLite {
102
95
  const doubleSided = params.get('ds');
103
96
  const textureTransforms = params.get('ti');
104
97
  const override = new LLGLTFMaterialOverride_1.LLGLTFMaterialOverride();
105
- overrides.set(te, override);
98
+ overrides.set(te.valueOf(), override);
106
99
  if (textureIDs !== undefined && Array.isArray(textureIDs)) {
107
100
  override.textures = [];
108
101
  for (const tex of textureIDs) {
109
- if (typeof tex === 'string') {
110
- override.textures.push(tex);
111
- }
112
- else if (tex instanceof UUID_1.UUID) {
102
+ if (tex instanceof UUID_1.UUID) {
113
103
  override.textures.push(tex.toString());
114
104
  }
105
+ else {
106
+ override.textures.push(null);
107
+ }
115
108
  }
116
109
  }
117
- function isNumberArray(array) {
118
- return array.every(element => typeof element === 'number');
110
+ if (baseColor !== undefined && Array.isArray(baseColor) && baseColor.length === 4) {
111
+ override.baseColor = LLSDArray_1.LLSDArray.toNumberArray(baseColor);
119
112
  }
120
- if (baseColor !== undefined && Array.isArray(baseColor) && baseColor.length === 4 && isNumberArray(baseColor)) {
121
- override.baseColor = baseColor;
113
+ if (emissiveColor !== undefined && Array.isArray(emissiveColor) && emissiveColor.length === 3) {
114
+ override.emissiveFactor = LLSDArray_1.LLSDArray.toNumberArray(emissiveColor);
122
115
  }
123
- if (emissiveColor !== undefined && Array.isArray(emissiveColor) && emissiveColor.length === 3 && isNumberArray(emissiveColor)) {
124
- override.emissiveFactor = emissiveColor;
116
+ if (metallicFactor !== undefined) {
117
+ override.metallicFactor = metallicFactor.valueOf();
125
118
  }
126
- if (metallicFactor !== undefined && typeof metallicFactor === 'number') {
127
- override.metallicFactor = metallicFactor;
119
+ if (roughnessFactor !== undefined) {
120
+ override.roughnessFactor = roughnessFactor.valueOf();
128
121
  }
129
- if (roughnessFactor !== undefined && typeof roughnessFactor === 'number') {
130
- override.roughnessFactor = roughnessFactor;
122
+ if (alphaMode !== undefined) {
123
+ override.alphaMode = alphaMode.valueOf();
131
124
  }
132
- if (alphaMode !== undefined && typeof alphaMode === 'number') {
133
- override.alphaMode = alphaMode;
125
+ if (alphaCutoff !== undefined) {
126
+ override.alphaCutoff = alphaCutoff.valueOf();
134
127
  }
135
- if (alphaCutoff !== undefined && typeof alphaCutoff === 'number') {
136
- override.alphaCutoff = alphaCutoff;
137
- }
138
- if (doubleSided !== undefined && typeof doubleSided === 'boolean') {
128
+ if (doubleSided !== undefined) {
139
129
  override.doubleSided = doubleSided;
140
130
  }
141
- function isLLGLTFTextureTransformOverride(objToCheck) {
142
- const isArrayOfNumbers = (value) => {
143
- return Array.isArray(value) && value.every(item => typeof item === 'number');
144
- };
145
- return (typeof objToCheck === 'object' &&
146
- objToCheck !== null &&
147
- 'offset' in objToCheck && isArrayOfNumbers(objToCheck.offset) &&
148
- 'scale' in objToCheck && isArrayOfNumbers(objToCheck.scale) &&
149
- 'rotation' in objToCheck && typeof objToCheck.rotation === 'number');
150
- }
151
131
  if (textureTransforms !== undefined && Array.isArray(textureTransforms)) {
152
132
  override.textureTransforms = [];
153
133
  for (const transform of textureTransforms) {
154
- if (transform instanceof LLSDMap_1.LLSDMap) {
155
- const tObj = {
156
- offset: transform.get('o'),
157
- scale: transform.get('s'),
158
- rotation: transform.get('r')
159
- };
160
- if (isLLGLTFTextureTransformOverride(tObj)) {
161
- override.textureTransforms.push(tObj);
162
- }
163
- }
134
+ const o = transform.get('o');
135
+ const s = transform.get('s');
136
+ const r = transform.get('r');
137
+ const tObj = {
138
+ offset: o !== undefined ? LLSDArray_1.LLSDArray.toNumberArray(o) : undefined,
139
+ scale: s !== undefined ? LLSDArray_1.LLSDArray.toNumberArray(s) : undefined,
140
+ rotation: r !== undefined ? r.valueOf() : undefined
141
+ };
142
+ override.textureTransforms.push(tObj);
164
143
  }
165
144
  }
166
145
  }
167
- const obj = this.objects.get(localID);
168
- const textureEntry = obj === null || obj === void 0 ? void 0 : obj.TextureEntry;
146
+ const obj = this.objects.get(localID.valueOf());
147
+ const textureEntry = obj?.TextureEntry;
169
148
  if (textureEntry) {
170
149
  textureEntry.gltfMaterialOverrides = overrides;
171
150
  }
172
151
  else {
173
- this.cachedMaterialOverrides.set(localID, overrides);
152
+ this.cachedMaterialOverrides.set(localID.valueOf(), overrides);
174
153
  }
175
154
  }
176
155
  }
@@ -182,7 +161,7 @@ class ObjectStoreLite {
182
161
  const objProp = packet.message;
183
162
  for (const obj of objProp.ObjectData) {
184
163
  const obje = this.objectsByUUID.get(obj.ObjectID.toString());
185
- const o = this.objects.get(obje !== null && obje !== void 0 ? obje : 0);
164
+ const o = this.objects.get(obje ?? 0);
186
165
  if (obje !== undefined && o !== undefined) {
187
166
  this.applyObjectProperties(o, obj);
188
167
  }
@@ -207,7 +186,7 @@ class ObjectStoreLite {
207
186
  case Message_1.Message.ObjectUpdateCompressed:
208
187
  {
209
188
  const objectUpdateCompressed = packet.message;
210
- yield this.objectUpdateCompressed(objectUpdateCompressed);
189
+ this.objectUpdateCompressed(objectUpdateCompressed);
211
190
  break;
212
191
  }
213
192
  case Message_1.Message.ImprovedTerseObjectUpdate:
@@ -222,8 +201,10 @@ class ObjectStoreLite {
222
201
  this.killObject(killObj);
223
202
  break;
224
203
  }
204
+ default:
205
+ break;
225
206
  }
226
- }));
207
+ });
227
208
  this.physicsSubscription = this.clientEvents.onPhysicsDataEvent.subscribe((evt) => {
228
209
  const obj = this.objects.get(evt.localID);
229
210
  if (obj) {
@@ -234,48 +215,302 @@ class ObjectStoreLite {
234
215
  obj.friction = evt.friction;
235
216
  }
236
217
  });
237
- this.selectedChecker = setInterval(() => {
238
- if (this.circuit === undefined) {
218
+ if (!(this.options & BotOptionFlags_1.BotOptionFlags.LiteObjectStore)) {
219
+ this.selectedChecker = setInterval(() => {
220
+ if (this.circuit === undefined) {
221
+ return;
222
+ }
223
+ try {
224
+ let selectObjects = [];
225
+ for (const key of this.selectedPrimsWithoutUpdate.keys()) {
226
+ selectObjects.push(key);
227
+ }
228
+ function shuffle(a) {
229
+ let j = 0, x = '', i = 0;
230
+ for (i = a.length - 1; i > 0; i--) {
231
+ j = Math.floor(Math.random() * (i + 1));
232
+ x = a[i];
233
+ a[i] = a[j];
234
+ a[j] = x;
235
+ }
236
+ return a;
237
+ }
238
+ selectObjects = shuffle(selectObjects);
239
+ if (selectObjects.length > 10) {
240
+ selectObjects = selectObjects.slice(0, 20);
241
+ }
242
+ if (selectObjects.length > 0) {
243
+ const selectObject = new ObjectSelect_1.ObjectSelectMessage();
244
+ selectObject.AgentData = {
245
+ AgentID: this.agent.agentID,
246
+ SessionID: this.circuit.sessionID
247
+ };
248
+ selectObject.ObjectData = [];
249
+ for (const id of selectObjects) {
250
+ selectObject.ObjectData.push({
251
+ ObjectLocalID: parseInt(id, 10)
252
+ });
253
+ }
254
+ this.circuit.sendMessage(selectObject, PacketFlags_1.PacketFlags.Reliable);
255
+ }
256
+ }
257
+ catch (e) {
258
+ Logger_1.Logger.Error(e);
259
+ }
260
+ }, 1000);
261
+ }
262
+ }
263
+ setPersist(persist) {
264
+ this.persist = persist;
265
+ if (!this.persist) {
266
+ for (const d of this.deadObjects) {
267
+ this.deleteObject(d);
268
+ }
269
+ this.deadObjects = [];
270
+ }
271
+ }
272
+ deleteObject(objectID) {
273
+ const obj = this.objects.get(objectID);
274
+ if (obj) {
275
+ const objectUUID = obj.FullID;
276
+ obj.deleted = true;
277
+ if (this.persist) {
278
+ this.deadObjects.push(objectID);
239
279
  return;
240
280
  }
241
- try {
242
- let selectObjects = [];
243
- for (const key of Object.keys(this.selectedPrimsWithoutUpdate)) {
244
- selectObjects.push(key);
245
- }
246
- function shuffle(a) {
247
- let j, x, i;
248
- for (i = a.length - 1; i > 0; i--) {
249
- j = Math.floor(Math.random() * (i + 1));
250
- x = a[i];
251
- a[i] = a[j];
252
- a[j] = x;
281
+ if (obj.IsAttachment && obj.ParentID !== undefined) {
282
+ const parent = this.objects.get(obj.ParentID);
283
+ if (parent !== undefined && parent.PCode === PCode_1.PCode.Avatar) {
284
+ const agent = this.agent.currentRegion.agents.get(parent.FullID.toString());
285
+ if (agent !== undefined) {
286
+ agent.removeAttachment(obj);
253
287
  }
254
- return a;
255
- }
256
- selectObjects = shuffle(selectObjects);
257
- if (selectObjects.length > 10) {
258
- selectObjects = selectObjects.slice(0, 20);
259
- }
260
- if (selectObjects.length > 0) {
261
- const selectObject = new ObjectSelect_1.ObjectSelectMessage();
262
- selectObject.AgentData = {
263
- AgentID: this.agent.agentID,
264
- SessionID: this.circuit.sessionID
265
- };
266
- selectObject.ObjectData = [];
267
- for (const id of selectObjects) {
268
- selectObject.ObjectData.push({
269
- ObjectLocalID: parseInt(id, 10)
270
- });
288
+ }
289
+ }
290
+ const foundAgent = this.agent.currentRegion.agents.get(objectUUID.toString());
291
+ if (foundAgent !== undefined) {
292
+ foundAgent.isVisible = false;
293
+ }
294
+ const objsByParent = this.objectsByParent.get(objectID);
295
+ if (objsByParent) {
296
+ for (const childObjID of objsByParent) {
297
+ this.deleteObject(childObjID);
298
+ }
299
+ }
300
+ this.objectsByParent.delete(objectID);
301
+ const uuid = obj.FullID.toString();
302
+ this.objectsByUUID.delete(uuid);
303
+ if (obj.ParentID !== undefined) {
304
+ const parentID = obj.ParentID;
305
+ const objsByParentParent = this.objectsByParent.get(parentID);
306
+ if (objsByParentParent) {
307
+ const ind = objsByParentParent.indexOf(objectID);
308
+ if (ind !== -1) {
309
+ objsByParentParent.splice(ind, 1);
271
310
  }
272
- this.circuit.sendMessage(selectObject, PacketFlags_1.PacketFlags.Reliable);
273
311
  }
274
312
  }
275
- catch (e) {
276
- Logger_1.Logger.Error(e);
313
+ if (this.rtree && obj.rtreeEntry !== undefined) {
314
+ this.rtree.remove(obj.rtreeEntry);
277
315
  }
278
- }, 1000);
316
+ this.objects.delete(objectID);
317
+ this.cachedMaterialOverrides.delete(objectID);
318
+ }
319
+ }
320
+ getObjectsByParent(parentID) {
321
+ const list = this.objectsByParent.get(parentID);
322
+ if (list === undefined) {
323
+ return [];
324
+ }
325
+ const result = [];
326
+ for (const localID of list) {
327
+ const obj = this.objects.get(localID);
328
+ if (obj) {
329
+ result.push(obj);
330
+ }
331
+ }
332
+ result.sort((a, b) => {
333
+ return a.ID - b.ID;
334
+ });
335
+ return result;
336
+ }
337
+ parseNameValues(str) {
338
+ const nv = new Map();
339
+ const lines = str.split('\n');
340
+ for (const line of lines) {
341
+ if (line.length > 0) {
342
+ let kv = line.split(/[\t ]/);
343
+ if (kv.length > 5) {
344
+ for (let x = 5; x < kv.length; x++) {
345
+ kv[4] += ' ' + kv[x];
346
+ }
347
+ kv = kv.slice(0, 5);
348
+ }
349
+ if (kv.length === 5) {
350
+ const namevalue = new NameValue_1.NameValue();
351
+ namevalue.type = kv[1];
352
+ namevalue.class = kv[2];
353
+ namevalue.sendTo = kv[3];
354
+ namevalue.value = kv[4];
355
+ nv.set(kv[0], namevalue);
356
+ }
357
+ }
358
+ }
359
+ return nv;
360
+ }
361
+ shutdown() {
362
+ if (this.selectedChecker !== undefined) {
363
+ clearInterval(this.selectedChecker);
364
+ delete this.selectedChecker;
365
+ }
366
+ this.physicsSubscription.unsubscribe();
367
+ this.objects.clear();
368
+ if (this.rtree) {
369
+ this.rtree.clear();
370
+ }
371
+ this.objectsByUUID.clear();
372
+ this.objectsByParent.clear();
373
+ delete this.circuit;
374
+ }
375
+ populateChildren(obj, _resolve = false) {
376
+ if (obj !== undefined) {
377
+ obj.children = [];
378
+ obj.totalChildren = 0;
379
+ for (const child of this.getObjectsByParent(obj.ID)) {
380
+ if (child.PCode !== PCode_1.PCode.Avatar) {
381
+ obj.totalChildren++;
382
+ this.populateChildren(child);
383
+ if (child.totalChildren !== undefined) {
384
+ obj.totalChildren += child.totalChildren;
385
+ }
386
+ obj.children.push(child);
387
+ }
388
+ }
389
+ obj.childrenPopulated = true;
390
+ }
391
+ }
392
+ getAllObjects() {
393
+ const results = [];
394
+ const found = {};
395
+ for (const localID of this.objects.keys()) {
396
+ const go = this.objects.get(localID);
397
+ if (go && go.PCode !== PCode_1.PCode.Avatar && (go.IsAttachment === undefined || !go.IsAttachment)) {
398
+ try {
399
+ const parent = this.findParent(go);
400
+ if (parent.ParentID === 0) {
401
+ const uuid = parent.FullID.toString();
402
+ if (found[uuid] === undefined) {
403
+ found[uuid] = parent;
404
+ results.push(parent);
405
+ }
406
+ }
407
+ if (go.ParentID) {
408
+ let objects = this.objectsByParent.get(go.ParentID);
409
+ if (!objects?.includes(localID)) {
410
+ if (objects === undefined) {
411
+ objects = [];
412
+ }
413
+ objects.push(localID);
414
+ this.objectsByParent.set(go.ParentID, objects);
415
+ }
416
+ }
417
+ }
418
+ catch (error) {
419
+ console.log('Failed to find parent for ' + go.FullID.toString());
420
+ console.error(error);
421
+ }
422
+ }
423
+ }
424
+ for (const obj of results) {
425
+ this.populateChildren(obj);
426
+ }
427
+ return results;
428
+ }
429
+ getNumberOfObjects() {
430
+ return this.objects.size;
431
+ }
432
+ getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
433
+ if (!this.rtree) {
434
+ throw new Error('GetObjectsInArea not available with the Lite object store');
435
+ }
436
+ const result = this.rtree.search({
437
+ minX: minX,
438
+ maxX: maxX,
439
+ minY: minY,
440
+ maxY: maxY,
441
+ minZ: minZ,
442
+ maxZ: maxZ
443
+ });
444
+ const found = {};
445
+ const objs = [];
446
+ for (const obj of result) {
447
+ const o = obj;
448
+ const go = o.gameObject;
449
+ if (go.PCode !== PCode_1.PCode.Avatar && (go.IsAttachment === undefined || !go.IsAttachment)) {
450
+ try {
451
+ const parent = this.findParent(go);
452
+ if (parent.PCode !== PCode_1.PCode.Avatar && (parent.IsAttachment === undefined || !parent.IsAttachment) && parent.ParentID === 0) {
453
+ const uuid = parent.FullID.toString();
454
+ if (found[uuid] === undefined) {
455
+ found[uuid] = parent;
456
+ objs.push(parent);
457
+ }
458
+ }
459
+ }
460
+ catch (error) {
461
+ console.log('Failed to find parent for ' + go.FullID.toString());
462
+ console.error(error);
463
+ }
464
+ }
465
+ }
466
+ for (const obj of objs) {
467
+ this.populateChildren(obj);
468
+ }
469
+ return objs;
470
+ }
471
+ getObjectByUUID(fullID) {
472
+ if (fullID instanceof UUID_1.UUID) {
473
+ fullID = fullID.toString();
474
+ }
475
+ const localID = this.objectsByUUID.get(fullID);
476
+ const go = this.objects.get(localID ?? 0);
477
+ if (localID === undefined || go === undefined) {
478
+ throw new Error('No object found with that UUID');
479
+ }
480
+ return go;
481
+ }
482
+ getObjectByLocalID(localID) {
483
+ const go = this.objects.get(localID);
484
+ if (!go) {
485
+ throw new Error('No object found with that UUID');
486
+ }
487
+ return go;
488
+ }
489
+ insertIntoRtree(obj) {
490
+ if (!this.rtree) {
491
+ return;
492
+ }
493
+ if (obj.rtreeEntry !== undefined) {
494
+ this.rtree.remove(obj.rtreeEntry);
495
+ }
496
+ if (!obj.Scale || !obj.Position || !obj.Rotation) {
497
+ return;
498
+ }
499
+ const normalizedScale = new Vector3_1.Vector3(obj.Scale).multiplyQuaternion(new Quaternion_1.Quaternion(obj.Rotation));
500
+ const bounds = {
501
+ minX: obj.Position.x - (normalizedScale.x / 2),
502
+ maxX: obj.Position.x + (normalizedScale.x / 2),
503
+ minY: obj.Position.y - (normalizedScale.y / 2),
504
+ maxY: obj.Position.y + (normalizedScale.y / 2),
505
+ minZ: obj.Position.z - (normalizedScale.z / 2),
506
+ maxZ: obj.Position.z + (normalizedScale.z / 2),
507
+ gameObject: obj
508
+ };
509
+ obj.rtreeEntry = bounds;
510
+ this.rtree.insert(bounds);
511
+ }
512
+ pendingResolve(id) {
513
+ this.pendingResolves.add(id);
279
514
  }
280
515
  applyObjectProperties(o, obj) {
281
516
  this.selectedPrimsWithoutUpdate.delete(o.ID);
@@ -299,6 +534,7 @@ class ObjectStoreLite {
299
534
  o.fromTaskID = obj.FromTaskID;
300
535
  o.groupID = obj.GroupID;
301
536
  o.lastOwnerID = obj.LastOwnerID;
537
+ o.OwnerID = obj.OwnerID;
302
538
  o.name = Utils_1.Utils.BufferToStringSimple(obj.Name);
303
539
  o.description = Utils_1.Utils.BufferToStringSimple(obj.Description);
304
540
  o.touchName = Utils_1.Utils.BufferToStringSimple(obj.TouchName);
@@ -320,87 +556,85 @@ class ObjectStoreLite {
320
556
  }
321
557
  }
322
558
  }
323
- requestMissingObject(localID_1) {
324
- return __awaiter(this, arguments, void 0, function* (localID, attempt = 0) {
325
- if (this.requestedObjects.has(localID)) {
559
+ async requestMissingObject(localID, attempt = 0) {
560
+ if (this.requestedObjects.has(localID)) {
561
+ return;
562
+ }
563
+ if (this.circuit === undefined) {
564
+ return;
565
+ }
566
+ this.requestedObjects.add(localID);
567
+ const black = this.blacklist.get(localID);
568
+ if (black !== undefined) {
569
+ const thirtyMinutesAgo = new Date(new Date().getTime() - 30 * 60000);
570
+ if (black >= thirtyMinutesAgo) {
326
571
  return;
327
572
  }
328
- if (this.circuit === undefined) {
329
- return;
573
+ else {
574
+ this.blacklist.delete(localID);
330
575
  }
331
- this.requestedObjects.add(localID);
332
- const black = this.blacklist.get(localID);
333
- if (black !== undefined) {
334
- const thirtyMinutesAgo = new Date(new Date().getTime() - 30 * 60000);
335
- if (black >= thirtyMinutesAgo) {
336
- return;
337
- }
338
- else {
339
- this.blacklist.delete(localID);
576
+ }
577
+ const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage();
578
+ rmo.AgentData = {
579
+ AgentID: this.agent.agentID,
580
+ SessionID: this.circuit.sessionID
581
+ };
582
+ rmo.ObjectData = [];
583
+ rmo.ObjectData.push({
584
+ CacheMissType: 0,
585
+ ID: localID
586
+ });
587
+ this.circuit.sendMessage(rmo, PacketFlags_1.PacketFlags.Reliable);
588
+ const selectObject = new ObjectSelect_1.ObjectSelectMessage();
589
+ selectObject.AgentData = {
590
+ AgentID: this.agent.agentID,
591
+ SessionID: this.circuit.sessionID
592
+ };
593
+ selectObject.ObjectData = [
594
+ {
595
+ 'ObjectLocalID': localID
596
+ }
597
+ ];
598
+ this.circuit.sendMessage(selectObject, PacketFlags_1.PacketFlags.Reliable);
599
+ try {
600
+ await this.circuit.waitForMessage(Message_1.Message.ObjectUpdate, 10000, (message) => {
601
+ for (const obj of message.ObjectData) {
602
+ if (obj.ID === localID) {
603
+ return FilterResponse_1.FilterResponse.Finish;
604
+ }
340
605
  }
341
- }
342
- const rmo = new RequestMultipleObjects_1.RequestMultipleObjectsMessage();
343
- rmo.AgentData = {
344
- AgentID: this.agent.agentID,
345
- SessionID: this.circuit.sessionID
346
- };
347
- rmo.ObjectData = [];
348
- rmo.ObjectData.push({
349
- CacheMissType: 0,
350
- ID: localID
606
+ return FilterResponse_1.FilterResponse.NoMatch;
351
607
  });
352
- this.circuit.sendMessage(rmo, PacketFlags_1.PacketFlags.Reliable);
353
- const selectObject = new ObjectSelect_1.ObjectSelectMessage();
354
- selectObject.AgentData = {
355
- AgentID: this.agent.agentID,
356
- SessionID: this.circuit.sessionID
357
- };
358
- selectObject.ObjectData = [
359
- {
360
- 'ObjectLocalID': localID
361
- }
362
- ];
363
- this.circuit.sendMessage(selectObject, PacketFlags_1.PacketFlags.Reliable);
364
- try {
365
- yield this.circuit.waitForMessage(Message_1.Message.ObjectUpdate, 10000, (message) => {
366
- for (const obj of message.ObjectData) {
367
- if (obj.ID === localID) {
368
- return FilterResponse_1.FilterResponse.Finish;
369
- }
370
- }
371
- return FilterResponse_1.FilterResponse.NoMatch;
372
- });
373
- this.requestedObjects.delete(localID);
608
+ this.requestedObjects.delete(localID);
609
+ }
610
+ catch (_error) {
611
+ this.requestedObjects.delete(localID);
612
+ if (attempt < 5) {
613
+ await this.requestMissingObject(localID, ++attempt);
374
614
  }
375
- catch (error) {
376
- this.requestedObjects.delete(localID);
377
- if (attempt < 5) {
378
- yield this.requestMissingObject(localID, ++attempt);
615
+ else {
616
+ if (!this.circuit) {
617
+ return;
379
618
  }
380
- else {
381
- if (!this.circuit) {
382
- return;
619
+ this.blacklist.set(localID, new Date());
620
+ console.error('Error retrieving missing object after 5 attempts: ' + localID);
621
+ }
622
+ }
623
+ finally {
624
+ if (this.circuit) {
625
+ const deselectObject = new ObjectDeselect_1.ObjectDeselectMessage();
626
+ deselectObject.AgentData = {
627
+ AgentID: this.agent.agentID,
628
+ SessionID: this.circuit.sessionID
629
+ };
630
+ deselectObject.ObjectData = [
631
+ {
632
+ 'ObjectLocalID': localID
383
633
  }
384
- this.blacklist.set(localID, new Date());
385
- console.error('Error retrieving missing object after 5 attempts: ' + localID);
386
- }
387
- }
388
- finally {
389
- if (this.circuit) {
390
- const deselectObject = new ObjectDeselect_1.ObjectDeselectMessage();
391
- deselectObject.AgentData = {
392
- AgentID: this.agent.agentID,
393
- SessionID: this.circuit.sessionID
394
- };
395
- deselectObject.ObjectData = [
396
- {
397
- 'ObjectLocalID': localID
398
- }
399
- ];
400
- this.circuit.sendMessage(deselectObject, PacketFlags_1.PacketFlags.Reliable);
401
- }
634
+ ];
635
+ this.circuit.sendMessage(deselectObject, PacketFlags_1.PacketFlags.Reliable);
402
636
  }
403
- });
637
+ }
404
638
  }
405
639
  objectUpdate(objectUpdate) {
406
640
  for (const objData of objectUpdate.ObjectData) {
@@ -428,74 +662,79 @@ class ObjectStoreLite {
428
662
  this.objects.set(localID, newObj);
429
663
  }
430
664
  obj = this.objects.get(localID);
431
- obj.deleted = false;
432
- obj.ID = objData.ID;
433
- obj.FullID = objData.FullID;
434
- obj.ParentID = objData.ParentID;
435
- obj.OwnerID = objData.OwnerID;
436
- obj.PCode = objData.PCode;
437
- obj.NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue));
438
- obj.IsAttachment = obj.NameValue.AttachItemID !== undefined;
439
- if (obj.IsAttachment && obj.State !== undefined) {
440
- obj.attachmentPoint = this.decodeAttachPoint(obj.State);
441
- }
442
- if (objData.PCode === PCode_1.PCode.Avatar && obj.FullID.toString() === this.agent.agentID.toString()) {
443
- this.agent.localID = localID;
444
- if (this.options & BotOptionFlags_1.BotOptionFlags.StoreMyAttachmentsOnly) {
445
- for (const objParentID of Object.keys(this.objectsByParent)) {
446
- const parent = parseInt(objParentID, 10);
447
- if (parent !== this.agent.localID) {
448
- let foundAvatars = false;
449
- const p = this.objectsByParent.get(parent);
450
- if (p !== undefined) {
451
- for (const objID of p) {
452
- const childObj = this.objects.get(objID);
453
- if (childObj) {
454
- if (childObj.PCode === PCode_1.PCode.Avatar) {
455
- foundAvatars = true;
665
+ if (obj) {
666
+ obj.deleted = false;
667
+ obj.ID = objData.ID;
668
+ obj.FullID = objData.FullID;
669
+ obj.ParentID = objData.ParentID;
670
+ obj.OwnerID = objData.OwnerID;
671
+ obj.PCode = objData.PCode;
672
+ obj.NameValue = this.parseNameValues(Utils_1.Utils.BufferToStringSimple(objData.NameValue));
673
+ obj.IsAttachment = obj.NameValue.get('AttachItemID') !== undefined;
674
+ if (obj.IsAttachment && obj.State !== undefined) {
675
+ obj.attachmentPoint = this.decodeAttachPoint(obj.State);
676
+ }
677
+ if (objData.PCode === PCode_1.PCode.Avatar && obj.FullID.toString() === this.agent.agentID.toString()) {
678
+ this.agent.localID = localID;
679
+ if (this.options & BotOptionFlags_1.BotOptionFlags.StoreMyAttachmentsOnly) {
680
+ for (const objParentID of this.objectsByParent.keys()) {
681
+ const parent = objParentID;
682
+ if (parent !== this.agent.localID) {
683
+ let foundAvatars = false;
684
+ const p = this.objectsByParent.get(parent);
685
+ if (p !== undefined) {
686
+ for (const objID of p) {
687
+ const childObj = this.objects.get(objID);
688
+ if (childObj) {
689
+ if (childObj.PCode === PCode_1.PCode.Avatar) {
690
+ foundAvatars = true;
691
+ }
456
692
  }
457
693
  }
458
694
  }
459
- }
460
- const parentObj = this.objects.get(parent);
461
- if (parentObj) {
462
- if (parentObj.PCode === PCode_1.PCode.Avatar) {
463
- foundAvatars = true;
695
+ const parentObj = this.objects.get(parent);
696
+ if (parentObj) {
697
+ if (parentObj.PCode === PCode_1.PCode.Avatar) {
698
+ foundAvatars = true;
699
+ }
700
+ }
701
+ if (!foundAvatars) {
702
+ this.deleteObject(parent);
464
703
  }
465
- }
466
- if (!foundAvatars) {
467
- this.deleteObject(parent);
468
704
  }
469
705
  }
470
706
  }
471
707
  }
472
- }
473
- this.objectsByUUID.set(objData.FullID.toString(), localID);
474
- let objByParent = this.objectsByParent.get(parentID);
475
- if (!objByParent) {
476
- objByParent = [];
477
- this.objectsByParent.set(parentID, objByParent);
478
- }
479
- if (addToParentList) {
480
- objByParent.push(localID);
481
- }
482
- if (objData.PCode !== PCode_1.PCode.Avatar && this.options & BotOptionFlags_1.BotOptionFlags.StoreMyAttachmentsOnly) {
483
- if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID) {
484
- this.deleteObject(localID);
485
- return;
708
+ this.objectsByUUID.set(objData.FullID.toString(), localID);
709
+ let objByParent = this.objectsByParent.get(parentID);
710
+ if (!objByParent) {
711
+ objByParent = [];
712
+ this.objectsByParent.set(parentID, objByParent);
713
+ }
714
+ if (addToParentList) {
715
+ objByParent.push(localID);
716
+ }
717
+ if (objData.PCode !== PCode_1.PCode.Avatar && this.options & BotOptionFlags_1.BotOptionFlags.StoreMyAttachmentsOnly) {
718
+ if (this.agent.localID !== 0 && obj.ParentID !== this.agent.localID) {
719
+ this.deleteObject(localID);
720
+ return;
721
+ }
722
+ }
723
+ this.notifyObjectUpdate(newObject, obj);
724
+ if (objData.ParentID !== undefined && objData.ParentID !== 0 && !this.objects.get(objData.ParentID) && !obj?.IsAttachment) {
725
+ if (this.fullStore) {
726
+ void this.requestMissingObject(objData.ParentID);
727
+ }
486
728
  }
487
- }
488
- this.notifyObjectUpdate(newObject, obj);
489
- if (objData.ParentID !== undefined && objData.ParentID !== 0 && !this.objects.get(objData.ParentID) && !(obj === null || obj === void 0 ? void 0 : obj.IsAttachment)) {
490
- this.requestMissingObject(objData.ParentID);
491
729
  }
492
730
  }
493
731
  }
494
732
  notifyTerseUpdate(obj) {
495
733
  if (this.objects.get(obj.ID)) {
496
734
  if (obj.PCode === PCode_1.PCode.Avatar) {
497
- if (this.agent.currentRegion.agents[obj.FullID.toString()] !== undefined) {
498
- this.agent.currentRegion.agents[obj.FullID.toString()].processObjectUpdate(obj);
735
+ const agent = this.agent.currentRegion.agents.get(obj.FullID.toString());
736
+ if (agent !== undefined) {
737
+ agent.processObjectUpdate(obj);
499
738
  }
500
739
  else {
501
740
  console.warn('Received update for unknown avatar, but not a new object?!');
@@ -509,37 +748,39 @@ class ObjectStoreLite {
509
748
  }
510
749
  }
511
750
  notifyObjectUpdate(newObject, obj) {
512
- var _a;
513
751
  if (obj.PCode === PCode_1.PCode.Avatar) {
514
752
  const avatarID = obj.FullID.toString();
515
753
  if (newObject) {
516
- if (this.agent.currentRegion.agents[avatarID] === undefined) {
754
+ const agent = this.agent.currentRegion.agents.get(avatarID);
755
+ if (agent === undefined) {
517
756
  const av = Avatar_1.Avatar.fromGameObject(obj);
518
- this.agent.currentRegion.agents[avatarID] = av;
757
+ this.agent.currentRegion.agents.set(avatarID, av);
519
758
  this.clientEvents.onAvatarEnteredRegion.next(av);
520
759
  }
521
760
  else {
522
- this.agent.currentRegion.agents[avatarID].processObjectUpdate(obj);
761
+ agent.processObjectUpdate(obj);
523
762
  }
524
763
  }
525
764
  else {
526
- if (this.agent.currentRegion.agents[avatarID] !== undefined) {
527
- this.agent.currentRegion.agents[avatarID].processObjectUpdate(obj);
765
+ const agent = this.agent.currentRegion.agents.get(avatarID);
766
+ if (agent !== undefined) {
767
+ agent.processObjectUpdate(obj);
528
768
  }
529
769
  else {
530
770
  console.warn('Received update for unknown avatar, but not a new object?!');
531
771
  }
532
772
  }
533
773
  }
534
- const parentObj = this.objects.get((_a = obj.ParentID) !== null && _a !== void 0 ? _a : 0);
774
+ const parentObj = this.objects.get(obj.ParentID ?? 0);
535
775
  if (obj.ParentID === 0 || (obj.ParentID !== undefined && parentObj !== undefined && parentObj.PCode === PCode_1.PCode.Avatar)) {
536
776
  if (newObject) {
537
777
  if (obj.IsAttachment && obj.ParentID !== undefined) {
538
778
  if (parentObj !== undefined && parentObj.PCode === PCode_1.PCode.Avatar) {
539
- const avatar = this.agent.currentRegion.agents[parentObj.FullID.toString()];
779
+ const avatar = this.agent.currentRegion.agents.get(parentObj.FullID.toString());
540
780
  let invItemID = UUID_1.UUID.zero();
541
- if (obj.NameValue['AttachItemID']) {
542
- invItemID = new UUID_1.UUID(obj.NameValue['AttachItemID'].value);
781
+ const attach = obj.NameValue.get('AttachItemID');
782
+ if (attach) {
783
+ invItemID = new UUID_1.UUID(attach.value);
543
784
  }
544
785
  this.agent.currentRegion.clientCommands.region.resolveObject(obj, {}).then(() => {
545
786
  try {
@@ -584,9 +825,6 @@ class ObjectStoreLite {
584
825
  }
585
826
  }
586
827
  }
587
- pendingResolve(id) {
588
- this.pendingResolves.add(id);
589
- }
590
828
  objectUpdateCached(objectUpdateCached) {
591
829
  if (this.circuit === undefined) {
592
830
  return;
@@ -669,9 +907,11 @@ class ObjectStoreLite {
669
907
  }
670
908
  }
671
909
  if (o.ParentID !== undefined && o.ParentID !== 0 && !this.objects.has(o.ParentID) && !o.IsAttachment) {
672
- this.requestMissingObject(o.ParentID).catch((e) => {
673
- console.error(e);
674
- });
910
+ if (this.fullStore) {
911
+ this.requestMissingObject(o.ParentID).catch((e) => {
912
+ console.error(e);
913
+ });
914
+ }
675
915
  }
676
916
  if (compressedflags & CompressedFlags_1.CompressedFlags.Tree) {
677
917
  pos++;
@@ -693,7 +933,7 @@ class ObjectStoreLite {
693
933
  pos += 86;
694
934
  }
695
935
  const extraParamsLength = ExtraParams_1.ExtraParams.getLengthOfParams(buf, pos);
696
- o.extraParams = ExtraParams_1.ExtraParams.from(buf.slice(pos, pos + extraParamsLength));
936
+ o.extraParams = ExtraParams_1.ExtraParams.from(buf.subarray(pos, pos + extraParamsLength));
697
937
  pos = pos + extraParamsLength;
698
938
  if (compressedflags & CompressedFlags_1.CompressedFlags.HasSound) {
699
939
  pos = pos + 25;
@@ -732,270 +972,21 @@ class ObjectStoreLite {
732
972
  }
733
973
  }
734
974
  }
735
- setPersist(persist) {
736
- this.persist = persist;
737
- if (!this.persist) {
738
- for (const d of this.deadObjects) {
739
- this.deleteObject(d);
740
- }
741
- this.deadObjects = [];
742
- }
743
- }
744
- deleteObject(objectID) {
745
- var _a;
746
- const obj = this.objects.get(objectID);
747
- if (obj) {
748
- const objectUUID = obj.FullID;
749
- obj.deleted = true;
750
- if (this.persist) {
751
- this.deadObjects.push(objectID);
752
- return;
753
- }
754
- if (obj.IsAttachment && obj.ParentID !== undefined) {
755
- const parent = this.objects.get(obj.ParentID);
756
- if (parent !== undefined && parent.PCode === PCode_1.PCode.Avatar) {
757
- (_a = this.agent.currentRegion.agents[parent.FullID.toString()]) === null || _a === void 0 ? void 0 : _a.removeAttachment(obj);
758
- }
759
- }
760
- if (this.agent.currentRegion.agents[objectUUID.toString()] !== undefined) {
761
- this.agent.currentRegion.agents[objectUUID.toString()].isVisible = false;
762
- }
763
- const objsByParent = this.objectsByParent.get(objectID);
764
- if (objsByParent) {
765
- for (const childObjID of objsByParent) {
766
- this.deleteObject(childObjID);
767
- }
768
- }
769
- this.objectsByParent.delete(objectID);
770
- const uuid = obj.FullID.toString();
771
- this.objectsByUUID.delete(uuid);
772
- if (obj.ParentID !== undefined) {
773
- const parentID = obj.ParentID;
774
- const objsByParentParent = this.objectsByParent.get(parentID);
775
- if (objsByParentParent) {
776
- const ind = objsByParentParent.indexOf(objectID);
777
- if (ind !== -1) {
778
- objsByParentParent.splice(ind, 1);
779
- }
780
- }
781
- }
782
- if (this.rtree && obj.rtreeEntry !== undefined) {
783
- this.rtree.remove(obj.rtreeEntry);
784
- }
785
- this.objects.delete(objectID);
786
- this.cachedMaterialOverrides.delete(objectID);
787
- }
788
- }
789
- getObjectsByParent(parentID) {
790
- const list = this.objectsByParent.get(parentID);
791
- if (list === undefined) {
792
- return [];
793
- }
794
- const result = [];
795
- for (const localID of list) {
796
- const obj = this.objects.get(localID);
797
- if (obj) {
798
- result.push(obj);
799
- }
800
- }
801
- result.sort((a, b) => {
802
- return a.ID - b.ID;
803
- });
804
- return result;
805
- }
806
- parseNameValues(str) {
807
- const nv = {};
808
- const lines = str.split('\n');
809
- for (const line of lines) {
810
- if (line.length > 0) {
811
- let kv = line.split(/[\t ]/);
812
- if (kv.length > 5) {
813
- for (let x = 5; x < kv.length; x++) {
814
- kv[4] += ' ' + kv[x];
815
- }
816
- kv = kv.slice(0, 5);
817
- }
818
- if (kv.length === 5) {
819
- const namevalue = new NameValue_1.NameValue();
820
- namevalue.type = kv[1];
821
- namevalue.class = kv[2];
822
- namevalue.sendTo = kv[3];
823
- namevalue.value = kv[4];
824
- nv[kv[0]] = namevalue;
825
- }
826
- }
827
- }
828
- return nv;
829
- }
830
- shutdown() {
831
- if (this.selectedChecker !== undefined) {
832
- clearInterval(this.selectedChecker);
833
- delete this.selectedChecker;
834
- }
835
- this.physicsSubscription.unsubscribe();
836
- this.objects.clear();
837
- if (this.rtree) {
838
- this.rtree.clear();
839
- }
840
- this.objectsByUUID.clear();
841
- this.objectsByParent.clear();
842
- delete this.circuit;
843
- }
844
975
  findParent(go) {
845
- var _a;
846
- const parentObj = this.objects.get((_a = go.ParentID) !== null && _a !== void 0 ? _a : 0);
976
+ const parentObj = this.objects.get(go.ParentID ?? 0);
847
977
  if (go.ParentID !== undefined && go.ParentID !== 0 && parentObj) {
848
978
  return this.findParent(parentObj);
849
979
  }
850
980
  else {
851
981
  if (go.ParentID !== undefined && go.ParentID !== 0 && !parentObj && !go.IsAttachment) {
852
- this.requestMissingObject(go.ParentID).catch((e) => {
853
- Logger_1.Logger.Error(e);
854
- });
855
- }
856
- return go;
857
- }
858
- }
859
- populateChildren(obj, _resolve = false) {
860
- if (obj !== undefined) {
861
- obj.children = [];
862
- obj.totalChildren = 0;
863
- for (const child of this.getObjectsByParent(obj.ID)) {
864
- if (child.PCode !== PCode_1.PCode.Avatar) {
865
- obj.totalChildren++;
866
- this.populateChildren(child);
867
- if (child.totalChildren !== undefined) {
868
- obj.totalChildren += child.totalChildren;
869
- }
870
- obj.children.push(child);
982
+ if (this.fullStore) {
983
+ this.requestMissingObject(go.ParentID).catch((e) => {
984
+ Logger_1.Logger.Error(e);
985
+ });
871
986
  }
872
987
  }
873
- obj.childrenPopulated = true;
874
- }
875
- }
876
- getAllObjects() {
877
- return __awaiter(this, void 0, void 0, function* () {
878
- const results = [];
879
- const found = {};
880
- for (const localID of this.objects.keys()) {
881
- const go = this.objects.get(localID);
882
- if (go && go.PCode !== PCode_1.PCode.Avatar && (go.IsAttachment === undefined || !go.IsAttachment)) {
883
- try {
884
- const parent = this.findParent(go);
885
- if (parent.ParentID === 0) {
886
- const uuid = parent.FullID.toString();
887
- if (found[uuid] === undefined) {
888
- found[uuid] = parent;
889
- results.push(parent);
890
- }
891
- }
892
- if (go.ParentID) {
893
- let objects = this.objectsByParent.get(go.ParentID);
894
- if (!(objects === null || objects === void 0 ? void 0 : objects.includes(localID))) {
895
- if (objects === undefined) {
896
- objects = [];
897
- }
898
- objects.push(localID);
899
- this.objectsByParent.set(go.ParentID, objects);
900
- }
901
- }
902
- }
903
- catch (error) {
904
- console.log('Failed to find parent for ' + go.FullID.toString());
905
- console.error(error);
906
- }
907
- }
908
- }
909
- for (const obj of results) {
910
- this.populateChildren(obj);
911
- }
912
- return results;
913
- });
914
- }
915
- getNumberOfObjects() {
916
- return Object.keys(this.objects).length;
917
- }
918
- getObjectsInArea(minX, maxX, minY, maxY, minZ, maxZ) {
919
- return __awaiter(this, void 0, void 0, function* () {
920
- if (!this.rtree) {
921
- throw new Error('GetObjectsInArea not available with the Lite object store');
922
- }
923
- const result = this.rtree.search({
924
- minX: minX,
925
- maxX: maxX,
926
- minY: minY,
927
- maxY: maxY,
928
- minZ: minZ,
929
- maxZ: maxZ
930
- });
931
- const found = {};
932
- const objs = [];
933
- for (const obj of result) {
934
- const o = obj;
935
- const go = o.gameObject;
936
- if (go.PCode !== PCode_1.PCode.Avatar && (go.IsAttachment === undefined || !go.IsAttachment)) {
937
- try {
938
- const parent = this.findParent(go);
939
- if (parent.PCode !== PCode_1.PCode.Avatar && (parent.IsAttachment === undefined || !parent.IsAttachment) && parent.ParentID === 0) {
940
- const uuid = parent.FullID.toString();
941
- if (found[uuid] === undefined) {
942
- found[uuid] = parent;
943
- objs.push(parent);
944
- }
945
- }
946
- }
947
- catch (error) {
948
- console.log('Failed to find parent for ' + go.FullID.toString());
949
- console.error(error);
950
- }
951
- }
952
- }
953
- for (const obj of objs) {
954
- this.populateChildren(obj);
955
- }
956
- return objs;
957
- });
958
- }
959
- getObjectByUUID(fullID) {
960
- if (fullID instanceof UUID_1.UUID) {
961
- fullID = fullID.toString();
962
- }
963
- const localID = this.objectsByUUID.get(fullID);
964
- const go = this.objects.get(localID !== null && localID !== void 0 ? localID : 0);
965
- if (localID === undefined || go === undefined) {
966
- throw new Error('No object found with that UUID');
967
- }
968
- return go;
969
- }
970
- getObjectByLocalID(localID) {
971
- const go = this.objects.get(localID);
972
- if (!go) {
973
- throw new Error('No object found with that UUID');
974
- }
975
- return go;
976
- }
977
- insertIntoRtree(obj) {
978
- if (!this.rtree) {
979
- return;
980
- }
981
- if (obj.rtreeEntry !== undefined) {
982
- this.rtree.remove(obj.rtreeEntry);
983
- }
984
- if (!obj.Scale || !obj.Position || !obj.Rotation) {
985
- return;
988
+ return go;
986
989
  }
987
- const normalizedScale = new Vector3_1.Vector3(obj.Scale).multiplyByTSMQuat(new Quaternion_1.Quaternion(obj.Rotation));
988
- const bounds = {
989
- minX: obj.Position.x - (normalizedScale.x / 2),
990
- maxX: obj.Position.x + (normalizedScale.x / 2),
991
- minY: obj.Position.y - (normalizedScale.y / 2),
992
- maxY: obj.Position.y + (normalizedScale.y / 2),
993
- minZ: obj.Position.z - (normalizedScale.z / 2),
994
- maxZ: obj.Position.z + (normalizedScale.z / 2),
995
- gameObject: obj
996
- };
997
- obj.rtreeEntry = bounds;
998
- this.rtree.insert(bounds);
999
990
  }
1000
991
  }
1001
992
  exports.ObjectStoreLite = ObjectStoreLite;