@hellpig/anarchy-engine 22.0.2 → 22.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Abstract/Entities/AbstractEntity.js.map +1 -1
- package/dist/Abstract/Factories/AbstractFactory.js.map +1 -1
- package/dist/Abstract/Factories/ReactiveFactory.js.map +1 -1
- package/dist/Abstract/Loaders/AbstractLoader.js.map +1 -1
- package/dist/Abstract/Mixins/WithWrapperIdMixin.js.map +1 -1
- package/dist/Abstract/Models/THtmlElementStyleDeclaration.d.ts +4 -4
- package/dist/Abstract/Registries/AbstractEntityAsyncRegistry.js.map +1 -1
- package/dist/Abstract/Registries/AbstractEntityRegistry.js.map +1 -1
- package/dist/Abstract/Registries/AbstractResourceAsyncRegistry.js.map +1 -1
- package/dist/Abstract/Registries/AbstractSimpleRegistry.js.map +1 -1
- package/dist/Abstract/Registries/AbstractWatcherRegistry.js.map +1 -1
- package/dist/Abstract/Registries/Mixin/Registry/WithBaseAccessorsRegistry.js.map +1 -1
- package/dist/Abstract/Registries/Mixin/Registry/WithReactiveRegistry.js.map +1 -1
- package/dist/Abstract/Services/AbstractService.js.map +1 -1
- package/dist/Abstract/Watchers/AbstractWatcher.js.map +1 -1
- package/dist/Abstract/Watchers/AbstractWatcherWithState.js.map +1 -1
- package/dist/Abstract/Wrappers/AbstractWrapper.js.map +1 -1
- package/dist/Actor/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Actor/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Actor/Adapters/Helpers/ActorStatesConfigToParams.js.map +1 -1
- package/dist/Actor/Adapters/Helpers/Model3dSettingsConfigToParams.js.map +1 -1
- package/dist/Actor/Entities/Actor/Actor.js.map +1 -1
- package/dist/Actor/Factories/ActorFactory.js.map +1 -1
- package/dist/Actor/Mixins/WithActorStates.js.map +1 -1
- package/dist/Actor/Registries/ActorRegistry.js.map +1 -1
- package/dist/Actor/Registries/Model3dToActorConnectionRegistry.js.map +1 -1
- package/dist/Actor/Services/ActorService.js.map +1 -1
- package/dist/Actor/TransformDrive/ActorTransformDrive.js.map +1 -1
- package/dist/Actor/Utils/ActorUtils.js.map +1 -1
- package/dist/Animations/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Animations/Loader/AnimationsLoader.js.map +1 -1
- package/dist/Animations/Registries/AnimationsMetaInfoRegistry.js.map +1 -1
- package/dist/Animations/Registries/AnimationsResourceAsyncRegistry.js.map +1 -1
- package/dist/Animations/Services/AnimationsService.js.map +1 -1
- package/dist/Animations/Utils/SerializationUtils.js.map +1 -1
- package/dist/Audio/Adapters/AudioConfigToParams.js.map +1 -1
- package/dist/Audio/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Audio/Factories/AudioFactory.js.map +1 -1
- package/dist/Audio/Loader/AudioLoader.js.map +1 -1
- package/dist/Audio/Registries/AudioListenersRegistry.js.map +1 -1
- package/dist/Audio/Registries/AudioMetaInfoRegistry.js.map +1 -1
- package/dist/Audio/Registries/AudioRegistry.js.map +1 -1
- package/dist/Audio/Registries/AudioResourceAsyncRegistry.js.map +1 -1
- package/dist/Audio/Services/AudioService.js.map +1 -1
- package/dist/Audio/TransformDrive/Audio3dTransformDrive.js.map +1 -1
- package/dist/Audio/Utils/AudioUtils.js.map +1 -1
- package/dist/Audio/Utils/DebugAudioRenderer.js.map +1 -1
- package/dist/Audio/Wrappers/AbstractAudioWrapper.js.map +1 -1
- package/dist/Audio/Wrappers/Audio3dWrapper.js.map +1 -1
- package/dist/Audio/Wrappers/AudioWrapper.js.map +1 -1
- package/dist/Camera/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Camera/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Camera/Factories/CameraFactory.js.map +1 -1
- package/dist/Camera/Registries/AbstractCameraRegistry.js.map +1 -1
- package/dist/Camera/Services/CameraService.js.map +1 -1
- package/dist/Camera/TransformDrive/CameraTransformDrive.js.map +1 -1
- package/dist/Camera/Utils/CameraUtils.js.map +1 -1
- package/dist/Camera/Wrappers/Accessors.js.map +1 -1
- package/dist/Camera/Wrappers/OrthographicCameraWrapper.js.map +1 -1
- package/dist/Camera/Wrappers/PerspectiveCameraWrapper.js.map +1 -1
- package/dist/Collisions/Mixins/WithCollisions.js.map +1 -1
- package/dist/Collisions/Services/BvhService.js.map +1 -1
- package/dist/Collisions/Services/CollisionsService.js.map +1 -1
- package/dist/Color/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Color/Wrappers/ColorWrapper.js.map +1 -1
- package/dist/Context/AmbientContext/AmbientContext.js.map +1 -1
- package/dist/Controls/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Controls/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Controls/Factories/ControlsFactory.js.map +1 -1
- package/dist/Controls/Loop/ControlsLoopEffect.js.map +1 -1
- package/dist/Controls/Models/TFpsControlsWrapper.d.ts +1 -1
- package/dist/Controls/Models/TOrbitControlsWrapper.d.ts +1 -1
- package/dist/Controls/Registries/ControlsRegistry.js.map +1 -1
- package/dist/Controls/Services/ControlsService.js.map +1 -1
- package/dist/Controls/Utils/ControlsUtils.js.map +1 -1
- package/dist/Controls/Wrappers/FpsControls/FpsControlsAccessors.d.ts +1 -1
- package/dist/Controls/Wrappers/FpsControls/FpsControlsAccessors.js.map +1 -1
- package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapper.js.map +1 -1
- package/dist/Controls/Wrappers/FpsControls/FpsControlsWrapperHelper.js.map +1 -1
- package/dist/Controls/Wrappers/OrbitControls/OrbitControlsAccessors.d.ts +1 -1
- package/dist/Controls/Wrappers/OrbitControls/OrbitControlsAccessors.js.map +1 -1
- package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapper.js.map +1 -1
- package/dist/Controls/Wrappers/OrbitControls/OrbitControlsWrapperHelper.js.map +1 -1
- package/dist/Distance/Utils/DistanceUtils.js.map +1 -1
- package/dist/EnvMap/Adapters/ConfigToParams.js.map +1 -1
- package/dist/EnvMap/Adapters/EntityToConfig.js.map +1 -1
- package/dist/EnvMap/Factories/EnvMapFactory.js.map +1 -1
- package/dist/EnvMap/Loader/EnvMapLoader.js.map +1 -1
- package/dist/EnvMap/Registries/EnvMapMetaInfoRegistry.js.map +1 -1
- package/dist/EnvMap/Registries/EnvMapRegistry.js.map +1 -1
- package/dist/EnvMap/Registries/EnvMapTextureAsyncRegistry.js.map +1 -1
- package/dist/EnvMap/Services/EnvMapService.js.map +1 -1
- package/dist/EnvMap/Wrappers/EnvMapWrapper.js.map +1 -1
- package/dist/Fog/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Fog/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Fog/Factories/FogFactory.js.map +1 -1
- package/dist/Fog/Registries/FogRegistry.js.map +1 -1
- package/dist/Fog/Services/FogService.js.map +1 -1
- package/dist/Fog/Wrappers/FogWrapper.js.map +1 -1
- package/dist/Fsm/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Fsm/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Fsm/Entities/FsmSource.js.map +1 -1
- package/dist/Fsm/Factories/FsmInstanceFactory.js.map +1 -1
- package/dist/Fsm/Factories/FsmSourceFactory.js.map +1 -1
- package/dist/Fsm/Registries/FsmInstanceRegistry.js.map +1 -1
- package/dist/Fsm/Registries/FsmSourceRegistry.js.map +1 -1
- package/dist/Fsm/Services/FsmInstanceService.js.map +1 -1
- package/dist/Fsm/Services/FsmService.js.map +1 -1
- package/dist/Fsm/Services/FsmSourceService.js.map +1 -1
- package/dist/Fsm/Wrappers/FsmWrapper.js.map +1 -1
- package/dist/Global/Decorators/ContainerDecorator.js.map +1 -1
- package/dist/Global/Utils/ContainerUtils.js.map +1 -1
- package/dist/Intersections/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Intersections/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Intersections/Factories/IntersectionsWatcherFactory.js.map +1 -1
- package/dist/Intersections/Models/TIntersectionsDirectionWatcher.d.ts +1 -1
- package/dist/Intersections/Registries/IntersectionsWatcherRegistry.js.map +1 -1
- package/dist/Intersections/Services/IntersectionsWatcherService.js.map +1 -1
- package/dist/Intersections/Utils/IntersectionsWatcherUtils.js.map +1 -1
- package/dist/Intersections/Watchers/AbstractIntersectionsWatcher.js.map +1 -1
- package/dist/Intersections/Watchers/IntersectionsCameraWatcher.js.map +1 -1
- package/dist/Intersections/Watchers/IntersectionsDirectionWatcher.js.map +1 -1
- package/dist/Keyboard/Factories/KeyWatcherFactory.js.map +1 -1
- package/dist/Keyboard/Registries/KeyWatcherRegistry.js.map +1 -1
- package/dist/Keyboard/Services/KeyboardService.js.map +1 -1
- package/dist/Keyboard/Utils/KeysRxJsUtils.js.map +1 -1
- package/dist/Keyboard/Utils/KeysUtils.js.map +1 -1
- package/dist/Keyboard/Watchers/KeyComboWatcher.js.map +1 -1
- package/dist/Keyboard/Watchers/KeyPressWatcher.js.map +1 -1
- package/dist/Keyboard/Watchers/KeyReleaseWatcher.js.map +1 -1
- package/dist/Kinematic/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Kinematic/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Kinematic/Constants/KinematicConstants.js.map +1 -1
- package/dist/Kinematic/Utils/KinematicUtils.js.map +1 -1
- package/dist/Light/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Light/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Light/Factories/LightFactory.js.map +1 -1
- package/dist/Light/Registries/LightRegistry.js.map +1 -1
- package/dist/Light/Services/LightService.js.map +1 -1
- package/dist/Light/TransformDrive/LightTransformDrive.js.map +1 -1
- package/dist/Light/Utils/Utils.js.map +1 -1
- package/dist/Light/Wrappers/AbstractLightWrapper.js.map +1 -1
- package/dist/Light/Wrappers/AmbientLightWrapper.js.map +1 -1
- package/dist/Light/Wrappers/DirectionalLightWrapper.js.map +1 -1
- package/dist/Light/Wrappers/HemisphereLightWrapper.js.map +1 -1
- package/dist/Light/Wrappers/LightWrapperHelper.js.map +1 -1
- package/dist/Light/Wrappers/PointLightWrapper.js.map +1 -1
- package/dist/Light/Wrappers/RectAreaLightWrapper.js.map +1 -1
- package/dist/Light/Wrappers/SpotLightWrapper.js.map +1 -1
- package/dist/LoadingManager/Factories/LoadingManagerFactory.js.map +1 -1
- package/dist/LoadingManager/Registries/LoadingManagerRegistry.js.map +1 -1
- package/dist/LoadingManager/Services/LoadingManagerService.js.map +1 -1
- package/dist/LoadingManager/Wrappers/LoadingManagerWrapper.js.map +1 -1
- package/dist/Loop/Constants/LoopsDefaultSettings.js.map +1 -1
- package/dist/Loop/Entities/DeltaCalculator.js.map +1 -1
- package/dist/Loop/Entities/Loop.js.map +1 -1
- package/dist/Loop/Factories/LoopFactory.js.map +1 -1
- package/dist/Loop/Registries/LoopRegistry.js.map +1 -1
- package/dist/Loop/Services/LoopService.js.map +1 -1
- package/dist/Loop/Utils/LoopDebugUtils.js.map +1 -1
- package/dist/Loop/Utils/LoopUtils.js.map +1 -1
- package/dist/Material/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Material/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Material/Constants/Material/MaterialMap.js.map +1 -1
- package/dist/Material/Factories/MaterialFactory.js.map +1 -1
- package/dist/Material/Mixins/WithMaterial.d.ts +1 -1
- package/dist/Material/Mixins/WithMaterial.js.map +1 -1
- package/dist/Material/Models/TMaterialParamsOptions.d.ts +1 -4
- package/dist/Material/Registries/MaterialRegistry.js.map +1 -1
- package/dist/Material/Services/MaterialService.js.map +1 -1
- package/dist/Material/Utils/MaterialUtils.js.map +1 -1
- package/dist/Material/Wrappers/MaterialWrapper.js.map +1 -1
- package/dist/Math/Utils/AnglesUtils.js +1 -1
- package/dist/Math/Utils/AnglesUtils.js.map +1 -1
- package/dist/Math/Utils/DistanceUtils.js.map +1 -1
- package/dist/Measurements/Constants/Distance.js.map +1 -1
- package/dist/Measurements/Constants/Time.js.map +1 -1
- package/dist/Measurements/Utils/MeasurementsUtils.d.ts +1 -1
- package/dist/Measurements/Utils/MeasurementsUtils.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy2dMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy3dMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveBy4dMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByWMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByXMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByYMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Movable/WithMoveByZMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Position/WithPosition2dMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Position/WithPosition3dMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Position/WithPosition4dMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Position/WithPositionMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByWMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByXMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByXyzMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByYMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationByZMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Rotatable/WithRotationMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/Scalable/WithScaleMixin.js.map +1 -1
- package/dist/Mixins/GameObjects/Mixins/WithObject3D.js.map +1 -1
- package/dist/Mixins/Generics/DestroyableMixin.js.map +1 -1
- package/dist/Mixins/Generics/ExtractSerializableRegistrableFields.js.map +1 -1
- package/dist/Mixins/Generics/WithActiveEntityServiceMixin.js.map +1 -1
- package/dist/Mixins/Generics/WithActiveMixin.js.map +1 -1
- package/dist/Mixins/Generics/WithNameAndNameAccessorsMixin.js.map +1 -1
- package/dist/Mixins/Services/WithCreateFromConfigService.js.map +1 -1
- package/dist/Mixins/Services/WithCreateService.js.map +1 -1
- package/dist/Mixins/Services/WithFactoryService.js.map +1 -1
- package/dist/Mixins/Services/WithRegistryService.js.map +1 -1
- package/dist/Mixins/Services/WithSceneGetterService.js.map +1 -1
- package/dist/Mixins/Services/WithSerializableEntities.js.map +1 -1
- package/dist/Mixins/Services/WithSerializeAllResources.js.map +1 -1
- package/dist/Models3d/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Models3d/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Models3d/Entities/Model3d.js.map +1 -1
- package/dist/Models3d/Factories/Models3dFactory.js.map +1 -1
- package/dist/Models3d/Loaders/Loader3dCore.js.map +1 -1
- package/dist/Models3d/Loaders/Models3dLoader.js.map +1 -1
- package/dist/Models3d/Mixins/WithModel3dEntities.js.map +1 -1
- package/dist/Models3d/Models/TModel3dParams.d.ts +1 -1
- package/dist/Models3d/Models/TModels3dLoader.d.ts +1 -1
- package/dist/Models3d/Models/TModels3dResourceAsyncRegistry.d.ts +1 -1
- package/dist/Models3d/Models/TModels3dService.d.ts +1 -1
- package/dist/Models3d/Registries/Model3dRawToModel3dConnectionRegistry.js.map +1 -1
- package/dist/Models3d/Registries/Models3dMetaInfoRegistry.js.map +1 -1
- package/dist/Models3d/Registries/Models3dRegistry.js.map +1 -1
- package/dist/Models3d/Registries/Models3dResourceAsyncRegistry.js.map +1 -1
- package/dist/Models3d/Services/Models3dService.js.map +1 -1
- package/dist/Models3d/Utils/SerializationUtils.js.map +1 -1
- package/dist/Models3d/Utils/UtilsModel3d.d.ts +1 -1
- package/dist/Models3d/Utils/UtilsModel3d.js.map +1 -1
- package/dist/Models3d/Utils/UtilsModels3dService.js.map +1 -1
- package/dist/Models3d/Utils/UtilsPrimitiveModels3d.d.ts +1 -1
- package/dist/Models3d/Utils/UtilsPrimitiveModels3d.js.map +1 -1
- package/dist/Mouse/Factories/MouseClickWatcherFactory.js.map +1 -1
- package/dist/Mouse/Factories/MousePositionWatcherFactory.js.map +1 -1
- package/dist/Mouse/Registries/MouseClickWatcherRegistry.js.map +1 -1
- package/dist/Mouse/Registries/MousePositionWatcherRegistry.js.map +1 -1
- package/dist/Mouse/Services/MouseService.js.map +1 -1
- package/dist/Mouse/Utils/MouseUtils.js.map +1 -1
- package/dist/Mouse/Watchers/MouseClickWatcher.js.map +1 -1
- package/dist/Mouse/Watchers/MousePositionWatcher.js.map +1 -1
- package/dist/Particles/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Particles/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Particles/Factories/ParticlesFactory.js.map +1 -1
- package/dist/Particles/Registries/ParticlesRegistry.js.map +1 -1
- package/dist/Particles/Services/ParticlesService.js.map +1 -1
- package/dist/Particles/TransformDrive/ParticlesTransformDrive.js.map +1 -1
- package/dist/Particles/Wrappers/ParticlesWrapper.js.map +1 -1
- package/dist/Physics/Adapters/EntityToConfig.d.ts +1 -1
- package/dist/Physics/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js +1 -1
- package/dist/Physics/Adapters/PhysicsBodyConfigToParams.js.map +1 -1
- package/dist/Physics/Adapters/PhysicsWorldConfigToParams.js.map +1 -1
- package/dist/Physics/Constants/RigidBodyTypesMap.d.ts +1 -1
- package/dist/Physics/Constants/RigidBodyTypesMap.js +1 -1
- package/dist/Physics/Constants/RigidBodyTypesMap.js.map +1 -1
- package/dist/Physics/Entities/PhysicsBody.js.map +1 -1
- package/dist/Physics/Entities/PhysicsBodyUtils.d.ts +1 -1
- package/dist/Physics/Entities/PhysicsBodyUtils.js +1 -1
- package/dist/Physics/Entities/PhysicsBodyUtils.js.map +1 -1
- package/dist/Physics/Factories/PhysicsBodyFactory.js.map +1 -1
- package/dist/Physics/Mixins/WithPhysicsBodyEntities.js.map +1 -1
- package/dist/Physics/Models/TPhysicsWorldService.d.ts +1 -1
- package/dist/Physics/Registries/PhysicsBodyRegistry.js.map +1 -1
- package/dist/Physics/Renderers/PhysicsDebugRenderer.d.ts +1 -1
- package/dist/Physics/Renderers/PhysicsDebugRenderer.js.map +1 -1
- package/dist/Physics/Services/PhysicsBodyService.js.map +1 -1
- package/dist/Physics/Services/PhysicsWorldService.js +1 -1
- package/dist/Physics/Services/PhysicsWorldService.js.map +1 -1
- package/dist/Physics/Utils/ParamsUtils.js.map +1 -1
- package/dist/Physics/Utils/PhysicsMovementUtils.d.ts +2 -2
- package/dist/Physics/Utils/PhysicsMovementUtils.js +1 -1
- package/dist/Physics/Utils/PhysicsMovementUtils.js.map +1 -1
- package/dist/Renderer/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Renderer/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Renderer/Factories/RendererFactory.js.map +1 -1
- package/dist/Renderer/Loop/RendererLoopEffect.js.map +1 -1
- package/dist/Renderer/Mixins/WithThreeJsRendererParamsAccessors.js.map +1 -1
- package/dist/Renderer/Mixins/WithThreeJsRendererPropsAccessors.js.map +1 -1
- package/dist/Renderer/Registries/RendererRegistry.js.map +1 -1
- package/dist/Renderer/Services/RendererService.js.map +1 -1
- package/dist/Renderer/Wrappers/Accessors.js.map +1 -1
- package/dist/Renderer/Wrappers/RendererWrapper.js.map +1 -1
- package/dist/Scene/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Scene/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Scene/Factories/SceneFactory.js.map +1 -1
- package/dist/Scene/Registries/SceneRegistry.js.map +1 -1
- package/dist/Scene/Services/ScenesService.js.map +1 -1
- package/dist/Scene/Wrappers/SceneWrapper.js.map +1 -1
- package/dist/Space/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Space/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Space/Entities/Space.js.map +1 -1
- package/dist/Space/Entities/SpaceFromConfig.js.map +1 -1
- package/dist/Space/Factories/SpaceFactory.js.map +1 -1
- package/dist/Space/Registries/SpaceRegistry.js.map +1 -1
- package/dist/Space/Services/SpaceService.js.map +1 -1
- package/dist/Space/Utils/CanvasUtils.js.map +1 -1
- package/dist/Space/Utils/CreateEntitiesUtils.js.map +1 -1
- package/dist/Space/Utils/CreateLoopsUtils.js.map +1 -1
- package/dist/Space/Utils/LoadResourcesUtils.js.map +1 -1
- package/dist/Space/Utils/PrepareServicesUtils.js.map +1 -1
- package/dist/Space/Utils/SchemaValidationUtils.js.map +1 -1
- package/dist/Space/Validators/SchemasValidator.js.map +1 -1
- package/dist/Space/Validators/ValidateConfig.js.map +1 -1
- package/dist/Space/Validators/ValidateSpace.js.map +1 -1
- package/dist/Spatial/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Spatial/Adapters/ConfigToParamsSpatialData.js.map +1 -1
- package/dist/Spatial/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Spatial/Factories/SpatialGridFactory.js.map +1 -1
- package/dist/Spatial/Mixins/WithReactivePosition.js.map +1 -1
- package/dist/Spatial/Mixins/WithReactiveRotation.js.map +1 -1
- package/dist/Spatial/Mixins/WithSpatial.js.map +1 -1
- package/dist/Spatial/Mixins/WithUpdateSpatialCell.js.map +1 -1
- package/dist/Spatial/Registries/SpatialGridRegistry.js.map +1 -1
- package/dist/Spatial/Services/SpatialGridService.js.map +1 -1
- package/dist/Spatial/Services/SpatialHelper.d.ts +1 -1
- package/dist/Spatial/Services/SpatialHelper.js.map +1 -1
- package/dist/Spatial/Wrappers/SpatialCellWrapper.js.map +1 -1
- package/dist/Spatial/Wrappers/SpatialGridWrapper.js.map +1 -1
- package/dist/Text/Adapters/ConfigToParams.js.map +1 -1
- package/dist/Text/Adapters/EntityToConfig.js.map +1 -1
- package/dist/Text/Factories/TextFactory.js.map +1 -1
- package/dist/Text/Loop/TextLoopEffect.js.map +1 -1
- package/dist/Text/Models/TText2dRenderer.d.ts +1 -1
- package/dist/Text/Models/TText2dWrapper.d.ts +1 -1
- package/dist/Text/Models/TText3dRenderer.d.ts +1 -1
- package/dist/Text/Models/TText3dWrapper.d.ts +1 -1
- package/dist/Text/Models/TTextRenderer.d.ts +2 -2
- package/dist/Text/Models/TTextWrapper.d.ts +2 -2
- package/dist/Text/Registries/Text2dRegistry.js.map +1 -1
- package/dist/Text/Registries/Text2dRendererRegistry.js.map +1 -1
- package/dist/Text/Registries/Text3dRegistry.js.map +1 -1
- package/dist/Text/Registries/Text3dRendererRegistry.js.map +1 -1
- package/dist/Text/Registries/Text3dTextureRegistry.js.map +1 -1
- package/dist/Text/Renderers/Text2dRenderer.js.map +1 -1
- package/dist/Text/Renderers/Text3dRenderer.js.map +1 -1
- package/dist/Text/Renderers/TextRendererBuilder.d.ts +2 -2
- package/dist/Text/Renderers/TextRendererBuilder.js.map +1 -1
- package/dist/Text/Services/TextService.js.map +1 -1
- package/dist/Text/TransformDrive/TextTransformDrive.js.map +1 -1
- package/dist/Text/Utils/TextUtils.js.map +1 -1
- package/dist/Text/Wrappers/Accessors.js.map +1 -1
- package/dist/Text/Wrappers/Text2dWrapper.js.map +1 -1
- package/dist/Text/Wrappers/Text3dTextureWrapper.js.map +1 -1
- package/dist/Text/Wrappers/Text3dWrapper.js.map +1 -1
- package/dist/Text/Wrappers/TextTextureWrapper.js.map +1 -1
- package/dist/Text/Wrappers/TextWrapper.d.ts +2 -2
- package/dist/Text/Wrappers/TextWrapper.js.map +1 -1
- package/dist/Text/Wrappers/TextWrapperBuilder.js.map +1 -1
- package/dist/Text/Wrappers/TextWrapperHelper.js.map +1 -1
- package/dist/Texture/Loaders/TexturesLoader.js.map +1 -1
- package/dist/Texture/Registries/TextureMetaInfoRegistry.js.map +1 -1
- package/dist/Texture/Registries/TextureResourceAsyncRegistry.js.map +1 -1
- package/dist/Texture/Services/TextureService.js.map +1 -1
- package/dist/Texture/Utils/TextureServiceHelper.js.map +1 -1
- package/dist/ThreeLib/Utils/Object3dUtils.js.map +1 -1
- package/dist/TransformDrive/Adapters/EntityToConfig.js.map +1 -1
- package/dist/TransformDrive/Entities/Agents/AbstractTransformAgent.js.map +1 -1
- package/dist/TransformDrive/Entities/Agents/ConnectedTransformAgent.js.map +1 -1
- package/dist/TransformDrive/Entities/Agents/DefaultTransformAgent.js.map +1 -1
- package/dist/TransformDrive/Entities/Agents/KinematicTransformAgent.js.map +1 -1
- package/dist/TransformDrive/Entities/Agents/PhysicsTransformAgent.js.map +1 -1
- package/dist/TransformDrive/Entities/Connectors/DriveToTargetConnector.js.map +1 -1
- package/dist/TransformDrive/Entities/Drive/TransformDrive.js.map +1 -1
- package/dist/TransformDrive/Factories/TransformDriveFactory.js.map +1 -1
- package/dist/TransformDrive/Mixins/WithMutablePositionConnector.js.map +1 -1
- package/dist/TransformDrive/Mixins/WithMutableRotationConnector.js.map +1 -1
- package/dist/TransformDrive/Mixins/WithMutableScaleConnector.js.map +1 -1
- package/dist/TransformDrive/Mixins/WithProxyTransform.js.map +1 -1
- package/dist/TransformDrive/Registries/TransformDriveRegistry.js.map +1 -1
- package/dist/TransformDrive/Services/TransformDriveService.js.map +1 -1
- package/dist/TransformDrive/Utils/ActorDriveUtils.js.map +1 -1
- package/dist/TransformDrive/Utils/AgentUtils.js.map +1 -1
- package/dist/TransformDrive/Utils/KinematicAgentUtils.js.map +1 -1
- package/dist/TransformDrive/Utils/PhysicsTransformAgentUtils.d.ts +1 -1
- package/dist/TransformDrive/Utils/PhysicsTransformAgentUtils.js.map +1 -1
- package/dist/TransformDrive/Utils/TransformDriveUtils.js.map +1 -1
- package/dist/Utils/CheckUtils.js.map +1 -1
- package/dist/Utils/CoordsUtils.js.map +1 -1
- package/dist/Utils/DateTimeUtils.d.ts +1 -1
- package/dist/Utils/DestroyUtils.js.map +1 -1
- package/dist/Utils/DomUtils.js.map +1 -1
- package/dist/Utils/EntityUtils.js.map +1 -1
- package/dist/Utils/RegistryAsyncUtils.js.map +1 -1
- package/dist/Utils/RegistryUtils.js.map +1 -1
- package/dist/Utils/RxJsUtils.js.map +1 -1
- package/dist/Utils/ScreenUtils.js.map +1 -1
- package/dist/Utils/TagsUtils.js.map +1 -1
- package/dist/Utils/TransformUtils.js.map +1 -1
- package/dist/Utils/WrapperHelpers.d.ts +1 -1
- package/dist/Utils/WrapperHelpers.js.map +1 -1
- package/dist/assets/Loop.worker-D1bMWlsN.js.map +1 -1
- package/dist/packages/anarchy-shared/src/Utils/AsyncUtils.js.map +1 -1
- package/dist/packages/anarchy-shared/src/Utils/CssUtils.js.map +1 -1
- package/dist/packages/anarchy-shared/src/Utils/ObjectUtils.js.map +1 -1
- package/legal/NOTICE.md +1 -1
- package/legal/THIRD_PARTY_LICENSES.md +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrepareServicesUtils.js","sources":["../../../src/Space/Utils/PrepareServicesUtils.ts"],"sourcesContent":["import type { TModel3dToActorConnectionRegistry } from '@Anarchy/Engine/Actor';\nimport { ActorFactory, ActorRegistry, ActorService, Model3dToActorConnectionRegistry } from '@Anarchy/Engine/Actor';\nimport type { TAnimationsService } from '@Anarchy/Engine/Animations';\nimport { AnimationsMetaInfoRegistry, AnimationsResourceAsyncRegistry, AnimationsService } from '@Anarchy/Engine/Animations';\nimport type { TAudioService } from '@Anarchy/Engine/Audio';\nimport { AudioFactory, AudioListenersRegistry, AudioRegistry, AudioResourceAsyncRegistry, AudioService } from '@Anarchy/Engine/Audio';\nimport { AudioMetaInfoRegistry } from '@Anarchy/Engine/Audio/Registries/AudioMetaInfoRegistry';\nimport type { TCameraService } from '@Anarchy/Engine/Camera';\nimport { CameraFactory, CameraRegistry, CameraService } from '@Anarchy/Engine/Camera';\nimport type { TCollisionsService } from '@Anarchy/Engine/Collisions';\nimport { CollisionsService } from '@Anarchy/Engine/Collisions';\nimport { ControlService, ControlsFactory, ControlsRegistry } from '@Anarchy/Engine/Controls';\nimport { EnvMapFactory, EnvMapRegistry, EnvMapService, EnvMapTextureAsyncRegistry } from '@Anarchy/Engine/EnvMap';\nimport { EnvMapMetaInfoRegistry } from '@Anarchy/Engine/EnvMap/Registries/EnvMapMetaInfoRegistry';\nimport { FogFactory, FogRegistry, FogService } from '@Anarchy/Engine/Fog';\nimport type { TFsmService } from '@Anarchy/Engine/Fsm';\nimport { FsmInstanceFactory, FsmInstanceRegistry, FsmSourceRegistry } from '@Anarchy/Engine/Fsm';\nimport { FsmSourceFactory } from '@Anarchy/Engine/Fsm/Factories/FsmSourceFactory';\nimport { FsmService } from '@Anarchy/Engine/Fsm/Services/FsmService';\nimport type { TContainerDecorator } from '@Anarchy/Engine/Global';\nimport { IntersectionsWatcherFactory, IntersectionsWatcherRegistry, IntersectionsWatcherService } from '@Anarchy/Engine/Intersections';\nimport { KeyboardService, KeyWatcherFactory, KeyWatcherRegistry } from '@Anarchy/Engine/Keyboard';\nimport { LightFactory, LightRegistry, LightService } from '@Anarchy/Engine/Light';\nimport type { TLoadingManagerService, TLoadingManagerWrapper } from '@Anarchy/Engine/LoadingManager';\nimport { DEFAULT_SPACE_LOADING_MANAGER_NAME, LoadingManagerFactory, LoadingManagerRegistry, LoadingManagerService } from '@Anarchy/Engine/LoadingManager';\nimport type { TLoopService } from '@Anarchy/Engine/Loop';\nimport { LoopFactory, LoopRegistry, LoopService } from '@Anarchy/Engine/Loop';\nimport type { TMaterialService } from '@Anarchy/Engine/Material';\nimport { MaterialFactory, MaterialRegistry, MaterialService } from '@Anarchy/Engine/Material';\nimport type { TModel3dRawToModel3dConnectionRegistry, TModels3dService } from '@Anarchy/Engine/Models3d';\nimport { Model3dRawToModel3dConnectionRegistry, Models3dFactory, Models3dMetaInfoRegistry, Models3dRegistry, Models3dResourceAsyncRegistry, Models3dService } from '@Anarchy/Engine/Models3d';\nimport { MouseClickWatcherFactory, MouseClickWatcherRegistry, MousePositionWatcherFactory, MousePositionWatcherRegistry, MouseService } from '@Anarchy/Engine/Mouse';\nimport { ParticlesFactory, ParticlesRegistry, ParticlesService } from '@Anarchy/Engine/Particles';\nimport type { TPhysicsBodyService, TPhysicsWorldService } from '@Anarchy/Engine/Physics';\nimport { PhysicsBodyFactory, PhysicsBodyRegistry, PhysicsBodyService, PhysicsWorldService } from '@Anarchy/Engine/Physics';\nimport { RendererFactory, RendererRegistry, RendererService } from '@Anarchy/Engine/Renderer';\nimport type { TScenesService, TSceneWrapper } from '@Anarchy/Engine/Scene';\nimport { SceneFactory, SceneRegistry, ScenesService } from '@Anarchy/Engine/Scene';\nimport type { TSpaceBaseServices, TSpaceCanvas, TSpaceLoops, TSpaceServices, TSpaceSettings } from '@Anarchy/Engine/Space/Models';\nimport type { TSpatialGridService } from '@Anarchy/Engine/Spatial';\nimport { SpatialGridFactory, SpatialGridRegistry, SpatialGridService } from '@Anarchy/Engine/Spatial';\nimport { Text2dRegistry, Text2dRendererRegistry, Text3dRegistry, Text3dRendererRegistry, Text3dTextureRegistry, TextFactory, TextService } from '@Anarchy/Engine/Text';\nimport type { TTextureService } from '@Anarchy/Engine/Texture';\nimport { TextureMetaInfoRegistry, TextureResourceAsyncRegistry, TextureService } from '@Anarchy/Engine/Texture';\nimport type { TTransformDriveService } from '@Anarchy/Engine/TransformDrive';\nimport { TransformDriveFactory, TransformDriveRegistry, TransformDriveService } from '@Anarchy/Engine/TransformDrive';\n\nexport function buildBaseServices(): TSpaceBaseServices {\n const scenesService: TScenesService = ScenesService(SceneFactory(), SceneRegistry());\n const loopService: TLoopService = LoopService(LoopFactory(), LoopRegistry());\n\n return { loopService, scenesService };\n}\n\nexport function buildEntitiesServices(\n sceneW: TSceneWrapper,\n canvas: TSpaceCanvas,\n container: TContainerDecorator,\n loops: TSpaceLoops,\n { loopService, scenesService }: TSpaceBaseServices,\n settings: TSpaceSettings\n): TSpaceServices {\n const loadingManagerService: TLoadingManagerService = LoadingManagerService(LoadingManagerFactory(), LoadingManagerRegistry());\n const loadingManagerW: TLoadingManagerWrapper = loadingManagerService.create({ name: DEFAULT_SPACE_LOADING_MANAGER_NAME });\n\n const textureService: TTextureService = TextureService(TextureResourceAsyncRegistry(), TextureMetaInfoRegistry(), loadingManagerW);\n const materialService: TMaterialService = MaterialService(MaterialFactory(), MaterialRegistry(), { textureService });\n const physicsWorldService: TPhysicsWorldService = PhysicsWorldService(sceneW, loops);\n const physicsBodyService: TPhysicsBodyService = PhysicsBodyService(PhysicsBodyFactory(), PhysicsBodyRegistry(), physicsWorldService);\n const spatialGridService: TSpatialGridService = SpatialGridService(SpatialGridFactory(), SpatialGridRegistry());\n const collisionsService: TCollisionsService = CollisionsService();\n const animationsService: TAnimationsService = AnimationsService(AnimationsResourceAsyncRegistry(), AnimationsMetaInfoRegistry(), loops, loadingManagerW, settings);\n const model3dToActorConnectionRegistry: TModel3dToActorConnectionRegistry = Model3dToActorConnectionRegistry();\n const model3dRawToModel3dConnectionRegistry: TModel3dRawToModel3dConnectionRegistry = Model3dRawToModel3dConnectionRegistry();\n const models3dService: TModels3dService = Models3dService(\n Models3dFactory(),\n Models3dRegistry(),\n Models3dResourceAsyncRegistry(),\n Models3dMetaInfoRegistry(),\n {\n materialService,\n animationsService,\n model3dRawToModel3dConnectionRegistry\n },\n loadingManagerW,\n settings\n );\n const fsmService: TFsmService = FsmService(FsmInstanceFactory(), FsmSourceFactory(), FsmInstanceRegistry(), FsmSourceRegistry());\n const transformDriveService: TTransformDriveService = TransformDriveService(TransformDriveFactory(), TransformDriveRegistry(), { loopService });\n const audioService: TAudioService = AudioService(\n AudioFactory(),\n AudioRegistry(),\n AudioResourceAsyncRegistry(),\n AudioListenersRegistry(),\n AudioMetaInfoRegistry(),\n { transformDriveService },\n loops,\n loadingManagerW\n );\n const cameraService: TCameraService = CameraService(CameraFactory(), CameraRegistry(), sceneW, { audioService, transformDriveService, container });\n\n return {\n actorService: ActorService(\n ActorFactory(),\n ActorRegistry(),\n {\n collisionsService,\n fsmService,\n loopService,\n model3dToActorConnectionRegistry,\n models3dService,\n physicsBodyService,\n spatialGridService,\n transformDriveService\n },\n sceneW\n ),\n audioService,\n cameraService,\n controlsService: ControlService(ControlsFactory(), ControlsRegistry(), loops, { cameraService }, canvas),\n collisionsService,\n scenesService,\n envMapService: EnvMapService(EnvMapFactory(), EnvMapRegistry(), EnvMapTextureAsyncRegistry(), EnvMapMetaInfoRegistry(), sceneW, loadingManagerW),\n fogService: FogService(FogFactory(), FogRegistry(), sceneW),\n fsmService,\n intersectionsWatcherService: IntersectionsWatcherService(IntersectionsWatcherFactory(), IntersectionsWatcherRegistry()),\n keyboardService: KeyboardService(container, KeyWatcherFactory(), KeyWatcherRegistry()),\n lightService: LightService(LightFactory(), LightRegistry(), { transformDriveService }, sceneW),\n loadingManagerService,\n loopService,\n materialService,\n models3dService,\n animationsService,\n mouseService: MouseService(container, MouseClickWatcherFactory(), MouseClickWatcherRegistry(), MousePositionWatcherFactory(), MousePositionWatcherRegistry(), loops),\n particlesService: ParticlesService(ParticlesFactory(), ParticlesRegistry(), { transformDriveService, materialService }, sceneW),\n physicsBodyService,\n physicsWorldService,\n rendererService: RendererService(RendererFactory(), RendererRegistry(), loops, { cameraService, container }, sceneW),\n spatialGridService,\n textService: TextService(\n TextFactory(),\n Text2dRegistry(),\n Text3dRegistry(),\n Text3dTextureRegistry(),\n Text2dRendererRegistry(),\n Text3dRendererRegistry(),\n loops,\n { loopService, physicsBodyService, cameraService, transformDriveService },\n sceneW\n ),\n textureService,\n transformDriveService\n };\n}\n"],"names":["buildBaseServices","scenesService","ScenesService","SceneFactory","SceneRegistry","loopService","LoopService","LoopFactory","LoopRegistry","buildEntitiesServices","sceneW","canvas","container","loops","settings","loadingManagerService","LoadingManagerService","LoadingManagerFactory","LoadingManagerRegistry","loadingManagerW","create","name","DEFAULT_SPACE_LOADING_MANAGER_NAME","textureService","TextureService","TextureResourceAsyncRegistry","TextureMetaInfoRegistry","materialService","MaterialService","MaterialFactory","MaterialRegistry","physicsWorldService","PhysicsWorldService","physicsBodyService","PhysicsBodyService","PhysicsBodyFactory","PhysicsBodyRegistry","spatialGridService","SpatialGridService","SpatialGridFactory","SpatialGridRegistry","collisionsService","CollisionsService","animationsService","AnimationsService","AnimationsResourceAsyncRegistry","AnimationsMetaInfoRegistry","model3dToActorConnectionRegistry","Model3dToActorConnectionRegistry","model3dRawToModel3dConnectionRegistry","Model3dRawToModel3dConnectionRegistry","models3dService","Models3dService","Models3dFactory","Models3dRegistry","Models3dResourceAsyncRegistry","Models3dMetaInfoRegistry","fsmService","FsmService","FsmInstanceFactory","FsmSourceFactory","FsmInstanceRegistry","FsmSourceRegistry","transformDriveService","TransformDriveService","TransformDriveFactory","TransformDriveRegistry","audioService","AudioService","AudioFactory","AudioRegistry","AudioResourceAsyncRegistry","AudioListenersRegistry","AudioMetaInfoRegistry","cameraService","CameraService","CameraFactory","CameraRegistry","actorService","ActorService","ActorFactory","ActorRegistry","controlsService","ControlService","ControlsFactory","ControlsRegistry","envMapService","EnvMapService","EnvMapFactory","EnvMapRegistry","EnvMapTextureAsyncRegistry","EnvMapMetaInfoRegistry","fogService","FogService","FogFactory","FogRegistry","intersectionsWatcherService","IntersectionsWatcherService","IntersectionsWatcherFactory","IntersectionsWatcherRegistry","keyboardService","KeyboardService","KeyWatcherFactory","KeyWatcherRegistry","lightService","LightService","LightFactory","LightRegistry","mouseService","MouseService","MouseClickWatcherFactory","MouseClickWatcherRegistry","MousePositionWatcherFactory","MousePositionWatcherRegistry","particlesService","ParticlesService","ParticlesFactory","ParticlesRegistry","rendererService","RendererService","RendererFactory","RendererRegistry","textService","TextService","TextFactory","Text2dRegistry","Text3dRegistry","Text3dTextureRegistry","Text2dRendererRegistry","Text3dRendererRegistry"],"mappings":"ygOA+CO,SAASA,oBACd,MAAMC,cAAgCC,cAAcC,eAAgBC,iBAGpE,MAAO,CAAEC,YAFyBC,YAAYC,cAAeC,gBAEvCP,4BACxB,CAEO,SAASQ,sBACdC,OACAC,OACAC,UACAC,OACAR,YAAEA,YAAAJ,cAAaA,eACfa,UAEA,MAAMC,sBAAgDC,sBAAsBC,wBAAyBC,0BAC/FC,gBAA0CJ,sBAAsBK,OAAO,CAAEC,KAAMC,qCAE/EC,eAAkCC,eAAeC,+BAAgCC,0BAA2BP,iBAC5GQ,gBAAoCC,gBAAgBC,kBAAmBC,mBAAoB,CAAEP,gCAC7FQ,oBAA4CC,oBAAoBtB,OAAQG,OACxEoB,mBAA0CC,mBAAmBC,qBAAsBC,sBAAuBL,qBAC1GM,mBAA0CC,mBAAmBC,qBAAsBC,uBACnFC,kBAAwCC,oBACxCC,kBAAwCC,kBAAkBC,kCAAmCC,6BAA8BjC,MAAOM,gBAAiBL,UACnJiC,iCAAsEC,mCACtEC,sCAAgFC,wCAChFC,gBAAoCC,gBACxCC,kBACAC,mBACAC,gCACAC,2BACA,CACE7B,gCACAgB,oCACAM,6EAEF9B,gBACAL,UAEI2C,WAA0BC,WAAWC,qBAAsBC,mBAAoBC,sBAAuBC,qBACtGC,sBAAgDC,sBAAsBC,wBAAyBC,yBAA0B,CAAE7D,0BAC3H8D,aAA8BC,aAClCC,eACAC,gBACAC,6BACAC,yBACAC,wBACA,CAAEV,6CACFlD,MACAM,iBAEIuD,cAAgCC,cAAcC,gBAAiBC,iBAAkBnE,OAAQ,CAAEyD,0BAAcJ,4CAAuBnD,sBAEtI,MAAO,CACLkE,aAAcC,aACZC,eACAC,gBACA,CACExC,oCACAgB,sBACApD,wBACA0C,kEACAI,gCACAlB,sCACAI,sCACA0B,6CAEFrD,QAEFyD,0BACAO,4BACAQ,gBAAiBC,eAAeC,kBAAmBC,mBAAoBxE,MAAO,CAAE6D,6BAAiB/D,QACjG8B,oCACAxC,4BACAqF,cAAeC,cAAcC,gBAAiBC,iBAAkBC,6BAA8BC,yBAA0BjF,OAAQS,iBAChIyE,WAAYC,WAAWC,aAAcC,cAAerF,QACpD+C,sBACAuC,4BAA6BC,4BAA4BC,8BAA+BC,gCACxFC,gBAAiBC,gBAAgBzF,UAAW0F,oBAAqBC,sBACjEC,aAAcC,aAAaC,eAAgBC,gBAAiB,CAAE5C,6CAAyBrD,QACvFK,4CACAV,wBACAsB,gCACAwB,gCACAR,oCACAiE,aAAcC,aAAajG,UAAWkG,2BAA4BC,4BAA6BC,8BAA+BC,+BAAgCpG,OAC9JqG,iBAAkBC,iBAAiBC,mBAAoBC,oBAAqB,CAAEtD,4CAAuBpC,iCAAmBjB,QACxHuB,sCACAF,wCACAuF,gBAAiBC,gBAAgBC,kBAAmBC,mBAAoB5G,MAAO,CAAE6D,4BAAe9D,qBAAaF,QAC7G2B,sCACAqF,YAAaC,YACXC,cACAC,iBACAC,iBACAC,wBACAC,yBACAC,yBACApH,MACA,CAAER,wBAAa4B,sCAAoByC,4BAAeX,6CAClDrD,QAEFa,8BACAwC,4CAEJ"}
|
|
1
|
+
{"version":3,"file":"PrepareServicesUtils.js","sources":["../../../src/Space/Utils/PrepareServicesUtils.ts"],"sourcesContent":["import type { TModel3dToActorConnectionRegistry } from '@hellpig/anarchy-engine/Actor';\nimport { ActorFactory, ActorRegistry, ActorService, Model3dToActorConnectionRegistry } from '@hellpig/anarchy-engine/Actor';\nimport type { TAnimationsService } from '@hellpig/anarchy-engine/Animations';\nimport { AnimationsMetaInfoRegistry, AnimationsResourceAsyncRegistry, AnimationsService } from '@hellpig/anarchy-engine/Animations';\nimport type { TAudioService } from '@hellpig/anarchy-engine/Audio';\nimport { AudioFactory, AudioListenersRegistry, AudioRegistry, AudioResourceAsyncRegistry, AudioService } from '@hellpig/anarchy-engine/Audio';\nimport { AudioMetaInfoRegistry } from '@hellpig/anarchy-engine/Audio/Registries/AudioMetaInfoRegistry';\nimport type { TCameraService } from '@hellpig/anarchy-engine/Camera';\nimport { CameraFactory, CameraRegistry, CameraService } from '@hellpig/anarchy-engine/Camera';\nimport type { TCollisionsService } from '@hellpig/anarchy-engine/Collisions';\nimport { CollisionsService } from '@hellpig/anarchy-engine/Collisions';\nimport { ControlService, ControlsFactory, ControlsRegistry } from '@hellpig/anarchy-engine/Controls';\nimport { EnvMapFactory, EnvMapRegistry, EnvMapService, EnvMapTextureAsyncRegistry } from '@hellpig/anarchy-engine/EnvMap';\nimport { EnvMapMetaInfoRegistry } from '@hellpig/anarchy-engine/EnvMap/Registries/EnvMapMetaInfoRegistry';\nimport { FogFactory, FogRegistry, FogService } from '@hellpig/anarchy-engine/Fog';\nimport type { TFsmService } from '@hellpig/anarchy-engine/Fsm';\nimport { FsmInstanceFactory, FsmInstanceRegistry, FsmSourceRegistry } from '@hellpig/anarchy-engine/Fsm';\nimport { FsmSourceFactory } from '@hellpig/anarchy-engine/Fsm/Factories/FsmSourceFactory';\nimport { FsmService } from '@hellpig/anarchy-engine/Fsm/Services/FsmService';\nimport type { TContainerDecorator } from '@hellpig/anarchy-engine/Global';\nimport { IntersectionsWatcherFactory, IntersectionsWatcherRegistry, IntersectionsWatcherService } from '@hellpig/anarchy-engine/Intersections';\nimport { KeyboardService, KeyWatcherFactory, KeyWatcherRegistry } from '@hellpig/anarchy-engine/Keyboard';\nimport { LightFactory, LightRegistry, LightService } from '@hellpig/anarchy-engine/Light';\nimport type { TLoadingManagerService, TLoadingManagerWrapper } from '@hellpig/anarchy-engine/LoadingManager';\nimport { DEFAULT_SPACE_LOADING_MANAGER_NAME, LoadingManagerFactory, LoadingManagerRegistry, LoadingManagerService } from '@hellpig/anarchy-engine/LoadingManager';\nimport type { TLoopService } from '@hellpig/anarchy-engine/Loop';\nimport { LoopFactory, LoopRegistry, LoopService } from '@hellpig/anarchy-engine/Loop';\nimport type { TMaterialService } from '@hellpig/anarchy-engine/Material';\nimport { MaterialFactory, MaterialRegistry, MaterialService } from '@hellpig/anarchy-engine/Material';\nimport type { TModel3dRawToModel3dConnectionRegistry, TModels3dService } from '@hellpig/anarchy-engine/Models3d';\nimport { Model3dRawToModel3dConnectionRegistry, Models3dFactory, Models3dMetaInfoRegistry, Models3dRegistry, Models3dResourceAsyncRegistry, Models3dService } from '@hellpig/anarchy-engine/Models3d';\nimport { MouseClickWatcherFactory, MouseClickWatcherRegistry, MousePositionWatcherFactory, MousePositionWatcherRegistry, MouseService } from '@hellpig/anarchy-engine/Mouse';\nimport { ParticlesFactory, ParticlesRegistry, ParticlesService } from '@hellpig/anarchy-engine/Particles';\nimport type { TPhysicsBodyService, TPhysicsWorldService } from '@hellpig/anarchy-engine/Physics';\nimport { PhysicsBodyFactory, PhysicsBodyRegistry, PhysicsBodyService, PhysicsWorldService } from '@hellpig/anarchy-engine/Physics';\nimport { RendererFactory, RendererRegistry, RendererService } from '@hellpig/anarchy-engine/Renderer';\nimport type { TScenesService, TSceneWrapper } from '@hellpig/anarchy-engine/Scene';\nimport { SceneFactory, SceneRegistry, ScenesService } from '@hellpig/anarchy-engine/Scene';\nimport type { TSpaceBaseServices, TSpaceCanvas, TSpaceLoops, TSpaceServices, TSpaceSettings } from '@hellpig/anarchy-engine/Space/Models';\nimport type { TSpatialGridService } from '@hellpig/anarchy-engine/Spatial';\nimport { SpatialGridFactory, SpatialGridRegistry, SpatialGridService } from '@hellpig/anarchy-engine/Spatial';\nimport { Text2dRegistry, Text2dRendererRegistry, Text3dRegistry, Text3dRendererRegistry, Text3dTextureRegistry, TextFactory, TextService } from '@hellpig/anarchy-engine/Text';\nimport type { TTextureService } from '@hellpig/anarchy-engine/Texture';\nimport { TextureMetaInfoRegistry, TextureResourceAsyncRegistry, TextureService } from '@hellpig/anarchy-engine/Texture';\nimport type { TTransformDriveService } from '@hellpig/anarchy-engine/TransformDrive';\nimport { TransformDriveFactory, TransformDriveRegistry, TransformDriveService } from '@hellpig/anarchy-engine/TransformDrive';\n\nexport function buildBaseServices(): TSpaceBaseServices {\n const scenesService: TScenesService = ScenesService(SceneFactory(), SceneRegistry());\n const loopService: TLoopService = LoopService(LoopFactory(), LoopRegistry());\n\n return { loopService, scenesService };\n}\n\nexport function buildEntitiesServices(\n sceneW: TSceneWrapper,\n canvas: TSpaceCanvas,\n container: TContainerDecorator,\n loops: TSpaceLoops,\n { loopService, scenesService }: TSpaceBaseServices,\n settings: TSpaceSettings\n): TSpaceServices {\n const loadingManagerService: TLoadingManagerService = LoadingManagerService(LoadingManagerFactory(), LoadingManagerRegistry());\n const loadingManagerW: TLoadingManagerWrapper = loadingManagerService.create({ name: DEFAULT_SPACE_LOADING_MANAGER_NAME });\n\n const textureService: TTextureService = TextureService(TextureResourceAsyncRegistry(), TextureMetaInfoRegistry(), loadingManagerW);\n const materialService: TMaterialService = MaterialService(MaterialFactory(), MaterialRegistry(), { textureService });\n const physicsWorldService: TPhysicsWorldService = PhysicsWorldService(sceneW, loops);\n const physicsBodyService: TPhysicsBodyService = PhysicsBodyService(PhysicsBodyFactory(), PhysicsBodyRegistry(), physicsWorldService);\n const spatialGridService: TSpatialGridService = SpatialGridService(SpatialGridFactory(), SpatialGridRegistry());\n const collisionsService: TCollisionsService = CollisionsService();\n const animationsService: TAnimationsService = AnimationsService(AnimationsResourceAsyncRegistry(), AnimationsMetaInfoRegistry(), loops, loadingManagerW, settings);\n const model3dToActorConnectionRegistry: TModel3dToActorConnectionRegistry = Model3dToActorConnectionRegistry();\n const model3dRawToModel3dConnectionRegistry: TModel3dRawToModel3dConnectionRegistry = Model3dRawToModel3dConnectionRegistry();\n const models3dService: TModels3dService = Models3dService(\n Models3dFactory(),\n Models3dRegistry(),\n Models3dResourceAsyncRegistry(),\n Models3dMetaInfoRegistry(),\n {\n materialService,\n animationsService,\n model3dRawToModel3dConnectionRegistry\n },\n loadingManagerW,\n settings\n );\n const fsmService: TFsmService = FsmService(FsmInstanceFactory(), FsmSourceFactory(), FsmInstanceRegistry(), FsmSourceRegistry());\n const transformDriveService: TTransformDriveService = TransformDriveService(TransformDriveFactory(), TransformDriveRegistry(), { loopService });\n const audioService: TAudioService = AudioService(\n AudioFactory(),\n AudioRegistry(),\n AudioResourceAsyncRegistry(),\n AudioListenersRegistry(),\n AudioMetaInfoRegistry(),\n { transformDriveService },\n loops,\n loadingManagerW\n );\n const cameraService: TCameraService = CameraService(CameraFactory(), CameraRegistry(), sceneW, { audioService, transformDriveService, container });\n\n return {\n actorService: ActorService(\n ActorFactory(),\n ActorRegistry(),\n {\n collisionsService,\n fsmService,\n loopService,\n model3dToActorConnectionRegistry,\n models3dService,\n physicsBodyService,\n spatialGridService,\n transformDriveService\n },\n sceneW\n ),\n audioService,\n cameraService,\n controlsService: ControlService(ControlsFactory(), ControlsRegistry(), loops, { cameraService }, canvas),\n collisionsService,\n scenesService,\n envMapService: EnvMapService(EnvMapFactory(), EnvMapRegistry(), EnvMapTextureAsyncRegistry(), EnvMapMetaInfoRegistry(), sceneW, loadingManagerW),\n fogService: FogService(FogFactory(), FogRegistry(), sceneW),\n fsmService,\n intersectionsWatcherService: IntersectionsWatcherService(IntersectionsWatcherFactory(), IntersectionsWatcherRegistry()),\n keyboardService: KeyboardService(container, KeyWatcherFactory(), KeyWatcherRegistry()),\n lightService: LightService(LightFactory(), LightRegistry(), { transformDriveService }, sceneW),\n loadingManagerService,\n loopService,\n materialService,\n models3dService,\n animationsService,\n mouseService: MouseService(container, MouseClickWatcherFactory(), MouseClickWatcherRegistry(), MousePositionWatcherFactory(), MousePositionWatcherRegistry(), loops),\n particlesService: ParticlesService(ParticlesFactory(), ParticlesRegistry(), { transformDriveService, materialService }, sceneW),\n physicsBodyService,\n physicsWorldService,\n rendererService: RendererService(RendererFactory(), RendererRegistry(), loops, { cameraService, container }, sceneW),\n spatialGridService,\n textService: TextService(\n TextFactory(),\n Text2dRegistry(),\n Text3dRegistry(),\n Text3dTextureRegistry(),\n Text2dRendererRegistry(),\n Text3dRendererRegistry(),\n loops,\n { loopService, physicsBodyService, cameraService, transformDriveService },\n sceneW\n ),\n textureService,\n transformDriveService\n };\n}\n"],"names":["buildBaseServices","scenesService","ScenesService","SceneFactory","SceneRegistry","loopService","LoopService","LoopFactory","LoopRegistry","buildEntitiesServices","sceneW","canvas","container","loops","settings","loadingManagerService","LoadingManagerService","LoadingManagerFactory","LoadingManagerRegistry","loadingManagerW","create","name","DEFAULT_SPACE_LOADING_MANAGER_NAME","textureService","TextureService","TextureResourceAsyncRegistry","TextureMetaInfoRegistry","materialService","MaterialService","MaterialFactory","MaterialRegistry","physicsWorldService","PhysicsWorldService","physicsBodyService","PhysicsBodyService","PhysicsBodyFactory","PhysicsBodyRegistry","spatialGridService","SpatialGridService","SpatialGridFactory","SpatialGridRegistry","collisionsService","CollisionsService","animationsService","AnimationsService","AnimationsResourceAsyncRegistry","AnimationsMetaInfoRegistry","model3dToActorConnectionRegistry","Model3dToActorConnectionRegistry","model3dRawToModel3dConnectionRegistry","Model3dRawToModel3dConnectionRegistry","models3dService","Models3dService","Models3dFactory","Models3dRegistry","Models3dResourceAsyncRegistry","Models3dMetaInfoRegistry","fsmService","FsmService","FsmInstanceFactory","FsmSourceFactory","FsmInstanceRegistry","FsmSourceRegistry","transformDriveService","TransformDriveService","TransformDriveFactory","TransformDriveRegistry","audioService","AudioService","AudioFactory","AudioRegistry","AudioResourceAsyncRegistry","AudioListenersRegistry","AudioMetaInfoRegistry","cameraService","CameraService","CameraFactory","CameraRegistry","actorService","ActorService","ActorFactory","ActorRegistry","controlsService","ControlService","ControlsFactory","ControlsRegistry","envMapService","EnvMapService","EnvMapFactory","EnvMapRegistry","EnvMapTextureAsyncRegistry","EnvMapMetaInfoRegistry","fogService","FogService","FogFactory","FogRegistry","intersectionsWatcherService","IntersectionsWatcherService","IntersectionsWatcherFactory","IntersectionsWatcherRegistry","keyboardService","KeyboardService","KeyWatcherFactory","KeyWatcherRegistry","lightService","LightService","LightFactory","LightRegistry","mouseService","MouseService","MouseClickWatcherFactory","MouseClickWatcherRegistry","MousePositionWatcherFactory","MousePositionWatcherRegistry","particlesService","ParticlesService","ParticlesFactory","ParticlesRegistry","rendererService","RendererService","RendererFactory","RendererRegistry","textService","TextService","TextFactory","Text2dRegistry","Text3dRegistry","Text3dTextureRegistry","Text2dRendererRegistry","Text3dRendererRegistry"],"mappings":"ygOA+CO,SAASA,oBACd,MAAMC,cAAgCC,cAAcC,eAAgBC,iBAGpE,MAAO,CAAEC,YAFyBC,YAAYC,cAAeC,gBAEvCP,4BACxB,CAEO,SAASQ,sBACdC,OACAC,OACAC,UACAC,OACAR,YAAEA,YAAAJ,cAAaA,eACfa,UAEA,MAAMC,sBAAgDC,sBAAsBC,wBAAyBC,0BAC/FC,gBAA0CJ,sBAAsBK,OAAO,CAAEC,KAAMC,qCAE/EC,eAAkCC,eAAeC,+BAAgCC,0BAA2BP,iBAC5GQ,gBAAoCC,gBAAgBC,kBAAmBC,mBAAoB,CAAEP,gCAC7FQ,oBAA4CC,oBAAoBtB,OAAQG,OACxEoB,mBAA0CC,mBAAmBC,qBAAsBC,sBAAuBL,qBAC1GM,mBAA0CC,mBAAmBC,qBAAsBC,uBACnFC,kBAAwCC,oBACxCC,kBAAwCC,kBAAkBC,kCAAmCC,6BAA8BjC,MAAOM,gBAAiBL,UACnJiC,iCAAsEC,mCACtEC,sCAAgFC,wCAChFC,gBAAoCC,gBACxCC,kBACAC,mBACAC,gCACAC,2BACA,CACE7B,gCACAgB,oCACAM,6EAEF9B,gBACAL,UAEI2C,WAA0BC,WAAWC,qBAAsBC,mBAAoBC,sBAAuBC,qBACtGC,sBAAgDC,sBAAsBC,wBAAyBC,yBAA0B,CAAE7D,0BAC3H8D,aAA8BC,aAClCC,eACAC,gBACAC,6BACAC,yBACAC,wBACA,CAAEV,6CACFlD,MACAM,iBAEIuD,cAAgCC,cAAcC,gBAAiBC,iBAAkBnE,OAAQ,CAAEyD,0BAAcJ,4CAAuBnD,sBAEtI,MAAO,CACLkE,aAAcC,aACZC,eACAC,gBACA,CACExC,oCACAgB,sBACApD,wBACA0C,kEACAI,gCACAlB,sCACAI,sCACA0B,6CAEFrD,QAEFyD,0BACAO,4BACAQ,gBAAiBC,eAAeC,kBAAmBC,mBAAoBxE,MAAO,CAAE6D,6BAAiB/D,QACjG8B,oCACAxC,4BACAqF,cAAeC,cAAcC,gBAAiBC,iBAAkBC,6BAA8BC,yBAA0BjF,OAAQS,iBAChIyE,WAAYC,WAAWC,aAAcC,cAAerF,QACpD+C,sBACAuC,4BAA6BC,4BAA4BC,8BAA+BC,gCACxFC,gBAAiBC,gBAAgBzF,UAAW0F,oBAAqBC,sBACjEC,aAAcC,aAAaC,eAAgBC,gBAAiB,CAAE5C,6CAAyBrD,QACvFK,4CACAV,wBACAsB,gCACAwB,gCACAR,oCACAiE,aAAcC,aAAajG,UAAWkG,2BAA4BC,4BAA6BC,8BAA+BC,+BAAgCpG,OAC9JqG,iBAAkBC,iBAAiBC,mBAAoBC,oBAAqB,CAAEtD,4CAAuBpC,iCAAmBjB,QACxHuB,sCACAF,wCACAuF,gBAAiBC,gBAAgBC,kBAAmBC,mBAAoB5G,MAAO,CAAE6D,4BAAe9D,qBAAaF,QAC7G2B,sCACAqF,YAAaC,YACXC,cACAC,iBACAC,iBACAC,wBACAC,yBACAC,yBACApH,MACA,CAAER,wBAAa4B,sCAAoByC,4BAAeX,6CAClDrD,QAEFa,8BACAwC,4CAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemaValidationUtils.js","sources":["../../../src/Space/Utils/SchemaValidationUtils.ts"],"sourcesContent":["import type { TAbstractResourceConfig } from '@
|
|
1
|
+
{"version":3,"file":"SchemaValidationUtils.js","sources":["../../../src/Space/Utils/SchemaValidationUtils.ts"],"sourcesContent":["import type { TAbstractResourceConfig } from '@hellpig/anarchy-engine/Abstract';\nimport type { TActorConfig } from '@hellpig/anarchy-engine/Actor';\nimport type { TAnyAudioConfig, TAudioResourceConfig } from '@hellpig/anarchy-engine/Audio';\nimport type { TWithName, TWithNameOptional, TWithTags } from '@hellpig/anarchy-engine/Mixins';\nimport type { TModel3dConfig, TModel3dResourceConfig } from '@hellpig/anarchy-engine/Models3d';\nimport { isPrimitiveModel3dResourceConfig, isPrimitiveModel3dSource } from '@hellpig/anarchy-engine/Models3d';\nimport type { TPhysicsBodyConfig, TPhysicsConfig } from '@hellpig/anarchy-engine/Physics';\nimport { findDuplicateString, isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\n\nexport const validateNames = (entities: ReadonlyArray<TWithNameOptional>): boolean => entities.every(validateName);\nexport const validateName = (entity: TWithNameOptional): boolean => validateField(entity, 'name');\nexport const validateCameraNames = (\n entities: ReadonlyArray<\n Readonly<{\n cameraName: string;\n }>\n >\n): boolean => entities.every(validateCameraName);\nexport const validateCameraName = (entity: Readonly<{ cameraName: string }>): boolean => validateField(entity, 'cameraName');\n\nexport const validateActorNamesForEveryEntity = (\n entities: ReadonlyArray<\n Readonly<{\n actorNames: ReadonlyArray<string>;\n }>\n >\n): boolean => entities.every(validateActorNames);\n\nexport const validateActorNames = (\n entity: Readonly<{\n actorNames: ReadonlyArray<string>;\n }>\n): boolean => validateArrayField(entity, 'actorNames');\n\nexport const validateTagsForEveryEntity = (entities: ReadonlyArray<TWithTags>): boolean => entities.every((e: TWithTags): boolean => validateTags(e.tags));\nexport const validateTags = (tags: ReadonlyArray<string> | undefined): boolean => (tags ? tags.every(validate) : true);\n\nexport const validateField = <T extends Record<string, any>>(obj: T, field: keyof T): boolean => validate(obj[field]);\nexport const validateArrayField = <T extends Record<string, any>>(obj: T, field: keyof T): boolean => obj[field].every(validate);\n\nexport const validate = (str: string | undefined): boolean => (isDefined(str) ? str.length > 0 && /^[A-z0-9_]+$/gm.test(str) : true);\n\nexport function validateAllActorsHasModel3d(actors: ReadonlyArray<TActorConfig>, models3d: ReadonlyArray<TModel3dConfig> | undefined): boolean {\n const sources: ReadonlyArray<string> = models3d?.map((v: TModel3dConfig): string => v.name) ?? [];\n return actors.every((actor: TActorConfig): boolean => (isNotDefined(models3d) ? true : sources.includes(actor.model3dSource)));\n}\n\nexport function validateAllActorsWithPhysicsHasRelatedPhysicsBody(actors: ReadonlyArray<TActorConfig>, physics: TPhysicsConfig): boolean {\n if (isNotDefined(physics.bodies)) return true;\n const { bodies } = physics;\n if (bodies.length === 0) return true;\n\n return actors.every((actor: TActorConfig): boolean => {\n if (isNotDefined(actor.physicsBodyName)) return true;\n return bodies.some((body: TPhysicsBodyConfig): boolean => body.name === actor.physicsBodyName);\n });\n}\n\nexport function validateNoSameName(entities: ReadonlyArray<TWithName>): string | undefined {\n const duplicate: string | undefined = findDuplicateString(entities.map((e: TWithName): string => e.name));\n return duplicate ? `Name \"${duplicate}\" is duplicated` : undefined;\n}\n\n// TODO would be nice to check all the resources and relations (e.g. materials)\nexport function validateAllModel3dEntityHasValidResource(entities: ReadonlyArray<TModel3dConfig>, resources: ReadonlyArray<TModel3dResourceConfig>): boolean {\n return entities.every((entity: TModel3dConfig): boolean => {\n if (isPrimitiveModel3dSource(entity.model3dSource)) return true;\n return resources.some((resource: TModel3dResourceConfig): boolean => resource.name === entity.model3dSource);\n });\n}\n\nexport function validateAllAudioEntityHasValidResource(entities: ReadonlyArray<TAnyAudioConfig>, resources: ReadonlyArray<TAudioResourceConfig>): boolean {\n return entities.every((entity: TAnyAudioConfig): boolean => {\n return resources.some((resource: TAudioResourceConfig): boolean => resource.name === entity.audioSource);\n });\n}\n\nexport function validateModel3dFileUrls(configs: ReadonlyArray<TModel3dResourceConfig>): boolean {\n return configs.every((config: TModel3dResourceConfig): boolean => {\n if (isPrimitiveModel3dResourceConfig(config)) return true;\n return validateFileUrl(config.url);\n });\n}\n\nexport function validateFileUrls(configs: ReadonlyArray<TAbstractResourceConfig>): boolean {\n return configs.every(({ url }: TAbstractResourceConfig): boolean => validateFileUrl(url));\n}\n\nexport function validateFileUrl(url: string): boolean {\n const regex = /^(\\/?|[a-zA-Z]:\\\\)[a-zA-Z0-9_\\-/\\\\]+\\.([A-z0-9]{1,4})$/;\n return regex.test(url);\n}\n"],"names":["validateNames","entities","every","validateName","entity","validateField","validateCameraNames","validateCameraName","validateActorNamesForEveryEntity","validateActorNames","validateArrayField","validateTagsForEveryEntity","e","validateTags","tags","validate","obj","field","str","isDefined","length","test","validateAllActorsHasModel3d","actors","models3d","sources","map","v","name","actor","isNotDefined","includes","model3dSource","validateAllActorsWithPhysicsHasRelatedPhysicsBody","physics","bodies","physicsBodyName","some","body","validateNoSameName","duplicate","findDuplicateString","validateAllModel3dEntityHasValidResource","resources","isPrimitiveModel3dSource","resource","validateAllAudioEntityHasValidResource","audioSource","validateModel3dFileUrls","configs","config","isPrimitiveModel3dResourceConfig","validateFileUrl","url","validateFileUrls"],"mappings":"uSASO,MAAMA,cAAiBC,UAAwDA,SAASC,MAAMC,cACxFA,aAAgBC,QAAuCC,cAAcD,OAAQ,QAC7EE,oBACXL,UAKYA,SAASC,MAAMK,oBAChBA,mBAAsBH,QAAsDC,cAAcD,OAAQ,cAElGI,iCACXP,UAKYA,SAASC,MAAMO,oBAEhBA,mBACXL,QAGYM,mBAAmBN,OAAQ,cAE5BO,2BAA8BV,UAAgDA,SAASC,MAAOU,GAA0BC,aAAaD,EAAEE,OACvID,aAAgBC,OAAsDA,MAAOA,KAAKZ,MAAMa,UAExFV,cAAgB,CAAgCW,IAAQC,QAA4BF,SAASC,IAAIC,QACjGP,mBAAqB,CAAgCM,IAAQC,QAA4BD,IAAIC,OAAOf,MAAMa,UAE1GA,SAAYG,MAAsCC,UAAUD,MAAOA,IAAIE,OAAS,GAAK,iBAAiBC,KAAKH,KAEjH,SAASI,4BAA4BC,OAAqCC,UAC/E,MAAMC,QAAiCD,UAAUE,IAAKC,GAA8BA,EAAEC,OAAS,GAC/F,OAAOL,OAAOrB,MAAO2B,SAAkCC,aAAaN,WAAmBC,QAAQM,SAASF,MAAMG,eAChH,CAEO,SAASC,kDAAkDV,OAAqCW,SACrG,GAAIJ,aAAaI,QAAQC,QAAS,OAAO,EACzC,MAAMA,OAAEA,QAAWD,QACnB,OAAsB,IAAlBC,OAAOf,QAEJG,OAAOrB,MAAO2B,SACfC,aAAaD,MAAMO,kBAChBD,OAAOE,KAAMC,MAAsCA,KAAKV,OAASC,MAAMO,iBAElF,CAEO,SAASG,mBAAmBtC,UACjC,MAAMuC,UAAgCC,oBAAoBxC,SAASyB,IAAKd,GAAyBA,EAAEgB,OACnG,OAAOY,UAAY,SAASA,gCAA6B,CAC3D,CAGO,SAASE,yCAAyCzC,SAAyC0C,WAChG,OAAO1C,SAASC,MAAOE,UACjBwC,yBAAyBxC,OAAO4B,gBAC7BW,UAAUN,KAAMQ,UAA8CA,SAASjB,OAASxB,OAAO4B,eAElG,CAEO,SAASc,uCAAuC7C,SAA0C0C,WAC/F,OAAO1C,SAASC,MAAOE,QACduC,UAAUN,KAAMQ,UAA4CA,SAASjB,OAASxB,OAAO2C,aAEhG,CAEO,SAASC,wBAAwBC,SACtC,OAAOA,QAAQ/C,MAAOgD,UAChBC,iCAAiCD,SAC9BE,gBAAgBF,OAAOG,KAElC,CAEO,SAASC,iBAAiBL,SAC/B,OAAOA,QAAQ/C,MAAM,EAAGmD,WAA4CD,gBAAgBC,KACtF,CAEO,SAASD,gBAAgBC,KAE9B,MADc,yDACDhC,KAAKgC,IACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SchemasValidator.js","sources":["../../../src/Space/Validators/SchemasValidator.ts"],"sourcesContent":["import type { TAbstractResourceConfig } from '@Anarchy/Engine/Abstract';\nimport type { TActorConfig } from '@Anarchy/Engine/Actor';\nimport type { TAnyAudioConfig, TAudioResourceConfig } from '@Anarchy/Engine/Audio';\nimport type { TAnyCameraConfig } from '@Anarchy/Engine/Camera';\nimport type { TControlsConfig } from '@Anarchy/Engine/Controls';\nimport type { TAnyIntersectionsWatcherConfig } from '@Anarchy/Engine/Intersections';\nimport { isIntersectionsCameraWatcherConfig } from '@Anarchy/Engine/Intersections';\nimport type { TActive, TWithName, TWithNameOptional, TWithTags } from '@Anarchy/Engine/Mixins';\nimport type { TModel3dConfig, TModel3dResourceConfig } from '@Anarchy/Engine/Models3d';\nimport type { TPhysicsBodyConfig, TPhysicsConfig } from '@Anarchy/Engine/Physics';\nimport type { TSceneConfig } from '@Anarchy/Engine/Scene/Models';\nimport { SpaceSchemaVersion } from '@Anarchy/Engine/Space/Constants';\nimport type { TSpaceConfig, TSpaceConfigEntities, TSpaceConfigResources } from '@Anarchy/Engine/Space/Models';\nimport TSpaceConfigSchema from '@Anarchy/Engine/Space/Schemas/TSpaceConfig.json';\nimport {\n validate,\n validateActorNamesForEveryEntity,\n validateAllActorsHasModel3d,\n validateAllActorsWithPhysicsHasRelatedPhysicsBody,\n validateAllAudioEntityHasValidResource,\n validateAllModel3dEntityHasValidResource,\n validateCameraNames,\n validateFileUrls,\n validateModel3dFileUrls,\n validateNames,\n validateNoSameName,\n validateTags,\n validateTagsForEveryEntity\n} from '@Anarchy/Engine/Space/Utils';\nimport { isDefined } from '@Anarchy/Shared/Utils';\nimport type { Schema } from '@cfworker/json-schema';\nimport { Validator } from '@cfworker/json-schema';\nimport { isArray } from 'lodash-es';\n\ntype TSchemaValidationResult = Readonly<{ isValid: boolean; errors: ReadonlyArray<any> | null | undefined }>;\n\nexport function validSpaceConfig(config: TSpaceConfig): TSchemaValidationResult {\n const jsonResult = validateJsonSchema(config);\n const dataResult = validateData(config);\n const jsonErrors: ReadonlyArray<any> = jsonResult.errors ?? [];\n const dataErrors: ReadonlyArray<any> = dataResult.errors ?? [];\n\n return { isValid: jsonResult.isValid && dataResult.isValid, errors: [...jsonErrors, ...dataErrors] };\n}\n\nfunction validateJsonSchema(config: TSpaceConfig): TSchemaValidationResult {\n const validator = new Validator(TSpaceConfigSchema as Schema, '7');\n const { valid, errors } = validator.validate(config);\n return { isValid: valid, errors };\n}\n\nfunction validateData({ name, version, scenes, resources, entities, canvasSelector, tags }: TSpaceConfig): TSchemaValidationResult {\n const { models3d: models3dResources, audio: audioResources, envMaps, textures } = resources;\n const { actors, audio, cameras, spatialGrids, controls, intersections, lights, materials, models3d: models3dEntities, physics, fogs, texts } = entities;\n\n const basicErrors: ReadonlyArray<string> = validateConfigBasics(name, version, scenes, canvasSelector, tags);\n const activeErrors: ReadonlyArray<string> = validateActiveEntities({ cameras, scenes, controls });\n const relationsErrors: ReadonlyArray<string> = validateRelations(controls, cameras, actors, models3dEntities, models3dResources, audioResources, audio, intersections, physics);\n const namesErrors: ReadonlyArray<string> = validateEntityNames({\n scenes,\n spatialGrids,\n actors,\n cameras,\n intersections,\n lights,\n fogs,\n texts,\n controls,\n models3dResources,\n materials,\n envMaps,\n textures\n });\n const tagsErrors: ReadonlyArray<string> = validateEntityTags({\n scenes,\n spatialGrids,\n actors,\n cameras,\n intersections,\n lights,\n fogs,\n texts,\n controls,\n models3dResources,\n materials,\n envMaps,\n textures\n });\n const duplicationErrors: ReadonlyArray<string> = validateNamesDuplication(entities, resources);\n const urlsErrors: ReadonlyArray<string> = validateUrls({ models3dResources }, { envMaps, textures });\n\n const errors: ReadonlyArray<string> = [...basicErrors, ...activeErrors, ...relationsErrors, ...namesErrors, ...tagsErrors, ...duplicationErrors, ...urlsErrors];\n\n return { isValid: errors.length === 0, errors };\n}\n\nfunction validateConfigBasics(name: string, version: SpaceSchemaVersion, scenes: ReadonlyArray<TSceneConfig>, canvasSelector: string, tags?: ReadonlyArray<string>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n if (version !== SpaceSchemaVersion.V1) errors = [...errors, `Unsupported schema's version(${version}). Supported version is: ${SpaceSchemaVersion.V2}`];\n if (scenes.length === 0) errors = [...errors, 'No scenes are defined'];\n if (!/^[a-zA-Z0-9\\s.#\\-_>[\\]='\"*^$~|(),:]+$/.test(canvasSelector)) errors = [...errors, 'Canvas selector must be defined and contain only allowed characters (a normal css selector)'];\n if (!validateTags(tags)) errors = [...errors, 'Space config tags must contain only letters, numbers and underscores'];\n if (!validate(name)) errors = [...errors, 'Space config name must be defined and contain only letters, numbers and underscores'];\n\n return errors;\n}\n\nfunction validateActiveEntities(entities: Record<string, ReadonlyArray<TActive>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(entities).forEach((list): void => {\n const [, key] = Object.entries(list)[0];\n const [, value] = Object.entries(list)[1];\n\n if ((value as ReadonlyArray<TActive>).filter((v: TActive): boolean => v.isActive).length > 1) errors = [...errors, `Must be only one active entity of \"${key}\", but multiple are active`];\n });\n\n return errors;\n}\n\nfunction validateRelations(\n controls: ReadonlyArray<TControlsConfig>,\n cameras: ReadonlyArray<TAnyCameraConfig>,\n actors: ReadonlyArray<TActorConfig>,\n models3dEntities: ReadonlyArray<TModel3dConfig>,\n models3dResources: ReadonlyArray<TModel3dResourceConfig>,\n audioResources: ReadonlyArray<TAudioResourceConfig>,\n audio: ReadonlyArray<TAnyAudioConfig>,\n intersections: ReadonlyArray<TAnyIntersectionsWatcherConfig>,\n physics: TPhysicsConfig\n): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n if (controls.length > 0 && cameras.length === 0) errors = [...errors, 'Controls cannot be defined without at least one camera, but there are no cameras'];\n if (!controls.every((control: TControlsConfig): boolean => cameras.some((camera: TAnyCameraConfig): boolean => camera.name === control.cameraName)))\n errors = [...errors, 'Not every control has a camera'];\n if (!validateAllActorsHasModel3d(actors, models3dEntities)) errors = [...errors, 'Not every actor has a defined model3dSource (check actors model3dSource against models3d entities)'];\n if (!validateAllActorsWithPhysicsHasRelatedPhysicsBody(actors, physics)) errors = [...errors, 'Not every actor has a defined model3dSource (check actors model3dSource against models3d entities)'];\n if (!validateAllModel3dEntityHasValidResource(models3dEntities, models3dResources)) errors = [...errors, 'Not every model3d entity has a valid resource (must be a primitive or an url)'];\n if (!validateAllAudioEntityHasValidResource(audio, audioResources)) errors = [...errors, 'Not every audio entity has a valid resource (must be a primitive or an url)'];\n if (!validateCameraNames(intersections.filter(isIntersectionsCameraWatcherConfig))) errors = [...errors, 'Not every intersection camera name is valid'];\n if (!validateActorNamesForEveryEntity(intersections)) errors = [...errors, 'Not every intersection actor name is valid'];\n\n return errors;\n}\n\nfunction validateEntityNames(entities: Record<string, ReadonlyArray<TWithNameOptional | TWithName>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(entities).forEach((list): void => {\n const [, key] = Object.entries(list)[0];\n const [, value] = Object.entries(list)[1];\n\n const isValid: boolean = validateNames(value as ReadonlyArray<TWithNameOptional | TWithName>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") names must be defined and contain only letters, numbers and underscores`];\n });\n\n return errors;\n}\n\nfunction validateEntityTags(entities: Record<string, ReadonlyArray<TWithTags>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(entities).forEach((list): void => {\n const [, key] = Object.entries(list)[0];\n const [, value] = Object.entries(list)[1];\n\n const isValid: boolean = validateTagsForEveryEntity(value as ReadonlyArray<Record<string, TWithTags>>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") tags must contain only letters, numbers and underscores`];\n });\n\n return errors;\n}\n\nfunction validateNamesDuplication(entities: TSpaceConfigEntities, resources: TSpaceConfigResources): ReadonlyArray<string> {\n const bodies: ReadonlyArray<TPhysicsBodyConfig> = entities.physics?.bodies ?? [];\n\n return [\n //\"physics\" is not an array, but we could check the bodies\n ...Object.values(entities).filter(isArray).map(validateNoSameName),\n validateNoSameName(bodies),\n ...Object.values(resources).map(validateNoSameName)\n ].filter(isDefined);\n}\n\nfunction validateUrls(models3dResources: Record<string, ReadonlyArray<TModel3dResourceConfig>>, withFileUrls: Record<string, ReadonlyArray<TAbstractResourceConfig>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(models3dResources).forEach((configs): void => {\n const [, key] = Object.entries(configs)[0];\n const [, value] = Object.entries(configs)[1];\n const isValid: boolean = validateModel3dFileUrls(value as ReadonlyArray<TModel3dResourceConfig>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") URLs must contain only letters, numbers and underscores`];\n });\n\n Object.entries(withFileUrls).forEach((configs): void => {\n const [, key] = Object.entries(configs)[0];\n const [, value] = Object.entries(configs)[1];\n const isValid: boolean = validateFileUrls(value as ReadonlyArray<TAbstractResourceConfig>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") URLs must contain only letters, numbers and underscores`];\n });\n\n return errors;\n}\n"],"names":["validSpaceConfig","config","jsonResult","validator","Validator","TSpaceConfigSchema","valid","errors","validate","isValid","validateJsonSchema","dataResult","name","version","scenes","resources","entities","canvasSelector","tags","models3d","models3dResources","audio","audioResources","envMaps","textures","actors","cameras","spatialGrids","controls","intersections","lights","materials","models3dEntities","physics","fogs","texts","basicErrors","SpaceSchemaVersion","V1","V2","length","test","validateTags","validateConfigBasics","activeErrors","Object","entries","forEach","list","key","value","filter","v","isActive","validateActiveEntities","relationsErrors","every","control","some","camera","cameraName","validateAllActorsHasModel3d","validateAllActorsWithPhysicsHasRelatedPhysicsBody","validateAllModel3dEntityHasValidResource","validateAllAudioEntityHasValidResource","validateCameraNames","isIntersectionsCameraWatcherConfig","validateActorNamesForEveryEntity","validateRelations","namesErrors","validateNames","validateEntityNames","tagsErrors","validateTagsForEveryEntity","validateEntityTags","duplicationErrors","bodies","values","isArray","map","validateNoSameName","isDefined","validateNamesDuplication","urlsErrors","withFileUrls","configs","validateModel3dFileUrls","validateFileUrls","validateUrls","validateData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SchemasValidator.js","sources":["../../../src/Space/Validators/SchemasValidator.ts"],"sourcesContent":["import type { Schema } from '@cfworker/json-schema';\nimport { Validator } from '@cfworker/json-schema';\nimport type { TAbstractResourceConfig } from '@hellpig/anarchy-engine/Abstract';\nimport type { TActorConfig } from '@hellpig/anarchy-engine/Actor';\nimport type { TAnyAudioConfig, TAudioResourceConfig } from '@hellpig/anarchy-engine/Audio';\nimport type { TAnyCameraConfig } from '@hellpig/anarchy-engine/Camera';\nimport type { TControlsConfig } from '@hellpig/anarchy-engine/Controls';\nimport type { TAnyIntersectionsWatcherConfig } from '@hellpig/anarchy-engine/Intersections';\nimport { isIntersectionsCameraWatcherConfig } from '@hellpig/anarchy-engine/Intersections';\nimport type { TActive, TWithName, TWithNameOptional, TWithTags } from '@hellpig/anarchy-engine/Mixins';\nimport type { TModel3dConfig, TModel3dResourceConfig } from '@hellpig/anarchy-engine/Models3d';\nimport type { TPhysicsBodyConfig, TPhysicsConfig } from '@hellpig/anarchy-engine/Physics';\nimport type { TSceneConfig } from '@hellpig/anarchy-engine/Scene/Models';\nimport { SpaceSchemaVersion } from '@hellpig/anarchy-engine/Space/Constants';\nimport type { TSpaceConfig, TSpaceConfigEntities, TSpaceConfigResources } from '@hellpig/anarchy-engine/Space/Models';\nimport TSpaceConfigSchema from '@hellpig/anarchy-engine/Space/Schemas/TSpaceConfig.json';\nimport {\n validate,\n validateActorNamesForEveryEntity,\n validateAllActorsHasModel3d,\n validateAllActorsWithPhysicsHasRelatedPhysicsBody,\n validateAllAudioEntityHasValidResource,\n validateAllModel3dEntityHasValidResource,\n validateCameraNames,\n validateFileUrls,\n validateModel3dFileUrls,\n validateNames,\n validateNoSameName,\n validateTags,\n validateTagsForEveryEntity\n} from '@hellpig/anarchy-engine/Space/Utils';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\nimport { isArray } from 'lodash-es';\n\ntype TSchemaValidationResult = Readonly<{ isValid: boolean; errors: ReadonlyArray<any> | null | undefined }>;\n\nexport function validSpaceConfig(config: TSpaceConfig): TSchemaValidationResult {\n const jsonResult = validateJsonSchema(config);\n const dataResult = validateData(config);\n const jsonErrors: ReadonlyArray<any> = jsonResult.errors ?? [];\n const dataErrors: ReadonlyArray<any> = dataResult.errors ?? [];\n\n return { isValid: jsonResult.isValid && dataResult.isValid, errors: [...jsonErrors, ...dataErrors] };\n}\n\nfunction validateJsonSchema(config: TSpaceConfig): TSchemaValidationResult {\n const validator = new Validator(TSpaceConfigSchema as Schema, '7');\n const { valid, errors } = validator.validate(config);\n return { isValid: valid, errors };\n}\n\nfunction validateData({ name, version, scenes, resources, entities, canvasSelector, tags }: TSpaceConfig): TSchemaValidationResult {\n const { models3d: models3dResources, audio: audioResources, envMaps, textures } = resources;\n const { actors, audio, cameras, spatialGrids, controls, intersections, lights, materials, models3d: models3dEntities, physics, fogs, texts } = entities;\n\n const basicErrors: ReadonlyArray<string> = validateConfigBasics(name, version, scenes, canvasSelector, tags);\n const activeErrors: ReadonlyArray<string> = validateActiveEntities({ cameras, scenes, controls });\n const relationsErrors: ReadonlyArray<string> = validateRelations(controls, cameras, actors, models3dEntities, models3dResources, audioResources, audio, intersections, physics);\n const namesErrors: ReadonlyArray<string> = validateEntityNames({\n scenes,\n spatialGrids,\n actors,\n cameras,\n intersections,\n lights,\n fogs,\n texts,\n controls,\n models3dResources,\n materials,\n envMaps,\n textures\n });\n const tagsErrors: ReadonlyArray<string> = validateEntityTags({\n scenes,\n spatialGrids,\n actors,\n cameras,\n intersections,\n lights,\n fogs,\n texts,\n controls,\n models3dResources,\n materials,\n envMaps,\n textures\n });\n const duplicationErrors: ReadonlyArray<string> = validateNamesDuplication(entities, resources);\n const urlsErrors: ReadonlyArray<string> = validateUrls({ models3dResources }, { envMaps, textures });\n\n const errors: ReadonlyArray<string> = [...basicErrors, ...activeErrors, ...relationsErrors, ...namesErrors, ...tagsErrors, ...duplicationErrors, ...urlsErrors];\n\n return { isValid: errors.length === 0, errors };\n}\n\nfunction validateConfigBasics(name: string, version: SpaceSchemaVersion, scenes: ReadonlyArray<TSceneConfig>, canvasSelector: string, tags?: ReadonlyArray<string>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n if (version !== SpaceSchemaVersion.V1) errors = [...errors, `Unsupported schema's version(${version}). Supported version is: ${SpaceSchemaVersion.V2}`];\n if (scenes.length === 0) errors = [...errors, 'No scenes are defined'];\n if (!/^[a-zA-Z0-9\\s.#\\-_>[\\]='\"*^$~|(),:]+$/.test(canvasSelector)) errors = [...errors, 'Canvas selector must be defined and contain only allowed characters (a normal css selector)'];\n if (!validateTags(tags)) errors = [...errors, 'Space config tags must contain only letters, numbers and underscores'];\n if (!validate(name)) errors = [...errors, 'Space config name must be defined and contain only letters, numbers and underscores'];\n\n return errors;\n}\n\nfunction validateActiveEntities(entities: Record<string, ReadonlyArray<TActive>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(entities).forEach((list): void => {\n const [, key] = Object.entries(list)[0];\n const [, value] = Object.entries(list)[1];\n\n if ((value as ReadonlyArray<TActive>).filter((v: TActive): boolean => v.isActive).length > 1) errors = [...errors, `Must be only one active entity of \"${key}\", but multiple are active`];\n });\n\n return errors;\n}\n\nfunction validateRelations(\n controls: ReadonlyArray<TControlsConfig>,\n cameras: ReadonlyArray<TAnyCameraConfig>,\n actors: ReadonlyArray<TActorConfig>,\n models3dEntities: ReadonlyArray<TModel3dConfig>,\n models3dResources: ReadonlyArray<TModel3dResourceConfig>,\n audioResources: ReadonlyArray<TAudioResourceConfig>,\n audio: ReadonlyArray<TAnyAudioConfig>,\n intersections: ReadonlyArray<TAnyIntersectionsWatcherConfig>,\n physics: TPhysicsConfig\n): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n if (controls.length > 0 && cameras.length === 0) errors = [...errors, 'Controls cannot be defined without at least one camera, but there are no cameras'];\n if (!controls.every((control: TControlsConfig): boolean => cameras.some((camera: TAnyCameraConfig): boolean => camera.name === control.cameraName)))\n errors = [...errors, 'Not every control has a camera'];\n if (!validateAllActorsHasModel3d(actors, models3dEntities)) errors = [...errors, 'Not every actor has a defined model3dSource (check actors model3dSource against models3d entities)'];\n if (!validateAllActorsWithPhysicsHasRelatedPhysicsBody(actors, physics)) errors = [...errors, 'Not every actor has a defined model3dSource (check actors model3dSource against models3d entities)'];\n if (!validateAllModel3dEntityHasValidResource(models3dEntities, models3dResources)) errors = [...errors, 'Not every model3d entity has a valid resource (must be a primitive or an url)'];\n if (!validateAllAudioEntityHasValidResource(audio, audioResources)) errors = [...errors, 'Not every audio entity has a valid resource (must be a primitive or an url)'];\n if (!validateCameraNames(intersections.filter(isIntersectionsCameraWatcherConfig))) errors = [...errors, 'Not every intersection camera name is valid'];\n if (!validateActorNamesForEveryEntity(intersections)) errors = [...errors, 'Not every intersection actor name is valid'];\n\n return errors;\n}\n\nfunction validateEntityNames(entities: Record<string, ReadonlyArray<TWithNameOptional | TWithName>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(entities).forEach((list): void => {\n const [, key] = Object.entries(list)[0];\n const [, value] = Object.entries(list)[1];\n\n const isValid: boolean = validateNames(value as ReadonlyArray<TWithNameOptional | TWithName>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") names must be defined and contain only letters, numbers and underscores`];\n });\n\n return errors;\n}\n\nfunction validateEntityTags(entities: Record<string, ReadonlyArray<TWithTags>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(entities).forEach((list): void => {\n const [, key] = Object.entries(list)[0];\n const [, value] = Object.entries(list)[1];\n\n const isValid: boolean = validateTagsForEveryEntity(value as ReadonlyArray<Record<string, TWithTags>>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") tags must contain only letters, numbers and underscores`];\n });\n\n return errors;\n}\n\nfunction validateNamesDuplication(entities: TSpaceConfigEntities, resources: TSpaceConfigResources): ReadonlyArray<string> {\n const bodies: ReadonlyArray<TPhysicsBodyConfig> = entities.physics?.bodies ?? [];\n\n return [\n //\"physics\" is not an array, but we could check the bodies\n ...Object.values(entities).filter(isArray).map(validateNoSameName),\n validateNoSameName(bodies),\n ...Object.values(resources).map(validateNoSameName)\n ].filter(isDefined);\n}\n\nfunction validateUrls(models3dResources: Record<string, ReadonlyArray<TModel3dResourceConfig>>, withFileUrls: Record<string, ReadonlyArray<TAbstractResourceConfig>>): ReadonlyArray<string> {\n let errors: ReadonlyArray<string> = [];\n\n Object.entries(models3dResources).forEach((configs): void => {\n const [, key] = Object.entries(configs)[0];\n const [, value] = Object.entries(configs)[1];\n const isValid: boolean = validateModel3dFileUrls(value as ReadonlyArray<TModel3dResourceConfig>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") URLs must contain only letters, numbers and underscores`];\n });\n\n Object.entries(withFileUrls).forEach((configs): void => {\n const [, key] = Object.entries(configs)[0];\n const [, value] = Object.entries(configs)[1];\n const isValid: boolean = validateFileUrls(value as ReadonlyArray<TAbstractResourceConfig>);\n if (!isValid) errors = [...errors, `Entity (\"${key}\") URLs must contain only letters, numbers and underscores`];\n });\n\n return errors;\n}\n"],"names":["validSpaceConfig","config","jsonResult","validator","Validator","TSpaceConfigSchema","valid","errors","validate","isValid","validateJsonSchema","dataResult","name","version","scenes","resources","entities","canvasSelector","tags","models3d","models3dResources","audio","audioResources","envMaps","textures","actors","cameras","spatialGrids","controls","intersections","lights","materials","models3dEntities","physics","fogs","texts","basicErrors","SpaceSchemaVersion","V1","V2","length","test","validateTags","validateConfigBasics","activeErrors","Object","entries","forEach","list","key","value","filter","v","isActive","validateActiveEntities","relationsErrors","every","control","some","camera","cameraName","validateAllActorsHasModel3d","validateAllActorsWithPhysicsHasRelatedPhysicsBody","validateAllModel3dEntityHasValidResource","validateAllAudioEntityHasValidResource","validateCameraNames","isIntersectionsCameraWatcherConfig","validateActorNamesForEveryEntity","validateRelations","namesErrors","validateNames","validateEntityNames","tagsErrors","validateTagsForEveryEntity","validateEntityTags","duplicationErrors","bodies","values","isArray","map","validateNoSameName","isDefined","validateNamesDuplication","urlsErrors","withFileUrls","configs","validateModel3dFileUrls","validateFileUrls","validateUrls","validateData"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidateConfig.js","sources":["../../../src/Space/Validators/ValidateConfig.ts"],"sourcesContent":["import type { TSpaceConfig } from '@
|
|
1
|
+
{"version":3,"file":"ValidateConfig.js","sources":["../../../src/Space/Validators/ValidateConfig.ts"],"sourcesContent":["import type { TSpaceConfig } from '@hellpig/anarchy-engine/Space/Models';\nimport { validSpaceConfig } from '@hellpig/anarchy-engine/Space/Validators/SchemasValidator';\n\nexport function validateConfig(config: TSpaceConfig): void | never {\n const { isValid, errors } = validSpaceConfig(config);\n if (!isValid) {\n // TODO LOGGER: should be forwarded to the errors hub (which is not implemented yet)\n console.error(errors);\n throw new Error('Failed to launch a space: invalid data format');\n }\n}\n"],"names":["validateConfig","config","isValid","errors","validSpaceConfig","console","error","Error"],"mappings":"oDAGO,SAASA,eAAeC,QAC7B,MAAMC,QAAEA,QAAAC,OAASA,QAAWC,iBAAiBH,QAC7C,IAAKC,QAGH,MADAG,QAAQC,MAAMH,QACR,IAAII,MAAM,gDAEpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidateSpace.js","sources":["../../../src/Space/Validators/ValidateSpace.ts"],"sourcesContent":["import type { TSpace, TSpaceRegistry } from '@
|
|
1
|
+
{"version":3,"file":"ValidateSpace.js","sources":["../../../src/Space/Validators/ValidateSpace.ts"],"sourcesContent":["import type { TSpace, TSpaceRegistry } from '@hellpig/anarchy-engine/Space/Models';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\n\nexport function validateSpacesDoNotUseSameCanvas(registry: TSpaceRegistry, space: TSpace): boolean {\n const duplicates: TSpace | undefined = registry.find((s: TSpace): boolean => Object.is(s.getCanvasElement(), space.getCanvasElement()));\n return isNotDefined(duplicates);\n}\n"],"names":["validateSpacesDoNotUseSameCanvas","registry","space","duplicates","find","s","Object","is","getCanvasElement","isNotDefined"],"mappings":"gFAGO,SAASA,iCAAiCC,SAA0BC,OACzE,MAAMC,WAAiCF,SAASG,KAAMC,GAAuBC,OAAOC,GAAGF,EAAEG,mBAAoBN,MAAMM,qBACnH,OAAOC,aAAaN,WACtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Spatial/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TSpatialGridConfig, TSpatialGridParams } from '@
|
|
1
|
+
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Spatial/Adapters/ConfigToParams.ts"],"sourcesContent":["import type { TSpatialGridConfig, TSpatialGridParams } from '@hellpig/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigToParamsSpatialData.js","sources":["../../../src/Spatial/Adapters/ConfigToParamsSpatialData.ts"],"sourcesContent":["import type { TSpatialConfigToParamsSpatialDataDependencies, TSpatialDataConfig, TSpatialDataParams } from '@
|
|
1
|
+
{"version":3,"file":"ConfigToParamsSpatialData.js","sources":["../../../src/Spatial/Adapters/ConfigToParamsSpatialData.ts"],"sourcesContent":["import type { TSpatialConfigToParamsSpatialDataDependencies, TSpatialDataConfig, TSpatialDataParams } from '@hellpig/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Spatial/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TActor } from '@
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Spatial/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TActor } from '@hellpig/anarchy-engine/Actor';\nimport { extractSerializableRegistrableFields } from '@hellpig/anarchy-engine/Mixins';\nimport type { TSpatialCellId, TSpatialCellSerializedData, TSpatialCellWrapper, TSpatialGridConfig, TSpatialGridWrapper } from '@hellpig/anarchy-engine/Spatial/Models';\nimport { filterOutEmptyFields } from '@hellpig/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialGridFactory.js","sources":["../../../src/Spatial/Factories/SpatialGridFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@
|
|
1
|
+
{"version":3,"file":"SpatialGridFactory.js","sources":["../../../src/Spatial/Factories/SpatialGridFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { spatialConfigToParams as configToParams } from '@hellpig/anarchy-engine/Spatial/Adapters';\nimport type { TSpatialGridFactory, TSpatialGridParams, TSpatialGridWrapper } from '@hellpig/anarchy-engine/Spatial/Models';\nimport { SpatialGridWrapper } from '@hellpig/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithReactivePosition.js","sources":["../../../src/Spatial/Mixins/WithReactivePosition.ts"],"sourcesContent":["import type { TWithReactivePosition } from '@
|
|
1
|
+
{"version":3,"file":"WithReactivePosition.js","sources":["../../../src/Spatial/Mixins/WithReactivePosition.ts"],"sourcesContent":["import type { TWithReactivePosition } from '@hellpig/anarchy-engine/Spatial/Models';\nimport { Subject } from 'rxjs';\nimport type { Group, Mesh, Object3D } from 'three';\nimport { Vector3 } from 'three';\n\nexport function withReactivePosition(entity: Mesh | Group | Object3D): TWithReactivePosition {\n const position$: Subject<Vector3> = new Subject<Vector3>();\n let prevPosition: Vector3 = new Vector3();\n\n function update(): void {\n if (prevPosition.equals(entity.position)) return;\n\n const newPosition: Vector3 = entity.position.clone();\n position$.next(newPosition);\n prevPosition = newPosition;\n }\n\n return { value$: position$, update };\n}\n"],"names":["withReactivePosition","entity","position$","Subject","prevPosition","Vector3","value$","update","equals","position","newPosition","clone","next"],"mappings":"sGAKO,SAASA,qBAAqBC,QACnC,MAAMC,UAA8B,IAAIC,QACxC,IAAIC,aAAwB,IAAIC,QAUhC,MAAO,CAAEC,OAAQJ,UAAWK,OAR5B,WACE,GAAIH,aAAaI,OAAOP,OAAOQ,UAAW,OAE1C,MAAMC,YAAuBT,OAAOQ,SAASE,QAC7CT,UAAUU,KAAKF,aACfN,aAAeM,WACjB,EAGF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithReactiveRotation.js","sources":["../../../src/Spatial/Mixins/WithReactiveRotation.ts"],"sourcesContent":["import type { TWithReactiveRotation } from '@
|
|
1
|
+
{"version":3,"file":"WithReactiveRotation.js","sources":["../../../src/Spatial/Mixins/WithReactiveRotation.ts"],"sourcesContent":["import type { TWithReactiveRotation } from '@hellpig/anarchy-engine/Spatial/Models';\nimport { Subject } from 'rxjs';\nimport type { Group, Mesh, Object3D } from 'three';\nimport { Euler } from 'three';\n\nexport function withReactiveRotation(entity: Mesh | Group | Object3D): TWithReactiveRotation {\n const rotation$: Subject<Euler> = new Subject<Euler>();\n let prevRotation: Euler = new Euler();\n\n function update(): void {\n if (prevRotation.equals(entity.rotation)) return;\n\n const newRotation: Euler = entity.rotation.clone();\n rotation$.next(newRotation);\n prevRotation = newRotation;\n }\n\n return { value$: rotation$, update };\n}\n"],"names":["withReactiveRotation","entity","rotation$","Subject","prevRotation","Euler","value$","update","equals","rotation","newRotation","clone","next"],"mappings":"oGAKO,SAASA,qBAAqBC,QACnC,MAAMC,UAA4B,IAAIC,QACtC,IAAIC,aAAsB,IAAIC,MAU9B,MAAO,CAAEC,OAAQJ,UAAWK,OAR5B,WACE,GAAIH,aAAaI,OAAOP,OAAOQ,UAAW,OAE1C,MAAMC,YAAqBT,OAAOQ,SAASE,QAC3CT,UAAUU,KAAKF,aACfN,aAAeM,WACjB,EAGF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithSpatial.js","sources":["../../../src/Spatial/Mixins/WithSpatial.ts"],"sourcesContent":["import type { TActorParams } from '@
|
|
1
|
+
{"version":3,"file":"WithSpatial.js","sources":["../../../src/Spatial/Mixins/WithSpatial.ts"],"sourcesContent":["import type { TActorParams } from '@hellpig/anarchy-engine/Actor';\nimport { LoopUpdatePriority } from '@hellpig/anarchy-engine/Loop';\nimport type { TDestroyable } from '@hellpig/anarchy-engine/Mixins';\nimport { destroyableMixin } from '@hellpig/anarchy-engine/Mixins';\nimport type { TSpatialCellWrapper, TSpatialData, TSpatialGridWrapper, TWithSpatial } from '@hellpig/anarchy-engine/Spatial/Models';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport function withSpatial(params: TActorParams): TWithSpatial {\n const autoUpdate$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(params.spatial.isAutoUpdate);\n const cellsChanged$: Subject<ReadonlyArray<TSpatialCellWrapper>> = new Subject<ReadonlyArray<TSpatialCellWrapper>>();\n\n const destroyable: TDestroyable = destroyableMixin();\n\n const result: TWithSpatial = {\n spatial: {\n data: {\n updatePriority: params.spatial.updatePriority ?? LoopUpdatePriority.LOW,\n grid: params.spatial.grid || undefined,\n cells: []\n },\n setData({ updatePriority, cells }: TSpatialData): void {\n this.setSpatialUpdatePriority(updatePriority);\n this.setSpatialCells(cells);\n },\n getData(): TSpatialData {\n return this.data;\n },\n setSpatialUpdatePriority(value: LoopUpdatePriority): void {\n // eslint-disable-next-line functional/immutable-data\n (this.data as TWriteable<TSpatialData>).updatePriority = value;\n },\n getSpatialUpdatePriority(): LoopUpdatePriority {\n return this.data.updatePriority;\n },\n setGrid(grid: TSpatialGridWrapper): void {\n // eslint-disable-next-line functional/immutable-data\n (this.data as TWriteable<TSpatialData>).grid = grid;\n },\n getGrid(): TSpatialGridWrapper | undefined {\n return this.data.grid;\n },\n resetGrid(): void {\n this.setGrid(undefined as unknown as TSpatialGridWrapper);\n },\n getSpatialCells(): ReadonlyArray<TSpatialCellWrapper> {\n return this.data.cells;\n },\n setSpatialCells(cells: ReadonlyArray<TSpatialCellWrapper>): void {\n // eslint-disable-next-line functional/immutable-data\n (this.data as TWriteable<TSpatialData>).cells = cells;\n cellsChanged$.next(cells);\n },\n resetSpatialCells(): void {\n this.setSpatialCells([]);\n },\n ...destroyable,\n autoUpdate$,\n cellsChanged$: cellsChanged$.asObservable()\n }\n };\n\n const destroySub$: Subscription = destroyable.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n result.spatial.resetGrid();\n result.spatial.resetSpatialCells();\n cellsChanged$.complete();\n });\n\n return result;\n}\n"],"names":["withSpatial","params","autoUpdate$","BehaviorSubject","spatial","isAutoUpdate","cellsChanged$","Subject","destroyable","destroyableMixin","result","data","updatePriority","LoopUpdatePriority","LOW","grid","cells","setData","this","setSpatialUpdatePriority","setSpatialCells","getData","value","getSpatialUpdatePriority","setGrid","getGrid","resetGrid","getSpatialCells","next","resetSpatialCells","asObservable","destroySub$","destroy$","subscribe","unsubscribe","complete"],"mappings":"yTASO,SAASA,YAAYC,QAC1B,MAAMC,YAAwC,IAAIC,gBAAyBF,OAAOG,QAAQC,cACpFC,cAA6D,IAAIC,QAEjEC,YAA4BC,mBAE5BC,OAAuB,CAC3BN,QAAS,CACPO,KAAM,CACJC,eAAgBX,OAAOG,QAAQQ,gBAAkBC,mBAAmBC,IACpEC,KAAMd,OAAOG,QAAQW,WAAQ,EAC7BC,MAAO,IAET,OAAAC,EAAQL,eAAEA,eAAAI,MAAgBA,QACxBE,KAAKC,yBAAyBP,gBAC9BM,KAAKE,gBAAgBJ,MACvB,EACA,OAAAK,GACE,OAAOH,KAAKP,IACd,EACA,wBAAAQ,CAAyBG,OAEtBJ,KAAKP,KAAkCC,eAAiBU,KAC3D,EACA,wBAAAC,GACE,OAAOL,KAAKP,KAAKC,cACnB,EACA,OAAAY,CAAQT,MAELG,KAAKP,KAAkCI,KAAOA,IACjD,EACA,OAAAU,GACE,OAAOP,KAAKP,KAAKI,IACnB,EACA,SAAAW,GACER,KAAKM,eACP,EACA,eAAAG,GACE,OAAOT,KAAKP,KAAKK,KACnB,EACA,eAAAI,CAAgBJ,OAEbE,KAAKP,KAAkCK,MAAQA,MAChDV,cAAcsB,KAAKZ,MACrB,EACA,iBAAAa,GACEX,KAAKE,gBAAgB,GACvB,KACGZ,YACHN,wBACAI,cAAeA,cAAcwB,iBAI3BC,YAA4BvB,YAAYwB,SAASC,UAAU,KAC/DF,YAAYG,cAEZxB,OAAON,QAAQsB,YACfhB,OAAON,QAAQyB,oBACfvB,cAAc6B,aAGhB,OAAOzB,MACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithUpdateSpatialCell.js","sources":["../../../src/Spatial/Mixins/WithUpdateSpatialCell.ts"],"sourcesContent":["import type { TActor } from '@
|
|
1
|
+
{"version":3,"file":"WithUpdateSpatialCell.js","sources":["../../../src/Spatial/Mixins/WithUpdateSpatialCell.ts"],"sourcesContent":["import type { TActor } from '@hellpig/anarchy-engine/Actor';\nimport type { TSpatialCell, TSpatialCellWrapper, TSpatialGridWrapper, TWithUpdateSpatialCell } from '@hellpig/anarchy-engine/Spatial/Models';\nimport type { TReadonlyVector3 } from '@hellpig/anarchy-engine/ThreeLib';\nimport { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\n\nexport function withUpdateSpatialCell(): TWithUpdateSpatialCell {\n let prevCells: ReadonlyArray<Pick<TSpatialCell, 'maxX' | 'maxY' | 'minX' | 'minY'>> = [];\n\n function updateSpatialCells(this: TActor, newPosition: TReadonlyVector3): void | never {\n const grid: TSpatialGridWrapper | undefined = this.spatial.getGrid();\n if (isNotDefined(grid)) throw new Error(`Grid is not defined for Actor name: \"${this.name}\", id: \"${this.id}\"`);\n const cells: ReadonlyArray<TSpatialCellWrapper> = this.spatial.getSpatialCells();\n\n //first run\n if (prevCells.length === 0) {\n prevCells = cells.map(({ maxX, maxY, minX, minY }: TSpatialCellWrapper): Pick<TSpatialCell, 'maxX' | 'maxY' | 'minX' | 'minY'> => ({ maxX, maxY, minX, minY }));\n return;\n }\n\n const isOutside = ({ minX, minY, maxX, maxY }: Pick<TSpatialCell, 'maxX' | 'maxY' | 'minX' | 'minY'>, newPosition: TReadonlyVector3): boolean => {\n return newPosition.x < minX || newPosition.x > maxX || newPosition.z < minY || newPosition.z > maxY;\n };\n\n // eslint-disable-next-line functional/no-loop-statements\n for (let index: number = 0; index < cells.length; index++) {\n if (isDefined(prevCells[index]) && isOutside(prevCells[index], newPosition)) {\n if (isNotDefined(grid)) throw new Error(`Cannot update actor's (id: \"${this.id}\") spatial grid's cell: grid is not defined`);\n grid.updateActorCell(this);\n }\n }\n\n prevCells = cells.map(({ maxX, maxY, minX, minY }: TSpatialCellWrapper) => ({ maxX, maxY, minX, minY }));\n }\n\n return {\n updateSpatialCells\n };\n}\n"],"names":["withUpdateSpatialCell","prevCells","updateSpatialCells","newPosition","grid","this","spatial","getGrid","isNotDefined","Error","name","id","cells","getSpatialCells","length","map","maxX","maxY","minX","minY","isOutside","x","z","index","isDefined","updateActorCell"],"mappings":"0FAKO,SAASA,wBACd,IAAIC,UAAkF,GA4BtF,MAAO,CACLC,mBA3BF,SAA0CC,aACxC,MAAMC,KAAwCC,KAAKC,QAAQC,UAC3D,GAAIC,aAAaJ,MAAO,MAAM,IAAIK,MAAM,wCAAwCJ,KAAKK,eAAeL,KAAKM,OACzG,MAAMC,MAA4CP,KAAKC,QAAQO,kBAG/D,GAAyB,IAArBZ,UAAUa,OAEZ,YADAb,UAAYW,MAAMG,IAAI,EAAGC,UAAMC,UAAMC,UAAMC,cAAK,CAAqFH,UAAMC,UAAMC,UAAMC,cAIzJ,MAAMC,UAAY,EAAGF,UAAMC,UAAMH,UAAMC,WAA+Dd,eAC7FA,aAAYkB,EAAIH,MAAQf,aAAYkB,EAAIL,MAAQb,aAAYmB,EAAIH,MAAQhB,aAAYmB,EAAIL,KAIjG,IAAA,IAASM,MAAgB,EAAGA,MAAQX,MAAME,OAAQS,QAChD,GAAIC,UAAUvB,UAAUsB,SAAWH,UAAUnB,UAAUsB,OAAQpB,aAAc,CAC3E,GAAIK,aAAaJ,MAAO,MAAM,IAAIK,MAAM,+BAA+BJ,KAAKM,iDAC5EP,KAAKqB,gBAAgBpB,KACvB,CAGFJ,UAAYW,MAAMG,IAAI,EAAGC,UAAMC,UAAMC,UAAMC,cAAK,CAA8BH,UAAMC,UAAMC,UAAMC,YAClG,EAKF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialGridRegistry.js","sources":["../../../src/Spatial/Registries/SpatialGridRegistry.ts"],"sourcesContent":["import { RegistryType } from '@
|
|
1
|
+
{"version":3,"file":"SpatialGridRegistry.js","sources":["../../../src/Spatial/Registries/SpatialGridRegistry.ts"],"sourcesContent":["import { RegistryType } from '@hellpig/anarchy-engine/Abstract/Constants';\nimport { AbstractEntityRegistry } from '@hellpig/anarchy-engine/Abstract/Registries';\nimport type { TSpatialGridRegistry, TSpatialGridWrapper } from '@hellpig/anarchy-engine/Spatial/Models';\n\nexport function SpatialGridRegistry(): TSpatialGridRegistry {\n return AbstractEntityRegistry<TSpatialGridWrapper>(RegistryType.SpatialGrid);\n}\n"],"names":["SpatialGridRegistry","AbstractEntityRegistry","RegistryType","SpatialGrid"],"mappings":"2JAIO,SAASA,sBACd,OAAOC,uBAA4CC,aAAaC,YAClE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialGridService.js","sources":["../../../src/Spatial/Services/SpatialGridService.ts"],"sourcesContent":["import type { TAbstractService } from '@
|
|
1
|
+
{"version":3,"file":"SpatialGridService.js","sources":["../../../src/Spatial/Services/SpatialGridService.ts"],"sourcesContent":["import type { TAbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport type { TDisposable } from '@hellpig/anarchy-engine/Mixins';\nimport { withCreateServiceMixin, withSerializableEntities } from '@hellpig/anarchy-engine/Mixins';\nimport { withCreateFromConfigServiceMixin } from '@hellpig/anarchy-engine/Mixins/Services/WithCreateFromConfigService';\nimport { withFactoryService } from '@hellpig/anarchy-engine/Mixins/Services/WithFactoryService';\nimport { withRegistryService } from '@hellpig/anarchy-engine/Mixins/Services/WithRegistryService';\nimport type {\n TSpatialGridConfig,\n TSpatialGridFactory,\n TSpatialGridRegistry,\n TSpatialGridService,\n TSpatialGridServiceWithCreate,\n TSpatialGridServiceWithCreateFromConfig,\n TSpatialGridServiceWithFactory,\n TSpatialGridServiceWithRegistry,\n TSpatialGridWrapper\n} from '@hellpig/anarchy-engine/Spatial/Models';\nimport { mergeAll } from '@hellpig/anarchy-engine/Utils';\nimport type { Subscription } from 'rxjs';\n\nexport function SpatialGridService(factory: TSpatialGridFactory, registry: TSpatialGridRegistry): TSpatialGridService {\n const factorySub$: Subscription = factory.entityCreated$.subscribe((spatialGrid: TSpatialGridWrapper): void => registry.add(spatialGrid));\n const disposable: ReadonlyArray<TDisposable> = [registry, factory, factorySub$];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n const withCreateService: TSpatialGridServiceWithCreate = withCreateServiceMixin(factory, undefined);\n const withCreateFromConfigService: TSpatialGridServiceWithCreateFromConfig = withCreateFromConfigServiceMixin(withCreateService.create, factory.configToParams, undefined);\n const withFactory: TSpatialGridServiceWithFactory = withFactoryService(factory);\n const withRegistry: TSpatialGridServiceWithRegistry = withRegistryService(registry);\n\n return mergeAll(abstractService, withCreateService, withCreateFromConfigService, withFactory, withRegistry, withSerializableEntities<TSpatialGridWrapper, TSpatialGridConfig, undefined>(registry));\n}\n"],"names":["SpatialGridService","factory","registry","factorySub$","entityCreated$","subscribe","spatialGrid","add","abstractService","AbstractService","withCreateService","withCreateServiceMixin","withCreateFromConfigService","withCreateFromConfigServiceMixin","create","configToParams","withFactory","withFactoryService","withRegistry","withRegistryService","mergeAll","withSerializableEntities"],"mappings":"6hBAqBO,SAASA,mBAAmBC,QAA8BC,UAC/D,MAAMC,YAA4BF,QAAQG,eAAeC,UAAWC,aAA2CJ,SAASK,IAAID,cAEtHE,gBAAoCC,gBADK,CAACP,SAAUD,QAASE,cAG7DO,kBAAmDC,uBAAuBV,gBAC1EW,4BAAuEC,iCAAiCH,kBAAkBI,OAAQb,QAAQc,uBAC1IC,YAA8CC,mBAAmBhB,SACjEiB,aAAgDC,oBAAoBjB,UAE1E,OAAOkB,SAASZ,gBAAiBE,kBAAmBE,4BAA6BI,YAAaE,aAAcG,yBAA6EnB,UAC3L"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TActor } from '../../Actor';
|
|
2
2
|
import { ColorRepresentation, Mesh } from 'three';
|
|
3
|
-
import { Line2 } from 'three/examples/jsm/lines/Line2';
|
|
3
|
+
import { Line2 } from '../../../../../node_modules/@types/three/examples/jsm/lines/Line2';
|
|
4
4
|
export declare function createLine(color: ColorRepresentation, width: number, positions: Array<number>): Line2;
|
|
5
5
|
export declare function createOutline(actor: TActor, color: ColorRepresentation, lineWidth: number): Line2;
|
|
6
6
|
export declare function createBoundingBox(minX: number, minZ: number, maxX: number, maxZ: number, color?: ColorRepresentation, wireframe?: boolean, height?: number): Mesh;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialHelper.js","sources":["../../../src/Spatial/Services/SpatialHelper.ts"],"sourcesContent":["import type { TActor } from '@
|
|
1
|
+
{"version":3,"file":"SpatialHelper.js","sources":["../../../src/Spatial/Services/SpatialHelper.ts"],"sourcesContent":["import type { TActor } from '@hellpig/anarchy-engine/Actor';\nimport { meters } from '@hellpig/anarchy-engine/Measurements/Utils';\nimport type { ColorRepresentation, Vector3 } from 'three';\nimport { Box3, Mesh, MeshBasicMaterial, PlaneGeometry } from 'three';\nimport { Line2 } from 'three/examples/jsm/lines/Line2';\nimport { LineGeometry } from 'three/examples/jsm/lines/LineGeometry';\nimport { LineMaterial } from 'three/examples/jsm/lines/LineMaterial';\n\nexport function createLine(color: ColorRepresentation, width: number, positions: Array<number>): Line2 {\n const material = new LineMaterial({\n color,\n linewidth: meters(width),\n worldUnits: true,\n alphaToCoverage: true\n });\n const geometry: LineGeometry = new LineGeometry();\n geometry.setPositions(positions);\n\n return new Line2(geometry, material);\n}\n\nexport function createOutline(actor: TActor, color: ColorRepresentation, lineWidth: number): Line2 {\n const boundingBox = new Box3().setFromObject(actor.model3d.getRawModel3d());\n const min: Vector3 = boundingBox.min;\n const max: Vector3 = boundingBox.max;\n const positions = getBoxEdges(min, max);\n\n return createLine(color, lineWidth, positions);\n}\n\nfunction getBoxEdges(min: Vector3, max: Vector3): Array<number> {\n return [\n // Bottom edges\n min.x,\n min.y,\n min.z,\n max.x,\n min.y,\n min.z,\n max.x,\n min.y,\n min.z,\n max.x,\n min.y,\n max.z,\n max.x,\n min.y,\n max.z,\n min.x,\n min.y,\n max.z,\n min.x,\n min.y,\n max.z,\n min.x,\n min.y,\n min.z,\n\n // Top edges\n min.x,\n max.y,\n min.z,\n max.x,\n max.y,\n min.z,\n max.x,\n max.y,\n min.z,\n max.x,\n max.y,\n max.z,\n max.x,\n max.y,\n max.z,\n min.x,\n max.y,\n max.z,\n min.x,\n max.y,\n max.z,\n min.x,\n max.y,\n min.z,\n\n // Vertical edges\n min.x,\n min.y,\n min.z,\n min.x,\n max.y,\n min.z,\n max.x,\n min.y,\n min.z,\n max.x,\n max.y,\n min.z,\n max.x,\n min.y,\n max.z,\n max.x,\n max.y,\n max.z,\n min.x,\n min.y,\n max.z,\n min.x,\n max.y,\n max.z\n ];\n}\n\nexport function createBoundingBox(minX: number, minZ: number, maxX: number, maxZ: number, color: ColorRepresentation = '#00ff00', wireframe: boolean = true, height: number = 0): Mesh {\n const geometry: PlaneGeometry = new PlaneGeometry(maxX - minX, maxZ - minZ);\n const material: MeshBasicMaterial = new MeshBasicMaterial({ color, wireframe });\n const plane: Mesh = new Mesh(geometry, material);\n plane.position.set((minX + maxX) / 2, height, (minZ + maxZ) / 2);\n // eslint-disable-next-line functional/immutable-data\n plane.rotation.x = -Math.PI / 2;\n return plane;\n}\n"],"names":["createLine","color","width","positions","material","LineMaterial","linewidth","meters","worldUnits","alphaToCoverage","geometry","LineGeometry","setPositions","Line2","createOutline","actor","lineWidth","boundingBox","Box3","setFromObject","model3d","getRawModel3d","min","max","x","y","z","createBoundingBox","minX","minZ","maxX","maxZ","wireframe","height","PlaneGeometry","MeshBasicMaterial","plane","Mesh","position","set","rotation","Math","PI"],"mappings":"iTAQO,SAASA,WAAWC,MAA4BC,MAAeC,WACpE,MAAMC,SAAW,IAAIC,aAAa,CAChCJ,YACAK,UAAWC,OAAOL,OAClBM,YAAY,EACZC,iBAAiB,IAEbC,SAAyB,IAAIC,aAGnC,OAFAD,SAASE,aAAaT,WAEf,IAAIU,MAAMH,SAAUN,SAC7B,CAEO,SAASU,cAAcC,MAAed,MAA4Be,WACvE,MAAMC,aAAc,IAAIC,MAAOC,cAAcJ,MAAMK,QAAQC,iBAQ7D,IAAqBC,IAAcC,IAHjC,OAAOvB,WAAWC,MAAOe,UAIlB,EADYM,IAPEL,YAAYK,KAU3BE,EACJF,IAAIG,EACJH,IAAII,GAL2BH,IANZN,YAAYM,KAY3BC,EACJF,IAAIG,EACJH,IAAII,EACJH,IAAIC,EACJF,IAAIG,EACJH,IAAII,EACJH,IAAIC,EACJF,IAAIG,EACJF,IAAIG,EACJH,IAAIC,EACJF,IAAIG,EACJF,IAAIG,EACJJ,IAAIE,EACJF,IAAIG,EACJF,IAAIG,EACJJ,IAAIE,EACJF,IAAIG,EACJF,IAAIG,EACJJ,IAAIE,EACJF,IAAIG,EACJH,IAAII,EAGJJ,IAAIE,EACJD,IAAIE,EACJH,IAAII,EACJH,IAAIC,EACJD,IAAIE,EACJH,IAAII,EACJH,IAAIC,EACJD,IAAIE,EACJH,IAAII,EACJH,IAAIC,EACJD,IAAIE,EACJF,IAAIG,EACJH,IAAIC,EACJD,IAAIE,EACJF,IAAIG,EACJJ,IAAIE,EACJD,IAAIE,EACJF,IAAIG,EACJJ,IAAIE,EACJD,IAAIE,EACJF,IAAIG,EACJJ,IAAIE,EACJD,IAAIE,EACJH,IAAII,EAGJJ,IAAIE,EACJF,IAAIG,EACJH,IAAII,EACJJ,IAAIE,EACJD,IAAIE,EACJH,IAAII,EACJH,IAAIC,EACJF,IAAIG,EACJH,IAAII,EACJH,IAAIC,EACJD,IAAIE,EACJH,IAAII,EACJH,IAAIC,EACJF,IAAIG,EACJF,IAAIG,EACJH,IAAIC,EACJD,IAAIE,EACJF,IAAIG,EACJJ,IAAIE,EACJF,IAAIG,EACJF,IAAIG,EACJJ,IAAIE,EACJD,IAAIE,EACJF,IAAIG,GAhFR,CAoFO,SAASC,kBAAkBC,KAAcC,KAAcC,KAAcC,KAAc9B,MAA6B,UAAW+B,WAAqB,EAAMC,OAAiB,GAC5K,MAAMvB,SAA0B,IAAIwB,cAAcJ,KAAOF,KAAMG,KAAOF,MAChEzB,SAA8B,IAAI+B,kBAAkB,CAAElC,YAAO+B,sBAC7DI,MAAc,IAAIC,KAAK3B,SAAUN,UAIvC,OAHAgC,MAAME,SAASC,KAAKX,KAAOE,MAAQ,EAAGG,QAASJ,KAAOE,MAAQ,GAE9DK,MAAMI,SAAShB,GAAKiB,KAAKC,GAAK,EACvBN,KACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpatialCellWrapper.js","sources":["../../../src/Spatial/Wrappers/SpatialCellWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@
|
|
1
|
+
{"version":3,"file":"SpatialCellWrapper.js","sources":["../../../src/Spatial/Wrappers/SpatialCellWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TActor } from '@hellpig/anarchy-engine/Actor';\nimport { entityToConfigSpatialCell } from '@hellpig/anarchy-engine/Spatial/Adapters';\nimport type { TSpatialCell, TSpatialCellParams, TSpatialCellSerializedData, TSpatialCellWrapper } from '@hellpig/anarchy-engine/Spatial/Models';\nimport type { Subscription } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nexport function SpatialCellWrapper(params: TSpatialCellParams): TSpatialCellWrapper {\n const entity: TSpatialCell = {\n minX: params.minX,\n minY: params.minZ,\n maxX: params.maxX,\n maxY: params.maxZ,\n id: `spatial_cell_${params.x}_${params.z}`,\n version: 0,\n objects: []\n };\n\n const wrapper: TAbstractWrapper<TSpatialCell> = AbstractWrapper(entity, WrapperType.SpatialCell, params as any);\n const update$: Subject<TSpatialCell> = new Subject<TSpatialCell>();\n\n const sub$: Subscription = wrapper.destroy$.subscribe((): void => {\n sub$.unsubscribe();\n\n // eslint-disable-next-line functional/immutable-data\n entity.objects.length = 0;\n\n update$.complete();\n });\n\n const findObject = (id: string): TActor | undefined => entity.objects.find((o: TActor): boolean => o.id === id);\n\n function addObject(object: TActor): void {\n // eslint-disable-next-line functional/immutable-data\n entity.objects.push(object);\n // eslint-disable-next-line functional/immutable-data\n entity.version++;\n update$.next(entity);\n }\n\n const getObjects = (): ReadonlyArray<TActor> => entity.objects;\n\n const removeObject = (actor: TActor): void => {\n const index: number = getObjects().indexOf(actor);\n if (index === -1) throw new Error(`Cannot remove actor (id: \"${actor.id}\", name: \"${actor.name}\") from spatial cell (id: \"${entity.id}\"). Such actor is not in the cell`);\n\n // eslint-disable-next-line functional/immutable-data\n entity.objects.splice(index, 1);\n // eslint-disable-next-line functional/immutable-data\n entity.version++;\n update$.next(entity);\n };\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(wrapper, {\n name: params.name ?? entity.id,\n // eslint-disable-next-line no-restricted-syntax\n get minX(): number {\n return entity.minX;\n },\n // eslint-disable-next-line no-restricted-syntax\n get minY(): number {\n return entity.minY;\n },\n // eslint-disable-next-line no-restricted-syntax\n get maxX(): number {\n return entity.maxX;\n },\n // eslint-disable-next-line no-restricted-syntax\n get maxY(): number {\n return entity.maxY;\n },\n getVersion: (): number => entity.version,\n findObject,\n addObject,\n getObjects,\n removeObject,\n update$: update$.asObservable(),\n serialize: (): TSpatialCellSerializedData => entityToConfigSpatialCell(result)\n });\n\n return result;\n}\n"],"names":["SpatialCellWrapper","params","entity","minX","minY","minZ","maxX","maxY","maxZ","id","x","z","version","objects","wrapper","AbstractWrapper","WrapperType","SpatialCell","update$","Subject","sub$","destroy$","subscribe","unsubscribe","length","complete","getObjects","result","Object","assign","name","getVersion","findObject","find","o","addObject","object","push","next","removeObject","actor","index","indexOf","Error","splice","asObservable","serialize","entityToConfigSpatialCell"],"mappings":"yRAQO,SAASA,mBAAmBC,QACjC,MAAMC,OAAuB,CAC3BC,KAAMF,OAAOE,KACbC,KAAMH,OAAOI,KACbC,KAAML,OAAOK,KACbC,KAAMN,OAAOO,KACbC,GAAI,gBAAgBR,OAAOS,KAAKT,OAAOU,IACvCC,QAAS,EACTC,QAAS,IAGLC,QAA0CC,gBAAgBb,OAAQc,YAAYC,YAAahB,QAC3FiB,QAAiC,IAAIC,QAErCC,KAAqBN,QAAQO,SAASC,UAAU,KACpDF,KAAKG,cAGLrB,OAAOW,QAAQW,OAAS,EAExBN,QAAQO,aAaJC,WAAa,IAA6BxB,OAAOW,QAcjDc,OAASC,OAAOC,OAAOf,QAAS,CACpCgB,KAAM7B,OAAO6B,MAAQ5B,OAAOO,GAE5B,QAAIN,GACF,OAAOD,OAAOC,IAChB,EAEA,QAAIC,GACF,OAAOF,OAAOE,IAChB,EAEA,QAAIE,GACF,OAAOJ,OAAOI,IAChB,EAEA,QAAIC,GACF,OAAOL,OAAOK,IAChB,EACAwB,WAAY,IAAc7B,OAAOU,QACjCoB,WA3CkBvB,IAAmCP,OAAOW,QAAQoB,KAAMC,GAAuBA,EAAEzB,KAAOA,IA4C1G0B,UA1CF,SAAmBC,QAEjBlC,OAAOW,QAAQwB,KAAKD,QAEpBlC,OAAOU,UACPM,QAAQoB,KAAKpC,OACf,EAqCEwB,sBACAa,aAlCoBC,QACpB,MAAMC,MAAgBf,aAAagB,QAAQF,OAC3C,IAAc,IAAVC,MAAc,MAAM,IAAIE,MAAM,6BAA6BH,MAAM/B,eAAe+B,MAAMV,kCAAkC5B,OAAOO,uCAGnIP,OAAOW,QAAQ+B,OAAOH,MAAO,GAE7BvC,OAAOU,UACPM,QAAQoB,KAAKpC,SA2BbgB,QAASA,QAAQ2B,eACjBC,UAAW,IAAkCC,0BAA0BpB,UAGzE,OAAOA,MACT"}
|
|
@@ -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 { 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
|
+
{"version":3,"file":"SpatialGridWrapper.js","sources":["../../../src/Spatial/Wrappers/SpatialGridWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TActor } from '@hellpig/anarchy-engine/Actor';\nimport type { TSceneWrapper } from '@hellpig/anarchy-engine/Scene';\nimport { spatialGridEntityToConfig } from '@hellpig/anarchy-engine/Spatial/Adapters/EntityToConfig';\nimport type { TSpatialCellId, TSpatialCellParams, TSpatialCellWrapper, TSpatialGrid, TSpatialGridConfig, TSpatialGridParams, TSpatialGridWrapper } from '@hellpig/anarchy-engine/Spatial/Models';\nimport { createBoundingBox, createOutline } from '@hellpig/anarchy-engine/Spatial/Services/SpatialHelper';\nimport { SpatialCellWrapper } from '@hellpig/anarchy-engine/Spatial/Wrappers/SpatialCellWrapper';\nimport { isDefined, isNotDefined } from '@hellpig/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Text/Adapters/ConfigToParams.ts"],"sourcesContent":["import { kinematicConfigToParams } from '@
|
|
1
|
+
{"version":3,"file":"ConfigToParams.js","sources":["../../../src/Text/Adapters/ConfigToParams.ts"],"sourcesContent":["import { kinematicConfigToParams } from '@hellpig/anarchy-engine/Kinematic';\nimport type { TTextConfig, TTextParams, TTextServiceDependencies } from '@hellpig/anarchy-engine/Text/Models';\nimport { object3dConfigToParams } from '@hellpig/anarchy-engine/ThreeLib';\nimport { isDefined } from '@hellpig/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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Text/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Text/Adapters/EntityToConfig.ts"],"sourcesContent":["import { extractSerializableRegistrableFields } from '@hellpig/anarchy-engine/Mixins';\nimport type { TText2dWrapper, TText3dTextureWrapper, TTextAnyWrapper, TTextConfig, TTextCssProps } from '@hellpig/anarchy-engine/Text/Models';\nimport { vector2ToXy } from '@hellpig/anarchy-engine/Utils';\nimport { filterOutEmptyFields, isNotDefined, kebabToCamel } from '@hellpig/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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextFactory.js","sources":["../../../src/Text/Factories/TextFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@
|
|
1
|
+
{"version":3,"file":"TextFactory.js","sources":["../../../src/Text/Factories/TextFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { textConfigToParams } from '@hellpig/anarchy-engine/Text/Adapters';\nimport type { TTextAnyWrapper, TTextFactory, TTextParams, TTextServiceDependencies } from '@hellpig/anarchy-engine/Text/Models';\nimport { buildTextWrapper } from '@hellpig/anarchy-engine/Text/Wrappers';\n\nexport function TextFactory(): TTextFactory {\n const factory: TReactiveFactory<TTextAnyWrapper, TTextParams, TTextServiceDependencies> = ReactiveFactory(FactoryType.Text, buildTextWrapper);\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: textConfigToParams });\n}\n"],"names":["TextFactory","factory","ReactiveFactory","FactoryType","Text","buildTextWrapper","Object","assign","configToParams","textConfigToParams"],"mappings":"wQAMO,SAASA,cACd,MAAMC,QAAoFC,gBAAgBC,YAAYC,KAAMC,kBAE5H,OAAOC,OAAOC,OAAON,QAAS,CAAEO,eAAgBC,oBAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextLoopEffect.js","sources":["../../../src/Text/Loop/TextLoopEffect.ts"],"sourcesContent":["import type { TAnyCameraWrapper, TCameraService } from '@
|
|
1
|
+
{"version":3,"file":"TextLoopEffect.js","sources":["../../../src/Text/Loop/TextLoopEffect.ts"],"sourcesContent":["import type { TAnyCameraWrapper, TCameraService } from '@hellpig/anarchy-engine/Camera';\nimport type { TMilliseconds } from '@hellpig/anarchy-engine/Math';\nimport type { TSceneWrapper } from '@hellpig/anarchy-engine/Scene';\nimport type { TText2dRegistry, TText2dRenderer, TText3dRegistry, TText3dRenderer, TTextLoop } from '@hellpig/anarchy-engine/Text/Models';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { BehaviorSubject, Subscription } from 'rxjs';\nimport { withLatestFrom } from 'rxjs';\n\nexport function textLoopEffect(\n loop: TTextLoop,\n text2dRegistry: TText2dRegistry,\n text3dRegistry: TText3dRegistry,\n text2dRenderer$: BehaviorSubject<TText2dRenderer | undefined>,\n text3dRenderer$: BehaviorSubject<TText3dRenderer | undefined>,\n scene: TSceneWrapper,\n cameraService: TCameraService\n): Subscription | never {\n return loop.tick$\n .pipe(withLatestFrom(cameraService.active$, text2dRenderer$, text3dRenderer$))\n .subscribe(([, activeCameraW, text2dRenderer, text3dRenderer]: [TMilliseconds, TAnyCameraWrapper | undefined, TText2dRenderer | undefined, TText3dRenderer | undefined]): void | never => {\n if (isNotDefined(activeCameraW)) return;\n\n if (!text2dRegistry?.isEmpty()) text2dRenderer?.renderer.render(scene.entity, activeCameraW.entity);\n if (!text3dRegistry?.isEmpty()) text3dRenderer?.renderer.render(scene.entity, activeCameraW.entity);\n });\n}\n"],"names":["textLoopEffect","loop","text2dRegistry","text3dRegistry","text2dRenderer$","text3dRenderer$","scene","cameraService","tick$","pipe","withLatestFrom","active$","subscribe","activeCameraW","text2dRenderer","text3dRenderer","isNotDefined","isEmpty","renderer","render","entity"],"mappings":"mLAQO,SAASA,eACdC,KACAC,eACAC,eACAC,gBACAC,gBACAC,MACAC,eAEA,OAAON,KAAKO,MACTC,KAAKC,eAAeH,cAAcI,QAASP,gBAAiBC,kBAC5DO,UAAU,EAAC,CAAGC,cAAeC,eAAgBC,mBACxCC,aAAaH,iBAEZX,gBAAgBe,WAAWH,gBAAgBI,SAASC,OAAOb,MAAMc,OAAQP,cAAcO,QACvFjB,gBAAgBc,WAAWF,gBAAgBG,SAASC,OAAOb,MAAMc,OAAQP,cAAcO,UAElG"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { CSS2DRenderer } from 'three/examples/jsm/renderers/CSS2DRenderer';
|
|
1
|
+
import { CSS2DRenderer } from '../../../../../node_modules/@types/three/examples/jsm/renderers/CSS2DRenderer';
|
|
2
2
|
import { TTextRenderer } from './TTextRenderer';
|
|
3
3
|
export type TText2dRenderer = TTextRenderer<CSS2DRenderer>;
|