@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":"EntityToConfig.js","sources":["../../../src/Particles/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnyMaterialWrapper } from '@
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Particles/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TAnyMaterialWrapper } from '@hellpig/anarchy-engine/Material';\nimport { extractSerializableRegistrableFields } from '@hellpig/anarchy-engine/Mixins';\nimport type { TParticlesConfig, TParticlesConfigToParamsDependencies, TParticlesWrapper } from '@hellpig/anarchy-engine/Particles/Models';\nimport { filterOutEmptyFields } from '@hellpig/anarchy-shared/Utils';\n\nexport function particlesEntityToConfig(entity: TParticlesWrapper, { materialRegistry }: TParticlesConfigToParamsDependencies): TParticlesConfig {\n const { drive } = entity;\n\n const materialW: TAnyMaterialWrapper = materialRegistry.get((materialW: TAnyMaterialWrapper): boolean => materialW.entity === entity.entity.material);\n\n return filterOutEmptyFields({\n material: materialW.name,\n ...extractSerializableRegistrableFields(entity),\n ...drive.serialize()\n });\n}\n"],"names":["particlesEntityToConfig","entity","materialRegistry","drive","materialW","get","material","filterOutEmptyFields","name","extractSerializableRegistrableFields","serialize"],"mappings":"yMAKO,SAASA,wBAAwBC,QAA2BC,iBAAEA,mBACnE,MAAMC,MAAEA,OAAUF,OAEZG,UAAiCF,iBAAiBG,IAAKD,YAA4CA,WAAUH,SAAWA,OAAOA,OAAOK,UAE5I,OAAOC,qBAAqB,CAC1BD,SAAUF,UAAUI,QACjBC,qCAAqCR,WACrCE,MAAMO,aAEb"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesFactory.js","sources":["../../../src/Particles/Factories/ParticlesFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@
|
|
1
|
+
{"version":3,"file":"ParticlesFactory.js","sources":["../../../src/Particles/Factories/ParticlesFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { particlesConfigToParams } from '@hellpig/anarchy-engine/Particles/Adapters';\nimport type { TParticlesFactory, TParticlesParams, TParticlesServiceDependencies, TParticlesWrapper } from '@hellpig/anarchy-engine/Particles/Models';\nimport { ParticlesWrapper } from '@hellpig/anarchy-engine/Particles/Wrappers';\n\nexport function ParticlesFactory(): TParticlesFactory {\n const factory: TReactiveFactory<TParticlesWrapper, TParticlesParams, TParticlesServiceDependencies> = ReactiveFactory(FactoryType.Particles, ParticlesWrapper);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: particlesConfigToParams });\n}\n"],"names":["ParticlesFactory","factory","ReactiveFactory","FactoryType","Particles","ParticlesWrapper","Object","assign","configToParams","particlesConfigToParams"],"mappings":"2QAMO,SAASA,mBACd,MAAMC,QAAgGC,gBAAgBC,YAAYC,UAAWC,kBAG7I,OAAOC,OAAOC,OAAON,QAAS,CAAEO,eAAgBC,yBAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesRegistry.js","sources":["../../../src/Particles/Registries/ParticlesRegistry.ts"],"sourcesContent":["import { AbstractEntityRegistry, RegistryType } from '@
|
|
1
|
+
{"version":3,"file":"ParticlesRegistry.js","sources":["../../../src/Particles/Registries/ParticlesRegistry.ts"],"sourcesContent":["import { AbstractEntityRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TParticlesRegistry, TParticlesWrapper } from '@hellpig/anarchy-engine/Particles/Models';\n\nexport function ParticlesRegistry(): TParticlesRegistry {\n return AbstractEntityRegistry<TParticlesWrapper>(RegistryType.Particles);\n}\n"],"names":["ParticlesRegistry","AbstractEntityRegistry","RegistryType","Particles"],"mappings":"2JAGO,SAASA,oBACd,OAAOC,uBAA0CC,aAAaC,UAChE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesService.js","sources":["../../../src/Particles/Services/ParticlesService.ts"],"sourcesContent":["import type { TAbstractService, TRegistryPack } from '@
|
|
1
|
+
{"version":3,"file":"ParticlesService.js","sources":["../../../src/Particles/Services/ParticlesService.ts"],"sourcesContent":["import type { TAbstractService, TRegistryPack } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport type { TMaterialRegistry } from '@hellpig/anarchy-engine/Material';\nimport type { TDisposable } from '@hellpig/anarchy-engine/Mixins';\nimport { withCreateFromConfigServiceMixin, withCreateServiceMixin, withFactoryService, withRegistryService, withSceneGetterService, withSerializableEntities } from '@hellpig/anarchy-engine/Mixins';\nimport type {\n TParticlesConfig,\n TParticlesConfigToParamsDependencies,\n TParticlesFactory,\n TParticlesRegistry,\n TParticlesService,\n TParticlesServiceDependencies,\n TParticlesServiceWithCreate,\n TParticlesServiceWithCreateFromConfig,\n TParticlesServiceWithFactory,\n TParticlesServiceWithRegistry,\n TParticlesWrapper\n} from '@hellpig/anarchy-engine/Particles/Models';\nimport type { TSceneWrapper } from '@hellpig/anarchy-engine/Scene';\nimport { mergeAll } from '@hellpig/anarchy-engine/Utils';\nimport type { Subscription } from 'rxjs';\n\nexport function ParticlesService(factory: TParticlesFactory, registry: TParticlesRegistry, dependencies: TParticlesServiceDependencies, scene: TSceneWrapper): TParticlesService {\n const registrySub$: Subscription = registry.added$.subscribe(({ value }: TRegistryPack<TParticlesWrapper>): void => scene.addParticles(value));\n const factorySub$: Subscription = factory.entityCreated$.subscribe((wrapper: TParticlesWrapper): void => registry.add(wrapper));\n const materialRegistry: TMaterialRegistry = dependencies.materialService.getRegistry();\n\n const disposable: ReadonlyArray<TDisposable> = [registry, factory, registrySub$, factorySub$];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n const withCreateService: TParticlesServiceWithCreate = withCreateServiceMixin(factory, dependencies);\n const withCreateFromConfigService: TParticlesServiceWithCreateFromConfig = withCreateFromConfigServiceMixin(withCreateService.create, factory.configToParams, { materialRegistry });\n const withFactory: TParticlesServiceWithFactory = withFactoryService(factory);\n const withRegistry: TParticlesServiceWithRegistry = withRegistryService(registry);\n\n return mergeAll(\n abstractService,\n withCreateService,\n withCreateFromConfigService,\n withFactory,\n withRegistry,\n withSerializableEntities<TParticlesWrapper, TParticlesConfig, TParticlesConfigToParamsDependencies>(registry, { materialRegistry }),\n\n withSceneGetterService(scene)\n );\n}\n"],"names":["ParticlesService","factory","registry","dependencies","scene","registrySub$","added$","subscribe","value","addParticles","factorySub$","entityCreated$","wrapper","add","materialRegistry","materialService","getRegistry","abstractService","AbstractService","withCreateService","withCreateServiceMixin","withCreateFromConfigService","withCreateFromConfigServiceMixin","create","configToParams","withFactory","withFactoryService","withRegistry","withRegistryService","mergeAll","withSerializableEntities","withSceneGetterService"],"mappings":"inBAsBO,SAASA,iBAAiBC,QAA4BC,SAA8BC,aAA6CC,OACtI,MAAMC,aAA6BH,SAASI,OAAOC,UAAU,EAAGC,eAAoDJ,MAAMK,aAAaD,QACjIE,YAA4BT,QAAQU,eAAeJ,UAAWK,SAAqCV,SAASW,IAAID,UAChHE,iBAAsCX,aAAaY,gBAAgBC,cAGnEC,gBAAoCC,gBADK,CAAChB,SAAUD,QAASI,aAAcK,cAG3ES,kBAAiDC,uBAAuBnB,QAASE,cACjFkB,4BAAqEC,iCAAiCH,kBAAkBI,OAAQtB,QAAQuB,eAAgB,CAAEV,oCAC1JW,YAA4CC,mBAAmBzB,SAC/D0B,aAA8CC,oBAAoB1B,UAExE,OAAO2B,SACLZ,gBACAE,kBACAE,4BACAI,YACAE,aACAG,yBAAoG5B,SAAU,CAAEY,oCAEhHiB,uBAAuB3B,OAE3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesTransformDrive.js","sources":["../../../src/Particles/TransformDrive/ParticlesTransformDrive.ts"],"sourcesContent":["import type { TParticlesParams, TParticlesServiceDependencies, TParticlesTransformAgents, TParticlesTransformDrive } from '@
|
|
1
|
+
{"version":3,"file":"ParticlesTransformDrive.js","sources":["../../../src/Particles/TransformDrive/ParticlesTransformDrive.ts"],"sourcesContent":["import type { TParticlesParams, TParticlesServiceDependencies, TParticlesTransformAgents, TParticlesTransformDrive } from '@hellpig/anarchy-engine/Particles/Models';\nimport type { TTransformDriveParams } from '@hellpig/anarchy-engine/TransformDrive';\n\nexport function ParticlesTransformDrive(\n params: TParticlesParams,\n { transformDriveService }: Pick<TParticlesServiceDependencies, 'transformDriveService'>,\n relatedEntityId: string\n): TParticlesTransformDrive {\n const transformAgents: TParticlesTransformAgents = transformDriveService.getTransformAgents(params, { hasConnected: true }) as TParticlesTransformAgents;\n const driveParams: TTransformDriveParams = { activeAgent: params.agent, relatedEntityId };\n\n return transformDriveService.create(driveParams, transformAgents) as TParticlesTransformDrive;\n}\n"],"names":["ParticlesTransformDrive","params","transformDriveService","relatedEntityId","transformAgents","getTransformAgents","hasConnected","create","activeAgent","agent"],"mappings":"AAGO,SAASA,wBACdC,QACAC,sBAAEA,uBACFC,iBAEA,MAAMC,gBAA6CF,sBAAsBG,mBAAmBJ,OAAQ,CAAEK,cAAc,IAGpH,OAAOJ,sBAAsBK,OAFc,CAAEC,YAAaP,OAAOQ,MAAON,iCAEvBC,gBACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticlesWrapper.js","sources":["../../../src/Particles/Wrappers/ParticlesWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@
|
|
1
|
+
{"version":3,"file":"ParticlesWrapper.js","sources":["../../../src/Particles/Wrappers/ParticlesWrapper.ts"],"sourcesContent":["import type { TAbstractWrapper } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractWrapper, WrapperType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TColor } from '@hellpig/anarchy-engine/Color';\nimport type { TWithMaterial } from '@hellpig/anarchy-engine/Material';\nimport { isPointsMaterial, withMaterial } from '@hellpig/anarchy-engine/Material';\nimport { withObject3d } from '@hellpig/anarchy-engine/Mixins';\nimport { particlesEntityToConfig } from '@hellpig/anarchy-engine/Particles/Adapters';\nimport type { TParticlesConfig, TParticlesParams, TParticlesServiceDependencies, TParticlesTransformDrive, TParticlesWrapper } from '@hellpig/anarchy-engine/Particles/Models';\nimport { ParticlesTransformDrive } from '@hellpig/anarchy-engine/Particles/TransformDrive';\nimport type { TBufferGeometry, TPoints } from '@hellpig/anarchy-engine/ThreeLib';\nimport type { TDriveToTargetConnector } from '@hellpig/anarchy-engine/TransformDrive';\nimport { DriveToTargetConnector } from '@hellpig/anarchy-engine/TransformDrive';\nimport { applyObject3dParams } from '@hellpig/anarchy-engine/Utils';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { BufferAttribute, BufferGeometry, Points } from 'three';\n\nexport function ParticlesWrapper(params: TParticlesParams, dependencies: TParticlesServiceDependencies): TParticlesWrapper {\n let geometry: TBufferGeometry = new BufferGeometry();\n let entity: TPoints = new Points(geometry, params.material.entity);\n\n const { material } = entity;\n if (!isPointsMaterial(material)) throw new Error('Material is not PointsMaterial or not defined');\n\n const withMaterialEntity: TWithMaterial = withMaterial(entity);\n\n // eslint-disable-next-line functional/immutable-data\n const setMaterialColor = (color: TColor): void => void (material.color = color);\n const getMaterialColor = (): TColor => material.color;\n const setIndividualMaterialColors = (colors: Float32Array): void => void geometry.setAttribute('color', new BufferAttribute(colors, 3));\n const getIndividualMaterialColors = (): Float32Array => geometry.getAttribute('color').array as Float32Array;\n const setIndividualPositions = (positions: Float32Array): void => void geometry.setAttribute('position', new BufferAttribute(positions, 3));\n const getIndividualPositions = (): Float32Array => geometry.getAttribute('position').array as Float32Array;\n\n const wrapper: TAbstractWrapper<TPoints> = AbstractWrapper(entity, WrapperType.Particles, params);\n const drive: TParticlesTransformDrive = ParticlesTransformDrive(params, dependencies, wrapper.id);\n const driveToTargetConnector: TDriveToTargetConnector = DriveToTargetConnector(drive, entity);\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(wrapper, {\n drive,\n driveToTargetConnector,\n ...withObject3d(entity),\n ...withMaterialEntity,\n setMaterialColor,\n getMaterialColor,\n setIndividualMaterialColors,\n getIndividualMaterialColors,\n setIndividualPositions,\n getIndividualPositions,\n entity,\n serialize: (): TParticlesConfig => particlesEntityToConfig(result, { materialRegistry: dependencies.materialService.getRegistry() })\n });\n\n applyObject3dParams(result, params);\n\n const destroySub$: Subscription = result.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n //Material and geometry disposes in AbstractWrapper\n geometry = null as any;\n entity = null as any;\n // eslint-disable-next-line functional/immutable-data\n (result as TWriteable<TParticlesWrapper>).entity = null as any;\n });\n\n return result;\n}\n"],"names":["ParticlesWrapper","params","dependencies","geometry","BufferGeometry","entity","Points","material","isPointsMaterial","Error","withMaterialEntity","withMaterial","wrapper","AbstractWrapper","WrapperType","Particles","drive","ParticlesTransformDrive","id","driveToTargetConnector","DriveToTargetConnector","result","Object","assign","withObject3d","setMaterialColor","color","getMaterialColor","setIndividualMaterialColors","colors","setAttribute","BufferAttribute","getIndividualMaterialColors","getAttribute","array","setIndividualPositions","positions","getIndividualPositions","serialize","particlesEntityToConfig","materialRegistry","materialService","getRegistry","applyObject3dParams","destroySub$","destroy$","subscribe","unsubscribe"],"mappings":"2sBAiBO,SAASA,iBAAiBC,OAA0BC,cACzD,IAAIC,SAA4B,IAAIC,eAChCC,OAAkB,IAAIC,OAAOH,SAAUF,OAAOM,SAASF,QAE3D,MAAME,SAAEA,UAAaF,OACrB,IAAKG,iBAAiBD,UAAW,MAAM,IAAIE,MAAM,iDAEjD,MAAMC,mBAAoCC,aAAaN,QAUjDO,QAAqCC,gBAAgBR,OAAQS,YAAYC,UAAWd,QACpFe,MAAkCC,wBAAwBhB,OAAQC,aAAcU,QAAQM,IACxFC,uBAAkDC,uBAAuBJ,MAAOX,QAGhFgB,OAASC,OAAOC,OAAOX,QAAS,CACpCI,YACAG,iDACGK,aAAanB,WACbK,mBACHe,iBAjBwBC,QAA8BnB,SAASmB,MAAQA,OAkBvEC,iBAjBuB,IAAcpB,SAASmB,MAkB9CE,4BAjBmCC,SAAoC1B,SAAS2B,aAAa,QAAS,IAAIC,gBAAgBF,OAAQ,KAkBlIG,4BAjBkC,IAAoB7B,SAAS8B,aAAa,SAASC,MAkBrFC,uBAjB8BC,YAAuCjC,SAAS2B,aAAa,WAAY,IAAIC,gBAAgBK,UAAW,KAkBtIC,uBAjB6B,IAAoBlC,SAAS8B,aAAa,YAAYC,MAkBnF7B,cACAiC,UAAW,IAAwBC,wBAAwBlB,OAAQ,CAAEmB,iBAAkBtC,aAAauC,gBAAgBC,kBAGtHC,oBAAoBtB,OAAQpB,QAE5B,MAAM2C,YAA4BvB,OAAOwB,SAASC,UAAU,KAC1DF,YAAYG,cAEZ5C,SAAW,KACXE,OAAS,KAERgB,OAAyChB,OAAS,OAGrD,OAAOgB,MACT"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TPhysicsBody, TPhysicsBodyConfig, TPhysicsWorldConfig } from '../Models';
|
|
2
1
|
import { World } from '@dimforge/rapier3d';
|
|
2
|
+
import { TPhysicsBody, TPhysicsBodyConfig, TPhysicsWorldConfig } from '../Models';
|
|
3
3
|
export declare function physicsBodyEntityToConfig(entity: TPhysicsBody): TPhysicsBodyConfig;
|
|
4
4
|
export declare function physicWorldToConfig(world: World): TPhysicsWorldConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Physics/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { TPhysicsBody, TPhysicsBodyConfig, TPhysicsWorldConfig } from '@
|
|
1
|
+
{"version":3,"file":"EntityToConfig.js","sources":["../../../src/Physics/Adapters/EntityToConfig.ts"],"sourcesContent":["import type { Collider, RigidBody, Rotation, World } from '@dimforge/rapier3d';\nimport type { TPhysicsBody, TPhysicsBodyConfig, TPhysicsWorldConfig } from '@hellpig/anarchy-engine/Physics/Models';\nimport type { TEulerLike } from '@hellpig/anarchy-engine/ThreeLib';\nimport { eulerToXyz, vector3ToXyz } from '@hellpig/anarchy-engine/Utils';\nimport { filterOutEmptyFields, isDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Vector3Like } from 'three';\nimport { Euler, Quaternion } from 'three';\n\nexport function physicsBodyEntityToConfig(entity: TPhysicsBody): TPhysicsBodyConfig {\n const rigidBody: RigidBody | undefined = entity.getRigidBody();\n const collider: Collider | undefined = rigidBody?.collider(0);\n\n let rigidBodySettings = {};\n if (isDefined(rigidBody)) {\n rigidBodySettings = {\n position: rigidBody.translation(),\n rotation: rigidBody.rotation(),\n linearVelocity: rigidBody.linvel(),\n angularVelocity: rigidBody.angvel(),\n type: entity.getPhysicsBodyType(),\n mass: rigidBody.mass(),\n gravityScale: rigidBody.gravityScale(),\n isSleep: rigidBody.isSleeping(),\n ccdEnabled: rigidBody.isCcdEnabled(),\n dominanceGroup: rigidBody.dominanceGroup()\n // enabledRotations: rigidBody.enabledRotations,\n // enabledTranslations: rigidBody.enabledTranslations,\n };\n }\n\n let colliderSettings = {};\n if (isDefined(collider)) {\n colliderSettings = {\n restitution: collider.restitution(),\n friction: collider.friction(),\n collisionGroups: collider.collisionGroups(),\n isSensor: collider.isSensor(),\n shapeParams: entity.getShapeParams()\n };\n }\n\n const body: RigidBody | Collider | undefined = entity.getRigidBody() ?? entity.getCollider();\n let position: Vector3Like = { x: 0, y: 0, z: 0 };\n let rotation: TEulerLike = { x: 0, y: 0, z: 0 };\n\n if (isDefined(body)) {\n position = vector3ToXyz(body.translation());\n const bodyRotation: Rotation = body.rotation();\n rotation = eulerToXyz(new Euler().setFromQuaternion(new Quaternion(bodyRotation.x, bodyRotation.y, bodyRotation.z, bodyRotation.w)));\n }\n\n return filterOutEmptyFields({\n collisionShape: entity.getPhysicsBodyShape(),\n ...rigidBodySettings,\n ...colliderSettings,\n name: entity.name,\n type: entity.getPhysicsBodyType(),\n shapeParams: entity.getShapeParams(),\n position,\n rotation\n });\n}\n\nexport function physicWorldToConfig(world: World): TPhysicsWorldConfig {\n return {\n gravity: world.gravity,\n integrationParameters: {\n dt: world.integrationParameters.dt,\n lengthUnit: world.integrationParameters.lengthUnit,\n normalizedAllowedLinearError: world.integrationParameters.normalizedAllowedLinearError,\n normalizedPredictionDistance: world.integrationParameters.normalizedPredictionDistance,\n numSolverIterations: world.integrationParameters.numSolverIterations,\n // eslint-disable-next-line spellcheck/spell-checker\n numInternalPgsIterations: world.integrationParameters.numInternalPgsIterations,\n minIslandSize: world.integrationParameters.minIslandSize,\n // eslint-disable-next-line spellcheck/spell-checker\n maxCcdSubsteps: world.integrationParameters.maxCcdSubsteps\n }\n };\n}\n"],"names":["physicsBodyEntityToConfig","entity","rigidBody","getRigidBody","collider","rigidBodySettings","isDefined","position","translation","rotation","linearVelocity","linvel","angularVelocity","angvel","type","getPhysicsBodyType","mass","gravityScale","isSleep","isSleeping","ccdEnabled","isCcdEnabled","dominanceGroup","colliderSettings","restitution","friction","collisionGroups","isSensor","shapeParams","getShapeParams","body","getCollider","x","y","z","vector3ToXyz","bodyRotation","eulerToXyz","Euler","setFromQuaternion","Quaternion","w","filterOutEmptyFields","collisionShape","getPhysicsBodyShape","name","physicWorldToConfig","world","gravity","integrationParameters","dt","lengthUnit","normalizedAllowedLinearError","normalizedPredictionDistance","numSolverIterations","numInternalPgsIterations","minIslandSize","maxCcdSubsteps"],"mappings":"6QAQO,SAASA,0BAA0BC,QACxC,MAAMC,UAAmCD,OAAOE,eAC1CC,SAAiCF,WAAWE,SAAS,GAE3D,IAAIC,kBAAoB,CAAA,EACpBC,UAAUJ,aACZG,kBAAoB,CAClBE,SAAUL,UAAUM,cACpBC,SAAUP,UAAUO,WACpBC,eAAgBR,UAAUS,SAC1BC,gBAAiBV,UAAUW,SAC3BC,KAAMb,OAAOc,qBACbC,KAAMd,UAAUc,OAChBC,aAAcf,UAAUe,eACxBC,QAAShB,UAAUiB,aACnBC,WAAYlB,UAAUmB,eACtBC,eAAgBpB,UAAUoB,mBAM9B,IAAIC,iBAAmB,CAAA,EACnBjB,UAAUF,YACZmB,iBAAmB,CACjBC,YAAapB,SAASoB,cACtBC,SAAUrB,SAASqB,WACnBC,gBAAiBtB,SAASsB,kBAC1BC,SAAUvB,SAASuB,WACnBC,YAAa3B,OAAO4B,mBAIxB,MAAMC,KAAyC7B,OAAOE,gBAAkBF,OAAO8B,cAC/E,IAAIxB,SAAwB,CAAEyB,EAAG,EAAGC,EAAG,EAAGC,EAAG,GACzCzB,SAAuB,CAAEuB,EAAG,EAAGC,EAAG,EAAGC,EAAG,GAE5C,GAAI5B,UAAUwB,MAAO,CACnBvB,SAAW4B,aAAaL,KAAKtB,eAC7B,MAAM4B,aAAyBN,KAAKrB,WACpCA,SAAW4B,YAAW,IAAIC,OAAQC,kBAAkB,IAAIC,WAAWJ,aAAaJ,EAAGI,aAAaH,EAAGG,aAAaF,EAAGE,aAAaK,IAClI,CAEA,OAAOC,qBAAqB,CAC1BC,eAAgB1C,OAAO2C,yBACpBvC,qBACAkB,iBACHsB,KAAM5C,OAAO4C,KACb/B,KAAMb,OAAOc,qBACba,YAAa3B,OAAO4B,iBACpBtB,kBACAE,mBAEJ,CAEO,SAASqC,oBAAoBC,OAClC,MAAO,CACLC,QAASD,MAAMC,QACfC,sBAAuB,CACrBC,GAAIH,MAAME,sBAAsBC,GAChCC,WAAYJ,MAAME,sBAAsBE,WACxCC,6BAA8BL,MAAME,sBAAsBG,6BAC1DC,6BAA8BN,MAAME,sBAAsBI,6BAC1DC,oBAAqBP,MAAME,sBAAsBK,oBAEjDC,yBAA0BR,MAAME,sBAAsBM,yBACtDC,cAAeT,MAAME,sBAAsBO,cAE3CC,eAAgBV,MAAME,sBAAsBQ,gBAGlD"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Quaternion,Euler}from"three";import{
|
|
1
|
+
import{isDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Vector3,Quaternion,Euler}from"three";import{isPhysicsBodyParamsComplete}from"../Utils/ParamsUtils.js";function physicsBodyConfigToParams(config){const{position:position,rotation:rotation,angularVelocity:angularVelocity,linearVelocity:linearVelocity,...rest}=config,result={...rest,position:new Vector3(position.x,position.y,position.z),rotation:(new Quaternion).setFromEuler(new Euler(rotation.x,rotation.y,rotation.z,rotation.order)),angularVelocity:isDefined(angularVelocity)?new Vector3(angularVelocity.x,angularVelocity.y,angularVelocity.z):void 0,linearVelocity:isDefined(linearVelocity)?new Vector3(linearVelocity.x,linearVelocity.y,linearVelocity.z):void 0};if(!isPhysicsBodyParamsComplete(result))throw new Error("Cannot create physics body: params are lacking of mandatory fields");return result}export{physicsBodyConfigToParams};
|
|
2
2
|
//# sourceMappingURL=PhysicsBodyConfigToParams.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBodyConfigToParams.js","sources":["../../../src/Physics/Adapters/PhysicsBodyConfigToParams.ts"],"sourcesContent":["import type { TPhysicsBodyConfig, TPhysicsBodyParams } from '@
|
|
1
|
+
{"version":3,"file":"PhysicsBodyConfigToParams.js","sources":["../../../src/Physics/Adapters/PhysicsBodyConfigToParams.ts"],"sourcesContent":["import type { TPhysicsBodyConfig, TPhysicsBodyParams } from '@hellpig/anarchy-engine/Physics/Models';\nimport { isPhysicsBodyParamsComplete } from '@hellpig/anarchy-engine/Physics/Utils';\nimport type { TOptional } from '@hellpig/anarchy-shared/Utils';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\nimport { Euler, Quaternion, Vector3 } from 'three';\n\nexport function physicsBodyConfigToParams(config: TPhysicsBodyConfig): TPhysicsBodyParams | never {\n const { position, rotation, angularVelocity, linearVelocity, ...rest } = config;\n\n const result: TPhysicsBodyParams | TOptional<TPhysicsBodyParams> = {\n // type: RigidBodyTypesMap[RigidBodyTypesNames[type]],\n ...rest,\n position: new Vector3(position.x, position.y, position.z),\n rotation: new Quaternion().setFromEuler(new Euler(rotation.x, rotation.y, rotation.z, rotation.order)),\n angularVelocity: isDefined(angularVelocity) ? new Vector3(angularVelocity.x, angularVelocity.y, angularVelocity.z) : undefined,\n linearVelocity: isDefined(linearVelocity) ? new Vector3(linearVelocity.x, linearVelocity.y, linearVelocity.z) : undefined\n };\n\n if (!isPhysicsBodyParamsComplete(result)) throw new Error('Cannot create physics body: params are lacking of mandatory fields');\n return result;\n}\n"],"names":["physicsBodyConfigToParams","config","position","rotation","angularVelocity","linearVelocity","rest","result","Vector3","x","y","z","Quaternion","setFromEuler","Euler","order","isDefined","isPhysicsBodyParamsComplete","Error"],"mappings":"0LAMO,SAASA,0BAA0BC,QACxC,MAAMC,SAAEA,SAAAC,SAAUA,SAAAC,gBAAUA,+BAAiBC,kBAAmBC,MAASL,OAEnEM,OAA6D,IAE9DD,KACHJ,SAAU,IAAIM,QAAQN,SAASO,EAAGP,SAASQ,EAAGR,SAASS,GACvDR,UAAU,IAAIS,YAAaC,aAAa,IAAIC,MAAMX,SAASM,EAAGN,SAASO,EAAGP,SAASQ,EAAGR,SAASY,QAC/FX,gBAAiBY,UAAUZ,iBAAmB,IAAII,QAAQJ,gBAAgBK,EAAGL,gBAAgBM,EAAGN,gBAAgBO,QAAK,EACrHN,eAAgBW,UAAUX,gBAAkB,IAAIG,QAAQH,eAAeI,EAAGJ,eAAeK,EAAGL,eAAeM,QAAK,GAGlH,IAAKM,4BAA4BV,QAAS,MAAM,IAAIW,MAAM,sEAC1D,OAAOX,MACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsWorldConfigToParams.js","sources":["../../../src/Physics/Adapters/PhysicsWorldConfigToParams.ts"],"sourcesContent":["import type { TPhysicsWorldConfig, TPhysicsWorldParams } from '@
|
|
1
|
+
{"version":3,"file":"PhysicsWorldConfigToParams.js","sources":["../../../src/Physics/Adapters/PhysicsWorldConfigToParams.ts"],"sourcesContent":["import type { TPhysicsWorldConfig, TPhysicsWorldParams } from '@hellpig/anarchy-engine/Physics/Models';\n\nexport function physicsWorldConfigToParams(config: TPhysicsWorldConfig): TPhysicsWorldParams | never {\n return config;\n}\n"],"names":["physicsWorldConfigToParams","config"],"mappings":"AAEO,SAASA,2BAA2BC,QACzC,OAAOA,MACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{RigidBodyType}from"@dimforge/rapier3d";import{RigidBodyTypesNames}from"./RigidBodyTypeNames.js";const{Dynamic:Dynamic,Fixed:Fixed,KinematicVelocityBased:KinematicVelocityBased,KinematicPositionBased:KinematicPositionBased}=RigidBodyType,RigidBodyTypesMap={[RigidBodyTypesNames.Dynamic]:Dynamic,[RigidBodyTypesNames.Fixed]:Fixed,[RigidBodyTypesNames.KinematicVelocityBased]:KinematicVelocityBased,[RigidBodyTypesNames.KinematicPositionBased]:KinematicPositionBased};export{RigidBodyTypesMap};
|
|
2
2
|
//# sourceMappingURL=RigidBodyTypesMap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RigidBodyTypesMap.js","sources":["../../../src/Physics/Constants/RigidBodyTypesMap.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"RigidBodyTypesMap.js","sources":["../../../src/Physics/Constants/RigidBodyTypesMap.ts"],"sourcesContent":["import { RigidBodyType } from '@dimforge/rapier3d';\nimport { RigidBodyTypesNames } from '@hellpig/anarchy-engine/Physics/Constants/RigidBodyTypeNames';\n\nconst { Dynamic, Fixed, KinematicVelocityBased, KinematicPositionBased } = RigidBodyType;\n\nexport const RigidBodyTypesMap: Readonly<Record<RigidBodyTypesNames, RigidBodyType>> = {\n [RigidBodyTypesNames.Dynamic]: Dynamic,\n [RigidBodyTypesNames.Fixed]: Fixed,\n [RigidBodyTypesNames.KinematicVelocityBased]: KinematicVelocityBased,\n [RigidBodyTypesNames.KinematicPositionBased]: KinematicPositionBased\n};\n"],"names":["Dynamic","Fixed","KinematicVelocityBased","KinematicPositionBased","RigidBodyType","RigidBodyTypesMap","RigidBodyTypesNames"],"mappings":"uGAGA,MAAMA,QAAEA,QAAAC,MAASA,MAAAC,uBAAOA,uBAAAC,uBAAwBA,wBAA2BC,cAE9DC,kBAA0E,CACrF,CAACC,oBAAoBN,SAAUA,QAC/B,CAACM,oBAAoBL,OAAQA,MAC7B,CAACK,oBAAoBJ,wBAAyBA,uBAC9C,CAACI,oBAAoBH,wBAAyBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBody.js","sources":["../../../src/Physics/Entities/PhysicsBody.ts"],"sourcesContent":["import { AbstractEntity, EntityType } from '@
|
|
1
|
+
{"version":3,"file":"PhysicsBody.js","sources":["../../../src/Physics/Entities/PhysicsBody.ts"],"sourcesContent":["import type { RigidBodyType, World } from '@dimforge/rapier3d';\nimport { AbstractEntity, EntityType } from '@hellpig/anarchy-engine/Abstract';\nimport { physicsBodyEntityToConfig } from '@hellpig/anarchy-engine/Physics/Adapters';\nimport type { CollisionShape, RigidBodyTypesNames } from '@hellpig/anarchy-engine/Physics/Constants';\nimport { RigidBodyTypesMap } from '@hellpig/anarchy-engine/Physics/Constants';\nimport { withPhysicsBodyEntities } from '@hellpig/anarchy-engine/Physics/Mixins';\nimport type { TPhysicsBody, TPhysicsBodyConfig, TPhysicsBodyEntities, TPhysicsBodyParams, TPhysicsDependencies, TPhysicsShapeParams } from '@hellpig/anarchy-engine/Physics/Models';\nimport type { TWriteable } from '@hellpig/anarchy-shared/Utils';\nimport { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Subscription } from 'rxjs';\n\nimport { createPhysicsBodyEntities } from './PhysicsBodyUtils';\n\nexport function PhysicsBody(params: TPhysicsBodyParams, { physicsWorldService }: TPhysicsDependencies): TPhysicsBody {\n const world: World = physicsWorldService.getWorld();\n const entities: TPhysicsBodyEntities = createPhysicsBodyEntities(params, world);\n\n const { isSleep = false } = params;\n if (isSleep) entities.rigidBody?.sleep();\n\n const abstract = AbstractEntity(withPhysicsBodyEntities(entities), EntityType.PhysicsBody, params);\n\n const destroySub$: Subscription = abstract.destroy$.subscribe((): void => {\n if (isDefined(entities.rigidBody)) world.removeRigidBody(entities.rigidBody);\n // eslint-disable-next-line functional/immutable-data\n (entities as TWriteable<TPhysicsBodyEntities>).rigidBody = null as any;\n if (isDefined(entities.collider)) world.removeCollider(entities.collider, true);\n // eslint-disable-next-line functional/immutable-data\n (entities as TWriteable<TPhysicsBodyEntities>).collider = null as any;\n\n destroySub$.unsubscribe();\n });\n\n // eslint-disable-next-line functional/immutable-data\n const result = Object.assign(abstract, {\n setPhysicsBodyType: (type: RigidBodyTypesNames, wakeUp: boolean): void => {\n abstract.getRigidBody()?.setBodyType(RigidBodyTypesMap[type], wakeUp);\n },\n getPhysicsBodyType: (): RigidBodyTypesNames | never => {\n const bodyType: RigidBodyType | undefined = abstract.getRigidBody()?.bodyType();\n if (isNotDefined(bodyType)) return params.type;\n const match = Object.entries(RigidBodyTypesMap).find(([, value]): boolean => value === bodyType);\n const result: RigidBodyTypesNames | undefined = match?.[0] as RigidBodyTypesNames | undefined;\n\n if (isNotDefined(result)) throw new Error(`PhysicsBody: RigidBody type is not defined for object with name \"${params.name}\"`);\n return result;\n },\n getPhysicsBodyShape: (): CollisionShape => params.collisionShape,\n getShapeParams: (): TPhysicsShapeParams => params.shapeParams,\n serialize: (): TPhysicsBodyConfig => physicsBodyEntityToConfig(result)\n });\n\n return result;\n}\n"],"names":["PhysicsBody","params","physicsWorldService","world","getWorld","entities","createPhysicsBodyEntities","isSleep","rigidBody","sleep","abstract","AbstractEntity","withPhysicsBodyEntities","EntityType","destroySub$","destroy$","subscribe","isDefined","removeRigidBody","collider","removeCollider","unsubscribe","result","Object","assign","setPhysicsBodyType","type","wakeUp","getRigidBody","setBodyType","RigidBodyTypesMap","getPhysicsBodyType","bodyType","isNotDefined","match","entries","find","value","Error","name","getPhysicsBodyShape","collisionShape","getShapeParams","shapeParams","serialize","physicsBodyEntityToConfig"],"mappings":"4eAaO,SAASA,YAAYC,QAA4BC,oBAAEA,sBACxD,MAAMC,MAAeD,oBAAoBE,WACnCC,SAAiCC,0BAA0BL,OAAQE,QAEnEI,QAAEA,SAAU,GAAUN,OACxBM,SAASF,SAASG,WAAWC,QAEjC,MAAMC,SAAWC,eAAeC,wBAAwBP,UAAWQ,WAAWb,YAAaC,QAErFa,YAA4BJ,SAASK,SAASC,UAAU,KACxDC,UAAUZ,SAASG,YAAYL,MAAMe,gBAAgBb,SAASG,WAEjEH,SAA8CG,UAAY,KACvDS,UAAUZ,SAASc,iBAAiBC,eAAef,SAASc,UAAU,GAEzEd,SAA8Cc,SAAW,KAE1DL,YAAYO,gBAIRC,OAASC,OAAOC,OAAOd,SAAU,CACrCe,mBAAoB,CAACC,KAA2BC,UAC9CjB,SAASkB,gBAAgBC,YAAYC,kBAAkBJ,MAAOC,SAEhEI,mBAAoB,KAClB,MAAMC,SAAsCtB,SAASkB,gBAAgBI,WACrE,GAAIC,aAAaD,UAAW,OAAO/B,OAAOyB,KAC1C,MAAMQ,MAAQX,OAAOY,QAAQL,mBAAmBM,KAAK,GAAIC,SAAoBA,QAAUL,UACjFV,QAA0CY,QAAQ,GAExD,GAAID,aAAaX,SAAS,MAAM,IAAIgB,MAAM,oEAAoErC,OAAOsC,SACrH,OAAOjB,SAETkB,oBAAqB,IAAsBvC,OAAOwC,eAClDC,eAAgB,IAA2BzC,OAAO0C,YAClDC,UAAW,IAA0BC,0BAA0BvB,UAGjE,OAAOA,MACT"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { World, ColliderDesc } from '@dimforge/rapier3d';
|
|
1
2
|
import { TAllPhysicsShapeParams, TPhysicsBodyEntities, TPhysicsBodyParams, TPhysicsShapeParams } from '../Models';
|
|
2
3
|
import { TOptional } from '../../../../anarchy-shared/src/Utils';
|
|
3
|
-
import { World, ColliderDesc } from '@dimforge/rapier3d';
|
|
4
4
|
export declare function createPhysicsBodyEntities(params: TPhysicsBodyParams, world: World): TPhysicsBodyEntities;
|
|
5
5
|
export declare function getColliderDesc(params: TPhysicsBodyParams): ColliderDesc | never;
|
|
6
6
|
export declare function paramsToMeters(params: TPhysicsShapeParams): TOptional<TAllPhysicsShapeParams>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{
|
|
1
|
+
import{RigidBodyDesc,ColliderDesc}from"@dimforge/rapier3d";import{isDefined,isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{RigidBodyTypesNames}from"../Constants/RigidBodyTypeNames.js";import{CollisionShape}from"../Constants/CollisionShape.js";import{coordsXYZToMeters,meters}from"../../Measurements/Utils/MeasurementsUtils.js";function createPhysicsBodyEntities(params,world){if(params.type===RigidBodyTypesNames.Fixed){const colliderDesc=getColliderDesc(params);return isDefined(params.position)&&colliderDesc.setTranslation(params.position.x,params.position.y,params.position.z),isDefined(params.rotation)&&colliderDesc.setRotation(params.rotation),setupColliderDesc(colliderDesc,params),{rigidBody:void 0,rigidBodyDesc:void 0,colliderDesc:colliderDesc,collider:world.createCollider(colliderDesc)}}{const rigidBodyDesc=RigidBodyDesc[params.type]();isDefined(params.position)&&rigidBodyDesc.setTranslation(params.position.x,params.position.y,params.position.z),isDefined(params.rotation)&&rigidBodyDesc.setRotation(params.rotation),isDefined(params.linearVelocity)&&rigidBodyDesc.setLinvel(params.linearVelocity.x,params.linearVelocity.y,params.linearVelocity.z),isDefined(params.angularVelocity)&&rigidBodyDesc.setAngvel(params.angularVelocity),isDefined(params.gravityScale)&&rigidBodyDesc.setGravityScale(params.gravityScale),isDefined(params.dominanceGroup)&&rigidBodyDesc.setDominanceGroup(params.dominanceGroup),isDefined(params.ccdEnabled)&&rigidBodyDesc.setCcdEnabled(params.ccdEnabled);const rigidBody=world.createRigidBody(rigidBodyDesc),colliderDesc=getColliderDesc(params);return setupColliderDesc(colliderDesc,params),{rigidBody:rigidBody,rigidBodyDesc:rigidBodyDesc,colliderDesc:colliderDesc,collider:world.createCollider(colliderDesc,rigidBody)}}}function setupColliderDesc(colliderDesc,params){isDefined(params.collisionGroups)&&colliderDesc.setCollisionGroups(params.collisionGroups),isDefined(params.friction)&&colliderDesc.setFriction(params.friction),isDefined(params.restitution)&&colliderDesc.setRestitution(params.restitution),isDefined(params.isSensor)&&colliderDesc.setSensor(params.isSensor),isDefined(params.density)&&colliderDesc.setDensity(params.density),isDefined(params.mass)&&colliderDesc.setMass(params.mass),isDefined(params.solverGroups)&&colliderDesc.setSolverGroups(params.solverGroups)}function getColliderDesc(params){const{collisionShape:collisionShape,shapeParams:shapeParams}=params,{a:a,b:b,c:c,borderRadius:borderRadius,nrows:nrows,ncols:ncols,heights:heights,scale:scale,halfHeight:halfHeight,flags:flags,radius:radius,hx:hx,hy:hy,hz:hz,vertices:vertices,indices:indices}=paramsToMeters(shapeParams);switch(collisionShape){case CollisionShape.Ball:if(isNotDefined(radius))throw new Error(`Collider shape is "${collisionShape}" but "radius" is not defined`);return ColliderDesc[collisionShape](radius);case CollisionShape.Cuboid:if(isNotDefined(hx)||isNotDefined(hy)||isNotDefined(hz))throw new Error(`Collider shape is "${collisionShape}" but "hx"(${hx}), "hy"(${hy}), or "hz"(${hz}) are not defined`);return ColliderDesc[collisionShape](hx,hy,hz);case CollisionShape.Capsule:if(isNotDefined(halfHeight)||isNotDefined(radius))throw new Error(`Collider shape is "${collisionShape}" but "halfHeight"(${halfHeight}) or "radius"(${radius}) are not defined`);return ColliderDesc[collisionShape](halfHeight,radius);case CollisionShape.Segment:if(isNotDefined(a)||isNotDefined(b))throw new Error(`Collider shape is "${collisionShape}" but "a"(${a}) or "b"(${b}) are not defined`);return ColliderDesc[collisionShape](a,b);case CollisionShape.Polyline:if(isNotDefined(vertices)||isNotDefined(indices))throw new Error(`Collider shape is "${collisionShape}" but "vertices"(${vertices}) are not defined`);return ColliderDesc[collisionShape](vertices,indices);case CollisionShape.Triangle:if(isNotDefined(a)||isNotDefined(b)||isNotDefined(c))throw new Error(`Collider shape is "${collisionShape}" but "a"(${a}), "b"(${b}), or "c"(${c}) are not defined`);return ColliderDesc[collisionShape](a,b,c);case CollisionShape.TriMesh:if(isNotDefined(vertices)||isNotDefined(indices))throw new Error(`Collider shape is "${collisionShape}" but "vertices"(${vertices}) or "indices"(${indices}) are not defined`);return ColliderDesc[collisionShape](vertices,indices,flags);case CollisionShape.HeightField:if(isNotDefined(nrows)||isNotDefined(ncols)||isNotDefined(heights)||isNotDefined(scale))throw new Error(`Collider shape is "${collisionShape}" but "nrows"(${nrows}), "ncols"(${ncols}), "heights"(${heights}), or "scale"(${scale}) are not defined`);return ColliderDesc[collisionShape](nrows,ncols,heights,scale,flags);case CollisionShape.Compound:case CollisionShape.ConvexPolyhedron:throw new Error(`Collider shape is "${collisionShape}" but it is not supported yet`);case CollisionShape.Cylinder:case CollisionShape.Cone:if(isNotDefined(halfHeight)||isNotDefined(radius))throw new Error(`Collider shape is "${collisionShape}" but "halfHeight"(${halfHeight}) or "radius"(${radius}) are not defined`);return ColliderDesc[collisionShape](halfHeight,radius);case CollisionShape.RoundCuboid:if(isNotDefined(hx)||isNotDefined(hy)||isNotDefined(hz)||isNotDefined(borderRadius))throw new Error(`Collider shape is "${collisionShape}" but "hx"(${hx}), "hy"(${hy}), "hz"(${hz}), or "radius"(${radius}) are not defined`);return ColliderDesc[collisionShape](hx,hy,hz,borderRadius);case CollisionShape.RoundTriangle:if(isNotDefined(a)||isNotDefined(b)||isNotDefined(c)||isNotDefined(borderRadius))throw new Error(`Collider shape is "${collisionShape}" but "a"(${a}), "b"(${b}), "c"(${c}), or "radius"(${radius}) are not defined`);return ColliderDesc[collisionShape](a,b,c,borderRadius);case CollisionShape.RoundCylinder:case CollisionShape.RoundCone:if(isNotDefined(halfHeight)||isNotDefined(radius)||isNotDefined(borderRadius))throw new Error(`Collider shape is "${collisionShape}" but "halfHeight"(${halfHeight}), "radius"(${radius}), or "borderRadius"(${borderRadius}) are not defined`);return ColliderDesc[collisionShape](halfHeight,radius,borderRadius);case CollisionShape.RoundConvexPolyhedron:case CollisionShape.HalfSpace:throw new Error(`Collider shape is "${collisionShape}" but it is not supported yet`);default:throw new Error(`Unknown collisionShape: "${collisionShape}"`)}}function paramsToMeters(params){const vertices=params.vertices,indices=params.indices,flags=params.flags,heights=params.heights,nrows=params.nrows,ncols=params.ncols,a=isDefined(params.a)?coordsXYZToMeters(params.a):void 0,b=isDefined(params.b)?coordsXYZToMeters(params.b):void 0,c=isDefined(params.c)?coordsXYZToMeters(params.c):void 0,borderRadius=params.borderRadius?meters(params.borderRadius):void 0,halfHeight=params.halfHeight?meters(params.halfHeight):void 0,radius=params.radius?meters(params.radius):void 0,hx=params.hx?meters(params.hx):void 0,hy=params.hy?meters(params.hy):void 0,hz=params.hz?meters(params.hz):void 0,scale=params.scale?coordsXYZToMeters(params.scale):void 0;return{a:a,b:b,c:c,borderRadius:borderRadius,nrows:nrows,ncols:ncols,normal:params.normal?coordsXYZToMeters(params.normal):void 0,heights:heights,scale:scale,halfHeight:halfHeight,flags:flags,radius:radius,hx:hx,hy:hy,hz:hz,vertices:vertices,indices:indices}}export{createPhysicsBodyEntities,getColliderDesc,paramsToMeters};
|
|
2
2
|
//# sourceMappingURL=PhysicsBodyUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBodyUtils.js","sources":["../../../src/Physics/Entities/PhysicsBodyUtils.ts"],"sourcesContent":["import { coordsXYZToMeters, meters } from '@Anarchy/Engine/Measurements/Utils';\nimport { CollisionShape, RigidBodyTypesNames } from '@Anarchy/Engine/Physics/Constants';\nimport type {\n TAllPhysicsShapeParams,\n TPhysicsBodyEntities,\n TPhysicsBodyParams,\n TPhysicsShapeBallParams,\n TPhysicsShapeCapsuleParams,\n TPhysicsShapeConeParams,\n TPhysicsShapeCuboidParams,\n TPhysicsShapeHalfSpaceParams,\n TPhysicsShapeHeightfieldParams,\n TPhysicsShapeParams,\n TPhysicsShapePolylineParams,\n TPhysicsShapeRoundTriangleParams,\n TPhysicsShapeTriangleParams,\n TPhysicsShapeTriMeshParams\n} from '@Anarchy/Engine/Physics/Models';\nimport type { TOptional } from '@Anarchy/Shared/Utils';\nimport { isDefined, isNotDefined } from '@Anarchy/Shared/Utils';\nimport type { Collider, RigidBody, TriMeshFlags, World } from '@dimforge/rapier3d';\nimport { ColliderDesc, RigidBodyDesc } from '@dimforge/rapier3d';\nimport type { Vector3 } from 'three';\n\nexport function createPhysicsBodyEntities(params: TPhysicsBodyParams, world: World): TPhysicsBodyEntities {\n //Fixed objects (e.g. \"ground\" or \"walls\") usually don't need a rigid body (they might, but might bugs might appear)\n if (params.type === RigidBodyTypesNames.Fixed) {\n const colliderDesc: ColliderDesc = getColliderDesc(params);\n if (isDefined(params.position)) colliderDesc.setTranslation(params.position.x, params.position.y, params.position.z);\n if (isDefined(params.rotation)) colliderDesc.setRotation(params.rotation);\n setupColliderDesc(colliderDesc, params);\n const collider: Collider = world.createCollider(colliderDesc);\n return { rigidBody: undefined, rigidBodyDesc: undefined, colliderDesc, collider };\n } else {\n const rigidBodyDesc: RigidBodyDesc = RigidBodyDesc[params.type]();\n if (isDefined(params.position)) rigidBodyDesc.setTranslation(params.position.x, params.position.y, params.position.z);\n if (isDefined(params.rotation)) rigidBodyDesc.setRotation(params.rotation);\n if (isDefined(params.linearVelocity)) rigidBodyDesc.setLinvel(params.linearVelocity.x, params.linearVelocity.y, params.linearVelocity.z);\n if (isDefined(params.angularVelocity)) rigidBodyDesc.setAngvel(params.angularVelocity);\n if (isDefined(params.gravityScale)) rigidBodyDesc.setGravityScale(params.gravityScale);\n if (isDefined(params.dominanceGroup)) rigidBodyDesc.setDominanceGroup(params.dominanceGroup);\n if (isDefined(params.ccdEnabled)) rigidBodyDesc.setCcdEnabled(params.ccdEnabled);\n\n const rigidBody: RigidBody = world.createRigidBody(rigidBodyDesc);\n\n const colliderDesc: ColliderDesc = getColliderDesc(params);\n setupColliderDesc(colliderDesc, params);\n\n const collider: Collider = world.createCollider(colliderDesc, rigidBody);\n return { rigidBody, rigidBodyDesc, colliderDesc, collider };\n }\n}\n\nfunction setupColliderDesc(colliderDesc: ColliderDesc, params: TPhysicsBodyParams): void {\n if (isDefined(params.collisionGroups)) colliderDesc.setCollisionGroups(params.collisionGroups);\n if (isDefined(params.friction)) colliderDesc.setFriction(params.friction);\n if (isDefined(params.restitution)) colliderDesc.setRestitution(params.restitution);\n if (isDefined(params.isSensor)) colliderDesc.setSensor(params.isSensor);\n if (isDefined(params.density)) colliderDesc.setDensity(params.density);\n if (isDefined(params.mass)) colliderDesc.setMass(params.mass);\n if (isDefined(params.solverGroups)) colliderDesc.setSolverGroups(params.solverGroups);\n}\n\n// TODO add unit tests\nexport function getColliderDesc(params: TPhysicsBodyParams): ColliderDesc | never {\n const { collisionShape, shapeParams } = params;\n const { a, b, c, borderRadius, nrows, ncols, heights, scale, halfHeight, flags, radius, hx, hy, hz, vertices, indices } = paramsToMeters(shapeParams);\n\n switch (collisionShape) {\n case CollisionShape.Ball:\n if (isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"radius\" is not defined`);\n return ColliderDesc[collisionShape](radius);\n case CollisionShape.Cuboid:\n if (isNotDefined(hx) || isNotDefined(hy) || isNotDefined(hz)) throw new Error(`Collider shape is \"${collisionShape}\" but \"hx\"(${hx}), \"hy\"(${hy}), or \"hz\"(${hz}) are not defined`);\n return ColliderDesc[collisionShape](hx, hy, hz);\n case CollisionShape.Capsule:\n if (isNotDefined(halfHeight) || isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}) or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius);\n case CollisionShape.Segment:\n if (isNotDefined(a) || isNotDefined(b)) throw new Error(`Collider shape is \"${collisionShape}\" but \"a\"(${a}) or \"b\"(${b}) are not defined`);\n return ColliderDesc[collisionShape](a, b);\n case CollisionShape.Polyline:\n if (isNotDefined(vertices) || isNotDefined(indices)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}) are not defined`);\n return ColliderDesc[collisionShape](vertices, indices);\n case CollisionShape.Triangle:\n if (isNotDefined(a) || isNotDefined(b) || isNotDefined(c)) throw new Error(`Collider shape is \"${collisionShape}\" but \"a\"(${a}), \"b\"(${b}), or \"c\"(${c}) are not defined`);\n return ColliderDesc[collisionShape](a, b, c);\n case CollisionShape.TriMesh:\n if (isNotDefined(vertices) || isNotDefined(indices)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}) or \"indices\"(${indices}) are not defined`);\n return ColliderDesc[collisionShape](vertices, indices, flags);\n case CollisionShape.HeightField:\n if (isNotDefined(nrows) || isNotDefined(ncols) || isNotDefined(heights) || isNotDefined(scale))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"nrows\"(${nrows}), \"ncols\"(${ncols}), \"heights\"(${heights}), or \"scale\"(${scale}) are not defined`);\n return ColliderDesc[collisionShape](nrows, ncols, heights, scale, flags);\n case CollisionShape.Compound:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n case CollisionShape.ConvexPolyhedron:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n // if (isNotDefined(vertices) || isNotDefined(indices)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}) or \"indices\"(${indices}) are not defined`);\n // return ColliderDesc[collisionShape](vertices, indices);\n case CollisionShape.Cylinder:\n if (isNotDefined(halfHeight) || isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}) or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius);\n case CollisionShape.Cone:\n if (isNotDefined(halfHeight) || isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}) or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius);\n case CollisionShape.RoundCuboid:\n if (isNotDefined(hx) || isNotDefined(hy) || isNotDefined(hz) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"hx\"(${hx}), \"hy\"(${hy}), \"hz\"(${hz}), or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](hx, hy, hz, borderRadius);\n case CollisionShape.RoundTriangle:\n if (isNotDefined(a) || isNotDefined(b) || isNotDefined(c) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"a\"(${a}), \"b\"(${b}), \"c\"(${c}), or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](a, b, c, borderRadius);\n case CollisionShape.RoundCylinder:\n if (isNotDefined(halfHeight) || isNotDefined(radius) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}), \"radius\"(${radius}), or \"borderRadius\"(${borderRadius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius, borderRadius);\n case CollisionShape.RoundCone:\n if (isNotDefined(halfHeight) || isNotDefined(radius) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}), \"radius\"(${radius}), or \"borderRadius\"(${borderRadius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius, borderRadius);\n case CollisionShape.RoundConvexPolyhedron:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n // if (isNotDefined(vertices) || isNotDefined(indices) || isNotDefined(borderRadius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}), \"indices\"(${indices}), or \"borderRadius\"(${borderRadius}) are not defined`);\n // return ColliderDesc[collisionShape](vertices, indices, borderRadius );\n case CollisionShape.HalfSpace:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n // if (isNotDefined(normal)) throw new Error(`Collider shape is \"${collisionShape}\" but \"normal\" is not defined`);\n // return ColliderDesc[collisionShape](normal);\n default:\n throw new Error(`Unknown collisionShape: \"${collisionShape}\"`);\n }\n}\n\nexport function paramsToMeters(params: TPhysicsShapeParams): TOptional<TAllPhysicsShapeParams> {\n const vertices: Float32Array | undefined = (params as TPhysicsShapePolylineParams).vertices;\n const indices: Uint32Array | undefined = (params as TPhysicsShapePolylineParams).indices;\n // \"flags\" as undefined to suppress a bug with TS\n const flags: TriMeshFlags | undefined = (params as TPhysicsShapeTriMeshParams).flags as undefined;\n const heights: Float32Array | undefined = (params as TPhysicsShapeHeightfieldParams).heights;\n const nrows: number | undefined = (params as TPhysicsShapeHeightfieldParams).nrows;\n const ncols: number | undefined = (params as TPhysicsShapeHeightfieldParams).ncols;\n\n const a: Vector3 | undefined = isDefined((params as TPhysicsShapeTriangleParams).a) ? coordsXYZToMeters((params as TPhysicsShapeTriangleParams).a) : undefined;\n const b: Vector3 | undefined = isDefined((params as TPhysicsShapeTriangleParams).b) ? coordsXYZToMeters((params as TPhysicsShapeTriangleParams).b) : undefined;\n const c: Vector3 | undefined = isDefined((params as TPhysicsShapeTriangleParams).c) ? coordsXYZToMeters((params as TPhysicsShapeTriangleParams).c) : undefined;\n const borderRadius: number | undefined = (params as TPhysicsShapeRoundTriangleParams).borderRadius ? meters((params as TPhysicsShapeRoundTriangleParams).borderRadius) : undefined;\n const halfHeight: number | undefined = (params as TPhysicsShapeCapsuleParams).halfHeight ? meters((params as TPhysicsShapeCapsuleParams).halfHeight) : undefined;\n const radius: number | undefined = (params as TPhysicsShapeBallParams).radius ? meters((params as TPhysicsShapeConeParams).radius) : undefined;\n const hx: number | undefined = (params as TPhysicsShapeCuboidParams).hx ? meters((params as TPhysicsShapeCuboidParams).hx) : undefined;\n const hy: number | undefined = (params as TPhysicsShapeCuboidParams).hy ? meters((params as TPhysicsShapeCuboidParams).hy) : undefined;\n const hz: number | undefined = (params as TPhysicsShapeCuboidParams).hz ? meters((params as TPhysicsShapeCuboidParams).hz) : undefined;\n const scale: Vector3 | undefined = (params as TPhysicsShapeHeightfieldParams).scale ? coordsXYZToMeters((params as TPhysicsShapeHeightfieldParams).scale) : undefined;\n const normal: Vector3 | undefined = (params as TPhysicsShapeHalfSpaceParams).normal ? coordsXYZToMeters((params as TPhysicsShapeHalfSpaceParams).normal) : undefined;\n\n return { a, b, c, borderRadius, nrows, ncols, normal, heights, scale, halfHeight, flags, radius, hx, hy, hz, vertices, indices };\n}\n"],"names":["createPhysicsBodyEntities","params","world","type","RigidBodyTypesNames","Fixed","colliderDesc","getColliderDesc","isDefined","position","setTranslation","x","y","z","rotation","setRotation","setupColliderDesc","rigidBody","rigidBodyDesc","collider","createCollider","RigidBodyDesc","linearVelocity","setLinvel","angularVelocity","setAngvel","gravityScale","setGravityScale","dominanceGroup","setDominanceGroup","ccdEnabled","setCcdEnabled","createRigidBody","collisionGroups","setCollisionGroups","friction","setFriction","restitution","setRestitution","isSensor","setSensor","density","setDensity","mass","setMass","solverGroups","setSolverGroups","collisionShape","shapeParams","a","b","c","borderRadius","nrows","ncols","heights","scale","halfHeight","flags","radius","hx","hy","hz","vertices","indices","paramsToMeters","CollisionShape","Ball","isNotDefined","Error","ColliderDesc","Cuboid","Capsule","Segment","Polyline","Triangle","TriMesh","HeightField","Compound","ConvexPolyhedron","Cylinder","Cone","RoundCuboid","RoundTriangle","RoundCylinder","RoundCone","RoundConvexPolyhedron","HalfSpace","coordsXYZToMeters","meters","normal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PhysicsBodyUtils.js","sources":["../../../src/Physics/Entities/PhysicsBodyUtils.ts"],"sourcesContent":["import type { Collider, RigidBody, TriMeshFlags, World } from '@dimforge/rapier3d';\nimport { ColliderDesc, RigidBodyDesc } from '@dimforge/rapier3d';\nimport { coordsXYZToMeters, meters } from '@hellpig/anarchy-engine/Measurements/Utils';\nimport { CollisionShape, RigidBodyTypesNames } from '@hellpig/anarchy-engine/Physics/Constants';\nimport type {\n TAllPhysicsShapeParams,\n TPhysicsBodyEntities,\n TPhysicsBodyParams,\n TPhysicsShapeBallParams,\n TPhysicsShapeCapsuleParams,\n TPhysicsShapeConeParams,\n TPhysicsShapeCuboidParams,\n TPhysicsShapeHalfSpaceParams,\n TPhysicsShapeHeightfieldParams,\n TPhysicsShapeParams,\n TPhysicsShapePolylineParams,\n TPhysicsShapeRoundTriangleParams,\n TPhysicsShapeTriangleParams,\n TPhysicsShapeTriMeshParams\n} from '@hellpig/anarchy-engine/Physics/Models';\nimport type { TOptional } from '@hellpig/anarchy-shared/Utils';\nimport { isDefined, isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Vector3 } from 'three';\n\nexport function createPhysicsBodyEntities(params: TPhysicsBodyParams, world: World): TPhysicsBodyEntities {\n //Fixed objects (e.g. \"ground\" or \"walls\") usually don't need a rigid body (they might, but might bugs might appear)\n if (params.type === RigidBodyTypesNames.Fixed) {\n const colliderDesc: ColliderDesc = getColliderDesc(params);\n if (isDefined(params.position)) colliderDesc.setTranslation(params.position.x, params.position.y, params.position.z);\n if (isDefined(params.rotation)) colliderDesc.setRotation(params.rotation);\n setupColliderDesc(colliderDesc, params);\n const collider: Collider = world.createCollider(colliderDesc);\n return { rigidBody: undefined, rigidBodyDesc: undefined, colliderDesc, collider };\n } else {\n const rigidBodyDesc: RigidBodyDesc = RigidBodyDesc[params.type]();\n if (isDefined(params.position)) rigidBodyDesc.setTranslation(params.position.x, params.position.y, params.position.z);\n if (isDefined(params.rotation)) rigidBodyDesc.setRotation(params.rotation);\n if (isDefined(params.linearVelocity)) rigidBodyDesc.setLinvel(params.linearVelocity.x, params.linearVelocity.y, params.linearVelocity.z);\n if (isDefined(params.angularVelocity)) rigidBodyDesc.setAngvel(params.angularVelocity);\n if (isDefined(params.gravityScale)) rigidBodyDesc.setGravityScale(params.gravityScale);\n if (isDefined(params.dominanceGroup)) rigidBodyDesc.setDominanceGroup(params.dominanceGroup);\n if (isDefined(params.ccdEnabled)) rigidBodyDesc.setCcdEnabled(params.ccdEnabled);\n\n const rigidBody: RigidBody = world.createRigidBody(rigidBodyDesc);\n\n const colliderDesc: ColliderDesc = getColliderDesc(params);\n setupColliderDesc(colliderDesc, params);\n\n const collider: Collider = world.createCollider(colliderDesc, rigidBody);\n return { rigidBody, rigidBodyDesc, colliderDesc, collider };\n }\n}\n\nfunction setupColliderDesc(colliderDesc: ColliderDesc, params: TPhysicsBodyParams): void {\n if (isDefined(params.collisionGroups)) colliderDesc.setCollisionGroups(params.collisionGroups);\n if (isDefined(params.friction)) colliderDesc.setFriction(params.friction);\n if (isDefined(params.restitution)) colliderDesc.setRestitution(params.restitution);\n if (isDefined(params.isSensor)) colliderDesc.setSensor(params.isSensor);\n if (isDefined(params.density)) colliderDesc.setDensity(params.density);\n if (isDefined(params.mass)) colliderDesc.setMass(params.mass);\n if (isDefined(params.solverGroups)) colliderDesc.setSolverGroups(params.solverGroups);\n}\n\n// TODO add unit tests\nexport function getColliderDesc(params: TPhysicsBodyParams): ColliderDesc | never {\n const { collisionShape, shapeParams } = params;\n const { a, b, c, borderRadius, nrows, ncols, heights, scale, halfHeight, flags, radius, hx, hy, hz, vertices, indices } = paramsToMeters(shapeParams);\n\n switch (collisionShape) {\n case CollisionShape.Ball:\n if (isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"radius\" is not defined`);\n return ColliderDesc[collisionShape](radius);\n case CollisionShape.Cuboid:\n if (isNotDefined(hx) || isNotDefined(hy) || isNotDefined(hz)) throw new Error(`Collider shape is \"${collisionShape}\" but \"hx\"(${hx}), \"hy\"(${hy}), or \"hz\"(${hz}) are not defined`);\n return ColliderDesc[collisionShape](hx, hy, hz);\n case CollisionShape.Capsule:\n if (isNotDefined(halfHeight) || isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}) or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius);\n case CollisionShape.Segment:\n if (isNotDefined(a) || isNotDefined(b)) throw new Error(`Collider shape is \"${collisionShape}\" but \"a\"(${a}) or \"b\"(${b}) are not defined`);\n return ColliderDesc[collisionShape](a, b);\n case CollisionShape.Polyline:\n if (isNotDefined(vertices) || isNotDefined(indices)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}) are not defined`);\n return ColliderDesc[collisionShape](vertices, indices);\n case CollisionShape.Triangle:\n if (isNotDefined(a) || isNotDefined(b) || isNotDefined(c)) throw new Error(`Collider shape is \"${collisionShape}\" but \"a\"(${a}), \"b\"(${b}), or \"c\"(${c}) are not defined`);\n return ColliderDesc[collisionShape](a, b, c);\n case CollisionShape.TriMesh:\n if (isNotDefined(vertices) || isNotDefined(indices)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}) or \"indices\"(${indices}) are not defined`);\n return ColliderDesc[collisionShape](vertices, indices, flags);\n case CollisionShape.HeightField:\n if (isNotDefined(nrows) || isNotDefined(ncols) || isNotDefined(heights) || isNotDefined(scale))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"nrows\"(${nrows}), \"ncols\"(${ncols}), \"heights\"(${heights}), or \"scale\"(${scale}) are not defined`);\n return ColliderDesc[collisionShape](nrows, ncols, heights, scale, flags);\n case CollisionShape.Compound:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n case CollisionShape.ConvexPolyhedron:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n // if (isNotDefined(vertices) || isNotDefined(indices)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}) or \"indices\"(${indices}) are not defined`);\n // return ColliderDesc[collisionShape](vertices, indices);\n case CollisionShape.Cylinder:\n if (isNotDefined(halfHeight) || isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}) or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius);\n case CollisionShape.Cone:\n if (isNotDefined(halfHeight) || isNotDefined(radius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}) or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius);\n case CollisionShape.RoundCuboid:\n if (isNotDefined(hx) || isNotDefined(hy) || isNotDefined(hz) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"hx\"(${hx}), \"hy\"(${hy}), \"hz\"(${hz}), or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](hx, hy, hz, borderRadius);\n case CollisionShape.RoundTriangle:\n if (isNotDefined(a) || isNotDefined(b) || isNotDefined(c) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"a\"(${a}), \"b\"(${b}), \"c\"(${c}), or \"radius\"(${radius}) are not defined`);\n return ColliderDesc[collisionShape](a, b, c, borderRadius);\n case CollisionShape.RoundCylinder:\n if (isNotDefined(halfHeight) || isNotDefined(radius) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}), \"radius\"(${radius}), or \"borderRadius\"(${borderRadius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius, borderRadius);\n case CollisionShape.RoundCone:\n if (isNotDefined(halfHeight) || isNotDefined(radius) || isNotDefined(borderRadius))\n throw new Error(`Collider shape is \"${collisionShape}\" but \"halfHeight\"(${halfHeight}), \"radius\"(${radius}), or \"borderRadius\"(${borderRadius}) are not defined`);\n return ColliderDesc[collisionShape](halfHeight, radius, borderRadius);\n case CollisionShape.RoundConvexPolyhedron:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n // if (isNotDefined(vertices) || isNotDefined(indices) || isNotDefined(borderRadius)) throw new Error(`Collider shape is \"${collisionShape}\" but \"vertices\"(${vertices}), \"indices\"(${indices}), or \"borderRadius\"(${borderRadius}) are not defined`);\n // return ColliderDesc[collisionShape](vertices, indices, borderRadius );\n case CollisionShape.HalfSpace:\n throw new Error(`Collider shape is \"${collisionShape}\" but it is not supported yet`);\n // if (isNotDefined(normal)) throw new Error(`Collider shape is \"${collisionShape}\" but \"normal\" is not defined`);\n // return ColliderDesc[collisionShape](normal);\n default:\n throw new Error(`Unknown collisionShape: \"${collisionShape}\"`);\n }\n}\n\nexport function paramsToMeters(params: TPhysicsShapeParams): TOptional<TAllPhysicsShapeParams> {\n const vertices: Float32Array | undefined = (params as TPhysicsShapePolylineParams).vertices;\n const indices: Uint32Array | undefined = (params as TPhysicsShapePolylineParams).indices;\n // \"flags\" as undefined to suppress a bug with TS\n const flags: TriMeshFlags | undefined = (params as TPhysicsShapeTriMeshParams).flags as undefined;\n const heights: Float32Array | undefined = (params as TPhysicsShapeHeightfieldParams).heights;\n const nrows: number | undefined = (params as TPhysicsShapeHeightfieldParams).nrows;\n const ncols: number | undefined = (params as TPhysicsShapeHeightfieldParams).ncols;\n\n const a: Vector3 | undefined = isDefined((params as TPhysicsShapeTriangleParams).a) ? coordsXYZToMeters((params as TPhysicsShapeTriangleParams).a) : undefined;\n const b: Vector3 | undefined = isDefined((params as TPhysicsShapeTriangleParams).b) ? coordsXYZToMeters((params as TPhysicsShapeTriangleParams).b) : undefined;\n const c: Vector3 | undefined = isDefined((params as TPhysicsShapeTriangleParams).c) ? coordsXYZToMeters((params as TPhysicsShapeTriangleParams).c) : undefined;\n const borderRadius: number | undefined = (params as TPhysicsShapeRoundTriangleParams).borderRadius ? meters((params as TPhysicsShapeRoundTriangleParams).borderRadius) : undefined;\n const halfHeight: number | undefined = (params as TPhysicsShapeCapsuleParams).halfHeight ? meters((params as TPhysicsShapeCapsuleParams).halfHeight) : undefined;\n const radius: number | undefined = (params as TPhysicsShapeBallParams).radius ? meters((params as TPhysicsShapeConeParams).radius) : undefined;\n const hx: number | undefined = (params as TPhysicsShapeCuboidParams).hx ? meters((params as TPhysicsShapeCuboidParams).hx) : undefined;\n const hy: number | undefined = (params as TPhysicsShapeCuboidParams).hy ? meters((params as TPhysicsShapeCuboidParams).hy) : undefined;\n const hz: number | undefined = (params as TPhysicsShapeCuboidParams).hz ? meters((params as TPhysicsShapeCuboidParams).hz) : undefined;\n const scale: Vector3 | undefined = (params as TPhysicsShapeHeightfieldParams).scale ? coordsXYZToMeters((params as TPhysicsShapeHeightfieldParams).scale) : undefined;\n const normal: Vector3 | undefined = (params as TPhysicsShapeHalfSpaceParams).normal ? coordsXYZToMeters((params as TPhysicsShapeHalfSpaceParams).normal) : undefined;\n\n return { a, b, c, borderRadius, nrows, ncols, normal, heights, scale, halfHeight, flags, radius, hx, hy, hz, vertices, indices };\n}\n"],"names":["createPhysicsBodyEntities","params","world","type","RigidBodyTypesNames","Fixed","colliderDesc","getColliderDesc","isDefined","position","setTranslation","x","y","z","rotation","setRotation","setupColliderDesc","rigidBody","rigidBodyDesc","collider","createCollider","RigidBodyDesc","linearVelocity","setLinvel","angularVelocity","setAngvel","gravityScale","setGravityScale","dominanceGroup","setDominanceGroup","ccdEnabled","setCcdEnabled","createRigidBody","collisionGroups","setCollisionGroups","friction","setFriction","restitution","setRestitution","isSensor","setSensor","density","setDensity","mass","setMass","solverGroups","setSolverGroups","collisionShape","shapeParams","a","b","c","borderRadius","nrows","ncols","heights","scale","halfHeight","flags","radius","hx","hy","hz","vertices","indices","paramsToMeters","CollisionShape","Ball","isNotDefined","Error","ColliderDesc","Cuboid","Capsule","Segment","Polyline","Triangle","TriMesh","HeightField","Compound","ConvexPolyhedron","Cylinder","Cone","RoundCuboid","RoundTriangle","RoundCylinder","RoundCone","RoundConvexPolyhedron","HalfSpace","coordsXYZToMeters","meters","normal"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBodyFactory.js","sources":["../../../src/Physics/Factories/PhysicsBodyFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@
|
|
1
|
+
{"version":3,"file":"PhysicsBodyFactory.js","sources":["../../../src/Physics/Factories/PhysicsBodyFactory.ts"],"sourcesContent":["import type { TReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { FactoryType, ReactiveFactory } from '@hellpig/anarchy-engine/Abstract';\nimport { physicsBodyConfigToParams } from '@hellpig/anarchy-engine/Physics/Adapters';\nimport { PhysicsBody } from '@hellpig/anarchy-engine/Physics/Entities';\nimport type { TPhysicsBody, TPhysicsBodyFactory, TPhysicsBodyParams, TPhysicsDependencies } from '@hellpig/anarchy-engine/Physics/Models';\n\nexport function PhysicsBodyFactory(): TPhysicsBodyFactory {\n const factory: TReactiveFactory<TPhysicsBody, TPhysicsBodyParams, TPhysicsDependencies> = ReactiveFactory(FactoryType.PhysicsBody, PhysicsBody);\n\n // eslint-disable-next-line functional/immutable-data\n return Object.assign(factory, { configToParams: physicsBodyConfigToParams });\n}\n"],"names":["PhysicsBodyFactory","factory","ReactiveFactory","FactoryType","PhysicsBody","Object","assign","configToParams","physicsBodyConfigToParams"],"mappings":"8QAMO,SAASA,qBACd,MAAMC,QAAoFC,gBAAgBC,YAAYC,YAAaA,aAGnI,OAAOC,OAAOC,OAAOL,QAAS,CAAEM,eAAgBC,2BAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WithPhysicsBodyEntities.js","sources":["../../../src/Physics/Mixins/WithPhysicsBodyEntities.ts"],"sourcesContent":["import type { TPhysicsBodyEntities, TWithPhysicsBodyEntities } from '@
|
|
1
|
+
{"version":3,"file":"WithPhysicsBodyEntities.js","sources":["../../../src/Physics/Mixins/WithPhysicsBodyEntities.ts"],"sourcesContent":["import type { TPhysicsBodyEntities, TWithPhysicsBodyEntities } from '@hellpig/anarchy-engine/Physics/Models';\n\nexport function withPhysicsBodyEntities({ rigidBody, rigidBodyDesc, colliderDesc, collider }: TPhysicsBodyEntities): TWithPhysicsBodyEntities {\n return {\n getRigidBody: () => rigidBody,\n getRigidBodyDesc: () => rigidBodyDesc,\n getColliderDesc: () => colliderDesc,\n getCollider: () => collider\n };\n}\n"],"names":["withPhysicsBodyEntities","rigidBody","rigidBodyDesc","colliderDesc","collider","getRigidBody","getRigidBodyDesc","getColliderDesc","getCollider"],"mappings":"AAEO,SAASA,yBAAwBC,UAAEA,UAAAC,cAAWA,cAAAC,aAAeA,aAAAC,SAAcA,WAChF,MAAO,CACLC,aAAc,IAAMJ,UACpBK,iBAAkB,IAAMJ,cACxBK,gBAAiB,IAAMJ,aACvBK,YAAa,IAAMJ,SAEvB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { World } from '@dimforge/rapier3d';
|
|
1
2
|
import { TAbstractService } from '../../Abstract';
|
|
2
3
|
import { TWithSceneGetterService } from '../../Mixins';
|
|
3
|
-
import { World } from '@dimforge/rapier3d';
|
|
4
4
|
import { Vector3 } from 'three';
|
|
5
5
|
import { TPhysicsDebugRenderer } from './TPhysicsDebugRenderer';
|
|
6
6
|
import { TPhysicsLoop } from './TPhysicsLoop';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBodyRegistry.js","sources":["../../../src/Physics/Registries/PhysicsBodyRegistry.ts"],"sourcesContent":["import { AbstractEntityRegistry, RegistryType } from '@
|
|
1
|
+
{"version":3,"file":"PhysicsBodyRegistry.js","sources":["../../../src/Physics/Registries/PhysicsBodyRegistry.ts"],"sourcesContent":["import { AbstractEntityRegistry, RegistryType } from '@hellpig/anarchy-engine/Abstract';\nimport type { TPhysicsBody, TPhysicsBodyRegistry } from '@hellpig/anarchy-engine/Physics/Models';\n\nexport function PhysicsBodyRegistry(): TPhysicsBodyRegistry {\n return AbstractEntityRegistry<TPhysicsBody>(RegistryType.PhysicsBody);\n}\n"],"names":["PhysicsBodyRegistry","AbstractEntityRegistry","RegistryType","PhysicsBody"],"mappings":"2JAGO,SAASA,sBACd,OAAOC,uBAAqCC,aAAaC,YAC3D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
+
import { World } from '@dimforge/rapier3d';
|
|
1
2
|
import { TPhysicsDebugRenderer, TPhysicsLoop } from '../Models';
|
|
2
3
|
import { TSceneWrapper } from '../../Scene/Models';
|
|
3
|
-
import { World } from '@dimforge/rapier3d';
|
|
4
4
|
export declare function PhysicsDebugRenderer(sceneW: TSceneWrapper, world: World, loop: TPhysicsLoop): TPhysicsDebugRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsDebugRenderer.js","sources":["../../../src/Physics/Renderers/PhysicsDebugRenderer.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"PhysicsDebugRenderer.js","sources":["../../../src/Physics/Renderers/PhysicsDebugRenderer.ts"],"sourcesContent":["import type { World } from '@dimforge/rapier3d';\nimport type { TDestroyable } from '@hellpig/anarchy-engine/Mixins';\nimport { destroyableMixin } from '@hellpig/anarchy-engine/Mixins';\nimport type { TPhysicsDebugRenderer, TPhysicsLoop } from '@hellpig/anarchy-engine/Physics/Models';\nimport type { TSceneWrapper } from '@hellpig/anarchy-engine/Scene/Models';\nimport type { Subscription } from 'rxjs';\nimport { BufferAttribute, BufferGeometry, LineBasicMaterial, LineSegments } from 'three';\n\nexport function PhysicsDebugRenderer(sceneW: TSceneWrapper, world: World, loop: TPhysicsLoop): TPhysicsDebugRenderer {\n let mesh = new LineSegments(new BufferGeometry(), new LineBasicMaterial({ color: 0xffffff, vertexColors: true }));\n // eslint-disable-next-line functional/immutable-data\n mesh.frustumCulled = false;\n sceneW.entity.add(mesh);\n\n let enabled: boolean = true;\n\n function update(): void {\n if (enabled) {\n const { vertices, colors } = world.debugRender();\n mesh.geometry.setAttribute('position', new BufferAttribute(vertices, 3));\n mesh.geometry.setAttribute('color', new BufferAttribute(colors, 4));\n // eslint-disable-next-line functional/immutable-data\n mesh.visible = true;\n } else {\n // eslint-disable-next-line functional/immutable-data\n mesh.visible = false;\n }\n }\n\n const loopSubscription$: Subscription = loop.tick$.subscribe(update);\n\n const destroyable: TDestroyable = destroyableMixin();\n const destroySub$: Subscription = destroyable.destroy$.subscribe((): void => {\n destroySub$.unsubscribe();\n\n mesh.geometry.dispose();\n mesh.material.dispose();\n mesh = null as any;\n loopSubscription$.unsubscribe();\n });\n\n return {\n update,\n isEnabled: (): boolean => {\n return enabled;\n },\n start(): void {\n enabled = true;\n },\n stop(): void {\n enabled = false;\n },\n ...destroyable\n };\n}\n"],"names":["PhysicsDebugRenderer","sceneW","world","loop","mesh","LineSegments","BufferGeometry","LineBasicMaterial","color","vertexColors","frustumCulled","entity","add","enabled","update","vertices","colors","debugRender","geometry","setAttribute","BufferAttribute","visible","loopSubscription$","tick$","subscribe","destroyable","destroyableMixin","destroySub$","destroy$","unsubscribe","dispose","material","isEnabled","start","stop"],"mappings":"yJAQO,SAASA,qBAAqBC,OAAuBC,MAAcC,MACxE,IAAIC,KAAO,IAAIC,aAAa,IAAIC,eAAkB,IAAIC,kBAAkB,CAAEC,MAAO,SAAUC,cAAc,KAEzGL,KAAKM,eAAgB,EACrBT,OAAOU,OAAOC,IAAIR,MAElB,IAAIS,SAAmB,EAEvB,SAASC,SACP,GAAID,QAAS,CACX,MAAME,SAAEA,SAAAC,OAAUA,QAAWd,MAAMe,cACnCb,KAAKc,SAASC,aAAa,WAAY,IAAIC,gBAAgBL,SAAU,IACrEX,KAAKc,SAASC,aAAa,QAAS,IAAIC,gBAAgBJ,OAAQ,IAEhEZ,KAAKiB,SAAU,CACjB,MAEEjB,KAAKiB,SAAU,CAEnB,CAEA,MAAMC,kBAAkCnB,KAAKoB,MAAMC,UAAUV,QAEvDW,YAA4BC,mBAC5BC,YAA4BF,YAAYG,SAASJ,UAAU,KAC/DG,YAAYE,cAEZzB,KAAKc,SAASY,UACd1B,KAAK2B,SAASD,UACd1B,KAAO,KACPkB,kBAAkBO,gBAGpB,MAAO,CACLf,cACAkB,UAAW,IACFnB,QAET,KAAAoB,GACEpB,SAAU,CACZ,EACA,IAAAqB,GACErB,SAAU,CACZ,KACGY,YAEP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsBodyService.js","sources":["../../../src/Physics/Services/PhysicsBodyService.ts"],"sourcesContent":["import type { TAbstractService } from '@
|
|
1
|
+
{"version":3,"file":"PhysicsBodyService.js","sources":["../../../src/Physics/Services/PhysicsBodyService.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 { withCreateFromConfigServiceMixin, withCreateServiceMixin, withFactoryService, withRegistryService, withSerializableEntities } from '@hellpig/anarchy-engine/Mixins';\nimport type {\n TPhysicsBody,\n TPhysicsBodyConfig,\n TPhysicsBodyFactory,\n TPhysicsBodyRegistry,\n TPhysicsBodyService,\n TPhysicsBodyServiceWithCreate,\n TPhysicsBodyServiceWithCreateFromConfig,\n TPhysicsBodyServiceWithFactory,\n TPhysicsBodyServiceWithRegistry,\n TPhysicsWorldService\n} from '@hellpig/anarchy-engine/Physics/Models';\nimport { getKinematicDataFromPhysics } from '@hellpig/anarchy-engine/Physics/Utils';\nimport { mergeAll } from '@hellpig/anarchy-engine/Utils';\nimport type { Subscription } from 'rxjs';\n\nexport function PhysicsBodyService(factory: TPhysicsBodyFactory, registry: TPhysicsBodyRegistry, physicsWorldService: TPhysicsWorldService): TPhysicsBodyService {\n const factorySub$: Subscription = factory.entityCreated$.subscribe((body: TPhysicsBody): void => registry.add(body));\n const disposable: ReadonlyArray<TDisposable> = [registry, factory, factorySub$];\n const abstractService: TAbstractService = AbstractService(disposable);\n\n const withCreateService: TPhysicsBodyServiceWithCreate = withCreateServiceMixin(factory, { physicsWorldService });\n const withCreateFromConfigService: TPhysicsBodyServiceWithCreateFromConfig = withCreateFromConfigServiceMixin(withCreateService.create, factory.configToParams, undefined);\n const withFactory: TPhysicsBodyServiceWithFactory = withFactoryService(factory);\n const withRegistry: TPhysicsBodyServiceWithRegistry = withRegistryService(registry);\n\n return mergeAll(\n abstractService,\n withCreateService,\n withCreateFromConfigService,\n withFactory,\n withRegistry,\n withSerializableEntities<TPhysicsBody, TPhysicsBodyConfig, undefined>(registry),\n\n {\n getKinematicDataFromPhysics\n }\n );\n}\n"],"names":["PhysicsBodyService","factory","registry","physicsWorldService","factorySub$","entityCreated$","subscribe","body","add","abstractService","AbstractService","withCreateService","withCreateServiceMixin","withCreateFromConfigService","withCreateFromConfigServiceMixin","create","configToParams","withFactory","withFactoryService","withRegistry","withRegistryService","mergeAll","withSerializableEntities","getKinematicDataFromPhysics"],"mappings":"umBAoBO,SAASA,mBAAmBC,QAA8BC,SAAgCC,qBAC/F,MAAMC,YAA4BH,QAAQI,eAAeC,UAAWC,MAA6BL,SAASM,IAAID,OAExGE,gBAAoCC,gBADK,CAACR,SAAUD,QAASG,cAG7DO,kBAAmDC,uBAAuBX,QAAS,CAAEE,0CACrFU,4BAAuEC,iCAAiCH,kBAAkBI,OAAQd,QAAQe,uBAC1IC,YAA8CC,mBAAmBjB,SACjEkB,aAAgDC,oBAAoBlB,UAE1E,OAAOmB,SACLZ,gBACAE,kBACAE,4BACAI,YACAE,aACAG,yBAAsEpB,UAEtE,CACEqB,yDAGN"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{
|
|
1
|
+
import{World}from"@dimforge/rapier3d";import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{takeUntil}from"../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js";import{physicWorldToConfig}from"../Adapters/EntityToConfig.js";import{withSceneGetterService}from"../../Mixins/Services/WithSceneGetterService.js";import{PhysicsDebugRenderer}from"../Renderers/PhysicsDebugRenderer.js";import{STANDARD_GRAVITY}from"../Constants/PhysicsConstants.js";import{AbstractService}from"../../Abstract/Services/AbstractService.js";import{mergeAll}from"../../Utils/ObjectUtils.js";function PhysicsWorldService(scene,{physicsLoop:physicsLoop}){const abstractService=AbstractService();let world;physicsLoop.tick$.pipe(takeUntil(abstractService.destroy$)).subscribe(()=>world?.step());const debugRenderersList=[],destroySub$=abstractService.destroy$.subscribe(()=>{debugRenderersList.forEach(renderer=>renderer.destroy$.next()),destroySub$.unsubscribe(),world?.free(),world=null});return mergeAll(abstractService,withSceneGetterService(scene),{createWorld:function({gravity:gravity,integrationParameters:integrationParameters}){return world=new World(gravity??STANDARD_GRAVITY),Object.assign(world.integrationParameters,integrationParameters),world},getDebugRenderer:loop=>{if(isNotDefined(world))throw new Error("Cannot get debug renderer: world is not defined");const res=PhysicsDebugRenderer(scene,world,loop);return debugRenderersList.push(res),res},findWorld:()=>world,getWorld:()=>{if(isNotDefined(world))throw new Error("[PhysicsWorldService]: Physical world is not defined");return world},setGravity:function(vector){if(isNotDefined(world))throw new Error("Cannot set gravity: world is not defined");world.gravity=vector},serializeWorld:()=>{if(isNotDefined(world))throw new Error("Cannot serialize world: world is not defined");return physicWorldToConfig(world)}})}export{PhysicsWorldService};
|
|
2
2
|
//# sourceMappingURL=PhysicsWorldService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsWorldService.js","sources":["../../../src/Physics/Services/PhysicsWorldService.ts"],"sourcesContent":["import type { TAbstractService } from '@
|
|
1
|
+
{"version":3,"file":"PhysicsWorldService.js","sources":["../../../src/Physics/Services/PhysicsWorldService.ts"],"sourcesContent":["import { World } from '@dimforge/rapier3d';\nimport type { TAbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport { AbstractService } from '@hellpig/anarchy-engine/Abstract';\nimport { withSceneGetterService } from '@hellpig/anarchy-engine/Mixins';\nimport { physicWorldToConfig } from '@hellpig/anarchy-engine/Physics/Adapters';\nimport { STANDARD_GRAVITY } from '@hellpig/anarchy-engine/Physics/Constants';\nimport type { TPhysicsDebugRenderer, TPhysicsLoop, TPhysicsWorldConfig, TPhysicsWorldParams, TPhysicsWorldService } from '@hellpig/anarchy-engine/Physics/Models';\nimport { PhysicsDebugRenderer } from '@hellpig/anarchy-engine/Physics/Renderers';\nimport type { TSceneWrapper } from '@hellpig/anarchy-engine/Scene';\nimport type { TSpaceLoops } from '@hellpig/anarchy-engine/Space';\nimport { mergeAll } from '@hellpig/anarchy-engine/Utils';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport type { Subscription } from 'rxjs';\nimport { takeUntil } from 'rxjs';\nimport type { Vector3 } from 'three';\n\nexport function PhysicsWorldService(scene: TSceneWrapper, { physicsLoop }: TSpaceLoops): TPhysicsWorldService {\n const abstractService: TAbstractService = AbstractService();\n let world: World | undefined;\n\n function createWorld({ gravity, integrationParameters }: TPhysicsWorldParams): World {\n world = new World(gravity ?? STANDARD_GRAVITY);\n // eslint-disable-next-line functional/immutable-data\n Object.assign(world.integrationParameters, integrationParameters);\n return world;\n }\n\n // Auto-update world on every tick of the physics loop\n physicsLoop.tick$.pipe(takeUntil(abstractService.destroy$)).subscribe((): void => world?.step());\n\n const debugRenderersList: Array<TPhysicsDebugRenderer> = [];\n\n const getDebugRenderer = (loop: TPhysicsLoop): TPhysicsDebugRenderer => {\n if (isNotDefined(world)) throw new Error('Cannot get debug renderer: world is not defined');\n const res: TPhysicsDebugRenderer = PhysicsDebugRenderer(scene, world, loop);\n // eslint-disable-next-line functional/immutable-data\n debugRenderersList.push(res);\n return res;\n };\n\n function setGravity(vector: Vector3): void {\n if (isNotDefined(world)) throw new Error('Cannot set gravity: world is not defined');\n // eslint-disable-next-line functional/immutable-data\n world.gravity = vector;\n }\n\n const destroySub$: Subscription = abstractService.destroy$.subscribe((): void => {\n debugRenderersList.forEach((renderer: TPhysicsDebugRenderer): void => renderer.destroy$.next());\n\n destroySub$.unsubscribe();\n\n world?.free();\n world = null as any;\n });\n\n return mergeAll(abstractService, withSceneGetterService(scene), {\n createWorld,\n getDebugRenderer,\n findWorld: (): World | undefined => world,\n getWorld: (): World | never => {\n if (isNotDefined(world)) throw new Error('[PhysicsWorldService]: Physical world is not defined');\n return world;\n },\n setGravity,\n serializeWorld: (): TPhysicsWorldConfig | never => {\n if (isNotDefined(world)) throw new Error('Cannot serialize world: world is not defined');\n return physicWorldToConfig(world);\n }\n });\n}\n"],"names":["PhysicsWorldService","scene","physicsLoop","abstractService","AbstractService","world","tick$","pipe","takeUntil","destroy$","subscribe","step","debugRenderersList","destroySub$","forEach","renderer","next","unsubscribe","free","mergeAll","withSceneGetterService","createWorld","gravity","integrationParameters","World","STANDARD_GRAVITY","Object","assign","getDebugRenderer","loop","isNotDefined","Error","res","PhysicsDebugRenderer","push","findWorld","getWorld","setGravity","vector","serializeWorld","physicWorldToConfig"],"mappings":"imBAgBO,SAASA,oBAAoBC,OAAsBC,YAAEA,cAC1D,MAAMC,gBAAoCC,kBAC1C,IAAIC,MAUJH,YAAYI,MAAMC,KAAKC,UAAUL,gBAAgBM,WAAWC,UAAU,IAAYL,OAAOM,QAEzF,MAAMC,mBAAmD,GAgBnDC,YAA4BV,gBAAgBM,SAASC,UAAU,KACnEE,mBAAmBE,QAASC,UAA0CA,SAASN,SAASO,QAExFH,YAAYI,cAEZZ,OAAOa,OACPb,MAAQ,OAGV,OAAOc,SAAShB,gBAAiBiB,uBAAuBnB,OAAQ,CAC9DoB,YApCF,UAAqBC,QAAEA,QAAAC,sBAASA,wBAI9B,OAHAlB,MAAQ,IAAImB,MAAMF,SAAWG,kBAE7BC,OAAOC,OAAOtB,MAAMkB,sBAAuBA,uBACpClB,KACT,EAgCEuB,iBAzBwBC,OACxB,GAAIC,aAAazB,OAAQ,MAAM,IAAI0B,MAAM,mDACzC,MAAMC,IAA6BC,qBAAqBhC,MAAOI,MAAOwB,MAGtE,OADAjB,mBAAmBsB,KAAKF,KACjBA,KAqBPG,UAAW,IAAyB9B,MACpC+B,SAAU,KACR,GAAIN,aAAazB,OAAQ,MAAM,IAAI0B,MAAM,wDACzC,OAAO1B,OAETgC,WAvBF,SAAoBC,QAClB,GAAIR,aAAazB,OAAQ,MAAM,IAAI0B,MAAM,4CAEzC1B,MAAMiB,QAAUgB,MAClB,EAoBEC,eAAgB,KACd,GAAIT,aAAazB,OAAQ,MAAM,IAAI0B,MAAM,gDACzC,OAAOS,oBAAoBnC,SAGjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParamsUtils.js","sources":["../../../src/Physics/Utils/ParamsUtils.ts"],"sourcesContent":["import type { TPhysicsBodyParams } from '@
|
|
1
|
+
{"version":3,"file":"ParamsUtils.js","sources":["../../../src/Physics/Utils/ParamsUtils.ts"],"sourcesContent":["import type { TPhysicsBodyParams } from '@hellpig/anarchy-engine/Physics/Models';\nimport type { TOptional } from '@hellpig/anarchy-shared/Utils';\nimport { isDefined } from '@hellpig/anarchy-shared/Utils';\n\nexport function isPhysicsBodyParamsComplete(params: TPhysicsBodyParams | TOptional<TPhysicsBodyParams>): params is TPhysicsBodyParams {\n return isDefined(params.type) && isDefined(params.collisionShape) && isDefined(params.shapeParams);\n}\n"],"names":["isPhysicsBodyParamsComplete","params","isDefined","type","collisionShape","shapeParams"],"mappings":"6EAIO,SAASA,4BAA4BC,QAC1C,OAAOC,UAAUD,OAAOE,OAASD,UAAUD,OAAOG,iBAAmBF,UAAUD,OAAOI,YACxF"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { RigidBody } from '@dimforge/rapier3d';
|
|
2
|
+
import { Vector } from '@dimforge/rapier3d/math';
|
|
1
3
|
import { TKinematicState, ForwardAxis } from '../../Kinematic';
|
|
2
4
|
import { TRadians } from '../../Math';
|
|
3
5
|
import { VelocityType } from '../Constants';
|
|
4
6
|
import { TPhysicsBody } from '../Models';
|
|
5
|
-
import { RigidBody } from '@dimforge/rapier3d';
|
|
6
|
-
import { Vector } from '@dimforge/rapier3d/math';
|
|
7
7
|
import { Vector3 } from 'three';
|
|
8
8
|
export declare function getPushCoordsFrom3dAzimuth(azimuth: TRadians, elevation: TRadians, force: number, forwardAxis: ForwardAxis): Vector3 | never;
|
|
9
9
|
export declare function movePhysicsDynamicObjectByVelocity(rigidBody: RigidBody, type: VelocityType, vector3: Vector3 | Vector, shouldWakeUp?: boolean): void | never;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{
|
|
1
|
+
import{Ball,Cuboid,Capsule,Cylinder}from"@dimforge/rapier3d";import{isNotDefined}from"../../packages/anarchy-shared/src/Utils/CheckUtils.js";import{Vector3,Quaternion,Euler}from"three";import{getDirectionFromAngularVelocity,getSpeedFromAngularVelocity,getDirectionFromLinearVelocity,getSpeedFromLinearVelocity}from"../../Math/Utils/AnglesUtils.js";import{VelocityType}from"../Constants/VelocityType.js";import{ForwardAxis}from"../../Kinematic/Constants/ForwardAxis.js";function getPushCoordsFrom3dAzimuth(azimuth,elevation,force,forwardAxis){const horizontalForce=force*Math.cos(elevation),y=force*Math.sin(elevation);let x,z;if(forwardAxis===ForwardAxis.X)x=horizontalForce*Math.sin(azimuth),z=horizontalForce*Math.cos(azimuth);else{if(forwardAxis!==ForwardAxis.Z)throw new Error(`Cannot get push coordinates from 3d azimuth: forward axis is invalid: ${forwardAxis}`);x=horizontalForce*Math.cos(azimuth),z=horizontalForce*Math.sin(azimuth)}return new Vector3(x,y,z)}function movePhysicsDynamicObjectByVelocity(rigidBody,type,vector3,shouldWakeUp=!0){if(!rigidBody.isDynamic())throw new Error("Cannot move physical object with velocity: rigid body is not dynamic");const{x:x,y:y,z:z}=vector3;switch(type){case VelocityType.Linear:return rigidBody.setLinvel({x:x,y:y,z:z},shouldWakeUp);case VelocityType.Angular:return rigidBody.setAngvel({x:x,y:y,z:z},shouldWakeUp);default:throw new Error(`Cannot move physical object with velocity: velocity type is invalid: ${type}`)}}function getColliderSize(collider){const shape=collider.shape;return shape instanceof Ball?shape.radius:shape instanceof Cuboid?Math.max(shape.halfExtents.x,shape.halfExtents.y,shape.halfExtents.z):shape instanceof Capsule||shape instanceof Cylinder?shape.radius+shape.halfHeight:(console.warn("Physics: Unknown collider type:",collider),1)}function getKinematicDataFromPhysics(body){const rigidBody=body.getRigidBody();if(isNotDefined(rigidBody))throw new Error("Cannot get movement info: rigid body is not defined");const linVel=rigidBody.linvel(),linearVelocity=new Vector3(linVel.x,linVel.y,linVel.z),angVel=rigidBody.angvel(),angularVelocity=(new Quaternion).setFromEuler(new Euler(angVel.x,angVel.y,angVel.z));return{linearSpeed:getSpeedFromLinearVelocity(linearVelocity),linearDirection:getDirectionFromLinearVelocity(linearVelocity),angularSpeed:getSpeedFromAngularVelocity(angularVelocity),angularDirection:getDirectionFromAngularVelocity(angularVelocity),radius:getColliderSize(rigidBody.collider(0)),forwardAxis:ForwardAxis.X,isInfiniteRotation:!1}}export{getKinematicDataFromPhysics,getPushCoordsFrom3dAzimuth,movePhysicsDynamicObjectByVelocity};
|
|
2
2
|
//# sourceMappingURL=PhysicsMovementUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhysicsMovementUtils.js","sources":["../../../src/Physics/Utils/PhysicsMovementUtils.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"PhysicsMovementUtils.js","sources":["../../../src/Physics/Utils/PhysicsMovementUtils.ts"],"sourcesContent":["import type { Collider, RigidBody, Shape } from '@dimforge/rapier3d';\nimport { Ball, Capsule, Cuboid, Cylinder } from '@dimforge/rapier3d';\nimport type { Vector } from '@dimforge/rapier3d/math';\nimport type { TKinematicState } from '@hellpig/anarchy-engine/Kinematic';\nimport { ForwardAxis } from '@hellpig/anarchy-engine/Kinematic';\nimport type { TMeters, TRadians } from '@hellpig/anarchy-engine/Math';\nimport { getDirectionFromAngularVelocity, getDirectionFromLinearVelocity, getSpeedFromAngularVelocity, getSpeedFromLinearVelocity } from '@hellpig/anarchy-engine/Math';\nimport { VelocityType } from '@hellpig/anarchy-engine/Physics/Constants';\nimport type { TPhysicsBody } from '@hellpig/anarchy-engine/Physics/Models';\nimport { isNotDefined } from '@hellpig/anarchy-shared/Utils';\nimport { Euler, Quaternion, Vector3 } from 'three';\n\nexport function getPushCoordsFrom3dAzimuth(azimuth: TRadians, elevation: TRadians, force: number, forwardAxis: ForwardAxis): Vector3 | never {\n const horizontalForce: number = force * Math.cos(elevation);\n const y: number = force * Math.sin(elevation);\n\n let x: number, z: number;\n\n if (forwardAxis === ForwardAxis.X) {\n x = horizontalForce * Math.sin(azimuth);\n z = horizontalForce * Math.cos(azimuth);\n } else if (forwardAxis === ForwardAxis.Z) {\n x = horizontalForce * Math.cos(azimuth);\n z = horizontalForce * Math.sin(azimuth);\n } else {\n throw new Error(`Cannot get push coordinates from 3d azimuth: forward axis is invalid: ${forwardAxis}`);\n }\n\n return new Vector3(x, y, z);\n}\n\nexport function movePhysicsDynamicObjectByVelocity(rigidBody: RigidBody, type: VelocityType, vector3: Vector3 | Vector, shouldWakeUp: boolean = true): void | never {\n if (!rigidBody.isDynamic()) throw new Error(`Cannot move physical object with velocity: rigid body is not dynamic`);\n\n const { x, y, z } = vector3;\n switch (type) {\n case VelocityType.Linear:\n return rigidBody.setLinvel({ x, y, z }, shouldWakeUp);\n case VelocityType.Angular:\n return rigidBody.setAngvel({ x, y, z }, shouldWakeUp);\n default:\n throw new Error(`Cannot move physical object with velocity: velocity type is invalid: ${type}`);\n }\n}\n\nfunction getColliderSize(collider: Collider): number {\n const shape: Shape = collider.shape;\n\n if (shape instanceof Ball) {\n return shape.radius;\n } else if (shape instanceof Cuboid) {\n return Math.max(shape.halfExtents.x, shape.halfExtents.y, shape.halfExtents.z);\n } else if (shape instanceof Capsule) {\n return shape.radius + shape.halfHeight;\n } else if (shape instanceof Cylinder) {\n return shape.radius + shape.halfHeight;\n } else {\n console.warn('Physics: Unknown collider type:', collider);\n return 1;\n }\n}\n\nexport function getKinematicDataFromPhysics(body: TPhysicsBody): TKinematicState {\n const rigidBody: RigidBody | undefined = body.getRigidBody();\n if (isNotDefined(rigidBody)) throw new Error('Cannot get movement info: rigid body is not defined');\n const linVel: Vector = rigidBody.linvel();\n const linearVelocity: Vector3 = new Vector3(linVel.x, linVel.y, linVel.z);\n\n const angVel: Vector = rigidBody.angvel();\n const angularVelocity: Quaternion = new Quaternion().setFromEuler(new Euler(angVel.x, angVel.y, angVel.z));\n\n return {\n linearSpeed: getSpeedFromLinearVelocity(linearVelocity),\n linearDirection: getDirectionFromLinearVelocity(linearVelocity),\n angularSpeed: getSpeedFromAngularVelocity(angularVelocity),\n angularDirection: getDirectionFromAngularVelocity(angularVelocity),\n radius: getColliderSize(rigidBody.collider(0)) as TMeters,\n forwardAxis: ForwardAxis.X,\n isInfiniteRotation: false\n };\n}\n"],"names":["getPushCoordsFrom3dAzimuth","azimuth","elevation","force","forwardAxis","horizontalForce","Math","cos","y","sin","x","z","ForwardAxis","X","Z","Error","Vector3","movePhysicsDynamicObjectByVelocity","rigidBody","type","vector3","shouldWakeUp","isDynamic","VelocityType","Linear","setLinvel","Angular","setAngvel","getColliderSize","collider","shape","Ball","radius","Cuboid","max","halfExtents","Capsule","Cylinder","halfHeight","console","warn","getKinematicDataFromPhysics","body","getRigidBody","isNotDefined","linVel","linvel","linearVelocity","angVel","angvel","angularVelocity","Quaternion","setFromEuler","Euler","linearSpeed","getSpeedFromLinearVelocity","linearDirection","getDirectionFromLinearVelocity","angularSpeed","getSpeedFromAngularVelocity","angularDirection","getDirectionFromAngularVelocity","isInfiniteRotation"],"mappings":"qdAYO,SAASA,2BAA2BC,QAAmBC,UAAqBC,MAAeC,aAChG,MAAMC,gBAA0BF,MAAQG,KAAKC,IAAIL,WAC3CM,EAAYL,MAAQG,KAAKG,IAAIP,WAEnC,IAAIQ,EAAWC,EAEf,GAAIP,cAAgBQ,YAAYC,EAC9BH,EAAIL,gBAAkBC,KAAKG,IAAIR,SAC/BU,EAAIN,gBAAkBC,KAAKC,IAAIN,aACjC,IAAWG,cAAgBQ,YAAYE,EAIrC,MAAM,IAAIC,MAAM,yEAAyEX,eAHzFM,EAAIL,gBAAkBC,KAAKC,IAAIN,SAC/BU,EAAIN,gBAAkBC,KAAKG,IAAIR,QAGjC,CAEA,OAAO,IAAIe,QAAQN,EAAGF,EAAGG,EAC3B,CAEO,SAASM,mCAAmCC,UAAsBC,KAAoBC,QAA2BC,cAAwB,GAC9I,IAAKH,UAAUI,YAAa,MAAM,IAAIP,MAAM,wEAE5C,MAAML,EAAEA,EAAAF,EAAGA,EAAAG,EAAGA,GAAMS,QACpB,OAAQD,MACN,KAAKI,aAAaC,OAChB,OAAON,UAAUO,UAAU,CAAEf,IAAGF,IAAGG,KAAKU,cAC1C,KAAKE,aAAaG,QAChB,OAAOR,UAAUS,UAAU,CAAEjB,IAAGF,IAAGG,KAAKU,cAC1C,QACE,MAAM,IAAIN,MAAM,wEAAwEI,QAE9F,CAEA,SAASS,gBAAgBC,UACvB,MAAMC,MAAeD,SAASC,MAE9B,OAAIA,iBAAiBC,KACZD,MAAME,OACJF,iBAAiBG,OACnB3B,KAAK4B,IAAIJ,MAAMK,YAAYzB,EAAGoB,MAAMK,YAAY3B,EAAGsB,MAAMK,YAAYxB,GACnEmB,iBAAiBM,SAEjBN,iBAAiBO,SADnBP,MAAME,OAASF,MAAMQ,YAI5BC,QAAQC,KAAK,kCAAmCX,UACzC,EAEX,CAEO,SAASY,4BAA4BC,MAC1C,MAAMxB,UAAmCwB,KAAKC,eAC9C,GAAIC,aAAa1B,WAAY,MAAM,IAAIH,MAAM,uDAC7C,MAAM8B,OAAiB3B,UAAU4B,SAC3BC,eAA0B,IAAI/B,QAAQ6B,OAAOnC,EAAGmC,OAAOrC,EAAGqC,OAAOlC,GAEjEqC,OAAiB9B,UAAU+B,SAC3BC,iBAA8B,IAAIC,YAAaC,aAAa,IAAIC,MAAML,OAAOtC,EAAGsC,OAAOxC,EAAGwC,OAAOrC,IAEvG,MAAO,CACL2C,YAAaC,2BAA2BR,gBACxCS,gBAAiBC,+BAA+BV,gBAChDW,aAAcC,4BAA4BT,iBAC1CU,iBAAkBC,gCAAgCX,iBAClDlB,OAAQJ,gBAAgBV,UAAUW,SAAS,IAC3CzB,YAAaQ,YAAYC,EACzBiD,oBAAoB,EAExB"}
|