@hellpig/anarchy-engine 22.0.0 → 22.0.1

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 (228) hide show
  1. package/dist/Actor/Adapters/ConfigToParams.d.ts +1 -1
  2. package/dist/Actor/Adapters/ConfigToParams.js +1 -1
  3. package/dist/Actor/Adapters/ConfigToParams.js.map +1 -1
  4. package/dist/Actor/Adapters/EntityToConfig.d.ts +1 -1
  5. package/dist/Actor/Adapters/EntityToConfig.js +1 -1
  6. package/dist/Actor/Adapters/EntityToConfig.js.map +1 -1
  7. package/dist/Actor/Entities/Actor/Actor.js +1 -1
  8. package/dist/Actor/Entities/Actor/Actor.js.map +1 -1
  9. package/dist/Actor/Factories/ActorFactory.js +1 -1
  10. package/dist/Actor/Factories/ActorFactory.js.map +1 -1
  11. package/dist/Actor/index.d.ts +1 -0
  12. package/dist/Audio/Adapters/AudioConfigToParams.d.ts +2 -0
  13. package/dist/Audio/Adapters/AudioConfigToParams.js +2 -0
  14. package/dist/Audio/Adapters/AudioConfigToParams.js.map +1 -0
  15. package/dist/Audio/Adapters/EntityToConfig.d.ts +1 -1
  16. package/dist/Audio/Adapters/EntityToConfig.js +1 -1
  17. package/dist/Audio/Adapters/EntityToConfig.js.map +1 -1
  18. package/dist/Audio/Adapters/index.d.ts +1 -1
  19. package/dist/Audio/Factories/AudioFactory.js +1 -1
  20. package/dist/Audio/Factories/AudioFactory.js.map +1 -1
  21. package/dist/Audio/Wrappers/AbstractAudioWrapper.js +1 -1
  22. package/dist/Audio/Wrappers/AbstractAudioWrapper.js.map +1 -1
  23. package/dist/Camera/Adapters/ConfigToParams.d.ts +1 -1
  24. package/dist/Camera/Adapters/ConfigToParams.js +1 -1
  25. package/dist/Camera/Adapters/ConfigToParams.js.map +1 -1
  26. package/dist/Camera/Adapters/EntityToConfig.d.ts +1 -1
  27. package/dist/Camera/Adapters/EntityToConfig.js +1 -1
  28. package/dist/Camera/Adapters/EntityToConfig.js.map +1 -1
  29. package/dist/Camera/Adapters/index.d.ts +1 -1
  30. package/dist/Camera/Factories/CameraFactory.js +1 -1
  31. package/dist/Camera/Factories/CameraFactory.js.map +1 -1
  32. package/dist/Camera/Wrappers/OrthographicCameraWrapper.js +1 -1
  33. package/dist/Camera/Wrappers/OrthographicCameraWrapper.js.map +1 -1
  34. package/dist/Camera/Wrappers/PerspectiveCameraWrapper.js +1 -1
  35. package/dist/Camera/Wrappers/PerspectiveCameraWrapper.js.map +1 -1
  36. package/dist/Color/Adapters/EntityToConfig.d.ts +1 -1
  37. package/dist/Color/Adapters/EntityToConfig.js +1 -1
  38. package/dist/Color/Adapters/EntityToConfig.js.map +1 -1
  39. package/dist/Color/Wrappers/ColorWrapper.js +1 -1
  40. package/dist/Color/Wrappers/ColorWrapper.js.map +1 -1
  41. package/dist/Controls/Adapters/ConfigToParams.d.ts +1 -1
  42. package/dist/Controls/Adapters/ConfigToParams.js +1 -1
  43. package/dist/Controls/Adapters/ConfigToParams.js.map +1 -1
  44. package/dist/Controls/Factories/ControlsFactory.js +1 -1
  45. package/dist/Controls/Factories/ControlsFactory.js.map +1 -1
  46. package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapper.js +1 -1
  47. package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapper.js +1 -1
  48. package/dist/Controls/index.d.ts +1 -0
  49. package/dist/EnvMap/Adapters/ConfigToParams.d.ts +1 -1
  50. package/dist/EnvMap/Adapters/ConfigToParams.js +1 -1
  51. package/dist/EnvMap/Adapters/ConfigToParams.js.map +1 -1
  52. package/dist/EnvMap/Adapters/EntityToConfig.d.ts +1 -1
  53. package/dist/EnvMap/Adapters/EntityToConfig.js +1 -1
  54. package/dist/EnvMap/Adapters/EntityToConfig.js.map +1 -1
  55. package/dist/EnvMap/Factories/EnvMapFactory.js +1 -1
  56. package/dist/EnvMap/Factories/EnvMapFactory.js.map +1 -1
  57. package/dist/EnvMap/Wrappers/EnvMapWrapper.js +1 -1
  58. package/dist/EnvMap/Wrappers/EnvMapWrapper.js.map +1 -1
  59. package/dist/EnvMap/index.d.ts +1 -1
  60. package/dist/Fog/Adapters/ConfigToParams.d.ts +1 -1
  61. package/dist/Fog/Adapters/ConfigToParams.js +1 -1
  62. package/dist/Fog/Adapters/ConfigToParams.js.map +1 -1
  63. package/dist/Fog/Adapters/EntityToConfig.d.ts +1 -1
  64. package/dist/Fog/Adapters/EntityToConfig.js +1 -1
  65. package/dist/Fog/Adapters/EntityToConfig.js.map +1 -1
  66. package/dist/Fog/Factories/FogFactory.js +1 -1
  67. package/dist/Fog/Factories/FogFactory.js.map +1 -1
  68. package/dist/Fog/Wrappers/FogWrapper.js +1 -1
  69. package/dist/Fog/Wrappers/FogWrapper.js.map +1 -1
  70. package/dist/Fog/index.d.ts +1 -0
  71. package/dist/Fsm/Adapters/ConfigToParams.d.ts +1 -1
  72. package/dist/Fsm/Adapters/ConfigToParams.js +1 -1
  73. package/dist/Fsm/Adapters/ConfigToParams.js.map +1 -1
  74. package/dist/Fsm/Adapters/EntityToConfig.d.ts +1 -1
  75. package/dist/Fsm/Adapters/EntityToConfig.js +1 -1
  76. package/dist/Fsm/Adapters/EntityToConfig.js.map +1 -1
  77. package/dist/Fsm/Factories/FsmInstanceFactory.js +1 -1
  78. package/dist/Fsm/Factories/FsmInstanceFactory.js.map +1 -1
  79. package/dist/Fsm/Factories/FsmSourceFactory.js +1 -1
  80. package/dist/Fsm/Factories/FsmSourceFactory.js.map +1 -1
  81. package/dist/Fsm/Wrappers/FsmWrapper.js +1 -1
  82. package/dist/Fsm/Wrappers/FsmWrapper.js.map +1 -1
  83. package/dist/Intersections/Adapters/ConfigToParams.d.ts +1 -1
  84. package/dist/Intersections/Adapters/ConfigToParams.js +1 -1
  85. package/dist/Intersections/Adapters/ConfigToParams.js.map +1 -1
  86. package/dist/Intersections/Adapters/EntityToConfig.d.ts +1 -1
  87. package/dist/Intersections/Adapters/EntityToConfig.js +1 -1
  88. package/dist/Intersections/Adapters/EntityToConfig.js.map +1 -1
  89. package/dist/Intersections/Factories/IntersectionsWatcherFactory.js +1 -1
  90. package/dist/Intersections/Factories/IntersectionsWatcherFactory.js.map +1 -1
  91. package/dist/Intersections/Watchers/AbstractIntersectionsWatcher.js +1 -1
  92. package/dist/Intersections/Watchers/AbstractIntersectionsWatcher.js.map +1 -1
  93. package/dist/Intersections/index.d.ts +1 -1
  94. package/dist/Kinematic/Adapters/ConfigToParams.d.ts +1 -1
  95. package/dist/Kinematic/Adapters/ConfigToParams.js +1 -1
  96. package/dist/Kinematic/Adapters/ConfigToParams.js.map +1 -1
  97. package/dist/Kinematic/Adapters/EntityToConfig.d.ts +1 -1
  98. package/dist/Kinematic/Adapters/EntityToConfig.js +1 -1
  99. package/dist/Kinematic/Adapters/EntityToConfig.js.map +1 -1
  100. package/dist/Kinematic/Adapters/index.d.ts +1 -1
  101. package/dist/Light/Adapters/ConfigToParams.d.ts +1 -1
  102. package/dist/Light/Adapters/ConfigToParams.js +1 -1
  103. package/dist/Light/Adapters/ConfigToParams.js.map +1 -1
  104. package/dist/Light/Adapters/EntityToConfig.d.ts +1 -1
  105. package/dist/Light/Adapters/EntityToConfig.js +1 -1
  106. package/dist/Light/Adapters/EntityToConfig.js.map +1 -1
  107. package/dist/Light/Factories/LightFactory.js +1 -1
  108. package/dist/Light/Factories/LightFactory.js.map +1 -1
  109. package/dist/Light/Wrappers/AbstractLightWrapper.js +1 -1
  110. package/dist/Light/Wrappers/AbstractLightWrapper.js.map +1 -1
  111. package/dist/Light/index.d.ts +1 -0
  112. package/dist/Material/Adapters/ConfigToParams.d.ts +1 -1
  113. package/dist/Material/Adapters/ConfigToParams.js +1 -1
  114. package/dist/Material/Adapters/ConfigToParams.js.map +1 -1
  115. package/dist/Material/Adapters/EntityToConfig.d.ts +1 -1
  116. package/dist/Material/Adapters/EntityToConfig.js +1 -1
  117. package/dist/Material/Adapters/EntityToConfig.js.map +1 -1
  118. package/dist/Material/Factories/MaterialFactory.js +1 -1
  119. package/dist/Material/Factories/MaterialFactory.js.map +1 -1
  120. package/dist/Material/Wrappers/MaterialWrapper.js +1 -1
  121. package/dist/Material/Wrappers/MaterialWrapper.js.map +1 -1
  122. package/dist/Material/index.d.ts +1 -0
  123. package/dist/Models3d/Adapters/ConfigToParams.d.ts +1 -1
  124. package/dist/Models3d/Adapters/ConfigToParams.js +1 -1
  125. package/dist/Models3d/Adapters/ConfigToParams.js.map +1 -1
  126. package/dist/Models3d/Adapters/EntityToConfig.d.ts +1 -1
  127. package/dist/Models3d/Adapters/EntityToConfig.js +1 -1
  128. package/dist/Models3d/Adapters/EntityToConfig.js.map +1 -1
  129. package/dist/Models3d/Entities/Model3d.js +1 -1
  130. package/dist/Models3d/Entities/Model3d.js.map +1 -1
  131. package/dist/Models3d/Factories/Models3dFactory.js +1 -1
  132. package/dist/Models3d/Factories/Models3dFactory.js.map +1 -1
  133. package/dist/Models3d/index.d.ts +1 -1
  134. package/dist/Particles/Adapters/ConfigToParams.d.ts +1 -1
  135. package/dist/Particles/Adapters/ConfigToParams.js +1 -1
  136. package/dist/Particles/Adapters/ConfigToParams.js.map +1 -1
  137. package/dist/Particles/Adapters/EntityToConfig.d.ts +1 -1
  138. package/dist/Particles/Adapters/EntityToConfig.js +1 -1
  139. package/dist/Particles/Adapters/EntityToConfig.js.map +1 -1
  140. package/dist/Particles/Factories/ParticlesFactory.js +1 -1
  141. package/dist/Particles/Factories/ParticlesFactory.js.map +1 -1
  142. package/dist/Particles/Wrappers/ParticlesWrapper.js +1 -1
  143. package/dist/Particles/Wrappers/ParticlesWrapper.js.map +1 -1
  144. package/dist/Particles/index.d.ts +1 -1
  145. package/dist/Physics/Adapters/EntityToConfig.d.ts +1 -1
  146. package/dist/Physics/Adapters/EntityToConfig.js +1 -1
  147. package/dist/Physics/Adapters/EntityToConfig.js.map +1 -1
  148. package/dist/Physics/Adapters/PhysicsBodyConfigToParams.d.ts +1 -1
  149. package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js +1 -1
  150. package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js.map +1 -1
  151. package/dist/Physics/Adapters/PhysicsWorldConfigToParams.d.ts +1 -1
  152. package/dist/Physics/Adapters/PhysicsWorldConfigToParams.js +1 -1
  153. package/dist/Physics/Adapters/PhysicsWorldConfigToParams.js.map +1 -1
  154. package/dist/Physics/Entities/PhysicsBody.js +1 -1
  155. package/dist/Physics/Entities/PhysicsBody.js.map +1 -1
  156. package/dist/Physics/Factories/PhysicsBodyFactory.js +1 -1
  157. package/dist/Physics/Factories/PhysicsBodyFactory.js.map +1 -1
  158. package/dist/Renderer/Adapters/ConfigToParams.d.ts +1 -1
  159. package/dist/Renderer/Adapters/ConfigToParams.js +1 -1
  160. package/dist/Renderer/Adapters/ConfigToParams.js.map +1 -1
  161. package/dist/Renderer/Adapters/EntityToConfig.d.ts +1 -1
  162. package/dist/Renderer/Adapters/EntityToConfig.js +1 -1
  163. package/dist/Renderer/Adapters/EntityToConfig.js.map +1 -1
  164. package/dist/Renderer/Factories/RendererFactory.js +1 -1
  165. package/dist/Renderer/Factories/RendererFactory.js.map +1 -1
  166. package/dist/Renderer/Wrappers/RendererWrapper.js +1 -1
  167. package/dist/Renderer/Wrappers/RendererWrapper.js.map +1 -1
  168. package/dist/Renderer/index.d.ts +1 -1
  169. package/dist/Scene/Adapters/ConfigToParams.d.ts +1 -1
  170. package/dist/Scene/Adapters/ConfigToParams.js +1 -1
  171. package/dist/Scene/Adapters/ConfigToParams.js.map +1 -1
  172. package/dist/Scene/Adapters/EntityToConfig.d.ts +1 -1
  173. package/dist/Scene/Adapters/EntityToConfig.js +1 -1
  174. package/dist/Scene/Adapters/EntityToConfig.js.map +1 -1
  175. package/dist/Scene/Factories/SceneFactory.js +1 -1
  176. package/dist/Scene/Factories/SceneFactory.js.map +1 -1
  177. package/dist/Scene/Wrappers/SceneWrapper.js +1 -1
  178. package/dist/Scene/Wrappers/SceneWrapper.js.map +1 -1
  179. package/dist/Scene/index.d.ts +1 -0
  180. package/dist/Space/Adapters/ConfigToParams.d.ts +1 -1
  181. package/dist/Space/Adapters/ConfigToParams.js +1 -1
  182. package/dist/Space/Adapters/ConfigToParams.js.map +1 -1
  183. package/dist/Space/Adapters/EntityToConfig.d.ts +1 -1
  184. package/dist/Space/Adapters/EntityToConfig.js +1 -1
  185. package/dist/Space/Adapters/EntityToConfig.js.map +1 -1
  186. package/dist/Space/Entities/Space.js +1 -1
  187. package/dist/Space/Entities/Space.js.map +1 -1
  188. package/dist/Space/Factories/SpaceFactory.js +1 -1
  189. package/dist/Space/Factories/SpaceFactory.js.map +1 -1
  190. package/dist/Space/index.d.ts +1 -1
  191. package/dist/Spatial/Adapters/ConfigToParams.d.ts +1 -1
  192. package/dist/Spatial/Adapters/ConfigToParams.js +1 -1
  193. package/dist/Spatial/Adapters/ConfigToParams.js.map +1 -1
  194. package/dist/Spatial/Adapters/ConfigToParamsSpatialData.d.ts +1 -1
  195. package/dist/Spatial/Adapters/ConfigToParamsSpatialData.js +1 -1
  196. package/dist/Spatial/Adapters/ConfigToParamsSpatialData.js.map +1 -1
  197. package/dist/Spatial/Adapters/EntityToConfig.d.ts +1 -1
  198. package/dist/Spatial/Adapters/EntityToConfig.js +1 -1
  199. package/dist/Spatial/Adapters/EntityToConfig.js.map +1 -1
  200. package/dist/Spatial/Factories/SpatialGridFactory.js +1 -1
  201. package/dist/Spatial/Factories/SpatialGridFactory.js.map +1 -1
  202. package/dist/Spatial/Wrappers/SpatialGridWrapper.js +1 -1
  203. package/dist/Spatial/Wrappers/SpatialGridWrapper.js.map +1 -1
  204. package/dist/Text/Adapters/ConfigToParams.d.ts +1 -1
  205. package/dist/Text/Adapters/ConfigToParams.js +1 -1
  206. package/dist/Text/Adapters/ConfigToParams.js.map +1 -1
  207. package/dist/Text/Adapters/EntityToConfig.d.ts +1 -1
  208. package/dist/Text/Adapters/EntityToConfig.js +1 -1
  209. package/dist/Text/Adapters/EntityToConfig.js.map +1 -1
  210. package/dist/Text/Factories/TextFactory.js +1 -1
  211. package/dist/Text/Factories/TextFactory.js.map +1 -1
  212. package/dist/Text/Wrappers/TextTextureWrapper.js +1 -1
  213. package/dist/Text/Wrappers/TextTextureWrapper.js.map +1 -1
  214. package/dist/Text/Wrappers/TextWrapper.js +1 -1
  215. package/dist/Text/Wrappers/TextWrapper.js.map +1 -1
  216. package/dist/Text/index.d.ts +1 -0
  217. package/dist/ThreeLib/Utils/Object3dUtils.d.ts +1 -1
  218. package/dist/ThreeLib/Utils/Object3dUtils.js +1 -1
  219. package/dist/ThreeLib/Utils/Object3dUtils.js.map +1 -1
  220. package/dist/TransformDrive/Entities/Agents/KinematicTransformAgent.js +1 -1
  221. package/dist/TransformDrive/Entities/Agents/KinematicTransformAgent.js.map +1 -1
  222. package/dist/index.js +1 -1
  223. package/legal/NOTICE.md +1 -1
  224. package/legal/THIRD_PARTY_LICENSES.md +1 -1
  225. package/package.json +1 -1
  226. package/dist/Audio/Adapters/ConfigToParams.d.ts +0 -2
  227. package/dist/Audio/Adapters/ConfigToParams.js +0 -2
  228. package/dist/Audio/Adapters/ConfigToParams.js.map +0 -1
@@ -1,2 +1,2 @@
1
1
  import { TActorConfig, TActorConfigToParamsDependencies, TActorParams } from '../Models';
2
- export declare function configToParams(config: TActorConfig, dependencies: TActorConfigToParamsDependencies): TActorParams;
2
+ export declare function actorConfigToParams(config: TActorConfig, dependencies: TActorConfigToParamsDependencies): TActorParams;
@@ -1,2 +1,2 @@
1
- import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{configToParamsObject3d}from"../../ThreeLib/Utils/Object3dUtils.js";import{actorStatesConfigToParams}from"./Helpers/ActorStatesConfigToParams.js";import{configToParamsSpatialData}from"../../Spatial/Adapters/ConfigToParamsSpatialData.js";import{model3dSettingsConfigToParams}from"./Helpers/Model3dSettingsConfigToParams.js";import{configToParams as configToParams$1}from"../../Kinematic/Adapters/ConfigToParams.js";function configToParams(config,dependencies){const{position:position,rotation:rotation,scale:scale,physicsBodyName:physicsBodyName,spatial:spatial,states:states,model3dSource:model3dSource,kinematic:kinematic,model3dSettings:model3dSettings,...rest}=config,model3d=dependencies.models3dService.getRegistry().getByName(model3dSource);return{...rest,kinematic:kinematic?configToParams$1(kinematic):void 0,model3dSettings:model3dSettings?model3dSettingsConfigToParams(model3dSettings):void 0,model3dSource:model3d,physicsBody:isDefined(physicsBodyName)?dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName):void 0,spatial:configToParamsSpatialData(spatial,dependencies),states:states?actorStatesConfigToParams(states,dependencies):void 0,...configToParamsObject3d({position:position,rotation:rotation,scale:scale})}}export{configToParams};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{object3dConfigToParams}from"../../ThreeLib/Utils/Object3dUtils.js";import{actorStatesConfigToParams}from"./Helpers/ActorStatesConfigToParams.js";import{spatialDataConfigToParams}from"../../Spatial/Adapters/ConfigToParamsSpatialData.js";import{model3dSettingsConfigToParams}from"./Helpers/Model3dSettingsConfigToParams.js";import{kinematicConfigToParams}from"../../Kinematic/Adapters/ConfigToParams.js";function actorConfigToParams(config,dependencies){const{position:position,rotation:rotation,scale:scale,physicsBodyName:physicsBodyName,spatial:spatial,states:states,model3dSource:model3dSource,kinematic:kinematic,model3dSettings:model3dSettings,...rest}=config,model3d=dependencies.models3dService.getRegistry().getByName(model3dSource);return{...rest,kinematic:kinematic?kinematicConfigToParams(kinematic):void 0,model3dSettings:model3dSettings?model3dSettingsConfigToParams(model3dSettings):void 0,model3dSource:model3d,physicsBody:isDefined(physicsBodyName)?dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName):void 0,spatial:spatialDataConfigToParams(spatial,dependencies),states:states?actorStatesConfigToParams(states,dependencies):void 0,...object3dConfigToParams({position:position,rotation:rotation,scale:scale})}}export{actorConfigToParams};
2
2
  //# sourceMappingURL=ConfigToParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Actor/Adapters/ConfigToParams.ts"],"sourcesContent":["import { actorStatesConfigToParams, model3dSettingsConfigToParams } from '@Anarchy/Engine/Actor/Adapters/Helpers';\nimport type { TActorConfig, TActorConfigToParamsDependencies, TActorParams } from '@Anarchy/Engine/Actor/Models';\nimport { kinematicConfigToParams } from '@Anarchy/Engine/Kinematic';\nimport type { TModel3d } from '@Anarchy/Engine/Models3d';\nimport { configToParamsSpatialData } from '@Anarchy/Engine/Spatial';\nimport { configToParamsObject3d } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined } from '@Anarchy/Shared/Utils';\n\nexport function configToParams(config: TActorConfig, dependencies: TActorConfigToParamsDependencies): TActorParams {\n const { position, rotation, scale, physicsBodyName, spatial, states, model3dSource, kinematic, model3dSettings, ...rest } = config;\n\n const model3d: TModel3d = dependencies.models3dService.getRegistry().getByName(model3dSource);\n\n return {\n ...rest,\n kinematic: kinematic ? kinematicConfigToParams(kinematic) : undefined,\n model3dSettings: model3dSettings ? model3dSettingsConfigToParams(model3dSettings) : undefined,\n model3dSource: model3d,\n physicsBody: isDefined(physicsBodyName) ? dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName) : undefined,\n spatial: configToParamsSpatialData(spatial, dependencies),\n states: states ? actorStatesConfigToParams(states, dependencies) : undefined,\n ...configToParamsObject3d({ position, rotation, scale })\n };\n}\n"],"names":["configToParams","config","dependencies","position","rotation","scale","physicsBodyName","spatial","states","model3dSource","kinematic","model3dSettings","rest","model3d","models3dService","getRegistry","getByName","kinematicConfigToParams","model3dSettingsConfigToParams","physicsBody","isDefined","physicsBodyService","configToParamsSpatialData","actorStatesConfigToParams","configToParamsObject3d"],"mappings":"ifAQO,SAASA,eAAeC,OAAsBC,cACnD,MAAMC,SAAEA,SAAAC,SAAUA,SAAAC,MAAUA,MAAAC,gBAAOA,gBAAAC,QAAiBA,QAAAC,OAASA,OAAAC,cAAQA,cAAAC,UAAeA,UAAAC,gBAAWA,mBAAoBC,MAASX,OAEtHY,QAAoBX,aAAaY,gBAAgBC,cAAcC,UAAUP,eAE/E,MAAO,IACFG,KACHF,UAAWA,UAAYO,iBAAwBP,gBAAa,EAC5DC,gBAAiBA,gBAAkBO,8BAA8BP,sBAAmB,EACpFF,cAAeI,QACfM,YAAaC,UAAUd,iBAAmBJ,aAAamB,mBAAmBN,cAAcC,UAAUV,sBAAmB,EACrHC,QAASe,0BAA0Bf,QAASL,cAC5CM,OAAQA,OAASe,0BAA0Bf,OAAQN,mBAAgB,KAChEsB,uBAAuB,CAAErB,kBAAUC,kBAAUC,cAEpD"}
1
+ {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Actor/Adapters/ConfigToParams.ts"],"sourcesContent":["import { actorStatesConfigToParams, model3dSettingsConfigToParams } from '@Anarchy/Engine/Actor/Adapters/Helpers';\nimport type { TActorConfig, TActorConfigToParamsDependencies, TActorParams } from '@Anarchy/Engine/Actor/Models';\nimport { kinematicConfigToParams } from '@Anarchy/Engine/Kinematic';\nimport type { TModel3d } from '@Anarchy/Engine/Models3d';\nimport { spatialDataConfigToParams } from '@Anarchy/Engine/Spatial';\nimport { object3dConfigToParams } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined } from '@Anarchy/Shared/Utils';\n\nexport function actorConfigToParams(config: TActorConfig, dependencies: TActorConfigToParamsDependencies): TActorParams {\n const { position, rotation, scale, physicsBodyName, spatial, states, model3dSource, kinematic, model3dSettings, ...rest } = config;\n\n const model3d: TModel3d = dependencies.models3dService.getRegistry().getByName(model3dSource);\n\n return {\n ...rest,\n kinematic: kinematic ? kinematicConfigToParams(kinematic) : undefined,\n model3dSettings: model3dSettings ? model3dSettingsConfigToParams(model3dSettings) : undefined,\n model3dSource: model3d,\n physicsBody: isDefined(physicsBodyName) ? dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName) : undefined,\n spatial: spatialDataConfigToParams(spatial, dependencies),\n states: states ? actorStatesConfigToParams(states, dependencies) : undefined,\n ...object3dConfigToParams({ position, rotation, scale })\n };\n}\n"],"names":["actorConfigToParams","config","dependencies","position","rotation","scale","physicsBodyName","spatial","states","model3dSource","kinematic","model3dSettings","rest","model3d","models3dService","getRegistry","getByName","kinematicConfigToParams","model3dSettingsConfigToParams","physicsBody","isDefined","physicsBodyService","spatialDataConfigToParams","actorStatesConfigToParams","object3dConfigToParams"],"mappings":"seAQO,SAASA,oBAAoBC,OAAsBC,cACxD,MAAMC,SAAEA,SAAAC,SAAUA,SAAAC,MAAUA,MAAAC,gBAAOA,gBAAAC,QAAiBA,QAAAC,OAASA,OAAAC,cAAQA,cAAAC,UAAeA,UAAAC,gBAAWA,mBAAoBC,MAASX,OAEtHY,QAAoBX,aAAaY,gBAAgBC,cAAcC,UAAUP,eAE/E,MAAO,IACFG,KACHF,UAAWA,UAAYO,wBAAwBP,gBAAa,EAC5DC,gBAAiBA,gBAAkBO,8BAA8BP,sBAAmB,EACpFF,cAAeI,QACfM,YAAaC,UAAUd,iBAAmBJ,aAAamB,mBAAmBN,cAAcC,UAAUV,sBAAmB,EACrHC,QAASe,0BAA0Bf,QAASL,cAC5CM,OAAQA,OAASe,0BAA0Bf,OAAQN,mBAAgB,KAChEsB,uBAAuB,CAAErB,kBAAUC,kBAAUC,cAEpD"}
@@ -1,2 +1,2 @@
1
1
  import { TActor, TActorConfig, TActorEntityToConfigDependencies } from '../Models';
2
- export declare function actorToConfig(entity: TActor, { models3dService }: TActorEntityToConfigDependencies): TActorConfig;
2
+ export declare function actorEntityToConfig(entity: TActor, { models3dService }: TActorEntityToConfigDependencies): TActorConfig;
@@ -1,2 +1,2 @@
1
- import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function actorToConfig(entity,{models3dService:models3dService}){const{drive:drive}=entity,model3d=models3dService.getRegistry().getById(entity.model3d.id);return filterOutEmptyFields({model3dSource:model3d.name,spatial:getSpatial(entity),collisions:getCollisions(entity),model3dSettings:entity.getModel3dSettings(),states:getStates(entity),...extractSerializableRegistrableFields(entity),...drive.serialize()})}function getSpatial(entity){const{grid:grid,updatePriority:updatePriority}=entity.spatial.data;if(isNotDefined(grid))throw new Error(`[Serialization] Actor: spatial grid not found for entity with name: "${entity.name}", (id: "${entity.id}")`);return{isAutoUpdate:entity.spatial.autoUpdate$.value,grid:grid.name,updatePriority:updatePriority}}function getStates(entity){let result={};return Object.entries(entity.states).forEach(entry=>{const[key,state]=entry,serialized=state.serialize(),{name:name,currentState:currentState,strategy:strategy}=serialized;result={...result,[key]:{name:name,currentState:currentState,strategy:strategy}}}),result}function getCollisions(entity){if(isNotDefined(entity.collisions)||isNotDefined(entity.collisions.data))return;const{updatePriority:updatePriority}=entity.collisions.data;return{isAutoUpdate:entity.collisions.autoUpdate$.value,updatePriority:updatePriority}}export{actorToConfig};
1
+ import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function actorEntityToConfig(entity,{models3dService:models3dService}){const{drive:drive}=entity,model3d=models3dService.getRegistry().getById(entity.model3d.id);return filterOutEmptyFields({model3dSource:model3d.name,spatial:getSpatial(entity),collisions:getCollisions(entity),model3dSettings:entity.getModel3dSettings(),states:getStates(entity),...extractSerializableRegistrableFields(entity),...drive.serialize()})}function getSpatial(entity){const{grid:grid,updatePriority:updatePriority}=entity.spatial.data;if(isNotDefined(grid))throw new Error(`[Serialization] Actor: spatial grid not found for entity with name: "${entity.name}", (id: "${entity.id}")`);return{isAutoUpdate:entity.spatial.autoUpdate$.value,grid:grid.name,updatePriority:updatePriority}}function getStates(entity){let result={};return Object.entries(entity.states).forEach(entry=>{const[key,state]=entry,serialized=state.serialize(),{name:name,currentState:currentState,strategy:strategy}=serialized;result={...result,[key]:{name:name,currentState:currentState,strategy:strategy}}}),result}function getCollisions(entity){if(isNotDefined(entity.collisions)||isNotDefined(entity.collisions.data))return;const{updatePriority:updatePriority}=entity.collisions.data;return{isAutoUpdate:entity.collisions.autoUpdate$.value,updatePriority:updatePriority}}export{actorEntityToConfig};
2
2
  //# sourceMappingURL=EntityToConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Actor/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TActor, TActorConfig, TActorEntityToConfigDependencies, TActorStates } from '@Anarchy/Engine/Actor/Models';\nimport type { TCollisionsDataConfig } from '@Anarchy/Engine/Collisions';\nimport type { TFsmConfig, TFsmWrapper } from '@Anarchy/Engine/Fsm';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TModel3d, TModels3dRegistry } from '@Anarchy/Engine/Models3d';\nimport type { TSpatialDataConfig } from '@Anarchy/Engine/Spatial';\nimport { filterOutEmptyFields, isNotDefined } from '@Anarchy/Shared/Utils';\n\nexport function actorToConfig(entity: TActor, { models3dService }: TActorEntityToConfigDependencies): TActorConfig {\n const { drive } = entity;\n\n const models3dRegistry: TModels3dRegistry = models3dService.getRegistry();\n const model3d: TModel3d | undefined = models3dRegistry.getById(entity.model3d.id);\n const model3dSource: string = model3d.name;\n\n return filterOutEmptyFields({\n model3dSource,\n spatial: getSpatial(entity),\n collisions: getCollisions(entity),\n model3dSettings: entity.getModel3dSettings(),\n states: getStates(entity),\n\n ...extractSerializableRegistrableFields(entity),\n ...drive.serialize()\n });\n}\n\nfunction getSpatial(entity: TActor): TSpatialDataConfig {\n const { grid, updatePriority } = entity.spatial.data;\n if (isNotDefined(grid)) throw new Error(`[Serialization] Actor: spatial grid not found for entity with name: \"${entity.name}\", (id: \"${entity.id}\")`);\n return { isAutoUpdate: entity.spatial.autoUpdate$.value, grid: grid.name, updatePriority };\n}\n\nfunction getStates(entity: TActor): TActorStates {\n let result: TActorStates = {};\n\n Object.entries(entity.states).forEach((entry: [string, TFsmWrapper]): void => {\n const [key, state] = entry;\n const serialized: TFsmConfig = state.serialize();\n const { name, currentState, strategy } = serialized;\n result = { ...result, [key]: { name, currentState, strategy } };\n });\n\n return result;\n}\n\nfunction getCollisions(entity: TActor): TCollisionsDataConfig | undefined {\n if (isNotDefined(entity.collisions) || isNotDefined(entity.collisions.data)) return undefined;\n\n const { updatePriority } = entity.collisions.data;\n\n return { isAutoUpdate: entity.collisions.autoUpdate$.value, updatePriority };\n}\n"],"names":["actorToConfig","entity","models3dService","drive","model3d","getRegistry","getById","id","filterOutEmptyFields","model3dSource","name","spatial","getSpatial","collisions","getCollisions","model3dSettings","getModel3dSettings","states","getStates","extractSerializableRegistrableFields","serialize","grid","updatePriority","data","isNotDefined","Error","isAutoUpdate","autoUpdate$","value","result","Object","entries","forEach","entry","key","state","serialized","currentState","strategy"],"mappings":"yRAQO,SAASA,cAAcC,QAAgBC,gBAAEA,kBAC9C,MAAMC,MAAEA,OAAUF,OAGZG,QADsCF,gBAAgBG,cACLC,QAAQL,OAAOG,QAAQG,IAG9E,OAAOC,qBAAqB,CAC1BC,cAH4BL,QAAQM,KAIpCC,QAASC,WAAWX,QACpBY,WAAYC,cAAcb,QAC1Bc,gBAAiBd,OAAOe,qBACxBC,OAAQC,UAAUjB,WAEfkB,qCAAqClB,WACrCE,MAAMiB,aAEb,CAEA,SAASR,WAAWX,QAClB,MAAMoB,KAAEA,KAAAC,eAAMA,gBAAmBrB,OAAOU,QAAQY,KAChD,GAAIC,aAAaH,MAAO,MAAM,IAAII,MAAM,wEAAwExB,OAAOS,gBAAgBT,OAAOM,QAC9I,MAAO,CAAEmB,aAAczB,OAAOU,QAAQgB,YAAYC,MAAOP,KAAMA,KAAKX,KAAMY,8BAC5E,CAEA,SAASJ,UAAUjB,QACjB,IAAI4B,OAAuB,CAAA,EAS3B,OAPAC,OAAOC,QAAQ9B,OAAOgB,QAAQe,QAASC,QACrC,MAAOC,IAAKC,OAASF,MACfG,WAAyBD,MAAMf,aAC/BV,KAAEA,KAAA2B,aAAMA,aAAAC,SAAcA,UAAaF,WACzCP,OAAS,IAAKA,OAAQK,CAACA,KAAM,CAAExB,UAAM2B,0BAAcC,sBAG9CT,MACT,CAEA,SAASf,cAAcb,QACrB,GAAIuB,aAAavB,OAAOY,aAAeW,aAAavB,OAAOY,WAAWU,MAAO,OAE7E,MAAMD,eAAEA,gBAAmBrB,OAAOY,WAAWU,KAE7C,MAAO,CAAEG,aAAczB,OAAOY,WAAWc,YAAYC,MAAON,8BAC9D"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Actor/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TActor, TActorConfig, TActorEntityToConfigDependencies, TActorStates } from '@Anarchy/Engine/Actor/Models';\nimport type { TCollisionsDataConfig } from '@Anarchy/Engine/Collisions';\nimport type { TFsmConfig, TFsmWrapper } from '@Anarchy/Engine/Fsm';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TModel3d, TModels3dRegistry } from '@Anarchy/Engine/Models3d';\nimport type { TSpatialDataConfig } from '@Anarchy/Engine/Spatial';\nimport { filterOutEmptyFields, isNotDefined } from '@Anarchy/Shared/Utils';\n\nexport function actorEntityToConfig(entity: TActor, { models3dService }: TActorEntityToConfigDependencies): TActorConfig {\n const { drive } = entity;\n\n const models3dRegistry: TModels3dRegistry = models3dService.getRegistry();\n const model3d: TModel3d | undefined = models3dRegistry.getById(entity.model3d.id);\n const model3dSource: string = model3d.name;\n\n return filterOutEmptyFields({\n model3dSource,\n spatial: getSpatial(entity),\n collisions: getCollisions(entity),\n model3dSettings: entity.getModel3dSettings(),\n states: getStates(entity),\n\n ...extractSerializableRegistrableFields(entity),\n ...drive.serialize()\n });\n}\n\nfunction getSpatial(entity: TActor): TSpatialDataConfig {\n const { grid, updatePriority } = entity.spatial.data;\n if (isNotDefined(grid)) throw new Error(`[Serialization] Actor: spatial grid not found for entity with name: \"${entity.name}\", (id: \"${entity.id}\")`);\n return { isAutoUpdate: entity.spatial.autoUpdate$.value, grid: grid.name, updatePriority };\n}\n\nfunction getStates(entity: TActor): TActorStates {\n let result: TActorStates = {};\n\n Object.entries(entity.states).forEach((entry: [string, TFsmWrapper]): void => {\n const [key, state] = entry;\n const serialized: TFsmConfig = state.serialize();\n const { name, currentState, strategy } = serialized;\n result = { ...result, [key]: { name, currentState, strategy } };\n });\n\n return result;\n}\n\nfunction getCollisions(entity: TActor): TCollisionsDataConfig | undefined {\n if (isNotDefined(entity.collisions) || isNotDefined(entity.collisions.data)) return undefined;\n\n const { updatePriority } = entity.collisions.data;\n\n return { isAutoUpdate: entity.collisions.autoUpdate$.value, updatePriority };\n}\n"],"names":["actorEntityToConfig","entity","models3dService","drive","model3d","getRegistry","getById","id","filterOutEmptyFields","model3dSource","name","spatial","getSpatial","collisions","getCollisions","model3dSettings","getModel3dSettings","states","getStates","extractSerializableRegistrableFields","serialize","grid","updatePriority","data","isNotDefined","Error","isAutoUpdate","autoUpdate$","value","result","Object","entries","forEach","entry","key","state","serialized","currentState","strategy"],"mappings":"yRAQO,SAASA,oBAAoBC,QAAgBC,gBAAEA,kBACpD,MAAMC,MAAEA,OAAUF,OAGZG,QADsCF,gBAAgBG,cACLC,QAAQL,OAAOG,QAAQG,IAG9E,OAAOC,qBAAqB,CAC1BC,cAH4BL,QAAQM,KAIpCC,QAASC,WAAWX,QACpBY,WAAYC,cAAcb,QAC1Bc,gBAAiBd,OAAOe,qBACxBC,OAAQC,UAAUjB,WAEfkB,qCAAqClB,WACrCE,MAAMiB,aAEb,CAEA,SAASR,WAAWX,QAClB,MAAMoB,KAAEA,KAAAC,eAAMA,gBAAmBrB,OAAOU,QAAQY,KAChD,GAAIC,aAAaH,MAAO,MAAM,IAAII,MAAM,wEAAwExB,OAAOS,gBAAgBT,OAAOM,QAC9I,MAAO,CAAEmB,aAAczB,OAAOU,QAAQgB,YAAYC,MAAOP,KAAMA,KAAKX,KAAMY,8BAC5E,CAEA,SAASJ,UAAUjB,QACjB,IAAI4B,OAAuB,CAAA,EAS3B,OAPAC,OAAOC,QAAQ9B,OAAOgB,QAAQe,QAASC,QACrC,MAAOC,IAAKC,OAASF,MACfG,WAAyBD,MAAMf,aAC/BV,KAAEA,KAAA2B,aAAMA,aAAAC,SAAcA,UAAaF,WACzCP,OAAS,IAAKA,OAAQK,CAACA,KAAM,CAAExB,UAAM2B,0BAAcC,sBAG9CT,MACT,CAEA,SAASf,cAAcb,QACrB,GAAIuB,aAAavB,OAAOY,aAAeW,aAAavB,OAAOY,WAAWU,MAAO,OAE7E,MAAMD,eAAEA,gBAAmBrB,OAAOY,WAAWU,KAE7C,MAAO,CAAEG,aAAczB,OAAOY,WAAWc,YAAYC,MAAON,8BAC9D"}
@@ -1,2 +1,2 @@
1
- import{actorToConfig}from"../../Adapters/EntityToConfig.js";import{isDefined}from"../../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{nanoid}from"../../../packages/anarchy-engine/node_modules/nanoid/index.browser.js";import{ActorTransformDrive}from"../../TransformDrive/ActorTransformDrive.js";import{DriveToTargetConnector}from"../../../TransformDrive/Entities/Connectors/DriveToTargetConnector.js";import{withCollisions}from"../../../Collisions/Mixins/WithCollisions.js";import{withSpatial}from"../../../Spatial/Mixins/WithSpatial.js";import{withActorStates}from"../../Mixins/WithActorStates.js";import{filter}from"../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js";import{takeUntil}from"../../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js";import{applySpatialGrid,startCollisions}from"../../Utils/ActorUtils.js";import{withUpdateSpatialCell}from"../../../Spatial/Mixins/WithUpdateSpatialCell.js";import{distinctUntilChanged}from"../../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js";import{tap}from"../../../node_modules/rxjs/dist/esm5/internal/operators/tap.js";import{sample}from"../../../node_modules/rxjs/dist/esm5/internal/operators/sample.js";import{EntityType}from"../../../Abstract/Constants/EntityType.js";import{mergeAll}from"../../../Utils/ObjectUtils.js";import{AbstractEntity}from"../../../Abstract/Entities/AbstractEntity.js";import{isEqualOrSimilarByXyzCoords}from"../../../Utils/TransformUtils.js";function Actor(params,{spatialGridService:spatialGridService,loopService:loopService,collisionsService:collisionsService,models3dService:models3dService,model3dToActorConnectionRegistry:model3dToActorConnectionRegistry,transformDriveService:transformDriveService}){const id=EntityType.Actor+"_"+nanoid(),model3d=isDefined(model3dToActorConnectionRegistry.findByModel3d(params.model3dSource))?models3dService.clone(params.model3dSource):params.model3dSource,drive=ActorTransformDrive(params,{transformDriveService:transformDriveService},id),driveToTargetConnector=DriveToTargetConnector(drive,model3d.getRawModel3d(),params.model3dSettings),entities=mergeAll({drive:drive,driveToTargetConnector:driveToTargetConnector,model3d:model3d},withActorStates(params),withSpatial(params),withCollisions(params,collisionsService,loopService.getCollisionsLoop()),withUpdateSpatialCell()),actor=mergeAll(AbstractEntity(entities,EntityType.Actor,{name:params.name,tags:params.tags,id:id}),{serialize:dependencies=>actorToConfig(actor,dependencies),getModel3dSettings:()=>params.model3dSettings,getPhysicsBody:()=>params.physicsBody}),spatialLoop=loopService.getSpatialLoop();(function(spatialLoop,position$,noiseThreshold){const prevValue=new Float32Array([0,0,0]);return position$.pipe(distinctUntilChanged((_prev,curr)=>isEqualOrSimilarByXyzCoords(prevValue[0],prevValue[1],prevValue[2],curr.x,curr.y,curr.z,noiseThreshold??0)),tap(value=>{prevValue[0]=value.x,prevValue[1]=value.y,prevValue[2]=value.z}),sample(spatialLoop.tick$))})(spatialLoop,drive.position$,params.spatial.performance?.noiseThreshold??1e-6).pipe(filter(()=>spatialLoop.shouldUpdateWithPriority(entities.spatial.getSpatialUpdatePriority())),takeUntil(actor.destroy$)).subscribe(position=>actor.updateSpatialCells(position));const destroySub$=actor.destroy$.subscribe(()=>{destroySub$.unsubscribe(),model3dToActorConnectionRegistry.removeByModel3d(model3d),model3d.destroy$.next(),entities.spatial.destroy$.next(),entities.collisions?.destroy$.next(),actor.spatial.destroy$.next(),actor.collisions.destroy$.next(),Object.values(entities.states).forEach(value=>value?.destroy$.next()),actor.states={}});return applySpatialGrid(params,actor,spatialGridService),startCollisions(actor),model3dToActorConnectionRegistry.addModel3d(model3d,actor),actor}export{Actor};
1
+ import{isDefined}from"../../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{nanoid}from"../../../packages/anarchy-engine/node_modules/nanoid/index.browser.js";import{ActorTransformDrive}from"../../TransformDrive/ActorTransformDrive.js";import{DriveToTargetConnector}from"../../../TransformDrive/Entities/Connectors/DriveToTargetConnector.js";import{withCollisions}from"../../../Collisions/Mixins/WithCollisions.js";import{withSpatial}from"../../../Spatial/Mixins/WithSpatial.js";import{withActorStates}from"../../Mixins/WithActorStates.js";import{filter}from"../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js";import{takeUntil}from"../../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js";import{applySpatialGrid,startCollisions}from"../../Utils/ActorUtils.js";import{withUpdateSpatialCell}from"../../../Spatial/Mixins/WithUpdateSpatialCell.js";import{distinctUntilChanged}from"../../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js";import{tap}from"../../../node_modules/rxjs/dist/esm5/internal/operators/tap.js";import{sample}from"../../../node_modules/rxjs/dist/esm5/internal/operators/sample.js";import{actorEntityToConfig}from"../../Adapters/EntityToConfig.js";import{EntityType}from"../../../Abstract/Constants/EntityType.js";import{mergeAll}from"../../../Utils/ObjectUtils.js";import{AbstractEntity}from"../../../Abstract/Entities/AbstractEntity.js";import{isEqualOrSimilarByXyzCoords}from"../../../Utils/TransformUtils.js";function Actor(params,{spatialGridService:spatialGridService,loopService:loopService,collisionsService:collisionsService,models3dService:models3dService,model3dToActorConnectionRegistry:model3dToActorConnectionRegistry,transformDriveService:transformDriveService}){const id=EntityType.Actor+"_"+nanoid(),model3d=isDefined(model3dToActorConnectionRegistry.findByModel3d(params.model3dSource))?models3dService.clone(params.model3dSource):params.model3dSource,drive=ActorTransformDrive(params,{transformDriveService:transformDriveService},id),driveToTargetConnector=DriveToTargetConnector(drive,model3d.getRawModel3d(),params.model3dSettings),entities=mergeAll({drive:drive,driveToTargetConnector:driveToTargetConnector,model3d:model3d},withActorStates(params),withSpatial(params),withCollisions(params,collisionsService,loopService.getCollisionsLoop()),withUpdateSpatialCell()),actor=mergeAll(AbstractEntity(entities,EntityType.Actor,{name:params.name,tags:params.tags,id:id}),{serialize:dependencies=>actorEntityToConfig(actor,dependencies),getModel3dSettings:()=>params.model3dSettings,getPhysicsBody:()=>params.physicsBody}),spatialLoop=loopService.getSpatialLoop();(function(spatialLoop,position$,noiseThreshold){const prevValue=new Float32Array([0,0,0]);return position$.pipe(distinctUntilChanged((_prev,curr)=>isEqualOrSimilarByXyzCoords(prevValue[0],prevValue[1],prevValue[2],curr.x,curr.y,curr.z,noiseThreshold??0)),tap(value=>{prevValue[0]=value.x,prevValue[1]=value.y,prevValue[2]=value.z}),sample(spatialLoop.tick$))})(spatialLoop,drive.position$,params.spatial.performance?.noiseThreshold??1e-6).pipe(filter(()=>spatialLoop.shouldUpdateWithPriority(entities.spatial.getSpatialUpdatePriority())),takeUntil(actor.destroy$)).subscribe(position=>actor.updateSpatialCells(position));const destroySub$=actor.destroy$.subscribe(()=>{destroySub$.unsubscribe(),model3dToActorConnectionRegistry.removeByModel3d(model3d),model3d.destroy$.next(),entities.spatial.destroy$.next(),entities.collisions?.destroy$.next(),actor.spatial.destroy$.next(),actor.collisions.destroy$.next(),Object.values(entities.states).forEach(value=>value?.destroy$.next()),actor.states={}});return applySpatialGrid(params,actor,spatialGridService),startCollisions(actor),model3dToActorConnectionRegistry.addModel3d(model3d,actor),actor}export{Actor};
2
2
  //# sourceMappingURL=Actor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actor.js","sources":["../../../../src/Actor/Entities/Actor/Actor.ts"],"sourcesContent":["import { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport { actorToConfig } from '@Anarchy/Engine/Actor/Adapters';\nimport { withActorStates } from '@Anarchy/Engine/Actor/Mixins';\nimport type {\n TActor,\n TActorConfig,\n TActorDependencies,\n TActorEntities,\n TActorEntityToConfigDependencies,\n TActorModel3dSettings,\n TActorParams,\n TActorTransformDrive\n} from '@Anarchy/Engine/Actor/Models';\nimport { ActorTransformDrive } from '@Anarchy/Engine/Actor/TransformDrive';\nimport { applySpatialGrid, startCollisions } from '@Anarchy/Engine/Actor/Utils';\nimport { withCollisions } from '@Anarchy/Engine/Collisions';\nimport type { TFsmWrapper } from '@Anarchy/Engine/Fsm';\nimport type { TModel3d } from '@Anarchy/Engine/Models3d';\nimport type { TPhysicsBody } from '@Anarchy/Engine/Physics';\nimport type { TSpatialLoop } from '@Anarchy/Engine/Spatial';\nimport { withSpatial, withUpdateSpatialCell } from '@Anarchy/Engine/Spatial';\nimport type { TReadonlyVector3 } from '@Anarchy/Engine/ThreeLib';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { isEqualOrSimilarByXyzCoords, mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport { nanoid } from 'nanoid';\nimport type { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, sample, takeUntil, tap } from 'rxjs';\nimport type { Vector3, Vector3Like } from 'three';\n\nexport function Actor(\n params: TActorParams,\n { spatialGridService, loopService, collisionsService, models3dService, model3dToActorConnectionRegistry, transformDriveService }: TActorDependencies\n): TActor {\n const id: string = EntityType.Actor + '_' + nanoid();\n const isModelAlreadyInUse: boolean = isDefined(model3dToActorConnectionRegistry.findByModel3d(params.model3dSource));\n const model3d: TModel3d = isModelAlreadyInUse ? models3dService.clone(params.model3dSource) : params.model3dSource;\n\n // Init TransformDrive\n const drive: TActorTransformDrive = ActorTransformDrive(params, { transformDriveService }, id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, model3d.getRawModel3d(), params.model3dSettings);\n\n const entities: TActorEntities = mergeAll(\n {\n drive,\n driveToTargetConnector,\n model3d\n },\n withActorStates(params),\n withSpatial(params),\n withCollisions(params, collisionsService, loopService.getCollisionsLoop()),\n withUpdateSpatialCell()\n );\n\n const actor: TActor = mergeAll(AbstractEntity(entities, EntityType.Actor, { name: params.name, tags: params.tags, id }), {\n serialize: (dependencies: TActorEntityToConfigDependencies): TActorConfig => actorToConfig(actor, dependencies),\n getModel3dSettings: (): TActorModel3dSettings | undefined => params.model3dSettings,\n getPhysicsBody: (): TPhysicsBody | undefined => params.physicsBody\n });\n\n const spatialLoop: TSpatialLoop = loopService.getSpatialLoop();\n\n spatialPositionUpdate(spatialLoop, drive.position$, params.spatial.performance?.noiseThreshold ?? 0.000001)\n .pipe(\n filter((): boolean => spatialLoop.shouldUpdateWithPriority(entities.spatial.getSpatialUpdatePriority())),\n takeUntil(actor.destroy$)\n )\n .subscribe((position: TReadonlyVector3): void => actor.updateSpatialCells(position));\n\n const destroySub$: Subscription = actor.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n //Remove model3d registration\n model3dToActorConnectionRegistry.removeByModel3d(model3d);\n\n //Destroy related entities\n model3d.destroy$.next();\n entities.spatial.destroy$.next();\n entities.collisions?.destroy$.next();\n\n //Destroy spatial\n actor.spatial.destroy$.next();\n\n //Destroy collisions\n actor.collisions.destroy$.next();\n\n //Destroy Fsm's\n Object.values(entities.states).forEach((value: TFsmWrapper): void => value?.destroy$.next());\n // eslint-disable-next-line functional/immutable-data\n (actor as TWriteable<TActor>).states = {};\n });\n\n applySpatialGrid(params, actor, spatialGridService);\n startCollisions(actor);\n model3dToActorConnectionRegistry.addModel3d(model3d, actor);\n return actor;\n}\n\nfunction spatialPositionUpdate<T extends Vector3Like | Vector3 | TReadonlyVector3>(spatialLoop: TSpatialLoop, position$: BehaviorSubject<T>, noiseThreshold?: number): Observable<Readonly<T>> {\n const prevValue: Float32Array = new Float32Array([0, 0, 0]);\n\n return position$.pipe(\n distinctUntilChanged((_prev: T, curr: T): boolean => isEqualOrSimilarByXyzCoords(prevValue[0], prevValue[1], prevValue[2], curr.x, curr.y, curr.z, noiseThreshold ?? 0)),\n tap((value: T): 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 sample(spatialLoop.tick$)\n );\n}\n"],"names":["Actor","params","spatialGridService","loopService","collisionsService","models3dService","model3dToActorConnectionRegistry","transformDriveService","id","EntityType","nanoid","model3d","isDefined","findByModel3d","model3dSource","clone","drive","ActorTransformDrive","driveToTargetConnector","DriveToTargetConnector","getRawModel3d","model3dSettings","entities","mergeAll","withActorStates","withSpatial","withCollisions","getCollisionsLoop","withUpdateSpatialCell","actor","AbstractEntity","name","tags","serialize","dependencies","actorToConfig","getModel3dSettings","getPhysicsBody","physicsBody","spatialLoop","getSpatialLoop","position$","noiseThreshold","prevValue","Float32Array","pipe","distinctUntilChanged","_prev","curr","isEqualOrSimilarByXyzCoords","x","y","z","tap","value","sample","tick$","spatialPositionUpdate","spatial","performance","filter","shouldUpdateWithPriority","getSpatialUpdatePriority","takeUntil","destroy$","subscribe","position","updateSpatialCells","destroySub$","unsubscribe","removeByModel3d","next","collisions","Object","values","states","forEach","applySpatialGrid","startCollisions","addModel3d"],"mappings":"k9CAgCO,SAASA,MACdC,QACAC,mBAAEA,mBAAAC,YAAoBA,8BAAaC,kBAAAC,gBAAmBA,gBAAAC,iCAAiBA,iCAAAC,sBAAkCA,wBAEzG,MAAMC,GAAaC,WAAWT,MAAQ,IAAMU,SAEtCC,QAD+BC,UAAUN,iCAAiCO,cAAcZ,OAAOa,gBACrDT,gBAAgBU,MAAMd,OAAOa,eAAiBb,OAAOa,cAG/FE,MAA8BC,oBAAoBhB,OAAQ,CAAEM,6CAAyBC,IACrFU,uBAAkDC,uBAAuBH,MAAOL,QAAQS,gBAAiBnB,OAAOoB,iBAEhHC,SAA2BC,SAC/B,CACEP,YACAE,8CACAP,iBAEFa,gBAAgBvB,QAChBwB,YAAYxB,QACZyB,eAAezB,OAAQG,kBAAmBD,YAAYwB,qBACtDC,yBAGIC,MAAgBN,SAASO,eAAeR,SAAUb,WAAWT,MAAO,CAAE+B,KAAM9B,OAAO8B,KAAMC,KAAM/B,OAAO+B,KAAMxB,QAAO,CACvHyB,UAAYC,cAAiEC,cAAcN,MAAOK,cAClGE,mBAAoB,IAAyCnC,OAAOoB,gBACpEgB,eAAgB,IAAgCpC,OAAOqC,cAGnDC,YAA4BpC,YAAYqC,kBAsChD,SAAmFD,YAA2BE,UAA+BC,gBAC3I,MAAMC,UAA0B,IAAIC,aAAa,CAAC,EAAG,EAAG,IAExD,OAAOH,UAAUI,KACfC,qBAAqB,CAACC,MAAUC,OAAqBC,4BAA4BN,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIK,KAAKE,EAAGF,KAAKG,EAAGH,KAAKI,EAAGV,gBAAkB,IACrKW,IAAKC,QAEHX,UAAU,GAAKW,MAAMJ,EAErBP,UAAU,GAAKW,MAAMH,EAErBR,UAAU,GAAKW,MAAMF,IAEvBG,OAAOhB,YAAYiB,OAEvB,EAnDEC,CAAsBlB,YAAavB,MAAMyB,UAAWxC,OAAOyD,QAAQC,aAAajB,gBAAkB,MAC/FG,KACCe,OAAO,IAAerB,YAAYsB,yBAAyBvC,SAASoC,QAAQI,6BAC5EC,UAAUlC,MAAMmC,WAEjBC,UAAWC,UAAqCrC,MAAMsC,mBAAmBD,WAE5E,MAAME,YAA4BvC,MAAMmC,SAASC,UAAU,KACzDG,YAAYC,cAGZ/D,iCAAiCgE,gBAAgB3D,SAGjDA,QAAQqD,SAASO,OACjBjD,SAASoC,QAAQM,SAASO,OAC1BjD,SAASkD,YAAYR,SAASO,OAG9B1C,MAAM6B,QAAQM,SAASO,OAGvB1C,MAAM2C,WAAWR,SAASO,OAG1BE,OAAOC,OAAOpD,SAASqD,QAAQC,QAAStB,OAA6BA,OAAOU,SAASO,QAEpF1C,MAA6B8C,OAAS,CAAA,IAMzC,OAHAE,iBAAiB5E,OAAQ4B,MAAO3B,oBAChC4E,gBAAgBjD,OAChBvB,iCAAiCyE,WAAWpE,QAASkB,OAC9CA,KACT"}
1
+ {"version":3,"file":"Actor.js","sources":["../../../../src/Actor/Entities/Actor/Actor.ts"],"sourcesContent":["import { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport { actorEntityToConfig } from '@Anarchy/Engine/Actor/Adapters';\nimport { withActorStates } from '@Anarchy/Engine/Actor/Mixins';\nimport type {\n TActor,\n TActorConfig,\n TActorDependencies,\n TActorEntities,\n TActorEntityToConfigDependencies,\n TActorModel3dSettings,\n TActorParams,\n TActorTransformDrive\n} from '@Anarchy/Engine/Actor/Models';\nimport { ActorTransformDrive } from '@Anarchy/Engine/Actor/TransformDrive';\nimport { applySpatialGrid, startCollisions } from '@Anarchy/Engine/Actor/Utils';\nimport { withCollisions } from '@Anarchy/Engine/Collisions';\nimport type { TFsmWrapper } from '@Anarchy/Engine/Fsm';\nimport type { TModel3d } from '@Anarchy/Engine/Models3d';\nimport type { TPhysicsBody } from '@Anarchy/Engine/Physics';\nimport type { TSpatialLoop } from '@Anarchy/Engine/Spatial';\nimport { withSpatial, withUpdateSpatialCell } from '@Anarchy/Engine/Spatial';\nimport type { TReadonlyVector3 } from '@Anarchy/Engine/ThreeLib';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { isEqualOrSimilarByXyzCoords, mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport { nanoid } from 'nanoid';\nimport type { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, sample, takeUntil, tap } from 'rxjs';\nimport type { Vector3, Vector3Like } from 'three';\n\nexport function Actor(\n params: TActorParams,\n { spatialGridService, loopService, collisionsService, models3dService, model3dToActorConnectionRegistry, transformDriveService }: TActorDependencies\n): TActor {\n const id: string = EntityType.Actor + '_' + nanoid();\n const isModelAlreadyInUse: boolean = isDefined(model3dToActorConnectionRegistry.findByModel3d(params.model3dSource));\n const model3d: TModel3d = isModelAlreadyInUse ? models3dService.clone(params.model3dSource) : params.model3dSource;\n\n // Init TransformDrive\n const drive: TActorTransformDrive = ActorTransformDrive(params, { transformDriveService }, id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, model3d.getRawModel3d(), params.model3dSettings);\n\n const entities: TActorEntities = mergeAll(\n {\n drive,\n driveToTargetConnector,\n model3d\n },\n withActorStates(params),\n withSpatial(params),\n withCollisions(params, collisionsService, loopService.getCollisionsLoop()),\n withUpdateSpatialCell()\n );\n\n const actor: TActor = mergeAll(AbstractEntity(entities, EntityType.Actor, { name: params.name, tags: params.tags, id }), {\n serialize: (dependencies: TActorEntityToConfigDependencies): TActorConfig => actorEntityToConfig(actor, dependencies),\n getModel3dSettings: (): TActorModel3dSettings | undefined => params.model3dSettings,\n getPhysicsBody: (): TPhysicsBody | undefined => params.physicsBody\n });\n\n const spatialLoop: TSpatialLoop = loopService.getSpatialLoop();\n\n spatialPositionUpdate(spatialLoop, drive.position$, params.spatial.performance?.noiseThreshold ?? 0.000001)\n .pipe(\n filter((): boolean => spatialLoop.shouldUpdateWithPriority(entities.spatial.getSpatialUpdatePriority())),\n takeUntil(actor.destroy$)\n )\n .subscribe((position: TReadonlyVector3): void => actor.updateSpatialCells(position));\n\n const destroySub$: Subscription = actor.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n //Remove model3d registration\n model3dToActorConnectionRegistry.removeByModel3d(model3d);\n\n //Destroy related entities\n model3d.destroy$.next();\n entities.spatial.destroy$.next();\n entities.collisions?.destroy$.next();\n\n //Destroy spatial\n actor.spatial.destroy$.next();\n\n //Destroy collisions\n actor.collisions.destroy$.next();\n\n //Destroy Fsm's\n Object.values(entities.states).forEach((value: TFsmWrapper): void => value?.destroy$.next());\n // eslint-disable-next-line functional/immutable-data\n (actor as TWriteable<TActor>).states = {};\n });\n\n applySpatialGrid(params, actor, spatialGridService);\n startCollisions(actor);\n model3dToActorConnectionRegistry.addModel3d(model3d, actor);\n return actor;\n}\n\nfunction spatialPositionUpdate<T extends Vector3Like | Vector3 | TReadonlyVector3>(spatialLoop: TSpatialLoop, position$: BehaviorSubject<T>, noiseThreshold?: number): Observable<Readonly<T>> {\n const prevValue: Float32Array = new Float32Array([0, 0, 0]);\n\n return position$.pipe(\n distinctUntilChanged((_prev: T, curr: T): boolean => isEqualOrSimilarByXyzCoords(prevValue[0], prevValue[1], prevValue[2], curr.x, curr.y, curr.z, noiseThreshold ?? 0)),\n tap((value: T): 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 sample(spatialLoop.tick$)\n );\n}\n"],"names":["Actor","params","spatialGridService","loopService","collisionsService","models3dService","model3dToActorConnectionRegistry","transformDriveService","id","EntityType","nanoid","model3d","isDefined","findByModel3d","model3dSource","clone","drive","ActorTransformDrive","driveToTargetConnector","DriveToTargetConnector","getRawModel3d","model3dSettings","entities","mergeAll","withActorStates","withSpatial","withCollisions","getCollisionsLoop","withUpdateSpatialCell","actor","AbstractEntity","name","tags","serialize","dependencies","actorEntityToConfig","getModel3dSettings","getPhysicsBody","physicsBody","spatialLoop","getSpatialLoop","position$","noiseThreshold","prevValue","Float32Array","pipe","distinctUntilChanged","_prev","curr","isEqualOrSimilarByXyzCoords","x","y","z","tap","value","sample","tick$","spatialPositionUpdate","spatial","performance","filter","shouldUpdateWithPriority","getSpatialUpdatePriority","takeUntil","destroy$","subscribe","position","updateSpatialCells","destroySub$","unsubscribe","removeByModel3d","next","collisions","Object","values","states","forEach","applySpatialGrid","startCollisions","addModel3d"],"mappings":"w9CAgCO,SAASA,MACdC,QACAC,mBAAEA,mBAAAC,YAAoBA,8BAAaC,kBAAAC,gBAAmBA,gBAAAC,iCAAiBA,iCAAAC,sBAAkCA,wBAEzG,MAAMC,GAAaC,WAAWT,MAAQ,IAAMU,SAEtCC,QAD+BC,UAAUN,iCAAiCO,cAAcZ,OAAOa,gBACrDT,gBAAgBU,MAAMd,OAAOa,eAAiBb,OAAOa,cAG/FE,MAA8BC,oBAAoBhB,OAAQ,CAAEM,6CAAyBC,IACrFU,uBAAkDC,uBAAuBH,MAAOL,QAAQS,gBAAiBnB,OAAOoB,iBAEhHC,SAA2BC,SAC/B,CACEP,YACAE,8CACAP,iBAEFa,gBAAgBvB,QAChBwB,YAAYxB,QACZyB,eAAezB,OAAQG,kBAAmBD,YAAYwB,qBACtDC,yBAGIC,MAAgBN,SAASO,eAAeR,SAAUb,WAAWT,MAAO,CAAE+B,KAAM9B,OAAO8B,KAAMC,KAAM/B,OAAO+B,KAAMxB,QAAO,CACvHyB,UAAYC,cAAiEC,oBAAoBN,MAAOK,cACxGE,mBAAoB,IAAyCnC,OAAOoB,gBACpEgB,eAAgB,IAAgCpC,OAAOqC,cAGnDC,YAA4BpC,YAAYqC,kBAsChD,SAAmFD,YAA2BE,UAA+BC,gBAC3I,MAAMC,UAA0B,IAAIC,aAAa,CAAC,EAAG,EAAG,IAExD,OAAOH,UAAUI,KACfC,qBAAqB,CAACC,MAAUC,OAAqBC,4BAA4BN,UAAU,GAAIA,UAAU,GAAIA,UAAU,GAAIK,KAAKE,EAAGF,KAAKG,EAAGH,KAAKI,EAAGV,gBAAkB,IACrKW,IAAKC,QAEHX,UAAU,GAAKW,MAAMJ,EAErBP,UAAU,GAAKW,MAAMH,EAErBR,UAAU,GAAKW,MAAMF,IAEvBG,OAAOhB,YAAYiB,OAEvB,EAnDEC,CAAsBlB,YAAavB,MAAMyB,UAAWxC,OAAOyD,QAAQC,aAAajB,gBAAkB,MAC/FG,KACCe,OAAO,IAAerB,YAAYsB,yBAAyBvC,SAASoC,QAAQI,6BAC5EC,UAAUlC,MAAMmC,WAEjBC,UAAWC,UAAqCrC,MAAMsC,mBAAmBD,WAE5E,MAAME,YAA4BvC,MAAMmC,SAASC,UAAU,KACzDG,YAAYC,cAGZ/D,iCAAiCgE,gBAAgB3D,SAGjDA,QAAQqD,SAASO,OACjBjD,SAASoC,QAAQM,SAASO,OAC1BjD,SAASkD,YAAYR,SAASO,OAG9B1C,MAAM6B,QAAQM,SAASO,OAGvB1C,MAAM2C,WAAWR,SAASO,OAG1BE,OAAOC,OAAOpD,SAASqD,QAAQC,QAAStB,OAA6BA,OAAOU,SAASO,QAEpF1C,MAA6B8C,OAAS,CAAA,IAMzC,OAHAE,iBAAiB5E,OAAQ4B,MAAO3B,oBAChC4E,gBAAgBjD,OAChBvB,iCAAiCyE,WAAWpE,QAASkB,OAC9CA,KACT"}
@@ -1,2 +1,2 @@
1
- import{configToParams}from"../Adapters/ConfigToParams.js";import{Actor}from"../Entities/Actor/Actor.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function ActorFactory(){const factory=ReactiveFactory(FactoryType.Actor,Actor);return Object.assign(factory,{configToParams:configToParams})}export{ActorFactory};
1
+ import{actorConfigToParams}from"../Adapters/ConfigToParams.js";import{Actor}from"../Entities/Actor/Actor.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function ActorFactory(){const factory=ReactiveFactory(FactoryType.Actor,Actor);return Object.assign(factory,{configToParams:actorConfigToParams})}export{ActorFactory};
2
2
  //# sourceMappingURL=ActorFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActorFactory.js","sources":["../../../src/Actor/Factories/ActorFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { configToParams } from '@Anarchy/Engine/Actor/Adapters';\nimport { Actor } from '@Anarchy/Engine/Actor/Entities';\nimport type { TActor, TActorFactory, TActorParams, TActorServiceDependencies } from '@Anarchy/Engine/Actor/Models';\n\nexport function ActorFactory(): TActorFactory {\n const factory: TReactiveFactory<TActor, TActorParams, TActorServiceDependencies> = ReactiveFactory(FactoryType.Actor, Actor);\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams });\n}\n"],"names":["ActorFactory","factory","ReactiveFactory","FactoryType","Actor","Object","assign","configToParams"],"mappings":"kPAMO,SAASA,eACd,MAAMC,QAA6EC,gBAAgBC,YAAYC,MAAOA,OAEtH,OAAOC,OAAOC,OAAOL,QAAS,CAAEM,+BAClC"}
1
+ {"version":3,"file":"ActorFactory.js","sources":["../../../src/Actor/Factories/ActorFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { actorConfigToParams } from '@Anarchy/Engine/Actor/Adapters';\nimport { Actor } from '@Anarchy/Engine/Actor/Entities';\nimport type { TActor, TActorFactory, TActorParams, TActorServiceDependencies } from '@Anarchy/Engine/Actor/Models';\n\nexport function ActorFactory(): TActorFactory {\n const factory: TReactiveFactory<TActor, TActorParams, TActorServiceDependencies> = ReactiveFactory(FactoryType.Actor, Actor);\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: actorConfigToParams });\n}\n"],"names":["ActorFactory","factory","ReactiveFactory","FactoryType","Actor","Object","assign","configToParams","actorConfigToParams"],"mappings":"uPAMO,SAASA,eACd,MAAMC,QAA6EC,gBAAgBC,YAAYC,MAAOA,OAEtH,OAAOC,OAAOC,OAAOL,QAAS,CAAEM,eAAgBC,qBAClD"}
@@ -1,3 +1,4 @@
1
+ export * from './Adapters';
1
2
  export * from './Entities';
2
3
  export * from './Factories';
3
4
  export * from './Mixins';
@@ -0,0 +1,2 @@
1
+ import { TAnyAudioConfig, TAnyAudioParams, TAudioConfigToParamsDependencies } from '../Models';
2
+ export declare function audioConfigToParams(config: TAnyAudioConfig, { audioResourceAsyncRegistry, audioListenersRegistry }: TAudioConfigToParamsDependencies): TAnyAudioParams;
@@ -0,0 +1,2 @@
1
+ import{Vector3}from"three";import{Listeners}from"../Constants/Listeners.js";import{isAudio3dConfig}from"../Utils/AudioUtils.js";function audioConfigToParams(config,{audioResourceAsyncRegistry:audioResourceAsyncRegistry,audioListenersRegistry:audioListenersRegistry}){const{position:position,...rest}=config,result={...rest,listener:audioListenersRegistry.findByKey(config.listener??Listeners.Main),audioSource:getAudio(config,audioResourceAsyncRegistry)};return isAudio3dConfig(config)?(result.position=new Vector3(position.x,position.y),result):result}function getAudio(config,audioResourceAsyncRegistry){return audioResourceAsyncRegistry.getByKey(config.audioSource)}export{audioConfigToParams};
2
+ //# sourceMappingURL=AudioConfigToParams.js.map
@@ -0,0 +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,2 +1,2 @@
1
1
  import { TAbstractAudioWrapper, TAnyAudio, TAnyAudioConfig, TAudioConfigToParamsDependencies } from '../Models';
2
- export declare function audioToConfig<T extends TAnyAudio>(entity: TAbstractAudioWrapper<T>, { audioResourceAsyncRegistry, audioListenersRegistry }: TAudioConfigToParamsDependencies): TAnyAudioConfig;
2
+ export declare function audioEntityToConfig<T extends TAnyAudio>(entity: TAbstractAudioWrapper<T>, { audioResourceAsyncRegistry, audioListenersRegistry }: TAudioConfigToParamsDependencies): TAnyAudioConfig;
@@ -1,2 +1,2 @@
1
- import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{omitInObjectWithoutMutation,filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{isAudio3dWrapper}from"../Utils/AudioUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function audioToConfig(entity,{audioResourceAsyncRegistry:audioResourceAsyncRegistry,audioListenersRegistry:audioListenersRegistry}){const{volume$:volume$,loop$:loop$,speed$:speed$,pause$:pause$,seek$:seek$}=entity,audio3dConfig=isAudio3dWrapper(entity)?{refDistance:entity.entity.getRefDistance(),rolloffFactor:entity.entity.getRolloffFactor(),maxDistance:entity.entity.getMaxDistance(),directionalCone:entity.directionalCone$.value,distanceModel:entity.entity.getDistanceModel(),performance:entity.getPerformance(),listener:audioListenersRegistry.findKeyByValue(entity.entity.listener),...omitInObjectWithoutMutation(entity.drive.serialize(),["rotation","scale"])}:{};if(isNotDefined(entity.entity.buffer))throw new Error(`[Serialization] Audio: Cannot serialize Audio without audio buffer: "${entity.name}" (id: "${entity.id}")`);const audioSource=audioResourceAsyncRegistry.getKeyByValue(entity.entity.buffer);return filterOutEmptyFields({...audio3dConfig,...extractSerializableRegistrableFields(entity),volume:volume$.value,loop:loop$.value,speed:speed$.value,pause:pause$.value,seek:seek$.value,audioSource:audioSource})}export{audioToConfig};
1
+ import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{omitInObjectWithoutMutation,filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{isAudio3dWrapper}from"../Utils/AudioUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function audioEntityToConfig(entity,{audioResourceAsyncRegistry:audioResourceAsyncRegistry,audioListenersRegistry:audioListenersRegistry}){const{volume$:volume$,loop$:loop$,speed$:speed$,pause$:pause$,seek$:seek$}=entity,audio3dConfig=isAudio3dWrapper(entity)?{refDistance:entity.entity.getRefDistance(),rolloffFactor:entity.entity.getRolloffFactor(),maxDistance:entity.entity.getMaxDistance(),directionalCone:entity.directionalCone$.value,distanceModel:entity.entity.getDistanceModel(),performance:entity.getPerformance(),listener:audioListenersRegistry.findKeyByValue(entity.entity.listener),...omitInObjectWithoutMutation(entity.drive.serialize(),["rotation","scale"])}:{};if(isNotDefined(entity.entity.buffer))throw new Error(`[Serialization] Audio: Cannot serialize Audio without audio buffer: "${entity.name}" (id: "${entity.id}")`);const audioSource=audioResourceAsyncRegistry.getKeyByValue(entity.entity.buffer);return filterOutEmptyFields({...audio3dConfig,...extractSerializableRegistrableFields(entity),volume:volume$.value,loop:loop$.value,speed:speed$.value,pause:pause$.value,seek:seek$.value,audioSource:audioSource})}export{audioEntityToConfig};
2
2
  //# sourceMappingURL=EntityToConfig.js.map
@@ -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 audioToConfig<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":["audioToConfig","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,cAAmCC,QAAkCC,2BAAEA,2BAAAC,uBAA4BA,yBACjH,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 '@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,2 +1,2 @@
1
- export * from './ConfigToParams';
1
+ export * from './AudioConfigToParams';
2
2
  export * from './EntityToConfig';
@@ -1,2 +1,2 @@
1
- import{configToParams}from"../Adapters/ConfigToParams.js";import{isAudio3dParams}from"../Utils/AudioUtils.js";import{Audio3dWrapper}from"../Wrappers/Audio3dWrapper.js";import{AudioWrapper}from"../Wrappers/AudioWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function create(params,loops){return isAudio3dParams(params)?Audio3dWrapper(params,loops):AudioWrapper(params)}function AudioFactory(){const factory=ReactiveFactory(FactoryType.Audio,create);return Object.assign(factory,{configToParams:configToParams})}export{AudioFactory};
1
+ import{audioConfigToParams}from"../Adapters/AudioConfigToParams.js";import{isAudio3dParams}from"../Utils/AudioUtils.js";import{Audio3dWrapper}from"../Wrappers/Audio3dWrapper.js";import{AudioWrapper}from"../Wrappers/AudioWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function create(params,loops){return isAudio3dParams(params)?Audio3dWrapper(params,loops):AudioWrapper(params)}function AudioFactory(){const factory=ReactiveFactory(FactoryType.Audio,create);return Object.assign(factory,{configToParams:audioConfigToParams})}export{AudioFactory};
2
2
  //# sourceMappingURL=AudioFactory.js.map
@@ -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 { configToParams } 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 });\n}\n"],"names":["create","params","loops","isAudio3dParams","Audio3dWrapper","AudioWrapper","AudioFactory","factory","ReactiveFactory","FactoryType","Audio","Object","assign","configToParams"],"mappings":"wWAQA,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,+BAClC"}
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,2 +1,2 @@
1
- import{BehaviorSubject}from"../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js";import{Subject}from"../../node_modules/rxjs/dist/esm5/internal/Subject.js";import{takeUntil}from"../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js";import{skipWhile}from"../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js";import{seekAudio,disposeAudio}from"../Utils/AudioUtils.js";import{destroyAudio}from"../../Utils/DestroyUtils.js";import{audioToConfig}from"../Adapters/EntityToConfig.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";function AbstractAudioWrapper(params,createFn){const{audioSource:audioSource,volume:volume}=params,entity=createFn(audioSource,params),listener$=new BehaviorSubject(params.listener),play$=new Subject,pause$=new BehaviorSubject(params.pause??!1),speed$=new BehaviorSubject(params.speed??1),seek$=new BehaviorSubject(params.seek??0),loop$=new BehaviorSubject(params.loop??!1),volume$=new BehaviorSubject(volume??1),wrapper=AbstractWrapper(entity,WrapperType.Audio,params);play$.pipe(takeUntil(wrapper.destroy$)).subscribe(shouldPlay=>shouldPlay&&!entity.isPlaying?void entity.play():void entity.stop()),volume$.pipe(skipWhile((volume2,index)=>0===index&&1===volume2),takeUntil(wrapper.destroy$)).subscribe(volume2=>{entity.setVolume(volume2)});let lastPausedPosition=0;pause$.pipe(skipWhile((shouldPause,index)=>0===index&&!shouldPause),takeUntil(wrapper.destroy$)).subscribe(shouldPause=>{shouldPause&&entity.isPlaying?(lastPausedPosition=entity.context.currentTime,play$.next(!1)):(seek$.next(lastPausedPosition),play$.next(!0))}),speed$.pipe(skipWhile((speed,index)=>0===index&&1===speed),takeUntil(wrapper.destroy$)).subscribe(speed=>{entity.setPlaybackRate(speed)}),seek$.pipe(skipWhile((seek,index)=>0===index&&0===seek),takeUntil(wrapper.destroy$)).subscribe(seek=>{seekAudio(entity,seek,entity.isPlaying),lastPausedPosition=seek}),loop$.pipe(skipWhile((shouldLoop,index)=>0===index&&!shouldLoop),takeUntil(wrapper.destroy$)).subscribe(shouldLoop=>{entity.setLoop(shouldLoop)});const destroySub$=wrapper.destroy$.subscribe(()=>{wrapper.entity.stop(),destroyAudio(wrapper.entity),destroySub$.unsubscribe(),listener$.value&&(listener$.value.context=null),listener$.value&&(listener$.value.gain=null),listener$.complete(),play$.complete(),pause$.complete(),speed$.complete(),seek$.complete(),loop$.complete(),volume$.complete(),disposeAudio(entity)}),result=Object.assign(wrapper,{play$:play$,pause$:pause$,speed$:speed$,seek$:seek$,loop$:loop$,isPlaying:()=>entity.isPlaying,getDuration:()=>entity.buffer?.duration,volume$:volume$,listener$:listener$,serialize:dependencies=>audioToConfig(result,dependencies)});return result}export{AbstractAudioWrapper};
1
+ import{BehaviorSubject}from"../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js";import{Subject}from"../../node_modules/rxjs/dist/esm5/internal/Subject.js";import{takeUntil}from"../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js";import{skipWhile}from"../../node_modules/rxjs/dist/esm5/internal/operators/skipWhile.js";import{seekAudio,disposeAudio}from"../Utils/AudioUtils.js";import{destroyAudio}from"../../Utils/DestroyUtils.js";import{audioEntityToConfig}from"../Adapters/EntityToConfig.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";function AbstractAudioWrapper(params,createFn){const{audioSource:audioSource,volume:volume}=params,entity=createFn(audioSource,params),listener$=new BehaviorSubject(params.listener),play$=new Subject,pause$=new BehaviorSubject(params.pause??!1),speed$=new BehaviorSubject(params.speed??1),seek$=new BehaviorSubject(params.seek??0),loop$=new BehaviorSubject(params.loop??!1),volume$=new BehaviorSubject(volume??1),wrapper=AbstractWrapper(entity,WrapperType.Audio,params);play$.pipe(takeUntil(wrapper.destroy$)).subscribe(shouldPlay=>shouldPlay&&!entity.isPlaying?void entity.play():void entity.stop()),volume$.pipe(skipWhile((volume2,index)=>0===index&&1===volume2),takeUntil(wrapper.destroy$)).subscribe(volume2=>{entity.setVolume(volume2)});let lastPausedPosition=0;pause$.pipe(skipWhile((shouldPause,index)=>0===index&&!shouldPause),takeUntil(wrapper.destroy$)).subscribe(shouldPause=>{shouldPause&&entity.isPlaying?(lastPausedPosition=entity.context.currentTime,play$.next(!1)):(seek$.next(lastPausedPosition),play$.next(!0))}),speed$.pipe(skipWhile((speed,index)=>0===index&&1===speed),takeUntil(wrapper.destroy$)).subscribe(speed=>{entity.setPlaybackRate(speed)}),seek$.pipe(skipWhile((seek,index)=>0===index&&0===seek),takeUntil(wrapper.destroy$)).subscribe(seek=>{seekAudio(entity,seek,entity.isPlaying),lastPausedPosition=seek}),loop$.pipe(skipWhile((shouldLoop,index)=>0===index&&!shouldLoop),takeUntil(wrapper.destroy$)).subscribe(shouldLoop=>{entity.setLoop(shouldLoop)});const destroySub$=wrapper.destroy$.subscribe(()=>{wrapper.entity.stop(),destroyAudio(wrapper.entity),destroySub$.unsubscribe(),listener$.value&&(listener$.value.context=null),listener$.value&&(listener$.value.gain=null),listener$.complete(),play$.complete(),pause$.complete(),speed$.complete(),seek$.complete(),loop$.complete(),volume$.complete(),disposeAudio(entity)}),result=Object.assign(wrapper,{play$:play$,pause$:pause$,speed$:speed$,seek$:seek$,loop$:loop$,isPlaying:()=>entity.isPlaying,getDuration:()=>entity.buffer?.duration,volume$:volume$,listener$:listener$,serialize:dependencies=>audioEntityToConfig(result,dependencies)});return result}export{AbstractAudioWrapper};
2
2
  //# sourceMappingURL=AbstractAudioWrapper.js.map
@@ -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 { audioToConfig } 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 => audioToConfig(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","audioToConfig"],"mappings":"2oBAUO,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,cAAcR,OAAQO,gBAGxG,OAAOP,MACT"}
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,5 +1,5 @@
1
1
  import { TAnyCameraParams, TCameraServiceDependencies, TCommonCameraConfig } from '../Models';
2
2
  import { TShadowCameraConfig, TShadowCameraParams } from '../../Light';
3
- export declare function configToParams(config: TCommonCameraConfig, { audioService }: TCameraServiceDependencies): TAnyCameraParams | never;
3
+ export declare function cameraConfigToParams(config: TCommonCameraConfig, { audioService }: TCameraServiceDependencies): TAnyCameraParams | never;
4
4
  export declare function configToParamsCameraOnly(config: TCommonCameraConfig): Omit<TAnyCameraParams, 'audioListener'>;
5
5
  export declare function configToParamsCameraOptionsOnly(config: TCommonCameraConfig | TShadowCameraConfig): TShadowCameraParams;
@@ -1,2 +1,2 @@
1
- import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{omitInObjectWithoutMutation}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{Vector3}from"three";import{configToParamsObject3d}from"../../ThreeLib/Utils/Object3dUtils.js";function configToParams(config,{audioService:audioService}){let listener;if(isDefined(config.audioListener)&&(listener=audioService.getListenersRegistry().findByKey(config.audioListener),isNotDefined(listener)))throw new Error(`Camera: cannot create camera from config: listener ("${config.audioListener}") is not found`);return{...configToParamsCameraOnly(config),...configToParamsAudioListener(config,audioService)}}function configToParamsCameraOnly(config){const{position:position,rotation:rotation,scale:scale,layers:layers,name:name,isActive:isActive,type:type}=omitInObjectWithoutMutation(config,["audioListener"]);return{name:name,isActive:isActive,type:type,...configToParamsCameraOptionsOnly(config),...configToParamsObject3d({position:position,rotation:rotation,scale:scale,layers:layers})}}function configToParamsCameraOptionsOnly(config){const{scale:scale,layers:layers,lookAt:lookAt,up:up,...rest}=omitInObjectWithoutMutation(config,["audioListener","audioListener","position","rotation","name","isActive","type"]);return{...rest,...configToParamsObject3d({scale:scale,layers:layers}),lookAt:lookAt?new Vector3(lookAt.x,lookAt.y,lookAt.z):void 0,up:up?new Vector3(up.x,up.y,up.z):void 0}}function configToParamsAudioListener(config,audioService){let audioListener;return isDefined(config.audioListener)&&(audioListener=audioService.getListenersRegistry().getByKey(config.audioListener)),{audioListener:audioListener}}export{configToParams,configToParamsCameraOnly,configToParamsCameraOptionsOnly};
1
+ import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{omitInObjectWithoutMutation}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{Vector3}from"three";import{object3dConfigToParams}from"../../ThreeLib/Utils/Object3dUtils.js";function cameraConfigToParams(config,{audioService:audioService}){let listener;if(isDefined(config.audioListener)&&(listener=audioService.getListenersRegistry().findByKey(config.audioListener),isNotDefined(listener)))throw new Error(`Camera: cannot create camera from config: listener ("${config.audioListener}") is not found`);return{...configToParamsCameraOnly(config),...configToParamsAudioListener(config,audioService)}}function configToParamsCameraOnly(config){const{position:position,rotation:rotation,scale:scale,layers:layers,name:name,isActive:isActive,type:type}=omitInObjectWithoutMutation(config,["audioListener"]);return{name:name,isActive:isActive,type:type,...configToParamsCameraOptionsOnly(config),...object3dConfigToParams({position:position,rotation:rotation,scale:scale,layers:layers})}}function configToParamsCameraOptionsOnly(config){const{scale:scale,layers:layers,lookAt:lookAt,up:up,...rest}=omitInObjectWithoutMutation(config,["audioListener","audioListener","position","rotation","name","isActive","type"]);return{...rest,...object3dConfigToParams({scale:scale,layers:layers}),lookAt:lookAt?new Vector3(lookAt.x,lookAt.y,lookAt.z):void 0,up:up?new Vector3(up.x,up.y,up.z):void 0}}function configToParamsAudioListener(config,audioService){let audioListener;return isDefined(config.audioListener)&&(audioListener=audioService.getListenersRegistry().getByKey(config.audioListener)),{audioListener:audioListener}}export{cameraConfigToParams,configToParamsCameraOnly,configToParamsCameraOptionsOnly};
2
2
  //# sourceMappingURL=ConfigToParams.js.map
@@ -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 { configToParamsObject3d } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined, isNotDefined, omitInObjectWithoutMutation } from '@Anarchy/Shared/Utils';\nimport type { AudioListener } from 'three';\nimport { Vector3 } from 'three';\n\nexport function configToParams(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 ...configToParamsObject3d({ 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 ...configToParamsObject3d({ 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":["configToParams","config","audioService","listener","isDefined","audioListener","getListenersRegistry","findByKey","isNotDefined","Error","configToParamsCameraOnly","configToParamsAudioListener","position","rotation","scale","layers","name","isActive","type","omitInObjectWithoutMutation","configToParamsCameraOptionsOnly","configToParamsObject3d","lookAt","up","rest","Vector3","x","y","z","getByKey"],"mappings":"+RAQO,SAASA,eAAeC,QAA6BC,aAAEA,eAC5D,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 '@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"}
@@ -2,7 +2,7 @@ import { TAnyCameraConfig, TAnyCameraWrapper, TCameraWrapperDependencies, TCommo
2
2
  import { TOrthographicCameraOnlyConfig } from '../Models/TOrthographicCameraConfig';
3
3
  import { TShadowCameraParams } from '../../Light';
4
4
  import { OrthographicCameraJSONObject, PerspectiveCameraJSONObject } from 'three';
5
- export declare function cameraToConfig(entity: TAnyCameraWrapper, { audioService }: Pick<TCameraWrapperDependencies, 'audioService'>): TAnyCameraConfig;
5
+ export declare function cameraEntityToConfig(entity: TAnyCameraWrapper, { audioService }: Pick<TCameraWrapperDependencies, 'audioService'>): TAnyCameraConfig;
6
6
  export declare function getCameraOnlyConfig(entity: TAnyCameraWrapper): Omit<TCommonCameraConfig, 'position' | 'rotation' | 'audioListener'> & (TPerspectiveCameraOnlyConfig | TOrthographicCameraOnlyConfig);
7
7
  export declare function getCommonCameraConfig(json: PerspectiveCameraJSONObject | OrthographicCameraJSONObject | TCommonCameraParams | TShadowCameraParams): Omit<TCommonCameraConfig, 'position' | 'rotation' | 'audioListener' | 'name' | 'type' | 'isActive'>;
8
8
  export declare function getPerspectiveCameraOnlyConfig({ fov, filmGauge, filmOffset, focus }: PerspectiveCameraJSONObject | TPerspectiveCameraParams): TPerspectiveCameraOnlyConfig;
@@ -1,2 +1,2 @@
1
- import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{isPerspectiveCameraWrapper,isOrthographicCameraWrapper}from"../Utils/CameraUtils.js";import{isVector3Like}from"../../Utils/CheckUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function cameraToConfig(entity,{audioService:audioService}){const{drive:drive}=entity,json=entity.entity.toJSON().object;return filterOutEmptyFields({audioListener:getAudioListenerName(json,audioService),...getCameraOnlyConfig(entity),...extractSerializableRegistrableFields(entity),...drive.serialize()})}function getCameraOnlyConfig(entity){const json=entity.entity.toJSON().object;let additionalConfig={};return isPerspectiveCameraWrapper(entity)&&(additionalConfig=getPerspectiveCameraOnlyConfig(json)),isOrthographicCameraWrapper(entity)&&(additionalConfig=getOrthographicCameraOnlyConfig(json)),filterOutEmptyFields({name:entity.name,type:entity.getType(),isActive:entity.isActive(),...getCommonCameraConfig(json),...additionalConfig})}function getCommonCameraConfig(json){let up;if(isDefined(json.up))if(Array.isArray(json.up))up={x:json.up[0],y:json.up[1],z:json.up[2]};else{if(!isVector3Like(json.up))throw new Error(`[Camera]: Cannot serialize: Invalid up vector provided in camera JSON: ${json.up}. Expected Vector3Like or array of numbers.`);up={x:json.up.x,y:json.up.y,z:json.up.z}}return{near:json.near,far:json.far,up:up,layers:json.layers,zoom:json.zoom}}function getPerspectiveCameraOnlyConfig({fov:fov,filmGauge:filmGauge,filmOffset:filmOffset,focus:focus}){return{fov:fov,filmGauge:filmGauge,filmOffset:filmOffset,focus:focus}}function getOrthographicCameraOnlyConfig({left:left,right:right,top:top,bottom:bottom}){return{left:left,right:right,top:top,bottom:bottom}}function getAudioListenerName(json,audioService){let result;const listener=json.children?.find(child=>"AudioListener"===child.type);if(isDefined(listener)){result={};const{uuid:uuid}=listener;result=audioService.getListenersRegistry().findKey(l=>l.uuid===uuid)}return result}export{cameraToConfig,getCameraOnlyConfig,getCommonCameraConfig,getOrthographicCameraOnlyConfig,getPerspectiveCameraOnlyConfig};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{isPerspectiveCameraWrapper,isOrthographicCameraWrapper}from"../Utils/CameraUtils.js";import{isVector3Like}from"../../Utils/CheckUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function cameraEntityToConfig(entity,{audioService:audioService}){const{drive:drive}=entity,json=entity.entity.toJSON().object;return filterOutEmptyFields({audioListener:getAudioListenerName(json,audioService),...getCameraOnlyConfig(entity),...extractSerializableRegistrableFields(entity),...drive.serialize()})}function getCameraOnlyConfig(entity){const json=entity.entity.toJSON().object;let additionalConfig={};return isPerspectiveCameraWrapper(entity)&&(additionalConfig=getPerspectiveCameraOnlyConfig(json)),isOrthographicCameraWrapper(entity)&&(additionalConfig=getOrthographicCameraOnlyConfig(json)),filterOutEmptyFields({name:entity.name,type:entity.getType(),isActive:entity.isActive(),...getCommonCameraConfig(json),...additionalConfig})}function getCommonCameraConfig(json){let up;if(isDefined(json.up))if(Array.isArray(json.up))up={x:json.up[0],y:json.up[1],z:json.up[2]};else{if(!isVector3Like(json.up))throw new Error(`[Camera]: Cannot serialize: Invalid up vector provided in camera JSON: ${json.up}. Expected Vector3Like or array of numbers.`);up={x:json.up.x,y:json.up.y,z:json.up.z}}return{near:json.near,far:json.far,up:up,layers:json.layers,zoom:json.zoom}}function getPerspectiveCameraOnlyConfig({fov:fov,filmGauge:filmGauge,filmOffset:filmOffset,focus:focus}){return{fov:fov,filmGauge:filmGauge,filmOffset:filmOffset,focus:focus}}function getOrthographicCameraOnlyConfig({left:left,right:right,top:top,bottom:bottom}){return{left:left,right:right,top:top,bottom:bottom}}function getAudioListenerName(json,audioService){let result;const listener=json.children?.find(child=>"AudioListener"===child.type);if(isDefined(listener)){result={};const{uuid:uuid}=listener;result=audioService.getListenersRegistry().findKey(l=>l.uuid===uuid)}return result}export{cameraEntityToConfig,getCameraOnlyConfig,getCommonCameraConfig,getOrthographicCameraOnlyConfig,getPerspectiveCameraOnlyConfig};
2
2
  //# sourceMappingURL=EntityToConfig.js.map
@@ -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 cameraToConfig(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":["cameraToConfig","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,eAAeC,QAA2BC,aAAEA,eAC1D,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 '@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,2 +1,2 @@
1
- export { configToParams as configToParamsCamera, configToParamsCameraOnly } from './ConfigToParams';
1
+ export { cameraConfigToParams as configToParamsCamera, configToParamsCameraOnly } from './ConfigToParams';
2
2
  export * from './EntityToConfig';
@@ -1,2 +1,2 @@
1
- import{configToParams}from"../Adapters/ConfigToParams.js";import{isPerspectiveCameraParams,isOrthographicCameraParams}from"../Utils/CameraUtils.js";import{PerspectiveCameraWrapper}from"../Wrappers/PerspectiveCameraWrapper.js";import{OrthographicCameraWrapper}from"../Wrappers/OrthographicCameraWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function create(params,deps){if(isPerspectiveCameraParams(params))return PerspectiveCameraWrapper(params,deps);if(isOrthographicCameraParams(params))return OrthographicCameraWrapper(params,deps);throw new Error(`[CameraFactory]: Cannot create camera from params: unknown camera type "${params.type}"`)}function CameraFactory(){const factory=ReactiveFactory(FactoryType.Camera,create);return Object.assign(factory,{configToParams:configToParams})}export{CameraFactory};
1
+ import{cameraConfigToParams}from"../Adapters/ConfigToParams.js";import{isPerspectiveCameraParams,isOrthographicCameraParams}from"../Utils/CameraUtils.js";import{PerspectiveCameraWrapper}from"../Wrappers/PerspectiveCameraWrapper.js";import{OrthographicCameraWrapper}from"../Wrappers/OrthographicCameraWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function create(params,deps){if(isPerspectiveCameraParams(params))return PerspectiveCameraWrapper(params,deps);if(isOrthographicCameraParams(params))return OrthographicCameraWrapper(params,deps);throw new Error(`[CameraFactory]: Cannot create camera from params: unknown camera type "${params.type}"`)}function CameraFactory(){const factory=ReactiveFactory(FactoryType.Camera,create);return Object.assign(factory,{configToParams:cameraConfigToParams})}export{CameraFactory};
2
2
  //# sourceMappingURL=CameraFactory.js.map
@@ -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":"4bAOA,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,gBAClD"}
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,2 +1,2 @@
1
- import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{OrthographicCamera,Vector3}from"three";import{getCommonCameraAccessors,getOrthographicCameraAccessors}from"./Accessors.js";import{CameraTransformDrive}from"../TransformDrive/CameraTransformDrive.js";import{withActiveMixin}from"../../Mixins/Generics/WithActiveMixin.js";import{applyOrthographicCameraParams}from"../Utils/CameraUtils.js";import{cameraToConfig}from"../Adapters/EntityToConfig.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{DriveToTargetConnector}from"../../TransformDrive/Entities/Connectors/DriveToTargetConnector.js";import{mergeAll}from"../../Utils/ObjectUtils.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";import{applyObject3dParams}from"../../Utils/WrapperHelpers.js";function OrthographicCameraWrapper(params,{container:container,transformDriveService:transformDriveService,audioService:audioService}){const{left:left,right:right,top:top,bottom:bottom,near:near,far:far=1e4,lookAt:lookAt,audioListener:audioListener}=params,{width:width,height:height}=container.viewportRect$.value??{width:0,height:0},entity=new OrthographicCamera(left,right,top,bottom,near,far),accessors=Object.assign(getCommonCameraAccessors(entity),getOrthographicCameraAccessors(entity));accessors.setAspect(width,height);const wrapper=AbstractWrapper(entity,WrapperType.Camera,params),drive=CameraTransformDrive(params,{transformDriveService:transformDriveService},wrapper.id),driveToTargetConnector=DriveToTargetConnector(drive,entity),result=mergeAll(wrapper,accessors,{drive:drive,driveToTargetConnector:driveToTargetConnector,entity:entity,getType:()=>entity.type,...withObject3d(entity),...withActiveMixin(),serialize:()=>cameraToConfig(result,{audioService:audioService})});applyObject3dParams(result,params),result._setActive(params.isActive,!0);const destroySub$=result.destroy$.subscribe(()=>{isDefined(audioListener)&&result.entity.remove(audioListener),destroySub$.unsubscribe()});return isDefined(lookAt)&&accessors.lookAt(new Vector3(lookAt.x,lookAt.y,lookAt.z)),isDefined(params.up)&&entity.up.set(params.up.x,params.up.y,params.up.z),isDefined(audioListener)&&accessors.addListener(audioListener),isDefined(params.zoom)&&(entity.zoom=params.zoom),isDefined(params.near)&&(entity.near=params.near),applyOrthographicCameraParams(entity,params),result}export{OrthographicCameraWrapper};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{OrthographicCamera,Vector3}from"three";import{getCommonCameraAccessors,getOrthographicCameraAccessors}from"./Accessors.js";import{CameraTransformDrive}from"../TransformDrive/CameraTransformDrive.js";import{withActiveMixin}from"../../Mixins/Generics/WithActiveMixin.js";import{applyOrthographicCameraParams}from"../Utils/CameraUtils.js";import{cameraEntityToConfig}from"../Adapters/EntityToConfig.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{DriveToTargetConnector}from"../../TransformDrive/Entities/Connectors/DriveToTargetConnector.js";import{mergeAll}from"../../Utils/ObjectUtils.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";import{applyObject3dParams}from"../../Utils/WrapperHelpers.js";function OrthographicCameraWrapper(params,{container:container,transformDriveService:transformDriveService,audioService:audioService}){const{left:left,right:right,top:top,bottom:bottom,near:near,far:far=1e4,lookAt:lookAt,audioListener:audioListener}=params,{width:width,height:height}=container.viewportRect$.value??{width:0,height:0},entity=new OrthographicCamera(left,right,top,bottom,near,far),accessors=Object.assign(getCommonCameraAccessors(entity),getOrthographicCameraAccessors(entity));accessors.setAspect(width,height);const wrapper=AbstractWrapper(entity,WrapperType.Camera,params),drive=CameraTransformDrive(params,{transformDriveService:transformDriveService},wrapper.id),driveToTargetConnector=DriveToTargetConnector(drive,entity),result=mergeAll(wrapper,accessors,{drive:drive,driveToTargetConnector:driveToTargetConnector,entity:entity,getType:()=>entity.type,...withObject3d(entity),...withActiveMixin(),serialize:()=>cameraEntityToConfig(result,{audioService:audioService})});applyObject3dParams(result,params),result._setActive(params.isActive,!0);const destroySub$=result.destroy$.subscribe(()=>{isDefined(audioListener)&&result.entity.remove(audioListener),destroySub$.unsubscribe()});return isDefined(lookAt)&&accessors.lookAt(new Vector3(lookAt.x,lookAt.y,lookAt.z)),isDefined(params.up)&&entity.up.set(params.up.x,params.up.y,params.up.z),isDefined(audioListener)&&accessors.addListener(audioListener),isDefined(params.zoom)&&(entity.zoom=params.zoom),isDefined(params.near)&&(entity.near=params.near),applyOrthographicCameraParams(entity,params),result}export{OrthographicCameraWrapper};
2
2
  //# sourceMappingURL=OrthographicCameraWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OrthographicCameraWrapper.js","sources":["../../../src/Camera/Wrappers/OrthographicCameraWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport { cameraToConfig } from '@Anarchy/Engine/Camera/Adapters';\nimport type { CameraType } from '@Anarchy/Engine/Camera/Constants';\nimport type {\n TAnyCamera,\n TCameraTransformDrive,\n TCameraWrapperDependencies,\n TCommonCameraAccessors,\n TOrthographicCamera,\n TOrthographicCameraAccessors,\n TOrthographicCameraParams,\n TOrthographicCameraWrapper\n} from '@Anarchy/Engine/Camera/Models';\nimport type { TOrthographicCameraConfig } from '@Anarchy/Engine/Camera/Models/TOrthographicCameraConfig';\nimport { CameraTransformDrive } from '@Anarchy/Engine/Camera/TransformDrive';\nimport { applyOrthographicCameraParams } from '@Anarchy/Engine/Camera/Utils';\nimport { withActiveMixin, withObject3d } from '@Anarchy/Engine/Mixins';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { applyObject3dParams, mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TOptional, TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { OrthographicCamera, Vector3 } from 'three';\n\nimport { getCommonCameraAccessors, getOrthographicCameraAccessors } from './Accessors';\n\nexport function OrthographicCameraWrapper(params: TOrthographicCameraParams, { container, transformDriveService, audioService }: TCameraWrapperDependencies): TOrthographicCameraWrapper {\n const { left, right, top, bottom, near, far = 10000, lookAt, audioListener }: TOrthographicCameraParams = params;\n const { width, height }: TOptional<DOMRect> = container.viewportRect$.value ?? { width: 0, height: 0 };\n\n const entity: TWriteable<TOrthographicCamera> = new OrthographicCamera(left, right, top, bottom, near, far);\n\n const accessors: TCommonCameraAccessors & TOrthographicCameraAccessors = Object.assign(getCommonCameraAccessors(entity), getOrthographicCameraAccessors(entity));\n accessors.setAspect(width, height);\n\n const wrapper: TAbstractWrapper<TAnyCamera> = AbstractWrapper(entity, WrapperType.Camera, params);\n const drive: TCameraTransformDrive = CameraTransformDrive(params, { transformDriveService }, wrapper.id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, entity);\n\n const result = mergeAll(wrapper, accessors, {\n drive,\n driveToTargetConnector,\n entity,\n getType: (): CameraType => entity.type as CameraType,\n ...withObject3d(entity),\n ...withActiveMixin(),\n serialize: (): TOrthographicCameraConfig => cameraToConfig(result, { audioService })\n });\n\n applyObject3dParams(result, params);\n result._setActive(params.isActive, true);\n\n const destroySub$: Subscription = result.destroy$.subscribe((): void => {\n if (isDefined(audioListener)) result.entity.remove(audioListener);\n destroySub$.unsubscribe();\n });\n\n if (isDefined(lookAt)) accessors.lookAt(new Vector3(lookAt.x, lookAt.y, lookAt.z));\n if (isDefined(params.up)) entity.up.set(params.up.x, params.up.y, params.up.z);\n if (isDefined(audioListener)) accessors.addListener(audioListener);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.zoom)) entity.zoom = params.zoom;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.near)) entity.near = params.near;\n\n applyOrthographicCameraParams(entity, params);\n return result;\n}\n"],"names":["OrthographicCameraWrapper","params","container","transformDriveService","audioService","left","right","top","bottom","near","far","lookAt","audioListener","width","height","viewportRect$","value","entity","OrthographicCamera","accessors","Object","assign","getCommonCameraAccessors","getOrthographicCameraAccessors","setAspect","wrapper","AbstractWrapper","WrapperType","Camera","drive","CameraTransformDrive","id","driveToTargetConnector","DriveToTargetConnector","result","mergeAll","getType","type","withObject3d","withActiveMixin","serialize","cameraToConfig","applyObject3dParams","_setActive","isActive","destroySub$","destroy$","subscribe","isDefined","remove","unsubscribe","Vector3","x","y","z","up","set","addListener","zoom","applyOrthographicCameraParams"],"mappings":"w4BA4BO,SAASA,0BAA0BC,QAAmCC,UAAEA,UAAAC,sBAAWA,sBAAAC,aAAuBA,eAC/G,MAAMC,KAAEA,KAAAC,MAAMA,MAAAC,IAAOA,IAAAC,OAAKA,OAAAC,KAAQA,SAAMC,IAAM,IAAAC,OAAOA,OAAAC,cAAQA,eAA6CX,QACpGY,MAAEA,MAAAC,OAAOA,QAA+BZ,UAAUa,cAAcC,OAAS,CAAEH,MAAO,EAAGC,OAAQ,GAE7FG,OAA0C,IAAIC,mBAAmBb,KAAMC,MAAOC,IAAKC,OAAQC,KAAMC,KAEjGS,UAAmEC,OAAOC,OAAOC,yBAAyBL,QAASM,+BAA+BN,SACxJE,UAAUK,UAAUX,MAAOC,QAE3B,MAAMW,QAAwCC,gBAAgBT,OAAQU,YAAYC,OAAQ3B,QACpF4B,MAA+BC,qBAAqB7B,OAAQ,CAAEE,6CAAyBsB,QAAQM,IAC/FC,uBAAkDC,uBAAuBJ,MAAOZ,QAEhFiB,OAASC,SAASV,QAASN,UAAW,CAC1CU,YACAG,8CACAf,cACAmB,QAAS,IAAkBnB,OAAOoB,QAC/BC,aAAarB,WACbsB,kBACHC,UAAW,IAAiCC,eAAeP,OAAQ,CAAE9B,8BAGvEsC,oBAAoBR,OAAQjC,QAC5BiC,OAAOS,WAAW1C,OAAO2C,UAAU,GAEnC,MAAMC,YAA4BX,OAAOY,SAASC,UAAU,KACtDC,UAAUpC,gBAAgBsB,OAAOjB,OAAOgC,OAAOrC,eACnDiC,YAAYK,gBAYd,OATIF,UAAUrC,SAASQ,UAAUR,OAAO,IAAIwC,QAAQxC,OAAOyC,EAAGzC,OAAO0C,EAAG1C,OAAO2C,IAC3EN,UAAU/C,OAAOsD,YAAYA,GAAGC,IAAIvD,OAAOsD,GAAGH,EAAGnD,OAAOsD,GAAGF,EAAGpD,OAAOsD,GAAGD,GACxEN,UAAUpC,gBAAgBO,UAAUsC,YAAY7C,eAEhDoC,UAAU/C,OAAOyD,QAAOzC,OAAOyC,KAAOzD,OAAOyD,MAE7CV,UAAU/C,OAAOQ,QAAOQ,OAAOR,KAAOR,OAAOQ,MAEjDkD,8BAA8B1C,OAAQhB,QAC/BiC,MACT"}
1
+ {"version":3,"file":"OrthographicCameraWrapper.js","sources":["../../../src/Camera/Wrappers/OrthographicCameraWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport { cameraEntityToConfig } from '@Anarchy/Engine/Camera/Adapters';\nimport type { CameraType } from '@Anarchy/Engine/Camera/Constants';\nimport type {\n TAnyCamera,\n TCameraTransformDrive,\n TCameraWrapperDependencies,\n TCommonCameraAccessors,\n TOrthographicCamera,\n TOrthographicCameraAccessors,\n TOrthographicCameraParams,\n TOrthographicCameraWrapper\n} from '@Anarchy/Engine/Camera/Models';\nimport type { TOrthographicCameraConfig } from '@Anarchy/Engine/Camera/Models/TOrthographicCameraConfig';\nimport { CameraTransformDrive } from '@Anarchy/Engine/Camera/TransformDrive';\nimport { applyOrthographicCameraParams } from '@Anarchy/Engine/Camera/Utils';\nimport { withActiveMixin, withObject3d } from '@Anarchy/Engine/Mixins';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { applyObject3dParams, mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TOptional, TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { OrthographicCamera, Vector3 } from 'three';\n\nimport { getCommonCameraAccessors, getOrthographicCameraAccessors } from './Accessors';\n\nexport function OrthographicCameraWrapper(params: TOrthographicCameraParams, { container, transformDriveService, audioService }: TCameraWrapperDependencies): TOrthographicCameraWrapper {\n const { left, right, top, bottom, near, far = 10000, lookAt, audioListener }: TOrthographicCameraParams = params;\n const { width, height }: TOptional<DOMRect> = container.viewportRect$.value ?? { width: 0, height: 0 };\n\n const entity: TWriteable<TOrthographicCamera> = new OrthographicCamera(left, right, top, bottom, near, far);\n\n const accessors: TCommonCameraAccessors & TOrthographicCameraAccessors = Object.assign(getCommonCameraAccessors(entity), getOrthographicCameraAccessors(entity));\n accessors.setAspect(width, height);\n\n const wrapper: TAbstractWrapper<TAnyCamera> = AbstractWrapper(entity, WrapperType.Camera, params);\n const drive: TCameraTransformDrive = CameraTransformDrive(params, { transformDriveService }, wrapper.id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, entity);\n\n const result = mergeAll(wrapper, accessors, {\n drive,\n driveToTargetConnector,\n entity,\n getType: (): CameraType => entity.type as CameraType,\n ...withObject3d(entity),\n ...withActiveMixin(),\n serialize: (): TOrthographicCameraConfig => cameraEntityToConfig(result, { audioService })\n });\n\n applyObject3dParams(result, params);\n result._setActive(params.isActive, true);\n\n const destroySub$: Subscription = result.destroy$.subscribe((): void => {\n if (isDefined(audioListener)) result.entity.remove(audioListener);\n destroySub$.unsubscribe();\n });\n\n if (isDefined(lookAt)) accessors.lookAt(new Vector3(lookAt.x, lookAt.y, lookAt.z));\n if (isDefined(params.up)) entity.up.set(params.up.x, params.up.y, params.up.z);\n if (isDefined(audioListener)) accessors.addListener(audioListener);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.zoom)) entity.zoom = params.zoom;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.near)) entity.near = params.near;\n\n applyOrthographicCameraParams(entity, params);\n return result;\n}\n"],"names":["OrthographicCameraWrapper","params","container","transformDriveService","audioService","left","right","top","bottom","near","far","lookAt","audioListener","width","height","viewportRect$","value","entity","OrthographicCamera","accessors","Object","assign","getCommonCameraAccessors","getOrthographicCameraAccessors","setAspect","wrapper","AbstractWrapper","WrapperType","Camera","drive","CameraTransformDrive","id","driveToTargetConnector","DriveToTargetConnector","result","mergeAll","getType","type","withObject3d","withActiveMixin","serialize","cameraEntityToConfig","applyObject3dParams","_setActive","isActive","destroySub$","destroy$","subscribe","isDefined","remove","unsubscribe","Vector3","x","y","z","up","set","addListener","zoom","applyOrthographicCameraParams"],"mappings":"84BA4BO,SAASA,0BAA0BC,QAAmCC,UAAEA,UAAAC,sBAAWA,sBAAAC,aAAuBA,eAC/G,MAAMC,KAAEA,KAAAC,MAAMA,MAAAC,IAAOA,IAAAC,OAAKA,OAAAC,KAAQA,SAAMC,IAAM,IAAAC,OAAOA,OAAAC,cAAQA,eAA6CX,QACpGY,MAAEA,MAAAC,OAAOA,QAA+BZ,UAAUa,cAAcC,OAAS,CAAEH,MAAO,EAAGC,OAAQ,GAE7FG,OAA0C,IAAIC,mBAAmBb,KAAMC,MAAOC,IAAKC,OAAQC,KAAMC,KAEjGS,UAAmEC,OAAOC,OAAOC,yBAAyBL,QAASM,+BAA+BN,SACxJE,UAAUK,UAAUX,MAAOC,QAE3B,MAAMW,QAAwCC,gBAAgBT,OAAQU,YAAYC,OAAQ3B,QACpF4B,MAA+BC,qBAAqB7B,OAAQ,CAAEE,6CAAyBsB,QAAQM,IAC/FC,uBAAkDC,uBAAuBJ,MAAOZ,QAEhFiB,OAASC,SAASV,QAASN,UAAW,CAC1CU,YACAG,8CACAf,cACAmB,QAAS,IAAkBnB,OAAOoB,QAC/BC,aAAarB,WACbsB,kBACHC,UAAW,IAAiCC,qBAAqBP,OAAQ,CAAE9B,8BAG7EsC,oBAAoBR,OAAQjC,QAC5BiC,OAAOS,WAAW1C,OAAO2C,UAAU,GAEnC,MAAMC,YAA4BX,OAAOY,SAASC,UAAU,KACtDC,UAAUpC,gBAAgBsB,OAAOjB,OAAOgC,OAAOrC,eACnDiC,YAAYK,gBAYd,OATIF,UAAUrC,SAASQ,UAAUR,OAAO,IAAIwC,QAAQxC,OAAOyC,EAAGzC,OAAO0C,EAAG1C,OAAO2C,IAC3EN,UAAU/C,OAAOsD,YAAYA,GAAGC,IAAIvD,OAAOsD,GAAGH,EAAGnD,OAAOsD,GAAGF,EAAGpD,OAAOsD,GAAGD,GACxEN,UAAUpC,gBAAgBO,UAAUsC,YAAY7C,eAEhDoC,UAAU/C,OAAOyD,QAAOzC,OAAOyC,KAAOzD,OAAOyD,MAE7CV,UAAU/C,OAAOQ,QAAOQ,OAAOR,KAAOR,OAAOQ,MAEjDkD,8BAA8B1C,OAAQhB,QAC/BiC,MACT"}
@@ -1,2 +1,2 @@
1
- import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{PerspectiveCamera,Vector3}from"three";import{getCommonCameraAccessors,getPerspectiveCameraAccessors}from"./Accessors.js";import{takeUntil}from"../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js";import{applyPerspectiveCameraParams}from"../Utils/CameraUtils.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{CameraTransformDrive}from"../TransformDrive/CameraTransformDrive.js";import{DriveToTargetConnector}from"../../TransformDrive/Entities/Connectors/DriveToTargetConnector.js";import{mergeAll}from"../../Utils/ObjectUtils.js";import{withActiveMixin}from"../../Mixins/Generics/WithActiveMixin.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";import{applyObject3dParams}from"../../Utils/WrapperHelpers.js";import{cameraToConfig}from"../Adapters/EntityToConfig.js";function PerspectiveCameraWrapper(params,{container:container,transformDriveService:transformDriveService,audioService:audioService}){const{fov:fov=45,near:near=1,far:far=1e4,lookAt:lookAt,audioListener:audioListener}=params,{width:width,height:height}=container.viewportRect$.value??{width:0,height:0},entity=new PerspectiveCamera(fov,container.getRatio(),near,far),accessors=Object.assign(getCommonCameraAccessors(entity),getPerspectiveCameraAccessors(entity));accessors.setAspect(width/height);const wrapper=AbstractWrapper(entity,WrapperType.Camera,params),drive=CameraTransformDrive(params,{transformDriveService:transformDriveService},wrapper.id),driveToTargetConnector=DriveToTargetConnector(drive,entity);container.resize$.pipe(takeUntil(wrapper.destroy$)).subscribe(({width:width2,height:height2})=>{accessors.setAspect(width2/height2)});const result=mergeAll(wrapper,accessors,{drive:drive,driveToTargetConnector:driveToTargetConnector,entity:entity,getType:()=>entity.type,...withObject3d(entity),...withActiveMixin(),serialize:()=>cameraToConfig(result,{audioService:audioService})});applyObject3dParams(result,params),result._setActive(params.isActive,!0);const destroySub$=result.destroy$.subscribe(()=>{isDefined(audioListener)&&result.entity.remove(audioListener),destroySub$.unsubscribe()});return isDefined(lookAt)&&accessors.lookAt(new Vector3(lookAt.x,lookAt.y,lookAt.z)),isDefined(params.up)&&entity.up.set(params.up.x,params.up.y,params.up.z),isDefined(audioListener)&&accessors.addListener(audioListener),isDefined(params.zoom)&&(entity.zoom=params.zoom),isDefined(params.near)&&(entity.near=params.near),applyPerspectiveCameraParams(entity,params),result}export{PerspectiveCameraWrapper};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{PerspectiveCamera,Vector3}from"three";import{getCommonCameraAccessors,getPerspectiveCameraAccessors}from"./Accessors.js";import{takeUntil}from"../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js";import{applyPerspectiveCameraParams}from"../Utils/CameraUtils.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{CameraTransformDrive}from"../TransformDrive/CameraTransformDrive.js";import{DriveToTargetConnector}from"../../TransformDrive/Entities/Connectors/DriveToTargetConnector.js";import{mergeAll}from"../../Utils/ObjectUtils.js";import{withActiveMixin}from"../../Mixins/Generics/WithActiveMixin.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";import{applyObject3dParams}from"../../Utils/WrapperHelpers.js";import{cameraEntityToConfig}from"../Adapters/EntityToConfig.js";function PerspectiveCameraWrapper(params,{container:container,transformDriveService:transformDriveService,audioService:audioService}){const{fov:fov=45,near:near=1,far:far=1e4,lookAt:lookAt,audioListener:audioListener}=params,{width:width,height:height}=container.viewportRect$.value??{width:0,height:0},entity=new PerspectiveCamera(fov,container.getRatio(),near,far),accessors=Object.assign(getCommonCameraAccessors(entity),getPerspectiveCameraAccessors(entity));accessors.setAspect(width/height);const wrapper=AbstractWrapper(entity,WrapperType.Camera,params),drive=CameraTransformDrive(params,{transformDriveService:transformDriveService},wrapper.id),driveToTargetConnector=DriveToTargetConnector(drive,entity);container.resize$.pipe(takeUntil(wrapper.destroy$)).subscribe(({width:width2,height:height2})=>{accessors.setAspect(width2/height2)});const result=mergeAll(wrapper,accessors,{drive:drive,driveToTargetConnector:driveToTargetConnector,entity:entity,getType:()=>entity.type,...withObject3d(entity),...withActiveMixin(),serialize:()=>cameraEntityToConfig(result,{audioService:audioService})});applyObject3dParams(result,params),result._setActive(params.isActive,!0);const destroySub$=result.destroy$.subscribe(()=>{isDefined(audioListener)&&result.entity.remove(audioListener),destroySub$.unsubscribe()});return isDefined(lookAt)&&accessors.lookAt(new Vector3(lookAt.x,lookAt.y,lookAt.z)),isDefined(params.up)&&entity.up.set(params.up.x,params.up.y,params.up.z),isDefined(audioListener)&&accessors.addListener(audioListener),isDefined(params.zoom)&&(entity.zoom=params.zoom),isDefined(params.near)&&(entity.near=params.near),applyPerspectiveCameraParams(entity,params),result}export{PerspectiveCameraWrapper};
2
2
  //# sourceMappingURL=PerspectiveCameraWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PerspectiveCameraWrapper.js","sources":["../../../src/Camera/Wrappers/PerspectiveCameraWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport { cameraToConfig } from '@Anarchy/Engine/Camera/Adapters';\nimport type { CameraType } from '@Anarchy/Engine/Camera/Constants';\nimport type {\n TAnyCamera,\n TCameraTransformDrive,\n TCameraWrapperDependencies,\n TCommonCameraAccessors,\n TPerspectiveCamera,\n TPerspectiveCameraAccessors,\n TPerspectiveCameraConfig,\n TPerspectiveCameraParams,\n TPerspectiveCameraWrapper\n} from '@Anarchy/Engine/Camera/Models';\nimport { CameraTransformDrive } from '@Anarchy/Engine/Camera/TransformDrive';\nimport { applyPerspectiveCameraParams } from '@Anarchy/Engine/Camera/Utils';\nimport { withActiveMixin, withObject3d } from '@Anarchy/Engine/Mixins';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { applyObject3dParams, mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TOptional, TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs';\nimport { PerspectiveCamera, Vector3 } from 'three';\n\nimport { getCommonCameraAccessors, getPerspectiveCameraAccessors } from './Accessors';\n\nexport function PerspectiveCameraWrapper(params: TPerspectiveCameraParams, { container, transformDriveService, audioService }: TCameraWrapperDependencies): TPerspectiveCameraWrapper {\n const { fov = 45, near = 1, far = 10000, lookAt, audioListener }: TPerspectiveCameraParams = params;\n const { width, height }: TOptional<DOMRect> = container.viewportRect$.value ?? { width: 0, height: 0 };\n\n const entity: TWriteable<TPerspectiveCamera> = new PerspectiveCamera(fov, container.getRatio(), near, far);\n\n const accessors: TCommonCameraAccessors & TPerspectiveCameraAccessors = Object.assign(getCommonCameraAccessors(entity), getPerspectiveCameraAccessors(entity));\n accessors.setAspect(width / height);\n\n const wrapper: TAbstractWrapper<TAnyCamera> = AbstractWrapper(entity, WrapperType.Camera, params);\n const drive: TCameraTransformDrive = CameraTransformDrive(params, { transformDriveService }, wrapper.id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, entity);\n\n container.resize$.pipe(takeUntil(wrapper.destroy$)).subscribe(({ width, height }: DOMRect): void => {\n (accessors as unknown as TPerspectiveCameraAccessors).setAspect(width / height);\n });\n\n const result = mergeAll(wrapper, accessors, {\n drive,\n driveToTargetConnector,\n entity,\n getType: (): CameraType => entity.type as CameraType,\n ...withObject3d(entity),\n ...withActiveMixin(),\n serialize: (): TPerspectiveCameraConfig => cameraToConfig(result, { audioService })\n });\n\n applyObject3dParams(result, params);\n result._setActive(params.isActive, true);\n\n const destroySub$: Subscription = result.destroy$.subscribe((): void => {\n if (isDefined(audioListener)) result.entity.remove(audioListener);\n destroySub$.unsubscribe();\n });\n\n if (isDefined(lookAt)) accessors.lookAt(new Vector3(lookAt.x, lookAt.y, lookAt.z));\n if (isDefined(params.up)) entity.up.set(params.up.x, params.up.y, params.up.z);\n if (isDefined(audioListener)) accessors.addListener(audioListener);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.zoom)) entity.zoom = params.zoom;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.near)) entity.near = params.near;\n\n applyPerspectiveCameraParams(entity, params);\n\n return result;\n}\n"],"names":["PerspectiveCameraWrapper","params","container","transformDriveService","audioService","fov","near","far","lookAt","audioListener","width","height","viewportRect$","value","entity","PerspectiveCamera","getRatio","accessors","Object","assign","getCommonCameraAccessors","getPerspectiveCameraAccessors","setAspect","wrapper","AbstractWrapper","WrapperType","Camera","drive","CameraTransformDrive","id","driveToTargetConnector","DriveToTargetConnector","resize$","pipe","takeUntil","destroy$","subscribe","result","mergeAll","getType","type","withObject3d","withActiveMixin","serialize","cameraToConfig","applyObject3dParams","_setActive","isActive","destroySub$","isDefined","remove","unsubscribe","Vector3","x","y","z","up","set","addListener","zoom","applyPerspectiveCameraParams"],"mappings":"89BA6BO,SAASA,yBAAyBC,QAAkCC,UAAEA,UAAAC,sBAAWA,sBAAAC,aAAuBA,eAC7G,MAAMC,IAAEA,IAAM,GAAAC,KAAIA,KAAO,MAAGC,IAAM,IAAAC,OAAOA,OAAAC,cAAQA,eAA4CR,QACvFS,MAAEA,MAAAC,OAAOA,QAA+BT,UAAUU,cAAcC,OAAS,CAAEH,MAAO,EAAGC,OAAQ,GAE7FG,OAAyC,IAAIC,kBAAkBV,IAAKH,UAAUc,WAAYV,KAAMC,KAEhGU,UAAkEC,OAAOC,OAAOC,yBAAyBN,QAASO,8BAA8BP,SACtJG,UAAUK,UAAUZ,MAAQC,QAE5B,MAAMY,QAAwCC,gBAAgBV,OAAQW,YAAYC,OAAQzB,QACpF0B,MAA+BC,qBAAqB3B,OAAQ,CAAEE,6CAAyBoB,QAAQM,IAC/FC,uBAAkDC,uBAAuBJ,MAAOb,QAEtFZ,UAAU8B,QAAQC,KAAKC,UAAUX,QAAQY,WAAWC,UAAU,EAAG1B,MAAAA,OAAOC,OAAAA,YACrEM,UAAqDK,UAAUZ,OAAQC,WAG1E,MAAM0B,OAASC,SAASf,QAASN,UAAW,CAC1CU,YACAG,8CACAhB,cACAyB,QAAS,IAAkBzB,OAAO0B,QAC/BC,aAAa3B,WACb4B,kBACHC,UAAW,IAAgCC,eAAeP,OAAQ,CAAEjC,8BAGtEyC,oBAAoBR,OAAQpC,QAC5BoC,OAAOS,WAAW7C,OAAO8C,UAAU,GAEnC,MAAMC,YAA4BX,OAAOF,SAASC,UAAU,KACtDa,UAAUxC,gBAAgB4B,OAAOvB,OAAOoC,OAAOzC,eACnDuC,YAAYG,gBAad,OAVIF,UAAUzC,SAASS,UAAUT,OAAO,IAAI4C,QAAQ5C,OAAO6C,EAAG7C,OAAO8C,EAAG9C,OAAO+C,IAC3EN,UAAUhD,OAAOuD,YAAYA,GAAGC,IAAIxD,OAAOuD,GAAGH,EAAGpD,OAAOuD,GAAGF,EAAGrD,OAAOuD,GAAGD,GACxEN,UAAUxC,gBAAgBQ,UAAUyC,YAAYjD,eAEhDwC,UAAUhD,OAAO0D,QAAO7C,OAAO6C,KAAO1D,OAAO0D,MAE7CV,UAAUhD,OAAOK,QAAOQ,OAAOR,KAAOL,OAAOK,MAEjDsD,6BAA6B9C,OAAQb,QAE9BoC,MACT"}
1
+ {"version":3,"file":"PerspectiveCameraWrapper.js","sources":["../../../src/Camera/Wrappers/PerspectiveCameraWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport { cameraEntityToConfig } from '@Anarchy/Engine/Camera/Adapters';\nimport type { CameraType } from '@Anarchy/Engine/Camera/Constants';\nimport type {\n TAnyCamera,\n TCameraTransformDrive,\n TCameraWrapperDependencies,\n TCommonCameraAccessors,\n TPerspectiveCamera,\n TPerspectiveCameraAccessors,\n TPerspectiveCameraConfig,\n TPerspectiveCameraParams,\n TPerspectiveCameraWrapper\n} from '@Anarchy/Engine/Camera/Models';\nimport { CameraTransformDrive } from '@Anarchy/Engine/Camera/TransformDrive';\nimport { applyPerspectiveCameraParams } from '@Anarchy/Engine/Camera/Utils';\nimport { withActiveMixin, withObject3d } from '@Anarchy/Engine/Mixins';\nimport type { TDriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { DriveToTargetConnector } from '@Anarchy/Engine/TransformDrive';\nimport { applyObject3dParams, mergeAll } from '@Anarchy/Engine/Utils';\nimport type { TOptional, TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs';\nimport { PerspectiveCamera, Vector3 } from 'three';\n\nimport { getCommonCameraAccessors, getPerspectiveCameraAccessors } from './Accessors';\n\nexport function PerspectiveCameraWrapper(params: TPerspectiveCameraParams, { container, transformDriveService, audioService }: TCameraWrapperDependencies): TPerspectiveCameraWrapper {\n const { fov = 45, near = 1, far = 10000, lookAt, audioListener }: TPerspectiveCameraParams = params;\n const { width, height }: TOptional<DOMRect> = container.viewportRect$.value ?? { width: 0, height: 0 };\n\n const entity: TWriteable<TPerspectiveCamera> = new PerspectiveCamera(fov, container.getRatio(), near, far);\n\n const accessors: TCommonCameraAccessors & TPerspectiveCameraAccessors = Object.assign(getCommonCameraAccessors(entity), getPerspectiveCameraAccessors(entity));\n accessors.setAspect(width / height);\n\n const wrapper: TAbstractWrapper<TAnyCamera> = AbstractWrapper(entity, WrapperType.Camera, params);\n const drive: TCameraTransformDrive = CameraTransformDrive(params, { transformDriveService }, wrapper.id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, entity);\n\n container.resize$.pipe(takeUntil(wrapper.destroy$)).subscribe(({ width, height }: DOMRect): void => {\n (accessors as unknown as TPerspectiveCameraAccessors).setAspect(width / height);\n });\n\n const result = mergeAll(wrapper, accessors, {\n drive,\n driveToTargetConnector,\n entity,\n getType: (): CameraType => entity.type as CameraType,\n ...withObject3d(entity),\n ...withActiveMixin(),\n serialize: (): TPerspectiveCameraConfig => cameraEntityToConfig(result, { audioService })\n });\n\n applyObject3dParams(result, params);\n result._setActive(params.isActive, true);\n\n const destroySub$: Subscription = result.destroy$.subscribe((): void => {\n if (isDefined(audioListener)) result.entity.remove(audioListener);\n destroySub$.unsubscribe();\n });\n\n if (isDefined(lookAt)) accessors.lookAt(new Vector3(lookAt.x, lookAt.y, lookAt.z));\n if (isDefined(params.up)) entity.up.set(params.up.x, params.up.y, params.up.z);\n if (isDefined(audioListener)) accessors.addListener(audioListener);\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.zoom)) entity.zoom = params.zoom;\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(params.near)) entity.near = params.near;\n\n applyPerspectiveCameraParams(entity, params);\n\n return result;\n}\n"],"names":["PerspectiveCameraWrapper","params","container","transformDriveService","audioService","fov","near","far","lookAt","audioListener","width","height","viewportRect$","value","entity","PerspectiveCamera","getRatio","accessors","Object","assign","getCommonCameraAccessors","getPerspectiveCameraAccessors","setAspect","wrapper","AbstractWrapper","WrapperType","Camera","drive","CameraTransformDrive","id","driveToTargetConnector","DriveToTargetConnector","resize$","pipe","takeUntil","destroy$","subscribe","result","mergeAll","getType","type","withObject3d","withActiveMixin","serialize","cameraEntityToConfig","applyObject3dParams","_setActive","isActive","destroySub$","isDefined","remove","unsubscribe","Vector3","x","y","z","up","set","addListener","zoom","applyPerspectiveCameraParams"],"mappings":"o+BA6BO,SAASA,yBAAyBC,QAAkCC,UAAEA,UAAAC,sBAAWA,sBAAAC,aAAuBA,eAC7G,MAAMC,IAAEA,IAAM,GAAAC,KAAIA,KAAO,MAAGC,IAAM,IAAAC,OAAOA,OAAAC,cAAQA,eAA4CR,QACvFS,MAAEA,MAAAC,OAAOA,QAA+BT,UAAUU,cAAcC,OAAS,CAAEH,MAAO,EAAGC,OAAQ,GAE7FG,OAAyC,IAAIC,kBAAkBV,IAAKH,UAAUc,WAAYV,KAAMC,KAEhGU,UAAkEC,OAAOC,OAAOC,yBAAyBN,QAASO,8BAA8BP,SACtJG,UAAUK,UAAUZ,MAAQC,QAE5B,MAAMY,QAAwCC,gBAAgBV,OAAQW,YAAYC,OAAQzB,QACpF0B,MAA+BC,qBAAqB3B,OAAQ,CAAEE,6CAAyBoB,QAAQM,IAC/FC,uBAAkDC,uBAAuBJ,MAAOb,QAEtFZ,UAAU8B,QAAQC,KAAKC,UAAUX,QAAQY,WAAWC,UAAU,EAAG1B,MAAAA,OAAOC,OAAAA,YACrEM,UAAqDK,UAAUZ,OAAQC,WAG1E,MAAM0B,OAASC,SAASf,QAASN,UAAW,CAC1CU,YACAG,8CACAhB,cACAyB,QAAS,IAAkBzB,OAAO0B,QAC/BC,aAAa3B,WACb4B,kBACHC,UAAW,IAAgCC,qBAAqBP,OAAQ,CAAEjC,8BAG5EyC,oBAAoBR,OAAQpC,QAC5BoC,OAAOS,WAAW7C,OAAO8C,UAAU,GAEnC,MAAMC,YAA4BX,OAAOF,SAASC,UAAU,KACtDa,UAAUxC,gBAAgB4B,OAAOvB,OAAOoC,OAAOzC,eACnDuC,YAAYG,gBAad,OAVIF,UAAUzC,SAASS,UAAUT,OAAO,IAAI4C,QAAQ5C,OAAO6C,EAAG7C,OAAO8C,EAAG9C,OAAO+C,IAC3EN,UAAUhD,OAAOuD,YAAYA,GAAGC,IAAIxD,OAAOuD,GAAGH,EAAGpD,OAAOuD,GAAGF,EAAGrD,OAAOuD,GAAGD,GACxEN,UAAUxC,gBAAgBQ,UAAUyC,YAAYjD,eAEhDwC,UAAUhD,OAAO0D,QAAO7C,OAAO6C,KAAO1D,OAAO0D,MAE7CV,UAAUhD,OAAOK,QAAOQ,OAAOR,KAAOL,OAAOK,MAEjDsD,6BAA6B9C,OAAQb,QAE9BoC,MACT"}