@hellpig/anarchy-engine 22.0.2 → 22.0.4

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 (397) hide show
  1. package/dist/Abstract/Entities/AbstractEntity.js.map +1 -1
  2. package/dist/Abstract/Factories/AbstractFactory.js.map +1 -1
  3. package/dist/Abstract/Factories/ReactiveFactory.js.map +1 -1
  4. package/dist/Abstract/Loaders/AbstractLoader.js.map +1 -1
  5. package/dist/Abstract/Mixins/WithWrapperIdMixin.js.map +1 -1
  6. package/dist/Abstract/Models/THtmlElementStyleDeclaration.d.ts +4 -4
  7. package/dist/Abstract/Registries/AbstractEntityAsyncRegistry.js.map +1 -1
  8. package/dist/Abstract/Registries/AbstractEntityRegistry.js.map +1 -1
  9. package/dist/Abstract/Registries/AbstractResourceAsyncRegistry.js.map +1 -1
  10. package/dist/Abstract/Registries/AbstractSimpleRegistry.js.map +1 -1
  11. package/dist/Abstract/Registries/AbstractWatcherRegistry.js.map +1 -1
  12. package/dist/Abstract/Registries/Mixin/Registry/WithBaseAccessorsRegistry.js.map +1 -1
  13. package/dist/Abstract/Registries/Mixin/Registry/WithReactiveRegistry.js.map +1 -1
  14. package/dist/Abstract/Services/AbstractService.js.map +1 -1
  15. package/dist/Abstract/Watchers/AbstractWatcher.js.map +1 -1
  16. package/dist/Abstract/Watchers/AbstractWatcherWithState.js.map +1 -1
  17. package/dist/Abstract/Wrappers/AbstractWrapper.js.map +1 -1
  18. package/dist/Actor/Adapters/ConfigToParams.js.map +1 -1
  19. package/dist/Actor/Adapters/EntityToConfig.js.map +1 -1
  20. package/dist/Actor/Adapters/Helpers/ActorStatesConfigToParams.js.map +1 -1
  21. package/dist/Actor/Adapters/Helpers/Model3dSettingsConfigToParams.js.map +1 -1
  22. package/dist/Actor/Entities/Actor/Actor.js.map +1 -1
  23. package/dist/Actor/Factories/ActorFactory.js.map +1 -1
  24. package/dist/Actor/Mixins/WithActorStates.js.map +1 -1
  25. package/dist/Actor/Registries/ActorRegistry.js.map +1 -1
  26. package/dist/Actor/Registries/Model3dToActorConnectionRegistry.js.map +1 -1
  27. package/dist/Actor/Services/ActorService.js.map +1 -1
  28. package/dist/Actor/TransformDrive/ActorTransformDrive.js.map +1 -1
  29. package/dist/Actor/Utils/ActorUtils.js.map +1 -1
  30. package/dist/Animations/Adapters/EntityToConfig.js.map +1 -1
  31. package/dist/Animations/Loader/AnimationsLoader.js.map +1 -1
  32. package/dist/Animations/Registries/AnimationsMetaInfoRegistry.js.map +1 -1
  33. package/dist/Animations/Registries/AnimationsResourceAsyncRegistry.js.map +1 -1
  34. package/dist/Animations/Services/AnimationsService.js.map +1 -1
  35. package/dist/Animations/Utils/SerializationUtils.js.map +1 -1
  36. package/dist/Audio/Adapters/AudioConfigToParams.js.map +1 -1
  37. package/dist/Audio/Adapters/EntityToConfig.js.map +1 -1
  38. package/dist/Audio/Factories/AudioFactory.js.map +1 -1
  39. package/dist/Audio/Loader/AudioLoader.js.map +1 -1
  40. package/dist/Audio/Registries/AudioListenersRegistry.js.map +1 -1
  41. package/dist/Audio/Registries/AudioMetaInfoRegistry.js.map +1 -1
  42. package/dist/Audio/Registries/AudioRegistry.js.map +1 -1
  43. package/dist/Audio/Registries/AudioResourceAsyncRegistry.js.map +1 -1
  44. package/dist/Audio/Services/AudioService.js.map +1 -1
  45. package/dist/Audio/TransformDrive/Audio3dTransformDrive.js.map +1 -1
  46. package/dist/Audio/Utils/AudioUtils.js.map +1 -1
  47. package/dist/Audio/Utils/DebugAudioRenderer.js.map +1 -1
  48. package/dist/Audio/Wrappers/AbstractAudioWrapper.js.map +1 -1
  49. package/dist/Audio/Wrappers/Audio3dWrapper.js.map +1 -1
  50. package/dist/Audio/Wrappers/AudioWrapper.js.map +1 -1
  51. package/dist/Camera/Adapters/ConfigToParams.js.map +1 -1
  52. package/dist/Camera/Adapters/EntityToConfig.js.map +1 -1
  53. package/dist/Camera/Factories/CameraFactory.js.map +1 -1
  54. package/dist/Camera/Registries/AbstractCameraRegistry.js.map +1 -1
  55. package/dist/Camera/Services/CameraService.js.map +1 -1
  56. package/dist/Camera/TransformDrive/CameraTransformDrive.js.map +1 -1
  57. package/dist/Camera/Utils/CameraUtils.js.map +1 -1
  58. package/dist/Camera/Wrappers/Accessors.js.map +1 -1
  59. package/dist/Camera/Wrappers/OrthographicCameraWrapper.js.map +1 -1
  60. package/dist/Camera/Wrappers/PerspectiveCameraWrapper.js.map +1 -1
  61. package/dist/Collisions/Mixins/WithCollisions.js.map +1 -1
  62. package/dist/Collisions/Services/BvhService.js.map +1 -1
  63. package/dist/Collisions/Services/CollisionsService.js.map +1 -1
  64. package/dist/Color/Adapters/EntityToConfig.js.map +1 -1
  65. package/dist/Color/Wrappers/ColorWrapper.js.map +1 -1
  66. package/dist/Context/AmbientContext/AmbientContext.js.map +1 -1
  67. package/dist/Controls/Adapters/ConfigToParams.js.map +1 -1
  68. package/dist/Controls/Adapters/EntityToConfig.js.map +1 -1
  69. package/dist/Controls/Factories/ControlsFactory.js.map +1 -1
  70. package/dist/Controls/Loop/ControlsLoopEffect.js.map +1 -1
  71. package/dist/Controls/Models/TFpsControlsWrapper.d.ts +1 -1
  72. package/dist/Controls/Models/TOrbitControlsWrapper.d.ts +1 -1
  73. package/dist/Controls/Registries/ControlsRegistry.js.map +1 -1
  74. package/dist/Controls/Services/ControlsService.js.map +1 -1
  75. package/dist/Controls/Utils/ControlsUtils.js.map +1 -1
  76. package/dist/Controls/Wrappers/FpsControls/FpsControlsAccessors.d.ts +1 -1
  77. package/dist/Controls/Wrappers/FpsControls/FpsControlsAccessors.js.map +1 -1
  78. package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapper.js.map +1 -1
  79. package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapperHelper.js.map +1 -1
  80. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsAccessors.d.ts +1 -1
  81. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsAccessors.js.map +1 -1
  82. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapper.js.map +1 -1
  83. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapperHelper.js.map +1 -1
  84. package/dist/Distance/Utils/DistanceUtils.js.map +1 -1
  85. package/dist/EnvMap/Adapters/ConfigToParams.js.map +1 -1
  86. package/dist/EnvMap/Adapters/EntityToConfig.js.map +1 -1
  87. package/dist/EnvMap/Factories/EnvMapFactory.js.map +1 -1
  88. package/dist/EnvMap/Loader/EnvMapLoader.js.map +1 -1
  89. package/dist/EnvMap/Registries/EnvMapMetaInfoRegistry.js.map +1 -1
  90. package/dist/EnvMap/Registries/EnvMapRegistry.js.map +1 -1
  91. package/dist/EnvMap/Registries/EnvMapTextureAsyncRegistry.js.map +1 -1
  92. package/dist/EnvMap/Services/EnvMapService.js.map +1 -1
  93. package/dist/EnvMap/Wrappers/EnvMapWrapper.js.map +1 -1
  94. package/dist/Fog/Adapters/ConfigToParams.js.map +1 -1
  95. package/dist/Fog/Adapters/EntityToConfig.js.map +1 -1
  96. package/dist/Fog/Factories/FogFactory.js.map +1 -1
  97. package/dist/Fog/Registries/FogRegistry.js.map +1 -1
  98. package/dist/Fog/Services/FogService.js.map +1 -1
  99. package/dist/Fog/Wrappers/FogWrapper.js.map +1 -1
  100. package/dist/Fsm/Adapters/ConfigToParams.js.map +1 -1
  101. package/dist/Fsm/Adapters/EntityToConfig.js.map +1 -1
  102. package/dist/Fsm/Entities/FsmSource.js.map +1 -1
  103. package/dist/Fsm/Factories/FsmInstanceFactory.js.map +1 -1
  104. package/dist/Fsm/Factories/FsmSourceFactory.js.map +1 -1
  105. package/dist/Fsm/Registries/FsmInstanceRegistry.js.map +1 -1
  106. package/dist/Fsm/Registries/FsmSourceRegistry.js.map +1 -1
  107. package/dist/Fsm/Services/FsmInstanceService.js.map +1 -1
  108. package/dist/Fsm/Services/FsmService.js.map +1 -1
  109. package/dist/Fsm/Services/FsmSourceService.js.map +1 -1
  110. package/dist/Fsm/Wrappers/FsmWrapper.js.map +1 -1
  111. package/dist/Global/Decorators/ContainerDecorator.js.map +1 -1
  112. package/dist/Global/Utils/ContainerUtils.js.map +1 -1
  113. package/dist/Intersections/Adapters/ConfigToParams.js.map +1 -1
  114. package/dist/Intersections/Adapters/EntityToConfig.js.map +1 -1
  115. package/dist/Intersections/Factories/IntersectionsWatcherFactory.js.map +1 -1
  116. package/dist/Intersections/Models/TIntersectionsDirectionWatcher.d.ts +1 -1
  117. package/dist/Intersections/Registries/IntersectionsWatcherRegistry.js.map +1 -1
  118. package/dist/Intersections/Services/IntersectionsWatcherService.js.map +1 -1
  119. package/dist/Intersections/Utils/IntersectionsWatcherUtils.js.map +1 -1
  120. package/dist/Intersections/Watchers/AbstractIntersectionsWatcher.js.map +1 -1
  121. package/dist/Intersections/Watchers/IntersectionsCameraWatcher.js.map +1 -1
  122. package/dist/Intersections/Watchers/IntersectionsDirectionWatcher.js.map +1 -1
  123. package/dist/Keyboard/Factories/KeyWatcherFactory.js.map +1 -1
  124. package/dist/Keyboard/Registries/KeyWatcherRegistry.js.map +1 -1
  125. package/dist/Keyboard/Services/KeyboardService.js.map +1 -1
  126. package/dist/Keyboard/Utils/KeysRxJsUtils.js.map +1 -1
  127. package/dist/Keyboard/Utils/KeysUtils.js.map +1 -1
  128. package/dist/Keyboard/Watchers/KeyComboWatcher.js.map +1 -1
  129. package/dist/Keyboard/Watchers/KeyPressWatcher.js.map +1 -1
  130. package/dist/Keyboard/Watchers/KeyReleaseWatcher.js.map +1 -1
  131. package/dist/Kinematic/Adapters/ConfigToParams.js.map +1 -1
  132. package/dist/Kinematic/Adapters/EntityToConfig.js.map +1 -1
  133. package/dist/Kinematic/Constants/KinematicConstants.js.map +1 -1
  134. package/dist/Kinematic/Utils/KinematicUtils.js.map +1 -1
  135. package/dist/Light/Adapters/ConfigToParams.js.map +1 -1
  136. package/dist/Light/Adapters/EntityToConfig.js.map +1 -1
  137. package/dist/Light/Factories/LightFactory.js.map +1 -1
  138. package/dist/Light/Registries/LightRegistry.js.map +1 -1
  139. package/dist/Light/Services/LightService.js.map +1 -1
  140. package/dist/Light/TransformDrive/LightTransformDrive.js.map +1 -1
  141. package/dist/Light/Utils/Utils.js.map +1 -1
  142. package/dist/Light/Wrappers/AbstractLightWrapper.js.map +1 -1
  143. package/dist/Light/Wrappers/AmbientLightWrapper.js.map +1 -1
  144. package/dist/Light/Wrappers/DirectionalLightWrapper.js.map +1 -1
  145. package/dist/Light/Wrappers/HemisphereLightWrapper.js.map +1 -1
  146. package/dist/Light/Wrappers/LightWrapperHelper.js.map +1 -1
  147. package/dist/Light/Wrappers/PointLightWrapper.js.map +1 -1
  148. package/dist/Light/Wrappers/RectAreaLightWrapper.js.map +1 -1
  149. package/dist/Light/Wrappers/SpotLightWrapper.js.map +1 -1
  150. package/dist/LoadingManager/Factories/LoadingManagerFactory.js.map +1 -1
  151. package/dist/LoadingManager/Registries/LoadingManagerRegistry.js.map +1 -1
  152. package/dist/LoadingManager/Services/LoadingManagerService.js.map +1 -1
  153. package/dist/LoadingManager/Wrappers/LoadingManagerWrapper.js.map +1 -1
  154. package/dist/Loop/Constants/LoopsDefaultSettings.js.map +1 -1
  155. package/dist/Loop/Entities/DeltaCalculator.js.map +1 -1
  156. package/dist/Loop/Entities/Loop.js.map +1 -1
  157. package/dist/Loop/Factories/LoopFactory.js.map +1 -1
  158. package/dist/Loop/Registries/LoopRegistry.js.map +1 -1
  159. package/dist/Loop/Services/LoopService.js.map +1 -1
  160. package/dist/Loop/Utils/LoopDebugUtils.js.map +1 -1
  161. package/dist/Loop/Utils/LoopUtils.js.map +1 -1
  162. package/dist/Material/Adapters/ConfigToParams.js.map +1 -1
  163. package/dist/Material/Adapters/EntityToConfig.js.map +1 -1
  164. package/dist/Material/Constants/Material/MaterialMap.js.map +1 -1
  165. package/dist/Material/Factories/MaterialFactory.js.map +1 -1
  166. package/dist/Material/Mixins/WithMaterial.d.ts +1 -1
  167. package/dist/Material/Mixins/WithMaterial.js.map +1 -1
  168. package/dist/Material/Models/TMaterialParamsOptions.d.ts +1 -4
  169. package/dist/Material/Registries/MaterialRegistry.js.map +1 -1
  170. package/dist/Material/Services/MaterialService.js.map +1 -1
  171. package/dist/Material/Utils/MaterialUtils.js.map +1 -1
  172. package/dist/Material/Wrappers/MaterialWrapper.js.map +1 -1
  173. package/dist/Math/Utils/AnglesUtils.js +1 -1
  174. package/dist/Math/Utils/AnglesUtils.js.map +1 -1
  175. package/dist/Math/Utils/DistanceUtils.js.map +1 -1
  176. package/dist/Measurements/Constants/Distance.js.map +1 -1
  177. package/dist/Measurements/Constants/Time.js.map +1 -1
  178. package/dist/Measurements/Utils/MeasurementsUtils.d.ts +1 -1
  179. package/dist/Measurements/Utils/MeasurementsUtils.js.map +1 -1
  180. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy2dMixin.js.map +1 -1
  181. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy3dMixin.js.map +1 -1
  182. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy4dMixin.js.map +1 -1
  183. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByWMixin.js.map +1 -1
  184. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByXMixin.js.map +1 -1
  185. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByYMixin.js.map +1 -1
  186. package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByZMixin.js.map +1 -1
  187. package/dist/Mixins/GameObjects/Mixins/Position/WithPosition2dMixin.js.map +1 -1
  188. package/dist/Mixins/GameObjects/Mixins/Position/WithPosition3dMixin.js.map +1 -1
  189. package/dist/Mixins/GameObjects/Mixins/Position/WithPosition4dMixin.js.map +1 -1
  190. package/dist/Mixins/GameObjects/Mixins/Position/WithPositionMixin.js.map +1 -1
  191. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByWMixin.js.map +1 -1
  192. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByXMixin.js.map +1 -1
  193. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByXyzMixin.js.map +1 -1
  194. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByYMixin.js.map +1 -1
  195. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByZMixin.js.map +1 -1
  196. package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationMixin.js.map +1 -1
  197. package/dist/Mixins/GameObjects/Mixins/Scalable/WithScaleMixin.js.map +1 -1
  198. package/dist/Mixins/GameObjects/Mixins/WithObject3D.js.map +1 -1
  199. package/dist/Mixins/Generics/DestroyableMixin.js.map +1 -1
  200. package/dist/Mixins/Generics/ExtractSerializableRegistrableFields.js.map +1 -1
  201. package/dist/Mixins/Generics/WithActiveEntityServiceMixin.js.map +1 -1
  202. package/dist/Mixins/Generics/WithActiveMixin.js.map +1 -1
  203. package/dist/Mixins/Generics/WithNameAndNameAccessorsMixin.js.map +1 -1
  204. package/dist/Mixins/Services/WithCreateFromConfigService.js.map +1 -1
  205. package/dist/Mixins/Services/WithCreateService.js.map +1 -1
  206. package/dist/Mixins/Services/WithFactoryService.js.map +1 -1
  207. package/dist/Mixins/Services/WithRegistryService.js.map +1 -1
  208. package/dist/Mixins/Services/WithSceneGetterService.js.map +1 -1
  209. package/dist/Mixins/Services/WithSerializableEntities.js.map +1 -1
  210. package/dist/Mixins/Services/WithSerializeAllResources.js.map +1 -1
  211. package/dist/Models3d/Adapters/ConfigToParams.js.map +1 -1
  212. package/dist/Models3d/Adapters/EntityToConfig.js.map +1 -1
  213. package/dist/Models3d/Entities/Model3d.js.map +1 -1
  214. package/dist/Models3d/Factories/Models3dFactory.js.map +1 -1
  215. package/dist/Models3d/Loaders/Loader3dCore.js.map +1 -1
  216. package/dist/Models3d/Loaders/Models3dLoader.js.map +1 -1
  217. package/dist/Models3d/Mixins/WithModel3dEntities.js.map +1 -1
  218. package/dist/Models3d/Models/TModel3dParams.d.ts +1 -1
  219. package/dist/Models3d/Models/TModels3dLoader.d.ts +1 -1
  220. package/dist/Models3d/Models/TModels3dResourceAsyncRegistry.d.ts +1 -1
  221. package/dist/Models3d/Models/TModels3dService.d.ts +1 -1
  222. package/dist/Models3d/Registries/Model3dRawToModel3dConnectionRegistry.js.map +1 -1
  223. package/dist/Models3d/Registries/Models3dMetaInfoRegistry.js.map +1 -1
  224. package/dist/Models3d/Registries/Models3dRegistry.js.map +1 -1
  225. package/dist/Models3d/Registries/Models3dResourceAsyncRegistry.js.map +1 -1
  226. package/dist/Models3d/Services/Models3dService.js.map +1 -1
  227. package/dist/Models3d/Utils/SerializationUtils.js.map +1 -1
  228. package/dist/Models3d/Utils/UtilsModel3d.d.ts +1 -1
  229. package/dist/Models3d/Utils/UtilsModel3d.js.map +1 -1
  230. package/dist/Models3d/Utils/UtilsModels3dService.js.map +1 -1
  231. package/dist/Models3d/Utils/UtilsPrimitiveModels3d.d.ts +1 -1
  232. package/dist/Models3d/Utils/UtilsPrimitiveModels3d.js.map +1 -1
  233. package/dist/Mouse/Factories/MouseClickWatcherFactory.js.map +1 -1
  234. package/dist/Mouse/Factories/MousePositionWatcherFactory.js.map +1 -1
  235. package/dist/Mouse/Registries/MouseClickWatcherRegistry.js.map +1 -1
  236. package/dist/Mouse/Registries/MousePositionWatcherRegistry.js.map +1 -1
  237. package/dist/Mouse/Services/MouseService.js.map +1 -1
  238. package/dist/Mouse/Utils/MouseUtils.js.map +1 -1
  239. package/dist/Mouse/Watchers/MouseClickWatcher.js.map +1 -1
  240. package/dist/Mouse/Watchers/MousePositionWatcher.js.map +1 -1
  241. package/dist/Particles/Adapters/ConfigToParams.js.map +1 -1
  242. package/dist/Particles/Adapters/EntityToConfig.js.map +1 -1
  243. package/dist/Particles/Factories/ParticlesFactory.js.map +1 -1
  244. package/dist/Particles/Registries/ParticlesRegistry.js.map +1 -1
  245. package/dist/Particles/Services/ParticlesService.js.map +1 -1
  246. package/dist/Particles/TransformDrive/ParticlesTransformDrive.js.map +1 -1
  247. package/dist/Particles/Wrappers/ParticlesWrapper.js.map +1 -1
  248. package/dist/Physics/Adapters/EntityToConfig.d.ts +1 -1
  249. package/dist/Physics/Adapters/EntityToConfig.js.map +1 -1
  250. package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js +1 -1
  251. package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js.map +1 -1
  252. package/dist/Physics/Adapters/PhysicsWorldConfigToParams.js.map +1 -1
  253. package/dist/Physics/Constants/RigidBodyTypesMap.d.ts +1 -1
  254. package/dist/Physics/Constants/RigidBodyTypesMap.js +1 -1
  255. package/dist/Physics/Constants/RigidBodyTypesMap.js.map +1 -1
  256. package/dist/Physics/Entities/PhysicsBody.js.map +1 -1
  257. package/dist/Physics/Entities/PhysicsBodyUtils.d.ts +1 -1
  258. package/dist/Physics/Entities/PhysicsBodyUtils.js +1 -1
  259. package/dist/Physics/Entities/PhysicsBodyUtils.js.map +1 -1
  260. package/dist/Physics/Factories/PhysicsBodyFactory.js.map +1 -1
  261. package/dist/Physics/Mixins/WithPhysicsBodyEntities.js.map +1 -1
  262. package/dist/Physics/Models/TPhysicsWorldService.d.ts +1 -1
  263. package/dist/Physics/Registries/PhysicsBodyRegistry.js.map +1 -1
  264. package/dist/Physics/Renderers/PhysicsDebugRenderer.d.ts +1 -1
  265. package/dist/Physics/Renderers/PhysicsDebugRenderer.js.map +1 -1
  266. package/dist/Physics/Services/PhysicsBodyService.js.map +1 -1
  267. package/dist/Physics/Services/PhysicsWorldService.js +1 -1
  268. package/dist/Physics/Services/PhysicsWorldService.js.map +1 -1
  269. package/dist/Physics/Utils/ParamsUtils.js.map +1 -1
  270. package/dist/Physics/Utils/PhysicsMovementUtils.d.ts +2 -2
  271. package/dist/Physics/Utils/PhysicsMovementUtils.js +1 -1
  272. package/dist/Physics/Utils/PhysicsMovementUtils.js.map +1 -1
  273. package/dist/Renderer/Adapters/ConfigToParams.js.map +1 -1
  274. package/dist/Renderer/Adapters/EntityToConfig.js.map +1 -1
  275. package/dist/Renderer/Factories/RendererFactory.js.map +1 -1
  276. package/dist/Renderer/Loop/RendererLoopEffect.js.map +1 -1
  277. package/dist/Renderer/Mixins/WithThreeJsRendererParamsAccessors.js.map +1 -1
  278. package/dist/Renderer/Mixins/WithThreeJsRendererPropsAccessors.js.map +1 -1
  279. package/dist/Renderer/Registries/RendererRegistry.js.map +1 -1
  280. package/dist/Renderer/Services/RendererService.js.map +1 -1
  281. package/dist/Renderer/Wrappers/Accessors.js.map +1 -1
  282. package/dist/Renderer/Wrappers/RendererWrapper.js.map +1 -1
  283. package/dist/Scene/Adapters/ConfigToParams.js.map +1 -1
  284. package/dist/Scene/Adapters/EntityToConfig.js.map +1 -1
  285. package/dist/Scene/Factories/SceneFactory.js.map +1 -1
  286. package/dist/Scene/Registries/SceneRegistry.js.map +1 -1
  287. package/dist/Scene/Services/ScenesService.js.map +1 -1
  288. package/dist/Scene/Wrappers/SceneWrapper.js.map +1 -1
  289. package/dist/Space/Adapters/ConfigToParams.js.map +1 -1
  290. package/dist/Space/Adapters/EntityToConfig.js.map +1 -1
  291. package/dist/Space/Entities/Space.js.map +1 -1
  292. package/dist/Space/Entities/SpaceFromConfig.js.map +1 -1
  293. package/dist/Space/Factories/SpaceFactory.js.map +1 -1
  294. package/dist/Space/Registries/SpaceRegistry.js.map +1 -1
  295. package/dist/Space/Services/SpaceService.js.map +1 -1
  296. package/dist/Space/Utils/CanvasUtils.js.map +1 -1
  297. package/dist/Space/Utils/CreateEntitiesUtils.js.map +1 -1
  298. package/dist/Space/Utils/CreateLoopsUtils.js.map +1 -1
  299. package/dist/Space/Utils/LoadResourcesUtils.js.map +1 -1
  300. package/dist/Space/Utils/PrepareServicesUtils.js.map +1 -1
  301. package/dist/Space/Utils/SchemaValidationUtils.js.map +1 -1
  302. package/dist/Space/Validators/SchemasValidator.js.map +1 -1
  303. package/dist/Space/Validators/ValidateConfig.js.map +1 -1
  304. package/dist/Space/Validators/ValidateSpace.js.map +1 -1
  305. package/dist/Spatial/Adapters/ConfigToParams.js.map +1 -1
  306. package/dist/Spatial/Adapters/ConfigToParamsSpatialData.js.map +1 -1
  307. package/dist/Spatial/Adapters/EntityToConfig.js.map +1 -1
  308. package/dist/Spatial/Factories/SpatialGridFactory.js.map +1 -1
  309. package/dist/Spatial/Mixins/WithReactivePosition.js.map +1 -1
  310. package/dist/Spatial/Mixins/WithReactiveRotation.js.map +1 -1
  311. package/dist/Spatial/Mixins/WithSpatial.js.map +1 -1
  312. package/dist/Spatial/Mixins/WithUpdateSpatialCell.js.map +1 -1
  313. package/dist/Spatial/Registries/SpatialGridRegistry.js.map +1 -1
  314. package/dist/Spatial/Services/SpatialGridService.js.map +1 -1
  315. package/dist/Spatial/Services/SpatialHelper.d.ts +1 -1
  316. package/dist/Spatial/Services/SpatialHelper.js.map +1 -1
  317. package/dist/Spatial/Wrappers/SpatialCellWrapper.js.map +1 -1
  318. package/dist/Spatial/Wrappers/SpatialGridWrapper.js.map +1 -1
  319. package/dist/Text/Adapters/ConfigToParams.js.map +1 -1
  320. package/dist/Text/Adapters/EntityToConfig.js.map +1 -1
  321. package/dist/Text/Factories/TextFactory.js.map +1 -1
  322. package/dist/Text/Loop/TextLoopEffect.js.map +1 -1
  323. package/dist/Text/Models/TText2dRenderer.d.ts +1 -1
  324. package/dist/Text/Models/TText2dWrapper.d.ts +1 -1
  325. package/dist/Text/Models/TText3dRenderer.d.ts +1 -1
  326. package/dist/Text/Models/TText3dWrapper.d.ts +1 -1
  327. package/dist/Text/Models/TTextRenderer.d.ts +2 -2
  328. package/dist/Text/Models/TTextWrapper.d.ts +2 -2
  329. package/dist/Text/Registries/Text2dRegistry.js.map +1 -1
  330. package/dist/Text/Registries/Text2dRendererRegistry.js.map +1 -1
  331. package/dist/Text/Registries/Text3dRegistry.js.map +1 -1
  332. package/dist/Text/Registries/Text3dRendererRegistry.js.map +1 -1
  333. package/dist/Text/Registries/Text3dTextureRegistry.js.map +1 -1
  334. package/dist/Text/Renderers/Text2dRenderer.js.map +1 -1
  335. package/dist/Text/Renderers/Text3dRenderer.js.map +1 -1
  336. package/dist/Text/Renderers/TextRendererBuilder.d.ts +2 -2
  337. package/dist/Text/Renderers/TextRendererBuilder.js.map +1 -1
  338. package/dist/Text/Services/TextService.js.map +1 -1
  339. package/dist/Text/TransformDrive/TextTransformDrive.js.map +1 -1
  340. package/dist/Text/Utils/TextUtils.js.map +1 -1
  341. package/dist/Text/Wrappers/Accessors.js.map +1 -1
  342. package/dist/Text/Wrappers/Text2dWrapper.js.map +1 -1
  343. package/dist/Text/Wrappers/Text3dTextureWrapper.js.map +1 -1
  344. package/dist/Text/Wrappers/Text3dWrapper.js.map +1 -1
  345. package/dist/Text/Wrappers/TextTextureWrapper.js.map +1 -1
  346. package/dist/Text/Wrappers/TextWrapper.d.ts +2 -2
  347. package/dist/Text/Wrappers/TextWrapper.js.map +1 -1
  348. package/dist/Text/Wrappers/TextWrapperBuilder.js.map +1 -1
  349. package/dist/Text/Wrappers/TextWrapperHelper.js.map +1 -1
  350. package/dist/Texture/Loaders/TexturesLoader.js.map +1 -1
  351. package/dist/Texture/Registries/TextureMetaInfoRegistry.js.map +1 -1
  352. package/dist/Texture/Registries/TextureResourceAsyncRegistry.js.map +1 -1
  353. package/dist/Texture/Services/TextureService.js.map +1 -1
  354. package/dist/Texture/Utils/TextureServiceHelper.js.map +1 -1
  355. package/dist/ThreeLib/Utils/Object3dUtils.js.map +1 -1
  356. package/dist/TransformDrive/Adapters/EntityToConfig.js.map +1 -1
  357. package/dist/TransformDrive/Entities/Agents/AbstractTransformAgent.js.map +1 -1
  358. package/dist/TransformDrive/Entities/Agents/ConnectedTransformAgent.js.map +1 -1
  359. package/dist/TransformDrive/Entities/Agents/DefaultTransformAgent.js.map +1 -1
  360. package/dist/TransformDrive/Entities/Agents/KinematicTransformAgent.js.map +1 -1
  361. package/dist/TransformDrive/Entities/Agents/PhysicsTransformAgent.js.map +1 -1
  362. package/dist/TransformDrive/Entities/Connectors/DriveToTargetConnector.js.map +1 -1
  363. package/dist/TransformDrive/Entities/Drive/TransformDrive.js.map +1 -1
  364. package/dist/TransformDrive/Factories/TransformDriveFactory.js.map +1 -1
  365. package/dist/TransformDrive/Mixins/WithMutablePositionConnector.js.map +1 -1
  366. package/dist/TransformDrive/Mixins/WithMutableRotationConnector.js.map +1 -1
  367. package/dist/TransformDrive/Mixins/WithMutableScaleConnector.js.map +1 -1
  368. package/dist/TransformDrive/Mixins/WithProxyTransform.js.map +1 -1
  369. package/dist/TransformDrive/Registries/TransformDriveRegistry.js.map +1 -1
  370. package/dist/TransformDrive/Services/TransformDriveService.js.map +1 -1
  371. package/dist/TransformDrive/Utils/ActorDriveUtils.js.map +1 -1
  372. package/dist/TransformDrive/Utils/AgentUtils.js.map +1 -1
  373. package/dist/TransformDrive/Utils/KinematicAgentUtils.js.map +1 -1
  374. package/dist/TransformDrive/Utils/PhysicsTransformAgentUtils.d.ts +1 -1
  375. package/dist/TransformDrive/Utils/PhysicsTransformAgentUtils.js.map +1 -1
  376. package/dist/TransformDrive/Utils/TransformDriveUtils.js.map +1 -1
  377. package/dist/Utils/CheckUtils.js.map +1 -1
  378. package/dist/Utils/CoordsUtils.js.map +1 -1
  379. package/dist/Utils/DateTimeUtils.d.ts +1 -1
  380. package/dist/Utils/DestroyUtils.js.map +1 -1
  381. package/dist/Utils/DomUtils.js.map +1 -1
  382. package/dist/Utils/EntityUtils.js.map +1 -1
  383. package/dist/Utils/RegistryAsyncUtils.js.map +1 -1
  384. package/dist/Utils/RegistryUtils.js.map +1 -1
  385. package/dist/Utils/RxJsUtils.js.map +1 -1
  386. package/dist/Utils/ScreenUtils.js.map +1 -1
  387. package/dist/Utils/TagsUtils.js.map +1 -1
  388. package/dist/Utils/TransformUtils.js.map +1 -1
  389. package/dist/Utils/WrapperHelpers.d.ts +1 -1
  390. package/dist/Utils/WrapperHelpers.js.map +1 -1
  391. package/dist/assets/Loop.worker-D1bMWlsN.js.map +1 -1
  392. package/dist/packages/anarchy-shared/src/Utils/AsyncUtils.js.map +1 -1
  393. package/dist/packages/anarchy-shared/src/Utils/CssUtils.js.map +1 -1
  394. package/dist/packages/anarchy-shared/src/Utils/ObjectUtils.js.map +1 -1
  395. package/legal/NOTICE.md +1 -1
  396. package/legal/THIRD_PARTY_LICENSES.md +1 -1
  397. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ActorUtils.js","sources":["../../../src/Actor/Utils/ActorUtils.ts"],"sourcesContent":["import type { TActor, TActorParams } from '@Anarchy/Engine/Actor/Models';\nimport type { TSpatialGridService, TSpatialGridWrapper } from '@Anarchy/Engine/Spatial';\nimport { isNotDefined } from '@Anarchy/Shared/Utils';\n\nexport const isActorHasPhysicsBody = (actor: TActor): boolean => actor.drive.physics.physicsBody$.value !== undefined;\n\nexport function applySpatialGrid(params: TActorParams, actor: TActor, spatialGridService: TSpatialGridService): void {\n if (isNotDefined(params.spatial.grid)) return;\n\n const gridName: string | undefined = params.spatial.grid.getName();\n if (isNotDefined(gridName)) throw new Error(`Cannot add actor (id: \"${actor.id}\") to spatial grid: spatial grid name is not defined`);\n\n const grid: TSpatialGridWrapper = spatialGridService.getRegistry().getByName(gridName);\n\n actor.spatial.setGrid(grid);\n grid.addActor(actor);\n}\n\nexport function startCollisions(actor: TActor): void {\n if (isNotDefined(actor.collisions) || !actor.collisions.autoUpdate$.value) return;\n actor.collisions.start(actor);\n}\n"],"names":["isActorHasPhysicsBody","actor","drive","physics","physicsBody$","value","applySpatialGrid","params","spatialGridService","isNotDefined","spatial","grid","gridName","getName","Error","id","getRegistry","getByName","setGrid","addActor","startCollisions","collisions","autoUpdate$","start"],"mappings":"gFAIO,MAAMA,sBAAyBC,YAAsE,IAA3CA,MAAMC,MAAMC,QAAQC,aAAaC,MAE3F,SAASC,iBAAiBC,OAAsBN,MAAeO,oBACpE,GAAIC,aAAaF,OAAOG,QAAQC,MAAO,OAEvC,MAAMC,SAA+BL,OAAOG,QAAQC,KAAKE,UACzD,GAAIJ,aAAaG,UAAW,MAAM,IAAIE,MAAM,0BAA0Bb,MAAMc,0DAE5E,MAAMJ,KAA4BH,mBAAmBQ,cAAcC,UAAUL,UAE7EX,MAAMS,QAAQQ,QAAQP,MACtBA,KAAKQ,SAASlB,MAChB,CAEO,SAASmB,gBAAgBnB,QAC1BQ,aAAaR,MAAMoB,aAAgBpB,MAAMoB,WAAWC,YAAYjB,OACpEJ,MAAMoB,WAAWE,MAAMtB,MACzB"}
1
+ {"version":3,"file":"ActorUtils.js","sources":["../../../src/Actor/Utils/ActorUtils.ts"],"sourcesContent":["import type { TActor, TActorParams } from '@hellpig/anarchy-engine/Actor/Models';\nimport type { TSpatialGridService, TSpatialGridWrapper } from '@hellpig/anarchy-engine/Spatial';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\n\nexport const isActorHasPhysicsBody = (actor: TActor): boolean => actor.drive.physics.physicsBody$.value !== undefined;\n\nexport function applySpatialGrid(params: TActorParams, actor: TActor, spatialGridService: TSpatialGridService): void {\n if (isNotDefined(params.spatial.grid)) return;\n\n const gridName: string | undefined = params.spatial.grid.getName();\n if (isNotDefined(gridName)) throw new Error(`Cannot add actor (id: \"${actor.id}\") to spatial grid: spatial grid name is not defined`);\n\n const grid: TSpatialGridWrapper = spatialGridService.getRegistry().getByName(gridName);\n\n actor.spatial.setGrid(grid);\n grid.addActor(actor);\n}\n\nexport function startCollisions(actor: TActor): void {\n if (isNotDefined(actor.collisions) || !actor.collisions.autoUpdate$.value) return;\n actor.collisions.start(actor);\n}\n"],"names":["isActorHasPhysicsBody","actor","drive","physics","physicsBody$","value","applySpatialGrid","params","spatialGridService","isNotDefined","spatial","grid","gridName","getName","Error","id","getRegistry","getByName","setGrid","addActor","startCollisions","collisions","autoUpdate$","start"],"mappings":"gFAIO,MAAMA,sBAAyBC,YAAsE,IAA3CA,MAAMC,MAAMC,QAAQC,aAAaC,MAE3F,SAASC,iBAAiBC,OAAsBN,MAAeO,oBACpE,GAAIC,aAAaF,OAAOG,QAAQC,MAAO,OAEvC,MAAMC,SAA+BL,OAAOG,QAAQC,KAAKE,UACzD,GAAIJ,aAAaG,UAAW,MAAM,IAAIE,MAAM,0BAA0Bb,MAAMc,0DAE5E,MAAMJ,KAA4BH,mBAAmBQ,cAAcC,UAAUL,UAE7EX,MAAMS,QAAQQ,QAAQP,MACtBA,KAAKQ,SAASlB,MAChB,CAEO,SAASmB,gBAAgBnB,QAC1BQ,aAAaR,MAAMoB,aAAgBpB,MAAMoB,WAAWC,YAAYjB,OACpEJ,MAAMoB,WAAWE,MAAMtB,MACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Animations/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnimationStateConfig } from '@Anarchy/Engine/Animations/Models';\nimport { filterOutEmptyFields } from '@Anarchy/Shared/Utils';\nimport type { AnimationAction } from 'three';\n\nexport function animationActionToConfig(entity: AnimationAction): TAnimationStateConfig {\n return filterOutEmptyFields({\n name: entity.getClip().name,\n time: entity.time,\n weight: entity.weight,\n loop: entity.loop,\n repetitions: entity.repetitions,\n clampWhenFinished: entity.clampWhenFinished,\n timeScale: entity.timeScale,\n enabled: entity.enabled,\n paused: entity.paused\n });\n}\n"],"names":["animationActionToConfig","entity","filterOutEmptyFields","name","getClip","time","weight","loop","repetitions","clampWhenFinished","timeScale","enabled","paused"],"mappings":"yFAIO,SAASA,wBAAwBC,QACtC,OAAOC,qBAAqB,CAC1BC,KAAMF,OAAOG,UAAUD,KACvBE,KAAMJ,OAAOI,KACbC,OAAQL,OAAOK,OACfC,KAAMN,OAAOM,KACbC,YAAaP,OAAOO,YACpBC,kBAAmBR,OAAOQ,kBAC1BC,UAAWT,OAAOS,UAClBC,QAASV,OAAOU,QAChBC,OAAQX,OAAOW,QAEnB"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Animations/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnimationStateConfig } from '@hellpig/anarchy-engine/Animations/Models';\nimport { filterOutEmptyFields } from '@hellpig/anarchy-shared/Utils';\nimport type { AnimationAction } from 'three';\n\nexport function animationActionToConfig(entity: AnimationAction): TAnimationStateConfig {\n return filterOutEmptyFields({\n name: entity.getClip().name,\n time: entity.time,\n weight: entity.weight,\n loop: entity.loop,\n repetitions: entity.repetitions,\n clampWhenFinished: entity.clampWhenFinished,\n timeScale: entity.timeScale,\n enabled: entity.enabled,\n paused: entity.paused\n });\n}\n"],"names":["animationActionToConfig","entity","filterOutEmptyFields","name","getClip","time","weight","loop","repetitions","clampWhenFinished","timeScale","enabled","paused"],"mappings":"yFAIO,SAASA,wBAAwBC,QACtC,OAAOC,qBAAqB,CAC1BC,KAAMF,OAAOG,UAAUD,KACvBE,KAAMJ,OAAOI,KACbC,OAAQL,OAAOK,OACfC,KAAMN,OAAOM,KACbC,YAAaP,OAAOO,YACpBC,kBAAmBR,OAAOQ,kBAC1BC,UAAWT,OAAOS,UAClBC,QAASV,OAAOU,QAChBC,OAAQX,OAAOW,QAEnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationsLoader.js","sources":["../../../src/Animations/Loader/AnimationsLoader.ts"],"sourcesContent":["import { LoaderType } from '@Anarchy/Engine/Abstract';\nimport type { TAnimations, TAnimationsLoader, TAnimationsMetaInfoRegistry, TAnimationsResourceAsyncRegistry, TAnimationsResourceConfig } from '@Anarchy/Engine/Animations/Models';\nimport type { TLoadingManagerWrapper } from '@Anarchy/Engine/LoadingManager';\nimport { Loader3dCore } from '@Anarchy/Engine/Models3d';\nimport type { TDracoLoaderSettings } from '@Anarchy/Engine/ThreeLib';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\n\nexport function AnimationsLoader(\n registry: TAnimationsResourceAsyncRegistry,\n metaInfoRegistry: TAnimationsMetaInfoRegistry,\n loadingManagerWrapper: TLoadingManagerWrapper,\n settings: TDracoLoaderSettings = {}\n): TAnimationsLoader {\n const loader: TAnimationsLoader = Loader3dCore(registry, metaInfoRegistry, LoaderType.Animations, loadingManagerWrapper, settings);\n\n //Actually, it's always loaded as GLTF, but we want to only animations (so do GLTF | TAnimations to suppress TS error)\n function applyParamsOnLoaded(loaded: TWriteable<GLTF | TAnimations>, options?: TAnimationsResourceConfig['options']): TAnimations {\n if (isNotDefined(options)) return (loaded as GLTF).animations;\n\n return (loaded as GLTF).animations;\n }\n\n loader.setOnLoadedFn(applyParamsOnLoaded);\n\n return loader;\n}\n"],"names":["AnimationsLoader","registry","metaInfoRegistry","loadingManagerWrapper","settings","loader","Loader3dCore","LoaderType","Animations","setOnLoadedFn","loaded","options","isNotDefined","animations"],"mappings":"gNASO,SAASA,iBACdC,SACAC,iBACAC,sBACAC,SAAiC,CAAA,GAEjC,MAAMC,OAA4BC,aAAaL,SAAUC,iBAAkBK,WAAWC,WAAYL,sBAAuBC,UAWzH,OAFAC,OAAOI,cANP,SAA6BC,OAAwCC,SACnE,OAAIC,aAAaD,SAAkBD,OAAgBG,UAGrD,GAIOR,MACT"}
1
+ {"version":3,"file":"AnimationsLoader.js","sources":["../../../src/Animations/Loader/AnimationsLoader.ts"],"sourcesContent":["import { LoaderType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAnimations, TAnimationsLoader, TAnimationsMetaInfoRegistry, TAnimationsResourceAsyncRegistry, TAnimationsResourceConfig } from '@hellpig/anarchy-engine/Animations/Models';\nimport type { TLoadingManagerWrapper } from '@hellpig/anarchy-engine/LoadingManager';\nimport { Loader3dCore } from '@hellpig/anarchy-engine/Models3d';\nimport type { TDracoLoaderSettings } from '@hellpig/anarchy-engine/ThreeLib';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { GLTF } from 'three/examples/jsm/loaders/GLTFLoader';\n\nexport function AnimationsLoader(\n registry: TAnimationsResourceAsyncRegistry,\n metaInfoRegistry: TAnimationsMetaInfoRegistry,\n loadingManagerWrapper: TLoadingManagerWrapper,\n settings: TDracoLoaderSettings = {}\n): TAnimationsLoader {\n const loader: TAnimationsLoader = Loader3dCore(registry, metaInfoRegistry, LoaderType.Animations, loadingManagerWrapper, settings);\n\n //Actually, it's always loaded as GLTF, but we want to only animations (so do GLTF | TAnimations to suppress TS error)\n function applyParamsOnLoaded(loaded: TWriteable<GLTF | TAnimations>, options?: TAnimationsResourceConfig['options']): TAnimations {\n if (isNotDefined(options)) return (loaded as GLTF).animations;\n\n return (loaded as GLTF).animations;\n }\n\n loader.setOnLoadedFn(applyParamsOnLoaded);\n\n return loader;\n}\n"],"names":["AnimationsLoader","registry","metaInfoRegistry","loadingManagerWrapper","settings","loader","Loader3dCore","LoaderType","Animations","setOnLoadedFn","loaded","options","isNotDefined","animations"],"mappings":"gNASO,SAASA,iBACdC,SACAC,iBACAC,sBACAC,SAAiC,CAAA,GAEjC,MAAMC,OAA4BC,aAAaL,SAAUC,iBAAkBK,WAAWC,WAAYL,sBAAuBC,UAWzH,OAFAC,OAAOI,cANP,SAA6BC,OAAwCC,SACnE,OAAIC,aAAaD,SAAkBD,OAAgBG,UAGrD,GAIOR,MACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationsMetaInfoRegistry.js","sources":["../../../src/Animations/Registries/AnimationsMetaInfoRegistry.ts"],"sourcesContent":["import { AbstractSimpleRegistry, RegistryType } from '@Anarchy/Engine/Abstract';\nimport type { TAnimationsMetaInfoRegistry, TAnimationsResourceConfig } from '@Anarchy/Engine/Animations/Models';\n\nexport function AnimationsMetaInfoRegistry(): TAnimationsMetaInfoRegistry {\n return AbstractSimpleRegistry<TAnimationsResourceConfig>(RegistryType.AnimationsMetaInfo);\n}\n"],"names":["AnimationsMetaInfoRegistry","AbstractSimpleRegistry","RegistryType","AnimationsMetaInfo"],"mappings":"2JAGO,SAASA,6BACd,OAAOC,uBAAkDC,aAAaC,mBACxE"}
1
+ {"version":3,"file":"AnimationsMetaInfoRegistry.js","sources":["../../../src/Animations/Registries/AnimationsMetaInfoRegistry.ts"],"sourcesContent":["import { AbstractSimpleRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAnimationsMetaInfoRegistry, TAnimationsResourceConfig } from '@hellpig/anarchy-engine/Animations/Models';\n\nexport function AnimationsMetaInfoRegistry(): TAnimationsMetaInfoRegistry {\n return AbstractSimpleRegistry<TAnimationsResourceConfig>(RegistryType.AnimationsMetaInfo);\n}\n"],"names":["AnimationsMetaInfoRegistry","AbstractSimpleRegistry","RegistryType","AnimationsMetaInfo"],"mappings":"2JAGO,SAASA,6BACd,OAAOC,uBAAkDC,aAAaC,mBACxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationsResourceAsyncRegistry.js","sources":["../../../src/Animations/Registries/AnimationsResourceAsyncRegistry.ts"],"sourcesContent":["import { AbstractResourceAsyncRegistry, RegistryType } from '@Anarchy/Engine/Abstract';\nimport type { TAnimations, TAnimationsResourceAsyncRegistry } from '@Anarchy/Engine/Animations/Models';\n\nexport function AnimationsResourceAsyncRegistry(): TAnimationsResourceAsyncRegistry {\n return AbstractResourceAsyncRegistry<TAnimations>(RegistryType.Animations);\n}\n"],"names":["AnimationsResourceAsyncRegistry","AbstractResourceAsyncRegistry","RegistryType","Animations"],"mappings":"yKAGO,SAASA,kCACd,OAAOC,8BAA2CC,aAAaC,WACjE"}
1
+ {"version":3,"file":"AnimationsResourceAsyncRegistry.js","sources":["../../../src/Animations/Registries/AnimationsResourceAsyncRegistry.ts"],"sourcesContent":["import { AbstractResourceAsyncRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAnimations, TAnimationsResourceAsyncRegistry } from '@hellpig/anarchy-engine/Animations/Models';\n\nexport function AnimationsResourceAsyncRegistry(): TAnimationsResourceAsyncRegistry {\n return AbstractResourceAsyncRegistry<TAnimations>(RegistryType.Animations);\n}\n"],"names":["AnimationsResourceAsyncRegistry","AbstractResourceAsyncRegistry","RegistryType","Animations"],"mappings":"yKAGO,SAASA,kCACd,OAAOC,8BAA2CC,aAAaC,WACjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnimationsService.js","sources":["../../../src/Animations/Services/AnimationsService.ts"],"sourcesContent":["import type { TAbstractService } from '@Anarchy/Engine/Abstract';\nimport { AbstractService } from '@Anarchy/Engine/Abstract';\nimport { AnimationsLoader } from '@Anarchy/Engine/Animations/Loader';\nimport type {\n TAnimationActions,\n TAnimationActionsPack,\n TAnimationsLoader,\n TAnimationsMetaInfoRegistry,\n TAnimationsResourceAsyncRegistry,\n TAnimationsResourceConfig,\n TAnimationsSerializeResourcesDependencies,\n TAnimationsService,\n TModel3dAnimations\n} from '@Anarchy/Engine/Animations/Models';\nimport type { TLoadingManagerWrapper } from '@Anarchy/Engine/LoadingManager';\nimport type { TDelta } from '@Anarchy/Engine/Loop';\nimport type { TDisposable } from '@Anarchy/Engine/Mixins';\nimport { withSerializeAllResources } from '@Anarchy/Engine/Mixins';\nimport type { TModel3d, TRawModel3d } from '@Anarchy/Engine/Models3d';\nimport type { TSpaceLoops, TSpaceSettings } from '@Anarchy/Engine/Space';\nimport { mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { Observable, Subscription } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport type { AnimationClip } from 'three';\nimport { AnimationMixer } from 'three';\n\nexport function AnimationsService(\n resourcesRegistry: TAnimationsResourceAsyncRegistry,\n metaInfoRegistry: TAnimationsMetaInfoRegistry,\n { renderLoop }: TSpaceLoops,\n loadingManagerWrapper: TLoadingManagerWrapper,\n settings: TSpaceSettings\n): TAnimationsService {\n const animationsLoader: TAnimationsLoader = AnimationsLoader(resourcesRegistry, metaInfoRegistry, loadingManagerWrapper, settings.threeJsSettings?.draco);\n const added$: Subject<TModel3dAnimations> = new Subject<TModel3dAnimations>();\n const subscriptions: Map<AnimationMixer, Subscription> = new Map<AnimationMixer, Subscription>();\n const disposable: ReadonlyArray<TDisposable> = [resourcesRegistry, animationsLoader];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n //If you want to create an animation action for a model that already has actions (and a mixer), provide that mixer here\n function createActions(model: TRawModel3d, animations: ReadonlyArray<AnimationClip> = [], customMixer?: AnimationMixer): TAnimationActionsPack {\n const mixer: AnimationMixer = customMixer ?? new AnimationMixer(model);\n const actions: TWriteable<TAnimationActions> = {};\n // eslint-disable-next-line functional/immutable-data\n animations.forEach((clip: AnimationClip): void => void (actions[clip.name] = mixer.clipAction(clip)));\n return { model, mixer, actions };\n }\n\n function startAutoUpdateMixer(model3d: TModel3d, updateTick$: Observable<TDelta> = renderLoop.tick$): TAnimationActionsPack | never {\n const mixer = model3d.getMixer();\n if (isNotDefined(mixer)) throw new Error(`Mixer is not defined for model3d (name: ${model3d.getName()}, id: ${model3d.id}})`);\n\n const subs$: Subscription = updateTick$.subscribe((delta) => mixer.update(delta));\n if (isDefined(subscriptions.get(mixer)))\n throw new Error(`AnimationsService: Cannot auto-update mixer twice: subscribe is already exist. Mixer relates to the mode3d (name: ${model3d.getName()}, id: ${model3d.id}})`);\n\n subscriptions.set(mixer, subs$);\n return { model: model3d.getRawModel3d(), mixer, actions: model3d.getActions() };\n }\n\n function stopAutoUpdateMixer(mixer: AnimationMixer): void | never {\n const subs$: Subscription | undefined = subscriptions.get(mixer);\n if (isNotDefined(subs$)) throw new Error('Mixer is not defined');\n subs$.unsubscribe();\n subscriptions.delete(mixer);\n }\n\n const destroySub$: Subscription = abstractService.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n added$.complete();\n subscriptions.forEach((subs$: Subscription): void => subs$.unsubscribe());\n\n resourcesRegistry.destroy$.next();\n });\n\n return mergeAll(abstractService, withSerializeAllResources<TAnimationsResourceConfig, TAnimationsSerializeResourcesDependencies>(resourcesRegistry, { metaInfoRegistry }), {\n createActions,\n added$: added$.asObservable(),\n startAutoUpdateMixer,\n stopAutoUpdateMixer,\n loadAsync: animationsLoader.loadAsync,\n loadFromConfigAsync: animationsLoader.loadFromConfigAsync,\n getResourceRegistry: (): TAnimationsResourceAsyncRegistry => resourcesRegistry,\n getMetaInfoRegistry: (): TAnimationsMetaInfoRegistry => metaInfoRegistry\n });\n}\n"],"names":["AnimationsService","resourcesRegistry","metaInfoRegistry","renderLoop","loadingManagerWrapper","settings","animationsLoader","AnimationsLoader","threeJsSettings","draco","added$","Subject","subscriptions","Map","abstractService","AbstractService","destroySub$","destroy$","subscribe","unsubscribe","complete","forEach","subs$","next","mergeAll","withSerializeAllResources","createActions","model","animations","customMixer","mixer","AnimationMixer","actions","clip","name","clipAction","asObservable","startAutoUpdateMixer","model3d","updateTick$","tick$","getMixer","isNotDefined","Error","getName","id","delta","update","isDefined","get","set","getRawModel3d","getActions","stopAutoUpdateMixer","delete","loadAsync","loadFromConfigAsync","getResourceRegistry","getMetaInfoRegistry"],"mappings":"sdA4BO,SAASA,kBACdC,kBACAC,kBACAC,WAAEA,YACFC,sBACAC,UAEA,MAAMC,iBAAsCC,iBAAiBN,kBAAmBC,iBAAkBE,sBAAuBC,SAASG,iBAAiBC,OAC7IC,OAAsC,IAAIC,QAC1CC,kBAAuDC,IAEvDC,gBAAoCC,gBADK,CAACd,kBAAmBK,mBA+B7DU,YAA4BF,gBAAgBG,SAASC,UAAU,KACnEF,YAAYG,cAEZT,OAAOU,WACPR,cAAcS,QAASC,OAA8BA,MAAMH,eAE3DlB,kBAAkBgB,SAASM,SAG7B,OAAOC,SAASV,gBAAiBW,0BAAgGxB,kBAAmB,CAAEC,oCAAqB,CACzKwB,cArCF,SAAuBC,MAAoBC,WAA2C,GAAIC,aACxF,MAAMC,MAAwBD,aAAe,IAAIE,eAAeJ,OAC1DK,QAAyC,CAAA,EAG/C,OADAJ,WAAWP,QAASY,OAAoCD,QAAQC,KAAKC,MAAQJ,MAAMK,WAAWF,QACvF,CAAEN,YAAOG,YAAOE,gBACzB,EAgCEtB,OAAQA,OAAO0B,eACfC,qBA/BF,SAA8BC,QAAmBC,YAAkCpC,WAAWqC,OAC5F,MAAMV,MAAQQ,QAAQG,WACtB,GAAIC,aAAaZ,OAAQ,MAAM,IAAIa,MAAM,2CAA2CL,QAAQM,kBAAkBN,QAAQO,QAEtH,MAAMvB,MAAsBiB,YAAYrB,UAAW4B,OAAUhB,MAAMiB,OAAOD,QAC1E,GAAIE,UAAUpC,cAAcqC,IAAInB,QAC9B,MAAM,IAAIa,MAAM,qHAAqHL,QAAQM,kBAAkBN,QAAQO,QAGzK,OADAjC,cAAcsC,IAAIpB,MAAOR,OAClB,CAAEK,MAAOW,QAAQa,gBAAiBrB,YAAOE,QAASM,QAAQc,aACnE,EAsBEC,oBApBF,SAA6BvB,OAC3B,MAAMR,MAAkCV,cAAcqC,IAAInB,OAC1D,GAAIY,aAAapB,OAAQ,MAAM,IAAIqB,MAAM,wBACzCrB,MAAMH,cACNP,cAAc0C,OAAOxB,MACvB,EAgBEyB,UAAWjD,iBAAiBiD,UAC5BC,oBAAqBlD,iBAAiBkD,oBACtCC,oBAAqB,IAAwCxD,kBAC7DyD,oBAAqB,IAAmCxD,kBAE5D"}
1
+ {"version":3,"file":"AnimationsService.js","sources":["../../../src/Animations/Services/AnimationsService.ts"],"sourcesContent":["import type { TAbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport { AnimationsLoader } from '@hellpig/anarchy-engine/Animations/Loader';\nimport type {\n TAnimationActions,\n TAnimationActionsPack,\n TAnimationsLoader,\n TAnimationsMetaInfoRegistry,\n TAnimationsResourceAsyncRegistry,\n TAnimationsResourceConfig,\n TAnimationsSerializeResourcesDependencies,\n TAnimationsService,\n TModel3dAnimations\n} from '@hellpig/anarchy-engine/Animations/Models';\nimport type { TLoadingManagerWrapper } from '@hellpig/anarchy-engine/LoadingManager';\nimport type { TDelta } from '@hellpig/anarchy-engine/Loop';\nimport type { TDisposable } from '@hellpig/anarchy-engine/Mixins';\nimport { withSerializeAllResources } from '@hellpig/anarchy-engine/Mixins';\nimport type { TModel3d, TRawModel3d } from '@hellpig/anarchy-engine/Models3d';\nimport type { TSpaceLoops, TSpaceSettings } from '@hellpig/anarchy-engine/Space';\nimport { mergeAll } from '@hellpig/anarchy-engine/Utils';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Observable, Subscription } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport type { AnimationClip } from 'three';\nimport { AnimationMixer } from 'three';\n\nexport function AnimationsService(\n resourcesRegistry: TAnimationsResourceAsyncRegistry,\n metaInfoRegistry: TAnimationsMetaInfoRegistry,\n { renderLoop }: TSpaceLoops,\n loadingManagerWrapper: TLoadingManagerWrapper,\n settings: TSpaceSettings\n): TAnimationsService {\n const animationsLoader: TAnimationsLoader = AnimationsLoader(resourcesRegistry, metaInfoRegistry, loadingManagerWrapper, settings.threeJsSettings?.draco);\n const added$: Subject<TModel3dAnimations> = new Subject<TModel3dAnimations>();\n const subscriptions: Map<AnimationMixer, Subscription> = new Map<AnimationMixer, Subscription>();\n const disposable: ReadonlyArray<TDisposable> = [resourcesRegistry, animationsLoader];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n //If you want to create an animation action for a model that already has actions (and a mixer), provide that mixer here\n function createActions(model: TRawModel3d, animations: ReadonlyArray<AnimationClip> = [], customMixer?: AnimationMixer): TAnimationActionsPack {\n const mixer: AnimationMixer = customMixer ?? new AnimationMixer(model);\n const actions: TWriteable<TAnimationActions> = {};\n // eslint-disable-next-line functional/immutable-data\n animations.forEach((clip: AnimationClip): void => void (actions[clip.name] = mixer.clipAction(clip)));\n return { model, mixer, actions };\n }\n\n function startAutoUpdateMixer(model3d: TModel3d, updateTick$: Observable<TDelta> = renderLoop.tick$): TAnimationActionsPack | never {\n const mixer = model3d.getMixer();\n if (isNotDefined(mixer)) throw new Error(`Mixer is not defined for model3d (name: ${model3d.getName()}, id: ${model3d.id}})`);\n\n const subs$: Subscription = updateTick$.subscribe((delta) => mixer.update(delta));\n if (isDefined(subscriptions.get(mixer)))\n throw new Error(`AnimationsService: Cannot auto-update mixer twice: subscribe is already exist. Mixer relates to the mode3d (name: ${model3d.getName()}, id: ${model3d.id}})`);\n\n subscriptions.set(mixer, subs$);\n return { model: model3d.getRawModel3d(), mixer, actions: model3d.getActions() };\n }\n\n function stopAutoUpdateMixer(mixer: AnimationMixer): void | never {\n const subs$: Subscription | undefined = subscriptions.get(mixer);\n if (isNotDefined(subs$)) throw new Error('Mixer is not defined');\n subs$.unsubscribe();\n subscriptions.delete(mixer);\n }\n\n const destroySub$: Subscription = abstractService.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n added$.complete();\n subscriptions.forEach((subs$: Subscription): void => subs$.unsubscribe());\n\n resourcesRegistry.destroy$.next();\n });\n\n return mergeAll(abstractService, withSerializeAllResources<TAnimationsResourceConfig, TAnimationsSerializeResourcesDependencies>(resourcesRegistry, { metaInfoRegistry }), {\n createActions,\n added$: added$.asObservable(),\n startAutoUpdateMixer,\n stopAutoUpdateMixer,\n loadAsync: animationsLoader.loadAsync,\n loadFromConfigAsync: animationsLoader.loadFromConfigAsync,\n getResourceRegistry: (): TAnimationsResourceAsyncRegistry => resourcesRegistry,\n getMetaInfoRegistry: (): TAnimationsMetaInfoRegistry => metaInfoRegistry\n });\n}\n"],"names":["AnimationsService","resourcesRegistry","metaInfoRegistry","renderLoop","loadingManagerWrapper","settings","animationsLoader","AnimationsLoader","threeJsSettings","draco","added$","Subject","subscriptions","Map","abstractService","AbstractService","destroySub$","destroy$","subscribe","unsubscribe","complete","forEach","subs$","next","mergeAll","withSerializeAllResources","createActions","model","animations","customMixer","mixer","AnimationMixer","actions","clip","name","clipAction","asObservable","startAutoUpdateMixer","model3d","updateTick$","tick$","getMixer","isNotDefined","Error","getName","id","delta","update","isDefined","get","set","getRawModel3d","getActions","stopAutoUpdateMixer","delete","loadAsync","loadFromConfigAsync","getResourceRegistry","getMetaInfoRegistry"],"mappings":"sdA4BO,SAASA,kBACdC,kBACAC,kBACAC,WAAEA,YACFC,sBACAC,UAEA,MAAMC,iBAAsCC,iBAAiBN,kBAAmBC,iBAAkBE,sBAAuBC,SAASG,iBAAiBC,OAC7IC,OAAsC,IAAIC,QAC1CC,kBAAuDC,IAEvDC,gBAAoCC,gBADK,CAACd,kBAAmBK,mBA+B7DU,YAA4BF,gBAAgBG,SAASC,UAAU,KACnEF,YAAYG,cAEZT,OAAOU,WACPR,cAAcS,QAASC,OAA8BA,MAAMH,eAE3DlB,kBAAkBgB,SAASM,SAG7B,OAAOC,SAASV,gBAAiBW,0BAAgGxB,kBAAmB,CAAEC,oCAAqB,CACzKwB,cArCF,SAAuBC,MAAoBC,WAA2C,GAAIC,aACxF,MAAMC,MAAwBD,aAAe,IAAIE,eAAeJ,OAC1DK,QAAyC,CAAA,EAG/C,OADAJ,WAAWP,QAASY,OAAoCD,QAAQC,KAAKC,MAAQJ,MAAMK,WAAWF,QACvF,CAAEN,YAAOG,YAAOE,gBACzB,EAgCEtB,OAAQA,OAAO0B,eACfC,qBA/BF,SAA8BC,QAAmBC,YAAkCpC,WAAWqC,OAC5F,MAAMV,MAAQQ,QAAQG,WACtB,GAAIC,aAAaZ,OAAQ,MAAM,IAAIa,MAAM,2CAA2CL,QAAQM,kBAAkBN,QAAQO,QAEtH,MAAMvB,MAAsBiB,YAAYrB,UAAW4B,OAAUhB,MAAMiB,OAAOD,QAC1E,GAAIE,UAAUpC,cAAcqC,IAAInB,QAC9B,MAAM,IAAIa,MAAM,qHAAqHL,QAAQM,kBAAkBN,QAAQO,QAGzK,OADAjC,cAAcsC,IAAIpB,MAAOR,OAClB,CAAEK,MAAOW,QAAQa,gBAAiBrB,YAAOE,QAASM,QAAQc,aACnE,EAsBEC,oBApBF,SAA6BvB,OAC3B,MAAMR,MAAkCV,cAAcqC,IAAInB,OAC1D,GAAIY,aAAapB,OAAQ,MAAM,IAAIqB,MAAM,wBACzCrB,MAAMH,cACNP,cAAc0C,OAAOxB,MACvB,EAgBEyB,UAAWjD,iBAAiBiD,UAC5BC,oBAAqBlD,iBAAiBkD,oBACtCC,oBAAqB,IAAwCxD,kBAC7DyD,oBAAqB,IAAmCxD,kBAE5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"SerializationUtils.js","sources":["../../../src/Animations/Utils/SerializationUtils.ts"],"sourcesContent":["import type { TAnimationStateParams } from '@Anarchy/Engine/Animations/Models';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { AnimationAction } from 'three';\n\nexport function applyAnimationActionProperties(action: AnimationAction, { enabled, weight, loop, repetitions, clampWhenFinished, timeScale, time, paused }: TAnimationStateParams): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(enabled)) action.enabled = enabled;\n if (isDefined(weight)) action.setEffectiveWeight(weight);\n if (isDefined(loop) && isDefined(repetitions)) action.setLoop(loop, repetitions);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(clampWhenFinished)) action.clampWhenFinished = clampWhenFinished;\n if (isDefined(timeScale)) action.setEffectiveTimeScale(timeScale);\n\n action.reset();\n\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(time)) action.time = time;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(paused)) action.paused = paused;\n\n const isLeadAnimation: boolean = action.enabled && action.time > 0 && action.weight > 0.5;\n if (isLeadAnimation) action.play();\n}\n"],"names":["applyAnimationActionProperties","action","enabled","weight","loop","repetitions","clampWhenFinished","timeScale","time","paused","isDefined","setEffectiveWeight","setLoop","setEffectiveTimeScale","reset","play"],"mappings":"6EAIO,SAASA,+BAA+BC,QAAyBC,QAAEA,QAAAC,OAASA,OAAAC,KAAQA,KAAAC,YAAMA,YAAAC,kBAAaA,kBAAAC,UAAmBA,UAAAC,KAAWA,KAAAC,OAAMA,SAE5IC,UAAUR,WAAUD,OAAOC,QAAUA,SACrCQ,UAAUP,SAASF,OAAOU,mBAAmBR,QAC7CO,UAAUN,OAASM,UAAUL,cAAcJ,OAAOW,QAAQR,KAAMC,aAEhEK,UAAUJ,qBAAoBL,OAAOK,kBAAoBA,mBACzDI,UAAUH,YAAYN,OAAOY,sBAAsBN,WAEvDN,OAAOa,QAGHJ,UAAUF,QAAOP,OAAOO,KAAOA,MAE/BE,UAAUD,UAASR,OAAOQ,OAASA,QAENR,OAAOC,SAAWD,OAAOO,KAAO,GAAKP,OAAOE,OAAS,WAC1DY,MAC9B"}
1
+ {"version":3,"file":"SerializationUtils.js","sources":["../../../src/Animations/Utils/SerializationUtils.ts"],"sourcesContent":["import type { TAnimationStateParams } from '@hellpig/anarchy-engine/Animations/Models';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { AnimationAction } from 'three';\n\nexport function applyAnimationActionProperties(action: AnimationAction, { enabled, weight, loop, repetitions, clampWhenFinished, timeScale, time, paused }: TAnimationStateParams): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(enabled)) action.enabled = enabled;\n if (isDefined(weight)) action.setEffectiveWeight(weight);\n if (isDefined(loop) && isDefined(repetitions)) action.setLoop(loop, repetitions);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(clampWhenFinished)) action.clampWhenFinished = clampWhenFinished;\n if (isDefined(timeScale)) action.setEffectiveTimeScale(timeScale);\n\n action.reset();\n\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(time)) action.time = time;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(paused)) action.paused = paused;\n\n const isLeadAnimation: boolean = action.enabled && action.time > 0 && action.weight > 0.5;\n if (isLeadAnimation) action.play();\n}\n"],"names":["applyAnimationActionProperties","action","enabled","weight","loop","repetitions","clampWhenFinished","timeScale","time","paused","isDefined","setEffectiveWeight","setLoop","setEffectiveTimeScale","reset","play"],"mappings":"6EAIO,SAASA,+BAA+BC,QAAyBC,QAAEA,QAAAC,OAASA,OAAAC,KAAQA,KAAAC,YAAMA,YAAAC,kBAAaA,kBAAAC,UAAmBA,UAAAC,KAAWA,KAAAC,OAAMA,SAE5IC,UAAUR,WAAUD,OAAOC,QAAUA,SACrCQ,UAAUP,SAASF,OAAOU,mBAAmBR,QAC7CO,UAAUN,OAASM,UAAUL,cAAcJ,OAAOW,QAAQR,KAAMC,aAEhEK,UAAUJ,qBAAoBL,OAAOK,kBAAoBA,mBACzDI,UAAUH,YAAYN,OAAOY,sBAAsBN,WAEvDN,OAAOa,QAGHJ,UAAUF,QAAOP,OAAOO,KAAOA,MAE/BE,UAAUD,UAASR,OAAOQ,OAASA,QAENR,OAAOC,SAAWD,OAAOO,KAAO,GAAKP,OAAOE,OAAS,WAC1DY,MAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioConfigToParams.js","sources":["../../../src/Audio/Adapters/AudioConfigToParams.ts"],"sourcesContent":["import { Listeners } from '@Anarchy/Engine/Audio/Constants';\nimport type { TAnyAudioConfig, TAnyAudioParams, TAudio3dConfig, TAudio3dParams, TAudioConfigToParamsDependencies, TAudioResourceAsyncRegistry } from '@Anarchy/Engine/Audio/Models';\nimport { isAudio3dConfig } from '@Anarchy/Engine/Audio/Utils';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { Vector3 } from 'three';\n\nexport function audioConfigToParams(config: TAnyAudioConfig, { audioResourceAsyncRegistry, audioListenersRegistry }: TAudioConfigToParamsDependencies): TAnyAudioParams {\n const { position, ...rest } = config as TAudio3dConfig;\n\n const result: TAnyAudioParams = {\n ...rest,\n listener: audioListenersRegistry.findByKey(config.listener ?? Listeners.Main),\n audioSource: getAudio(config, audioResourceAsyncRegistry)\n };\n\n if (isAudio3dConfig(config)) {\n // eslint-disable-next-line functional/immutable-data\n (result as TWriteable<TAudio3dParams>).position = new Vector3(position.x, position.y);\n return result;\n }\n\n return result;\n}\n\nfunction getAudio(config: TAnyAudioConfig, audioResourceAsyncRegistry: TAudioResourceAsyncRegistry): AudioBuffer {\n return audioResourceAsyncRegistry.getByKey(config.audioSource);\n}\n"],"names":["audioConfigToParams","config","audioResourceAsyncRegistry","audioListenersRegistry","position","rest","result","listener","findByKey","Listeners","Main","audioSource","getAudio","isAudio3dConfig","Vector3","x","y","getByKey"],"mappings":"gIAMO,SAASA,oBAAoBC,QAAyBC,2BAAEA,2BAAAC,uBAA4BA,yBACzF,MAAMC,SAAEA,YAAaC,MAASJ,OAExBK,OAA0B,IAC3BD,KACHE,SAAUJ,uBAAuBK,UAAUP,OAAOM,UAAYE,UAAUC,MACxEC,YAAaC,SAASX,OAAQC,6BAGhC,OAAIW,gBAAgBZ,SAEjBK,OAAsCF,SAAW,IAAIU,QAAQV,SAASW,EAAGX,SAASY,GAC5EV,QAGFA,MACT,CAEA,SAASM,SAASX,OAAyBC,4BACzC,OAAOA,2BAA2Be,SAAShB,OAAOU,YACpD"}
1
+ {"version":3,"file":"AudioConfigToParams.js","sources":["../../../src/Audio/Adapters/AudioConfigToParams.ts"],"sourcesContent":["import { Listeners } from '@hellpig/anarchy-engine/Audio/Constants';\nimport type { TAnyAudioConfig, TAnyAudioParams, TAudio3dConfig, TAudio3dParams, TAudioConfigToParamsDependencies, TAudioResourceAsyncRegistry } from '@hellpig/anarchy-engine/Audio/Models';\nimport { isAudio3dConfig } from '@hellpig/anarchy-engine/Audio/Utils';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport { Vector3 } from 'three';\n\nexport function audioConfigToParams(config: TAnyAudioConfig, { audioResourceAsyncRegistry, audioListenersRegistry }: TAudioConfigToParamsDependencies): TAnyAudioParams {\n const { position, ...rest } = config as TAudio3dConfig;\n\n const result: TAnyAudioParams = {\n ...rest,\n listener: audioListenersRegistry.findByKey(config.listener ?? Listeners.Main),\n audioSource: getAudio(config, audioResourceAsyncRegistry)\n };\n\n if (isAudio3dConfig(config)) {\n // eslint-disable-next-line functional/immutable-data\n (result as TWriteable<TAudio3dParams>).position = new Vector3(position.x, position.y);\n return result;\n }\n\n return result;\n}\n\nfunction getAudio(config: TAnyAudioConfig, audioResourceAsyncRegistry: TAudioResourceAsyncRegistry): AudioBuffer {\n return audioResourceAsyncRegistry.getByKey(config.audioSource);\n}\n"],"names":["audioConfigToParams","config","audioResourceAsyncRegistry","audioListenersRegistry","position","rest","result","listener","findByKey","Listeners","Main","audioSource","getAudio","isAudio3dConfig","Vector3","x","y","getByKey"],"mappings":"gIAMO,SAASA,oBAAoBC,QAAyBC,2BAAEA,2BAAAC,uBAA4BA,yBACzF,MAAMC,SAAEA,YAAaC,MAASJ,OAExBK,OAA0B,IAC3BD,KACHE,SAAUJ,uBAAuBK,UAAUP,OAAOM,UAAYE,UAAUC,MACxEC,YAAaC,SAASX,OAAQC,6BAGhC,OAAIW,gBAAgBZ,SAEjBK,OAAsCF,SAAW,IAAIU,QAAQV,SAASW,EAAGX,SAASY,GAC5EV,QAGFA,MACT,CAEA,SAASM,SAASX,OAAyBC,4BACzC,OAAOA,2BAA2Be,SAAShB,OAAOU,YACpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Audio/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAbstractAudioWrapper, TAnyAudio, TAnyAudioConfig, TAudio3dConfig, TAudioConfigToParamsDependencies } from '@Anarchy/Engine/Audio/Models';\nimport { isAudio3dWrapper } from '@Anarchy/Engine/Audio/Utils';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport { filterOutEmptyFields, isNotDefined, omitInObjectWithoutMutation } from '@Anarchy/Shared/Utils';\n\nexport function audioEntityToConfig<T extends TAnyAudio>(entity: TAbstractAudioWrapper<T>, { audioResourceAsyncRegistry, audioListenersRegistry }: TAudioConfigToParamsDependencies): TAnyAudioConfig {\n const { volume$, loop$, speed$, pause$, seek$ } = entity;\n\n const audio3dConfig: TAudio3dConfig = isAudio3dWrapper(entity)\n ? {\n refDistance: entity.entity.getRefDistance(),\n rolloffFactor: entity.entity.getRolloffFactor(),\n maxDistance: entity.entity.getMaxDistance(),\n directionalCone: entity.directionalCone$.value,\n distanceModel: entity.entity.getDistanceModel(),\n performance: entity.getPerformance(),\n listener: audioListenersRegistry.findKeyByValue(entity.entity.listener),\n ...omitInObjectWithoutMutation(entity.drive.serialize(), ['rotation', 'scale'])\n }\n : ({} as any);\n\n if (isNotDefined(entity.entity.buffer)) throw new Error(`[Serialization] Audio: Cannot serialize Audio without audio buffer: \"${entity.name}\" (id: \"${entity.id}\")`);\n const audioSource: string = audioResourceAsyncRegistry.getKeyByValue(entity.entity.buffer);\n\n return filterOutEmptyFields({\n ...audio3dConfig,\n ...extractSerializableRegistrableFields(entity),\n volume: volume$.value,\n loop: loop$.value,\n speed: speed$.value,\n pause: pause$.value,\n seek: seek$.value,\n audioSource\n });\n}\n"],"names":["audioEntityToConfig","entity","audioResourceAsyncRegistry","audioListenersRegistry","volume$","loop$","speed$","pause$","seek$","audio3dConfig","isAudio3dWrapper","refDistance","getRefDistance","rolloffFactor","getRolloffFactor","maxDistance","getMaxDistance","directionalCone","directionalCone$","value","distanceModel","getDistanceModel","performance","getPerformance","listener","findKeyByValue","omitInObjectWithoutMutation","drive","serialize","isNotDefined","buffer","Error","name","id","audioSource","getKeyByValue","filterOutEmptyFields","extractSerializableRegistrableFields","volume","loop","speed","pause","seek"],"mappings":"0WAKO,SAASA,oBAAyCC,QAAkCC,2BAAEA,2BAAAC,uBAA4BA,yBACvH,MAAMC,QAAEA,QAAAC,MAASA,MAAAC,OAAOA,OAAAC,OAAQA,OAAAC,MAAQA,OAAUP,OAE5CQ,cAAgCC,iBAAiBT,QACnD,CACEU,YAAaV,OAAOA,OAAOW,iBAC3BC,cAAeZ,OAAOA,OAAOa,mBAC7BC,YAAad,OAAOA,OAAOe,iBAC3BC,gBAAiBhB,OAAOiB,iBAAiBC,MACzCC,cAAenB,OAAOA,OAAOoB,mBAC7BC,YAAarB,OAAOsB,iBACpBC,SAAUrB,uBAAuBsB,eAAexB,OAAOA,OAAOuB,aAC3DE,4BAA4BzB,OAAO0B,MAAMC,YAAa,CAAC,WAAY,WAEvE,CAAA,EAEL,GAAIC,aAAa5B,OAAOA,OAAO6B,QAAS,MAAM,IAAIC,MAAM,wEAAwE9B,OAAO+B,eAAe/B,OAAOgC,QAC7J,MAAMC,YAAsBhC,2BAA2BiC,cAAclC,OAAOA,OAAO6B,QAEnF,OAAOM,qBAAqB,IACvB3B,iBACA4B,qCAAqCpC,QACxCqC,OAAQlC,QAAQe,MAChBoB,KAAMlC,MAAMc,MACZqB,MAAOlC,OAAOa,MACdsB,MAAOlC,OAAOY,MACduB,KAAMlC,MAAMW,MACZe,yBAEJ"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Audio/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAbstractAudioWrapper, TAnyAudio, TAnyAudioConfig, TAudio3dConfig, TAudioConfigToParamsDependencies } from '@hellpig/anarchy-engine/Audio/Models';\nimport { isAudio3dWrapper } from '@hellpig/anarchy-engine/Audio/Utils';\nimport { extractSerializableRegistrableFields } from '@hellpig/anarchy-engine/Mixins';\nimport { filterOutEmptyFields, isNotDefined, omitInObjectWithoutMutation } from '@hellpig/anarchy-shared/Utils';\n\nexport function audioEntityToConfig<T extends TAnyAudio>(entity: TAbstractAudioWrapper<T>, { audioResourceAsyncRegistry, audioListenersRegistry }: TAudioConfigToParamsDependencies): TAnyAudioConfig {\n const { volume$, loop$, speed$, pause$, seek$ } = entity;\n\n const audio3dConfig: TAudio3dConfig = isAudio3dWrapper(entity)\n ? {\n refDistance: entity.entity.getRefDistance(),\n rolloffFactor: entity.entity.getRolloffFactor(),\n maxDistance: entity.entity.getMaxDistance(),\n directionalCone: entity.directionalCone$.value,\n distanceModel: entity.entity.getDistanceModel(),\n performance: entity.getPerformance(),\n listener: audioListenersRegistry.findKeyByValue(entity.entity.listener),\n ...omitInObjectWithoutMutation(entity.drive.serialize(), ['rotation', 'scale'])\n }\n : ({} as any);\n\n if (isNotDefined(entity.entity.buffer)) throw new Error(`[Serialization] Audio: Cannot serialize Audio without audio buffer: \"${entity.name}\" (id: \"${entity.id}\")`);\n const audioSource: string = audioResourceAsyncRegistry.getKeyByValue(entity.entity.buffer);\n\n return filterOutEmptyFields({\n ...audio3dConfig,\n ...extractSerializableRegistrableFields(entity),\n volume: volume$.value,\n loop: loop$.value,\n speed: speed$.value,\n pause: pause$.value,\n seek: seek$.value,\n audioSource\n });\n}\n"],"names":["audioEntityToConfig","entity","audioResourceAsyncRegistry","audioListenersRegistry","volume$","loop$","speed$","pause$","seek$","audio3dConfig","isAudio3dWrapper","refDistance","getRefDistance","rolloffFactor","getRolloffFactor","maxDistance","getMaxDistance","directionalCone","directionalCone$","value","distanceModel","getDistanceModel","performance","getPerformance","listener","findKeyByValue","omitInObjectWithoutMutation","drive","serialize","isNotDefined","buffer","Error","name","id","audioSource","getKeyByValue","filterOutEmptyFields","extractSerializableRegistrableFields","volume","loop","speed","pause","seek"],"mappings":"0WAKO,SAASA,oBAAyCC,QAAkCC,2BAAEA,2BAAAC,uBAA4BA,yBACvH,MAAMC,QAAEA,QAAAC,MAASA,MAAAC,OAAOA,OAAAC,OAAQA,OAAAC,MAAQA,OAAUP,OAE5CQ,cAAgCC,iBAAiBT,QACnD,CACEU,YAAaV,OAAOA,OAAOW,iBAC3BC,cAAeZ,OAAOA,OAAOa,mBAC7BC,YAAad,OAAOA,OAAOe,iBAC3BC,gBAAiBhB,OAAOiB,iBAAiBC,MACzCC,cAAenB,OAAOA,OAAOoB,mBAC7BC,YAAarB,OAAOsB,iBACpBC,SAAUrB,uBAAuBsB,eAAexB,OAAOA,OAAOuB,aAC3DE,4BAA4BzB,OAAO0B,MAAMC,YAAa,CAAC,WAAY,WAEvE,CAAA,EAEL,GAAIC,aAAa5B,OAAOA,OAAO6B,QAAS,MAAM,IAAIC,MAAM,wEAAwE9B,OAAO+B,eAAe/B,OAAOgC,QAC7J,MAAMC,YAAsBhC,2BAA2BiC,cAAclC,OAAOA,OAAO6B,QAEnF,OAAOM,qBAAqB,IACvB3B,iBACA4B,qCAAqCpC,QACxCqC,OAAQlC,QAAQe,MAChBoB,KAAMlC,MAAMc,MACZqB,MAAOlC,OAAOa,MACdsB,MAAOlC,OAAOY,MACduB,KAAMlC,MAAMW,MACZe,yBAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioFactory.js","sources":["../../../src/Audio/Factories/AudioFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { audioConfigToParams } from '@Anarchy/Engine/Audio/Adapters';\nimport type { TAnyAudioParams, TAnyAudioWrapper, TAudioFactory, TAudioServiceDependencies, TAudioWrapperDependencies } from '@Anarchy/Engine/Audio/Models';\nimport { isAudio3dParams } from '@Anarchy/Engine/Audio/Utils';\nimport { Audio3dWrapper, AudioWrapper } from '@Anarchy/Engine/Audio/Wrappers';\nimport type { TSpaceLoops } from '@Anarchy/Engine/Space';\n\nfunction create(params: TAnyAudioParams, loops: Pick<TSpaceLoops, 'audioLoop'> & TAudioServiceDependencies): TAnyAudioWrapper {\n if (isAudio3dParams(params)) return Audio3dWrapper(params, loops);\n else return AudioWrapper(params);\n}\n\nexport function AudioFactory(): TAudioFactory {\n const factory: TReactiveFactory<TAnyAudioWrapper, TAnyAudioParams, TAudioWrapperDependencies> = ReactiveFactory(FactoryType.Audio, create);\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: audioConfigToParams });\n}\n"],"names":["create","params","loops","isAudio3dParams","Audio3dWrapper","AudioWrapper","AudioFactory","factory","ReactiveFactory","FactoryType","Audio","Object","assign","configToParams","audioConfigToParams"],"mappings":"kXAQA,SAASA,OAAOC,OAAyBC,OACvC,OAAIC,gBAAgBF,QAAgBG,eAAeH,OAAQC,OAC/CG,aAAaJ,OAC3B,CAEO,SAASK,eACd,MAAMC,QAA0FC,gBAAgBC,YAAYC,MAAOV,QAEnI,OAAOW,OAAOC,OAAOL,QAAS,CAAEM,eAAgBC,qBAClD"}
1
+ {"version":3,"file":"AudioFactory.js","sources":["../../../src/Audio/Factories/AudioFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { audioConfigToParams } from '@hellpig/anarchy-engine/Audio/Adapters';\nimport type { TAnyAudioParams, TAnyAudioWrapper, TAudioFactory, TAudioServiceDependencies, TAudioWrapperDependencies } from '@hellpig/anarchy-engine/Audio/Models';\nimport { isAudio3dParams } from '@hellpig/anarchy-engine/Audio/Utils';\nimport { Audio3dWrapper, AudioWrapper } from '@hellpig/anarchy-engine/Audio/Wrappers';\nimport type { TSpaceLoops } from '@hellpig/anarchy-engine/Space';\n\nfunction create(params: TAnyAudioParams, loops: Pick<TSpaceLoops, 'audioLoop'> & TAudioServiceDependencies): TAnyAudioWrapper {\n if (isAudio3dParams(params)) return Audio3dWrapper(params, loops);\n else return AudioWrapper(params);\n}\n\nexport function AudioFactory(): TAudioFactory {\n const factory: TReactiveFactory<TAnyAudioWrapper, TAnyAudioParams, TAudioWrapperDependencies> = ReactiveFactory(FactoryType.Audio, create);\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: audioConfigToParams });\n}\n"],"names":["create","params","loops","isAudio3dParams","Audio3dWrapper","AudioWrapper","AudioFactory","factory","ReactiveFactory","FactoryType","Audio","Object","assign","configToParams","audioConfigToParams"],"mappings":"kXAQA,SAASA,OAAOC,OAAyBC,OACvC,OAAIC,gBAAgBF,QAAgBG,eAAeH,OAAQC,OAC/CG,aAAaJ,OAC3B,CAEO,SAASK,eACd,MAAMC,QAA0FC,gBAAgBC,YAAYC,MAAOV,QAEnI,OAAOW,OAAOC,OAAOL,QAAS,CAAEM,eAAgBC,qBAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioLoader.js","sources":["../../../src/Audio/Loader/AudioLoader.ts"],"sourcesContent":["import { AbstractLoader, LoaderType } from '@Anarchy/Engine/Abstract';\nimport type { TAudioLoader, TAudioMetaInfoRegistry, TAudioResourceAsyncRegistry } from '@Anarchy/Engine/Audio/Models';\nimport type { TLoadingManagerWrapper } from '@Anarchy/Engine/LoadingManager';\nimport { AudioLoader as ThreeAudioLoader } from 'three';\n\nexport function AudioLoader(registry: TAudioResourceAsyncRegistry, metaInfoRegistry: TAudioMetaInfoRegistry, loadingManagerWrapper: TLoadingManagerWrapper): TAudioLoader {\n const audioLoader: ThreeAudioLoader = new ThreeAudioLoader(loadingManagerWrapper.entity);\n return AbstractLoader(audioLoader, registry, metaInfoRegistry, LoaderType.Audio);\n}\n"],"names":["AudioLoader","registry","metaInfoRegistry","loadingManagerWrapper","audioLoader","ThreeAudioLoader","entity","AbstractLoader","LoaderType","Audio"],"mappings":"oLAKO,SAASA,YAAYC,SAAuCC,iBAA0CC,uBAC3G,MAAMC,YAAgC,IAAIC,cAAiBF,sBAAsBG,QACjF,OAAOC,eAAeH,YAAaH,SAAUC,iBAAkBM,WAAWC,MAC5E"}
1
+ {"version":3,"file":"AudioLoader.js","sources":["../../../src/Audio/Loader/AudioLoader.ts"],"sourcesContent":["import { AbstractLoader, LoaderType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAudioLoader, TAudioMetaInfoRegistry, TAudioResourceAsyncRegistry } from '@hellpig/anarchy-engine/Audio/Models';\nimport type { TLoadingManagerWrapper } from '@hellpig/anarchy-engine/LoadingManager';\nimport { AudioLoader as ThreeAudioLoader } from 'three';\n\nexport function AudioLoader(registry: TAudioResourceAsyncRegistry, metaInfoRegistry: TAudioMetaInfoRegistry, loadingManagerWrapper: TLoadingManagerWrapper): TAudioLoader {\n const audioLoader: ThreeAudioLoader = new ThreeAudioLoader(loadingManagerWrapper.entity);\n return AbstractLoader(audioLoader, registry, metaInfoRegistry, LoaderType.Audio);\n}\n"],"names":["AudioLoader","registry","metaInfoRegistry","loadingManagerWrapper","audioLoader","ThreeAudioLoader","entity","AbstractLoader","LoaderType","Audio"],"mappings":"oLAKO,SAASA,YAAYC,SAAuCC,iBAA0CC,uBAC3G,MAAMC,YAAgC,IAAIC,cAAiBF,sBAAsBG,QACjF,OAAOC,eAAeH,YAAaH,SAAUC,iBAAkBM,WAAWC,MAC5E"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioListenersRegistry.js","sources":["../../../src/Audio/Registries/AudioListenersRegistry.ts"],"sourcesContent":["import { AbstractSimpleRegistry, RegistryType } from '@Anarchy/Engine/Abstract';\nimport type { TAudioListenersRegistry } from '@Anarchy/Engine/Audio/Models';\nimport type { AudioListener } from 'three';\n\nexport function AudioListenersRegistry(): TAudioListenersRegistry {\n return AbstractSimpleRegistry<AudioListener>(RegistryType.AudioListeners);\n}\n"],"names":["AudioListenersRegistry","AbstractSimpleRegistry","RegistryType","AudioListeners"],"mappings":"2JAIO,SAASA,yBACd,OAAOC,uBAAsCC,aAAaC,eAC5D"}
1
+ {"version":3,"file":"AudioListenersRegistry.js","sources":["../../../src/Audio/Registries/AudioListenersRegistry.ts"],"sourcesContent":["import { AbstractSimpleRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAudioListenersRegistry } from '@hellpig/anarchy-engine/Audio/Models';\nimport type { AudioListener } from 'three';\n\nexport function AudioListenersRegistry(): TAudioListenersRegistry {\n return AbstractSimpleRegistry<AudioListener>(RegistryType.AudioListeners);\n}\n"],"names":["AudioListenersRegistry","AbstractSimpleRegistry","RegistryType","AudioListeners"],"mappings":"2JAIO,SAASA,yBACd,OAAOC,uBAAsCC,aAAaC,eAC5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioMetaInfoRegistry.js","sources":["../../../src/Audio/Registries/AudioMetaInfoRegistry.ts"],"sourcesContent":["import { AbstractSimpleRegistry, RegistryType } from '@Anarchy/Engine/Abstract';\nimport type { TAudioMetaInfoRegistry, TAudioResourceConfig } from '@Anarchy/Engine/Audio/Models';\n\nexport function AudioMetaInfoRegistry(): TAudioMetaInfoRegistry {\n return AbstractSimpleRegistry<TAudioResourceConfig>(RegistryType.AudioMetaInfo);\n}\n"],"names":["AudioMetaInfoRegistry","AbstractSimpleRegistry","RegistryType","AudioMetaInfo"],"mappings":"2JAGO,SAASA,wBACd,OAAOC,uBAA6CC,aAAaC,cACnE"}
1
+ {"version":3,"file":"AudioMetaInfoRegistry.js","sources":["../../../src/Audio/Registries/AudioMetaInfoRegistry.ts"],"sourcesContent":["import { AbstractSimpleRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAudioMetaInfoRegistry, TAudioResourceConfig } from '@hellpig/anarchy-engine/Audio/Models';\n\nexport function AudioMetaInfoRegistry(): TAudioMetaInfoRegistry {\n return AbstractSimpleRegistry<TAudioResourceConfig>(RegistryType.AudioMetaInfo);\n}\n"],"names":["AudioMetaInfoRegistry","AbstractSimpleRegistry","RegistryType","AudioMetaInfo"],"mappings":"2JAGO,SAASA,wBACd,OAAOC,uBAA6CC,aAAaC,cACnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioRegistry.js","sources":["../../../src/Audio/Registries/AudioRegistry.ts"],"sourcesContent":["import { AbstractEntityRegistry, RegistryType } from '@Anarchy/Engine/Abstract';\nimport type { TAnyAudioWrapper, TAudioRegistry } from '@Anarchy/Engine/Audio/Models';\n\nexport function AudioRegistry(): TAudioRegistry {\n return AbstractEntityRegistry<TAnyAudioWrapper>(RegistryType.Audio);\n}\n"],"names":["AudioRegistry","AbstractEntityRegistry","RegistryType","Audio"],"mappings":"2JAGO,SAASA,gBACd,OAAOC,uBAAyCC,aAAaC,MAC/D"}
1
+ {"version":3,"file":"AudioRegistry.js","sources":["../../../src/Audio/Registries/AudioRegistry.ts"],"sourcesContent":["import { AbstractEntityRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAnyAudioWrapper, TAudioRegistry } from '@hellpig/anarchy-engine/Audio/Models';\n\nexport function AudioRegistry(): TAudioRegistry {\n return AbstractEntityRegistry<TAnyAudioWrapper>(RegistryType.Audio);\n}\n"],"names":["AudioRegistry","AbstractEntityRegistry","RegistryType","Audio"],"mappings":"2JAGO,SAASA,gBACd,OAAOC,uBAAyCC,aAAaC,MAC/D"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioResourceAsyncRegistry.js","sources":["../../../src/Audio/Registries/AudioResourceAsyncRegistry.ts"],"sourcesContent":["import { AbstractResourceAsyncRegistry, RegistryType } from '@Anarchy/Engine/Abstract';\nimport type { TAudioResourceAsyncRegistry } from '@Anarchy/Engine/Audio/Models';\n\nexport function AudioResourceAsyncRegistry(): TAudioResourceAsyncRegistry {\n return AbstractResourceAsyncRegistry<AudioBuffer>(RegistryType.AudioRaw);\n}\n"],"names":["AudioResourceAsyncRegistry","AbstractResourceAsyncRegistry","RegistryType","AudioRaw"],"mappings":"yKAGO,SAASA,6BACd,OAAOC,8BAA2CC,aAAaC,SACjE"}
1
+ {"version":3,"file":"AudioResourceAsyncRegistry.js","sources":["../../../src/Audio/Registries/AudioResourceAsyncRegistry.ts"],"sourcesContent":["import { AbstractResourceAsyncRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TAudioResourceAsyncRegistry } from '@hellpig/anarchy-engine/Audio/Models';\n\nexport function AudioResourceAsyncRegistry(): TAudioResourceAsyncRegistry {\n return AbstractResourceAsyncRegistry<AudioBuffer>(RegistryType.AudioRaw);\n}\n"],"names":["AudioResourceAsyncRegistry","AbstractResourceAsyncRegistry","RegistryType","AudioRaw"],"mappings":"yKAGO,SAASA,6BACd,OAAOC,8BAA2CC,aAAaC,SACjE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioService.js","sources":["../../../src/Audio/Services/AudioService.ts"],"sourcesContent":["import type { TAbstractService } from '@Anarchy/Engine/Abstract';\nimport { AbstractService } from '@Anarchy/Engine/Abstract';\nimport { Listeners } from '@Anarchy/Engine/Audio/Constants';\nimport { AudioLoader } from '@Anarchy/Engine/Audio/Loader';\nimport type {\n TAnyAudioConfig,\n TAnyAudioWrapper,\n TAudioConfigToParamsDependencies,\n TAudioFactory,\n TAudioListenersRegistry,\n TAudioLoader,\n TAudioMetaInfoRegistry,\n TAudioRegistry,\n TAudioResourceAsyncRegistry,\n TAudioResourceConfig,\n TAudioSerializeResourcesDependencies,\n TAudioService,\n TAudioServiceDependencies,\n TAudioServiceWithCreate,\n TAudioServiceWithCreateFromConfig,\n TAudioServiceWithFactory,\n TAudioServiceWithRegistry\n} from '@Anarchy/Engine/Audio/Models';\nimport type { TLoadingManagerWrapper } from '@Anarchy/Engine/LoadingManager';\nimport type { TDisposable } from '@Anarchy/Engine/Mixins';\nimport { withCreateFromConfigServiceMixin, withCreateServiceMixin, withFactoryService, withRegistryService, withSerializableEntities, withSerializeAllResources } from '@Anarchy/Engine/Mixins';\nimport type { TSpaceLoops } from '@Anarchy/Engine/Space';\nimport { mergeAll } from '@Anarchy/Engine/Utils';\nimport type { Subscription } from 'rxjs';\nimport { AudioListener } from 'three';\n\n// TODO Audio: Maybe implement \"Sound Perception Manager\" for NPCs to react to a sound (if they are in a radius)\nexport function AudioService(\n factory: TAudioFactory,\n registry: TAudioRegistry,\n audioResourceAsyncRegistry: TAudioResourceAsyncRegistry,\n audioListenersRegistry: TAudioListenersRegistry,\n metaInfoRegistry: TAudioMetaInfoRegistry,\n dependencies: TAudioServiceDependencies,\n { audioLoop }: TSpaceLoops,\n loadingManagerWrapper: TLoadingManagerWrapper\n): TAudioService {\n const audioLoader: TAudioLoader = AudioLoader(audioResourceAsyncRegistry, metaInfoRegistry, loadingManagerWrapper);\n const factorySub$: Subscription = factory.entityCreated$.subscribe((wrapper: TAnyAudioWrapper): void => registry.add(wrapper));\n\n const disposable: ReadonlyArray<TDisposable> = [registry, factory, audioResourceAsyncRegistry, audioListenersRegistry, factorySub$, audioLoader];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n // Currently we have only one listener, but more could be added in the future\n audioListenersRegistry.add(Listeners.Main, new AudioListener());\n\n const withCreateService: TAudioServiceWithCreate = withCreateServiceMixin(factory, { audioLoop, ...dependencies });\n const withCreateFromConfigService: TAudioServiceWithCreateFromConfig = withCreateFromConfigServiceMixin(withCreateService.create, factory.configToParams, {\n audioResourceAsyncRegistry,\n audioListenersRegistry\n });\n const withFactory: TAudioServiceWithFactory = withFactoryService(factory);\n const withRegistry: TAudioServiceWithRegistry = withRegistryService(registry);\n\n return mergeAll(\n abstractService,\n withCreateService,\n withCreateFromConfigService,\n withFactory,\n withRegistry,\n withSerializeAllResources<TAudioResourceConfig, TAudioSerializeResourcesDependencies>(audioResourceAsyncRegistry, {\n audioResourceAsyncRegistry,\n audioListenersRegistry,\n metaInfoRegistry\n }),\n withSerializableEntities<TAnyAudioWrapper, TAnyAudioConfig, TAudioConfigToParamsDependencies>(registry, { audioResourceAsyncRegistry, audioListenersRegistry }),\n {\n getResourceRegistry: (): TAudioResourceAsyncRegistry => audioResourceAsyncRegistry,\n getMetaInfoRegistry: (): TAudioMetaInfoRegistry => metaInfoRegistry,\n getListenersRegistry: (): TAudioListenersRegistry => audioListenersRegistry,\n getMainListener: (): AudioListener | undefined => audioListenersRegistry.findByKey(Listeners.Main),\n loadAsync: audioLoader.loadAsync,\n loadFromConfigAsync: audioLoader.loadFromConfigAsync,\n serializeAllListeners: (): ReadonlyArray<AudioListener> => {\n return audioListenersRegistry.serialize() as ReadonlyArray<AudioListener>;\n }\n }\n );\n}\n"],"names":["AudioService","factory","registry","audioResourceAsyncRegistry","audioListenersRegistry","metaInfoRegistry","dependencies","audioLoop","loadingManagerWrapper","audioLoader","AudioLoader","factorySub$","entityCreated$","subscribe","wrapper","add","abstractService","AbstractService","Listeners","Main","AudioListener","withCreateService","withCreateServiceMixin","withCreateFromConfigService","withCreateFromConfigServiceMixin","create","configToParams","withFactory","withFactoryService","withRegistry","withRegistryService","mergeAll","withSerializeAllResources","withSerializableEntities","getResourceRegistry","getMetaInfoRegistry","getListenersRegistry","getMainListener","findByKey","loadAsync","loadFromConfigAsync","serializeAllListeners","serialize"],"mappings":"2vBAgCO,SAASA,aACdC,QACAC,SACAC,2BACAC,uBACAC,iBACAC,cACAC,UAAEA,WACFC,uBAEA,MAAMC,YAA4BC,YAAYP,2BAA4BE,iBAAkBG,uBACtFG,YAA4BV,QAAQW,eAAeC,UAAWC,SAAoCZ,SAASa,IAAID,UAG/GE,gBAAoCC,gBADK,CAACf,SAAUD,QAASE,2BAA4BC,uBAAwBO,YAAaF,cAIpIL,uBAAuBW,IAAIG,UAAUC,KAAM,IAAIC,eAE/C,MAAMC,kBAA6CC,uBAAuBrB,QAAS,CAAEM,uBAAcD,eAC7FiB,4BAAiEC,iCAAiCH,kBAAkBI,OAAQxB,QAAQyB,eAAgB,CACxJvB,sDACAC,gDAEIuB,YAAwCC,mBAAmB3B,SAC3D4B,aAA0CC,oBAAoB5B,UAEpE,OAAO6B,SACLf,gBACAK,kBACAE,4BACAI,YACAE,aACAG,0BAAsF7B,2BAA4B,CAChHA,sDACAC,8CACAC,oCAEF4B,yBAA8F/B,SAAU,CAAEC,sDAA4BC,gDACtI,CACE8B,oBAAqB,IAAmC/B,2BACxDgC,oBAAqB,IAA8B9B,iBACnD+B,qBAAsB,IAA+BhC,uBACrDiC,gBAAiB,IAAiCjC,uBAAuBkC,UAAUpB,UAAUC,MAC7FoB,UAAW9B,YAAY8B,UACvBC,oBAAqB/B,YAAY+B,oBACjCC,sBAAuB,IACdrC,uBAAuBsC,aAItC"}
1
+ {"version":3,"file":"AudioService.js","sources":["../../../src/Audio/Services/AudioService.ts"],"sourcesContent":["import type { TAbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport { Listeners } from '@hellpig/anarchy-engine/Audio/Constants';\nimport { AudioLoader } from '@hellpig/anarchy-engine/Audio/Loader';\nimport type {\n TAnyAudioConfig,\n TAnyAudioWrapper,\n TAudioConfigToParamsDependencies,\n TAudioFactory,\n TAudioListenersRegistry,\n TAudioLoader,\n TAudioMetaInfoRegistry,\n TAudioRegistry,\n TAudioResourceAsyncRegistry,\n TAudioResourceConfig,\n TAudioSerializeResourcesDependencies,\n TAudioService,\n TAudioServiceDependencies,\n TAudioServiceWithCreate,\n TAudioServiceWithCreateFromConfig,\n TAudioServiceWithFactory,\n TAudioServiceWithRegistry\n} from '@hellpig/anarchy-engine/Audio/Models';\nimport type { TLoadingManagerWrapper } from '@hellpig/anarchy-engine/LoadingManager';\nimport type { TDisposable } from '@hellpig/anarchy-engine/Mixins';\nimport { withCreateFromConfigServiceMixin, withCreateServiceMixin, withFactoryService, withRegistryService, withSerializableEntities, withSerializeAllResources } from '@hellpig/anarchy-engine/Mixins';\nimport type { TSpaceLoops } from '@hellpig/anarchy-engine/Space';\nimport { mergeAll } from '@hellpig/anarchy-engine/Utils';\nimport type { Subscription } from 'rxjs';\nimport { AudioListener } from 'three';\n\n// TODO Audio: Maybe implement \"Sound Perception Manager\" for NPCs to react to a sound (if they are in a radius)\nexport function AudioService(\n factory: TAudioFactory,\n registry: TAudioRegistry,\n audioResourceAsyncRegistry: TAudioResourceAsyncRegistry,\n audioListenersRegistry: TAudioListenersRegistry,\n metaInfoRegistry: TAudioMetaInfoRegistry,\n dependencies: TAudioServiceDependencies,\n { audioLoop }: TSpaceLoops,\n loadingManagerWrapper: TLoadingManagerWrapper\n): TAudioService {\n const audioLoader: TAudioLoader = AudioLoader(audioResourceAsyncRegistry, metaInfoRegistry, loadingManagerWrapper);\n const factorySub$: Subscription = factory.entityCreated$.subscribe((wrapper: TAnyAudioWrapper): void => registry.add(wrapper));\n\n const disposable: ReadonlyArray<TDisposable> = [registry, factory, audioResourceAsyncRegistry, audioListenersRegistry, factorySub$, audioLoader];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n // Currently we have only one listener, but more could be added in the future\n audioListenersRegistry.add(Listeners.Main, new AudioListener());\n\n const withCreateService: TAudioServiceWithCreate = withCreateServiceMixin(factory, { audioLoop, ...dependencies });\n const withCreateFromConfigService: TAudioServiceWithCreateFromConfig = withCreateFromConfigServiceMixin(withCreateService.create, factory.configToParams, {\n audioResourceAsyncRegistry,\n audioListenersRegistry\n });\n const withFactory: TAudioServiceWithFactory = withFactoryService(factory);\n const withRegistry: TAudioServiceWithRegistry = withRegistryService(registry);\n\n return mergeAll(\n abstractService,\n withCreateService,\n withCreateFromConfigService,\n withFactory,\n withRegistry,\n withSerializeAllResources<TAudioResourceConfig, TAudioSerializeResourcesDependencies>(audioResourceAsyncRegistry, {\n audioResourceAsyncRegistry,\n audioListenersRegistry,\n metaInfoRegistry\n }),\n withSerializableEntities<TAnyAudioWrapper, TAnyAudioConfig, TAudioConfigToParamsDependencies>(registry, { audioResourceAsyncRegistry, audioListenersRegistry }),\n {\n getResourceRegistry: (): TAudioResourceAsyncRegistry => audioResourceAsyncRegistry,\n getMetaInfoRegistry: (): TAudioMetaInfoRegistry => metaInfoRegistry,\n getListenersRegistry: (): TAudioListenersRegistry => audioListenersRegistry,\n getMainListener: (): AudioListener | undefined => audioListenersRegistry.findByKey(Listeners.Main),\n loadAsync: audioLoader.loadAsync,\n loadFromConfigAsync: audioLoader.loadFromConfigAsync,\n serializeAllListeners: (): ReadonlyArray<AudioListener> => {\n return audioListenersRegistry.serialize() as ReadonlyArray<AudioListener>;\n }\n }\n );\n}\n"],"names":["AudioService","factory","registry","audioResourceAsyncRegistry","audioListenersRegistry","metaInfoRegistry","dependencies","audioLoop","loadingManagerWrapper","audioLoader","AudioLoader","factorySub$","entityCreated$","subscribe","wrapper","add","abstractService","AbstractService","Listeners","Main","AudioListener","withCreateService","withCreateServiceMixin","withCreateFromConfigService","withCreateFromConfigServiceMixin","create","configToParams","withFactory","withFactoryService","withRegistry","withRegistryService","mergeAll","withSerializeAllResources","withSerializableEntities","getResourceRegistry","getMetaInfoRegistry","getListenersRegistry","getMainListener","findByKey","loadAsync","loadFromConfigAsync","serializeAllListeners","serialize"],"mappings":"2vBAgCO,SAASA,aACdC,QACAC,SACAC,2BACAC,uBACAC,iBACAC,cACAC,UAAEA,WACFC,uBAEA,MAAMC,YAA4BC,YAAYP,2BAA4BE,iBAAkBG,uBACtFG,YAA4BV,QAAQW,eAAeC,UAAWC,SAAoCZ,SAASa,IAAID,UAG/GE,gBAAoCC,gBADK,CAACf,SAAUD,QAASE,2BAA4BC,uBAAwBO,YAAaF,cAIpIL,uBAAuBW,IAAIG,UAAUC,KAAM,IAAIC,eAE/C,MAAMC,kBAA6CC,uBAAuBrB,QAAS,CAAEM,uBAAcD,eAC7FiB,4BAAiEC,iCAAiCH,kBAAkBI,OAAQxB,QAAQyB,eAAgB,CACxJvB,sDACAC,gDAEIuB,YAAwCC,mBAAmB3B,SAC3D4B,aAA0CC,oBAAoB5B,UAEpE,OAAO6B,SACLf,gBACAK,kBACAE,4BACAI,YACAE,aACAG,0BAAsF7B,2BAA4B,CAChHA,sDACAC,8CACAC,oCAEF4B,yBAA8F/B,SAAU,CAAEC,sDAA4BC,gDACtI,CACE8B,oBAAqB,IAAmC/B,2BACxDgC,oBAAqB,IAA8B9B,iBACnD+B,qBAAsB,IAA+BhC,uBACrDiC,gBAAiB,IAAiCjC,uBAAuBkC,UAAUpB,UAAUC,MAC7FoB,UAAW9B,YAAY8B,UACvBC,oBAAqB/B,YAAY+B,oBACjCC,sBAAuB,IACdrC,uBAAuBsC,aAItC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Audio3dTransformDrive.js","sources":["../../../src/Audio/TransformDrive/Audio3dTransformDrive.ts"],"sourcesContent":["import type { TAudio3dParams, TAudio3dTransformAgents, TAudio3dTransformDrive, TAudioServiceDependencies } from '@Anarchy/Engine/Audio/Models';\nimport type { TTransformDriveParams } from '@Anarchy/Engine/TransformDrive';\n\nexport function Audio3dTransformDrive(params: TAudio3dParams, { transformDriveService }: Pick<TAudioServiceDependencies, 'transformDriveService'>, relatedEntityId: string): TAudio3dTransformDrive {\n const transformAgents: TAudio3dTransformAgents = transformDriveService.getTransformAgents(params, { hasConnected: true }) as TAudio3dTransformAgents;\n const driveParams: TTransformDriveParams = { activeAgent: params.agent, relatedEntityId };\n\n return transformDriveService.create(driveParams, transformAgents) as TAudio3dTransformDrive;\n}\n"],"names":["Audio3dTransformDrive","params","transformDriveService","relatedEntityId","transformAgents","getTransformAgents","hasConnected","create","activeAgent","agent"],"mappings":"AAGO,SAASA,sBAAsBC,QAAwBC,sBAAEA,uBAAmFC,iBACjJ,MAAMC,gBAA2CF,sBAAsBG,mBAAmBJ,OAAQ,CAAEK,cAAc,IAGlH,OAAOJ,sBAAsBK,OAFc,CAAEC,YAAaP,OAAOQ,MAAON,iCAEvBC,gBACnD"}
1
+ {"version":3,"file":"Audio3dTransformDrive.js","sources":["../../../src/Audio/TransformDrive/Audio3dTransformDrive.ts"],"sourcesContent":["import type { TAudio3dParams, TAudio3dTransformAgents, TAudio3dTransformDrive, TAudioServiceDependencies } from '@hellpig/anarchy-engine/Audio/Models';\nimport type { TTransformDriveParams } from '@hellpig/anarchy-engine/TransformDrive';\n\nexport function Audio3dTransformDrive(params: TAudio3dParams, { transformDriveService }: Pick<TAudioServiceDependencies, 'transformDriveService'>, relatedEntityId: string): TAudio3dTransformDrive {\n const transformAgents: TAudio3dTransformAgents = transformDriveService.getTransformAgents(params, { hasConnected: true }) as TAudio3dTransformAgents;\n const driveParams: TTransformDriveParams = { activeAgent: params.agent, relatedEntityId };\n\n return transformDriveService.create(driveParams, transformAgents) as TAudio3dTransformDrive;\n}\n"],"names":["Audio3dTransformDrive","params","transformDriveService","relatedEntityId","transformAgents","getTransformAgents","hasConnected","create","activeAgent","agent"],"mappings":"AAGO,SAASA,sBAAsBC,QAAwBC,sBAAEA,uBAAmFC,iBACjJ,MAAMC,gBAA2CF,sBAAsBG,mBAAmBJ,OAAQ,CAAEK,cAAc,IAGlH,OAAOJ,sBAAsBK,OAFc,CAAEC,YAAaP,OAAOQ,MAAON,iCAEvBC,gBACnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioUtils.js","sources":["../../../src/Audio/Utils/AudioUtils.ts"],"sourcesContent":["import type { TAbstractAudioWrapper, TAnyAudio, TAnyAudioConfig, TAnyAudioParams, TAnyAudioWrapper, TAudio3dConfig, TAudio3dParams, TAudio3dWrapper, TAudioParams } from '@Anarchy/Engine/Audio/Models';\nimport type { TReadonlyVector3 } from '@Anarchy/Engine/ThreeLib';\nimport { isEqualOrSimilarByXyzCoords } from '@Anarchy/Engine/Utils';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, tap } from 'rxjs';\nimport { Audio, PositionalAudio } from 'three';\n\nexport const isAudio3dConfig = (config: TAnyAudioConfig): config is TAudio3dConfig => isDefined((config as TAudio3dConfig).position);\nexport const isAudio3dParams = (config: TAnyAudioParams): config is TAudio3dParams => isDefined((config as TAudio3dParams).position);\nexport const isAudio3dWrapper = (wrapper: TAnyAudioWrapper | TAbstractAudioWrapper<any>): wrapper is TAudio3dWrapper => isDefined((wrapper as TAudio3dWrapper).drive);\n\nexport function seekAudio(entity: TAnyAudio, time: number, shouldPlay: boolean): void {\n if (!entity.buffer) return;\n entity.stop();\n // eslint-disable-next-line functional/immutable-data\n entity.offset = time;\n if (shouldPlay) entity.play();\n}\n\nexport function createPositionalAudio(audioSource: AudioBuffer, params: TAudio3dParams): PositionalAudio | never {\n if (isNotDefined(params.listener)) throw new Error('Audio: cannot create positional audio without a listener');\n const audio = new PositionalAudio(params.listener);\n\n audio.setBuffer(audioSource!);\n audio.setRefDistance(params.refDistance ?? 1);\n audio.setVolume(params.volume ?? 1);\n audio.setLoop(params.loop ?? false);\n if (params.rolloffFactor) audio.setRolloffFactor(params.rolloffFactor);\n audio.setDistanceModel(params.distanceModel ?? 'linear');\n if (params.maxDistance) audio.setMaxDistance(params.maxDistance);\n return audio;\n}\n\nexport function createAudio(audioSource: AudioBuffer, params: TAudioParams): Audio {\n if (isNotDefined(params.listener)) throw new Error('Audio: cannot create positional audio without a listener');\n const audio = new Audio(params.listener);\n audio.setBuffer(audioSource);\n audio.setLoop(params.loop ?? false);\n audio.setVolume(params.volume ?? 1);\n return audio;\n}\n\nexport function onAudioPositionUpdate(position$: BehaviorSubject<TReadonlyVector3>, noiseThreshold?: number): Observable<TReadonlyVector3> {\n const prevValue: Float32Array = new Float32Array([0, 0, 0]);\n\n return position$.pipe(\n distinctUntilChanged((_prev: TReadonlyVector3, curr: TReadonlyVector3): boolean =>\n isEqualOrSimilarByXyzCoords(prevValue[0], prevValue[1], prevValue[2], curr.x, curr.y, curr.z, noiseThreshold ?? 0)\n ),\n tap((value: TReadonlyVector3): void => {\n // eslint-disable-next-line functional/immutable-data\n prevValue[0] = value.x;\n // eslint-disable-next-line functional/immutable-data\n prevValue[1] = value.y;\n // eslint-disable-next-line functional/immutable-data\n prevValue[2] = value.z;\n })\n );\n}\n\nexport function disposeAudio(audio: TAnyAudio): void {\n if (audio.isPlaying) audio.stop();\n audio.setBuffer(null as any);\n if (audio.parent) audio.removeFromParent();\n if (audio.gain) audio.gain.disconnect();\n if ((audio as PositionalAudio).panner) (audio as PositionalAudio).panner.disconnect();\n\n // eslint-disable-next-line functional/immutable-data\n audio.source = null;\n}\n"],"names":["isAudio3dConfig","config","isDefined","position","isAudio3dParams","isAudio3dWrapper","wrapper","drive","seekAudio","entity","time","shouldPlay","buffer","stop","offset","play","createPositionalAudio","audioSource","params","isNotDefined","listener","Error","audio","PositionalAudio","setBuffer","setRefDistance","refDistance","setVolume","volume","setLoop","loop","rolloffFactor","setRolloffFactor","setDistanceModel","distanceModel","maxDistance","setMaxDistance","createAudio","Audio","onAudioPositionUpdate","position$","noiseThreshold","prevValue","Float32Array","pipe","distinctUntilChanged","_prev","curr","isEqualOrSimilarByXyzCoords","x","y","z","tap","value","disposeAudio","isPlaying","parent","removeFromParent","gain","disconnect","panner","source"],"mappings":"sYAQO,MAAMA,gBAAmBC,QAAsDC,UAAWD,OAA0BE,UAC9GC,gBAAmBH,QAAsDC,UAAWD,OAA0BE,UAC9GE,iBAAoBC,SAAuFJ,UAAWI,QAA4BC,OAExJ,SAASC,UAAUC,OAAmBC,KAAcC,YACpDF,OAAOG,SACZH,OAAOI,OAEPJ,OAAOK,OAASJ,KACZC,mBAAmBI,OACzB,CAEO,SAASC,sBAAsBC,YAA0BC,QAC9D,GAAIC,aAAaD,OAAOE,UAAW,MAAM,IAAIC,MAAM,4DACnD,MAAMC,MAAQ,IAAIC,gBAAgBL,OAAOE,UASzC,OAPAE,MAAME,UAAUP,aAChBK,MAAMG,eAAeP,OAAOQ,aAAe,GAC3CJ,MAAMK,UAAUT,OAAOU,QAAU,GACjCN,MAAMO,QAAQX,OAAOY,OAAQ,GACzBZ,OAAOa,eAAeT,MAAMU,iBAAiBd,OAAOa,eACxDT,MAAMW,iBAAiBf,OAAOgB,eAAiB,UAC3ChB,OAAOiB,aAAab,MAAMc,eAAelB,OAAOiB,aAC7Cb,KACT,CAEO,SAASe,YAAYpB,YAA0BC,QACpD,GAAIC,aAAaD,OAAOE,UAAW,MAAM,IAAIC,MAAM,4DACnD,MAAMC,MAAQ,IAAIgB,MAAMpB,OAAOE,UAI/B,OAHAE,MAAME,UAAUP,aAChBK,MAAMO,QAAQX,OAAOY,OAAQ,GAC7BR,MAAMK,UAAUT,OAAOU,QAAU,GAC1BN,KACT,CAEO,SAASiB,sBAAsBC,UAA8CC,gBAClF,MAAMC,UAA0B,IAAIC,aAAa,CAAC,EAAG,EAAG,IAExD,OAAOH,UAAUI,KACfC,qBAAqB,CAACC,MAAyBC,OAC7CC,4BAA4BN,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIK,KAAKE,EAAGF,KAAKG,EAAGH,KAAKI,EAAGV,gBAAkB,IAElHW,IAAKC,QAEHX,UAAU,GAAKW,MAAMJ,EAErBP,UAAU,GAAKW,MAAMH,EAErBR,UAAU,GAAKW,MAAMF,IAG3B,CAEO,SAASG,aAAahC,OACvBA,MAAMiC,WAAWjC,MAAMT,OAC3BS,MAAME,UAAU,MACZF,MAAMkC,QAAQlC,MAAMmC,mBACpBnC,MAAMoC,MAAMpC,MAAMoC,KAAKC,aACtBrC,MAA0BsC,QAAStC,MAA0BsC,OAAOD,aAGzErC,MAAMuC,OAAS,IACjB"}
1
+ {"version":3,"file":"AudioUtils.js","sources":["../../../src/Audio/Utils/AudioUtils.ts"],"sourcesContent":["import type {\n TAbstractAudioWrapper,\n TAnyAudio,\n TAnyAudioConfig,\n TAnyAudioParams,\n TAnyAudioWrapper,\n TAudio3dConfig,\n TAudio3dParams,\n TAudio3dWrapper,\n TAudioParams\n} from '@hellpig/anarchy-engine/Audio/Models';\nimport type { TReadonlyVector3 } from '@hellpig/anarchy-engine/ThreeLib';\nimport { isEqualOrSimilarByXyzCoords } from '@hellpig/anarchy-engine/Utils';\nimport { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { BehaviorSubject, Observable } from 'rxjs';\nimport { distinctUntilChanged, tap } from 'rxjs';\nimport { Audio, PositionalAudio } from 'three';\n\nexport const isAudio3dConfig = (config: TAnyAudioConfig): config is TAudio3dConfig => isDefined((config as TAudio3dConfig).position);\nexport const isAudio3dParams = (config: TAnyAudioParams): config is TAudio3dParams => isDefined((config as TAudio3dParams).position);\nexport const isAudio3dWrapper = (wrapper: TAnyAudioWrapper | TAbstractAudioWrapper<any>): wrapper is TAudio3dWrapper => isDefined((wrapper as TAudio3dWrapper).drive);\n\nexport function seekAudio(entity: TAnyAudio, time: number, shouldPlay: boolean): void {\n if (!entity.buffer) return;\n entity.stop();\n // eslint-disable-next-line functional/immutable-data\n entity.offset = time;\n if (shouldPlay) entity.play();\n}\n\nexport function createPositionalAudio(audioSource: AudioBuffer, params: TAudio3dParams): PositionalAudio | never {\n if (isNotDefined(params.listener)) throw new Error('Audio: cannot create positional audio without a listener');\n const audio = new PositionalAudio(params.listener);\n\n audio.setBuffer(audioSource!);\n audio.setRefDistance(params.refDistance ?? 1);\n audio.setVolume(params.volume ?? 1);\n audio.setLoop(params.loop ?? false);\n if (params.rolloffFactor) audio.setRolloffFactor(params.rolloffFactor);\n audio.setDistanceModel(params.distanceModel ?? 'linear');\n if (params.maxDistance) audio.setMaxDistance(params.maxDistance);\n return audio;\n}\n\nexport function createAudio(audioSource: AudioBuffer, params: TAudioParams): Audio {\n if (isNotDefined(params.listener)) throw new Error('Audio: cannot create positional audio without a listener');\n const audio = new Audio(params.listener);\n audio.setBuffer(audioSource);\n audio.setLoop(params.loop ?? false);\n audio.setVolume(params.volume ?? 1);\n return audio;\n}\n\nexport function onAudioPositionUpdate(position$: BehaviorSubject<TReadonlyVector3>, noiseThreshold?: number): Observable<TReadonlyVector3> {\n const prevValue: Float32Array = new Float32Array([0, 0, 0]);\n\n return position$.pipe(\n distinctUntilChanged((_prev: TReadonlyVector3, curr: TReadonlyVector3): boolean =>\n isEqualOrSimilarByXyzCoords(prevValue[0], prevValue[1], prevValue[2], curr.x, curr.y, curr.z, noiseThreshold ?? 0)\n ),\n tap((value: TReadonlyVector3): void => {\n // eslint-disable-next-line functional/immutable-data\n prevValue[0] = value.x;\n // eslint-disable-next-line functional/immutable-data\n prevValue[1] = value.y;\n // eslint-disable-next-line functional/immutable-data\n prevValue[2] = value.z;\n })\n );\n}\n\nexport function disposeAudio(audio: TAnyAudio): void {\n if (audio.isPlaying) audio.stop();\n audio.setBuffer(null as any);\n if (audio.parent) audio.removeFromParent();\n if (audio.gain) audio.gain.disconnect();\n if ((audio as PositionalAudio).panner) (audio as PositionalAudio).panner.disconnect();\n\n // eslint-disable-next-line functional/immutable-data\n audio.source = null;\n}\n"],"names":["isAudio3dConfig","config","isDefined","position","isAudio3dParams","isAudio3dWrapper","wrapper","drive","seekAudio","entity","time","shouldPlay","buffer","stop","offset","play","createPositionalAudio","audioSource","params","isNotDefined","listener","Error","audio","PositionalAudio","setBuffer","setRefDistance","refDistance","setVolume","volume","setLoop","loop","rolloffFactor","setRolloffFactor","setDistanceModel","distanceModel","maxDistance","setMaxDistance","createAudio","Audio","onAudioPositionUpdate","position$","noiseThreshold","prevValue","Float32Array","pipe","distinctUntilChanged","_prev","curr","isEqualOrSimilarByXyzCoords","x","y","z","tap","value","disposeAudio","isPlaying","parent","removeFromParent","gain","disconnect","panner","source"],"mappings":"sYAkBO,MAAMA,gBAAmBC,QAAsDC,UAAWD,OAA0BE,UAC9GC,gBAAmBH,QAAsDC,UAAWD,OAA0BE,UAC9GE,iBAAoBC,SAAuFJ,UAAWI,QAA4BC,OAExJ,SAASC,UAAUC,OAAmBC,KAAcC,YACpDF,OAAOG,SACZH,OAAOI,OAEPJ,OAAOK,OAASJ,KACZC,mBAAmBI,OACzB,CAEO,SAASC,sBAAsBC,YAA0BC,QAC9D,GAAIC,aAAaD,OAAOE,UAAW,MAAM,IAAIC,MAAM,4DACnD,MAAMC,MAAQ,IAAIC,gBAAgBL,OAAOE,UASzC,OAPAE,MAAME,UAAUP,aAChBK,MAAMG,eAAeP,OAAOQ,aAAe,GAC3CJ,MAAMK,UAAUT,OAAOU,QAAU,GACjCN,MAAMO,QAAQX,OAAOY,OAAQ,GACzBZ,OAAOa,eAAeT,MAAMU,iBAAiBd,OAAOa,eACxDT,MAAMW,iBAAiBf,OAAOgB,eAAiB,UAC3ChB,OAAOiB,aAAab,MAAMc,eAAelB,OAAOiB,aAC7Cb,KACT,CAEO,SAASe,YAAYpB,YAA0BC,QACpD,GAAIC,aAAaD,OAAOE,UAAW,MAAM,IAAIC,MAAM,4DACnD,MAAMC,MAAQ,IAAIgB,MAAMpB,OAAOE,UAI/B,OAHAE,MAAME,UAAUP,aAChBK,MAAMO,QAAQX,OAAOY,OAAQ,GAC7BR,MAAMK,UAAUT,OAAOU,QAAU,GAC1BN,KACT,CAEO,SAASiB,sBAAsBC,UAA8CC,gBAClF,MAAMC,UAA0B,IAAIC,aAAa,CAAC,EAAG,EAAG,IAExD,OAAOH,UAAUI,KACfC,qBAAqB,CAACC,MAAyBC,OAC7CC,4BAA4BN,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIK,KAAKE,EAAGF,KAAKG,EAAGH,KAAKI,EAAGV,gBAAkB,IAElHW,IAAKC,QAEHX,UAAU,GAAKW,MAAMJ,EAErBP,UAAU,GAAKW,MAAMH,EAErBR,UAAU,GAAKW,MAAMF,IAG3B,CAEO,SAASG,aAAahC,OACvBA,MAAMiC,WAAWjC,MAAMT,OAC3BS,MAAME,UAAU,MACZF,MAAMkC,QAAQlC,MAAMmC,mBACpBnC,MAAMoC,MAAMpC,MAAMoC,KAAKC,aACtBrC,MAA0BsC,QAAStC,MAA0BsC,OAAOD,aAGzErC,MAAMuC,OAAS,IACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"DebugAudioRenderer.js","sources":["../../../src/Audio/Utils/DebugAudioRenderer.ts"],"sourcesContent":["import type { TAudio3dWrapper, TDebugAudioRenderer } from '@Anarchy/Engine/Audio/Models';\nimport type { TLoop } from '@Anarchy/Engine/Loop';\nimport type { TMilliseconds } from '@Anarchy/Engine/Math';\nimport type { TSceneWrapper } from '@Anarchy/Engine/Scene';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Observable } from 'rxjs';\nimport { BehaviorSubject, EMPTY, switchMap } from 'rxjs';\nimport { Mesh, MeshBasicMaterial, SphereGeometry } from 'three';\n\nexport function DebugAudioRenderer(source: TAudio3dWrapper, sceneW: TSceneWrapper, loop: TLoop): TDebugAudioRenderer {\n const enabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n // const refDistance: number = source.entity.getRefDistance();\n const maxDistance: number = source.entity.getMaxDistance();\n\n // const refGeometry = new SphereGeometry(refDistance, 8, 8);\n // const refMaterial = new MeshBasicMaterial({ color: 0x00ff00, wireframe: true });\n // const refSphere = new Mesh(refGeometry, refMaterial);\n // sceneW.entity.add(refSphere);\n\n const maxGeometry = new SphereGeometry(maxDistance, 8, 8);\n const maxMaterial = new MeshBasicMaterial({ color: 0xff0000, wireframe: true, opacity: 0.5, transparent: true });\n const maxSphere = new Mesh(maxGeometry, maxMaterial);\n sceneW.entity.add(maxSphere);\n\n enabled$.subscribe((isEnabled: boolean): void => {\n // refSphere.visible = isEnabled;\n // eslint-disable-next-line functional/immutable-data\n maxSphere.visible = isEnabled;\n });\n\n enabled$.pipe(switchMap((isEnabled: boolean): Observable<TMilliseconds> => (isEnabled ? loop.tick$ : EMPTY))).subscribe((): void => {\n if (isDefined(source.entity.parent)) {\n // refSphere.position.copy(source.entity.parent.position);\n maxSphere.position.copy(source.entity.parent.position);\n } else {\n maxSphere.position.copy(source.entity.position);\n }\n });\n\n return {\n enabled$\n };\n}\n"],"names":["DebugAudioRenderer","source","sceneW","loop","enabled$","BehaviorSubject","maxDistance","entity","getMaxDistance","maxGeometry","SphereGeometry","maxMaterial","MeshBasicMaterial","color","wireframe","opacity","transparent","maxSphere","Mesh","add","subscribe","isEnabled","visible","pipe","switchMap","tick$","EMPTY","isDefined","parent","position","copy"],"mappings":"4YASO,SAASA,mBAAmBC,OAAyBC,OAAuBC,MACjF,MAAMC,SAAqC,IAAIC,iBAAyB,GAElEC,YAAsBL,OAAOM,OAAOC,iBAOpCC,YAAc,IAAIC,eAAeJ,YAAa,EAAG,GACjDK,YAAc,IAAIC,kBAAkB,CAAEC,MAAO,SAAUC,WAAW,EAAMC,QAAS,GAAKC,aAAa,IACnGC,UAAY,IAAIC,KAAKT,YAAaE,aAkBxC,OAjBAT,OAAOK,OAAOY,IAAIF,WAElBb,SAASgB,UAAWC,YAGlBJ,UAAUK,QAAUD,YAGtBjB,SAASmB,KAAKC,UAAWH,WAAmDA,UAAYlB,KAAKsB,MAAQC,QAASN,UAAU,KAClHO,UAAU1B,OAAOM,OAAOqB,QAE1BX,UAAUY,SAASC,KAAK7B,OAAOM,OAAOqB,OAAOC,UAE7CZ,UAAUY,SAASC,KAAK7B,OAAOM,OAAOsB,YAInC,CACLzB,kBAEJ"}
1
+ {"version":3,"file":"DebugAudioRenderer.js","sources":["../../../src/Audio/Utils/DebugAudioRenderer.ts"],"sourcesContent":["import type { TAudio3dWrapper, TDebugAudioRenderer } from '@hellpig/anarchy-engine/Audio/Models';\nimport type { TLoop } from '@hellpig/anarchy-engine/Loop';\nimport type { TMilliseconds } from '@hellpig/anarchy-engine/Math';\nimport type { TSceneWrapper } from '@hellpig/anarchy-engine/Scene';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Observable } from 'rxjs';\nimport { BehaviorSubject, EMPTY, switchMap } from 'rxjs';\nimport { Mesh, MeshBasicMaterial, SphereGeometry } from 'three';\n\nexport function DebugAudioRenderer(source: TAudio3dWrapper, sceneW: TSceneWrapper, loop: TLoop): TDebugAudioRenderer {\n const enabled$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n // const refDistance: number = source.entity.getRefDistance();\n const maxDistance: number = source.entity.getMaxDistance();\n\n // const refGeometry = new SphereGeometry(refDistance, 8, 8);\n // const refMaterial = new MeshBasicMaterial({ color: 0x00ff00, wireframe: true });\n // const refSphere = new Mesh(refGeometry, refMaterial);\n // sceneW.entity.add(refSphere);\n\n const maxGeometry = new SphereGeometry(maxDistance, 8, 8);\n const maxMaterial = new MeshBasicMaterial({ color: 0xff0000, wireframe: true, opacity: 0.5, transparent: true });\n const maxSphere = new Mesh(maxGeometry, maxMaterial);\n sceneW.entity.add(maxSphere);\n\n enabled$.subscribe((isEnabled: boolean): void => {\n // refSphere.visible = isEnabled;\n // eslint-disable-next-line functional/immutable-data\n maxSphere.visible = isEnabled;\n });\n\n enabled$.pipe(switchMap((isEnabled: boolean): Observable<TMilliseconds> => (isEnabled ? loop.tick$ : EMPTY))).subscribe((): void => {\n if (isDefined(source.entity.parent)) {\n // refSphere.position.copy(source.entity.parent.position);\n maxSphere.position.copy(source.entity.parent.position);\n } else {\n maxSphere.position.copy(source.entity.position);\n }\n });\n\n return {\n enabled$\n };\n}\n"],"names":["DebugAudioRenderer","source","sceneW","loop","enabled$","BehaviorSubject","maxDistance","entity","getMaxDistance","maxGeometry","SphereGeometry","maxMaterial","MeshBasicMaterial","color","wireframe","opacity","transparent","maxSphere","Mesh","add","subscribe","isEnabled","visible","pipe","switchMap","tick$","EMPTY","isDefined","parent","position","copy"],"mappings":"4YASO,SAASA,mBAAmBC,OAAyBC,OAAuBC,MACjF,MAAMC,SAAqC,IAAIC,iBAAyB,GAElEC,YAAsBL,OAAOM,OAAOC,iBAOpCC,YAAc,IAAIC,eAAeJ,YAAa,EAAG,GACjDK,YAAc,IAAIC,kBAAkB,CAAEC,MAAO,SAAUC,WAAW,EAAMC,QAAS,GAAKC,aAAa,IACnGC,UAAY,IAAIC,KAAKT,YAAaE,aAkBxC,OAjBAT,OAAOK,OAAOY,IAAIF,WAElBb,SAASgB,UAAWC,YAGlBJ,UAAUK,QAAUD,YAGtBjB,SAASmB,KAAKC,UAAWH,WAAmDA,UAAYlB,KAAKsB,MAAQC,QAASN,UAAU,KAClHO,UAAU1B,OAAOM,OAAOqB,QAE1BX,UAAUY,SAASC,KAAK7B,OAAOM,OAAOqB,OAAOC,UAE7CZ,UAAUY,SAASC,KAAK7B,OAAOM,OAAOsB,YAInC,CACLzB,kBAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractAudioWrapper.js","sources":["../../../src/Audio/Wrappers/AbstractAudioWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport { audioEntityToConfig } from '@Anarchy/Engine/Audio/Adapters';\nimport type { TAbstractAudioWrapper, TAnyAudio, TAnyAudioConfig, TAnyAudioParams, TAudioConfigToParamsDependencies, TAudioCreateFn } from '@Anarchy/Engine/Audio/Models';\nimport { disposeAudio, seekAudio } from '@Anarchy/Engine/Audio/Utils';\nimport { destroyAudio } from '@Anarchy/Engine/Utils';\nimport type { Subscription } from 'rxjs';\nimport { BehaviorSubject, skipWhile, Subject, takeUntil } from 'rxjs';\nimport type { AudioListener } from 'three';\n\nexport function AbstractAudioWrapper<T extends TAnyAudio>(params: TAnyAudioParams, createFn: TAudioCreateFn<T>): TAbstractAudioWrapper<T> {\n const { audioSource, volume } = params;\n const entity: T = createFn(audioSource, params);\n const listener$: BehaviorSubject<AudioListener | undefined> = new BehaviorSubject<AudioListener | undefined>(params.listener);\n\n const play$: Subject<boolean> = new Subject<boolean>();\n const pause$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(params.pause ?? false);\n const speed$: BehaviorSubject<number> = new BehaviorSubject<number>(params.speed ?? 1);\n const seek$: BehaviorSubject<number> = new BehaviorSubject<number>(params.seek ?? 0);\n const loop$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(params.loop ?? false);\n const volume$: BehaviorSubject<number> = new BehaviorSubject<number>(volume ?? 1);\n\n const wrapper: TAbstractWrapper<T> = AbstractWrapper(entity, WrapperType.Audio, params);\n\n play$.pipe(takeUntil(wrapper.destroy$)).subscribe((shouldPlay: boolean): void => {\n if (shouldPlay && !entity.isPlaying) return void entity.play();\n else return void entity.stop();\n });\n\n volume$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((volume: number, index: number): boolean => index === 0 && volume === 1),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((volume: number): void => void entity.setVolume(volume));\n\n let lastPausedPosition: number = 0;\n pause$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((shouldPause: boolean, index: number): boolean => index === 0 && !shouldPause),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((shouldPause: boolean): void => {\n if (shouldPause && entity.isPlaying) {\n lastPausedPosition = entity.context.currentTime;\n play$.next(false);\n } else {\n seek$.next(lastPausedPosition);\n play$.next(true);\n }\n });\n\n speed$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((speed: number, index: number): boolean => index === 0 && speed === 1),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((speed: number): void => void entity.setPlaybackRate(speed));\n\n seek$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((seek: number, index: number): boolean => index === 0 && seek === 0),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((seek: number): void => {\n seekAudio(entity, seek, entity.isPlaying);\n lastPausedPosition = seek;\n });\n\n loop$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((shouldLoop: boolean, index: number): boolean => index === 0 && !shouldLoop),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((shouldLoop: boolean): void => void entity.setLoop(shouldLoop));\n\n const destroySub$: Subscription = wrapper.destroy$.subscribe((): void => {\n wrapper.entity.stop();\n destroyAudio(wrapper.entity as TAnyAudio);\n\n destroySub$.unsubscribe();\n\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.context = null as any;\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.gain = null as any;\n listener$.complete();\n\n play$.complete();\n pause$.complete();\n speed$.complete();\n seek$.complete();\n loop$.complete();\n volume$.complete();\n disposeAudio(entity);\n });\n\n // eslint-disable-next-line functional/immutable-data\n const result: TAbstractAudioWrapper<T> = Object.assign(wrapper, {\n play$,\n pause$,\n speed$,\n seek$,\n loop$,\n isPlaying: (): boolean => entity.isPlaying,\n getDuration: (): number | undefined => entity.buffer?.duration,\n volume$,\n listener$,\n serialize: (dependencies: TAudioConfigToParamsDependencies): TAnyAudioConfig => audioEntityToConfig(result, dependencies)\n });\n\n return result;\n}\n"],"names":["AbstractAudioWrapper","params","createFn","audioSource","volume","entity","listener$","BehaviorSubject","listener","play$","Subject","pause$","pause","speed$","speed","seek$","seek","loop$","loop","volume$","wrapper","AbstractWrapper","WrapperType","Audio","pipe","takeUntil","destroy$","subscribe","shouldPlay","isPlaying","play","stop","skipWhile","index","setVolume","lastPausedPosition","shouldPause","context","currentTime","next","setPlaybackRate","seekAudio","shouldLoop","setLoop","destroySub$","destroyAudio","unsubscribe","value","gain","complete","disposeAudio","result","Object","assign","getDuration","buffer","duration","serialize","dependencies","audioEntityToConfig"],"mappings":"ipBAUO,SAASA,qBAA0CC,OAAyBC,UACjF,MAAMC,YAAEA,YAAAC,OAAaA,QAAWH,OAC1BI,OAAYH,SAASC,YAAaF,QAClCK,UAAwD,IAAIC,gBAA2CN,OAAOO,UAE9GC,MAA0B,IAAIC,QAC9BC,OAAmC,IAAIJ,gBAAyBN,OAAOW,QAAS,GAChFC,OAAkC,IAAIN,gBAAwBN,OAAOa,OAAS,GAC9EC,MAAiC,IAAIR,gBAAwBN,OAAOe,MAAQ,GAC5EC,MAAkC,IAAIV,gBAAyBN,OAAOiB,OAAQ,GAC9EC,QAAmC,IAAIZ,gBAAwBH,QAAU,GAEzEgB,QAA+BC,gBAAgBhB,OAAQiB,YAAYC,MAAOtB,QAEhFQ,MAAMe,KAAKC,UAAUL,QAAQM,WAAWC,UAAWC,YAC7CA,aAAevB,OAAOwB,eAAuBxB,OAAOyB,YACvCzB,OAAO0B,QAG1BZ,QACGK,KAECQ,UAAU,CAAC5B,QAAgB6B,QAAqC,IAAVA,OAA0B,IAAX7B,SACrEqB,UAAUL,QAAQM,WAEnBC,UAAWvB,UAA8BC,OAAO6B,UAAU9B,WAE7D,IAAI+B,mBAA6B,EACjCxB,OACGa,KAECQ,UAAU,CAACI,YAAsBH,QAAqC,IAAVA,QAAgBG,aAC5EX,UAAUL,QAAQM,WAEnBC,UAAWS,cACNA,aAAe/B,OAAOwB,WACxBM,mBAAqB9B,OAAOgC,QAAQC,YACpC7B,MAAM8B,MAAK,KAEXxB,MAAMwB,KAAKJ,oBACX1B,MAAM8B,MAAK,MAIjB1B,OACGW,KAECQ,UAAU,CAAClB,MAAemB,QAAqC,IAAVA,OAAyB,IAAVnB,OACpEW,UAAUL,QAAQM,WAEnBC,UAAWb,QAA6BT,OAAOmC,gBAAgB1B,SAElEC,MACGS,KAECQ,UAAU,CAAChB,KAAciB,QAAqC,IAAVA,OAAwB,IAATjB,MACnES,UAAUL,QAAQM,WAEnBC,UAAWX,OACVyB,UAAUpC,OAAQW,KAAMX,OAAOwB,WAC/BM,mBAAqBnB,OAGzBC,MACGO,KAECQ,UAAU,CAACU,WAAqBT,QAAqC,IAAVA,QAAgBS,YAC3EjB,UAAUL,QAAQM,WAEnBC,UAAWe,aAAmCrC,OAAOsC,QAAQD,cAEhE,MAAME,YAA4BxB,QAAQM,SAASC,UAAU,KAC3DP,QAAQf,OAAO0B,OACfc,aAAazB,QAAQf,QAErBuC,YAAYE,cAGRxC,UAAUyC,QAAOzC,UAAUyC,MAAMV,QAAU,MAE3C/B,UAAUyC,QAAOzC,UAAUyC,MAAMC,KAAO,MAC5C1C,UAAU2C,WAEVxC,MAAMwC,WACNtC,OAAOsC,WACPpC,OAAOoC,WACPlC,MAAMkC,WACNhC,MAAMgC,WACN9B,QAAQ8B,WACRC,aAAa7C,UAIT8C,OAAmCC,OAAOC,OAAOjC,QAAS,CAC9DX,YACAE,cACAE,cACAE,YACAE,YACAY,UAAW,IAAexB,OAAOwB,UACjCyB,YAAa,IAA0BjD,OAAOkD,QAAQC,SACtDrC,gBACAb,oBACAmD,UAAYC,cAAoEC,oBAAoBR,OAAQO,gBAG9G,OAAOP,MACT"}
1
+ {"version":3,"file":"AbstractAudioWrapper.js","sources":["../../../src/Audio/Wrappers/AbstractAudioWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@hellpig/anarchy-engine/Abstract';\nimport { audioEntityToConfig } from '@hellpig/anarchy-engine/Audio/Adapters';\nimport type { TAbstractAudioWrapper, TAnyAudio, TAnyAudioConfig, TAnyAudioParams, TAudioConfigToParamsDependencies, TAudioCreateFn } from '@hellpig/anarchy-engine/Audio/Models';\nimport { disposeAudio, seekAudio } from '@hellpig/anarchy-engine/Audio/Utils';\nimport { destroyAudio } from '@hellpig/anarchy-engine/Utils';\nimport type { Subscription } from 'rxjs';\nimport { BehaviorSubject, skipWhile, Subject, takeUntil } from 'rxjs';\nimport type { AudioListener } from 'three';\n\nexport function AbstractAudioWrapper<T extends TAnyAudio>(params: TAnyAudioParams, createFn: TAudioCreateFn<T>): TAbstractAudioWrapper<T> {\n const { audioSource, volume } = params;\n const entity: T = createFn(audioSource, params);\n const listener$: BehaviorSubject<AudioListener | undefined> = new BehaviorSubject<AudioListener | undefined>(params.listener);\n\n const play$: Subject<boolean> = new Subject<boolean>();\n const pause$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(params.pause ?? false);\n const speed$: BehaviorSubject<number> = new BehaviorSubject<number>(params.speed ?? 1);\n const seek$: BehaviorSubject<number> = new BehaviorSubject<number>(params.seek ?? 0);\n const loop$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(params.loop ?? false);\n const volume$: BehaviorSubject<number> = new BehaviorSubject<number>(volume ?? 1);\n\n const wrapper: TAbstractWrapper<T> = AbstractWrapper(entity, WrapperType.Audio, params);\n\n play$.pipe(takeUntil(wrapper.destroy$)).subscribe((shouldPlay: boolean): void => {\n if (shouldPlay && !entity.isPlaying) return void entity.play();\n else return void entity.stop();\n });\n\n volume$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((volume: number, index: number): boolean => index === 0 && volume === 1),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((volume: number): void => void entity.setVolume(volume));\n\n let lastPausedPosition: number = 0;\n pause$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((shouldPause: boolean, index: number): boolean => index === 0 && !shouldPause),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((shouldPause: boolean): void => {\n if (shouldPause && entity.isPlaying) {\n lastPausedPosition = entity.context.currentTime;\n play$.next(false);\n } else {\n seek$.next(lastPausedPosition);\n play$.next(true);\n }\n });\n\n speed$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((speed: number, index: number): boolean => index === 0 && speed === 1),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((speed: number): void => void entity.setPlaybackRate(speed));\n\n seek$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((seek: number, index: number): boolean => index === 0 && seek === 0),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((seek: number): void => {\n seekAudio(entity, seek, entity.isPlaying);\n lastPausedPosition = seek;\n });\n\n loop$\n .pipe(\n // to avoid initial value (only if it's a default one)\n skipWhile((shouldLoop: boolean, index: number): boolean => index === 0 && !shouldLoop),\n takeUntil(wrapper.destroy$)\n )\n .subscribe((shouldLoop: boolean): void => void entity.setLoop(shouldLoop));\n\n const destroySub$: Subscription = wrapper.destroy$.subscribe((): void => {\n wrapper.entity.stop();\n destroyAudio(wrapper.entity as TAnyAudio);\n\n destroySub$.unsubscribe();\n\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.context = null as any;\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.gain = null as any;\n listener$.complete();\n\n play$.complete();\n pause$.complete();\n speed$.complete();\n seek$.complete();\n loop$.complete();\n volume$.complete();\n disposeAudio(entity);\n });\n\n // eslint-disable-next-line functional/immutable-data\n const result: TAbstractAudioWrapper<T> = Object.assign(wrapper, {\n play$,\n pause$,\n speed$,\n seek$,\n loop$,\n isPlaying: (): boolean => entity.isPlaying,\n getDuration: (): number | undefined => entity.buffer?.duration,\n volume$,\n listener$,\n serialize: (dependencies: TAudioConfigToParamsDependencies): TAnyAudioConfig => audioEntityToConfig(result, dependencies)\n });\n\n return result;\n}\n"],"names":["AbstractAudioWrapper","params","createFn","audioSource","volume","entity","listener$","BehaviorSubject","listener","play$","Subject","pause$","pause","speed$","speed","seek$","seek","loop$","loop","volume$","wrapper","AbstractWrapper","WrapperType","Audio","pipe","takeUntil","destroy$","subscribe","shouldPlay","isPlaying","play","stop","skipWhile","index","setVolume","lastPausedPosition","shouldPause","context","currentTime","next","setPlaybackRate","seekAudio","shouldLoop","setLoop","destroySub$","destroyAudio","unsubscribe","value","gain","complete","disposeAudio","result","Object","assign","getDuration","buffer","duration","serialize","dependencies","audioEntityToConfig"],"mappings":"ipBAUO,SAASA,qBAA0CC,OAAyBC,UACjF,MAAMC,YAAEA,YAAAC,OAAaA,QAAWH,OAC1BI,OAAYH,SAASC,YAAaF,QAClCK,UAAwD,IAAIC,gBAA2CN,OAAOO,UAE9GC,MAA0B,IAAIC,QAC9BC,OAAmC,IAAIJ,gBAAyBN,OAAOW,QAAS,GAChFC,OAAkC,IAAIN,gBAAwBN,OAAOa,OAAS,GAC9EC,MAAiC,IAAIR,gBAAwBN,OAAOe,MAAQ,GAC5EC,MAAkC,IAAIV,gBAAyBN,OAAOiB,OAAQ,GAC9EC,QAAmC,IAAIZ,gBAAwBH,QAAU,GAEzEgB,QAA+BC,gBAAgBhB,OAAQiB,YAAYC,MAAOtB,QAEhFQ,MAAMe,KAAKC,UAAUL,QAAQM,WAAWC,UAAWC,YAC7CA,aAAevB,OAAOwB,eAAuBxB,OAAOyB,YACvCzB,OAAO0B,QAG1BZ,QACGK,KAECQ,UAAU,CAAC5B,QAAgB6B,QAAqC,IAAVA,OAA0B,IAAX7B,SACrEqB,UAAUL,QAAQM,WAEnBC,UAAWvB,UAA8BC,OAAO6B,UAAU9B,WAE7D,IAAI+B,mBAA6B,EACjCxB,OACGa,KAECQ,UAAU,CAACI,YAAsBH,QAAqC,IAAVA,QAAgBG,aAC5EX,UAAUL,QAAQM,WAEnBC,UAAWS,cACNA,aAAe/B,OAAOwB,WACxBM,mBAAqB9B,OAAOgC,QAAQC,YACpC7B,MAAM8B,MAAK,KAEXxB,MAAMwB,KAAKJ,oBACX1B,MAAM8B,MAAK,MAIjB1B,OACGW,KAECQ,UAAU,CAAClB,MAAemB,QAAqC,IAAVA,OAAyB,IAAVnB,OACpEW,UAAUL,QAAQM,WAEnBC,UAAWb,QAA6BT,OAAOmC,gBAAgB1B,SAElEC,MACGS,KAECQ,UAAU,CAAChB,KAAciB,QAAqC,IAAVA,OAAwB,IAATjB,MACnES,UAAUL,QAAQM,WAEnBC,UAAWX,OACVyB,UAAUpC,OAAQW,KAAMX,OAAOwB,WAC/BM,mBAAqBnB,OAGzBC,MACGO,KAECQ,UAAU,CAACU,WAAqBT,QAAqC,IAAVA,QAAgBS,YAC3EjB,UAAUL,QAAQM,WAEnBC,UAAWe,aAAmCrC,OAAOsC,QAAQD,cAEhE,MAAME,YAA4BxB,QAAQM,SAASC,UAAU,KAC3DP,QAAQf,OAAO0B,OACfc,aAAazB,QAAQf,QAErBuC,YAAYE,cAGRxC,UAAUyC,QAAOzC,UAAUyC,MAAMV,QAAU,MAE3C/B,UAAUyC,QAAOzC,UAAUyC,MAAMC,KAAO,MAC5C1C,UAAU2C,WAEVxC,MAAMwC,WACNtC,OAAOsC,WACPpC,OAAOoC,WACPlC,MAAMkC,WACNhC,MAAMgC,WACN9B,QAAQ8B,WACRC,aAAa7C,UAIT8C,OAAmCC,OAAOC,OAAOjC,QAAS,CAC9DX,YACAE,cACAE,cACAE,YACAE,YACAY,UAAW,IAAexB,OAAOwB,UACjCyB,YAAa,IAA0BjD,OAAOkD,QAAQC,SACtDrC,gBACAb,oBACAmD,UAAYC,cAAoEC,oBAAoBR,OAAQO,gBAG9G,OAAOP,MACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"Audio3dWrapper.js","sources":["../../../src/Audio/Wrappers/Audio3dWrapper.ts"],"sourcesContent":["import type {\n TAbstractAudioWrapper,\n TAudio3dParams,\n TAudio3dPerformanceOptions,\n TAudio3dTransformDrive,\n TAudio3dWrapper,\n TAudioCreateFn,\n TAudioWrapperDependencies\n} from '@Anarchy/Engine/Audio/Models';\nimport { Audio3dTransformDrive } from '@Anarchy/Engine/Audio/TransformDrive';\nimport { createPositionalAudio, onAudioPositionUpdate } from '@Anarchy/Engine/Audio/Utils';\nimport { AbstractAudioWrapper } from '@Anarchy/Engine/Audio/Wrappers/AbstractAudioWrapper';\nimport { LoopUpdatePriority } from '@Anarchy/Engine/Loop';\nimport type { TMeters, TMilliseconds } from '@Anarchy/Engine/Math';\nimport { meters } from '@Anarchy/Engine/Measurements';\nimport type { TReadonlyVector3 } from '@Anarchy/Engine/ThreeLib';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Observable, Subscription } from 'rxjs';\nimport { BehaviorSubject, distinctUntilChanged, filter, sample, takeUntil } from 'rxjs';\nimport type { AudioListener, PositionalAudio, Vector3Like } from 'three';\n\nexport function Audio3dWrapper(params: TAudio3dParams, { audioLoop, transformDriveService }: TAudioWrapperDependencies): TAudio3dWrapper {\n const { performance } = params;\n const directionalCone$: BehaviorSubject<Vector3Like | undefined> = new BehaviorSubject<Vector3Like | undefined>(params.directionalCone);\n const wrapper: TAbstractAudioWrapper<PositionalAudio> = AbstractAudioWrapper(params, createPositionalAudio as TAudioCreateFn<PositionalAudio>);\n const listener$: BehaviorSubject<AudioListener | undefined> = new BehaviorSubject<AudioListener | undefined>(params.listener);\n\n directionalCone$\n .pipe(\n takeUntil(wrapper.destroy$),\n distinctUntilChanged((prev: Vector3Like | undefined, curr: Vector3Like | undefined): boolean => prev?.x === curr?.x && prev?.y === curr?.y && prev?.z === curr?.z)\n )\n .subscribe((directionalCone: Vector3Like | undefined): void => {\n if (isDefined(directionalCone)) wrapper.entity.setDirectionalCone(directionalCone.x, directionalCone.y, directionalCone.z);\n });\n\n const updatePriority: LoopUpdatePriority = performance?.updatePriority ?? LoopUpdatePriority.LOW;\n const noiseThreshold: TMeters = performance?.noiseThreshold ?? meters(0.01);\n\n const drive: TAudio3dTransformDrive = Audio3dTransformDrive(params, { transformDriveService }, wrapper.id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, wrapper.entity);\n\n const sourcePositionUpdate$: Observable<TReadonlyVector3> = onAudioPositionUpdate(drive.position$, noiseThreshold);\n\n const tickFiltered$: Observable<TMilliseconds> = audioLoop.tick$.pipe(filter((): boolean => audioLoop.shouldUpdateWithPriority(updatePriority)));\n\n sourcePositionUpdate$.pipe(sample(tickFiltered$), takeUntil(wrapper.destroy$)).subscribe((position: TReadonlyVector3): void => {\n void wrapper.entity.position.copy(position);\n wrapper.entity.updateMatrix();\n wrapper.entity.updateMatrixWorld(true);\n });\n\n const destroySub$: Subscription = wrapper.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.context = null as any;\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.gain = null as any;\n listener$.complete();\n });\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(wrapper, {\n drive,\n driveToTargetConnector,\n listener$,\n directionalCone$,\n getPerformance: (): TAudio3dPerformanceOptions | undefined => performance\n });\n}\n"],"names":["Audio3dWrapper","params","audioLoop","transformDriveService","performance","directionalCone$","BehaviorSubject","directionalCone","wrapper","AbstractAudioWrapper","createPositionalAudio","listener$","listener","pipe","takeUntil","destroy$","distinctUntilChanged","prev","curr","x","y","z","subscribe","isDefined","entity","setDirectionalCone","updatePriority","LoopUpdatePriority","LOW","noiseThreshold","meters","drive","Audio3dTransformDrive","id","driveToTargetConnector","DriveToTargetConnector","sourcePositionUpdate$","onAudioPositionUpdate","position$","tickFiltered$","tick$","filter","shouldUpdateWithPriority","sample","position","copy","updateMatrix","updateMatrixWorld","destroySub$","unsubscribe","value","context","gain","complete","Object","assign","getPerformance"],"mappings":"o+BAuBO,SAASA,eAAeC,QAAwBC,UAAEA,UAAAC,sBAAWA,wBAClE,MAAMC,YAAEA,aAAgBH,OAClBI,iBAA6D,IAAIC,gBAAyCL,OAAOM,iBACjHC,QAAkDC,qBAAqBR,OAAQS,uBAC/EC,UAAwD,IAAIL,gBAA2CL,OAAOW,UAEpHP,iBACGQ,KACCC,UAAUN,QAAQO,UAClBC,qBAAqB,CAACC,KAA+BC,OAA2CD,MAAME,IAAMD,MAAMC,GAAKF,MAAMG,IAAMF,MAAME,GAAKH,MAAMI,IAAMH,MAAMG,IAEjKC,UAAWf,kBACNgB,UAAUhB,kBAAkBC,QAAQgB,OAAOC,mBAAmBlB,gBAAgBY,EAAGZ,gBAAgBa,EAAGb,gBAAgBc,KAG5H,MAAMK,eAAqCtB,aAAasB,gBAAkBC,mBAAmBC,IACvFC,eAA0BzB,aAAayB,gBAAkBC,OAAO,KAEhEC,MAAgCC,sBAAsB/B,OAAQ,CAAEE,6CAAyBK,QAAQyB,IACjGC,uBAAkDC,uBAAuBJ,MAAOvB,QAAQgB,QAExFY,sBAAsDC,sBAAsBN,MAAMO,UAAWT,gBAE7FU,cAA2CrC,UAAUsC,MAAM3B,KAAK4B,OAAO,IAAevC,UAAUwC,yBAAyBhB,kBAE/HU,sBAAsBvB,KAAK8B,OAAOJ,eAAgBzB,UAAUN,QAAQO,WAAWO,UAAWsB,WACnFpC,QAAQgB,OAAOoB,SAASC,KAAKD,UAClCpC,QAAQgB,OAAOsB,eACftC,QAAQgB,OAAOuB,mBAAkB,KAGnC,MAAMC,YAA4BxC,QAAQO,SAASO,UAAU,KAC3D0B,YAAYC,cAERtC,UAAUuC,QAAOvC,UAAUuC,MAAMC,QAAU,MAE3CxC,UAAUuC,QAAOvC,UAAUuC,MAAME,KAAO,MAC5CzC,UAAU0C,aAIZ,OAAOC,OAAOC,OAAO/C,QAAS,CAC5BuB,YACAG,8CACAvB,oBACAN,kCACAmD,eAAgB,IAA8CpD,aAElE"}
1
+ {"version":3,"file":"Audio3dWrapper.js","sources":["../../../src/Audio/Wrappers/Audio3dWrapper.ts"],"sourcesContent":["import type {\n TAbstractAudioWrapper,\n TAudio3dParams,\n TAudio3dPerformanceOptions,\n TAudio3dTransformDrive,\n TAudio3dWrapper,\n TAudioCreateFn,\n TAudioWrapperDependencies\n} from '@hellpig/anarchy-engine/Audio/Models';\nimport { Audio3dTransformDrive } from '@hellpig/anarchy-engine/Audio/TransformDrive';\nimport { createPositionalAudio, onAudioPositionUpdate } from '@hellpig/anarchy-engine/Audio/Utils';\nimport { AbstractAudioWrapper } from '@hellpig/anarchy-engine/Audio/Wrappers/AbstractAudioWrapper';\nimport { LoopUpdatePriority } from '@hellpig/anarchy-engine/Loop';\nimport type { TMeters, TMilliseconds } from '@hellpig/anarchy-engine/Math';\nimport { meters } from '@hellpig/anarchy-engine/Measurements';\nimport type { TReadonlyVector3 } from '@hellpig/anarchy-engine/ThreeLib';\nimport type { TDriveToTargetConnector } from '@hellpig/anarchy-engine/TransformDrive';\nimport { DriveToTargetConnector } from '@hellpig/anarchy-engine/TransformDrive';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Observable, Subscription } from 'rxjs';\nimport { BehaviorSubject, distinctUntilChanged, filter, sample, takeUntil } from 'rxjs';\nimport type { AudioListener, PositionalAudio, Vector3Like } from 'three';\n\nexport function Audio3dWrapper(params: TAudio3dParams, { audioLoop, transformDriveService }: TAudioWrapperDependencies): TAudio3dWrapper {\n const { performance } = params;\n const directionalCone$: BehaviorSubject<Vector3Like | undefined> = new BehaviorSubject<Vector3Like | undefined>(params.directionalCone);\n const wrapper: TAbstractAudioWrapper<PositionalAudio> = AbstractAudioWrapper(params, createPositionalAudio as TAudioCreateFn<PositionalAudio>);\n const listener$: BehaviorSubject<AudioListener | undefined> = new BehaviorSubject<AudioListener | undefined>(params.listener);\n\n directionalCone$\n .pipe(\n takeUntil(wrapper.destroy$),\n distinctUntilChanged((prev: Vector3Like | undefined, curr: Vector3Like | undefined): boolean => prev?.x === curr?.x && prev?.y === curr?.y && prev?.z === curr?.z)\n )\n .subscribe((directionalCone: Vector3Like | undefined): void => {\n if (isDefined(directionalCone)) wrapper.entity.setDirectionalCone(directionalCone.x, directionalCone.y, directionalCone.z);\n });\n\n const updatePriority: LoopUpdatePriority = performance?.updatePriority ?? LoopUpdatePriority.LOW;\n const noiseThreshold: TMeters = performance?.noiseThreshold ?? meters(0.01);\n\n const drive: TAudio3dTransformDrive = Audio3dTransformDrive(params, { transformDriveService }, wrapper.id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, wrapper.entity);\n\n const sourcePositionUpdate$: Observable<TReadonlyVector3> = onAudioPositionUpdate(drive.position$, noiseThreshold);\n\n const tickFiltered$: Observable<TMilliseconds> = audioLoop.tick$.pipe(filter((): boolean => audioLoop.shouldUpdateWithPriority(updatePriority)));\n\n sourcePositionUpdate$.pipe(sample(tickFiltered$), takeUntil(wrapper.destroy$)).subscribe((position: TReadonlyVector3): void => {\n void wrapper.entity.position.copy(position);\n wrapper.entity.updateMatrix();\n wrapper.entity.updateMatrixWorld(true);\n });\n\n const destroySub$: Subscription = wrapper.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.context = null as any;\n // eslint-disable-next-line functional/immutable-data\n if (listener$.value) listener$.value.gain = null as any;\n listener$.complete();\n });\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(wrapper, {\n drive,\n driveToTargetConnector,\n listener$,\n directionalCone$,\n getPerformance: (): TAudio3dPerformanceOptions | undefined => performance\n });\n}\n"],"names":["Audio3dWrapper","params","audioLoop","transformDriveService","performance","directionalCone$","BehaviorSubject","directionalCone","wrapper","AbstractAudioWrapper","createPositionalAudio","listener$","listener","pipe","takeUntil","destroy$","distinctUntilChanged","prev","curr","x","y","z","subscribe","isDefined","entity","setDirectionalCone","updatePriority","LoopUpdatePriority","LOW","noiseThreshold","meters","drive","Audio3dTransformDrive","id","driveToTargetConnector","DriveToTargetConnector","sourcePositionUpdate$","onAudioPositionUpdate","position$","tickFiltered$","tick$","filter","shouldUpdateWithPriority","sample","position","copy","updateMatrix","updateMatrixWorld","destroySub$","unsubscribe","value","context","gain","complete","Object","assign","getPerformance"],"mappings":"o+BAuBO,SAASA,eAAeC,QAAwBC,UAAEA,UAAAC,sBAAWA,wBAClE,MAAMC,YAAEA,aAAgBH,OAClBI,iBAA6D,IAAIC,gBAAyCL,OAAOM,iBACjHC,QAAkDC,qBAAqBR,OAAQS,uBAC/EC,UAAwD,IAAIL,gBAA2CL,OAAOW,UAEpHP,iBACGQ,KACCC,UAAUN,QAAQO,UAClBC,qBAAqB,CAACC,KAA+BC,OAA2CD,MAAME,IAAMD,MAAMC,GAAKF,MAAMG,IAAMF,MAAME,GAAKH,MAAMI,IAAMH,MAAMG,IAEjKC,UAAWf,kBACNgB,UAAUhB,kBAAkBC,QAAQgB,OAAOC,mBAAmBlB,gBAAgBY,EAAGZ,gBAAgBa,EAAGb,gBAAgBc,KAG5H,MAAMK,eAAqCtB,aAAasB,gBAAkBC,mBAAmBC,IACvFC,eAA0BzB,aAAayB,gBAAkBC,OAAO,KAEhEC,MAAgCC,sBAAsB/B,OAAQ,CAAEE,6CAAyBK,QAAQyB,IACjGC,uBAAkDC,uBAAuBJ,MAAOvB,QAAQgB,QAExFY,sBAAsDC,sBAAsBN,MAAMO,UAAWT,gBAE7FU,cAA2CrC,UAAUsC,MAAM3B,KAAK4B,OAAO,IAAevC,UAAUwC,yBAAyBhB,kBAE/HU,sBAAsBvB,KAAK8B,OAAOJ,eAAgBzB,UAAUN,QAAQO,WAAWO,UAAWsB,WACnFpC,QAAQgB,OAAOoB,SAASC,KAAKD,UAClCpC,QAAQgB,OAAOsB,eACftC,QAAQgB,OAAOuB,mBAAkB,KAGnC,MAAMC,YAA4BxC,QAAQO,SAASO,UAAU,KAC3D0B,YAAYC,cAERtC,UAAUuC,QAAOvC,UAAUuC,MAAMC,QAAU,MAE3CxC,UAAUuC,QAAOvC,UAAUuC,MAAME,KAAO,MAC5CzC,UAAU0C,aAIZ,OAAOC,OAAOC,OAAO/C,QAAS,CAC5BuB,YACAG,8CACAvB,oBACAN,kCACAmD,eAAgB,IAA8CpD,aAElE"}
@@ -1 +1 @@
1
- {"version":3,"file":"AudioWrapper.js","sources":["../../../src/Audio/Wrappers/AudioWrapper.ts"],"sourcesContent":["import type { TAudioParams, TAudioWrapper } from '@Anarchy/Engine/Audio/Models';\nimport { createAudio } from '@Anarchy/Engine/Audio/Utils';\nimport { AbstractAudioWrapper } from '@Anarchy/Engine/Audio/Wrappers/AbstractAudioWrapper';\n\nexport function AudioWrapper(params: TAudioParams): TAudioWrapper {\n return AbstractAudioWrapper(params, createAudio);\n}\n"],"names":["AudioWrapper","params","AbstractAudioWrapper","createAudio"],"mappings":"4GAIO,SAASA,aAAaC,QAC3B,OAAOC,qBAAqBD,OAAQE,YACtC"}
1
+ {"version":3,"file":"AudioWrapper.js","sources":["../../../src/Audio/Wrappers/AudioWrapper.ts"],"sourcesContent":["import type { TAudioParams, TAudioWrapper } from '@hellpig/anarchy-engine/Audio/Models';\nimport { createAudio } from '@hellpig/anarchy-engine/Audio/Utils';\nimport { AbstractAudioWrapper } from '@hellpig/anarchy-engine/Audio/Wrappers/AbstractAudioWrapper';\n\nexport function AudioWrapper(params: TAudioParams): TAudioWrapper {\n return AbstractAudioWrapper(params, createAudio);\n}\n"],"names":["AudioWrapper","params","AbstractAudioWrapper","createAudio"],"mappings":"4GAIO,SAASA,aAAaC,QAC3B,OAAOC,qBAAqBD,OAAQE,YACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Camera/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TAudioService } from '@Anarchy/Engine/Audio';\nimport type { TAnyCameraParams, TCameraServiceDependencies, TCommonCameraConfig } from '@Anarchy/Engine/Camera/Models';\nimport type { TShadowCameraConfig, TShadowCameraParams } from '@Anarchy/Engine/Light';\nimport { object3dConfigToParams } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined, isNotDefined, omitInObjectWithoutMutation } from '@Anarchy/Shared/Utils';\nimport type { AudioListener } from 'three';\nimport { Vector3 } from 'three';\n\nexport function cameraConfigToParams(config: TCommonCameraConfig, { audioService }: TCameraServiceDependencies): TAnyCameraParams | never {\n let listener: AudioListener | undefined;\n if (isDefined(config.audioListener)) {\n listener = audioService.getListenersRegistry().findByKey(config.audioListener);\n if (isNotDefined(listener)) throw new Error(`Camera: cannot create camera from config: listener (\"${config.audioListener}\") is not found`);\n }\n\n return {\n ...configToParamsCameraOnly(config),\n ...configToParamsAudioListener(config, audioService)\n };\n}\n\nexport function configToParamsCameraOnly(config: TCommonCameraConfig): Omit<TAnyCameraParams, 'audioListener'> {\n const { position, rotation, scale, layers, name, isActive, type } = omitInObjectWithoutMutation(config, ['audioListener']);\n\n return {\n name,\n isActive,\n type,\n ...configToParamsCameraOptionsOnly(config),\n ...object3dConfigToParams({ position, rotation, scale, layers })\n };\n}\n\nexport function configToParamsCameraOptionsOnly(config: TCommonCameraConfig | TShadowCameraConfig): TShadowCameraParams {\n const { scale, layers, lookAt, up, ...rest } = omitInObjectWithoutMutation(config, ['audioListener' as any, 'audioListener', 'position', 'rotation', 'name', 'isActive', 'type']) as\n | TCommonCameraConfig\n | TShadowCameraConfig;\n\n return {\n ...rest,\n ...object3dConfigToParams({ scale, layers }),\n lookAt: lookAt ? new Vector3(lookAt.x, lookAt.y, lookAt.z) : undefined,\n up: up ? new Vector3(up.x, up.y, up.z) : undefined\n };\n}\n\nfunction configToParamsAudioListener(config: TCommonCameraConfig, audioService: TAudioService): Pick<TAnyCameraParams, 'audioListener'> {\n let audioListener: AudioListener | undefined;\n if (isDefined(config.audioListener)) {\n audioListener = audioService.getListenersRegistry().getByKey(config.audioListener);\n }\n\n return {\n audioListener\n };\n}\n"],"names":["cameraConfigToParams","config","audioService","listener","isDefined","audioListener","getListenersRegistry","findByKey","isNotDefined","Error","configToParamsCameraOnly","configToParamsAudioListener","position","rotation","scale","layers","name","isActive","type","omitInObjectWithoutMutation","configToParamsCameraOptionsOnly","object3dConfigToParams","lookAt","up","rest","Vector3","x","y","z","getByKey"],"mappings":"+RAQO,SAASA,qBAAqBC,QAA6BC,aAAEA,eAClE,IAAIC,SACJ,GAAIC,UAAUH,OAAOI,iBACnBF,SAAWD,aAAaI,uBAAuBC,UAAUN,OAAOI,eAC5DG,aAAaL,WAAW,MAAM,IAAIM,MAAM,wDAAwDR,OAAOI,gCAG7G,MAAO,IACFK,yBAAyBT,WACzBU,4BAA4BV,OAAQC,cAE3C,CAEO,SAASQ,yBAAyBT,QACvC,MAAMW,SAAEA,SAAAC,SAAUA,SAAAC,MAAUA,MAAAC,OAAOA,OAAAC,KAAQA,KAAAC,SAAMA,SAAAC,KAAUA,MAASC,4BAA4BlB,OAAQ,CAAC,kBAEzG,MAAO,CACLe,UACAC,kBACAC,aACGE,gCAAgCnB,WAChCoB,uBAAuB,CAAET,kBAAUC,kBAAUC,YAAOC,gBAE3D,CAEO,SAASK,gCAAgCnB,QAC9C,MAAMa,MAAEA,MAAAC,OAAOA,OAAAO,OAAQA,UAAQC,MAAOC,MAASL,4BAA4BlB,OAAQ,CAAC,gBAAwB,gBAAiB,WAAY,WAAY,OAAQ,WAAY,SAIzK,MAAO,IACFuB,QACAH,uBAAuB,CAAEP,YAAOC,gBACnCO,OAAQA,OAAS,IAAIG,QAAQH,OAAOI,EAAGJ,OAAOK,EAAGL,OAAOM,QAAK,EAC7DL,GAAIA,GAAK,IAAIE,QAAQF,GAAGG,EAAGH,GAAGI,EAAGJ,GAAGK,QAAK,EAE7C,CAEA,SAASjB,4BAA4BV,OAA6BC,cAChE,IAAIG,cAKJ,OAJID,UAAUH,OAAOI,iBACnBA,cAAgBH,aAAaI,uBAAuBuB,SAAS5B,OAAOI,gBAG/D,CACLA,4BAEJ"}
1
+ {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Camera/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TAudioService } from '@hellpig/anarchy-engine/Audio';\nimport type { TAnyCameraParams, TCameraServiceDependencies, TCommonCameraConfig } from '@hellpig/anarchy-engine/Camera/Models';\nimport type { TShadowCameraConfig, TShadowCameraParams } from '@hellpig/anarchy-engine/Light';\nimport { object3dConfigToParams } from '@hellpig/anarchy-engine/ThreeLib';\nimport { isDefined, isNotDefined, omitInObjectWithoutMutation } from '@hellpig/anarchy-shared/Utils';\nimport type { AudioListener } from 'three';\nimport { Vector3 } from 'three';\n\nexport function cameraConfigToParams(config: TCommonCameraConfig, { audioService }: TCameraServiceDependencies): TAnyCameraParams | never {\n let listener: AudioListener | undefined;\n if (isDefined(config.audioListener)) {\n listener = audioService.getListenersRegistry().findByKey(config.audioListener);\n if (isNotDefined(listener)) throw new Error(`Camera: cannot create camera from config: listener (\"${config.audioListener}\") is not found`);\n }\n\n return {\n ...configToParamsCameraOnly(config),\n ...configToParamsAudioListener(config, audioService)\n };\n}\n\nexport function configToParamsCameraOnly(config: TCommonCameraConfig): Omit<TAnyCameraParams, 'audioListener'> {\n const { position, rotation, scale, layers, name, isActive, type } = omitInObjectWithoutMutation(config, ['audioListener']);\n\n return {\n name,\n isActive,\n type,\n ...configToParamsCameraOptionsOnly(config),\n ...object3dConfigToParams({ position, rotation, scale, layers })\n };\n}\n\nexport function configToParamsCameraOptionsOnly(config: TCommonCameraConfig | TShadowCameraConfig): TShadowCameraParams {\n const { scale, layers, lookAt, up, ...rest } = omitInObjectWithoutMutation(config, ['audioListener' as any, 'audioListener', 'position', 'rotation', 'name', 'isActive', 'type']) as\n | TCommonCameraConfig\n | TShadowCameraConfig;\n\n return {\n ...rest,\n ...object3dConfigToParams({ scale, layers }),\n lookAt: lookAt ? new Vector3(lookAt.x, lookAt.y, lookAt.z) : undefined,\n up: up ? new Vector3(up.x, up.y, up.z) : undefined\n };\n}\n\nfunction configToParamsAudioListener(config: TCommonCameraConfig, audioService: TAudioService): Pick<TAnyCameraParams, 'audioListener'> {\n let audioListener: AudioListener | undefined;\n if (isDefined(config.audioListener)) {\n audioListener = audioService.getListenersRegistry().getByKey(config.audioListener);\n }\n\n return {\n audioListener\n };\n}\n"],"names":["cameraConfigToParams","config","audioService","listener","isDefined","audioListener","getListenersRegistry","findByKey","isNotDefined","Error","configToParamsCameraOnly","configToParamsAudioListener","position","rotation","scale","layers","name","isActive","type","omitInObjectWithoutMutation","configToParamsCameraOptionsOnly","object3dConfigToParams","lookAt","up","rest","Vector3","x","y","z","getByKey"],"mappings":"+RAQO,SAASA,qBAAqBC,QAA6BC,aAAEA,eAClE,IAAIC,SACJ,GAAIC,UAAUH,OAAOI,iBACnBF,SAAWD,aAAaI,uBAAuBC,UAAUN,OAAOI,eAC5DG,aAAaL,WAAW,MAAM,IAAIM,MAAM,wDAAwDR,OAAOI,gCAG7G,MAAO,IACFK,yBAAyBT,WACzBU,4BAA4BV,OAAQC,cAE3C,CAEO,SAASQ,yBAAyBT,QACvC,MAAMW,SAAEA,SAAAC,SAAUA,SAAAC,MAAUA,MAAAC,OAAOA,OAAAC,KAAQA,KAAAC,SAAMA,SAAAC,KAAUA,MAASC,4BAA4BlB,OAAQ,CAAC,kBAEzG,MAAO,CACLe,UACAC,kBACAC,aACGE,gCAAgCnB,WAChCoB,uBAAuB,CAAET,kBAAUC,kBAAUC,YAAOC,gBAE3D,CAEO,SAASK,gCAAgCnB,QAC9C,MAAMa,MAAEA,MAAAC,OAAOA,OAAAO,OAAQA,UAAQC,MAAOC,MAASL,4BAA4BlB,OAAQ,CAAC,gBAAwB,gBAAiB,WAAY,WAAY,OAAQ,WAAY,SAIzK,MAAO,IACFuB,QACAH,uBAAuB,CAAEP,YAAOC,gBACnCO,OAAQA,OAAS,IAAIG,QAAQH,OAAOI,EAAGJ,OAAOK,EAAGL,OAAOM,QAAK,EAC7DL,GAAIA,GAAK,IAAIE,QAAQF,GAAGG,EAAGH,GAAGI,EAAGJ,GAAGK,QAAK,EAE7C,CAEA,SAASjB,4BAA4BV,OAA6BC,cAChE,IAAIG,cAKJ,OAJID,UAAUH,OAAOI,iBACnBA,cAAgBH,aAAaI,uBAAuBuB,SAAS5B,OAAOI,gBAG/D,CACLA,4BAEJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Camera/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAudioService } from '@Anarchy/Engine/Audio';\nimport type {\n TAnyCameraConfig,\n TAnyCameraWrapper,\n TCameraWrapperDependencies,\n TCommonCameraConfig,\n TCommonCameraParams,\n TOrthographicCameraParams,\n TPerspectiveCameraOnlyConfig,\n TPerspectiveCameraParams\n} from '@Anarchy/Engine/Camera/Models';\nimport type { TOrthographicCameraOnlyConfig } from '@Anarchy/Engine/Camera/Models/TOrthographicCameraConfig';\nimport { isOrthographicCameraWrapper, isPerspectiveCameraWrapper } from '@Anarchy/Engine/Camera/Utils';\nimport type { TShadowCameraParams } from '@Anarchy/Engine/Light';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport { isVector3Like } from '@Anarchy/Engine/Utils';\nimport { filterOutEmptyFields, isDefined } from '@Anarchy/Shared/Utils';\nimport type { AudioListener, OrthographicCameraJSONObject, PerspectiveCameraJSONObject, Vector3Like } from 'three';\n\n// Sometimes Camera's \"drive\" might hold old values (position, rotation), cause controls might not update it (they are update values directly)\nexport function cameraEntityToConfig(entity: TAnyCameraWrapper, { audioService }: Pick<TCameraWrapperDependencies, 'audioService'>): TAnyCameraConfig {\n const { drive } = entity;\n\n const json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject = entity.entity.toJSON().object;\n\n return filterOutEmptyFields({\n audioListener: getAudioListenerName(json, audioService),\n ...getCameraOnlyConfig(entity),\n ...extractSerializableRegistrableFields(entity),\n ...drive.serialize()\n });\n}\n\nexport function getCameraOnlyConfig(entity: TAnyCameraWrapper): Omit<TCommonCameraConfig, 'position' | 'rotation' | 'audioListener'> & (TPerspectiveCameraOnlyConfig | TOrthographicCameraOnlyConfig) {\n const json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject = entity.entity.toJSON().object;\n\n let additionalConfig: TPerspectiveCameraOnlyConfig | TOrthographicCameraOnlyConfig = {};\n if (isPerspectiveCameraWrapper(entity)) additionalConfig = getPerspectiveCameraOnlyConfig(json as PerspectiveCameraJSONObject);\n if (isOrthographicCameraWrapper(entity)) additionalConfig = getOrthographicCameraOnlyConfig(json as OrthographicCameraJSONObject);\n\n return filterOutEmptyFields({\n name: entity.name,\n type: entity.getType(),\n isActive: entity.isActive(),\n ...getCommonCameraConfig(json),\n ...additionalConfig\n });\n}\n\nexport function getCommonCameraConfig(\n json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject | TCommonCameraParams | TShadowCameraParams\n): Omit<TCommonCameraConfig, 'position' | 'rotation' | 'audioListener' | 'name' | 'type' | 'isActive'> {\n let up: Vector3Like | undefined = undefined;\n if (isDefined(json.up)) {\n if (Array.isArray(json.up)) up = { x: (json.up as any)[0], y: (json.up as any)[1], z: (json.up as any)[2] };\n else if (isVector3Like(json.up)) up = { x: json.up.x, y: json.up.y, z: json.up.z };\n else throw new Error(`[Camera]: Cannot serialize: Invalid up vector provided in camera JSON: ${json.up}. Expected Vector3Like or array of numbers.`);\n }\n\n return {\n near: json.near,\n far: json.far,\n up,\n layers: json.layers,\n zoom: json.zoom\n };\n}\n\nexport function getPerspectiveCameraOnlyConfig({ fov, filmGauge, filmOffset, focus }: PerspectiveCameraJSONObject | TPerspectiveCameraParams): TPerspectiveCameraOnlyConfig {\n return { fov, filmGauge, filmOffset, focus };\n}\n\nexport function getOrthographicCameraOnlyConfig({ left, right, top, bottom }: OrthographicCameraJSONObject | TOrthographicCameraParams): TOrthographicCameraOnlyConfig {\n return { left, right, top, bottom };\n}\n\nfunction getAudioListenerName(json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject, audioService: TAudioService): string | undefined {\n let result: string | undefined = undefined;\n const listener: AudioListener | undefined = json.children?.find((child: any): boolean => child.type === 'AudioListener') as AudioListener | undefined;\n if (isDefined(listener)) {\n result = {} as any;\n const { uuid } = listener;\n result = audioService.getListenersRegistry().findKey((l: AudioListener): boolean => l.uuid === uuid);\n }\n return result;\n}\n"],"names":["cameraEntityToConfig","entity","audioService","drive","json","toJSON","object","filterOutEmptyFields","audioListener","getAudioListenerName","getCameraOnlyConfig","extractSerializableRegistrableFields","serialize","additionalConfig","isPerspectiveCameraWrapper","getPerspectiveCameraOnlyConfig","isOrthographicCameraWrapper","getOrthographicCameraOnlyConfig","name","type","getType","isActive","getCommonCameraConfig","up","isDefined","Array","isArray","x","y","z","isVector3Like","Error","near","far","layers","zoom","fov","filmGauge","filmOffset","focus","left","right","top","bottom","result","listener","children","find","child","uuid","getListenersRegistry","findKey","l"],"mappings":"uaAoBO,SAASA,qBAAqBC,QAA2BC,aAAEA,eAChE,MAAMC,MAAEA,OAAUF,OAEZG,KAAmEH,OAAOA,OAAOI,SAASC,OAEhG,OAAOC,qBAAqB,CAC1BC,cAAeC,qBAAqBL,KAAMF,iBACvCQ,oBAAoBT,WACpBU,qCAAqCV,WACrCE,MAAMS,aAEb,CAEO,SAASF,oBAAoBT,QAClC,MAAMG,KAAmEH,OAAOA,OAAOI,SAASC,OAEhG,IAAIO,iBAAiF,CAAA,EAIrF,OAHIC,2BAA2Bb,UAASY,iBAAmBE,+BAA+BX,OACtFY,4BAA4Bf,UAASY,iBAAmBI,gCAAgCb,OAErFG,qBAAqB,CAC1BW,KAAMjB,OAAOiB,KACbC,KAAMlB,OAAOmB,UACbC,SAAUpB,OAAOoB,cACdC,sBAAsBlB,SACtBS,kBAEP,CAEO,SAASS,sBACdlB,MAEA,IAAImB,GACJ,GAAIC,UAAUpB,KAAKmB,IACjB,GAAIE,MAAMC,QAAQtB,KAAKmB,IAAKA,GAAK,CAAEI,EAAIvB,KAAKmB,GAAW,GAAIK,EAAIxB,KAAKmB,GAAW,GAAIM,EAAIzB,KAAKmB,GAAW,QAAG,KACjGO,cAAc1B,KAAKmB,UACjB,IAAIQ,MAAM,0EAA0E3B,KAAKmB,iDADnEA,GAAK,CAAEI,EAAGvB,KAAKmB,GAAGI,EAAGC,EAAGxB,KAAKmB,GAAGK,EAAGC,EAAGzB,KAAKmB,GAAGM,EACoE,CAGrJ,MAAO,CACLG,KAAM5B,KAAK4B,KACXC,IAAK7B,KAAK6B,IACVV,MACAW,OAAQ9B,KAAK8B,OACbC,KAAM/B,KAAK+B,KAEf,CAEO,SAASpB,gCAA+BqB,IAAEA,IAAAC,UAAKA,UAAAC,WAAWA,WAAAC,MAAYA,QAC3E,MAAO,CAAEH,QAAKC,oBAAWC,sBAAYC,YACvC,CAEO,SAAStB,iCAAgCuB,KAAEA,KAAAC,MAAMA,MAAAC,IAAOA,IAAAC,OAAKA,SAClE,MAAO,CAAEH,UAAMC,YAAOC,QAAKC,cAC7B,CAEA,SAASlC,qBAAqBL,KAAkEF,cAC9F,IAAI0C,OACJ,MAAMC,SAAsCzC,KAAK0C,UAAUC,KAAMC,OAAuC,kBAAfA,MAAM7B,MAC/F,GAAIK,UAAUqB,UAAW,CACvBD,OAAS,CAAA,EACT,MAAMK,KAAEA,MAASJ,SACjBD,OAAS1C,aAAagD,uBAAuBC,QAASC,GAA8BA,EAAEH,OAASA,KACjG,CACA,OAAOL,MACT"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Camera/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAudioService } from '@hellpig/anarchy-engine/Audio';\nimport type {\n TAnyCameraConfig,\n TAnyCameraWrapper,\n TCameraWrapperDependencies,\n TCommonCameraConfig,\n TCommonCameraParams,\n TOrthographicCameraParams,\n TPerspectiveCameraOnlyConfig,\n TPerspectiveCameraParams\n} from '@hellpig/anarchy-engine/Camera/Models';\nimport type { TOrthographicCameraOnlyConfig } from '@hellpig/anarchy-engine/Camera/Models/TOrthographicCameraConfig';\nimport { isOrthographicCameraWrapper, isPerspectiveCameraWrapper } from '@hellpig/anarchy-engine/Camera/Utils';\nimport type { TShadowCameraParams } from '@hellpig/anarchy-engine/Light';\nimport { extractSerializableRegistrableFields } from '@hellpig/anarchy-engine/Mixins';\nimport { isVector3Like } from '@hellpig/anarchy-engine/Utils';\nimport { filterOutEmptyFields, isDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { AudioListener, OrthographicCameraJSONObject, PerspectiveCameraJSONObject, Vector3Like } from 'three';\n\n// Sometimes Camera's \"drive\" might hold old values (position, rotation), cause controls might not update it (they are update values directly)\nexport function cameraEntityToConfig(entity: TAnyCameraWrapper, { audioService }: Pick<TCameraWrapperDependencies, 'audioService'>): TAnyCameraConfig {\n const { drive } = entity;\n\n const json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject = entity.entity.toJSON().object;\n\n return filterOutEmptyFields({\n audioListener: getAudioListenerName(json, audioService),\n ...getCameraOnlyConfig(entity),\n ...extractSerializableRegistrableFields(entity),\n ...drive.serialize()\n });\n}\n\nexport function getCameraOnlyConfig(entity: TAnyCameraWrapper): Omit<TCommonCameraConfig, 'position' | 'rotation' | 'audioListener'> & (TPerspectiveCameraOnlyConfig | TOrthographicCameraOnlyConfig) {\n const json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject = entity.entity.toJSON().object;\n\n let additionalConfig: TPerspectiveCameraOnlyConfig | TOrthographicCameraOnlyConfig = {};\n if (isPerspectiveCameraWrapper(entity)) additionalConfig = getPerspectiveCameraOnlyConfig(json as PerspectiveCameraJSONObject);\n if (isOrthographicCameraWrapper(entity)) additionalConfig = getOrthographicCameraOnlyConfig(json as OrthographicCameraJSONObject);\n\n return filterOutEmptyFields({\n name: entity.name,\n type: entity.getType(),\n isActive: entity.isActive(),\n ...getCommonCameraConfig(json),\n ...additionalConfig\n });\n}\n\nexport function getCommonCameraConfig(\n json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject | TCommonCameraParams | TShadowCameraParams\n): Omit<TCommonCameraConfig, 'position' | 'rotation' | 'audioListener' | 'name' | 'type' | 'isActive'> {\n let up: Vector3Like | undefined = undefined;\n if (isDefined(json.up)) {\n if (Array.isArray(json.up)) up = { x: (json.up as any)[0], y: (json.up as any)[1], z: (json.up as any)[2] };\n else if (isVector3Like(json.up)) up = { x: json.up.x, y: json.up.y, z: json.up.z };\n else throw new Error(`[Camera]: Cannot serialize: Invalid up vector provided in camera JSON: ${json.up}. Expected Vector3Like or array of numbers.`);\n }\n\n return {\n near: json.near,\n far: json.far,\n up,\n layers: json.layers,\n zoom: json.zoom\n };\n}\n\nexport function getPerspectiveCameraOnlyConfig({ fov, filmGauge, filmOffset, focus }: PerspectiveCameraJSONObject | TPerspectiveCameraParams): TPerspectiveCameraOnlyConfig {\n return { fov, filmGauge, filmOffset, focus };\n}\n\nexport function getOrthographicCameraOnlyConfig({ left, right, top, bottom }: OrthographicCameraJSONObject | TOrthographicCameraParams): TOrthographicCameraOnlyConfig {\n return { left, right, top, bottom };\n}\n\nfunction getAudioListenerName(json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject, audioService: TAudioService): string | undefined {\n let result: string | undefined = undefined;\n const listener: AudioListener | undefined = json.children?.find((child: any): boolean => child.type === 'AudioListener') as AudioListener | undefined;\n if (isDefined(listener)) {\n result = {} as any;\n const { uuid } = listener;\n result = audioService.getListenersRegistry().findKey((l: AudioListener): boolean => l.uuid === uuid);\n }\n return result;\n}\n"],"names":["cameraEntityToConfig","entity","audioService","drive","json","toJSON","object","filterOutEmptyFields","audioListener","getAudioListenerName","getCameraOnlyConfig","extractSerializableRegistrableFields","serialize","additionalConfig","isPerspectiveCameraWrapper","getPerspectiveCameraOnlyConfig","isOrthographicCameraWrapper","getOrthographicCameraOnlyConfig","name","type","getType","isActive","getCommonCameraConfig","up","isDefined","Array","isArray","x","y","z","isVector3Like","Error","near","far","layers","zoom","fov","filmGauge","filmOffset","focus","left","right","top","bottom","result","listener","children","find","child","uuid","getListenersRegistry","findKey","l"],"mappings":"uaAoBO,SAASA,qBAAqBC,QAA2BC,aAAEA,eAChE,MAAMC,MAAEA,OAAUF,OAEZG,KAAmEH,OAAOA,OAAOI,SAASC,OAEhG,OAAOC,qBAAqB,CAC1BC,cAAeC,qBAAqBL,KAAMF,iBACvCQ,oBAAoBT,WACpBU,qCAAqCV,WACrCE,MAAMS,aAEb,CAEO,SAASF,oBAAoBT,QAClC,MAAMG,KAAmEH,OAAOA,OAAOI,SAASC,OAEhG,IAAIO,iBAAiF,CAAA,EAIrF,OAHIC,2BAA2Bb,UAASY,iBAAmBE,+BAA+BX,OACtFY,4BAA4Bf,UAASY,iBAAmBI,gCAAgCb,OAErFG,qBAAqB,CAC1BW,KAAMjB,OAAOiB,KACbC,KAAMlB,OAAOmB,UACbC,SAAUpB,OAAOoB,cACdC,sBAAsBlB,SACtBS,kBAEP,CAEO,SAASS,sBACdlB,MAEA,IAAImB,GACJ,GAAIC,UAAUpB,KAAKmB,IACjB,GAAIE,MAAMC,QAAQtB,KAAKmB,IAAKA,GAAK,CAAEI,EAAIvB,KAAKmB,GAAW,GAAIK,EAAIxB,KAAKmB,GAAW,GAAIM,EAAIzB,KAAKmB,GAAW,QAAG,KACjGO,cAAc1B,KAAKmB,UACjB,IAAIQ,MAAM,0EAA0E3B,KAAKmB,iDADnEA,GAAK,CAAEI,EAAGvB,KAAKmB,GAAGI,EAAGC,EAAGxB,KAAKmB,GAAGK,EAAGC,EAAGzB,KAAKmB,GAAGM,EACoE,CAGrJ,MAAO,CACLG,KAAM5B,KAAK4B,KACXC,IAAK7B,KAAK6B,IACVV,MACAW,OAAQ9B,KAAK8B,OACbC,KAAM/B,KAAK+B,KAEf,CAEO,SAASpB,gCAA+BqB,IAAEA,IAAAC,UAAKA,UAAAC,WAAWA,WAAAC,MAAYA,QAC3E,MAAO,CAAEH,QAAKC,oBAAWC,sBAAYC,YACvC,CAEO,SAAStB,iCAAgCuB,KAAEA,KAAAC,MAAMA,MAAAC,IAAOA,IAAAC,OAAKA,SAClE,MAAO,CAAEH,UAAMC,YAAOC,QAAKC,cAC7B,CAEA,SAASlC,qBAAqBL,KAAkEF,cAC9F,IAAI0C,OACJ,MAAMC,SAAsCzC,KAAK0C,UAAUC,KAAMC,OAAuC,kBAAfA,MAAM7B,MAC/F,GAAIK,UAAUqB,UAAW,CACvBD,OAAS,CAAA,EACT,MAAMK,KAAEA,MAASJ,SACjBD,OAAS1C,aAAagD,uBAAuBC,QAASC,GAA8BA,EAAEH,OAASA,KACjG,CACA,OAAOL,MACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"CameraFactory.js","sources":["../../../src/Camera/Factories/CameraFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { configToParamsCamera } from '@Anarchy/Engine/Camera/Adapters';\nimport type { TAnyCameraParams, TAnyCameraWrapper, TCameraFactory, TCameraServiceDependencies } from '@Anarchy/Engine/Camera/Models';\nimport { isOrthographicCameraParams, isPerspectiveCameraParams } from '@Anarchy/Engine/Camera/Utils';\nimport { OrthographicCameraWrapper, PerspectiveCameraWrapper } from '@Anarchy/Engine/Camera/Wrappers';\n\nfunction create(params: TAnyCameraParams, deps: TCameraServiceDependencies): TAnyCameraWrapper | never {\n if (isPerspectiveCameraParams(params)) return PerspectiveCameraWrapper(params, deps);\n if (isOrthographicCameraParams(params)) return OrthographicCameraWrapper(params, deps);\n else throw new Error(`[CameraFactory]: Cannot create camera from params: unknown camera type \"${(params as any).type}\"`);\n}\n\nexport function CameraFactory(): TCameraFactory {\n const factory: TReactiveFactory<TAnyCameraWrapper, TAnyCameraParams, TCameraServiceDependencies> = ReactiveFactory(FactoryType.Camera, create);\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: configToParamsCamera });\n}\n"],"names":["create","params","deps","isPerspectiveCameraParams","PerspectiveCameraWrapper","isOrthographicCameraParams","OrthographicCameraWrapper","Error","type","CameraFactory","factory","ReactiveFactory","FactoryType","Camera","Object","assign","configToParams","configToParamsCamera"],"mappings":"kcAOA,SAASA,OAAOC,OAA0BC,MACxC,GAAIC,0BAA0BF,QAAS,OAAOG,yBAAyBH,OAAQC,MAC/E,GAAIG,2BAA2BJ,QAAS,OAAOK,0BAA0BL,OAAQC,YACtE,IAAIK,MAAM,2EAA4EN,OAAeO,QAClH,CAEO,SAASC,gBACd,MAAMC,QAA6FC,gBAAgBC,YAAYC,OAAQb,QAEvI,OAAOc,OAAOC,OAAOL,QAAS,CAAEM,eAAgBC,sBAClD"}
1
+ {"version":3,"file":"CameraFactory.js","sources":["../../../src/Camera/Factories/CameraFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { configToParamsCamera } from '@hellpig/anarchy-engine/Camera/Adapters';\nimport type { TAnyCameraParams, TAnyCameraWrapper, TCameraFactory, TCameraServiceDependencies } from '@hellpig/anarchy-engine/Camera/Models';\nimport { isOrthographicCameraParams, isPerspectiveCameraParams } from '@hellpig/anarchy-engine/Camera/Utils';\nimport { OrthographicCameraWrapper, PerspectiveCameraWrapper } from '@hellpig/anarchy-engine/Camera/Wrappers';\n\nfunction create(params: TAnyCameraParams, deps: TCameraServiceDependencies): TAnyCameraWrapper | never {\n if (isPerspectiveCameraParams(params)) return PerspectiveCameraWrapper(params, deps);\n if (isOrthographicCameraParams(params)) return OrthographicCameraWrapper(params, deps);\n else throw new Error(`[CameraFactory]: Cannot create camera from params: unknown camera type \"${(params as any).type}\"`);\n}\n\nexport function CameraFactory(): TCameraFactory {\n const factory: TReactiveFactory<TAnyCameraWrapper, TAnyCameraParams, TCameraServiceDependencies> = ReactiveFactory(FactoryType.Camera, create);\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: configToParamsCamera });\n}\n"],"names":["create","params","deps","isPerspectiveCameraParams","PerspectiveCameraWrapper","isOrthographicCameraParams","OrthographicCameraWrapper","Error","type","CameraFactory","factory","ReactiveFactory","FactoryType","Camera","Object","assign","configToParams","configToParamsCamera"],"mappings":"kcAOA,SAASA,OAAOC,OAA0BC,MACxC,GAAIC,0BAA0BF,QAAS,OAAOG,yBAAyBH,OAAQC,MAC/E,GAAIG,2BAA2BJ,QAAS,OAAOK,0BAA0BL,OAAQC,YACtE,IAAIK,MAAM,2EAA4EN,OAAeO,QAClH,CAEO,SAASC,gBACd,MAAMC,QAA6FC,gBAAgBC,YAAYC,OAAQb,QAEvI,OAAOc,OAAOC,OAAOL,QAAS,CAAEM,eAAgBC,sBAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractCameraRegistry.js","sources":["../../../src/Camera/Registries/AbstractCameraRegistry.ts"],"sourcesContent":["import { RegistryType } from '@Anarchy/Engine/Abstract/Constants';\nimport { AbstractEntityRegistry } from '@Anarchy/Engine/Abstract/Registries';\nimport type { TAbstractCameraRegistry, TAnyCameraWrapper } from '@Anarchy/Engine/Camera/Models';\n\nexport function AbstractCameraRegistry(): TAbstractCameraRegistry {\n return AbstractEntityRegistry<TAnyCameraWrapper>(RegistryType.Camera);\n}\n"],"names":["AbstractCameraRegistry","AbstractEntityRegistry","RegistryType","Camera"],"mappings":"2JAIO,SAASA,yBACd,OAAOC,uBAA0CC,aAAaC,OAChE"}
1
+ {"version":3,"file":"AbstractCameraRegistry.js","sources":["../../../src/Camera/Registries/AbstractCameraRegistry.ts"],"sourcesContent":["import { RegistryType } from '@hellpig/anarchy-engine/Abstract/Constants';\nimport { AbstractEntityRegistry } from '@hellpig/anarchy-engine/Abstract/Registries';\nimport type { TAbstractCameraRegistry, TAnyCameraWrapper } from '@hellpig/anarchy-engine/Camera/Models';\n\nexport function AbstractCameraRegistry(): TAbstractCameraRegistry {\n return AbstractEntityRegistry<TAnyCameraWrapper>(RegistryType.Camera);\n}\n"],"names":["AbstractCameraRegistry","AbstractEntityRegistry","RegistryType","Camera"],"mappings":"2JAIO,SAASA,yBACd,OAAOC,uBAA0CC,aAAaC,OAChE"}
@@ -1 +1 @@
1
- {"version":3,"file":"CameraService.js","sources":["../../../src/Camera/Services/CameraService.ts"],"sourcesContent":["import type { TAbstractService, TRegistryPack } from '@Anarchy/Engine/Abstract';\nimport { AbstractService } from '@Anarchy/Engine/Abstract';\nimport type {\n TAnyCameraConfig,\n TAnyCameraWrapper,\n TCameraFactory,\n TCameraRegistry,\n TCameraService,\n TCameraServiceDependencies,\n TCameraServiceWithCreate,\n TCameraServiceWithCreateFromConfig,\n TCameraServiceWithFactory,\n TCameraServiceWithRegistry,\n TCameraWrapperDependencies\n} from '@Anarchy/Engine/Camera/Models';\nimport { isOrthographicCameraWrapper, isPerspectiveCameraWrapper } from '@Anarchy/Engine/Camera/Utils';\nimport type { TDisposable, TWithActiveMixinResult } from '@Anarchy/Engine/Mixins';\nimport {\n withActiveEntityServiceMixin,\n withCreateFromConfigServiceMixin,\n withCreateServiceMixin,\n withFactoryService,\n withRegistryService,\n withSceneGetterService,\n withSerializableEntities\n} from '@Anarchy/Engine/Mixins';\nimport type { TSceneWrapper } from '@Anarchy/Engine/Scene';\nimport { mergeAll } from '@Anarchy/Engine/Utils';\nimport { isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs';\n\nexport function CameraService(factory: TCameraFactory, registry: TCameraRegistry, scene: TSceneWrapper, dependencies: TCameraServiceDependencies): TCameraService {\n const withActive: TWithActiveMixinResult<TAnyCameraWrapper> = withActiveEntityServiceMixin<TAnyCameraWrapper>(registry);\n const registrySub$: Subscription = registry.added$.subscribe(({ value }: TRegistryPack<TAnyCameraWrapper>): void => {\n scene.addCamera(value);\n if (value.isActive()) withActive.active$.next(value);\n });\n const factorySub$: Subscription = factory.entityCreated$.subscribe((wrapper: TAnyCameraWrapper): void => registry.add(wrapper));\n const disposable: ReadonlyArray<TDisposable> = [registry, factory, registrySub$, factorySub$];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n // TODO 9.2.0 ACTIVE: Rework ACTIVE mixin to active$ (add hooks to apply ratio). Do the same for all entities with active\n const findActive = withActive.findActive;\n\n // TODO 9.2.0 ACTIVE: This could be moved in active$ camera and applied in onActive hook\n function startUpdatingCamerasAspect(shouldUpdateOnlyActiveCamera: boolean = false): void {\n dependencies.container.resize$\n .pipe(\n distinctUntilChanged((prev: DOMRect, curr: DOMRect): boolean => prev.width === curr.width && prev.height === curr.height),\n takeUntil(abstractService.destroy$)\n )\n .subscribe((params: DOMRect): void => {\n if (shouldUpdateOnlyActiveCamera) {\n const activeCamera: TAnyCameraWrapper | undefined = findActive();\n if (isNotDefined(activeCamera)) throw new Error('Cannot find an active camera during the aspect update.');\n if (isPerspectiveCameraWrapper(activeCamera)) activeCamera.setAspect(params.width / params.height);\n if (isOrthographicCameraWrapper(activeCamera)) activeCamera.setAspect(params.width, params.height);\n } else {\n registry.forEach((camera: TAnyCameraWrapper): void => {\n if (isPerspectiveCameraWrapper(camera)) camera.setAspect(params.width / params.height);\n if (isOrthographicCameraWrapper(camera)) camera.setAspect(params.width, params.height);\n });\n }\n });\n }\n\n startUpdatingCamerasAspect(false);\n\n const withCreateService: TCameraServiceWithCreate = withCreateServiceMixin(factory, dependencies);\n const withCreateFromConfigService: TCameraServiceWithCreateFromConfig = withCreateFromConfigServiceMixin(withCreateService.create, factory.configToParams, dependencies);\n const withFactory: TCameraServiceWithFactory = withFactoryService(factory);\n const withRegistry: TCameraServiceWithRegistry = withRegistryService(registry);\n\n const destroySub$: Subscription = abstractService.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n withActive.active$.complete();\n });\n\n return mergeAll(\n abstractService,\n withCreateService,\n withCreateFromConfigService,\n withRegistry,\n withFactory,\n withSceneGetterService(scene),\n withSerializableEntities<TAnyCameraWrapper, TAnyCameraConfig, Pick<TCameraWrapperDependencies, 'audioService'>>(registry, { audioService: dependencies.audioService }),\n {\n setActive: withActive.setActive,\n findActive,\n getActive: withActive.getActive,\n active$: withActive.active$,\n startUpdatingCamerasAspect\n }\n );\n}\n"],"names":["CameraService","factory","registry","scene","dependencies","withActive","withActiveEntityServiceMixin","registrySub$","added$","subscribe","value","addCamera","isActive","active$","next","factorySub$","entityCreated$","wrapper","add","abstractService","AbstractService","findActive","startUpdatingCamerasAspect","shouldUpdateOnlyActiveCamera","container","resize$","pipe","distinctUntilChanged","prev","curr","width","height","takeUntil","destroy$","params","activeCamera","isNotDefined","Error","isPerspectiveCameraWrapper","setAspect","isOrthographicCameraWrapper","forEach","camera","withCreateService","withCreateServiceMixin","withCreateFromConfigService","withCreateFromConfigServiceMixin","create","configToParams","withFactory","withFactoryService","withRegistry","withRegistryService","destroySub$","unsubscribe","complete","mergeAll","withSceneGetterService","withSerializableEntities","audioService","setActive","getActive"],"mappings":"qkCAgCO,SAASA,cAAcC,QAAyBC,SAA2BC,MAAsBC,cACtG,MAAMC,WAAwDC,6BAAgDJ,UACxGK,aAA6BL,SAASM,OAAOC,UAAU,EAAGC,gBAC9DP,MAAMQ,UAAUD,OACZA,MAAME,YAAYP,WAAWQ,QAAQC,KAAKJ,SAE1CK,YAA4Bd,QAAQe,eAAeP,UAAWQ,SAAqCf,SAASgB,IAAID,UAEhHE,gBAAoCC,gBADK,CAAClB,SAAUD,QAASM,aAAcQ,cAI3EM,WAAahB,WAAWgB,WAG9B,SAASC,2BAA2BC,8BAAwC,GAC1EnB,aAAaoB,UAAUC,QACpBC,KACCC,qBAAqB,CAACC,KAAeC,OAA2BD,KAAKE,QAAUD,KAAKC,OAASF,KAAKG,SAAWF,KAAKE,QAClHC,UAAUb,gBAAgBc,WAE3BxB,UAAWyB,SACV,GAAIX,6BAA8B,CAChC,MAAMY,aAA8Cd,aACpD,GAAIe,aAAaD,cAAe,MAAM,IAAIE,MAAM,0DAC5CC,2BAA2BH,eAAeA,aAAaI,UAAUL,OAAOJ,MAAQI,OAAOH,QACvFS,4BAA4BL,eAAeA,aAAaI,UAAUL,OAAOJ,MAAOI,OAAOH,OAC7F,MACE7B,SAASuC,QAASC,SACZJ,2BAA2BI,SAASA,OAAOH,UAAUL,OAAOJ,MAAQI,OAAOH,QAC3ES,4BAA4BE,SAASA,OAAOH,UAAUL,OAAOJ,MAAOI,OAAOH,WAIzF,CAEAT,4BAA2B,GAE3B,MAAMqB,kBAA8CC,uBAAuB3C,QAASG,cAC9EyC,4BAAkEC,iCAAiCH,kBAAkBI,OAAQ9C,QAAQ+C,eAAgB5C,cACrJ6C,YAAyCC,mBAAmBjD,SAC5DkD,aAA2CC,oBAAoBlD,UAE/DmD,YAA4BlC,gBAAgBc,SAASxB,UAAU,KACnE4C,YAAYC,cACZjD,WAAWQ,QAAQ0C,aAGrB,OAAOC,SACLrC,gBACAwB,kBACAE,4BACAM,aACAF,YACAQ,uBAAuBtD,OACvBuD,yBAAgHxD,SAAU,CAAEyD,aAAcvD,aAAauD,eACvJ,CACEC,UAAWvD,WAAWuD,UACtBvC,sBACAwC,UAAWxD,WAAWwD,UACtBhD,QAASR,WAAWQ,QACpBS,uDAGN"}
1
+ {"version":3,"file":"CameraService.js","sources":["../../../src/Camera/Services/CameraService.ts"],"sourcesContent":["import type { TAbstractService, TRegistryPack } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport type {\n TAnyCameraConfig,\n TAnyCameraWrapper,\n TCameraFactory,\n TCameraRegistry,\n TCameraService,\n TCameraServiceDependencies,\n TCameraServiceWithCreate,\n TCameraServiceWithCreateFromConfig,\n TCameraServiceWithFactory,\n TCameraServiceWithRegistry,\n TCameraWrapperDependencies\n} from '@hellpig/anarchy-engine/Camera/Models';\nimport { isOrthographicCameraWrapper, isPerspectiveCameraWrapper } from '@hellpig/anarchy-engine/Camera/Utils';\nimport type { TDisposable, TWithActiveMixinResult } from '@hellpig/anarchy-engine/Mixins';\nimport {\n withActiveEntityServiceMixin,\n withCreateFromConfigServiceMixin,\n withCreateServiceMixin,\n withFactoryService,\n withRegistryService,\n withSceneGetterService,\n withSerializableEntities\n} from '@hellpig/anarchy-engine/Mixins';\nimport type { TSceneWrapper } from '@hellpig/anarchy-engine/Scene';\nimport { mergeAll } from '@hellpig/anarchy-engine/Utils';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs';\n\nexport function CameraService(factory: TCameraFactory, registry: TCameraRegistry, scene: TSceneWrapper, dependencies: TCameraServiceDependencies): TCameraService {\n const withActive: TWithActiveMixinResult<TAnyCameraWrapper> = withActiveEntityServiceMixin<TAnyCameraWrapper>(registry);\n const registrySub$: Subscription = registry.added$.subscribe(({ value }: TRegistryPack<TAnyCameraWrapper>): void => {\n scene.addCamera(value);\n if (value.isActive()) withActive.active$.next(value);\n });\n const factorySub$: Subscription = factory.entityCreated$.subscribe((wrapper: TAnyCameraWrapper): void => registry.add(wrapper));\n const disposable: ReadonlyArray<TDisposable> = [registry, factory, registrySub$, factorySub$];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n // TODO 9.2.0 ACTIVE: Rework ACTIVE mixin to active$ (add hooks to apply ratio). Do the same for all entities with active\n const findActive = withActive.findActive;\n\n // TODO 9.2.0 ACTIVE: This could be moved in active$ camera and applied in onActive hook\n function startUpdatingCamerasAspect(shouldUpdateOnlyActiveCamera: boolean = false): void {\n dependencies.container.resize$\n .pipe(\n distinctUntilChanged((prev: DOMRect, curr: DOMRect): boolean => prev.width === curr.width && prev.height === curr.height),\n takeUntil(abstractService.destroy$)\n )\n .subscribe((params: DOMRect): void => {\n if (shouldUpdateOnlyActiveCamera) {\n const activeCamera: TAnyCameraWrapper | undefined = findActive();\n if (isNotDefined(activeCamera)) throw new Error('Cannot find an active camera during the aspect update.');\n if (isPerspectiveCameraWrapper(activeCamera)) activeCamera.setAspect(params.width / params.height);\n if (isOrthographicCameraWrapper(activeCamera)) activeCamera.setAspect(params.width, params.height);\n } else {\n registry.forEach((camera: TAnyCameraWrapper): void => {\n if (isPerspectiveCameraWrapper(camera)) camera.setAspect(params.width / params.height);\n if (isOrthographicCameraWrapper(camera)) camera.setAspect(params.width, params.height);\n });\n }\n });\n }\n\n startUpdatingCamerasAspect(false);\n\n const withCreateService: TCameraServiceWithCreate = withCreateServiceMixin(factory, dependencies);\n const withCreateFromConfigService: TCameraServiceWithCreateFromConfig = withCreateFromConfigServiceMixin(withCreateService.create, factory.configToParams, dependencies);\n const withFactory: TCameraServiceWithFactory = withFactoryService(factory);\n const withRegistry: TCameraServiceWithRegistry = withRegistryService(registry);\n\n const destroySub$: Subscription = abstractService.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n withActive.active$.complete();\n });\n\n return mergeAll(\n abstractService,\n withCreateService,\n withCreateFromConfigService,\n withRegistry,\n withFactory,\n withSceneGetterService(scene),\n withSerializableEntities<TAnyCameraWrapper, TAnyCameraConfig, Pick<TCameraWrapperDependencies, 'audioService'>>(registry, { audioService: dependencies.audioService }),\n {\n setActive: withActive.setActive,\n findActive,\n getActive: withActive.getActive,\n active$: withActive.active$,\n startUpdatingCamerasAspect\n }\n );\n}\n"],"names":["CameraService","factory","registry","scene","dependencies","withActive","withActiveEntityServiceMixin","registrySub$","added$","subscribe","value","addCamera","isActive","active$","next","factorySub$","entityCreated$","wrapper","add","abstractService","AbstractService","findActive","startUpdatingCamerasAspect","shouldUpdateOnlyActiveCamera","container","resize$","pipe","distinctUntilChanged","prev","curr","width","height","takeUntil","destroy$","params","activeCamera","isNotDefined","Error","isPerspectiveCameraWrapper","setAspect","isOrthographicCameraWrapper","forEach","camera","withCreateService","withCreateServiceMixin","withCreateFromConfigService","withCreateFromConfigServiceMixin","create","configToParams","withFactory","withFactoryService","withRegistry","withRegistryService","destroySub$","unsubscribe","complete","mergeAll","withSceneGetterService","withSerializableEntities","audioService","setActive","getActive"],"mappings":"qkCAgCO,SAASA,cAAcC,QAAyBC,SAA2BC,MAAsBC,cACtG,MAAMC,WAAwDC,6BAAgDJ,UACxGK,aAA6BL,SAASM,OAAOC,UAAU,EAAGC,gBAC9DP,MAAMQ,UAAUD,OACZA,MAAME,YAAYP,WAAWQ,QAAQC,KAAKJ,SAE1CK,YAA4Bd,QAAQe,eAAeP,UAAWQ,SAAqCf,SAASgB,IAAID,UAEhHE,gBAAoCC,gBADK,CAAClB,SAAUD,QAASM,aAAcQ,cAI3EM,WAAahB,WAAWgB,WAG9B,SAASC,2BAA2BC,8BAAwC,GAC1EnB,aAAaoB,UAAUC,QACpBC,KACCC,qBAAqB,CAACC,KAAeC,OAA2BD,KAAKE,QAAUD,KAAKC,OAASF,KAAKG,SAAWF,KAAKE,QAClHC,UAAUb,gBAAgBc,WAE3BxB,UAAWyB,SACV,GAAIX,6BAA8B,CAChC,MAAMY,aAA8Cd,aACpD,GAAIe,aAAaD,cAAe,MAAM,IAAIE,MAAM,0DAC5CC,2BAA2BH,eAAeA,aAAaI,UAAUL,OAAOJ,MAAQI,OAAOH,QACvFS,4BAA4BL,eAAeA,aAAaI,UAAUL,OAAOJ,MAAOI,OAAOH,OAC7F,MACE7B,SAASuC,QAASC,SACZJ,2BAA2BI,SAASA,OAAOH,UAAUL,OAAOJ,MAAQI,OAAOH,QAC3ES,4BAA4BE,SAASA,OAAOH,UAAUL,OAAOJ,MAAOI,OAAOH,WAIzF,CAEAT,4BAA2B,GAE3B,MAAMqB,kBAA8CC,uBAAuB3C,QAASG,cAC9EyC,4BAAkEC,iCAAiCH,kBAAkBI,OAAQ9C,QAAQ+C,eAAgB5C,cACrJ6C,YAAyCC,mBAAmBjD,SAC5DkD,aAA2CC,oBAAoBlD,UAE/DmD,YAA4BlC,gBAAgBc,SAASxB,UAAU,KACnE4C,YAAYC,cACZjD,WAAWQ,QAAQ0C,aAGrB,OAAOC,SACLrC,gBACAwB,kBACAE,4BACAM,aACAF,YACAQ,uBAAuBtD,OACvBuD,yBAAgHxD,SAAU,CAAEyD,aAAcvD,aAAauD,eACvJ,CACEC,UAAWvD,WAAWuD,UACtBvC,sBACAwC,UAAWxD,WAAWwD,UACtBhD,QAASR,WAAWQ,QACpBS,uDAGN"}
@@ -1 +1 @@
1
- {"version":3,"file":"CameraTransformDrive.js","sources":["../../../src/Camera/TransformDrive/CameraTransformDrive.ts"],"sourcesContent":["import type { TCameraServiceDependencies, TCameraTransformAgents, TCameraTransformDrive, TCommonCameraParams } from '@Anarchy/Engine/Camera/Models';\nimport type { TTransformDriveParams } from '@Anarchy/Engine/TransformDrive';\n\nexport function CameraTransformDrive(\n params: TCommonCameraParams,\n { transformDriveService }: Pick<TCameraServiceDependencies, 'transformDriveService'>,\n relatedEntityId: string\n): TCameraTransformDrive {\n const transformAgents: TCameraTransformAgents = transformDriveService.getTransformAgents(params, { hasConnected: true }) as TCameraTransformAgents;\n const driveParams: TTransformDriveParams = { activeAgent: params.agent, relatedEntityId };\n\n return transformDriveService.create(driveParams, transformAgents) as TCameraTransformDrive;\n}\n"],"names":["CameraTransformDrive","params","transformDriveService","relatedEntityId","transformAgents","getTransformAgents","hasConnected","create","activeAgent","agent"],"mappings":"AAGO,SAASA,qBACdC,QACAC,sBAAEA,uBACFC,iBAEA,MAAMC,gBAA0CF,sBAAsBG,mBAAmBJ,OAAQ,CAAEK,cAAc,IAGjH,OAAOJ,sBAAsBK,OAFc,CAAEC,YAAaP,OAAOQ,MAAON,iCAEvBC,gBACnD"}
1
+ {"version":3,"file":"CameraTransformDrive.js","sources":["../../../src/Camera/TransformDrive/CameraTransformDrive.ts"],"sourcesContent":["import type { TCameraServiceDependencies, TCameraTransformAgents, TCameraTransformDrive, TCommonCameraParams } from '@hellpig/anarchy-engine/Camera/Models';\nimport type { TTransformDriveParams } from '@hellpig/anarchy-engine/TransformDrive';\n\nexport function CameraTransformDrive(\n params: TCommonCameraParams,\n { transformDriveService }: Pick<TCameraServiceDependencies, 'transformDriveService'>,\n relatedEntityId: string\n): TCameraTransformDrive {\n const transformAgents: TCameraTransformAgents = transformDriveService.getTransformAgents(params, { hasConnected: true }) as TCameraTransformAgents;\n const driveParams: TTransformDriveParams = { activeAgent: params.agent, relatedEntityId };\n\n return transformDriveService.create(driveParams, transformAgents) as TCameraTransformDrive;\n}\n"],"names":["CameraTransformDrive","params","transformDriveService","relatedEntityId","transformAgents","getTransformAgents","hasConnected","create","activeAgent","agent"],"mappings":"AAGO,SAASA,qBACdC,QACAC,sBAAEA,uBACFC,iBAEA,MAAMC,gBAA0CF,sBAAsBG,mBAAmBJ,OAAQ,CAAEK,cAAc,IAGjH,OAAOJ,sBAAsBK,OAFc,CAAEC,YAAaP,OAAOQ,MAAON,iCAEvBC,gBACnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"CameraUtils.js","sources":["../../../src/Camera/Utils/CameraUtils.ts"],"sourcesContent":["import { CameraType } from '@Anarchy/Engine/Camera/Constants';\nimport type {\n TOrthographicCamera,\n TOrthographicCameraParams,\n TOrthographicCameraWrapper,\n TPerspectiveCamera,\n TPerspectiveCameraParams,\n TPerspectiveCameraWrapper\n} from '@Anarchy/Engine/Camera/Models';\nimport type { TShadowCameraParams } from '@Anarchy/Engine/Light';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\n\nexport const isPerspectiveCamera = (camera: TOrthographicCamera | TPerspectiveCamera): camera is TPerspectiveCamera => camera.type === CameraType.Perspective;\nexport const isPerspectiveCameraWrapper = (camera: TOrthographicCameraWrapper | TPerspectiveCameraWrapper): camera is TPerspectiveCameraWrapper => isPerspectiveCamera(camera.entity);\nexport const isPerspectiveCameraParams = (params: TOrthographicCameraParams | TPerspectiveCameraParams | TShadowCameraParams): params is TPerspectiveCameraParams =>\n params.type === CameraType.Perspective;\nexport const isOrthographicCamera = (camera: TOrthographicCamera | TPerspectiveCamera): camera is TOrthographicCamera => camera.type === CameraType.Orthographic;\nexport const isOrthographicCameraWrapper = (camera: TOrthographicCameraWrapper | TPerspectiveCameraWrapper): camera is TOrthographicCameraWrapper => isOrthographicCamera(camera.entity);\nexport const isOrthographicCameraParams = (params: TOrthographicCameraParams | TPerspectiveCameraParams | TShadowCameraParams): params is TOrthographicCameraParams =>\n params.type === CameraType.Orthographic;\n\nexport function applyPerspectiveCameraParams(camera: TWriteable<TPerspectiveCamera>, params: TPerspectiveCameraParams): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.fov)) camera.fov = params.fov;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.focus)) camera.focus = params.focus;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.filmGauge)) camera.filmGauge = params.filmGauge;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.filmOffset)) camera.filmOffset = params.filmOffset;\n}\n\nexport function applyOrthographicCameraParams(camera: TWriteable<TOrthographicCamera>, params: TOrthographicCameraParams): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.left)) camera.left = params.left;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.right)) camera.right = params.right;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.top)) camera.top = params.top;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.bottom)) camera.bottom = params.bottom;\n}\n"],"names":["isPerspectiveCamera","camera","type","CameraType","Perspective","isPerspectiveCameraWrapper","entity","isPerspectiveCameraParams","params","isOrthographicCamera","Orthographic","isOrthographicCameraWrapper","isOrthographicCameraParams","applyPerspectiveCameraParams","isDefined","fov","focus","filmGauge","filmOffset","applyOrthographicCameraParams","left","right","top","bottom"],"mappings":"gIAaO,MAAMA,oBAAuBC,QAAmFA,OAAOC,OAASC,WAAWC,YACrIC,2BAA8BJ,QAAwGD,oBAAoBC,OAAOK,QACjKC,0BAA6BC,QACxCA,OAAON,OAASC,WAAWC,YAChBK,qBAAwBR,QAAoFA,OAAOC,OAASC,WAAWO,aACvIC,4BAA+BV,QAAyGQ,qBAAqBR,OAAOK,QACpKM,2BAA8BJ,QACzCA,OAAON,OAASC,WAAWO,aAEtB,SAASG,6BAA6BZ,OAAwCO,QAE/EM,UAAUN,OAAOO,OAAMd,OAAOc,IAAMP,OAAOO,KAE3CD,UAAUN,OAAOQ,SAAQf,OAAOe,MAAQR,OAAOQ,OAE/CF,UAAUN,OAAOS,aAAYhB,OAAOgB,UAAYT,OAAOS,WAEvDH,UAAUN,OAAOU,cAAajB,OAAOiB,WAAaV,OAAOU,WAC/D,CAEO,SAASC,8BAA8BlB,OAAyCO,QAEjFM,UAAUN,OAAOY,QAAOnB,OAAOmB,KAAOZ,OAAOY,MAE7CN,UAAUN,OAAOa,SAAQpB,OAAOoB,MAAQb,OAAOa,OAE/CP,UAAUN,OAAOc,OAAMrB,OAAOqB,IAAMd,OAAOc,KAE3CR,UAAUN,OAAOe,UAAStB,OAAOsB,OAASf,OAAOe,OACvD"}
1
+ {"version":3,"file":"CameraUtils.js","sources":["../../../src/Camera/Utils/CameraUtils.ts"],"sourcesContent":["import { CameraType } from '@hellpig/anarchy-engine/Camera/Constants';\nimport type {\n TOrthographicCamera,\n TOrthographicCameraParams,\n TOrthographicCameraWrapper,\n TPerspectiveCamera,\n TPerspectiveCameraParams,\n TPerspectiveCameraWrapper\n} from '@hellpig/anarchy-engine/Camera/Models';\nimport type { TShadowCameraParams } from '@hellpig/anarchy-engine/Light';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\n\nexport const isPerspectiveCamera = (camera: TOrthographicCamera | TPerspectiveCamera): camera is TPerspectiveCamera => camera.type === CameraType.Perspective;\nexport const isPerspectiveCameraWrapper = (camera: TOrthographicCameraWrapper | TPerspectiveCameraWrapper): camera is TPerspectiveCameraWrapper => isPerspectiveCamera(camera.entity);\nexport const isPerspectiveCameraParams = (params: TOrthographicCameraParams | TPerspectiveCameraParams | TShadowCameraParams): params is TPerspectiveCameraParams =>\n params.type === CameraType.Perspective;\nexport const isOrthographicCamera = (camera: TOrthographicCamera | TPerspectiveCamera): camera is TOrthographicCamera => camera.type === CameraType.Orthographic;\nexport const isOrthographicCameraWrapper = (camera: TOrthographicCameraWrapper | TPerspectiveCameraWrapper): camera is TOrthographicCameraWrapper => isOrthographicCamera(camera.entity);\nexport const isOrthographicCameraParams = (params: TOrthographicCameraParams | TPerspectiveCameraParams | TShadowCameraParams): params is TOrthographicCameraParams =>\n params.type === CameraType.Orthographic;\n\nexport function applyPerspectiveCameraParams(camera: TWriteable<TPerspectiveCamera>, params: TPerspectiveCameraParams): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.fov)) camera.fov = params.fov;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.focus)) camera.focus = params.focus;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.filmGauge)) camera.filmGauge = params.filmGauge;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.filmOffset)) camera.filmOffset = params.filmOffset;\n}\n\nexport function applyOrthographicCameraParams(camera: TWriteable<TOrthographicCamera>, params: TOrthographicCameraParams): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.left)) camera.left = params.left;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.right)) camera.right = params.right;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.top)) camera.top = params.top;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.bottom)) camera.bottom = params.bottom;\n}\n"],"names":["isPerspectiveCamera","camera","type","CameraType","Perspective","isPerspectiveCameraWrapper","entity","isPerspectiveCameraParams","params","isOrthographicCamera","Orthographic","isOrthographicCameraWrapper","isOrthographicCameraParams","applyPerspectiveCameraParams","isDefined","fov","focus","filmGauge","filmOffset","applyOrthographicCameraParams","left","right","top","bottom"],"mappings":"gIAaO,MAAMA,oBAAuBC,QAAmFA,OAAOC,OAASC,WAAWC,YACrIC,2BAA8BJ,QAAwGD,oBAAoBC,OAAOK,QACjKC,0BAA6BC,QACxCA,OAAON,OAASC,WAAWC,YAChBK,qBAAwBR,QAAoFA,OAAOC,OAASC,WAAWO,aACvIC,4BAA+BV,QAAyGQ,qBAAqBR,OAAOK,QACpKM,2BAA8BJ,QACzCA,OAAON,OAASC,WAAWO,aAEtB,SAASG,6BAA6BZ,OAAwCO,QAE/EM,UAAUN,OAAOO,OAAMd,OAAOc,IAAMP,OAAOO,KAE3CD,UAAUN,OAAOQ,SAAQf,OAAOe,MAAQR,OAAOQ,OAE/CF,UAAUN,OAAOS,aAAYhB,OAAOgB,UAAYT,OAAOS,WAEvDH,UAAUN,OAAOU,cAAajB,OAAOiB,WAAaV,OAAOU,WAC/D,CAEO,SAASC,8BAA8BlB,OAAyCO,QAEjFM,UAAUN,OAAOY,QAAOnB,OAAOmB,KAAOZ,OAAOY,MAE7CN,UAAUN,OAAOa,SAAQpB,OAAOoB,MAAQb,OAAOa,OAE/CP,UAAUN,OAAOc,OAAMrB,OAAOqB,IAAMd,OAAOc,KAE3CR,UAAUN,OAAOe,UAAStB,OAAOsB,OAASf,OAAOe,OACvD"}