@hellpig/anarchy-engine 22.0.0 → 22.0.2

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 +2 -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 { TSceneConfig, TSceneParams } from '../Models';
2
- export declare function configToParams(config: TSceneConfig): TSceneParams;
2
+ export declare function sceneConfigToParams(config: TSceneConfig): TSceneParams;
@@ -1,2 +1,2 @@
1
- import{configToParamsObject3d}from"../../ThreeLib/Utils/Object3dUtils.js";function configToParams(config){const{position:position,rotation:rotation,scale:scale,layers:layers,...rest}=config;return{...rest,...configToParamsObject3d({position:position,rotation:rotation,scale:scale,layers:layers})}}export{configToParams};
1
+ import{object3dConfigToParams}from"../../ThreeLib/Utils/Object3dUtils.js";function sceneConfigToParams(config){const{position:position,rotation:rotation,scale:scale,layers:layers,...rest}=config;return{...rest,...object3dConfigToParams({position:position,rotation:rotation,scale:scale,layers:layers})}}export{sceneConfigToParams};
2
2
  //# sourceMappingURL=ConfigToParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Scene/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TSceneConfig, TSceneParams } from '@Anarchy/Engine/Scene/Models';\nimport { configToParamsObject3d } from '@Anarchy/Engine/ThreeLib';\n\nexport function configToParams(config: TSceneConfig): TSceneParams {\n const { position, rotation, scale, layers, ...rest } = config;\n\n return {\n ...rest,\n ...configToParamsObject3d({ position, rotation, scale, layers })\n };\n}\n"],"names":["configToParams","config","position","rotation","scale","layers","rest","configToParamsObject3d"],"mappings":"0EAGO,SAASA,eAAeC,QAC7B,MAAMC,SAAEA,SAAAC,SAAUA,SAAAC,MAAUA,aAAOC,UAAWC,MAASL,OAEvD,MAAO,IACFK,QACAC,uBAAuB,CAAEL,kBAAUC,kBAAUC,YAAOC,gBAE3D"}
1
+ {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Scene/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TSceneConfig, TSceneParams } from '@Anarchy/Engine/Scene/Models';\nimport { object3dConfigToParams } from '@Anarchy/Engine/ThreeLib';\n\nexport function sceneConfigToParams(config: TSceneConfig): TSceneParams {\n const { position, rotation, scale, layers, ...rest } = config;\n\n return {\n ...rest,\n ...object3dConfigToParams({ position, rotation, scale, layers })\n };\n}\n"],"names":["sceneConfigToParams","config","position","rotation","scale","layers","rest","object3dConfigToParams"],"mappings":"0EAGO,SAASA,oBAAoBC,QAClC,MAAMC,SAAEA,SAAAC,SAAUA,SAAAC,MAAUA,aAAOC,UAAWC,MAASL,OAEvD,MAAO,IACFK,QACAC,uBAAuB,CAAEL,kBAAUC,kBAAUC,YAAOC,gBAE3D"}
@@ -1,2 +1,2 @@
1
1
  import { TSceneConfig, TSceneWrapper } from '../Models';
2
- export declare function sceneToConfig(entity: TSceneWrapper): TSceneConfig;
2
+ export declare function sceneEntityToConfig(entity: TSceneWrapper): TSceneConfig;
@@ -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{serializeColor}from"../../Color/Adapters/EntityToConfig.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function sceneToConfig(entity){const background=entity.getBackground(),hexString=isDefined(background)&&background.isColor?serializeColor(background):void 0;return filterOutEmptyFields({background:hexString,isActive:entity.isActive(),...extractSerializableRegistrableFields(entity)})}export{sceneToConfig};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{serializeColor}from"../../Color/Adapters/EntityToConfig.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function sceneEntityToConfig(entity){const background=entity.getBackground(),hexString=isDefined(background)&&background.isColor?serializeColor(background):void 0;return filterOutEmptyFields({background:hexString,isActive:entity.isActive(),...extractSerializableRegistrableFields(entity)})}export{sceneEntityToConfig};
2
2
  //# sourceMappingURL=EntityToConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Scene/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TColor } from '@Anarchy/Engine/Color';\nimport { serializeColor } from '@Anarchy/Engine/Color';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TSceneConfig, TSceneWrapper } from '@Anarchy/Engine/Scene/Models';\nimport { filterOutEmptyFields, isDefined } from '@Anarchy/Shared/Utils';\n\nexport function sceneToConfig(entity: TSceneWrapper): TSceneConfig {\n const background: TColor | undefined = entity.getBackground() as TColor | undefined;\n // TODO we cannot serialize other backgrounds than Color at the moment\n const hexString: string | undefined = isDefined(background) && background.isColor ? serializeColor(background) : undefined;\n\n return filterOutEmptyFields({\n background: hexString,\n isActive: entity.isActive(),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n"],"names":["sceneToConfig","entity","background","getBackground","hexString","isDefined","isColor","serializeColor","filterOutEmptyFields","isActive","extractSerializableRegistrableFields"],"mappings":"yVAMO,SAASA,cAAcC,QAC5B,MAAMC,WAAiCD,OAAOE,gBAExCC,UAAgCC,UAAUH,aAAeA,WAAWI,QAAUC,eAAeL,iBAAc,EAEjH,OAAOM,qBAAqB,CAC1BN,WAAYE,UACZK,SAAUR,OAAOQ,cACdC,qCAAqCT,SAE5C"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Scene/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TColor } from '@Anarchy/Engine/Color';\nimport { serializeColor } from '@Anarchy/Engine/Color';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TSceneConfig, TSceneWrapper } from '@Anarchy/Engine/Scene/Models';\nimport { filterOutEmptyFields, isDefined } from '@Anarchy/Shared/Utils';\n\nexport function sceneEntityToConfig(entity: TSceneWrapper): TSceneConfig {\n const background: TColor | undefined = entity.getBackground() as TColor | undefined;\n // TODO we cannot serialize other backgrounds than Color at the moment\n const hexString: string | undefined = isDefined(background) && background.isColor ? serializeColor(background) : undefined;\n\n return filterOutEmptyFields({\n background: hexString,\n isActive: entity.isActive(),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n"],"names":["sceneEntityToConfig","entity","background","getBackground","hexString","isDefined","isColor","serializeColor","filterOutEmptyFields","isActive","extractSerializableRegistrableFields"],"mappings":"yVAMO,SAASA,oBAAoBC,QAClC,MAAMC,WAAiCD,OAAOE,gBAExCC,UAAgCC,UAAUH,aAAeA,WAAWI,QAAUC,eAAeL,iBAAc,EAEjH,OAAOM,qBAAqB,CAC1BN,WAAYE,UACZK,SAAUR,OAAOQ,cACdC,qCAAqCT,SAE5C"}
@@ -1,2 +1,2 @@
1
- import{configToParams}from"../Adapters/ConfigToParams.js";import{SceneWrapper}from"../Wrappers/SceneWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function SceneFactory(){const factory=ReactiveFactory(FactoryType.Scene,SceneWrapper);return Object.assign(factory,{configToParams:configToParams})}export{SceneFactory};
1
+ import{sceneConfigToParams}from"../Adapters/ConfigToParams.js";import{SceneWrapper}from"../Wrappers/SceneWrapper.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function SceneFactory(){const factory=ReactiveFactory(FactoryType.Scene,SceneWrapper);return Object.assign(factory,{configToParams:sceneConfigToParams})}export{SceneFactory};
2
2
  //# sourceMappingURL=SceneFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneFactory.js","sources":["../../../src/Scene/Factories/SceneFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { configToParams } from '@Anarchy/Engine/Scene/Adapters';\nimport type { TSceneFactory, TSceneParams, TSceneWrapper } from '@Anarchy/Engine/Scene/Models';\nimport { SceneWrapper } from '@Anarchy/Engine/Scene/Wrappers';\n\nexport function SceneFactory(): TSceneFactory {\n const factory: TReactiveFactory<TSceneWrapper, TSceneParams> = ReactiveFactory(FactoryType.Scene, SceneWrapper);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams });\n}\n"],"names":["SceneFactory","factory","ReactiveFactory","FactoryType","Scene","SceneWrapper","Object","assign","configToParams"],"mappings":"0PAMO,SAASA,eACd,MAAMC,QAAyDC,gBAAgBC,YAAYC,MAAOC,cAGlG,OAAOC,OAAOC,OAAON,QAAS,CAAEO,+BAClC"}
1
+ {"version":3,"file":"SceneFactory.js","sources":["../../../src/Scene/Factories/SceneFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { sceneConfigToParams } from '@Anarchy/Engine/Scene/Adapters';\nimport type { TSceneFactory, TSceneParams, TSceneWrapper } from '@Anarchy/Engine/Scene/Models';\nimport { SceneWrapper } from '@Anarchy/Engine/Scene/Wrappers';\n\nexport function SceneFactory(): TSceneFactory {\n const factory: TReactiveFactory<TSceneWrapper, TSceneParams> = ReactiveFactory(FactoryType.Scene, SceneWrapper);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: sceneConfigToParams });\n}\n"],"names":["SceneFactory","factory","ReactiveFactory","FactoryType","Scene","SceneWrapper","Object","assign","configToParams","sceneConfigToParams"],"mappings":"+PAMO,SAASA,eACd,MAAMC,QAAyDC,gBAAgBC,YAAYC,MAAOC,cAGlG,OAAOC,OAAOC,OAAON,QAAS,CAAEO,eAAgBC,qBAClD"}
@@ -1,2 +1,2 @@
1
- import{sceneToConfig}from"../Adapters/EntityToConfig.js";import{isDefined,isString,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Scene}from"three";import{ColorWrapper}from"../../Color/Wrappers/ColorWrapper.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{withActiveMixin}from"../../Mixins/Generics/WithActiveMixin.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";function SceneWrapper(params){const entity=new Scene;isDefined(params.background)&&setBackground(params.background);const wrapper=AbstractWrapper(entity,WrapperType.Scene,params),add=obj=>{entity.add(obj)},addModel3d=model3d=>add(model3d.getRawModel3d());function setBackground(color){let background=null;if(background=isString(color)?ColorWrapper(color).entity:color,isNotDefined(background))throw new Error("Invalid background");entity.background=background}const result=Object.assign(wrapper,{addCamera:camera=>add(camera.entity),addLight:light=>add(light.entity),addModel3d:addModel3d,addActor:actor=>addModel3d(actor.model3d),setFog:fog=>{entity.fog=fog.entity},addText:text=>add(text.entity),addParticles:particles=>add(particles.entity),setBackground:setBackground,getBackground:()=>entity.background,setEnvironmentMap:texture=>{entity.environment=texture},getEnvironmentMap:()=>entity.environment,...withObject3d(entity),...withActiveMixin(),entity:entity,serialize:()=>sceneToConfig(result)}),destroySub$=result.destroy$.subscribe(()=>{entity.traverse(entity2=>entity2.destroy$?.next()),entity.clear(),entity.background?.dispose?.(),destroySub$.unsubscribe()});return result._setActive(params.isActive,!0),result}export{SceneWrapper};
1
+ import{isDefined,isString,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Scene}from"three";import{ColorWrapper}from"../../Color/Wrappers/ColorWrapper.js";import{sceneEntityToConfig}from"../Adapters/EntityToConfig.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";import{withActiveMixin}from"../../Mixins/Generics/WithActiveMixin.js";import{withObject3d}from"../../Mixins/GameObjects/Mixins/WithObject3D.js";function SceneWrapper(params){const entity=new Scene;isDefined(params.background)&&setBackground(params.background);const wrapper=AbstractWrapper(entity,WrapperType.Scene,params),add=obj=>{entity.add(obj)},addModel3d=model3d=>add(model3d.getRawModel3d());function setBackground(color){let background=null;if(background=isString(color)?ColorWrapper(color).entity:color,isNotDefined(background))throw new Error("Invalid background");entity.background=background}const result=Object.assign(wrapper,{addCamera:camera=>add(camera.entity),addLight:light=>add(light.entity),addModel3d:addModel3d,addActor:actor=>addModel3d(actor.model3d),setFog:fog=>{entity.fog=fog.entity},addText:text=>add(text.entity),addParticles:particles=>add(particles.entity),setBackground:setBackground,getBackground:()=>entity.background,setEnvironmentMap:texture=>{entity.environment=texture},getEnvironmentMap:()=>entity.environment,...withObject3d(entity),...withActiveMixin(),entity:entity,serialize:()=>sceneEntityToConfig(result)}),destroySub$=result.destroy$.subscribe(()=>{entity.traverse(entity2=>entity2.destroy$?.next()),entity.clear(),entity.background?.dispose?.(),destroySub$.unsubscribe()});return result._setActive(params.isActive,!0),result}export{SceneWrapper};
2
2
  //# sourceMappingURL=SceneWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SceneWrapper.js","sources":["../../../src/Scene/Wrappers/SceneWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport type { TActor } from '@Anarchy/Engine/Actor';\nimport type { TAnyCameraWrapper } from '@Anarchy/Engine/Camera';\nimport type { TColor } from '@Anarchy/Engine/Color';\nimport { ColorWrapper } from '@Anarchy/Engine/Color';\nimport type { TEnvMapTexture } from '@Anarchy/Engine/EnvMap';\nimport type { TFogWrapper } from '@Anarchy/Engine/Fog';\nimport type { TAbstractLightWrapper, TAnyLight } from '@Anarchy/Engine/Light';\nimport type { TDestroyable } from '@Anarchy/Engine/Mixins';\nimport { withActiveMixin, withObject3d } from '@Anarchy/Engine/Mixins';\nimport type { TModel3d } from '@Anarchy/Engine/Models3d';\nimport type { TParticlesWrapper } from '@Anarchy/Engine/Particles';\nimport { sceneToConfig } from '@Anarchy/Engine/Scene/Adapters';\nimport type { TSceneConfig, TSceneObject, TSceneParams, TSceneWrapper } from '@Anarchy/Engine/Scene/Models';\nimport type { TTextAnyWrapper } from '@Anarchy/Engine/Text';\nimport type { TTexture } from '@Anarchy/Engine/Texture';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined, isNotDefined, isString } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport type { CubeTexture } from 'three';\nimport { Scene } from 'three';\n\nexport function SceneWrapper(params: TSceneParams): TSceneWrapper {\n const entity: TWriteable<Scene> = new Scene();\n\n if (isDefined(params.background)) setBackground(params.background);\n\n const wrapper: TAbstractWrapper<Scene> = AbstractWrapper(entity, WrapperType.Scene, params);\n\n const add = (obj: TSceneObject): void => void entity.add(obj);\n const addCamera = (camera: TAnyCameraWrapper): void => add(camera.entity);\n const addModel3d = (model3d: TModel3d): void => add(model3d.getRawModel3d());\n const addActor = (actor: TActor): void => addModel3d(actor.model3d);\n const addLight = <T extends TAnyLight>(light: Readonly<TAbstractLightWrapper<T>>): void => add(light.entity);\n const addParticles = (particles: Readonly<TParticlesWrapper>): void => add(particles.entity);\n\n const addText = (text: Readonly<TTextAnyWrapper>): void => add(text.entity);\n\n // eslint-disable-next-line functional/immutable-data\n const setFog = (fog: Readonly<TFogWrapper>): void => void (entity.fog = fog.entity);\n\n function setBackground(color: string | TColor | TTexture | CubeTexture | TEnvMapTexture): void {\n let background: string | TColor | TTexture | CubeTexture | null = null;\n if (isString(color)) background = ColorWrapper(color).entity;\n else background = color;\n if (isNotDefined(background)) throw new Error('Invalid background');\n // eslint-disable-next-line functional/immutable-data\n entity.background = background;\n }\n\n const getBackground = (): TColor | TTexture | CubeTexture | null => entity.background;\n\n // eslint-disable-next-line functional/immutable-data\n const setEnvironmentMap = (texture: TEnvMapTexture | TTexture): void => void (entity.environment = texture);\n\n const getEnvironmentMap = (): TTexture | null => entity.environment;\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(wrapper, {\n addCamera,\n addLight,\n addModel3d,\n addActor,\n setFog,\n addText,\n addParticles,\n setBackground,\n getBackground,\n setEnvironmentMap,\n getEnvironmentMap,\n ...withObject3d(entity),\n ...withActiveMixin(),\n entity,\n serialize: (): TSceneConfig => sceneToConfig(result)\n });\n\n const destroySub$: Subscription = result.destroy$.subscribe((): void => {\n entity.traverse((entity: unknown): void => (entity as TDestroyable).destroy$?.next());\n entity.clear();\n (entity.background as CubeTexture)?.dispose?.();\n\n destroySub$.unsubscribe();\n });\n\n result._setActive(params.isActive, true);\n\n return result;\n}\n"],"names":["SceneWrapper","params","entity","Scene","isDefined","background","setBackground","wrapper","AbstractWrapper","WrapperType","add","obj","addModel3d","model3d","getRawModel3d","color","isString","ColorWrapper","isNotDefined","Error","result","Object","assign","addCamera","camera","addLight","light","addActor","actor","setFog","fog","addText","text","addParticles","particles","getBackground","setEnvironmentMap","texture","environment","getEnvironmentMap","withObject3d","withActiveMixin","serialize","sceneToConfig","destroySub$","destroy$","subscribe","traverse","next","clear","dispose","unsubscribe","_setActive","isActive"],"mappings":"6gBAuBO,SAASA,aAAaC,QAC3B,MAAMC,OAA4B,IAAIC,MAElCC,UAAUH,OAAOI,aAAaC,cAAcL,OAAOI,YAEvD,MAAME,QAAmCC,gBAAgBN,OAAQO,YAAYN,MAAOF,QAE9ES,IAAOC,MAAiCT,OAAOQ,IAAIC,MAEnDC,WAAcC,SAA4BH,IAAIG,QAAQC,iBAU5D,SAASR,cAAcS,OACrB,IAAIV,WAA8D,KAGlE,GAFqBA,WAAjBW,SAASD,OAAqBE,aAAaF,OAAOb,OACpCa,MACdG,aAAab,YAAa,MAAM,IAAIc,MAAM,sBAE9CjB,OAAOG,WAAaA,UACtB,CAEA,MAQMe,OAASC,OAAOC,OAAOf,QAAS,CACpCgB,UA7BiBC,QAAoCd,IAAIc,OAAOtB,QA8BhEuB,SA3BqCC,OAAoDhB,IAAIgB,MAAMxB,QA4BnGU,sBACAe,SA9BgBC,OAAwBhB,WAAWgB,MAAMf,SA+BzDgB,OAxBcC,MAA2C5B,OAAO4B,IAAMA,IAAI5B,QAyB1E6B,QA5BeC,MAA0CtB,IAAIsB,KAAK9B,QA6BlE+B,aA/BoBC,WAAiDxB,IAAIwB,UAAUhC,QAgCnFI,4BACA6B,cAjBoB,IAA8CjC,OAAOG,WAkBzE+B,kBAfyBC,UAAmDnC,OAAOoC,YAAcD,SAgBjGE,kBAdwB,IAAuBrC,OAAOoC,eAenDE,aAAatC,WACbuC,kBACHvC,cACAwC,UAAW,IAAoBC,cAAcvB,UAGzCwB,YAA4BxB,OAAOyB,SAASC,UAAU,KAC1D5C,OAAO6C,SAAU7C,SAA2BA,QAAwB2C,UAAUG,QAC9E9C,OAAO+C,QACN/C,OAAOG,YAA4B6C,YAEpCN,YAAYO,gBAKd,OAFA/B,OAAOgC,WAAWnD,OAAOoD,UAAU,GAE5BjC,MACT"}
1
+ {"version":3,"file":"SceneWrapper.js","sources":["../../../src/Scene/Wrappers/SceneWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport type { TActor } from '@Anarchy/Engine/Actor';\nimport type { TAnyCameraWrapper } from '@Anarchy/Engine/Camera';\nimport type { TColor } from '@Anarchy/Engine/Color';\nimport { ColorWrapper } from '@Anarchy/Engine/Color';\nimport type { TEnvMapTexture } from '@Anarchy/Engine/EnvMap';\nimport type { TFogWrapper } from '@Anarchy/Engine/Fog';\nimport type { TAbstractLightWrapper, TAnyLight } from '@Anarchy/Engine/Light';\nimport type { TDestroyable } from '@Anarchy/Engine/Mixins';\nimport { withActiveMixin, withObject3d } from '@Anarchy/Engine/Mixins';\nimport type { TModel3d } from '@Anarchy/Engine/Models3d';\nimport type { TParticlesWrapper } from '@Anarchy/Engine/Particles';\nimport { sceneEntityToConfig } from '@Anarchy/Engine/Scene/Adapters';\nimport type { TSceneConfig, TSceneObject, TSceneParams, TSceneWrapper } from '@Anarchy/Engine/Scene/Models';\nimport type { TTextAnyWrapper } from '@Anarchy/Engine/Text';\nimport type { TTexture } from '@Anarchy/Engine/Texture';\nimport type { TWriteable } from '@Anarchy/Shared/Utils';\nimport { isDefined, isNotDefined, isString } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport type { CubeTexture } from 'three';\nimport { Scene } from 'three';\n\nexport function SceneWrapper(params: TSceneParams): TSceneWrapper {\n const entity: TWriteable<Scene> = new Scene();\n\n if (isDefined(params.background)) setBackground(params.background);\n\n const wrapper: TAbstractWrapper<Scene> = AbstractWrapper(entity, WrapperType.Scene, params);\n\n const add = (obj: TSceneObject): void => void entity.add(obj);\n const addCamera = (camera: TAnyCameraWrapper): void => add(camera.entity);\n const addModel3d = (model3d: TModel3d): void => add(model3d.getRawModel3d());\n const addActor = (actor: TActor): void => addModel3d(actor.model3d);\n const addLight = <T extends TAnyLight>(light: Readonly<TAbstractLightWrapper<T>>): void => add(light.entity);\n const addParticles = (particles: Readonly<TParticlesWrapper>): void => add(particles.entity);\n\n const addText = (text: Readonly<TTextAnyWrapper>): void => add(text.entity);\n\n // eslint-disable-next-line functional/immutable-data\n const setFog = (fog: Readonly<TFogWrapper>): void => void (entity.fog = fog.entity);\n\n function setBackground(color: string | TColor | TTexture | CubeTexture | TEnvMapTexture): void {\n let background: string | TColor | TTexture | CubeTexture | null = null;\n if (isString(color)) background = ColorWrapper(color).entity;\n else background = color;\n if (isNotDefined(background)) throw new Error('Invalid background');\n // eslint-disable-next-line functional/immutable-data\n entity.background = background;\n }\n\n const getBackground = (): TColor | TTexture | CubeTexture | null => entity.background;\n\n // eslint-disable-next-line functional/immutable-data\n const setEnvironmentMap = (texture: TEnvMapTexture | TTexture): void => void (entity.environment = texture);\n\n const getEnvironmentMap = (): TTexture | null => entity.environment;\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(wrapper, {\n addCamera,\n addLight,\n addModel3d,\n addActor,\n setFog,\n addText,\n addParticles,\n setBackground,\n getBackground,\n setEnvironmentMap,\n getEnvironmentMap,\n ...withObject3d(entity),\n ...withActiveMixin(),\n entity,\n serialize: (): TSceneConfig => sceneEntityToConfig(result)\n });\n\n const destroySub$: Subscription = result.destroy$.subscribe((): void => {\n entity.traverse((entity: unknown): void => (entity as TDestroyable).destroy$?.next());\n entity.clear();\n (entity.background as CubeTexture)?.dispose?.();\n\n destroySub$.unsubscribe();\n });\n\n result._setActive(params.isActive, true);\n\n return result;\n}\n"],"names":["SceneWrapper","params","entity","Scene","isDefined","background","setBackground","wrapper","AbstractWrapper","WrapperType","add","obj","addModel3d","model3d","getRawModel3d","color","isString","ColorWrapper","isNotDefined","Error","result","Object","assign","addCamera","camera","addLight","light","addActor","actor","setFog","fog","addText","text","addParticles","particles","getBackground","setEnvironmentMap","texture","environment","getEnvironmentMap","withObject3d","withActiveMixin","serialize","sceneEntityToConfig","destroySub$","destroy$","subscribe","traverse","next","clear","dispose","unsubscribe","_setActive","isActive"],"mappings":"mhBAuBO,SAASA,aAAaC,QAC3B,MAAMC,OAA4B,IAAIC,MAElCC,UAAUH,OAAOI,aAAaC,cAAcL,OAAOI,YAEvD,MAAME,QAAmCC,gBAAgBN,OAAQO,YAAYN,MAAOF,QAE9ES,IAAOC,MAAiCT,OAAOQ,IAAIC,MAEnDC,WAAcC,SAA4BH,IAAIG,QAAQC,iBAU5D,SAASR,cAAcS,OACrB,IAAIV,WAA8D,KAGlE,GAFqBA,WAAjBW,SAASD,OAAqBE,aAAaF,OAAOb,OACpCa,MACdG,aAAab,YAAa,MAAM,IAAIc,MAAM,sBAE9CjB,OAAOG,WAAaA,UACtB,CAEA,MAQMe,OAASC,OAAOC,OAAOf,QAAS,CACpCgB,UA7BiBC,QAAoCd,IAAIc,OAAOtB,QA8BhEuB,SA3BqCC,OAAoDhB,IAAIgB,MAAMxB,QA4BnGU,sBACAe,SA9BgBC,OAAwBhB,WAAWgB,MAAMf,SA+BzDgB,OAxBcC,MAA2C5B,OAAO4B,IAAMA,IAAI5B,QAyB1E6B,QA5BeC,MAA0CtB,IAAIsB,KAAK9B,QA6BlE+B,aA/BoBC,WAAiDxB,IAAIwB,UAAUhC,QAgCnFI,4BACA6B,cAjBoB,IAA8CjC,OAAOG,WAkBzE+B,kBAfyBC,UAAmDnC,OAAOoC,YAAcD,SAgBjGE,kBAdwB,IAAuBrC,OAAOoC,eAenDE,aAAatC,WACbuC,kBACHvC,cACAwC,UAAW,IAAoBC,oBAAoBvB,UAG/CwB,YAA4BxB,OAAOyB,SAASC,UAAU,KAC1D5C,OAAO6C,SAAU7C,SAA2BA,QAAwB2C,UAAUG,QAC9E9C,OAAO+C,QACN/C,OAAOG,YAA4B6C,YAEpCN,YAAYO,gBAKd,OAFA/B,OAAOgC,WAAWnD,OAAOoD,UAAU,GAE5BjC,MACT"}
@@ -1,3 +1,4 @@
1
+ export * from './Adapters';
1
2
  export * from './Factories';
2
3
  export type * from './Models';
3
4
  export * from './Registries';
@@ -1,2 +1,2 @@
1
1
  import { TSpaceConfig, TSpaceParams } from '../Models';
2
- export declare function configToParams(config: TSpaceConfig): TSpaceParams | never;
2
+ export declare function spaceConfigToParams(config: TSpaceConfig): TSpaceParams | never;
@@ -1,2 +1,2 @@
1
- import{configToParams as configToParams$1}from"../../Scene/Adapters/ConfigToParams.js";function configToParams(config){const{scenes:scenes,...rest}=config;return{...rest,scenes:scenes.map(configToParams$1),entities:void 0}}export{configToParams};
1
+ import{sceneConfigToParams}from"../../Scene/Adapters/ConfigToParams.js";function spaceConfigToParams(config){const{scenes:scenes,...rest}=config;return{...rest,scenes:scenes.map(sceneConfigToParams),entities:void 0}}export{spaceConfigToParams};
2
2
  //# sourceMappingURL=ConfigToParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Space/Adapters/ConfigToParams.ts"],"sourcesContent":["import { configToParams as sceneConfigAdapter } from '@Anarchy/Engine/Scene/Adapters';\nimport type { TSpaceConfig, TSpaceParams } from '@Anarchy/Engine/Space/Models';\n\nexport function configToParams(config: TSpaceConfig): TSpaceParams | never {\n const { scenes, ...rest } = config;\n\n return {\n ...rest,\n scenes: scenes.map(sceneConfigAdapter),\n //we can't get entities here, services must be initialized first\n entities: undefined\n };\n}\n"],"names":["configToParams","config","scenes","rest","map","sceneConfigAdapter","entities"],"mappings":"uFAGO,SAASA,eAAeC,QAC7B,MAAMC,OAAEA,UAAWC,MAASF,OAE5B,MAAO,IACFE,KACHD,OAAQA,OAAOE,IAAIC,kBAEnBC,cAAU,EAEd"}
1
+ {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Space/Adapters/ConfigToParams.ts"],"sourcesContent":["import { sceneConfigToParams } from '@Anarchy/Engine/Scene/Adapters';\nimport type { TSpaceConfig, TSpaceParams } from '@Anarchy/Engine/Space/Models';\n\nexport function spaceConfigToParams(config: TSpaceConfig): TSpaceParams | never {\n const { scenes, ...rest } = config;\n\n return {\n ...rest,\n scenes: scenes.map(sceneConfigToParams),\n //we can't get entities here, services must be initialized first\n entities: undefined\n };\n}\n"],"names":["spaceConfigToParams","config","scenes","rest","map","sceneConfigToParams","entities"],"mappings":"wEAGO,SAASA,oBAAoBC,QAClC,MAAMC,OAAEA,UAAWC,MAASF,OAE5B,MAAO,IACFE,KACHD,OAAQA,OAAOE,IAAIC,qBAEnBC,cAAU,EAEd"}
@@ -1,2 +1,2 @@
1
1
  import { TSpace, TSpaceConfig, TSpaceServices } from '../Models';
2
- export declare function spaceToConfig(entity: TSpace, { actorService, animationsService, audioService, cameraService, controlsService, envMapService, fogService, fsmService, intersectionsWatcherService, lightService, materialService, models3dService, particlesService, physicsBodyService, physicsWorldService, rendererService, scenesService, spatialGridService, textService, textureService }: TSpaceServices): TSpaceConfig;
2
+ export declare function spaceEntityToConfig(entity: TSpace, { actorService, animationsService, audioService, cameraService, controlsService, envMapService, fogService, fsmService, intersectionsWatcherService, lightService, materialService, models3dService, particlesService, physicsBodyService, physicsWorldService, rendererService, scenesService, spatialGridService, textService, textureService }: TSpaceServices): TSpaceConfig;
@@ -1,2 +1,2 @@
1
- import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFieldsRecursive}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function spaceToConfig(entity,{actorService:actorService,animationsService:animationsService,audioService:audioService,cameraService:cameraService,controlsService:controlsService,envMapService:envMapService,fogService:fogService,fsmService:fsmService,intersectionsWatcherService:intersectionsWatcherService,lightService:lightService,materialService:materialService,models3dService:models3dService,particlesService:particlesService,physicsBodyService:physicsBodyService,physicsWorldService:physicsWorldService,rendererService:rendererService,scenesService:scenesService,spatialGridService:spatialGridService,textService:textService,textureService:textureService}){const entities={actors:actorService.serializeAllEntities(),audio:audioService.serializeAllEntities(),cameras:cameraService.serializeAllEntities(),controls:controlsService.serializeAllEntities(),envMaps:envMapService.serializeAllEntities(),fogs:fogService.serializeAllEntities(),fsm:fsmService.serializeAllEntities(),intersections:intersectionsWatcherService.serializeAllEntities(),lights:lightService.serializeAllEntities(),materials:materialService.serializeAllEntities(),models3d:models3dService.serializeAllEntities(),particles:particlesService.serializeAllEntities(),physics:isDefined(entity.services.physicsWorldService.findWorld())?{world:physicsWorldService.serializeWorld(),bodies:physicsBodyService.serializeAllEntities()}:{},renderers:rendererService.serializeAllEntities(),spatialGrids:spatialGridService.serializeAllEntities(),texts:textService.serializeAllEntities()},resources={animations:animationsService.serializeAllResources(),audio:audioService.serializeAllResources(),envMaps:envMapService.serializeAllResources(),models3d:models3dService.serializeAllResources(),textures:textureService.serializeAllResources()};return filterOutEmptyFieldsRecursive({canvasSelector:entity.getCanvasSelector(),version:entity.version,entities:entities,resources:resources,scenes:scenesService.serializeAllEntities(),...extractSerializableRegistrableFields(entity)})}export{spaceToConfig};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFieldsRecursive}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function spaceEntityToConfig(entity,{actorService:actorService,animationsService:animationsService,audioService:audioService,cameraService:cameraService,controlsService:controlsService,envMapService:envMapService,fogService:fogService,fsmService:fsmService,intersectionsWatcherService:intersectionsWatcherService,lightService:lightService,materialService:materialService,models3dService:models3dService,particlesService:particlesService,physicsBodyService:physicsBodyService,physicsWorldService:physicsWorldService,rendererService:rendererService,scenesService:scenesService,spatialGridService:spatialGridService,textService:textService,textureService:textureService}){const entities={actors:actorService.serializeAllEntities(),audio:audioService.serializeAllEntities(),cameras:cameraService.serializeAllEntities(),controls:controlsService.serializeAllEntities(),envMaps:envMapService.serializeAllEntities(),fogs:fogService.serializeAllEntities(),fsm:fsmService.serializeAllEntities(),intersections:intersectionsWatcherService.serializeAllEntities(),lights:lightService.serializeAllEntities(),materials:materialService.serializeAllEntities(),models3d:models3dService.serializeAllEntities(),particles:particlesService.serializeAllEntities(),physics:isDefined(entity.services.physicsWorldService.findWorld())?{world:physicsWorldService.serializeWorld(),bodies:physicsBodyService.serializeAllEntities()}:{},renderers:rendererService.serializeAllEntities(),spatialGrids:spatialGridService.serializeAllEntities(),texts:textService.serializeAllEntities()},resources={animations:animationsService.serializeAllResources(),audio:audioService.serializeAllResources(),envMaps:envMapService.serializeAllResources(),models3d:models3dService.serializeAllResources(),textures:textureService.serializeAllResources()};return filterOutEmptyFieldsRecursive({canvasSelector:entity.getCanvasSelector(),version:entity.version,entities:entities,resources:resources,scenes:scenesService.serializeAllEntities(),...extractSerializableRegistrableFields(entity)})}export{spaceEntityToConfig};
2
2
  //# sourceMappingURL=EntityToConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Space/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { SpaceSchemaVersion } from '@Anarchy/Engine/Space/Constants';\nimport type { TSpace, TSpaceConfig, TSpaceConfigEntities, TSpaceConfigResources, TSpaceServices } from '@Anarchy/Engine/Space/Models';\nimport { filterOutEmptyFieldsRecursive, isDefined } from '@Anarchy/Shared/Utils';\n\nexport function spaceToConfig(\n entity: TSpace,\n {\n actorService,\n animationsService,\n audioService,\n cameraService,\n controlsService,\n envMapService,\n fogService,\n fsmService,\n intersectionsWatcherService,\n lightService,\n materialService,\n models3dService,\n particlesService,\n physicsBodyService,\n physicsWorldService,\n rendererService,\n scenesService,\n spatialGridService,\n textService,\n textureService\n }: TSpaceServices\n): TSpaceConfig {\n const entities: TSpaceConfigEntities = {\n actors: actorService.serializeAllEntities(),\n audio: audioService.serializeAllEntities(),\n cameras: cameraService.serializeAllEntities(),\n controls: controlsService.serializeAllEntities(),\n envMaps: envMapService.serializeAllEntities(),\n fogs: fogService.serializeAllEntities(),\n fsm: fsmService.serializeAllEntities(),\n intersections: intersectionsWatcherService.serializeAllEntities(),\n lights: lightService.serializeAllEntities(),\n materials: materialService.serializeAllEntities(),\n models3d: models3dService.serializeAllEntities(),\n particles: particlesService.serializeAllEntities(),\n physics: isDefined(entity.services.physicsWorldService.findWorld())\n ? {\n world: physicsWorldService.serializeWorld(),\n bodies: physicsBodyService.serializeAllEntities()\n }\n : {},\n renderers: rendererService.serializeAllEntities(),\n spatialGrids: spatialGridService.serializeAllEntities(),\n texts: textService.serializeAllEntities()\n };\n\n const resources: TSpaceConfigResources = {\n animations: animationsService.serializeAllResources(),\n audio: audioService.serializeAllResources(),\n envMaps: envMapService.serializeAllResources(),\n models3d: models3dService.serializeAllResources(),\n textures: textureService.serializeAllResources()\n };\n\n return filterOutEmptyFieldsRecursive({\n canvasSelector: entity.getCanvasSelector(),\n version: entity.version as SpaceSchemaVersion,\n entities,\n resources,\n scenes: scenesService.serializeAllEntities(),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n"],"names":["spaceToConfig","entity","actorService","animationsService","audioService","cameraService","controlsService","envMapService","fogService","fsmService","intersectionsWatcherService","lightService","materialService","models3dService","particlesService","physicsBodyService","physicsWorldService","rendererService","scenesService","spatialGridService","textService","textureService","entities","actors","serializeAllEntities","audio","cameras","controls","envMaps","fogs","fsm","intersections","lights","materials","models3d","particles","physics","isDefined","services","findWorld","world","serializeWorld","bodies","renderers","spatialGrids","texts","resources","animations","serializeAllResources","textures","filterOutEmptyFieldsRecursive","canvasSelector","getCanvasSelector","version","scenes","extractSerializableRegistrableFields"],"mappings":"+RAKO,SAASA,cACdC,QACAC,aACEA,aAAAC,kBACAA,kBAAAC,aACAA,aAAAC,cACAA,cAAAC,gBACAA,gBAAAC,cACAA,cAAAC,WACAA,WAAAC,WACAA,WAAAC,4BACAA,4BAAAC,aACAA,aAAAC,gBACAA,gBAAAC,gBACAA,gBAAAC,iBACAA,iBAAAC,mBACAA,mBAAAC,oBACAA,oBAAAC,gBACAA,gBAAAC,cACAA,cAAAC,mBACAA,mBAAAC,YACAA,YAAAC,eACAA,iBAGF,MAAMC,SAAiC,CACrCC,OAAQrB,aAAasB,uBACrBC,MAAOrB,aAAaoB,uBACpBE,QAASrB,cAAcmB,uBACvBG,SAAUrB,gBAAgBkB,uBAC1BI,QAASrB,cAAciB,uBACvBK,KAAMrB,WAAWgB,uBACjBM,IAAKrB,WAAWe,uBAChBO,cAAerB,4BAA4Bc,uBAC3CQ,OAAQrB,aAAaa,uBACrBS,UAAWrB,gBAAgBY,uBAC3BU,SAAUrB,gBAAgBW,uBAC1BW,UAAWrB,iBAAiBU,uBAC5BY,QAASC,UAAUpC,OAAOqC,SAAStB,oBAAoBuB,aACnD,CACEC,MAAOxB,oBAAoByB,iBAC3BC,OAAQ3B,mBAAmBS,wBAE7B,CAAA,EACJmB,UAAW1B,gBAAgBO,uBAC3BoB,aAAczB,mBAAmBK,uBACjCqB,MAAOzB,YAAYI,wBAGfsB,UAAmC,CACvCC,WAAY5C,kBAAkB6C,wBAC9BvB,MAAOrB,aAAa4C,wBACpBpB,QAASrB,cAAcyC,wBACvBd,SAAUrB,gBAAgBmC,wBAC1BC,SAAU5B,eAAe2B,yBAG3B,OAAOE,8BAA8B,CACnCC,eAAgBlD,OAAOmD,oBACvBC,QAASpD,OAAOoD,QAChB/B,kBACAwB,oBACAQ,OAAQpC,cAAcM,0BACnB+B,qCAAqCtD,SAE5C"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Space/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { SpaceSchemaVersion } from '@Anarchy/Engine/Space/Constants';\nimport type { TSpace, TSpaceConfig, TSpaceConfigEntities, TSpaceConfigResources, TSpaceServices } from '@Anarchy/Engine/Space/Models';\nimport { filterOutEmptyFieldsRecursive, isDefined } from '@Anarchy/Shared/Utils';\n\nexport function spaceEntityToConfig(\n entity: TSpace,\n {\n actorService,\n animationsService,\n audioService,\n cameraService,\n controlsService,\n envMapService,\n fogService,\n fsmService,\n intersectionsWatcherService,\n lightService,\n materialService,\n models3dService,\n particlesService,\n physicsBodyService,\n physicsWorldService,\n rendererService,\n scenesService,\n spatialGridService,\n textService,\n textureService\n }: TSpaceServices\n): TSpaceConfig {\n const entities: TSpaceConfigEntities = {\n actors: actorService.serializeAllEntities(),\n audio: audioService.serializeAllEntities(),\n cameras: cameraService.serializeAllEntities(),\n controls: controlsService.serializeAllEntities(),\n envMaps: envMapService.serializeAllEntities(),\n fogs: fogService.serializeAllEntities(),\n fsm: fsmService.serializeAllEntities(),\n intersections: intersectionsWatcherService.serializeAllEntities(),\n lights: lightService.serializeAllEntities(),\n materials: materialService.serializeAllEntities(),\n models3d: models3dService.serializeAllEntities(),\n particles: particlesService.serializeAllEntities(),\n physics: isDefined(entity.services.physicsWorldService.findWorld())\n ? {\n world: physicsWorldService.serializeWorld(),\n bodies: physicsBodyService.serializeAllEntities()\n }\n : {},\n renderers: rendererService.serializeAllEntities(),\n spatialGrids: spatialGridService.serializeAllEntities(),\n texts: textService.serializeAllEntities()\n };\n\n const resources: TSpaceConfigResources = {\n animations: animationsService.serializeAllResources(),\n audio: audioService.serializeAllResources(),\n envMaps: envMapService.serializeAllResources(),\n models3d: models3dService.serializeAllResources(),\n textures: textureService.serializeAllResources()\n };\n\n return filterOutEmptyFieldsRecursive({\n canvasSelector: entity.getCanvasSelector(),\n version: entity.version as SpaceSchemaVersion,\n entities,\n resources,\n scenes: scenesService.serializeAllEntities(),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n"],"names":["spaceEntityToConfig","entity","actorService","animationsService","audioService","cameraService","controlsService","envMapService","fogService","fsmService","intersectionsWatcherService","lightService","materialService","models3dService","particlesService","physicsBodyService","physicsWorldService","rendererService","scenesService","spatialGridService","textService","textureService","entities","actors","serializeAllEntities","audio","cameras","controls","envMaps","fogs","fsm","intersections","lights","materials","models3d","particles","physics","isDefined","services","findWorld","world","serializeWorld","bodies","renderers","spatialGrids","texts","resources","animations","serializeAllResources","textures","filterOutEmptyFieldsRecursive","canvasSelector","getCanvasSelector","version","scenes","extractSerializableRegistrableFields"],"mappings":"+RAKO,SAASA,oBACdC,QACAC,aACEA,aAAAC,kBACAA,kBAAAC,aACAA,aAAAC,cACAA,cAAAC,gBACAA,gBAAAC,cACAA,cAAAC,WACAA,WAAAC,WACAA,WAAAC,4BACAA,4BAAAC,aACAA,aAAAC,gBACAA,gBAAAC,gBACAA,gBAAAC,iBACAA,iBAAAC,mBACAA,mBAAAC,oBACAA,oBAAAC,gBACAA,gBAAAC,cACAA,cAAAC,mBACAA,mBAAAC,YACAA,YAAAC,eACAA,iBAGF,MAAMC,SAAiC,CACrCC,OAAQrB,aAAasB,uBACrBC,MAAOrB,aAAaoB,uBACpBE,QAASrB,cAAcmB,uBACvBG,SAAUrB,gBAAgBkB,uBAC1BI,QAASrB,cAAciB,uBACvBK,KAAMrB,WAAWgB,uBACjBM,IAAKrB,WAAWe,uBAChBO,cAAerB,4BAA4Bc,uBAC3CQ,OAAQrB,aAAaa,uBACrBS,UAAWrB,gBAAgBY,uBAC3BU,SAAUrB,gBAAgBW,uBAC1BW,UAAWrB,iBAAiBU,uBAC5BY,QAASC,UAAUpC,OAAOqC,SAAStB,oBAAoBuB,aACnD,CACEC,MAAOxB,oBAAoByB,iBAC3BC,OAAQ3B,mBAAmBS,wBAE7B,CAAA,EACJmB,UAAW1B,gBAAgBO,uBAC3BoB,aAAczB,mBAAmBK,uBACjCqB,MAAOzB,YAAYI,wBAGfsB,UAAmC,CACvCC,WAAY5C,kBAAkB6C,wBAC9BvB,MAAOrB,aAAa4C,wBACpBpB,QAASrB,cAAcyC,wBACvBd,SAAUrB,gBAAgBmC,wBAC1BC,SAAU5B,eAAe2B,yBAG3B,OAAOE,8BAA8B,CACnCC,eAAgBlD,OAAOmD,oBACvBC,QAASpD,OAAOoD,QAChB/B,kBACAwB,oBACAQ,OAAQpC,cAAcM,0BACnB+B,qCAAqCtD,SAE5C"}
@@ -1,2 +1,2 @@
1
- import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{BehaviorSubject}from"../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js";import{Subject}from"../../node_modules/rxjs/dist/esm5/internal/Subject.js";import{getOrCreateCanvasFromSelector,findDomElement,isCanvasElement}from"../../Utils/DomUtils.js";import{getCanvasContainer}from"../../Global/Utils/ContainerUtils.js";import{SpaceEvents}from"../Constants/SpaceEvents.js";import{createEntities}from"../Utils/CreateEntitiesUtils.js";import{filter}from"../../node_modules/rxjs/dist/esm5/internal/operators/filter.js";import{skip}from"../../node_modules/rxjs/dist/esm5/internal/operators/skip.js";import{distinctUntilChanged}from"../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js";import{buildBaseServices,buildEntitiesServices}from"../Utils/PrepareServicesUtils.js";import{createLoops}from"../Utils/CreateLoopsUtils.js";import{spaceToConfig}from"../Adapters/EntityToConfig.js";import{CreateEntitiesStrategy}from"../Constants/CreateEntitiesStrategy.js";import{mergeAll}from"../../Utils/ObjectUtils.js";import{AbstractEntity}from"../../Abstract/Entities/AbstractEntity.js";import{EntityType}from"../../Abstract/Constants/EntityType.js";import{isDestroyable}from"../../Utils/CheckUtils.js";import{ambientContext}from"../../Context/AmbientContext/AmbientContext.js";function Space(params,registry,settings){const{canvasSelector:canvasSelector,version:version,name:name,tags:tags}=params,built$=new BehaviorSubject(void 0),start$=new BehaviorSubject(!1),events$=new Subject,serializationInProgress$=new BehaviorSubject(!1),canvas=getOrCreateCanvasFromSelector(ambientContext,canvasSelector),container=getCanvasContainer(canvas),{services:services,loops:loops}=function(canvas,container,params,settings={},events$){events$.next({name:SpaceEvents.BeforeBaseServicesBuilt,args:{canvas:canvas,params:params}});const baseServices=buildBaseServices();container.canvas$.next(canvas),baseServices.scenesService.createFromList(params.scenes);const sceneW=baseServices.scenesService.getActive();events$.next({name:SpaceEvents.BeforeLoopsCreated,args:{params:params}});const loops=createLoops(baseServices.loopService,settings);events$.next({name:SpaceEvents.BeforeEntitiesServicesBuilt,args:{canvas:canvas,params:params}});const services=buildEntitiesServices(sceneW,canvas,container,loops,baseServices,settings);return services.textService.injectStyle(),{services:services,loops:loops}}(canvas,container,params,settings,events$);events$.next({name:SpaceEvents.AfterAllServicesInitialized,args:{canvas:canvas,services:services,loops:loops,params:params}});let entitiesCreationPromise=Promise.resolve();isDefined(params.entities)&&Object.values(params.entities).length>0&&(events$.next({name:SpaceEvents.BeforeEntitiesCreated,args:{params:params,services:services,loops:loops}}),entitiesCreationPromise=createEntities(params.entities,services,container,CreateEntitiesStrategy.Params).then(()=>{events$.next({name:SpaceEvents.AfterEntitiesCreated,args:{params:params,services:services,loops:loops}}),services.intersectionsWatcherService.getRegistry().added$.subscribe(({value:value})=>{value.isAutoStart&&!value.isStarted&&value.enabled$.next(!0)})}));const parts={services:services,loops:loops,built$:built$.pipe(filter(isDefined)),start$:start$},space=mergeAll(AbstractEntity(parts,EntityType.Space,{version:version,name:name,tags:tags}),{getCanvasElement:function(){const result2=findDomElement(ambientContext,canvasSelector);if(isNotDefined(result2))throw new Error(`Space: Can't find canvas element: ${result2}`);if(!isCanvasElement(result2))throw new Error(`Space: Element (${result2}) is found, but it isn't a canvas`);return result2},container:container,drop:function(){space.destroy$.next(),canvas.remove()},version:version,getCanvasSelector:()=>canvasSelector,serializationInProgress$:serializationInProgress$.asObservable(),serialize:()=>{serializationInProgress$.next(!0);const config=spaceToConfig(space,space.services);return serializationInProgress$.next(!1),config}},{events$:events$});start$.pipe(skip(1),distinctUntilChanged()).subscribe(value=>{if(value)return Object.values(space.loops).forEach(loop=>loop.start());if(isNotDefined(space))throw new Error("Engine is not started yet (space is not defined)");Object.values(space.loops).forEach(loop=>loop.stop()),function({intersectionsWatcherService:intersectionsWatcherService,mouseService:mouseService}){mouseService.getMouseClickWatcherRegistry().forEach(watcher=>watcher.enabled$.next(!1)),mouseService.getMousePositionWatcherRegistry().forEach(watcher=>watcher.enabled$.next(!0)),intersectionsWatcherService.getRegistry().forEach(watcher=>{watcher.isStarted&&watcher.enabled$.next(!1)})}(space.services)});const destroySub$=space.destroy$.subscribe(()=>{destroySub$.unsubscribe(),container.destroy$.next(),built$.complete(),start$.complete(),serializationInProgress$.complete(),Object.values(services).forEach(service=>{isDestroyable(service)&&service.destroy$.next()}),Object.values(loops).forEach(loop=>{isDestroyable(loop)&&loop.destroy$.next()}),registry.remove(space.id)}),result=Object.assign(space,parts);return entitiesCreationPromise.then(()=>built$.next(result)),result}export{Space};
1
+ import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{BehaviorSubject}from"../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js";import{Subject}from"../../node_modules/rxjs/dist/esm5/internal/Subject.js";import{getOrCreateCanvasFromSelector,findDomElement,isCanvasElement}from"../../Utils/DomUtils.js";import{getCanvasContainer}from"../../Global/Utils/ContainerUtils.js";import{SpaceEvents}from"../Constants/SpaceEvents.js";import{createEntities}from"../Utils/CreateEntitiesUtils.js";import{filter}from"../../node_modules/rxjs/dist/esm5/internal/operators/filter.js";import{skip}from"../../node_modules/rxjs/dist/esm5/internal/operators/skip.js";import{distinctUntilChanged}from"../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js";import{buildBaseServices,buildEntitiesServices}from"../Utils/PrepareServicesUtils.js";import{createLoops}from"../Utils/CreateLoopsUtils.js";import{spaceEntityToConfig}from"../Adapters/EntityToConfig.js";import{CreateEntitiesStrategy}from"../Constants/CreateEntitiesStrategy.js";import{mergeAll}from"../../Utils/ObjectUtils.js";import{AbstractEntity}from"../../Abstract/Entities/AbstractEntity.js";import{EntityType}from"../../Abstract/Constants/EntityType.js";import{isDestroyable}from"../../Utils/CheckUtils.js";import{ambientContext}from"../../Context/AmbientContext/AmbientContext.js";function Space(params,registry,settings){const{canvasSelector:canvasSelector,version:version,name:name,tags:tags}=params,built$=new BehaviorSubject(void 0),start$=new BehaviorSubject(!1),events$=new Subject,serializationInProgress$=new BehaviorSubject(!1),canvas=getOrCreateCanvasFromSelector(ambientContext,canvasSelector),container=getCanvasContainer(canvas),{services:services,loops:loops}=function(canvas,container,params,settings={},events$){events$.next({name:SpaceEvents.BeforeBaseServicesBuilt,args:{canvas:canvas,params:params}});const baseServices=buildBaseServices();container.canvas$.next(canvas),baseServices.scenesService.createFromList(params.scenes);const sceneW=baseServices.scenesService.getActive();events$.next({name:SpaceEvents.BeforeLoopsCreated,args:{params:params}});const loops=createLoops(baseServices.loopService,settings);events$.next({name:SpaceEvents.BeforeEntitiesServicesBuilt,args:{canvas:canvas,params:params}});const services=buildEntitiesServices(sceneW,canvas,container,loops,baseServices,settings);return services.textService.injectStyle(),{services:services,loops:loops}}(canvas,container,params,settings,events$);events$.next({name:SpaceEvents.AfterAllServicesInitialized,args:{canvas:canvas,services:services,loops:loops,params:params}});let entitiesCreationPromise=Promise.resolve();isDefined(params.entities)&&Object.values(params.entities).length>0&&(events$.next({name:SpaceEvents.BeforeEntitiesCreated,args:{params:params,services:services,loops:loops}}),entitiesCreationPromise=createEntities(params.entities,services,container,CreateEntitiesStrategy.Params).then(()=>{events$.next({name:SpaceEvents.AfterEntitiesCreated,args:{params:params,services:services,loops:loops}}),services.intersectionsWatcherService.getRegistry().added$.subscribe(({value:value})=>{value.isAutoStart&&!value.isStarted&&value.enabled$.next(!0)})}));const parts={services:services,loops:loops,built$:built$.pipe(filter(isDefined)),start$:start$},space=mergeAll(AbstractEntity(parts,EntityType.Space,{version:version,name:name,tags:tags}),{getCanvasElement:function(){const result2=findDomElement(ambientContext,canvasSelector);if(isNotDefined(result2))throw new Error(`Space: Can't find canvas element: ${result2}`);if(!isCanvasElement(result2))throw new Error(`Space: Element (${result2}) is found, but it isn't a canvas`);return result2},container:container,drop:function(){space.destroy$.next(),canvas.remove()},version:version,getCanvasSelector:()=>canvasSelector,serializationInProgress$:serializationInProgress$.asObservable(),serialize:()=>{serializationInProgress$.next(!0);const config=spaceEntityToConfig(space,space.services);return serializationInProgress$.next(!1),config}},{events$:events$});start$.pipe(skip(1),distinctUntilChanged()).subscribe(value=>{if(value)return Object.values(space.loops).forEach(loop=>loop.start());if(isNotDefined(space))throw new Error("Engine is not started yet (space is not defined)");Object.values(space.loops).forEach(loop=>loop.stop()),function({intersectionsWatcherService:intersectionsWatcherService,mouseService:mouseService}){mouseService.getMouseClickWatcherRegistry().forEach(watcher=>watcher.enabled$.next(!1)),mouseService.getMousePositionWatcherRegistry().forEach(watcher=>watcher.enabled$.next(!0)),intersectionsWatcherService.getRegistry().forEach(watcher=>{watcher.isStarted&&watcher.enabled$.next(!1)})}(space.services)});const destroySub$=space.destroy$.subscribe(()=>{destroySub$.unsubscribe(),container.destroy$.next(),built$.complete(),start$.complete(),serializationInProgress$.complete(),Object.values(services).forEach(service=>{isDestroyable(service)&&service.destroy$.next()}),Object.values(loops).forEach(loop=>{isDestroyable(loop)&&loop.destroy$.next()}),registry.remove(space.id)}),result=Object.assign(space,parts);return entitiesCreationPromise.then(()=>built$.next(result)),result}export{Space};
2
2
  //# sourceMappingURL=Space.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Space.js","sources":["../../../src/Space/Entities/Space.ts"],"sourcesContent":["import type { TAbstractService, TRegistryPack } from '@Anarchy/Engine/Abstract';\nimport { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport { ambientContext } from '@Anarchy/Engine/Context';\nimport type { TContainerDecorator } from '@Anarchy/Engine/Global';\nimport { getCanvasContainer } from '@Anarchy/Engine/Global';\nimport type { TAnyIntersectionsWatcher } from '@Anarchy/Engine/Intersections';\nimport type { TLoop } from '@Anarchy/Engine/Loop';\nimport type { TMouseClickWatcher, TMousePositionWatcher } from '@Anarchy/Engine/Mouse';\nimport type { TSceneWrapper } from '@Anarchy/Engine/Scene';\nimport { spaceToConfig } from '@Anarchy/Engine/Space/Adapters';\nimport { CreateEntitiesStrategy, SpaceEvents } from '@Anarchy/Engine/Space/Constants';\nimport type {\n TSpace,\n TSpaceAnyEvent,\n TSpaceBaseServices,\n TSpaceCanvas,\n TSpaceConfig,\n TSpaceLoops,\n TSpaceParams,\n TSpaceParts,\n TSpaceRegistry,\n TSpaceServices,\n TSpaceSettings\n} from '@Anarchy/Engine/Space/Models';\nimport { buildBaseServices, buildEntitiesServices, createEntities, createLoops } from '@Anarchy/Engine/Space/Utils';\nimport { findDomElement, getOrCreateCanvasFromSelector, isCanvasElement, isDestroyable, mergeAll } from '@Anarchy/Engine/Utils';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { BehaviorSubject, distinctUntilChanged, filter, skip, Subject } from 'rxjs';\n\nexport function Space(params: TSpaceParams, registry: TSpaceRegistry, settings?: TSpaceSettings): TSpace {\n const { canvasSelector, version, name, tags } = params;\n const built$: BehaviorSubject<TSpace | undefined> = new BehaviorSubject<TSpace | undefined>(undefined);\n const start$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n const events$: Subject<TSpaceAnyEvent> = new Subject<TSpaceAnyEvent>();\n const serializationInProgress$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n const canvas: TSpaceCanvas = getOrCreateCanvasFromSelector(ambientContext, canvasSelector);\n const container: TContainerDecorator = getCanvasContainer(canvas);\n\n const { services, loops } = initSpaceServices(canvas, container, params, settings, events$);\n events$.next({ name: SpaceEvents.AfterAllServicesInitialized, args: { canvas, services, loops, params } });\n\n let entitiesCreationPromise: Promise<void> = Promise.resolve();\n if (isDefined(params.entities) && Object.values(params.entities).length > 0) {\n events$.next({ name: SpaceEvents.BeforeEntitiesCreated, args: { params, services, loops } });\n entitiesCreationPromise = createEntities(params.entities, services, container, CreateEntitiesStrategy.Params).then((): void => {\n events$.next({ name: SpaceEvents.AfterEntitiesCreated, args: { params, services, loops } });\n // TODO 14-0-0: Find a better place for this\n services.intersectionsWatcherService.getRegistry().added$.subscribe(({ value }: TRegistryPack<TAnyIntersectionsWatcher>): void => {\n if (value.isAutoStart && !value.isStarted) value.enabled$.next(true);\n });\n });\n }\n\n const parts: TSpaceParts = {\n services,\n loops,\n built$: built$.pipe(filter(isDefined)),\n start$\n };\n\n function getCanvasElement(): TSpaceCanvas | never {\n const result: HTMLElement | TSpaceCanvas | null = findDomElement(ambientContext, canvasSelector);\n if (isNotDefined(result)) throw new Error(`Space: Can't find canvas element: ${result}`);\n if (!isCanvasElement(result)) throw new Error(`Space: Element (${result}) is found, but it isn't a canvas`);\n return result;\n }\n\n function drop(): void {\n space.destroy$.next();\n canvas.remove();\n }\n\n const space: TSpace = mergeAll(\n AbstractEntity(parts, EntityType.Space, {\n version,\n name,\n tags\n }),\n {\n getCanvasElement,\n container,\n drop,\n version,\n getCanvasSelector: (): string => canvasSelector,\n serializationInProgress$: serializationInProgress$.asObservable(),\n serialize: (): TSpaceConfig => {\n serializationInProgress$.next(true);\n const config: TSpaceConfig = spaceToConfig(space, space.services);\n serializationInProgress$.next(false);\n return config;\n }\n },\n { events$ }\n );\n\n start$.pipe(skip(1), distinctUntilChanged()).subscribe((value: boolean): void => {\n if (value) return Object.values(space.loops).forEach((loop: TLoop): void => loop.start());\n\n //stop\n if (isNotDefined(space)) throw new Error('Engine is not started yet (space is not defined)');\n Object.values(space.loops).forEach((loop: TLoop): void => loop.stop());\n\n stopWatchers(space.services);\n\n return undefined;\n });\n\n const destroySub$: Subscription = space.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n container.destroy$.next();\n\n built$.complete();\n start$.complete();\n serializationInProgress$.complete();\n Object.values(services).forEach((service: TAbstractService): void => void (isDestroyable(service) && service.destroy$.next()));\n Object.values(loops).forEach((loop: TLoop): void => void (isDestroyable(loop) && loop.destroy$.next()));\n\n registry.remove(space.id);\n });\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(space, parts);\n\n entitiesCreationPromise.then(() => built$.next(result));\n\n return result;\n}\n\nfunction initSpaceServices(\n canvas: TSpaceCanvas,\n container: TContainerDecorator,\n params: TSpaceParams,\n settings: TSpaceSettings = {},\n events$: Subject<TSpaceAnyEvent>\n): {\n services: TSpaceServices;\n loops: TSpaceLoops;\n} {\n events$.next({ name: SpaceEvents.BeforeBaseServicesBuilt, args: { canvas, params } });\n const baseServices: TSpaceBaseServices = buildBaseServices();\n container.canvas$.next(canvas);\n\n baseServices.scenesService.createFromList(params.scenes);\n const sceneW: TSceneWrapper = baseServices.scenesService.getActive();\n\n events$.next({ name: SpaceEvents.BeforeLoopsCreated, args: { params } });\n const loops: TSpaceLoops = createLoops(baseServices.loopService, settings);\n\n events$.next({ name: SpaceEvents.BeforeEntitiesServicesBuilt, args: { canvas, params } });\n const services: TSpaceServices = buildEntitiesServices(sceneW, canvas, container, loops, baseServices, settings);\n\n services.textService.injectStyle();\n\n return { services, loops };\n}\n\nfunction stopWatchers({ intersectionsWatcherService, mouseService }: TSpaceServices): void {\n mouseService.getMouseClickWatcherRegistry().forEach((watcher: TMouseClickWatcher): void => watcher.enabled$.next(false));\n mouseService.getMousePositionWatcherRegistry().forEach((watcher: TMousePositionWatcher): void => watcher.enabled$.next(true));\n intersectionsWatcherService.getRegistry().forEach((watcher: TAnyIntersectionsWatcher): void => void (watcher.isStarted && watcher.enabled$.next(false)));\n}\n"],"names":["Space","params","registry","settings","canvasSelector","version","name","tags","built$","BehaviorSubject","start$","events$","Subject","serializationInProgress$","canvas","getOrCreateCanvasFromSelector","ambientContext","container","getCanvasContainer","services","loops","next","SpaceEvents","BeforeBaseServicesBuilt","args","baseServices","buildBaseServices","canvas$","scenesService","createFromList","scenes","sceneW","getActive","BeforeLoopsCreated","createLoops","loopService","BeforeEntitiesServicesBuilt","buildEntitiesServices","textService","injectStyle","initSpaceServices","AfterAllServicesInitialized","entitiesCreationPromise","Promise","resolve","isDefined","entities","Object","values","length","BeforeEntitiesCreated","createEntities","CreateEntitiesStrategy","Params","then","AfterEntitiesCreated","intersectionsWatcherService","getRegistry","added$","subscribe","value","isAutoStart","isStarted","enabled$","parts","pipe","filter","space","mergeAll","AbstractEntity","EntityType","getCanvasElement","result","findDomElement","isNotDefined","Error","isCanvasElement","drop","destroy$","remove","getCanvasSelector","asObservable","serialize","config","spaceToConfig","skip","distinctUntilChanged","forEach","loop","start","stop","mouseService","getMouseClickWatcherRegistry","watcher","getMousePositionWatcherRegistry","stopWatchers","destroySub$","unsubscribe","complete","service","isDestroyable","id","assign"],"mappings":"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"}
1
+ {"version":3,"file":"Space.js","sources":["../../../src/Space/Entities/Space.ts"],"sourcesContent":["import type { TAbstractService, TRegistryPack } from '@Anarchy/Engine/Abstract';\nimport { AbstractEntity, EntityType } from '@Anarchy/Engine/Abstract';\nimport { ambientContext } from '@Anarchy/Engine/Context';\nimport type { TContainerDecorator } from '@Anarchy/Engine/Global';\nimport { getCanvasContainer } from '@Anarchy/Engine/Global';\nimport type { TAnyIntersectionsWatcher } from '@Anarchy/Engine/Intersections';\nimport type { TLoop } from '@Anarchy/Engine/Loop';\nimport type { TMouseClickWatcher, TMousePositionWatcher } from '@Anarchy/Engine/Mouse';\nimport type { TSceneWrapper } from '@Anarchy/Engine/Scene';\nimport { spaceEntityToConfig } from '@Anarchy/Engine/Space/Adapters';\nimport { CreateEntitiesStrategy, SpaceEvents } from '@Anarchy/Engine/Space/Constants';\nimport type {\n TSpace,\n TSpaceAnyEvent,\n TSpaceBaseServices,\n TSpaceCanvas,\n TSpaceConfig,\n TSpaceLoops,\n TSpaceParams,\n TSpaceParts,\n TSpaceRegistry,\n TSpaceServices,\n TSpaceSettings\n} from '@Anarchy/Engine/Space/Models';\nimport { buildBaseServices, buildEntitiesServices, createEntities, createLoops } from '@Anarchy/Engine/Space/Utils';\nimport { findDomElement, getOrCreateCanvasFromSelector, isCanvasElement, isDestroyable, mergeAll } from '@Anarchy/Engine/Utils';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { BehaviorSubject, distinctUntilChanged, filter, skip, Subject } from 'rxjs';\n\nexport function Space(params: TSpaceParams, registry: TSpaceRegistry, settings?: TSpaceSettings): TSpace {\n const { canvasSelector, version, name, tags } = params;\n const built$: BehaviorSubject<TSpace | undefined> = new BehaviorSubject<TSpace | undefined>(undefined);\n const start$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n const events$: Subject<TSpaceAnyEvent> = new Subject<TSpaceAnyEvent>();\n const serializationInProgress$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n const canvas: TSpaceCanvas = getOrCreateCanvasFromSelector(ambientContext, canvasSelector);\n const container: TContainerDecorator = getCanvasContainer(canvas);\n\n const { services, loops } = initSpaceServices(canvas, container, params, settings, events$);\n events$.next({ name: SpaceEvents.AfterAllServicesInitialized, args: { canvas, services, loops, params } });\n\n let entitiesCreationPromise: Promise<void> = Promise.resolve();\n if (isDefined(params.entities) && Object.values(params.entities).length > 0) {\n events$.next({ name: SpaceEvents.BeforeEntitiesCreated, args: { params, services, loops } });\n entitiesCreationPromise = createEntities(params.entities, services, container, CreateEntitiesStrategy.Params).then((): void => {\n events$.next({ name: SpaceEvents.AfterEntitiesCreated, args: { params, services, loops } });\n // TODO 14-0-0: Find a better place for this\n services.intersectionsWatcherService.getRegistry().added$.subscribe(({ value }: TRegistryPack<TAnyIntersectionsWatcher>): void => {\n if (value.isAutoStart && !value.isStarted) value.enabled$.next(true);\n });\n });\n }\n\n const parts: TSpaceParts = {\n services,\n loops,\n built$: built$.pipe(filter(isDefined)),\n start$\n };\n\n function getCanvasElement(): TSpaceCanvas | never {\n const result: HTMLElement | TSpaceCanvas | null = findDomElement(ambientContext, canvasSelector);\n if (isNotDefined(result)) throw new Error(`Space: Can't find canvas element: ${result}`);\n if (!isCanvasElement(result)) throw new Error(`Space: Element (${result}) is found, but it isn't a canvas`);\n return result;\n }\n\n function drop(): void {\n space.destroy$.next();\n canvas.remove();\n }\n\n const space: TSpace = mergeAll(\n AbstractEntity(parts, EntityType.Space, {\n version,\n name,\n tags\n }),\n {\n getCanvasElement,\n container,\n drop,\n version,\n getCanvasSelector: (): string => canvasSelector,\n serializationInProgress$: serializationInProgress$.asObservable(),\n serialize: (): TSpaceConfig => {\n serializationInProgress$.next(true);\n const config: TSpaceConfig = spaceEntityToConfig(space, space.services);\n serializationInProgress$.next(false);\n return config;\n }\n },\n { events$ }\n );\n\n start$.pipe(skip(1), distinctUntilChanged()).subscribe((value: boolean): void => {\n if (value) return Object.values(space.loops).forEach((loop: TLoop): void => loop.start());\n\n //stop\n if (isNotDefined(space)) throw new Error('Engine is not started yet (space is not defined)');\n Object.values(space.loops).forEach((loop: TLoop): void => loop.stop());\n\n stopWatchers(space.services);\n\n return undefined;\n });\n\n const destroySub$: Subscription = space.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n container.destroy$.next();\n\n built$.complete();\n start$.complete();\n serializationInProgress$.complete();\n Object.values(services).forEach((service: TAbstractService): void => void (isDestroyable(service) && service.destroy$.next()));\n Object.values(loops).forEach((loop: TLoop): void => void (isDestroyable(loop) && loop.destroy$.next()));\n\n registry.remove(space.id);\n });\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(space, parts);\n\n entitiesCreationPromise.then(() => built$.next(result));\n\n return result;\n}\n\nfunction initSpaceServices(\n canvas: TSpaceCanvas,\n container: TContainerDecorator,\n params: TSpaceParams,\n settings: TSpaceSettings = {},\n events$: Subject<TSpaceAnyEvent>\n): {\n services: TSpaceServices;\n loops: TSpaceLoops;\n} {\n events$.next({ name: SpaceEvents.BeforeBaseServicesBuilt, args: { canvas, params } });\n const baseServices: TSpaceBaseServices = buildBaseServices();\n container.canvas$.next(canvas);\n\n baseServices.scenesService.createFromList(params.scenes);\n const sceneW: TSceneWrapper = baseServices.scenesService.getActive();\n\n events$.next({ name: SpaceEvents.BeforeLoopsCreated, args: { params } });\n const loops: TSpaceLoops = createLoops(baseServices.loopService, settings);\n\n events$.next({ name: SpaceEvents.BeforeEntitiesServicesBuilt, args: { canvas, params } });\n const services: TSpaceServices = buildEntitiesServices(sceneW, canvas, container, loops, baseServices, settings);\n\n services.textService.injectStyle();\n\n return { services, loops };\n}\n\nfunction stopWatchers({ intersectionsWatcherService, mouseService }: TSpaceServices): void {\n mouseService.getMouseClickWatcherRegistry().forEach((watcher: TMouseClickWatcher): void => watcher.enabled$.next(false));\n mouseService.getMousePositionWatcherRegistry().forEach((watcher: TMousePositionWatcher): void => watcher.enabled$.next(true));\n intersectionsWatcherService.getRegistry().forEach((watcher: TAnyIntersectionsWatcher): void => void (watcher.isStarted && watcher.enabled$.next(false)));\n}\n"],"names":["Space","params","registry","settings","canvasSelector","version","name","tags","built$","BehaviorSubject","start$","events$","Subject","serializationInProgress$","canvas","getOrCreateCanvasFromSelector","ambientContext","container","getCanvasContainer","services","loops","next","SpaceEvents","BeforeBaseServicesBuilt","args","baseServices","buildBaseServices","canvas$","scenesService","createFromList","scenes","sceneW","getActive","BeforeLoopsCreated","createLoops","loopService","BeforeEntitiesServicesBuilt","buildEntitiesServices","textService","injectStyle","initSpaceServices","AfterAllServicesInitialized","entitiesCreationPromise","Promise","resolve","isDefined","entities","Object","values","length","BeforeEntitiesCreated","createEntities","CreateEntitiesStrategy","Params","then","AfterEntitiesCreated","intersectionsWatcherService","getRegistry","added$","subscribe","value","isAutoStart","isStarted","enabled$","parts","pipe","filter","space","mergeAll","AbstractEntity","EntityType","getCanvasElement","result","findDomElement","isNotDefined","Error","isCanvasElement","drop","destroy$","remove","getCanvasSelector","asObservable","serialize","config","spaceEntityToConfig","skip","distinctUntilChanged","forEach","loop","start","stop","mouseService","getMouseClickWatcherRegistry","watcher","getMousePositionWatcherRegistry","stopWatchers","destroySub$","unsubscribe","complete","service","isDestroyable","id","assign"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{configToParams}from"../Adapters/ConfigToParams.js";import{SpaceFromConfig}from"../Entities/SpaceFromConfig.js";import{Space}from"../Entities/Space.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function create(params,{config:config,registry:registry},settings){return isDefined(config)&&0!==Object.keys.length?SpaceFromConfig(params,config,registry,settings):Space(params,registry,settings)}function SpaceFactory(){const factory=ReactiveFactory(FactoryType.Space,create);return Object.assign(factory,{configToParams:configToParams})}export{SpaceFactory};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{spaceConfigToParams}from"../Adapters/ConfigToParams.js";import{SpaceFromConfig}from"../Entities/SpaceFromConfig.js";import{Space}from"../Entities/Space.js";import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";function create(params,{config:config,registry:registry},settings){return isDefined(config)&&0!==Object.keys.length?SpaceFromConfig(params,config,registry,settings):Space(params,registry,settings)}function SpaceFactory(){const factory=ReactiveFactory(FactoryType.Space,create);return Object.assign(factory,{configToParams:spaceConfigToParams})}export{SpaceFactory};
2
2
  //# sourceMappingURL=SpaceFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpaceFactory.js","sources":["../../../src/Space/Factories/SpaceFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { configToParams } from '@Anarchy/Engine/Space/Adapters';\nimport { Space, SpaceFromConfig } from '@Anarchy/Engine/Space/Entities';\nimport type { TSpace, TSpaceFactory, TSpaceFactoryDependencies, TSpaceParams, TSpaceSettings } from '@Anarchy/Engine/Space/Models';\nimport { isDefined } from '@Anarchy/Shared/Utils';\n\nfunction create(params: TSpaceParams, { config, registry }: TSpaceFactoryDependencies, settings?: TSpaceSettings): TSpace | never {\n if (isDefined(config) && Object.keys.length !== 0) return SpaceFromConfig(params, config, registry, settings);\n return Space(params, registry, settings);\n}\n\nexport function SpaceFactory(): TSpaceFactory {\n const factory: TReactiveFactory<TSpace, TSpaceParams, TSpaceFactoryDependencies, TSpaceSettings> = ReactiveFactory(FactoryType.Space, create);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams });\n}\n"],"names":["create","params","config","registry","settings","isDefined","Object","keys","length","SpaceFromConfig","Space","SpaceFactory","factory","ReactiveFactory","FactoryType","assign","configToParams"],"mappings":"qXAOA,SAASA,OAAOC,QAAsBC,OAAEA,OAAAC,SAAQA,UAAuCC,UACrF,OAAIC,UAAUH,SAAkC,IAAvBI,OAAOC,KAAKC,OAAqBC,gBAAgBR,OAAQC,OAAQC,SAAUC,UAC7FM,MAAMT,OAAQE,SAAUC,SACjC,CAEO,SAASO,eACd,MAAMC,QAA6FC,gBAAgBC,YAAYJ,MAAOV,QAGtI,OAAOM,OAAOS,OAAOH,QAAS,CAAEI,+BAClC"}
1
+ {"version":3,"file":"SpaceFactory.js","sources":["../../../src/Space/Factories/SpaceFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { spaceConfigToParams } from '@Anarchy/Engine/Space/Adapters';\nimport { Space, SpaceFromConfig } from '@Anarchy/Engine/Space/Entities';\nimport type { TSpace, TSpaceFactory, TSpaceFactoryDependencies, TSpaceParams, TSpaceSettings } from '@Anarchy/Engine/Space/Models';\nimport { isDefined } from '@Anarchy/Shared/Utils';\n\nfunction create(params: TSpaceParams, { config, registry }: TSpaceFactoryDependencies, settings?: TSpaceSettings): TSpace | never {\n if (isDefined(config) && Object.keys.length !== 0) return SpaceFromConfig(params, config, registry, settings);\n return Space(params, registry, settings);\n}\n\nexport function SpaceFactory(): TSpaceFactory {\n const factory: TReactiveFactory<TSpace, TSpaceParams, TSpaceFactoryDependencies, TSpaceSettings> = ReactiveFactory(FactoryType.Space, create);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: spaceConfigToParams });\n}\n"],"names":["create","params","config","registry","settings","isDefined","Object","keys","length","SpaceFromConfig","Space","SpaceFactory","factory","ReactiveFactory","FactoryType","assign","configToParams","spaceConfigToParams"],"mappings":"0XAOA,SAASA,OAAOC,QAAsBC,OAAEA,OAAAC,SAAQA,UAAuCC,UACrF,OAAIC,UAAUH,SAAkC,IAAvBI,OAAOC,KAAKC,OAAqBC,gBAAgBR,OAAQC,OAAQC,SAAUC,UAC7FM,MAAMT,OAAQE,SAAUC,SACjC,CAEO,SAASO,eACd,MAAMC,QAA6FC,gBAAgBC,YAAYJ,MAAOV,QAGtI,OAAOM,OAAOS,OAAOH,QAAS,CAAEI,eAAgBC,qBAClD"}
@@ -1,4 +1,4 @@
1
- export { configToParams as spaceConfigToParams } from './Adapters';
1
+ export * from './Adapters';
2
2
  export * from './Constants';
3
3
  export * from './Entities';
4
4
  export * from './Factories';
@@ -1,2 +1,2 @@
1
1
  import { TSpatialGridConfig, TSpatialGridParams } from '../Models';
2
- export declare function configToParamsSpatial(config: TSpatialGridConfig): TSpatialGridParams;
2
+ export declare function spatialConfigToParams(config: TSpatialGridConfig): TSpatialGridParams;
@@ -1,2 +1,2 @@
1
- function configToParamsSpatial(config){return{...config}}export{configToParamsSpatial};
1
+ function spatialConfigToParams(config){return{...config}}export{spatialConfigToParams};
2
2
  //# sourceMappingURL=ConfigToParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Spatial/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TSpatialGridConfig, TSpatialGridParams } from '@Anarchy/Engine/Spatial/Models';\n\nexport function configToParamsSpatial(config: TSpatialGridConfig): TSpatialGridParams {\n return {\n ...config\n };\n}\n"],"names":["configToParamsSpatial","config"],"mappings":"AAEO,SAASA,sBAAsBC,QACpC,MAAO,IACFA,OAEP"}
1
+ {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Spatial/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TSpatialGridConfig, TSpatialGridParams } from '@Anarchy/Engine/Spatial/Models';\n\nexport function spatialConfigToParams(config: TSpatialGridConfig): TSpatialGridParams {\n return {\n ...config\n };\n}\n"],"names":["spatialConfigToParams","config"],"mappings":"AAEO,SAASA,sBAAsBC,QACpC,MAAO,IACFA,OAEP"}
@@ -1,2 +1,2 @@
1
1
  import { TSpatialConfigToParamsSpatialDataDependencies, TSpatialDataConfig, TSpatialDataParams } from '../Models';
2
- export declare function configToParamsSpatialData(config: TSpatialDataConfig, { spatialGridRegistry }: TSpatialConfigToParamsSpatialDataDependencies): TSpatialDataParams;
2
+ export declare function spatialDataConfigToParams(config: TSpatialDataConfig, { spatialGridRegistry }: TSpatialConfigToParamsSpatialDataDependencies): TSpatialDataParams;
@@ -1,2 +1,2 @@
1
- function configToParamsSpatialData(config,{spatialGridRegistry:spatialGridRegistry}){return{...config,grid:config.grid?spatialGridRegistry.getByName(config.grid):void 0}}export{configToParamsSpatialData};
1
+ function spatialDataConfigToParams(config,{spatialGridRegistry:spatialGridRegistry}){return{...config,grid:config.grid?spatialGridRegistry.getByName(config.grid):void 0}}export{spatialDataConfigToParams};
2
2
  //# sourceMappingURL=ConfigToParamsSpatialData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigToParamsSpatialData.js","sources":["../../../src/Spatial/Adapters/ConfigToParamsSpatialData.ts"],"sourcesContent":["import type { TSpatialConfigToParamsSpatialDataDependencies, TSpatialDataConfig, TSpatialDataParams } from '@Anarchy/Engine/Spatial/Models';\n\nexport function configToParamsSpatialData(config: TSpatialDataConfig, { spatialGridRegistry }: TSpatialConfigToParamsSpatialDataDependencies): TSpatialDataParams {\n return {\n ...config,\n grid: config.grid ? spatialGridRegistry.getByName(config.grid) : undefined\n };\n}\n"],"names":["configToParamsSpatialData","config","spatialGridRegistry","grid","getByName"],"mappings":"AAEO,SAASA,0BAA0BC,QAA4BC,oBAAEA,sBACtE,MAAO,IACFD,OACHE,KAAMF,OAAOE,KAAOD,oBAAoBE,UAAUH,OAAOE,WAAQ,EAErE"}
1
+ {"version":3,"file":"ConfigToParamsSpatialData.js","sources":["../../../src/Spatial/Adapters/ConfigToParamsSpatialData.ts"],"sourcesContent":["import type { TSpatialConfigToParamsSpatialDataDependencies, TSpatialDataConfig, TSpatialDataParams } from '@Anarchy/Engine/Spatial/Models';\n\nexport function spatialDataConfigToParams(config: TSpatialDataConfig, { spatialGridRegistry }: TSpatialConfigToParamsSpatialDataDependencies): TSpatialDataParams {\n return {\n ...config,\n grid: config.grid ? spatialGridRegistry.getByName(config.grid) : undefined\n };\n}\n"],"names":["spatialDataConfigToParams","config","spatialGridRegistry","grid","getByName"],"mappings":"AAEO,SAASA,0BAA0BC,QAA4BC,oBAAEA,sBACtE,MAAO,IACFD,OACHE,KAAMF,OAAOE,KAAOD,oBAAoBE,UAAUH,OAAOE,WAAQ,EAErE"}
@@ -1,3 +1,3 @@
1
1
  import { TSpatialCellSerializedData, TSpatialCellWrapper, TSpatialGridConfig, TSpatialGridWrapper } from '../Models';
2
- export declare function entityToConfigSpatialGrid(entity: TSpatialGridWrapper): TSpatialGridConfig;
2
+ export declare function spatialGridEntityToConfig(entity: TSpatialGridWrapper): TSpatialGridConfig;
3
3
  export declare function entityToConfigSpatialCell(entity: TSpatialCellWrapper): TSpatialCellSerializedData;
@@ -1,2 +1,2 @@
1
- import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function entityToConfigSpatialGrid(entity){return filterOutEmptyFields({...entity.getParams(),...extractSerializableRegistrableFields(entity)})}function entityToConfigSpatialCell(entity){const{minX:minX,minY:minY,maxX:maxX,maxY:maxY}=entity,objects=entity.getObjects().map(v=>v.id);return filterOutEmptyFields({id:entity.id,minX:minX,minY:minY,maxX:maxX,maxY:maxY,objects:objects,version:entity.getVersion()})}export{entityToConfigSpatialCell,entityToConfigSpatialGrid};
1
+ import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";function spatialGridEntityToConfig(entity){return filterOutEmptyFields({...entity.getParams(),...extractSerializableRegistrableFields(entity)})}function entityToConfigSpatialCell(entity){const{minX:minX,minY:minY,maxX:maxX,maxY:maxY}=entity,objects=entity.getObjects().map(v=>v.id);return filterOutEmptyFields({id:entity.id,minX:minX,minY:minY,maxX:maxX,maxY:maxY,objects:objects,version:entity.getVersion()})}export{entityToConfigSpatialCell,spatialGridEntityToConfig};
2
2
  //# sourceMappingURL=EntityToConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Spatial/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TActor } from '@Anarchy/Engine/Actor';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TSpatialCellId, TSpatialCellSerializedData, TSpatialCellWrapper, TSpatialGridConfig, TSpatialGridWrapper } from '@Anarchy/Engine/Spatial/Models';\nimport { filterOutEmptyFields } from '@Anarchy/Shared/Utils';\n\nexport function entityToConfigSpatialGrid(entity: TSpatialGridWrapper): TSpatialGridConfig {\n return filterOutEmptyFields({\n ...entity.getParams(),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n\nexport function entityToConfigSpatialCell(entity: TSpatialCellWrapper): TSpatialCellSerializedData {\n const { minX, minY, maxX, maxY } = entity;\n const objects: ReadonlyArray<string> = entity.getObjects().map((v: TActor): string => v.id);\n const id: TSpatialCellId = entity.id as TSpatialCellId;\n return filterOutEmptyFields({ id, minX, minY, maxX, maxY, objects, version: entity.getVersion() });\n}\n"],"names":["entityToConfigSpatialGrid","entity","filterOutEmptyFields","getParams","extractSerializableRegistrableFields","entityToConfigSpatialCell","minX","minY","maxX","maxY","objects","getObjects","map","v","id","version","getVersion"],"mappings":"yMAKO,SAASA,0BAA0BC,QACxC,OAAOC,qBAAqB,IACvBD,OAAOE,eACPC,qCAAqCH,SAE5C,CAEO,SAASI,0BAA0BJ,QACxC,MAAMK,KAAEA,KAAAC,KAAMA,KAAAC,KAAMA,KAAAC,KAAMA,MAASR,OAC7BS,QAAiCT,OAAOU,aAAaC,IAAKC,GAAsBA,EAAEC,IAExF,OAAOZ,qBAAqB,CAAEY,GADHb,OAAOa,GACAR,UAAMC,UAAMC,UAAMC,UAAMC,gBAASK,QAASd,OAAOe,cACrF"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Spatial/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TActor } from '@Anarchy/Engine/Actor';\nimport { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TSpatialCellId, TSpatialCellSerializedData, TSpatialCellWrapper, TSpatialGridConfig, TSpatialGridWrapper } from '@Anarchy/Engine/Spatial/Models';\nimport { filterOutEmptyFields } from '@Anarchy/Shared/Utils';\n\nexport function spatialGridEntityToConfig(entity: TSpatialGridWrapper): TSpatialGridConfig {\n return filterOutEmptyFields({\n ...entity.getParams(),\n ...extractSerializableRegistrableFields(entity)\n });\n}\n\nexport function entityToConfigSpatialCell(entity: TSpatialCellWrapper): TSpatialCellSerializedData {\n const { minX, minY, maxX, maxY } = entity;\n const objects: ReadonlyArray<string> = entity.getObjects().map((v: TActor): string => v.id);\n const id: TSpatialCellId = entity.id as TSpatialCellId;\n return filterOutEmptyFields({ id, minX, minY, maxX, maxY, objects, version: entity.getVersion() });\n}\n"],"names":["spatialGridEntityToConfig","entity","filterOutEmptyFields","getParams","extractSerializableRegistrableFields","entityToConfigSpatialCell","minX","minY","maxX","maxY","objects","getObjects","map","v","id","version","getVersion"],"mappings":"yMAKO,SAASA,0BAA0BC,QACxC,OAAOC,qBAAqB,IACvBD,OAAOE,eACPC,qCAAqCH,SAE5C,CAEO,SAASI,0BAA0BJ,QACxC,MAAMK,KAAEA,KAAAC,KAAMA,KAAAC,KAAMA,KAAAC,KAAMA,MAASR,OAC7BS,QAAiCT,OAAOU,aAAaC,IAAKC,GAAsBA,EAAEC,IAExF,OAAOZ,qBAAqB,CAAEY,GADHb,OAAOa,GACAR,UAAMC,UAAMC,UAAMC,UAAMC,gBAASK,QAASd,OAAOe,cACrF"}
@@ -1,2 +1,2 @@
1
- import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";import{configToParamsSpatial}from"../Adapters/ConfigToParams.js";import{SpatialGridWrapper}from"../Wrappers/SpatialGridWrapper.js";function SpatialGridFactory(){const factory=ReactiveFactory(FactoryType.SpatialGrid,SpatialGridWrapper);return Object.assign(factory,{configToParams:configToParamsSpatial})}export{SpatialGridFactory};
1
+ import{ReactiveFactory}from"../../Abstract/Factories/ReactiveFactory.js";import{FactoryType}from"../../Abstract/Constants/FactoryType.js";import{spatialConfigToParams}from"../Adapters/ConfigToParams.js";import{SpatialGridWrapper}from"../Wrappers/SpatialGridWrapper.js";function SpatialGridFactory(){const factory=ReactiveFactory(FactoryType.SpatialGrid,SpatialGridWrapper);return Object.assign(factory,{configToParams:spatialConfigToParams})}export{SpatialGridFactory};
2
2
  //# sourceMappingURL=SpatialGridFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpatialGridFactory.js","sources":["../../../src/Spatial/Factories/SpatialGridFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { configToParamsSpatial as configToParams } from '@Anarchy/Engine/Spatial/Adapters';\nimport type { TSpatialGridFactory, TSpatialGridParams, TSpatialGridWrapper } from '@Anarchy/Engine/Spatial/Models';\nimport { SpatialGridWrapper } from '@Anarchy/Engine/Spatial/Wrappers';\n\nexport function SpatialGridFactory(): TSpatialGridFactory {\n const factory: TReactiveFactory<TSpatialGridWrapper, TSpatialGridParams> = ReactiveFactory(FactoryType.SpatialGrid, SpatialGridWrapper);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams });\n}\n"],"names":["SpatialGridFactory","factory","ReactiveFactory","FactoryType","SpatialGrid","SpatialGridWrapper","Object","assign","configToParams"],"mappings":"6QAMO,SAASA,qBACd,MAAMC,QAAqEC,gBAAgBC,YAAYC,YAAaC,oBAGpH,OAAOC,OAAOC,OAAON,QAAS,CAAAO,eAAEA,uBAClC"}
1
+ {"version":3,"file":"SpatialGridFactory.js","sources":["../../../src/Spatial/Factories/SpatialGridFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@Anarchy/Engine/Abstract';\nimport { spatialConfigToParams as configToParams } from '@Anarchy/Engine/Spatial/Adapters';\nimport type { TSpatialGridFactory, TSpatialGridParams, TSpatialGridWrapper } from '@Anarchy/Engine/Spatial/Models';\nimport { SpatialGridWrapper } from '@Anarchy/Engine/Spatial/Wrappers';\n\nexport function SpatialGridFactory(): TSpatialGridFactory {\n const factory: TReactiveFactory<TSpatialGridWrapper, TSpatialGridParams> = ReactiveFactory(FactoryType.SpatialGrid, SpatialGridWrapper);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams });\n}\n"],"names":["SpatialGridFactory","factory","ReactiveFactory","FactoryType","SpatialGrid","SpatialGridWrapper","Object","assign","configToParams"],"mappings":"6QAMO,SAASA,qBACd,MAAMC,QAAqEC,gBAAgBC,YAAYC,YAAaC,oBAGpH,OAAOC,OAAOC,OAAON,QAAS,CAAAO,eAAEA,uBAClC"}
@@ -1,2 +1,2 @@
1
- import{entityToConfigSpatialGrid}from"../Adapters/EntityToConfig.js";import{createOutline,createBoundingBox}from"../Services/SpatialHelper.js";import{SpatialCellWrapper}from"./SpatialCellWrapper.js";import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import RBush from"../../node_modules/rbush/index.js";import{Box3,Vector3}from"three";import{Subject}from"../../node_modules/rxjs/dist/esm5/internal/Subject.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";function SpatialGridWrapper(params){const entity=function({mapWidth:mapWidth,mapHeight:mapHeight,cellSize:cellSize,centerX:centerX,centerZ:centerZ}){const startX=centerX-Math.floor(mapWidth/cellSize/2)*cellSize,startZ=centerZ-Math.floor(mapHeight/cellSize/2)*cellSize,grid=new RBush;for(let x=0;x<mapWidth;x+=cellSize)for(let z=0;z<mapHeight;z+=cellSize){const cellW=SpatialCellWrapper({minX:startX+x,minZ:startZ+z,maxX:startX+x+cellSize,maxZ:startZ+z+cellSize,x:x,z:z});grid.insert(cellW)}return grid}(params);let _debugOutlines=[];const _debugOutlinesIds=[],update$=new Subject,wrapper=AbstractWrapper(entity,WrapperType.SpatialGrid,params);function getBoundingBox(mesh){const box=new Box3;return box.setFromObject(mesh),box}function addActor(actor){isNotDefined(actor.spatial.getGrid())&&function(actor,gridW){actor.spatial.setGrid(gridW)}(actor,this);const boundingBox=getBoundingBox(actor.model3d.getRawModel3d()),min=boundingBox.min,max=boundingBox.max,cells=entity.search({minX:min.x,minY:min.z,maxX:max.x,maxY:max.z});for(const cell of cells)isNotDefined(cell.findObject(actor.id))&&(cell.addObject(actor),update$.next(cell));actor.spatial.setSpatialCells(cells)}const getAllCells=()=>entity.all();function getAllInCell(x,z){const cells=entity.search({minX:x,minY:z,maxX:x,maxY:z});return 1===cells.length?cells[0].getObjects():cells.length>1?cells.flatMap(cell=>cell.getObjects()):[]}function removeFromGrid(actor){const cells=actor.spatial.getSpatialCells();for(const cell of cells)cell.removeObject(actor),update$.next(cell);actor.spatial.resetSpatialCells()}const findCellsForBox=({minX:minX,minZ:minZ,maxX:maxX,maxZ:maxZ})=>entity.search({minX:minX,minY:minZ,maxX:maxX,maxY:maxZ}),destroySub$=wrapper.destroy$.subscribe(()=>{_debugOutlines.length=0,_debugOutlinesIds.length=0,destroySub$.unsubscribe(),update$.complete(),getAllCells().forEach(cell=>{cell.destroy$.next()}),entity.clear()}),_debugVisualizeCellsBoxList=[],result=Object.assign(wrapper,{entity:entity,addActor:addActor,getAllCells:getAllCells,getAllInCell:getAllInCell,getAllInCellByCellId:function(cellId){const{x:x,z:z}=(cellId=>{const[x,z]=cellId.split("_").slice(-2).map(Number);return new Vector3(x,0,z)})(cellId);return getAllInCell(x,z)},findCellsForPoint:(x,z)=>entity.search({minX:x,minY:z,maxX:x,maxY:z}),findCellsForBox:findCellsForBox,findCellsByActorBox:function(actor){const actorBox=getBoundingBox(actor.model3d.getRawModel3d());return findCellsForBox({minX:actorBox.min.x,minZ:actorBox.min.z,maxX:actorBox.max.x,maxZ:actorBox.max.z})},findCellById:function(id){return entity.all().filter(cell=>cell.id===id)[0]},removeFromGrid:removeFromGrid,clearGrid:function(){throw new Error("SpatialGrid clearGrid not implemented, just a placeholder: test and fix before usage")},_debugVisualizeCells:function(sceneW,color="#00ff00",wireframe=!0,height=.1){entity.all().forEach(cell=>{const box=createBoundingBox(cell.minX,cell.minY,cell.maxX,cell.maxY,color,wireframe,height);sceneW.entity.add(box),_debugVisualizeCellsBoxList.push(box)})},_removeDebugVisualizeCells:function(sceneW){_debugVisualizeCellsBoxList.forEach(box=>{sceneW.entity.remove(box),box.geometry.dispose()}),_debugVisualizeCellsBoxList.length=0},_debugHighlightObjects:function(sceneW,x,z,color="#0000ff"){_debugOutlines.forEach(outline=>{sceneW.entity.remove(outline)}),_debugOutlines=[],_debugOutlinesIds.forEach(id=>{const obj=sceneW.entity.getObjectById(id);isDefined(obj)&&sceneW.entity.remove(obj)}),_debugOutlinesIds.length=0,getAllInCell(x,z).forEach(actor=>{const outline=createOutline(actor,color,.1);sceneW.entity.add(outline),_debugOutlines.push(outline),_debugOutlinesIds.push(outline.id)})},updateActorCell:function(actor){removeFromGrid(actor),addActor.call(this,actor)},getParams:()=>params,update$:update$.asObservable(),serialize:()=>entityToConfigSpatialGrid(result)});return result}export{SpatialGridWrapper};
1
+ import{spatialGridEntityToConfig}from"../Adapters/EntityToConfig.js";import{createOutline,createBoundingBox}from"../Services/SpatialHelper.js";import{SpatialCellWrapper}from"./SpatialCellWrapper.js";import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import RBush from"../../node_modules/rbush/index.js";import{Box3,Vector3}from"three";import{Subject}from"../../node_modules/rxjs/dist/esm5/internal/Subject.js";import{AbstractWrapper}from"../../Abstract/Wrappers/AbstractWrapper.js";import{WrapperType}from"../../Abstract/Constants/WrapperType.js";function SpatialGridWrapper(params){const entity=function({mapWidth:mapWidth,mapHeight:mapHeight,cellSize:cellSize,centerX:centerX,centerZ:centerZ}){const startX=centerX-Math.floor(mapWidth/cellSize/2)*cellSize,startZ=centerZ-Math.floor(mapHeight/cellSize/2)*cellSize,grid=new RBush;for(let x=0;x<mapWidth;x+=cellSize)for(let z=0;z<mapHeight;z+=cellSize){const cellW=SpatialCellWrapper({minX:startX+x,minZ:startZ+z,maxX:startX+x+cellSize,maxZ:startZ+z+cellSize,x:x,z:z});grid.insert(cellW)}return grid}(params);let _debugOutlines=[];const _debugOutlinesIds=[],update$=new Subject,wrapper=AbstractWrapper(entity,WrapperType.SpatialGrid,params);function getBoundingBox(mesh){const box=new Box3;return box.setFromObject(mesh),box}function addActor(actor){isNotDefined(actor.spatial.getGrid())&&function(actor,gridW){actor.spatial.setGrid(gridW)}(actor,this);const boundingBox=getBoundingBox(actor.model3d.getRawModel3d()),min=boundingBox.min,max=boundingBox.max,cells=entity.search({minX:min.x,minY:min.z,maxX:max.x,maxY:max.z});for(const cell of cells)isNotDefined(cell.findObject(actor.id))&&(cell.addObject(actor),update$.next(cell));actor.spatial.setSpatialCells(cells)}const getAllCells=()=>entity.all();function getAllInCell(x,z){const cells=entity.search({minX:x,minY:z,maxX:x,maxY:z});return 1===cells.length?cells[0].getObjects():cells.length>1?cells.flatMap(cell=>cell.getObjects()):[]}function removeFromGrid(actor){const cells=actor.spatial.getSpatialCells();for(const cell of cells)cell.removeObject(actor),update$.next(cell);actor.spatial.resetSpatialCells()}const findCellsForBox=({minX:minX,minZ:minZ,maxX:maxX,maxZ:maxZ})=>entity.search({minX:minX,minY:minZ,maxX:maxX,maxY:maxZ}),destroySub$=wrapper.destroy$.subscribe(()=>{_debugOutlines.length=0,_debugOutlinesIds.length=0,destroySub$.unsubscribe(),update$.complete(),getAllCells().forEach(cell=>{cell.destroy$.next()}),entity.clear()}),_debugVisualizeCellsBoxList=[],result=Object.assign(wrapper,{entity:entity,addActor:addActor,getAllCells:getAllCells,getAllInCell:getAllInCell,getAllInCellByCellId:function(cellId){const{x:x,z:z}=(cellId=>{const[x,z]=cellId.split("_").slice(-2).map(Number);return new Vector3(x,0,z)})(cellId);return getAllInCell(x,z)},findCellsForPoint:(x,z)=>entity.search({minX:x,minY:z,maxX:x,maxY:z}),findCellsForBox:findCellsForBox,findCellsByActorBox:function(actor){const actorBox=getBoundingBox(actor.model3d.getRawModel3d());return findCellsForBox({minX:actorBox.min.x,minZ:actorBox.min.z,maxX:actorBox.max.x,maxZ:actorBox.max.z})},findCellById:function(id){return entity.all().filter(cell=>cell.id===id)[0]},removeFromGrid:removeFromGrid,clearGrid:function(){throw new Error("SpatialGrid clearGrid not implemented, just a placeholder: test and fix before usage")},_debugVisualizeCells:function(sceneW,color="#00ff00",wireframe=!0,height=.1){entity.all().forEach(cell=>{const box=createBoundingBox(cell.minX,cell.minY,cell.maxX,cell.maxY,color,wireframe,height);sceneW.entity.add(box),_debugVisualizeCellsBoxList.push(box)})},_removeDebugVisualizeCells:function(sceneW){_debugVisualizeCellsBoxList.forEach(box=>{sceneW.entity.remove(box),box.geometry.dispose()}),_debugVisualizeCellsBoxList.length=0},_debugHighlightObjects:function(sceneW,x,z,color="#0000ff"){_debugOutlines.forEach(outline=>{sceneW.entity.remove(outline)}),_debugOutlines=[],_debugOutlinesIds.forEach(id=>{const obj=sceneW.entity.getObjectById(id);isDefined(obj)&&sceneW.entity.remove(obj)}),_debugOutlinesIds.length=0,getAllInCell(x,z).forEach(actor=>{const outline=createOutline(actor,color,.1);sceneW.entity.add(outline),_debugOutlines.push(outline),_debugOutlinesIds.push(outline.id)})},updateActorCell:function(actor){removeFromGrid(actor),addActor.call(this,actor)},getParams:()=>params,update$:update$.asObservable(),serialize:()=>spatialGridEntityToConfig(result)});return result}export{SpatialGridWrapper};
2
2
  //# sourceMappingURL=SpatialGridWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpatialGridWrapper.js","sources":["../../../src/Spatial/Wrappers/SpatialGridWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport type { TActor } from '@Anarchy/Engine/Actor';\nimport type { TSceneWrapper } from '@Anarchy/Engine/Scene';\nimport { entityToConfigSpatialGrid } from '@Anarchy/Engine/Spatial/Adapters/EntityToConfig';\nimport type { TSpatialCellId, TSpatialCellParams, TSpatialCellWrapper, TSpatialGrid, TSpatialGridConfig, TSpatialGridParams, TSpatialGridWrapper } from '@Anarchy/Engine/Spatial/Models';\nimport { createBoundingBox, createOutline } from '@Anarchy/Engine/Spatial/Services/SpatialHelper';\nimport { SpatialCellWrapper } from '@Anarchy/Engine/Spatial/Wrappers/SpatialCellWrapper';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport RBush from 'rbush';\nimport type { Subscription } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport type { ColorRepresentation, Group, Mesh, Object3D } from 'three';\nimport { Box3, Vector3 } from 'three';\nimport type { Line2 } from 'three/examples/jsm/lines/Line2';\n\nexport function SpatialGridWrapper(params: TSpatialGridParams): TSpatialGridWrapper {\n const entity: TSpatialGrid = createEntity(params);\n let _debugOutlines: Array<Line2> = [];\n const _debugOutlinesIds: Array<number> = [];\n const update$: Subject<TSpatialCellWrapper> = new Subject<TSpatialCellWrapper>();\n\n function createEntity({ mapWidth, mapHeight, cellSize, centerX, centerZ }: TSpatialGridParams): TSpatialGrid {\n const startX: number = centerX - Math.floor(mapWidth / cellSize / 2) * cellSize;\n const startZ: number = centerZ - Math.floor(mapHeight / cellSize / 2) * cellSize;\n\n const grid: TSpatialGrid = new RBush();\n\n // eslint-disable-next-line functional/no-loop-statements\n for (let x: number = 0; x < mapWidth; x += cellSize) {\n // eslint-disable-next-line functional/no-loop-statements\n for (let z: number = 0; z < mapHeight; z += cellSize) {\n const cell: TSpatialCellParams = { minX: startX + x, minZ: startZ + z, maxX: startX + x + cellSize, maxZ: startZ + z + cellSize, x, z };\n const cellW: TSpatialCellWrapper = SpatialCellWrapper(cell);\n grid.insert(cellW);\n }\n }\n\n return grid;\n }\n\n const wrapper: TAbstractWrapper<TSpatialGrid> = AbstractWrapper(entity, WrapperType.SpatialGrid, params);\n\n function getBoundingBox(mesh: Mesh | Group | Object3D): Box3 {\n const box: Box3 = new Box3();\n box.setFromObject(mesh);\n return box;\n }\n\n function registerActorToGrid(actor: TActor, gridW: TSpatialGridWrapper): void {\n actor.spatial.setGrid(gridW);\n }\n\n function addActor(this: TSpatialGridWrapper, actor: TActor): void | never {\n if (isNotDefined(actor.spatial.getGrid())) registerActorToGrid(actor, this);\n\n const boundingBox: Box3 = getBoundingBox(actor.model3d.getRawModel3d());\n const min: Vector3 = boundingBox.min;\n const max: Vector3 = boundingBox.max;\n\n const cells: ReadonlyArray<TSpatialCellWrapper> = entity.search({ minX: min.x, minY: min.z, maxX: max.x, maxY: max.z });\n // eslint-disable-next-line functional/no-loop-statements\n for (const cell of cells) {\n if (isNotDefined(cell.findObject(actor.id))) {\n cell.addObject(actor);\n update$.next(cell);\n }\n }\n actor.spatial.setSpatialCells(cells);\n }\n\n const getAllCells = (): ReadonlyArray<TSpatialCellWrapper> => entity.all();\n\n function getAllInCell(x: number, z: number): ReadonlyArray<TActor> {\n const cells: ReadonlyArray<TSpatialCellWrapper> = entity.search({ minX: x, minY: z, maxX: x, maxY: z });\n if (cells.length === 1) return cells[0].getObjects();\n if (cells.length > 1) return cells.flatMap((cell: TSpatialCellWrapper): ReadonlyArray<TActor> => cell.getObjects());\n return [];\n }\n\n const getCoordsFromGridId = (cellId: TSpatialCellId): Vector3 => {\n const [x, z] = cellId.split('_').slice(-2).map(Number);\n return new Vector3(x, 0, z);\n };\n\n function getAllInCellByCellId(cellId: TSpatialCellId): ReadonlyArray<TActor> {\n // const cells: ReadonlyArray<TSpatialCellWrapper> = entity.all().filter((cell) => cell.id === cellId);\n const { x, z } = getCoordsFromGridId(cellId);\n return getAllInCell(x, z);\n }\n\n function removeFromGrid(actor: TActor): void | never {\n const cells: ReadonlyArray<TSpatialCellWrapper> = actor.spatial.getSpatialCells();\n\n // eslint-disable-next-line functional/no-loop-statements\n for (const cell of cells) {\n cell.removeObject(actor);\n update$.next(cell);\n }\n\n actor.spatial.resetSpatialCells();\n }\n\n function clearGrid(): void {\n // TODO should be tested before usage\n throw new Error('SpatialGrid clearGrid not implemented, just a placeholder: test and fix before usage');\n // entity.clear();\n // getAllCells().forEach((cell: TSpatialCellWrapper): void => {\n // // eslint-disable-next-line functional/immutable-data\n // cell.version++;\n // update$.next(cell);\n // });\n }\n\n function updateActorCell(this: TSpatialGridWrapper, actor: TActor): void {\n removeFromGrid(actor);\n addActor.call(this, actor);\n }\n\n const findCellsForPoint = (x: number, z: number): ReadonlyArray<TSpatialCellWrapper> => entity.search({ minX: x, minY: z, maxX: x, maxY: z });\n\n const findCellsForBox = ({\n minX,\n minZ,\n maxX,\n maxZ\n }: Readonly<{\n minX: number;\n minZ: number;\n maxX: number;\n maxZ: number;\n }>): ReadonlyArray<TSpatialCellWrapper> => entity.search({ minX, minY: minZ, maxX, maxY: maxZ });\n\n // TODO test this function\n function findCellsByActorBox(actor: TActor): ReadonlyArray<TSpatialCellWrapper> {\n const actorBox: Box3 = getBoundingBox(actor.model3d.getRawModel3d());\n return findCellsForBox({ minX: actorBox.min.x, minZ: actorBox.min.z, maxX: actorBox.max.x, maxZ: actorBox.max.z });\n }\n\n function findCellById(id: TSpatialCellId): TSpatialCellWrapper | undefined {\n return entity.all().filter((cell: TSpatialCellWrapper): boolean => cell.id === id)[0];\n }\n\n const destroySub$: Subscription = wrapper.destroy$.subscribe((): void => {\n // eslint-disable-next-line functional/immutable-data\n _debugOutlines.length = 0;\n // eslint-disable-next-line functional/immutable-data\n _debugOutlinesIds.length = 0;\n destroySub$.unsubscribe();\n\n update$.complete();\n getAllCells().forEach((cell: TSpatialCellWrapper): void => void cell.destroy$.next());\n entity.clear();\n });\n\n const _debugVisualizeCellsBoxList: Array<Mesh> = [];\n\n // this visualization is for debugging purposes only\n function _debugVisualizeCells(sceneW: TSceneWrapper, color: ColorRepresentation = '#00ff00', wireframe: boolean = true, height: number = 0.1): void {\n entity.all().forEach((cell: TSpatialCellWrapper): void => {\n const box: Mesh = createBoundingBox(cell.minX, cell.minY, cell.maxX, cell.maxY, color, wireframe, height);\n sceneW.entity.add(box);\n // eslint-disable-next-line functional/immutable-data\n _debugVisualizeCellsBoxList.push(box);\n });\n }\n\n function _removeDebugVisualizeCells(sceneW: TSceneWrapper): void {\n _debugVisualizeCellsBoxList.forEach((box: Mesh): void => {\n sceneW.entity.remove(box);\n box.geometry.dispose();\n });\n // eslint-disable-next-line functional/immutable-data\n _debugVisualizeCellsBoxList.length = 0;\n }\n\n // this highlight is for debugging purposes only (only adds outlines to scene, might not remove them afterward!!!).\n // Also doesn't represent actor's rotation, so the outline might not be accurate for rotated objects\n function _debugHighlightObjects(sceneW: TSceneWrapper, x: number, z: number, color: ColorRepresentation = '#0000ff'): void {\n _debugOutlines.forEach((outline: Line2): void => void sceneW.entity.remove(outline));\n _debugOutlines = [];\n _debugOutlinesIds.forEach((id: number): void => {\n const obj: Object3D | undefined = sceneW.entity.getObjectById(id);\n if (isDefined(obj)) sceneW.entity.remove(obj);\n });\n // eslint-disable-next-line functional/immutable-data\n _debugOutlinesIds.length = 0;\n\n const actorsList: ReadonlyArray<TActor> = getAllInCell(x, z);\n\n actorsList.forEach((actor: TActor): void => {\n const outline: Line2 = createOutline(actor, color, 0.1);\n sceneW.entity.add(outline);\n // eslint-disable-next-line functional/immutable-data\n _debugOutlines.push(outline);\n // eslint-disable-next-line functional/immutable-data\n _debugOutlinesIds.push(outline.id);\n });\n }\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(wrapper, {\n entity,\n addActor,\n getAllCells,\n getAllInCell,\n getAllInCellByCellId,\n findCellsForPoint,\n findCellsForBox,\n findCellsByActorBox,\n findCellById,\n removeFromGrid,\n clearGrid,\n _debugVisualizeCells,\n _removeDebugVisualizeCells,\n _debugHighlightObjects,\n updateActorCell,\n getParams: (): TSpatialGridParams => params,\n update$: update$.asObservable(),\n serialize: (): TSpatialGridConfig => entityToConfigSpatialGrid(result)\n });\n\n return result;\n}\n"],"names":["SpatialGridWrapper","params","entity","mapWidth","mapHeight","cellSize","centerX","centerZ","startX","Math","floor","startZ","grid","RBush","x","z","cellW","SpatialCellWrapper","minX","minZ","maxX","maxZ","insert","createEntity","_debugOutlines","_debugOutlinesIds","update$","Subject","wrapper","AbstractWrapper","WrapperType","SpatialGrid","getBoundingBox","mesh","box","Box3","setFromObject","addActor","actor","isNotDefined","spatial","getGrid","gridW","setGrid","registerActorToGrid","this","boundingBox","model3d","getRawModel3d","min","max","cells","search","minY","maxY","cell","findObject","id","addObject","next","setSpatialCells","getAllCells","all","getAllInCell","length","getObjects","flatMap","removeFromGrid","getSpatialCells","removeObject","resetSpatialCells","findCellsForBox","destroySub$","destroy$","subscribe","unsubscribe","complete","forEach","clear","_debugVisualizeCellsBoxList","result","Object","assign","getAllInCellByCellId","cellId","split","slice","map","Number","Vector3","getCoordsFromGridId","findCellsForPoint","findCellsByActorBox","actorBox","findCellById","filter","clearGrid","Error","_debugVisualizeCells","sceneW","color","wireframe","height","createBoundingBox","add","push","_removeDebugVisualizeCells","remove","geometry","dispose","_debugHighlightObjects","outline","obj","getObjectById","isDefined","createOutline","updateActorCell","call","getParams","asObservable","serialize","entityToConfigSpatialGrid"],"mappings":"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"}
1
+ {"version":3,"file":"SpatialGridWrapper.js","sources":["../../../src/Spatial/Wrappers/SpatialGridWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@Anarchy/Engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@Anarchy/Engine/Abstract';\nimport type { TActor } from '@Anarchy/Engine/Actor';\nimport type { TSceneWrapper } from '@Anarchy/Engine/Scene';\nimport { spatialGridEntityToConfig } from '@Anarchy/Engine/Spatial/Adapters/EntityToConfig';\nimport type { TSpatialCellId, TSpatialCellParams, TSpatialCellWrapper, TSpatialGrid, TSpatialGridConfig, TSpatialGridParams, TSpatialGridWrapper } from '@Anarchy/Engine/Spatial/Models';\nimport { createBoundingBox, createOutline } from '@Anarchy/Engine/Spatial/Services/SpatialHelper';\nimport { SpatialCellWrapper } from '@Anarchy/Engine/Spatial/Wrappers/SpatialCellWrapper';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport RBush from 'rbush';\nimport type { Subscription } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport type { ColorRepresentation, Group, Mesh, Object3D } from 'three';\nimport { Box3, Vector3 } from 'three';\nimport type { Line2 } from 'three/examples/jsm/lines/Line2';\n\nexport function SpatialGridWrapper(params: TSpatialGridParams): TSpatialGridWrapper {\n const entity: TSpatialGrid = createEntity(params);\n let _debugOutlines: Array<Line2> = [];\n const _debugOutlinesIds: Array<number> = [];\n const update$: Subject<TSpatialCellWrapper> = new Subject<TSpatialCellWrapper>();\n\n function createEntity({ mapWidth, mapHeight, cellSize, centerX, centerZ }: TSpatialGridParams): TSpatialGrid {\n const startX: number = centerX - Math.floor(mapWidth / cellSize / 2) * cellSize;\n const startZ: number = centerZ - Math.floor(mapHeight / cellSize / 2) * cellSize;\n\n const grid: TSpatialGrid = new RBush();\n\n // eslint-disable-next-line functional/no-loop-statements\n for (let x: number = 0; x < mapWidth; x += cellSize) {\n // eslint-disable-next-line functional/no-loop-statements\n for (let z: number = 0; z < mapHeight; z += cellSize) {\n const cell: TSpatialCellParams = { minX: startX + x, minZ: startZ + z, maxX: startX + x + cellSize, maxZ: startZ + z + cellSize, x, z };\n const cellW: TSpatialCellWrapper = SpatialCellWrapper(cell);\n grid.insert(cellW);\n }\n }\n\n return grid;\n }\n\n const wrapper: TAbstractWrapper<TSpatialGrid> = AbstractWrapper(entity, WrapperType.SpatialGrid, params);\n\n function getBoundingBox(mesh: Mesh | Group | Object3D): Box3 {\n const box: Box3 = new Box3();\n box.setFromObject(mesh);\n return box;\n }\n\n function registerActorToGrid(actor: TActor, gridW: TSpatialGridWrapper): void {\n actor.spatial.setGrid(gridW);\n }\n\n function addActor(this: TSpatialGridWrapper, actor: TActor): void | never {\n if (isNotDefined(actor.spatial.getGrid())) registerActorToGrid(actor, this);\n\n const boundingBox: Box3 = getBoundingBox(actor.model3d.getRawModel3d());\n const min: Vector3 = boundingBox.min;\n const max: Vector3 = boundingBox.max;\n\n const cells: ReadonlyArray<TSpatialCellWrapper> = entity.search({ minX: min.x, minY: min.z, maxX: max.x, maxY: max.z });\n // eslint-disable-next-line functional/no-loop-statements\n for (const cell of cells) {\n if (isNotDefined(cell.findObject(actor.id))) {\n cell.addObject(actor);\n update$.next(cell);\n }\n }\n actor.spatial.setSpatialCells(cells);\n }\n\n const getAllCells = (): ReadonlyArray<TSpatialCellWrapper> => entity.all();\n\n function getAllInCell(x: number, z: number): ReadonlyArray<TActor> {\n const cells: ReadonlyArray<TSpatialCellWrapper> = entity.search({ minX: x, minY: z, maxX: x, maxY: z });\n if (cells.length === 1) return cells[0].getObjects();\n if (cells.length > 1) return cells.flatMap((cell: TSpatialCellWrapper): ReadonlyArray<TActor> => cell.getObjects());\n return [];\n }\n\n const getCoordsFromGridId = (cellId: TSpatialCellId): Vector3 => {\n const [x, z] = cellId.split('_').slice(-2).map(Number);\n return new Vector3(x, 0, z);\n };\n\n function getAllInCellByCellId(cellId: TSpatialCellId): ReadonlyArray<TActor> {\n // const cells: ReadonlyArray<TSpatialCellWrapper> = entity.all().filter((cell) => cell.id === cellId);\n const { x, z } = getCoordsFromGridId(cellId);\n return getAllInCell(x, z);\n }\n\n function removeFromGrid(actor: TActor): void | never {\n const cells: ReadonlyArray<TSpatialCellWrapper> = actor.spatial.getSpatialCells();\n\n // eslint-disable-next-line functional/no-loop-statements\n for (const cell of cells) {\n cell.removeObject(actor);\n update$.next(cell);\n }\n\n actor.spatial.resetSpatialCells();\n }\n\n function clearGrid(): void {\n // TODO should be tested before usage\n throw new Error('SpatialGrid clearGrid not implemented, just a placeholder: test and fix before usage');\n // entity.clear();\n // getAllCells().forEach((cell: TSpatialCellWrapper): void => {\n // // eslint-disable-next-line functional/immutable-data\n // cell.version++;\n // update$.next(cell);\n // });\n }\n\n function updateActorCell(this: TSpatialGridWrapper, actor: TActor): void {\n removeFromGrid(actor);\n addActor.call(this, actor);\n }\n\n const findCellsForPoint = (x: number, z: number): ReadonlyArray<TSpatialCellWrapper> => entity.search({ minX: x, minY: z, maxX: x, maxY: z });\n\n const findCellsForBox = ({\n minX,\n minZ,\n maxX,\n maxZ\n }: Readonly<{\n minX: number;\n minZ: number;\n maxX: number;\n maxZ: number;\n }>): ReadonlyArray<TSpatialCellWrapper> => entity.search({ minX, minY: minZ, maxX, maxY: maxZ });\n\n // TODO test this function\n function findCellsByActorBox(actor: TActor): ReadonlyArray<TSpatialCellWrapper> {\n const actorBox: Box3 = getBoundingBox(actor.model3d.getRawModel3d());\n return findCellsForBox({ minX: actorBox.min.x, minZ: actorBox.min.z, maxX: actorBox.max.x, maxZ: actorBox.max.z });\n }\n\n function findCellById(id: TSpatialCellId): TSpatialCellWrapper | undefined {\n return entity.all().filter((cell: TSpatialCellWrapper): boolean => cell.id === id)[0];\n }\n\n const destroySub$: Subscription = wrapper.destroy$.subscribe((): void => {\n // eslint-disable-next-line functional/immutable-data\n _debugOutlines.length = 0;\n // eslint-disable-next-line functional/immutable-data\n _debugOutlinesIds.length = 0;\n destroySub$.unsubscribe();\n\n update$.complete();\n getAllCells().forEach((cell: TSpatialCellWrapper): void => void cell.destroy$.next());\n entity.clear();\n });\n\n const _debugVisualizeCellsBoxList: Array<Mesh> = [];\n\n // this visualization is for debugging purposes only\n function _debugVisualizeCells(sceneW: TSceneWrapper, color: ColorRepresentation = '#00ff00', wireframe: boolean = true, height: number = 0.1): void {\n entity.all().forEach((cell: TSpatialCellWrapper): void => {\n const box: Mesh = createBoundingBox(cell.minX, cell.minY, cell.maxX, cell.maxY, color, wireframe, height);\n sceneW.entity.add(box);\n // eslint-disable-next-line functional/immutable-data\n _debugVisualizeCellsBoxList.push(box);\n });\n }\n\n function _removeDebugVisualizeCells(sceneW: TSceneWrapper): void {\n _debugVisualizeCellsBoxList.forEach((box: Mesh): void => {\n sceneW.entity.remove(box);\n box.geometry.dispose();\n });\n // eslint-disable-next-line functional/immutable-data\n _debugVisualizeCellsBoxList.length = 0;\n }\n\n // this highlight is for debugging purposes only (only adds outlines to scene, might not remove them afterward!!!).\n // Also doesn't represent actor's rotation, so the outline might not be accurate for rotated objects\n function _debugHighlightObjects(sceneW: TSceneWrapper, x: number, z: number, color: ColorRepresentation = '#0000ff'): void {\n _debugOutlines.forEach((outline: Line2): void => void sceneW.entity.remove(outline));\n _debugOutlines = [];\n _debugOutlinesIds.forEach((id: number): void => {\n const obj: Object3D | undefined = sceneW.entity.getObjectById(id);\n if (isDefined(obj)) sceneW.entity.remove(obj);\n });\n // eslint-disable-next-line functional/immutable-data\n _debugOutlinesIds.length = 0;\n\n const actorsList: ReadonlyArray<TActor> = getAllInCell(x, z);\n\n actorsList.forEach((actor: TActor): void => {\n const outline: Line2 = createOutline(actor, color, 0.1);\n sceneW.entity.add(outline);\n // eslint-disable-next-line functional/immutable-data\n _debugOutlines.push(outline);\n // eslint-disable-next-line functional/immutable-data\n _debugOutlinesIds.push(outline.id);\n });\n }\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(wrapper, {\n entity,\n addActor,\n getAllCells,\n getAllInCell,\n getAllInCellByCellId,\n findCellsForPoint,\n findCellsForBox,\n findCellsByActorBox,\n findCellById,\n removeFromGrid,\n clearGrid,\n _debugVisualizeCells,\n _removeDebugVisualizeCells,\n _debugHighlightObjects,\n updateActorCell,\n getParams: (): TSpatialGridParams => params,\n update$: update$.asObservable(),\n serialize: (): TSpatialGridConfig => spatialGridEntityToConfig(result)\n });\n\n return result;\n}\n"],"names":["SpatialGridWrapper","params","entity","mapWidth","mapHeight","cellSize","centerX","centerZ","startX","Math","floor","startZ","grid","RBush","x","z","cellW","SpatialCellWrapper","minX","minZ","maxX","maxZ","insert","createEntity","_debugOutlines","_debugOutlinesIds","update$","Subject","wrapper","AbstractWrapper","WrapperType","SpatialGrid","getBoundingBox","mesh","box","Box3","setFromObject","addActor","actor","isNotDefined","spatial","getGrid","gridW","setGrid","registerActorToGrid","this","boundingBox","model3d","getRawModel3d","min","max","cells","search","minY","maxY","cell","findObject","id","addObject","next","setSpatialCells","getAllCells","all","getAllInCell","length","getObjects","flatMap","removeFromGrid","getSpatialCells","removeObject","resetSpatialCells","findCellsForBox","destroySub$","destroy$","subscribe","unsubscribe","complete","forEach","clear","_debugVisualizeCellsBoxList","result","Object","assign","getAllInCellByCellId","cellId","split","slice","map","Number","Vector3","getCoordsFromGridId","findCellsForPoint","findCellsByActorBox","actorBox","findCellById","filter","clearGrid","Error","_debugVisualizeCells","sceneW","color","wireframe","height","createBoundingBox","add","push","_removeDebugVisualizeCells","remove","geometry","dispose","_debugHighlightObjects","outline","obj","getObjectById","isDefined","createOutline","updateActorCell","call","getParams","asObservable","serialize","spatialGridEntityToConfig"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import { TTextConfig, TTextParams, TTextServiceDependencies } from '../Models';
2
- export declare function configToParams(config: TTextConfig, dependencies: TTextServiceDependencies): TTextParams;
2
+ export declare function textConfigToParams(config: TTextConfig, dependencies: TTextServiceDependencies): TTextParams;
@@ -1,2 +1,2 @@
1
- import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Vector2}from"three";import{configToParams as configToParams$1}from"../../Kinematic/Adapters/ConfigToParams.js";import{configToParamsObject3d}from"../../ThreeLib/Utils/Object3dUtils.js";function configToParams(config,dependencies){const{position:position,center:center,rotation:rotation,scale:scale,layers:layers,physicsBodyName:physicsBodyName,kinematic:kinematic,...rest}=config;let result={...rest,physicsBody:isDefined(physicsBodyName)?dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName):void 0,...configToParamsObject3d({position:position,rotation:rotation,scale:scale,layers:layers}),kinematic:kinematic?configToParams$1(kinematic):void 0};return isDefined(center)&&(result={...result,center:new Vector2(center.x,center.y)}),result}export{configToParams};
1
+ import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Vector2}from"three";import{kinematicConfigToParams}from"../../Kinematic/Adapters/ConfigToParams.js";import{object3dConfigToParams}from"../../ThreeLib/Utils/Object3dUtils.js";function textConfigToParams(config,dependencies){const{position:position,center:center,rotation:rotation,scale:scale,layers:layers,physicsBodyName:physicsBodyName,kinematic:kinematic,...rest}=config;let result={...rest,physicsBody:isDefined(physicsBodyName)?dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName):void 0,...object3dConfigToParams({position:position,rotation:rotation,scale:scale,layers:layers}),kinematic:kinematic?kinematicConfigToParams(kinematic):void 0};return isDefined(center)&&(result={...result,center:new Vector2(center.x,center.y)}),result}export{textConfigToParams};
2
2
  //# sourceMappingURL=ConfigToParams.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Text/Adapters/ConfigToParams.ts"],"sourcesContent":["import { kinematicConfigToParams } from '@Anarchy/Engine/Kinematic';\nimport type { TTextConfig, TTextParams, TTextServiceDependencies } from '@Anarchy/Engine/Text/Models';\nimport { configToParamsObject3d } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport { Vector2 } from 'three';\n\nexport function configToParams(config: TTextConfig, dependencies: TTextServiceDependencies): TTextParams {\n const { position, center, rotation, scale, layers, physicsBodyName, kinematic, ...rest } = config;\n\n let result: TTextParams = {\n ...rest,\n physicsBody: isDefined(physicsBodyName) ? dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName) : undefined,\n ...configToParamsObject3d({ position, rotation, scale, layers }),\n kinematic: kinematic ? kinematicConfigToParams(kinematic) : undefined\n };\n\n if (isDefined(center)) result = { ...result, center: new Vector2(center.x, center.y) };\n\n return result;\n}\n"],"names":["configToParams","config","dependencies","position","center","rotation","scale","layers","physicsBodyName","kinematic","rest","result","physicsBody","isDefined","physicsBodyService","getRegistry","getByName","configToParamsObject3d","kinematicConfigToParams","Vector2","x","y"],"mappings":"6QAMO,SAASA,eAAeC,OAAqBC,cAClD,MAAMC,SAAEA,SAAAC,OAAUA,OAAAC,SAAQA,SAAAC,MAAUA,MAAAC,OAAOA,uBAAQC,gBAAAC,UAAiBA,aAAcC,MAAST,OAE3F,IAAIU,OAAsB,IACrBD,KACHE,YAAaC,UAAUL,iBAAmBN,aAAaY,mBAAmBC,cAAcC,UAAUR,sBAAmB,KAClHS,uBAAuB,CAAEd,kBAAUE,kBAAUC,YAAOC,gBACvDE,UAAWA,UAAYS,iBAAwBT,gBAAa,GAK9D,OAFII,UAAUT,UAASO,OAAS,IAAKA,OAAQP,OAAQ,IAAIe,QAAQf,OAAOgB,EAAGhB,OAAOiB,KAE3EV,MACT"}
1
+ {"version":3,"file":"ConfigToParams.js","sources":["../../../src/Text/Adapters/ConfigToParams.ts"],"sourcesContent":["import { kinematicConfigToParams } from '@Anarchy/Engine/Kinematic';\nimport type { TTextConfig, TTextParams, TTextServiceDependencies } from '@Anarchy/Engine/Text/Models';\nimport { object3dConfigToParams } from '@Anarchy/Engine/ThreeLib';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport { Vector2 } from 'three';\n\nexport function textConfigToParams(config: TTextConfig, dependencies: TTextServiceDependencies): TTextParams {\n const { position, center, rotation, scale, layers, physicsBodyName, kinematic, ...rest } = config;\n\n let result: TTextParams = {\n ...rest,\n physicsBody: isDefined(physicsBodyName) ? dependencies.physicsBodyService.getRegistry().getByName(physicsBodyName) : undefined,\n ...object3dConfigToParams({ position, rotation, scale, layers }),\n kinematic: kinematic ? kinematicConfigToParams(kinematic) : undefined\n };\n\n if (isDefined(center)) result = { ...result, center: new Vector2(center.x, center.y) };\n\n return result;\n}\n"],"names":["textConfigToParams","config","dependencies","position","center","rotation","scale","layers","physicsBodyName","kinematic","rest","result","physicsBody","isDefined","physicsBodyService","getRegistry","getByName","object3dConfigToParams","kinematicConfigToParams","Vector2","x","y"],"mappings":"kQAMO,SAASA,mBAAmBC,OAAqBC,cACtD,MAAMC,SAAEA,SAAAC,OAAUA,OAAAC,SAAQA,SAAAC,MAAUA,MAAAC,OAAOA,uBAAQC,gBAAAC,UAAiBA,aAAcC,MAAST,OAE3F,IAAIU,OAAsB,IACrBD,KACHE,YAAaC,UAAUL,iBAAmBN,aAAaY,mBAAmBC,cAAcC,UAAUR,sBAAmB,KAClHS,uBAAuB,CAAEd,kBAAUE,kBAAUC,YAAOC,gBACvDE,UAAWA,UAAYS,wBAAwBT,gBAAa,GAK9D,OAFII,UAAUT,UAASO,OAAS,IAAKA,OAAQP,OAAQ,IAAIe,QAAQf,OAAOgB,EAAGhB,OAAOiB,KAE3EV,MACT"}
@@ -1,2 +1,2 @@
1
1
  import { TTextAnyWrapper, TTextConfig } from '../Models';
2
- export declare function textToConfig(entity: TTextAnyWrapper): TTextConfig;
2
+ export declare function textEntityToConfig(entity: TTextAnyWrapper): TTextConfig;
@@ -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{kebabToCamel}from"../../packages/anarchy-shared/src/Utils/StringUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";import{vector2ToXy}from"../../Utils/TransformUtils.js";function textToConfig(entity){const{drive:drive}=entity,center=entity.entity.center;return filterOutEmptyFields({text:entity.getText(),type:entity.type,cssProps:extractInlineStyles(entity.getElement())??entity.getPropsAsCss(),elementType:entity.getElement()?.tagName,center:center?vector2ToXy(center):void 0,receiveShadow:entity.getReceiveShadow(),frustumCulled:entity.getFrustumCulled(),renderOrder:entity.getRenderOrder(),visible:entity.getVisible(),castShadow:entity.getCastShadow(),...extractSerializableRegistrableFields(entity),...drive.serialize()})}function extractInlineStyles(element){if(isNotDefined(element))return;const result={};for(let i=0;i<element.style.length;i++){const prop=element.style[i];result[kebabToCamel(prop)]=element.style.getPropertyValue(prop)}return 0!==Object.keys(result).length?filterOutEmptyFields(result):void 0}export{textToConfig};
1
+ import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{filterOutEmptyFields}from"../../packages/anarchy-shared/src/Utils/ObjectUtils.js";import{kebabToCamel}from"../../packages/anarchy-shared/src/Utils/StringUtils.js";import{extractSerializableRegistrableFields}from"../../Mixins/Generics/ExtractSerializableRegistrableFields.js";import{vector2ToXy}from"../../Utils/TransformUtils.js";function textEntityToConfig(entity){const{drive:drive}=entity,center=entity.entity.center;return filterOutEmptyFields({text:entity.getText(),type:entity.type,cssProps:extractInlineStyles(entity.getElement())??entity.getPropsAsCss(),elementType:entity.getElement()?.tagName,center:center?vector2ToXy(center):void 0,receiveShadow:entity.getReceiveShadow(),frustumCulled:entity.getFrustumCulled(),renderOrder:entity.getRenderOrder(),visible:entity.getVisible(),castShadow:entity.getCastShadow(),...extractSerializableRegistrableFields(entity),...drive.serialize()})}function extractInlineStyles(element){if(isNotDefined(element))return;const result={};for(let i=0;i<element.style.length;i++){const prop=element.style[i];result[kebabToCamel(prop)]=element.style.getPropertyValue(prop)}return 0!==Object.keys(result).length?filterOutEmptyFields(result):void 0}export{textEntityToConfig};
2
2
  //# sourceMappingURL=EntityToConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Text/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TText2dWrapper, TText3dTextureWrapper, TTextAnyWrapper, TTextConfig, TTextCssProps } from '@Anarchy/Engine/Text/Models';\nimport { vector2ToXy } from '@Anarchy/Engine/Utils';\nimport { filterOutEmptyFields, isNotDefined, kebabToCamel } from '@Anarchy/Shared/Utils';\nimport type { Vector2 } from 'three';\n\nexport function textToConfig(entity: TTextAnyWrapper): TTextConfig {\n const { drive } = entity;\n\n const center: Vector2 | undefined = (entity as TText2dWrapper).entity.center;\n\n return filterOutEmptyFields({\n text: entity.getText(),\n type: entity.type,\n cssProps: extractInlineStyles((entity as TText2dWrapper).getElement()) ?? (entity as TText3dTextureWrapper).getPropsAsCss(),\n elementType: (entity as TText2dWrapper).getElement()?.tagName,\n center: center ? vector2ToXy(center) : undefined,\n receiveShadow: entity.getReceiveShadow(),\n frustumCulled: entity.getFrustumCulled(),\n renderOrder: entity.getRenderOrder(),\n visible: entity.getVisible(),\n castShadow: entity.getCastShadow(),\n ...extractSerializableRegistrableFields(entity),\n ...drive.serialize()\n });\n}\n\nfunction extractInlineStyles(element: HTMLElement | undefined): TTextCssProps | undefined {\n if (isNotDefined(element)) return undefined;\n\n const result: Record<string, string> = {};\n // eslint-disable-next-line functional/no-loop-statements\n for (let i: number = 0; i < element.style.length; i++) {\n const prop: string = element.style[i];\n const propName: string = kebabToCamel(prop);\n // eslint-disable-next-line functional/immutable-data\n result[propName] = element.style.getPropertyValue(prop);\n }\n if (Object.keys(result).length === 0) return undefined;\n return filterOutEmptyFields(result);\n}\n"],"names":["textToConfig","entity","drive","center","filterOutEmptyFields","text","getText","type","cssProps","extractInlineStyles","getElement","getPropsAsCss","elementType","tagName","vector2ToXy","receiveShadow","getReceiveShadow","frustumCulled","getFrustumCulled","renderOrder","getRenderOrder","visible","getVisible","castShadow","getCastShadow","extractSerializableRegistrableFields","serialize","element","isNotDefined","result","i","style","length","prop","kebabToCamel","getPropertyValue","Object","keys"],"mappings":"iaAMO,SAASA,aAAaC,QAC3B,MAAMC,MAAEA,OAAUD,OAEZE,OAA+BF,OAA0BA,OAAOE,OAEtE,OAAOC,qBAAqB,CAC1BC,KAAMJ,OAAOK,UACbC,KAAMN,OAAOM,KACbC,SAAUC,oBAAqBR,OAA0BS,eAAkBT,OAAiCU,gBAC5GC,YAAcX,OAA0BS,cAAcG,QACtDV,OAAQA,OAASW,YAAYX,aAAU,EACvCY,cAAed,OAAOe,mBACtBC,cAAehB,OAAOiB,mBACtBC,YAAalB,OAAOmB,iBACpBC,QAASpB,OAAOqB,aAChBC,WAAYtB,OAAOuB,mBAChBC,qCAAqCxB,WACrCC,MAAMwB,aAEb,CAEA,SAASjB,oBAAoBkB,SAC3B,GAAIC,aAAaD,SAAU,OAE3B,MAAME,OAAiC,CAAA,EAEvC,IAAA,IAASC,EAAY,EAAGA,EAAIH,QAAQI,MAAMC,OAAQF,IAAK,CACrD,MAAMG,KAAeN,QAAQI,MAAMD,GAGnCD,OAFyBK,aAAaD,OAEnBN,QAAQI,MAAMI,iBAAiBF,KACpD,CACA,OAAmC,IAA/BG,OAAOC,KAAKR,QAAQG,OACjB5B,qBAAqByB,aAD5B,CAEF"}
1
+ {"version":3,"file":"EntityToConfig.js","sources":["../../../src/Text/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@Anarchy/Engine/Mixins';\nimport type { TText2dWrapper, TText3dTextureWrapper, TTextAnyWrapper, TTextConfig, TTextCssProps } from '@Anarchy/Engine/Text/Models';\nimport { vector2ToXy } from '@Anarchy/Engine/Utils';\nimport { filterOutEmptyFields, isNotDefined, kebabToCamel } from '@Anarchy/Shared/Utils';\nimport type { Vector2 } from 'three';\n\nexport function textEntityToConfig(entity: TTextAnyWrapper): TTextConfig {\n const { drive } = entity;\n\n const center: Vector2 | undefined = (entity as TText2dWrapper).entity.center;\n\n return filterOutEmptyFields({\n text: entity.getText(),\n type: entity.type,\n cssProps: extractInlineStyles((entity as TText2dWrapper).getElement()) ?? (entity as TText3dTextureWrapper).getPropsAsCss(),\n elementType: (entity as TText2dWrapper).getElement()?.tagName,\n center: center ? vector2ToXy(center) : undefined,\n receiveShadow: entity.getReceiveShadow(),\n frustumCulled: entity.getFrustumCulled(),\n renderOrder: entity.getRenderOrder(),\n visible: entity.getVisible(),\n castShadow: entity.getCastShadow(),\n ...extractSerializableRegistrableFields(entity),\n ...drive.serialize()\n });\n}\n\nfunction extractInlineStyles(element: HTMLElement | undefined): TTextCssProps | undefined {\n if (isNotDefined(element)) return undefined;\n\n const result: Record<string, string> = {};\n // eslint-disable-next-line functional/no-loop-statements\n for (let i: number = 0; i < element.style.length; i++) {\n const prop: string = element.style[i];\n const propName: string = kebabToCamel(prop);\n // eslint-disable-next-line functional/immutable-data\n result[propName] = element.style.getPropertyValue(prop);\n }\n if (Object.keys(result).length === 0) return undefined;\n return filterOutEmptyFields(result);\n}\n"],"names":["textEntityToConfig","entity","drive","center","filterOutEmptyFields","text","getText","type","cssProps","extractInlineStyles","getElement","getPropsAsCss","elementType","tagName","vector2ToXy","receiveShadow","getReceiveShadow","frustumCulled","getFrustumCulled","renderOrder","getRenderOrder","visible","getVisible","castShadow","getCastShadow","extractSerializableRegistrableFields","serialize","element","isNotDefined","result","i","style","length","prop","kebabToCamel","getPropertyValue","Object","keys"],"mappings":"iaAMO,SAASA,mBAAmBC,QACjC,MAAMC,MAAEA,OAAUD,OAEZE,OAA+BF,OAA0BA,OAAOE,OAEtE,OAAOC,qBAAqB,CAC1BC,KAAMJ,OAAOK,UACbC,KAAMN,OAAOM,KACbC,SAAUC,oBAAqBR,OAA0BS,eAAkBT,OAAiCU,gBAC5GC,YAAcX,OAA0BS,cAAcG,QACtDV,OAAQA,OAASW,YAAYX,aAAU,EACvCY,cAAed,OAAOe,mBACtBC,cAAehB,OAAOiB,mBACtBC,YAAalB,OAAOmB,iBACpBC,QAASpB,OAAOqB,aAChBC,WAAYtB,OAAOuB,mBAChBC,qCAAqCxB,WACrCC,MAAMwB,aAEb,CAEA,SAASjB,oBAAoBkB,SAC3B,GAAIC,aAAaD,SAAU,OAE3B,MAAME,OAAiC,CAAA,EAEvC,IAAA,IAASC,EAAY,EAAGA,EAAIH,QAAQI,MAAMC,OAAQF,IAAK,CACrD,MAAMG,KAAeN,QAAQI,MAAMD,GAGnCD,OAFyBK,aAAaD,OAEnBN,QAAQI,MAAMI,iBAAiBF,KACpD,CACA,OAAmC,IAA/BG,OAAOC,KAAKR,QAAQG,OACjB5B,qBAAqByB,aAD5B,CAEF"}